{"version":3,"sources":["../node_modules/boolbase/index.js","../src/render.ts","../src/utils.ts","../node_modules/cheerio/lib/esm/options.ts","../node_modules/cheerio/lib/esm/static.ts","../node_modules/domutils/lib/esm/index.ts","../node_modules/domelementtype/lib/esm/index.js","../node_modules/domhandler/lib/esm/node.js","../node_modules/domhandler/lib/esm/index.js","../node_modules/entities/lib/esm/generated/generated/decode-data-html.ts","../node_modules/entities/lib/esm/generated/generated/decode-data-xml.ts","../node_modules/entities/lib/esm/decode_codepoint.ts","../node_modules/entities/lib/esm/decode.ts","../node_modules/entities/lib/esm/generated/generated/encode-html.ts","../node_modules/entities/lib/esm/escape.ts","../node_modules/entities/lib/esm/index.ts","../node_modules/dom-serializer/lib/esm/foreignNames.js","../node_modules/dom-serializer/lib/esm/index.js","../node_modules/domutils/lib/esm/stringify.ts","../node_modules/domutils/lib/esm/traversal.ts","../node_modules/domutils/lib/esm/manipulation.ts","../node_modules/domutils/lib/esm/querying.ts","../node_modules/domutils/lib/esm/legacy.ts","../node_modules/domutils/lib/esm/helpers.ts","../node_modules/domutils/lib/esm/feeds.ts","../node_modules/cheerio/lib/esm/api/api/attributes.ts","../node_modules/cheerio/lib/esm/utils.ts","../node_modules/cheerio/lib/esm/api/api/traversing.ts","../node_modules/css-what/lib/es/types.js","../node_modules/css-what/lib/es/parse.js","../node_modules/css-select/lib/esm/index.ts","../node_modules/css-select/lib/esm/compile.ts","../node_modules/css-select/lib/esm/sort.ts","../node_modules/css-select/lib/esm/attributes.ts","../node_modules/nth-check/lib/esm/parse.ts","../node_modules/nth-check/lib/esm/compile.ts","../node_modules/nth-check/lib/esm/index.ts","../node_modules/css-select/lib/esm/pseudo-selectors/pseudo-selectors/filters.ts","../node_modules/css-select/lib/esm/pseudo-selectors/pseudo-selectors/pseudos.ts","../node_modules/css-select/lib/esm/pseudo-selectors/pseudo-selectors/aliases.ts","../node_modules/css-select/lib/esm/pseudo-selectors/pseudo-selectors/subselects.ts","../node_modules/css-select/lib/esm/pseudo-selectors/pseudo-selectors/index.ts","../node_modules/css-select/lib/esm/general.ts","../node_modules/cheerio-select/lib/esm/index.ts","../node_modules/cheerio-select/lib/esm/positionals.ts","../node_modules/cheerio-select/lib/esm/helpers.ts","../node_modules/cheerio/lib/esm/api/api/manipulation.ts","../node_modules/cheerio/lib/esm/parse.ts","../node_modules/cheerio/lib/esm/api/api/css.ts","../node_modules/cheerio/lib/esm/api/api/forms.ts","../node_modules/cheerio/lib/esm/cheerio.ts","../node_modules/cheerio/lib/esm/load.ts","../node_modules/parse5/dist/common/unicode.js","../node_modules/parse5/dist/common/error-codes.js","../node_modules/parse5/dist/tokenizer/preprocessor.js","../node_modules/parse5/dist/common/token.js","../node_modules/parse5/dist/common/html.js","../node_modules/parse5/dist/tokenizer/index.js","../node_modules/parse5/dist/parser/open-element-stack.js","../node_modules/parse5/dist/parser/formatting-element-list.js","../node_modules/parse5/dist/tree-adapters/default.js","../node_modules/parse5/dist/common/doctype.js","../node_modules/parse5/dist/common/foreign-content.js","../node_modules/parse5/dist/parser/index.js","../node_modules/parse5/dist/serializer/index.js","../node_modules/parse5/dist/index.js","../node_modules/parse5-htmlparser2-tree-adapter/dist/index.js","../node_modules/cheerio/lib/esm/parsers/parsers/parse5-adapter.ts","../node_modules/htmlparser2/lib/esm/Tokenizer.ts","../node_modules/htmlparser2/lib/esm/Parser.ts","../node_modules/htmlparser2/lib/esm/index.ts","../node_modules/cheerio/lib/esm/index.ts","../src/source.ts","../src/preview.ts"],"names":["require_boolbase","__commonJSMin","exports","module","computed","wrappedTemplate","template","slotName","templateWithDefault","wrap","contents","SLOTS_CATEGORY_NAME","renderWithSlots","makeComponentTemplate","component","slots","args","key","viewMode","componentId","parameters","componentName","acc","currentSlotName","params","components","render_default","defaultOpts","options_default","xmlModeDefault","flatten","options","static_exports","__export","contains","html","merge","parseHTML","root","text","xml","esm_exports","DocumentPosition","append","appendChild","compareDocumentPosition","existsOne","filter","find","findAll","findOne","findOneChild","getAttributeValue","getChildren","getElementById","getElements","getElementsByTagName","getElementsByTagType","getFeed","getInnerHTML","getName","getOuterHTML","getParent","getSiblings","getText","hasAttrib","hasChildren","innerText","isCDATA","isComment","isDocument","isTag","isText","nextElementSibling","prepend","prependChild","prevElementSibling","removeElement","removeSubsets","replaceElement","testElement","textContent","uniqueSort","ElementType","elem","Root","Text","Directive","Comment","Script","Style","Tag","CDATA","Doctype","Node","parent","prev","next","recursive","cloneNode","DataNode","data","ProcessingInstruction","name","NodeWithChildren","children","_a","Document","Element","attribs","type","_b","node","isDirective","result","cloneChildren","clone","child","instruction","childs","i","DomHandler","callback","elementCB","parser","error","element","lastNode","previousSibling","decode_data_html_default","c","decode_data_xml_default","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","code","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","str","offset","start","end","base","digitCount","startIdx","char","lastCp","expectedLength","current","valueLength","determineBranch","consumed","getDecoder","ret","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","htmlDecoder","xmlDecoder","restoreDiff","arr","encode_html_default","xmlReplacer","xmlCodeMap","getCodePoint","index","encodeXML","lastIdx","match","getEscaper","regex","map","escapeUTF8","escapeAttribute","escapeText","EntityLevel","EncodingMode","elementNames","val","attributeNames","unencodedElements","replaceQuotes","formatAttributes","attributes","opts","encode","singleTag","render","nodes","renderNode","esm_default","renderDirective","renderComment","renderCdata","renderTag","renderText","foreignModeIntegrationPoints","foreignElements","tag","siblings","childsIndex","replacement","sibling","currNext","test","recurse","limit","nodeStack","indexStack","checked","Checks","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","id","tagName","idx","ancestor","nodeA","nodeB","aParents","bParents","maxIdx","sharedParent","aSibling","bSibling","relative","doc","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","item","entry","getMediaElements","addConditionally","href","description","fetch","pubDate","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","media","obj","prop","that","dom","isOptions","toRender","elements","elems","context","keepScripts","parsed","container","contained","arr1","arr2","isArrayLike","newLength","attributes_exports","addClass","attr","hasClass","removeAttr","removeClass","toggleClass","isCheerio","maybeCheerio","camelCase","_","x","cssCase","domEach","array","fn","cloneDom","el","CharacterCodes","isHtml","tagStart","tagChar","hasOwn","rspace","dataAttrPrefix","primitives","rboolean","rbrace","getAttr","xmlMode","setAttr","removeAttribute","objName","objValue","getProp","setProp","property","keys","p","setData","readData","domNames","jsNames","attrName","domName","jsName","dataEl","querying","option","values","splitNames","names","attrNames","className","clazz","classNames","numElements","setClass","j","appendClass","classes","numClasses","removeAll","elClasses","changed","stateVal","state","elementClasses","traversing_exports","add","addBack","closest","each","eq","filterArray","first","get","has","is","last","nextAll","nextUntil","not","parents","parentsUntil","prevAll","prevUntil","slice","toArray","SelectorType","AttributeAction","reName","reEscape","actionTypes","unpackPseudos","isTraversal","selector","stripQuotesFromPseudos","funescape","escaped","escapedWhitespace","high","unescapeCSS","isQuote","isWhitespace","parse","subselects","endIndex","parseSelector","selectorIndex","tokens","stripWhitespace","readValueWithParenthesis","counter","isEscaped","pos","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","finalizeSubselector","loop","firstChar","namespace","possibleAction","ignoreCase","quote","sectionEnd","valueStart","forceIgnore","attributeSelector","quot","import_boolbase","procedure","token","sortByProcedure","procs","getProcedure","procNew","proc","d","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","attributeRules","adapter","boolbase","whitespace","ZERO","NINE","formula","sign","readSign","number","readNumber","skipWhitespace","compile","absA","bMod","nthCheck","getChildFunc","filters","itext","rule","equals","func","currentSibling","_rule","dynamicStatePseudo","pseudos","firstChild","elemName","verifyPseudoArgs","subselect","argIndex","aliases","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","compileToken","_context","s","compiled","hasElement","shouldTestNextSiblings","nextElements","compilePseudoSelector","userPseudo","stringPseudo","alias","pseudo","getElementParent","compileGeneralSelector","isFalseCache","previous","lastElement","compileUnsafe","includesScopePseudo","t","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","absolutize","hasContext","e","isArrayContext","finalContext","query","rules","second","compileRules","reduceRules","defaultEquals","defaultOptions","convertOptionFormats","_d","_c","wrapCompile","_compileUnsafe","_compileToken","getSelectorFunc","searchFunc","filteredElements","prepareContext","appendNextSiblings","elemsLength","nextSiblings","selectAll","selectOne","filterNames","isFilter","getLimit","partLimit","num","getDocumentRoot","groupSelectors","selectors","filteredSelectors","plainSelectors","UNIVERSAL_SELECTOR","SCOPE_PSEUDO","some","plain","filtered","sel","filterBySelector","filterByPosition","filterParsed","found","filterElements","filteredSelector","findFilterElements","select","results","findElements","queryForSelector","totalLimit","filterIndex","sub","remainingSelector","remainingHasTraversal","els","reSiblingSelector","selectorOrHaystack","haystack","_getMatcher","matchMap","postFns","matched","_matcher","_singleMatcher","_matchUntil","nextElem","matches","innerMatcher","filterSelector","getFilterFn","_removeDuplicates","set","selectOpts","selectFn","newElems","filterFn","selectorOrNeedle","$haystack","needle","other","selection","manipulation_exports","_makeDomArray","after","appendTo","before","empty","insertAfter","insertBefore","prependTo","remove","replaceWith","toString","unwrap","wrapAll","wrapInner","getParse","content","update","newChilds","_insert","concatenator","domSrc","uniqueSplice","spliceIdx","spliceCount","spliceArgs","oldParent","prevIdx","target","_wrap","insert","wrapper","lastParent","wrapperDom","elInsertLocation","clones","clonedSelf","targetArr","cont","textNode","css_exports","css","setCss","getCss","styles","stringify","k","newStyles","n","trimmed","forms_exports","serialize","serializeArray","submittableSelector","r20","rCRLF","$elem","Cheerio","getLoad","load","internalOpts","initialRoot","LoadedCheerio","cheerio","initialize","r","rootInstance","isNode","instance","search","searchContext","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","CODE_POINTS","SEQUENCES","isSurrogate","cp","isSurrogatePair","getSurrogatePairCodePoint","cp1","cp2","isControlCodePoint","isUndefinedCodePoint","ERR","DEFAULT_BUFFER_WATERLINE","Preprocessor","handler","line","col","nextCp","chunk","isLastChunk","pattern","caseSensitive","count","TokenType","getTokenAttr","html_exports","ATTRS","DOCUMENT_MODE","NS","SPECIAL_ELEMENTS","TAG_ID","TAG_NAMES","getTagID","hasUnescapedText","isNumberedHeader","TAG_NAME_TO_ID","$","tn","UNESCAPED_TEXT","scriptingEnabled","C1_CONTROLS_REFERENCE_REPLACEMENTS","State","TokenizerMode","isAsciiDigit","isAsciiUpper","isAsciiLower","isAsciiLetter","isAsciiUpperHexDigit","isAsciiLowerHexDigit","isAsciiHexDigit","toAsciiLower","isScriptDataDoubleEscapeSequenceEnd","Tokenizer","writeCallback","initialName","chars","attrNameFirstCh","attrLocations","ct","nextLocation","location","ch","excess","withoutSemicolon","masked","_cp","matchResult","IMPLICIT_END_TAG_REQUIRED","IMPLICIT_END_TAG_REQUIRED_THOROUGHLY","SCOPING_ELEMENT_NS","NAMED_HEADERS","TABLE_ROW_CONTEXT","TABLE_BODY_CONTEXT","TABLE_CONTEXT","TABLE_CELLS","OpenElementStack","document","treeAdapter","tagID","popped","oldElement","newElement","referenceElement","newElementID","insertionIdx","targetIdx","tagNames","targetNS","elementIdx","ns","exclusionId","EntryType","MARKER","FormattingElementList","neAttrs","candidates","neAttrsLength","neTagName","neNamespaceURI","elementAttrs","neAttrsMap","neAttr","validCandidates","candidate","cAttr","bookmarkIdx","entryIndex","markerIdx","createTextNode","defaultTreeAdapter","namespaceURI","attrs","parentNode","newNode","referenceNode","templateElement","contentElement","publicId","systemId","doctypeNode","mode","prevNode","recipient","recipientAttrsMap","commentNode","endLocation","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","hasPrefix","prefixes","prefix","isConforming","getDocumentMode","MIME_TYPES","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","EXITS_FOREIGN_CONTENT","causesExit","startTagToken","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","adjustTokenSVGTagName","adjustedTagName","isMathMLTextIntegrationPoint","isHtmlIntegrationPoint","isIntegrationPoint","foreignNS","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","InsertionMode","BASE_LOC","TABLE_STRUCTURE_TAGS","defaultParserOptions","Parser","fragmentContext","scriptHandler","documentMock","rootElement","fragment","beforeToken","loc","err","tid","isTop","currentTagId","isHTML","currentToken","nextTokenizerState","docTypeNode","tmpl","beforeElement","textNodeIdx","endLine","endCol","endOffset","donor","closingToken","ctLoc","endLoc","listLength","unopenIdx","selectIdx","openElement","characterInForeignContent","tokenInInitialMode","tokenBeforeHtml","tokenBeforeHead","tokenInHead","tokenInHeadNoScript","tokenAfterHead","characterInBody","characterInTable","characterInTableText","tokenInColumnGroup","tokenAfterBody","tokenAfterAfterBody","nullCharacterInForeignContent","appendComment","tokenInTableText","appendCommentToRootHtmlElement","appendCommentToDocument","doctypeInInitialMode","startTagInForeignContent","startTagBeforeHtml","startTagBeforeHead","startTagInHead","startTagInHeadNoScript","startTagAfterHead","startTagInBody","startTagInTable","startTagInCaption","startTagInColumnGroup","startTagInTableBody","startTagInRow","startTagInCell","startTagInSelect","startTagInSelectInTable","startTagInTemplate","startTagAfterBody","startTagInFrameset","startTagAfterFrameset","startTagAfterAfterBody","startTagAfterAfterFrameset","endTagInForeignContent","endTagBeforeHtml","endTagBeforeHead","endTagInHead","endTagInHeadNoScript","endTagAfterHead","endTagInBody","endTagInText","endTagInTable","endTagInCaption","endTagInColumnGroup","endTagInTableBody","endTagInRow","endTagInCell","endTagInSelect","endTagInSelectInTable","endTagInTemplate","endTagAfterBody","endTagInFrameset","endTagAfterFrameset","eofInBody","eofInText","eofInTemplate","stopParsing","whitespaceCharacterInBody","whitespaceCharacterInTableText","aaObtainFormattingElementEntry","formattingElementEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","aaInnerLoop","formattingElement","nextElement","elementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","callAdoptionAgency","htmlElement","htmlLocation","bodyElement","bodyLocation","templateEndTagInHead","errCode","modeInBody","htmlStartTagInBody","bodyStartTagInBody","framesetStartTagInBody","addressStartTagInBody","numberedHeaderStartTagInBody","preStartTagInBody","formStartTagInBody","inTemplate","listItemStartTagInBody","elementId","plaintextStartTagInBody","buttonStartTagInBody","aStartTagInBody","activeElementEntry","bStartTagInBody","nobrStartTagInBody","appletStartTagInBody","tableStartTagInBody","areaStartTagInBody","isHiddenInput","inputType","inputStartTagInBody","paramStartTagInBody","hrStartTagInBody","imageStartTagInBody","textareaStartTagInBody","xmpStartTagInBody","iframeStartTagInBody","noembedStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","rbStartTagInBody","rtStartTagInBody","mathStartTagInBody","svgStartTagInBody","genericStartTagInBody","bodyEndTagInBody","htmlEndTagInBody","addressEndTagInBody","formEndTagInBody","formElement","pEndTagInBody","liEndTagInBody","ddEndTagInBody","numberedHeaderEndTagInBody","appletEndTagInBody","brEndTagInBody","tokenInTable","captionStartTagInTable","colgroupStartTagInTable","colStartTagInTable","tbodyStartTagInTable","tdStartTagInTable","tableStartTagInTable","inputStartTagInTable","formStartTagInTable","savedFosterParentingState","TABLE_VOID_ELEMENTS","popUntilHtmlOrIntegrationPoint","currentNs","VOID_ELEMENTS","isVoidElement","serializeOuter","serializeNode","serializeChildNodes","childNodes","currentNode","serializeElement","serializeTextNode","serializeCommentNode","serializeDocumentTypeNode","serializeAttributes","parentTn","parseFragment","enquoteDoctypeId","serializeDoctypeContent","attribsNamespace","attribsPrefix","lastChild","parseWithParse5","renderOpts","renderWithParse5","isEndOfTagSection","isASCIIAlpha","isHexDigit","QuoteType","Sequences","decodeEntities","cbs","isEnd","endOfText","actualIndex","sequence","lower","entityStart","strict","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","_e","impliesClose","isImplied","_f","isOpenImplied","_h","_g","_k","_j","parseDocument","makeDefaultSlots","slotNames","source_default","argTypes","componentEl","templates","slotArgs","getSlotArgs","slotTemplates","templateWithArgs","renderArgs","handlebarsRegex","propRegex","slotRegex","arg","codeWithoutSlots","defaultRegex","defaultMatch","withSlots","story","cmp","props","convertSlotArgTypes","slotArgTypes","slot","slotArgType","convertSlotArgs","preview","preview_default"],"mappings":"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U,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAA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,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE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,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EChB39tB,IAAMG,GAAc,uBAErBC,GAAa,IAAI,IAAI,CACvB,CAAC,GAAI,QAAQ,EACb,CAAC,GAAI,OAAO,EACZ,CAAC,GAAI,QAAQ,EACb,CAAC,GAAI,MAAM,EACX,CAAC,GAAI,MAAM,EACd,EAGYC,GAET,OAAO,UAAU,aAAe,KAC1B,CAAClC,EAAamC,IAA0BnC,EAAI,YAAYmC,CAAK,EAE7D,CAACzD,EAAWyD,KACPzD,EAAE,WAAWyD,CAAK,EAAI,SAAY,OAC5BzD,EAAE,WAAWyD,CAAK,EAAI,OAAU,KACjCzD,EAAE,WAAWyD,EAAQ,CAAC,EACtB,MACA,MACAzD,EAAE,WAAWyD,CAAK,EAShC,SAAUC,GAAUpC,EAAW,CACjC,IAAIe,EAAM,GACNsB,EAAU,EACVC,EAEJ,MAAQA,EAAQN,GAAY,KAAKhC,CAAG,KAAO,MAAM,CAC7C,IAAMhC,EAAIsE,EAAM,MACV/B,EAAOP,EAAI,WAAWhC,CAAC,EACvBvB,EAAOwF,GAAW,IAAI1B,CAAI,EAE5B9D,IAAS,QACTsE,GAAOf,EAAI,UAAUqC,EAASrE,CAAC,EAAIvB,EACnC4F,EAAUrE,EAAI,IAEd+C,GAAO,GAAGf,EAAI,UAAUqC,EAASrE,CAAC,CAAC,MAAMkE,GACrClC,EACAhC,CAAC,EACH,SAAS,EAAE,CAAC,IAEdqE,EAAUL,GAAY,WAAa,GAC9BzB,EAAO,SAAY,QAKhC,OAAOQ,EAAMf,EAAI,OAAOqC,CAAO,CACnC,CAuBA,SAASE,GACLC,EACAC,EAAwB,CAExB,OAAO,SAAgB5F,EAAY,CAC/B,IAAIyF,EACAD,EAAU,EACV3E,EAAS,GAEb,KAAQ4E,EAAQE,EAAM,KAAK3F,CAAI,GACvBwF,IAAYC,EAAM,QAClB5E,GAAUb,EAAK,UAAUwF,EAASC,EAAM,KAAK,GAIjD5E,GAAU+E,EAAI,IAAIH,EAAM,CAAC,EAAE,WAAW,CAAC,CAAC,EAGxCD,EAAUC,EAAM,MAAQ,EAG5B,OAAO5E,EAASb,EAAK,UAAUwF,CAAO,CAC1C,CACJ,CASO,IAAMK,GAAaH,GAAW,WAAYN,EAAU,EAQ9CU,GAAkBJ,GAC3B,cACA,IAAI,IAAI,CACJ,CAAC,GAAI,QAAQ,EACb,CAAC,GAAI,OAAO,EACZ,CAAC,IAAK,QAAQ,EACjB,CAAC,EASOK,GAAaL,GACtB,eACA,IAAI,IAAI,CACJ,CAAC,GAAI,OAAO,EACZ,CAAC,GAAI,MAAM,EACX,CAAC,GAAI,MAAM,EACX,CAAC,IAAK,QAAQ,EACjB,CAAC,ECpIN,IAAYM,IAAZ,SAAYA,EAAW,CAEnBA,EAAAA,EAAA,IAAA,CAAA,EAAA,MAEAA,EAAAA,EAAA,KAAA,CAAA,EAAA,MACJ,GALYA,KAAAA,GAAW,CAAA,EAAA,EAOvB,IAAYC,IAAZ,SAAYA,EAAY,CAKpBA,EAAAA,EAAA,KAAA,CAAA,EAAA,OAMAA,EAAAA,EAAA,MAAA,CAAA,EAAA,QAKAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YAKAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YAKAA,EAAAA,EAAA,KAAA,CAAA,EAAA,MACJ,GA3BYA,KAAAA,GAAY,CAAA,EAAA,ECjBjB,IAAMC,GAAe,IAAI,IAAI,CAChC,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAKC,GAAQ,CAACA,EAAI,YAAY,EAAGA,CAAG,CAAC,CAAC,EAC3BC,GAAiB,IAAI,IAAI,CAClC,gBACA,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAKD,GAAQ,CAACA,EAAI,YAAY,EAAGA,CAAG,CAAC,CAAC,ECvFxC,IAAME,GAAoB,IAAI,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,UACJ,CAAC,EACD,SAASC,GAAc7B,EAAO,CAC1B,OAAOA,EAAM,QAAQ,KAAM,QAAQ,CACvC,CAIA,SAAS8B,GAAiBC,EAAYC,EAAM,CACxC,IAAIpG,EACJ,GAAI,CAACmG,EACD,OACJ,IAAME,IAAWrG,EAAKoG,EAAK,kBAAoB,MAAQpG,IAAO,OAASA,EAAKoG,EAAK,kBAAoB,GAC/FH,GACAG,EAAK,SAAWA,EAAK,iBAAmB,OACpClB,GACAO,GACV,OAAO,OAAO,KAAKU,CAAU,EACxB,IAAK5L,GAAQ,CACd,IAAIyF,EAAIK,EACR,IAAM+D,GAASpE,EAAKmG,EAAW5L,CAAG,KAAO,MAAQyF,IAAO,OAASA,EAAK,GAKtE,OAJIoG,EAAK,UAAY,YAEjB7L,GAAO8F,EAAK0F,GAAe,IAAIxL,CAAG,KAAO,MAAQ8F,IAAO,OAASA,EAAK9F,GAEtE,CAAC6L,EAAK,YAAc,CAACA,EAAK,SAAWhC,IAAU,GACxC7J,EAEJ,GAAGA,CAAG,KAAK8L,EAAOjC,CAAK,CAAC,GACnC,CAAC,EACI,KAAK,GAAG,CACjB,CAIA,IAAMkC,GAAY,IAAI,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,KACJ,CAAC,EASM,SAASC,GAAOjG,EAAMjF,EAAU,CAAC,EAAG,CACvC,IAAMmL,EAAQ,WAAYlG,EAAOA,EAAO,CAACA,CAAI,EACzCuB,EAAS,GACb,QAASf,EAAI,EAAGA,EAAI0F,EAAM,OAAQ1F,IAC9Be,GAAU4E,GAAWD,EAAM1F,CAAC,EAAGzF,CAAO,EAE1C,OAAOwG,CACX,CACA,IAAO6E,GAAQH,GACf,SAASE,GAAWnG,EAAMjF,EAAS,CAC/B,OAAQiF,EAAK,KAAM,CACf,KAAiB3B,GACb,OAAO4H,GAAOjG,EAAK,SAAUjF,CAAO,EAExC,KAAiB8D,GACjB,KAAiBN,GACb,OAAO8H,GAAgBrG,CAAI,EAC/B,KAAiBxB,GACb,OAAO8H,GAActG,CAAI,EAC7B,KAAiBpB,GACb,OAAO2H,GAAYvG,CAAI,EAC3B,KAAiBvB,GACjB,KAAiBC,GACjB,KAAiBC,GACb,OAAO6H,GAAUxG,EAAMjF,CAAO,EAClC,KAAiBuD,GACb,OAAOmI,GAAWzG,EAAMjF,CAAO,CACvC,CACJ,CACA,IAAM2L,GAA+B,IAAI,IAAI,CACzC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,OACJ,CAAC,EACKC,GAAkB,IAAI,IAAI,CAAC,MAAO,MAAM,CAAC,EAC/C,SAASH,GAAUpI,EAAM0H,EAAM,CAC3B,IAAIpG,EAEAoG,EAAK,UAAY,YAEjB1H,EAAK,MAAQsB,EAAK6F,GAAa,IAAInH,EAAK,IAAI,KAAO,MAAQsB,IAAO,OAASA,EAAKtB,EAAK,KAEjFA,EAAK,QACLsI,GAA6B,IAAItI,EAAK,OAAO,IAAI,IACjD0H,EAAO,CAAE,GAAGA,EAAM,QAAS,EAAM,IAGrC,CAACA,EAAK,SAAWa,GAAgB,IAAIvI,EAAK,IAAI,IAC9C0H,EAAO,CAAE,GAAGA,EAAM,QAAS,SAAU,GAEzC,IAAIc,EAAM,IAAIxI,EAAK,IAAI,GACjByB,EAAU+F,GAAiBxH,EAAK,QAAS0H,CAAI,EACnD,OAAIjG,IACA+G,GAAO,IAAI/G,CAAO,IAElBzB,EAAK,SAAS,SAAW,IACxB0H,EAAK,QAEEA,EAAK,kBAAoB,GAEzBA,EAAK,iBAAmBE,GAAU,IAAI5H,EAAK,IAAI,IAClD0H,EAAK,UACNc,GAAO,KACXA,GAAO,OAGPA,GAAO,IACHxI,EAAK,SAAS,OAAS,IACvBwI,GAAOX,GAAO7H,EAAK,SAAU0H,CAAI,IAEjCA,EAAK,SAAW,CAACE,GAAU,IAAI5H,EAAK,IAAI,KACxCwI,GAAO,KAAKxI,EAAK,IAAI,MAGtBwI,CACX,CACA,SAASP,GAAgBjI,EAAM,CAC3B,MAAO,IAAIA,EAAK,IAAI,GACxB,CACA,SAASqI,GAAWrI,EAAM0H,EAAM,CAC5B,IAAIpG,EACJ,IAAIL,EAAOjB,EAAK,MAAQ,GAExB,QAAMsB,EAAKoG,EAAK,kBAAoB,MAAQpG,IAAO,OAASA,EAAKoG,EAAK,kBAAoB,IACtF,EAAE,CAACA,EAAK,SACJ1H,EAAK,QACLsH,GAAkB,IAAItH,EAAK,OAAO,IAAI,KAC1CiB,EACIyG,EAAK,SAAWA,EAAK,iBAAmB,OAClClB,GAAUvF,CAAI,EACd+F,GAAW/F,CAAI,GAEtBA,CACX,CACA,SAASkH,GAAYnI,EAAM,CACvB,MAAO,YAAYA,EAAK,SAAS,CAAC,EAAE,IAAI,KAC5C,CACA,SAASkI,GAAclI,EAAM,CACzB,MAAO,OAAOA,EAAK,IAAI,KAC3B,CC3KM,SAAUvB,GACZmD,EACAjF,EAA8B,CAE9B,OAAOqL,GAAWpG,EAAMjF,CAAO,CACnC,CASM,SAAU4B,GACZqD,EACAjF,EAA8B,CAE9B,OAAOmC,EAAY8C,CAAI,EACjBA,EAAK,SAAS,IAAKA,GAASnD,GAAamD,EAAMjF,CAAO,CAAC,EAAE,KAAK,EAAE,EAChE,EACV,CAUM,SAAUiC,GAAQgD,EAAyB,CAC7C,OAAI,MAAM,QAAQA,CAAI,EAAUA,EAAK,IAAIhD,EAAO,EAAE,KAAK,EAAE,EACrDO,EAAMyC,CAAI,EAAUA,EAAK,OAAS,KAAO;EAAOhD,GAAQgD,EAAK,QAAQ,EACrE5C,GAAQ4C,CAAI,EAAUhD,GAAQgD,EAAK,QAAQ,EAC3CxC,EAAOwC,CAAI,EAAUA,EAAK,KACvB,EACX,CAUM,SAAU/B,GAAY+B,EAAyB,CACjD,OAAI,MAAM,QAAQA,CAAI,EAAUA,EAAK,IAAI/B,EAAW,EAAE,KAAK,EAAE,EACzDf,EAAY8C,CAAI,GAAK,CAAC3C,GAAU2C,CAAI,EAC7B/B,GAAY+B,EAAK,QAAQ,EAEhCxC,EAAOwC,CAAI,EAAUA,EAAK,KACvB,EACX,CAUM,SAAU7C,GAAU6C,EAAyB,CAC/C,OAAI,MAAM,QAAQA,CAAI,EAAUA,EAAK,IAAI7C,EAAS,EAAE,KAAK,EAAE,EACvDD,EAAY8C,CAAI,IAAMA,EAAK,OAAS7B,EAAY,KAAOf,GAAQ4C,CAAI,GAC5D7C,GAAU6C,EAAK,QAAQ,EAE9BxC,EAAOwC,CAAI,EAAUA,EAAK,KACvB,EACX,CCzEM,SAAU3D,GAAY+B,EAAa,CACrC,OAAOlB,EAAYkB,CAAI,EAAIA,EAAK,SAAW,CAAA,CAC/C,CAUM,SAAUtB,GAAUsB,EAAa,CACnC,OAAOA,EAAK,QAAU,IAC1B,CAaM,SAAUrB,GAAYqB,EAAa,CACrC,IAAMW,EAASjC,GAAUsB,CAAI,EAC7B,GAAIW,GAAU,KAAM,OAAO1C,GAAY0C,CAAM,EAE7C,IAAM8H,EAAW,CAACzI,CAAI,EAClB,CAAE,KAAAY,EAAM,KAAAC,CAAI,EAAKb,EACrB,KAAOY,GAAQ,MACX6H,EAAS,QAAQ7H,CAAI,EACpB,CAAE,KAAAA,CAAI,EAAKA,EAEhB,KAAOC,GAAQ,MACX4H,EAAS,KAAK5H,CAAI,EACjB,CAAE,KAAAA,CAAI,EAAKA,EAEhB,OAAO4H,CACX,CAUM,SAAUzK,GACZgC,EACAmB,EAAY,OAEZ,OAAOG,EAAAtB,EAAK,WAAO,MAAAsB,IAAA,OAAA,OAAAA,EAAGH,CAAI,CAC9B,CAUM,SAAUtC,GAAUmB,EAAemB,EAAY,CACjD,OACInB,EAAK,SAAW,MAChB,OAAO,UAAU,eAAe,KAAKA,EAAK,QAASmB,CAAI,GACvDnB,EAAK,QAAQmB,CAAI,GAAK,IAE9B,CASM,SAAU3C,GAAQwB,EAAa,CACjC,OAAOA,EAAK,IAChB,CAUM,SAAUX,GAAmBW,EAAa,CAC5C,GAAI,CAAE,KAAAa,CAAI,EAAKb,EACf,KAAOa,IAAS,MAAQ,CAAC1B,EAAM0B,CAAI,IAAI,CAAE,KAAAA,CAAI,EAAKA,GAClD,OAAOA,CACX,CAUM,SAAUrB,GAAmBQ,EAAa,CAC5C,GAAI,CAAE,KAAAY,CAAI,EAAKZ,EACf,KAAOY,IAAS,MAAQ,CAACzB,EAAMyB,CAAI,IAAI,CAAE,KAAAA,CAAI,EAAKA,GAClD,OAAOA,CACX,CCxHM,SAAUnB,GAAcO,EAAe,CAIzC,GAHIA,EAAK,OAAMA,EAAK,KAAK,KAAOA,EAAK,MACjCA,EAAK,OAAMA,EAAK,KAAK,KAAOA,EAAK,MAEjCA,EAAK,OAAQ,CACb,IAAMmC,EAASnC,EAAK,OAAO,SACrB0I,EAAcvG,EAAO,YAAYnC,CAAI,EACvC0I,GAAe,GACfvG,EAAO,OAAOuG,EAAa,CAAC,EAGpC1I,EAAK,KAAO,KACZA,EAAK,KAAO,KACZA,EAAK,OAAS,IAClB,CASM,SAAUL,GAAeK,EAAiB2I,EAAsB,CAClE,IAAM/H,EAAQ+H,EAAY,KAAO3I,EAAK,KAClCY,IACAA,EAAK,KAAO+H,GAGhB,IAAM9H,EAAQ8H,EAAY,KAAO3I,EAAK,KAClCa,IACAA,EAAK,KAAO8H,GAGhB,IAAMhI,EAAUgI,EAAY,OAAS3I,EAAK,OAC1C,GAAIW,EAAQ,CACR,IAAMwB,EAASxB,EAAO,SACtBwB,EAAOA,EAAO,YAAYnC,CAAI,CAAC,EAAI2I,EACnC3I,EAAK,OAAS,KAEtB,CASM,SAAUxC,GAAYmD,EAAoBsB,EAAgB,CAM5D,GALAxC,GAAcwC,CAAK,EAEnBA,EAAM,KAAO,KACbA,EAAM,OAAStB,EAEXA,EAAO,SAAS,KAAKsB,CAAK,EAAI,EAAG,CACjC,IAAM2G,EAAUjI,EAAO,SAASA,EAAO,SAAS,OAAS,CAAC,EAC1DiI,EAAQ,KAAO3G,EACfA,EAAM,KAAO2G,OAEb3G,EAAM,KAAO,IAErB,CASM,SAAU1E,GAAOyC,EAAiBa,EAAe,CACnDpB,GAAcoB,CAAI,EAElB,GAAM,CAAE,OAAAF,CAAM,EAAKX,EACb6I,EAAW7I,EAAK,KAOtB,GALAa,EAAK,KAAOgI,EACZhI,EAAK,KAAOb,EACZA,EAAK,KAAOa,EACZA,EAAK,OAASF,EAEVkI,GAEA,GADAA,EAAS,KAAOhI,EACZF,EAAQ,CACR,IAAMwB,EAASxB,EAAO,SACtBwB,EAAO,OAAOA,EAAO,YAAY0G,CAAQ,EAAG,EAAGhI,CAAI,QAEhDF,GACPA,EAAO,SAAS,KAAKE,CAAI,CAEjC,CASM,SAAUtB,GAAaoB,EAAoBsB,EAAgB,CAM7D,GALAxC,GAAcwC,CAAK,EAEnBA,EAAM,OAAStB,EACfsB,EAAM,KAAO,KAETtB,EAAO,SAAS,QAAQsB,CAAK,IAAM,EAAG,CACtC,IAAM2G,EAAUjI,EAAO,SAAS,CAAC,EACjCiI,EAAQ,KAAO3G,EACfA,EAAM,KAAO2G,OAEb3G,EAAM,KAAO,IAErB,CASM,SAAU3C,GAAQU,EAAiBY,EAAe,CACpDnB,GAAcmB,CAAI,EAElB,GAAM,CAAE,OAAAD,CAAM,EAAKX,EACnB,GAAIW,EAAQ,CACR,IAAMwB,EAASxB,EAAO,SACtBwB,EAAO,OAAOA,EAAO,QAAQnC,CAAI,EAAG,EAAGY,CAAI,EAG3CZ,EAAK,OACLA,EAAK,KAAK,KAAOY,GAGrBA,EAAK,OAASD,EACdC,EAAK,KAAOZ,EAAK,KACjBY,EAAK,KAAOZ,EACZA,EAAK,KAAOY,CAChB,CCvIM,SAAUjD,GACZmL,EACAlH,EACAmH,EAAU,GACVC,EAAQ,IAAQ,CAEhB,OAAOpL,GAAKkL,EAAM,MAAM,QAAQlH,CAAI,EAAIA,EAAO,CAACA,CAAI,EAAGmH,EAASC,CAAK,CACzE,CAYM,SAAUpL,GACZkL,EACAhB,EACAiB,EACAC,EAAa,CAEb,IAAMlH,EAAoB,CAAA,EAEpBmH,EAAY,CAACnB,CAAK,EAElBoB,EAAa,CAAC,CAAC,EAErB,OAAS,CAEL,GAAIA,EAAW,CAAC,GAAKD,EAAU,CAAC,EAAE,OAAQ,CAEtC,GAAIC,EAAW,SAAW,EACtB,OAAOpH,EAIXmH,EAAU,MAAK,EACfC,EAAW,MAAK,EAGhB,SAGJ,IAAMlJ,EAAOiJ,EAAU,CAAC,EAAEC,EAAW,CAAC,GAAG,EAEzC,GAAIJ,EAAK9I,CAAI,IACT8B,EAAO,KAAK9B,CAAI,EACZ,EAAEgJ,GAAS,GAAG,OAAOlH,EAGzBiH,GAAWjK,EAAYkB,CAAI,GAAKA,EAAK,SAAS,OAAS,IAKvDkJ,EAAW,QAAQ,CAAC,EACpBD,EAAU,QAAQjJ,EAAK,QAAQ,GAG3C,CAWM,SAAUjC,GACZ+K,EACAhB,EAAU,CAEV,OAAOA,EAAM,KAAKgB,CAAI,CAC1B,CAWM,SAAUhL,GACZgL,EACAhB,EACAiB,EAAU,GAAI,CAEd,IAAI/I,EAAO,KAEX,QAASoC,EAAI,EAAGA,EAAI0F,EAAM,QAAU,CAAC9H,EAAMoC,IAAK,CAC5C,IAAMR,EAAOkG,EAAM1F,CAAC,EACpB,GAAKjD,EAAMyC,CAAI,EAEJkH,EAAKlH,CAAI,EAChB5B,EAAO4B,EACAmH,GAAWnH,EAAK,SAAS,OAAS,IACzC5B,EAAOlC,GAAQgL,EAAMlH,EAAK,SAAU,EAAI,OAJxC,UAQR,OAAO5B,CACX,CAUM,SAAUtC,GACZoL,EACAhB,EAAgB,CAEhB,OAAOA,EAAM,KACRqB,GACGhK,EAAMgK,CAAO,IACZL,EAAKK,CAAO,GAAKzL,GAAUoL,EAAMK,EAAQ,QAAQ,EAAE,CAEhE,CAYM,SAAUtL,GACZiL,EACAhB,EAAgB,CAEhB,IAAMhG,EAAS,CAAA,EACTmH,EAAY,CAACnB,CAAK,EAClBoB,EAAa,CAAC,CAAC,EAErB,OAAS,CACL,GAAIA,EAAW,CAAC,GAAKD,EAAU,CAAC,EAAE,OAAQ,CACtC,GAAIA,EAAU,SAAW,EACrB,OAAOnH,EAIXmH,EAAU,MAAK,EACfC,EAAW,MAAK,EAGhB,SAGJ,IAAMlJ,EAAOiJ,EAAU,CAAC,EAAEC,EAAW,CAAC,GAAG,EAEpC/J,EAAMa,CAAI,IACX8I,EAAK9I,CAAI,GAAG8B,EAAO,KAAK9B,CAAI,EAE5BA,EAAK,SAAS,OAAS,IACvBkJ,EAAW,QAAQ,CAAC,EACpBD,EAAU,QAAQjJ,EAAK,QAAQ,IAG3C,CC9JA,IAAMoJ,GAGF,CACA,SAASjI,EAAI,CACT,OAAI,OAAOA,GAAS,WACRnB,GAAkBb,EAAMa,CAAI,GAAKmB,EAAKnB,EAAK,IAAI,EAChDmB,IAAS,IACThC,EAEHa,GAAkBb,EAAMa,CAAI,GAAKA,EAAK,OAASmB,CAC3D,EACA,SAASO,EAAI,CACT,OAAI,OAAOA,GAAS,WACR1B,GAAkB0B,EAAK1B,EAAK,IAAI,EAEpCA,GAAkBA,EAAK,OAAS0B,CAC5C,EACA,aAAaT,EAAI,CACb,OAAI,OAAOA,GAAS,WACRjB,GAAkBZ,EAAOY,CAAI,GAAKiB,EAAKjB,EAAK,IAAI,EAEpDA,GAAkBZ,EAAOY,CAAI,GAAKA,EAAK,OAASiB,CAC5D,GAYJ,SAASoI,GACLC,EACA5D,EAAwD,CAExD,OAAI,OAAOA,GAAU,WACT1F,GAAkBb,EAAMa,CAAI,GAAK0F,EAAM1F,EAAK,QAAQsJ,CAAM,CAAC,EAE/DtJ,GAAkBb,EAAMa,CAAI,GAAKA,EAAK,QAAQsJ,CAAM,IAAM5D,CACtE,CAWA,SAAS6D,GAAaC,EAAaC,EAAW,CAC1C,OAAQzJ,GAAkBwJ,EAAExJ,CAAI,GAAKyJ,EAAEzJ,CAAI,CAC/C,CAUA,SAAS0J,GAAY/M,EAAwB,CACzC,IAAMgN,EAAQ,OAAO,KAAKhN,CAAO,EAAE,IAAKd,GAAO,CAC3C,IAAM6J,EAAQ/I,EAAQd,CAAG,EACzB,OAAO,OAAO,UAAU,eAAe,KAAKuN,GAAQvN,CAAG,EACjDuN,GAAOvN,CAAG,EAAE6J,CAAK,EACjB2D,GAAexN,EAAK6J,CAAK,CACnC,CAAC,EAED,OAAOiE,EAAM,SAAW,EAAI,KAAOA,EAAM,OAAOJ,EAAY,CAChE,CAUM,SAAU3J,GAAYjD,EAA0BiF,EAAa,CAC/D,IAAMkH,EAAOY,GAAY/M,CAAO,EAChC,OAAOmM,EAAOA,EAAKlH,CAAI,EAAI,EAC/B,CAYM,SAAUzD,GACZxB,EACAmL,EACAiB,EACAC,EAAQ,IAAQ,CAEhB,IAAMF,EAAOY,GAAY/M,CAAO,EAChC,OAAOmM,EAAOnL,GAAOmL,EAAMhB,EAAOiB,EAASC,CAAK,EAAI,CAAA,CACxD,CAWM,SAAU9K,GACZ0L,EACA9B,EACAiB,EAAU,GAAI,CAEd,OAAK,MAAM,QAAQjB,CAAK,IAAGA,EAAQ,CAACA,CAAK,GAClChK,GAAQuL,GAAe,KAAMO,CAAE,EAAG9B,EAAOiB,CAAO,CAC3D,CAYM,SAAU3K,GACZyL,EACA/B,EACAiB,EAAU,GACVC,EAAQ,IAAQ,CAEhB,OAAOrL,GACHyL,GAAO,SAAYS,CAAO,EAC1B/B,EACAiB,EACAC,CAAK,CAEb,CAYM,SAAU3K,GACZqD,EACAoG,EACAiB,EAAU,GACVC,EAAQ,IAAQ,CAEhB,OAAOrL,GAAOyL,GAAO,SAAY1H,CAAc,EAAGoG,EAAOiB,EAASC,CAAK,CAC3E,CCzLM,SAAUtJ,GAAcoI,EAAgB,CAC1C,IAAIgC,EAAMhC,EAAM,OAMhB,KAAO,EAAEgC,GAAO,GAAG,CACf,IAAMlI,EAAOkG,EAAMgC,CAAG,EAOtB,GAAIA,EAAM,GAAKhC,EAAM,YAAYlG,EAAMkI,EAAM,CAAC,GAAK,EAAG,CAClDhC,EAAM,OAAOgC,EAAK,CAAC,EACnB,SAGJ,QAASC,EAAWnI,EAAK,OAAQmI,EAAUA,EAAWA,EAAS,OAC3D,GAAIjC,EAAM,SAASiC,CAAQ,EAAG,CAC1BjC,EAAM,OAAOgC,EAAK,CAAC,EACnB,OAKZ,OAAOhC,CACX,CAKA,IAAkBxK,GAAlB,SAAkBA,EAAgB,CAC9BA,EAAAA,EAAA,aAAA,CAAA,EAAA,eACAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YACAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YACAA,EAAAA,EAAA,SAAA,CAAA,EAAA,WACAA,EAAAA,EAAA,aAAA,EAAA,EAAA,cACJ,GANkBA,IAAAA,EAAgB,CAAA,EAAA,EAkC5B,SAAUG,GACZuM,EACAC,EAAc,CAEd,IAAMC,EAAyB,CAAA,EACzBC,EAAyB,CAAA,EAE/B,GAAIH,IAAUC,EACV,MAAO,GAGX,IAAInF,EAAUhG,EAAYkL,CAAK,EAAIA,EAAQA,EAAM,OACjD,KAAOlF,GACHoF,EAAS,QAAQpF,CAAO,EACxBA,EAAUA,EAAQ,OAGtB,IADAA,EAAUhG,EAAYmL,CAAK,EAAIA,EAAQA,EAAM,OACtCnF,GACHqF,EAAS,QAAQrF,CAAO,EACxBA,EAAUA,EAAQ,OAGtB,IAAMsF,EAAS,KAAK,IAAIF,EAAS,OAAQC,EAAS,MAAM,EACpDL,EAAM,EACV,KAAOA,EAAMM,GAAUF,EAASJ,CAAG,IAAMK,EAASL,CAAG,GACjDA,IAGJ,GAAIA,IAAQ,EACR,OAAOxM,EAAiB,aAG5B,IAAM+M,EAAeH,EAASJ,EAAM,CAAC,EAC/BrB,EAAsB4B,EAAa,SACnCC,EAAWJ,EAASJ,CAAG,EACvBS,EAAWJ,EAASL,CAAG,EAE7B,OAAIrB,EAAS,QAAQ6B,CAAQ,EAAI7B,EAAS,QAAQ8B,CAAQ,EAClDF,IAAiBJ,EACV3M,EAAiB,UAAYA,EAAiB,aAElDA,EAAiB,UAExB+M,IAAiBL,EACV1M,EAAiB,UAAYA,EAAiB,SAElDA,EAAiB,SAC5B,CAWM,SAAUwC,GAA8BgI,EAAU,CACpD,OAAAA,EAAQA,EAAM,OAAO,CAAClG,EAAMQ,EAAG8D,IAAQ,CAACA,EAAI,SAAStE,EAAMQ,EAAI,CAAC,CAAC,EAEjE0F,EAAM,KAAK,CAAC0B,EAAGC,IAAK,CAChB,IAAMe,EAAW/M,GAAwB+L,EAAGC,CAAC,EAC7C,OAAIe,EAAWlN,EAAiB,UACrB,GACAkN,EAAWlN,EAAiB,UAC5B,EAEJ,CACX,CAAC,EAEMwK,CACX,CCpEM,SAAUxJ,GAAQmM,EAAc,CAClC,IAAMC,EAAWC,GAAcC,GAAaH,CAAG,EAE/C,OAAQC,EAEFA,EAAS,OAAS,OAClBG,GAAYH,CAAQ,EACpBI,GAAWJ,CAAQ,EAHnB,IAIV,CAQA,SAASG,GAAYH,EAAiB,OAClC,IAAMvI,EAASuI,EAAS,SAElBK,EAAa,CACf,KAAM,OACN,MAAO3M,GAAqB,QAAS+D,CAAM,EAAE,IAAK6I,GAAQ,OACtD,GAAM,CAAE,SAAA3J,CAAQ,EAAK2J,EACfC,EAAkB,CAAE,MAAOC,GAAiB7J,CAAQ,CAAC,EAE3D8J,EAAiBF,EAAO,KAAM,KAAM5J,CAAQ,EAC5C8J,EAAiBF,EAAO,QAAS,QAAS5J,CAAQ,EAElD,IAAM+J,GAAO9J,EAAAqJ,GAAc,OAAQtJ,CAAQ,KAAC,MAAAC,IAAA,OAAA,OAAAA,EAAE,QAAQ,KAClD8J,IACAH,EAAM,KAAOG,GAGjB,IAAMC,EACFC,GAAM,UAAWjK,CAAQ,GAAKiK,GAAM,UAAWjK,CAAQ,EACvDgK,IACAJ,EAAM,YAAcI,GAGxB,IAAME,EAAUD,GAAM,UAAWjK,CAAQ,EACzC,OAAIkK,IACAN,EAAM,QAAU,IAAI,KAAKM,CAAO,GAG7BN,CACX,CAAC,GAGLE,EAAiBJ,EAAM,KAAM,KAAM5I,CAAM,EACzCgJ,EAAiBJ,EAAM,QAAS,QAAS5I,CAAM,EAC/C,IAAMiJ,GAAO9J,EAAAqJ,GAAc,OAAQxI,CAAM,KAAC,MAAAb,IAAA,OAAA,OAAAA,EAAE,QAAQ,KAChD8J,IACAL,EAAK,KAAOK,GAEhBD,EAAiBJ,EAAM,cAAe,WAAY5I,CAAM,EAExD,IAAMqJ,EAAUF,GAAM,UAAWnJ,CAAM,EACvC,OAAIqJ,IACAT,EAAK,QAAU,IAAI,KAAKS,CAAO,GAGnCL,EAAiBJ,EAAM,SAAU,QAAS5I,EAAQ,EAAI,EAE/C4I,CACX,CAQA,SAASD,GAAWJ,EAAiB,SACjC,IAAMvI,GAASR,GAAAL,EAAAqJ,GAAc,UAAWD,EAAS,QAAQ,KAAC,MAAApJ,IAAA,OAAA,OAAAA,EAAE,YAAQ,MAAAK,IAAA,OAAAA,EAAI,CAAA,EAElEoJ,EAAa,CACf,KAAML,EAAS,KAAK,OAAO,EAAG,CAAC,EAC/B,GAAI,GACJ,MAAOtM,GAAqB,OAAQsM,EAAS,QAAQ,EAAE,IAClDM,GAAiB,CACd,GAAM,CAAE,SAAA3J,CAAQ,EAAK2J,EACfC,EAAkB,CAAE,MAAOC,GAAiB7J,CAAQ,CAAC,EAC3D8J,EAAiBF,EAAO,KAAM,OAAQ5J,CAAQ,EAC9C8J,EAAiBF,EAAO,QAAS,QAAS5J,CAAQ,EAClD8J,EAAiBF,EAAO,OAAQ,OAAQ5J,CAAQ,EAChD8J,EAAiBF,EAAO,cAAe,cAAe5J,CAAQ,EAC9D,IAAMkK,EACFD,GAAM,UAAWjK,CAAQ,GAAKiK,GAAM,UAAWjK,CAAQ,EAC3D,OAAIkK,IAASN,EAAM,QAAU,IAAI,KAAKM,CAAO,GAEtCN,CACX,CAAC,GAITE,EAAiBJ,EAAM,QAAS,QAAS5I,CAAM,EAC/CgJ,EAAiBJ,EAAM,OAAQ,OAAQ5I,CAAM,EAC7CgJ,EAAiBJ,EAAM,cAAe,cAAe5I,CAAM,EAE3D,IAAMqJ,EAAUF,GAAM,gBAAiBnJ,CAAM,EAC7C,OAAIqJ,IACAT,EAAK,QAAU,IAAI,KAAKS,CAAO,GAGnCL,EAAiBJ,EAAM,SAAU,iBAAkB5I,EAAQ,EAAI,EAExD4I,CACX,CAEA,IAAMU,GAAoB,CAAC,MAAO,OAAQ,MAAM,EAC1CC,GAAiB,CACnB,WACA,UACA,YACA,eACA,WACA,WACA,SACA,SASJ,SAASR,GAAiBS,EAAgB,CACtC,OAAOvN,GAAqB,gBAAiBuN,CAAK,EAAE,IAAK3L,GAAQ,CAC7D,GAAM,CAAE,QAAAyB,CAAO,EAAKzB,EAEd4L,EAAuB,CACzB,OAAQnK,EAAQ,OAGhB,UAAW,CAAC,CAACA,EAAQ,WAGzB,QAAW6H,KAAUmC,GACbhK,EAAQ6H,CAAM,IACdsC,EAAMtC,CAAM,EAAI7H,EAAQ6H,CAAM,GAItC,QAAWA,KAAUoC,GACbjK,EAAQ6H,CAAM,IACdsC,EAAMtC,CAAM,EAAI,SAAS7H,EAAQ6H,CAAM,EAAG,EAAE,GAIpD,OAAI7H,EAAQ,aACRmK,EAAM,WAAanK,EACf,YAIDmK,CACX,CAAC,CACL,CASA,SAASjB,GACLd,EACAjI,EAAe,CAEf,OAAOxD,GAAqByL,EAASjI,EAAM,GAAM,CAAC,EAAE,CAAC,CACzD,CAUA,SAAS0J,GACLzB,EACA8B,EACA5C,EAAU,GAAK,CAEf,OAAOlJ,GAAYzB,GAAqByL,EAAS8B,EAAO5C,EAAS,CAAC,CAAC,EAAE,KAAI,CAC7E,CAWA,SAASoC,EACLU,EACAC,EACAjC,EACA8B,EACA5C,EAAU,GAAK,CAEf,IAAM3B,EAAMkE,GAAMzB,EAAS8B,EAAO5C,CAAO,EACrC3B,IAAKyE,EAAIC,CAAI,EAAI1E,EACzB,CAQA,SAASwD,GAAYlF,EAAa,CAC9B,OAAOA,IAAU,OAASA,IAAU,QAAUA,IAAU,SAC5D,CpBzRA,SAASmC,GACPkE,EACAC,EACArP,EAAwB,CAExB,OAAKoP,EAEEA,EAAKC,GAAOD,EAAK,MAAM,SAAU,KAAM,OAAWpP,CAAO,EAAE,SAAQ,EAFxD,EAGpB,CAQA,SAASsP,GACPD,EACArP,EAAwB,CAExB,MACE,CAACA,GACD,OAAOqP,GAAQ,UACfA,GAAO,MACP,EAAE,WAAYA,IACd,EAAE,SAAUA,EAEhB,CAqBM,SAAUjP,GAEdiP,EACArP,EAAwB,CAQxB,IAAMuP,EAAWD,GAAUD,CAAG,GAAMrP,EAAUqP,EAAM,QAAaA,EAM3DtE,EAAO,CACX,GAAGlL,GACH,GAAG,OAAI,MAAJ,OAAI,OAAA,OAAJ,KAAM,SACT,GAAGE,GAAeC,GAAW,CAAA,CAAE,GAGjC,OAAOkL,GAAO,KAAMqE,EAAUxE,CAAI,CACpC,CAQM,SAAUtK,GAEd4O,EAAiC,CAEjC,IAAMrP,EAAU,CAAE,GAAG,KAAK,SAAU,QAAS,EAAI,EAEjD,OAAOkL,GAAO,KAAMmE,EAAKrP,CAAO,CAClC,CAYM,SAAUQ,GAEdgP,EAA6B,CAE7B,IAAMC,EAAQD,IAAsB,KAAO,KAAK,KAAI,EAAK,CAAA,GAErDhH,EAAM,GAEV,QAAS/C,EAAI,EAAGA,EAAIgK,EAAM,OAAQhK,IAChC+C,GAAOtF,GAAYuM,EAAMhK,CAAC,CAAC,EAG7B,OAAO+C,CACT,CAqBM,SAAUlI,GAEdgE,EACAoL,EACAC,EAAc,OAAOD,GAAY,UAAYA,EAAU,GAAK,CAE5D,GAAI,CAACpL,GAAQ,OAAOA,GAAS,SAC3B,OAAO,KAGL,OAAOoL,GAAY,YACrBC,EAAcD,GAGhB,IAAME,EAAS,KAAK,KAAKtL,EAAMzE,GAAgB,EAAK,EACpD,OAAK8P,GACHC,EAAO,QAAQ,EAAE,OAAM,EAUlBA,EAAO,KAAI,EAAG,CAAC,EAAE,SAAS,MAAK,CACxC,CAgBM,SAAUrP,IAAI,CAClB,OAAO,KAAK,KAAK,KAAK,CACxB,CAYM,SAAUJ,GAAS0P,EAAoBC,EAAkB,CAE7D,GAAIA,IAAcD,EAChB,MAAO,GAOT,IAAI3L,EAAuB4L,EAC3B,KAAO5L,GAAQA,IAASA,EAAK,QAE3B,GADAA,EAAOA,EAAK,OACRA,IAAS2L,EACX,MAAO,GAIX,MAAO,EACT,CAgBM,SAAUxP,GACd0P,EACAC,EAAkB,CAElB,GAAI,CAACC,GAAYF,CAAI,GAAK,CAACE,GAAYD,CAAI,EACzC,OAEF,IAAIE,EAAYH,EAAK,OACfpH,EAAM,CAACqH,EAAK,OAElB,QAASvK,EAAI,EAAGA,EAAIkD,EAAKlD,IACvBsK,EAAKG,GAAW,EAAIF,EAAKvK,CAAC,EAE5B,OAAAsK,EAAK,OAASG,EACPH,CACT,CAQA,SAASE,GAAY5B,EAAS,CAC5B,GAAI,MAAM,QAAQA,CAAI,EACpB,MAAO,GAGT,GACE,OAAOA,GAAS,UAChB,CAAC,OAAO,UAAU,eAAe,KAAKA,EAAM,QAAQ,GACpD,OAAOA,EAAK,QAAW,UACvBA,EAAK,OAAS,EAEd,MAAO,GAGT,QAAS5I,EAAI,EAAGA,EAAI4I,EAAK,OAAQ5I,IAC/B,GAAI,EAAEA,KAAK4I,GACT,MAAO,GAGX,MAAO,EACT,CqB/RA,IAAA8B,GAAA,GAAAjQ,GAAAiQ,GAAA,cAAAC,GAAA,SAAAC,GAAA,SAAA/L,GAAA,aAAAgM,GAAA,SAAAnB,GAAA,eAAAoB,GAAA,gBAAAC,GAAA,gBAAAC,GAAA,QAAAhG,KCsBM,SAAUiG,EAAaC,EAAiB,CAC5C,OAAOA,EAAa,SAAW,IACjC,CAUM,SAAUC,GAAUnJ,EAAW,CACnC,OAAOA,EAAI,QAAQ,eAAgB,CAACoJ,EAAGC,IAAMA,EAAE,YAAW,CAAE,CAC9D,CAWM,SAAUC,GAAQtJ,EAAW,CACjC,OAAOA,EAAI,QAAQ,SAAU,KAAK,EAAE,YAAW,CACjD,CAaM,SAAUuJ,EAGdC,EAAYC,EAAoC,CAChD,IAAMvI,EAAMsI,EAAM,OAClB,QAASxL,EAAI,EAAGA,EAAIkD,EAAKlD,IAAKyL,EAAGD,EAAMxL,CAAC,EAAGA,CAAC,EAC5C,OAAOwL,CACT,CAWM,SAAUE,GAA4B9B,EAAY,CACtD,IAAMhK,EACJ,WAAYgK,EACP,MAAM,UAAU,IAAI,KAAKA,EAAM+B,GAAOhN,GAAUgN,EAAI,EAAI,CAAC,EAC1D,CAAChN,GAAUiL,EAAK,EAAI,CAAC,EAGrB9O,EAAO,IAAIqE,EAASS,CAAK,EAC/B,OAAAA,EAAM,QAASJ,GAAQ,CACrBA,EAAK,OAAS1E,CAChB,CAAC,EAEM8E,CACT,CAEA,IAAWgM,IAAX,SAAWA,EAAc,CACvBA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,YAAA,EAAA,EAAA,aACF,GANWA,KAAAA,GAAc,CAAA,EAAA,EAmBnB,SAAUC,GAAO7J,EAAW,CAChC,IAAM8J,EAAW9J,EAAI,QAAQ,GAAG,EAEhC,GAAI8J,EAAW,GAAKA,EAAW9J,EAAI,OAAS,EAAG,MAAO,GAEtD,IAAM+J,EAAU/J,EAAI,WAAW8J,EAAW,CAAC,EAE3C,OACIC,GAAWH,GAAe,QAAUG,GAAWH,GAAe,QAC7DG,GAAWH,GAAe,QAAUG,GAAWH,GAAe,QAC/DG,IAAYH,GAAe,cAC7B5J,EAAI,SAAS,IAAK8J,EAAW,CAAC,CAElC,CDpHA,IAAME,GAAS,OAAO,UAAU,eAC1BC,GAAS,MACTC,GAAiB,QAKjBC,GAAsC,CAC1C,KAAM,KACN,KAAM,GACN,MAAO,IAGHC,GACJ,8HAEIC,GAAS,qBAwBf,SAASC,GACP1O,EACAmB,EACAwN,EAAiB,OAEjB,GAAI,GAAC3O,GAAQ,CAACb,EAAMa,CAAI,GAKxB,KAHAsB,EAAAtB,EAAK,WAAO,MAAAsB,IAAA,SAAZtB,EAAK,QAAY,CAAA,GAGb,CAACmB,EACH,OAAOnB,EAAK,QAGd,GAAIoO,GAAO,KAAKpO,EAAK,QAASmB,CAAI,EAEhC,MAAO,CAACwN,GAAWH,GAAS,KAAKrN,CAAI,EAAIA,EAAOnB,EAAK,QAAQmB,CAAI,EAInE,GAAInB,EAAK,OAAS,UAAYmB,IAAS,QACrC,OAAOhE,GAAK6C,EAAK,QAAQ,EAI3B,GACEA,EAAK,OAAS,UACbA,EAAK,QAAQ,OAAY,SAAWA,EAAK,QAAQ,OAAY,aAC9DmB,IAAS,QAET,MAAO,KAIX,CAUA,SAASyN,GAAQb,EAAa5M,EAAcuE,EAAoB,CAC1DA,IAAU,KACZmJ,GAAgBd,EAAI5M,CAAI,EAExB4M,EAAG,QAAQ5M,CAAI,EAAI,GAAGuE,CAAK,EAE/B,CAuFM,SAAUsH,GAEd7L,EACAuE,EAGiE,CAGjE,GAAI,OAAOvE,GAAS,UAAYuE,IAAU,OAAW,CACnD,GAAI,OAAOA,GAAU,WAAY,CAC/B,GAAI,OAAOvE,GAAS,SAEhB,MAAM,IAAI,MAAM,+BAA+B,EAGnD,OAAOwM,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CACzBjD,EAAM4O,CAAE,GAAGa,GAAQb,EAAI5M,EAAMuE,EAAM,KAAKqI,EAAI3L,EAAG2L,EAAG,QAAQ5M,CAAI,CAAC,CAAC,CACtE,CAAC,EAEH,OAAOwM,EAAQ,KAAOI,GAAM,CACrB5O,EAAM4O,CAAE,IAET,OAAO5M,GAAS,SAClB,OAAO,KAAKA,CAAI,EAAE,QAAS2N,GAAW,CACpC,IAAMC,EAAW5N,EAAK2N,CAAO,EAC7BF,GAAQb,EAAIe,EAASC,CAAQ,CAC/B,CAAC,EAEDH,GAAQb,EAAI5M,EAAgBuE,CAAe,EAE/C,CAAC,EAGH,OAAO,UAAU,OAAS,EACtB,KACAgJ,GAAQ,KAAK,CAAC,EAAGvN,EAAgB,KAAK,QAAQ,OAAO,CAC3D,CAWA,SAAS6N,GACPjB,EACA5M,EACAwN,EAAiB,CAEjB,OAAOxN,KAAQ4M,EAEXA,EAAG5M,CAAI,EACP,CAACwN,GAAWH,GAAS,KAAKrN,CAAI,EAC9BuN,GAAQX,EAAI5M,EAAM,EAAK,IAAM,OAC7BuN,GAAQX,EAAI5M,EAAMwN,CAAO,CAC/B,CAUA,SAASM,GAAQlB,EAAa5M,EAAcuE,EAAgBiJ,EAAiB,CACvExN,KAAQ4M,EAEVA,EAAG5M,CAAI,EAAIuE,EAEXkJ,GACEb,EACA5M,EACA,CAACwN,GAAWH,GAAS,KAAKrN,CAAI,EAAKuE,EAAQ,GAAK,KAAQ,GAAGA,CAAK,EAAE,CAGxE,CAmFM,SAAUoG,GAEd3K,EACAuE,EAMW,OAEX,GAAI,OAAOvE,GAAS,UAAYuE,IAAU,OAAW,CACnD,IAAMqI,EAAK,KAAK,CAAC,EAEjB,GAAI,CAACA,GAAM,CAAC5O,EAAM4O,CAAE,EAAG,OAEvB,OAAQ5M,EAAM,CACZ,IAAK,QAAS,CACZ,IAAM+N,EAAW,KAAK,IAAG,EACnBC,EAAO,OAAO,KAAKD,CAAQ,EACjC,OAAAC,EAAK,QAAQ,CAACC,EAAGhN,IAAK,CACpB8M,EAAS9M,CAAC,EAAIgN,CAChB,CAAC,EAEDF,EAAS,OAASC,EAAK,OAEhBD,EAET,IAAK,UACL,IAAK,WACH,OAAOnB,EAAG,KAAK,YAAW,EAG5B,IAAK,OACL,IAAK,MAAO,CACV,IAAMjC,GAAOxK,EAAAyM,EAAG,WAAO,MAAAzM,IAAA,OAAA,OAAAA,EAAGH,CAAI,EAG9B,OACE,OAAO,IAAQ,MACbA,IAAS,SAAW4M,EAAG,UAAY,KAAOA,EAAG,OAAS,SACrD5M,IAAS,QACP4M,EAAG,UAAY,OACdA,EAAG,UAAY,UACfA,EAAG,UAAY,SACfA,EAAG,UAAY,SACfA,EAAG,UAAY,YACrBjC,IAAS,QACT,KAAK,QAAQ,QAEN,IAAI,IAAIA,EAAM,KAAK,QAAQ,OAAO,EAAE,KAItCA,EAGT,IAAK,YACH,OAAO/M,GAAUgP,CAAE,EAGrB,IAAK,cACH,OAAOlO,GAAYkO,CAAE,EAGvB,IAAK,YACH,OAAO,KAAK,MAAK,EAAG,KAAK,eAAe,EAAE,OAAM,EAAG,KAAI,EAEzD,IAAK,YACH,OAAO,KAAK,KAAI,EAElB,QACE,OAAOiB,GAAQjB,EAAI5M,EAAM,KAAK,QAAQ,OAAO,GAInD,GAAI,OAAOA,GAAS,UAAYuE,IAAU,OAAW,CACnD,GAAI,OAAOA,GAAU,WAAY,CAC/B,GAAI,OAAOvE,GAAS,SAClB,MAAM,IAAI,MAAM,+BAA+B,EAEjD,OAAOwM,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CACzBjD,EAAM4O,CAAE,GACVkB,GACElB,EACA5M,EACAuE,EAAM,KAAKqI,EAAI3L,EAAG4M,GAAQjB,EAAI5M,EAAM,KAAK,QAAQ,OAAO,CAAC,EACzD,KAAK,QAAQ,OAAO,CAG1B,CAAC,EAGH,OAAOwM,EAAQ,KAAOI,GAAM,CACrB5O,EAAM4O,CAAE,IAET,OAAO5M,GAAS,SAClB,OAAO,KAAKA,CAAI,EAAE,QAAStF,GAAO,CAChC,IAAMuL,EAAMjG,EAAKtF,CAAG,EACpBoT,GAAQlB,EAAIlS,EAAKuL,EAAK,KAAK,QAAQ,OAAO,CAC5C,CAAC,EAED6H,GAAQlB,EAAI5M,EAAMuE,EAAO,KAAK,QAAQ,OAAO,EAEjD,CAAC,EAIL,CAoBA,SAAS2J,GACPtB,EACA5M,EACAuE,EAAe,OAEf,IAAM1F,EAAoB+N,GAE1BzM,EAAAtB,EAAK,QAAI,MAAAsB,IAAA,SAATtB,EAAK,KAAS,CAAA,GAEV,OAAOmB,GAAS,SAAU,OAAO,OAAOnB,EAAK,KAAMmB,CAAI,EAClD,OAAOA,GAAS,UAAYuE,IAAU,SAC7C1F,EAAK,KAAKmB,CAAI,EAAIuE,EAEtB,CAaA,SAAS4J,GAASvB,EAAiB5M,EAAa,CAC9C,IAAIoO,EACAC,EACA9J,EAEAvE,GAAQ,MACVoO,EAAW,OAAO,KAAKxB,EAAG,OAAO,EAAE,OAAQ0B,GACzCA,EAAS,WAAWnB,EAAc,CAAC,EAErCkB,EAAUD,EAAS,IAAKG,GACtBnC,GAAUmC,EAAQ,MAAMpB,GAAe,MAAM,CAAC,CAAC,IAGjDiB,EAAW,CAACjB,GAAiBZ,GAAQvM,CAAI,CAAC,EAC1CqO,EAAU,CAACrO,CAAI,GAGjB,QAAS2I,EAAM,EAAGA,EAAMyF,EAAS,OAAQ,EAAEzF,EAAK,CAC9C,IAAM4F,EAAUH,EAASzF,CAAG,EACtB6F,EAASH,EAAQ1F,CAAG,EAC1B,GACEsE,GAAO,KAAKL,EAAG,QAAS2B,CAAO,GAC/B,CAACtB,GAAO,KAAML,EAAmB,KAAM4B,CAAM,EAC7C,CAGA,GAFAjK,EAAQqI,EAAG,QAAQ2B,CAAO,EAEtBtB,GAAO,KAAKG,GAAY7I,CAAK,EAC/BA,EAAQ6I,GAAW7I,CAAK,UACfA,IAAU,OAAO,OAAOA,CAAK,CAAC,EACvCA,EAAQ,OAAOA,CAAK,UACX+I,GAAO,KAAK/I,CAAK,EAC1B,GAAI,CACFA,EAAQ,KAAK,MAAMA,CAAK,OACd,EAKbqI,EAAG,KAAiC4B,CAAM,EAAIjK,GAInD,OAAOvE,GAAQ,KAAO4M,EAAG,KAAOrI,CAClC,CAoFM,SAAUzE,GAEdE,EACAuE,EAAe,OAEf,IAAM1F,EAAO,KAAK,CAAC,EAEnB,GAAI,CAACA,GAAQ,CAACb,EAAMa,CAAI,EAAG,OAE3B,IAAM4P,EAAsB5P,EAI5B,OAHAsB,EAAAsO,EAAO,QAAI,MAAAtO,IAAA,SAAXsO,EAAO,KAAS,CAAA,GAGXzO,EAKD,OAAOA,GAAS,UAAYuE,IAAU,QACxCiI,EAAQ,KAAOI,GAAM,CACf5O,EAAM4O,CAAE,IACN,OAAO5M,GAAS,SAAUkO,GAAQtB,EAAI5M,CAAI,EACzCkO,GAAQtB,EAAI5M,EAAMuE,CAAgB,EAE3C,CAAC,EACM,MAEL0I,GAAO,KAAKwB,EAAO,KAAMzO,CAAI,EACxByO,EAAO,KAAKzO,CAAI,EAGlBmO,GAASM,EAAQzO,CAAI,EAjBnBmO,GAASM,CAAM,CAkB1B,CAwCM,SAAUxI,GAEd1B,EAAyB,CAEzB,IAAMmK,EAAW,UAAU,SAAW,EAChCnN,EAAU,KAAK,CAAC,EAEtB,GAAI,CAACA,GAAW,CAACvD,EAAMuD,CAAO,EAAG,OAAOmN,EAAW,OAAY,KAE/D,OAAQnN,EAAQ,KAAM,CACpB,IAAK,WACH,OAAO,KAAK,KAAKgD,CAAe,EAClC,IAAK,SAAU,CACb,IAAMoK,EAAS,KAAK,KAAK,iBAAiB,EAC1C,GAAI,CAACD,EAAU,CACb,GAAI,KAAK,KAAK,UAAU,GAAK,MAAQ,OAAOnK,GAAU,SACpD,OAAO,KAGT,KAAK,KAAK,QAAQ,EAAE,WAAW,UAAU,EAEzC,IAAMqK,EAAS,OAAOrK,GAAU,SAAW,CAACA,CAAK,EAAIA,EACrD,QAAStD,EAAI,EAAGA,EAAI2N,EAAO,OAAQ3N,IACjC,KAAK,KAAK,iBAAiB2N,EAAO3N,CAAC,CAAC,IAAI,EAAE,KAAK,WAAY,EAAE,EAG/D,OAAO,KAGT,OAAO,KAAK,KAAK,UAAU,EACvB0N,EAAO,QAAO,EAAG,IAAK/B,GAAO5Q,GAAK4Q,EAAG,QAAQ,CAAC,EAC9C+B,EAAO,KAAK,OAAO,EAEzB,IAAK,QACL,IAAK,SACH,OAAOD,EACH,KAAK,KAAK,OAAO,EACjB,KAAK,KAAK,QAASnK,CAAe,EAI5C,CASA,SAASmJ,GAAgB7O,EAAemB,EAAY,CAC9C,CAACnB,EAAK,SAAW,CAACoO,GAAO,KAAKpO,EAAK,QAASmB,CAAI,GAEpD,OAAOnB,EAAK,QAAQmB,CAAI,CAC1B,CASA,SAAS6O,GAAWC,EAAc,CAChC,OAAOA,EAAQA,EAAM,KAAI,EAAG,MAAM5B,EAAM,EAAI,CAAA,CAC9C,CAqBM,SAAUnB,GAEd/L,EAAY,CAEZ,IAAM+O,EAAYF,GAAW7O,CAAI,EAEjC,QAASiB,EAAI,EAAGA,EAAI8N,EAAU,OAAQ9N,IACpCuL,EAAQ,KAAO3N,GAAQ,CACjBb,EAAMa,CAAI,GAAG6O,GAAgB7O,EAAMkQ,EAAU9N,CAAC,CAAC,CACrD,CAAC,EAGH,OAAO,IACT,CAuBM,SAAU6K,GAEdkD,EAAiB,CAEjB,OAAO,KAAK,QAAO,EAAG,KAAMnQ,GAAQ,CAClC,IAAMoQ,EAAQjR,EAAMa,CAAI,GAAKA,EAAK,QAAQ,MACtC8J,EAAM,GAEV,GAAIsG,GAASD,EAAU,OACrB,MAAQrG,EAAMsG,EAAM,QAAQD,EAAWrG,EAAM,CAAC,GAAK,IAAI,CACrD,IAAMvF,EAAMuF,EAAMqG,EAAU,OAE5B,IACGrG,IAAQ,GAAKuE,GAAO,KAAK+B,EAAMtG,EAAM,CAAC,CAAC,KACvCvF,IAAQ6L,EAAM,QAAU/B,GAAO,KAAK+B,EAAM7L,CAAG,CAAC,GAE/C,MAAO,GAKb,MAAO,EACT,CAAC,CACH,CAoBM,SAAUwI,GAEdrH,EAEyE,CAGzE,GAAI,OAAOA,GAAU,WACnB,OAAOiI,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CAC7B,GAAIjD,EAAM4O,CAAE,EAAG,CACb,IAAMoC,EAAYpC,EAAG,QAAQ,OAAY,GACzChB,GAAS,KAAK,CAACgB,CAAE,EAAGrI,EAAM,KAAKqI,EAAI3L,EAAG+N,CAAS,CAAC,EAEpD,CAAC,EAIH,GAAI,CAACzK,GAAS,OAAOA,GAAU,SAAU,OAAO,KAEhD,IAAM2K,EAAa3K,EAAM,MAAM2I,EAAM,EAC/BiC,EAAc,KAAK,OAEzB,QAASlO,EAAI,EAAGA,EAAIkO,EAAalO,IAAK,CACpC,IAAM2L,EAAK,KAAK3L,CAAC,EAEjB,GAAI,CAACjD,EAAM4O,CAAE,EAAG,SAGhB,IAAMoC,EAAYzB,GAAQX,EAAI,QAAS,EAAK,EAE5C,GAAI,CAACoC,EACHvB,GAAQb,EAAI,QAASsC,EAAW,KAAK,GAAG,EAAE,KAAI,CAAE,MAC3C,CACL,IAAIE,EAAW,IAAIJ,CAAS,IAG5B,QAASK,EAAI,EAAGA,EAAIH,EAAW,OAAQG,IAAK,CAC1C,IAAMC,EAAc,GAAGJ,EAAWG,CAAC,CAAC,IAC/BD,EAAS,SAAS,IAAIE,CAAW,EAAE,IAAGF,GAAYE,GAGzD7B,GAAQb,EAAI,QAASwC,EAAS,KAAI,CAAE,GAIxC,OAAO,IACT,CAqBM,SAAUpD,GAEdhM,EAEyE,CAGzE,GAAI,OAAOA,GAAS,WAClB,OAAOwM,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CACzBjD,EAAM4O,CAAE,GACVZ,GAAY,KAAK,CAACY,CAAE,EAAG5M,EAAK,KAAK4M,EAAI3L,EAAG2L,EAAG,QAAQ,OAAY,EAAE,CAAC,CAEtE,CAAC,EAGH,IAAM2C,EAAUV,GAAW7O,CAAI,EACzBwP,EAAaD,EAAQ,OACrBE,EAAY,UAAU,SAAW,EAEvC,OAAOjD,EAAQ,KAAOI,GAAM,CAC1B,GAAK5O,EAAM4O,CAAE,EAEb,GAAI6C,EAEF7C,EAAG,QAAQ,MAAW,OACjB,CACL,IAAM8C,EAAYb,GAAWjC,EAAG,QAAQ,KAAQ,EAC5C+C,EAAU,GAEd,QAASN,EAAI,EAAGA,EAAIG,EAAYH,IAAK,CACnC,IAAMjK,EAAQsK,EAAU,QAAQH,EAAQF,CAAC,CAAC,EAEtCjK,GAAS,IACXsK,EAAU,OAAOtK,EAAO,CAAC,EACzBuK,EAAU,GAMVN,KAGAM,IACF/C,EAAG,QAAQ,MAAW8C,EAAU,KAAK,GAAG,GAG9C,CAAC,CACH,CAsBM,SAAUzD,GAEd1H,EAQAqL,EAAkB,CAGlB,GAAI,OAAOrL,GAAU,WACnB,OAAOiI,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CACzBjD,EAAM4O,CAAE,GACVX,GAAY,KACV,CAACW,CAAE,EACHrI,EAAM,KAAKqI,EAAI3L,EAAG2L,EAAG,QAAQ,OAAY,GAAIgD,CAAQ,EACrDA,CAAQ,CAGd,CAAC,EAIH,GAAI,CAACrL,GAAS,OAAOA,GAAU,SAAU,OAAO,KAEhD,IAAM2K,EAAa3K,EAAM,MAAM2I,EAAM,EAC/BsC,EAAaN,EAAW,OACxBW,EAAQ,OAAOD,GAAa,UAAaA,EAAW,EAAI,GAAM,EAC9DT,EAAc,KAAK,OAEzB,QAAS,EAAI,EAAG,EAAIA,EAAa,IAAK,CACpC,IAAMvC,EAAK,KAAK,CAAC,EAEjB,GAAI,CAAC5O,EAAM4O,CAAE,EAAG,SAEhB,IAAMkD,EAAiBjB,GAAWjC,EAAG,QAAQ,KAAQ,EAGrD,QAASyC,EAAI,EAAGA,EAAIG,EAAYH,IAAK,CAEnC,IAAMjK,EAAQ0K,EAAe,QAAQZ,EAAWG,CAAC,CAAC,EAG9CQ,GAAS,GAAKzK,EAAQ,EACxB0K,EAAe,KAAKZ,EAAWG,CAAC,CAAC,EACxBQ,GAAS,GAAKzK,GAAS,GAEhC0K,EAAe,OAAO1K,EAAO,CAAC,EAIlCwH,EAAG,QAAQ,MAAWkD,EAAe,KAAK,GAAG,EAG/C,OAAO,IACT,CExiCA,IAAAC,GAAA,GAAArU,GAAAqU,GAAA,SAAAC,GAAA,YAAAC,GAAA,aAAA/P,GAAA,YAAAgQ,GAAA,aAAA/V,GAAA,SAAAgW,GAAA,QAAA/M,GAAA,OAAAgN,GAAA,WAAA5T,GAAA,gBAAA6T,GAAA,SAAA5T,GAAA,UAAA6T,GAAA,QAAAC,GAAA,QAAAC,GAAA,UAAApL,GAAA,OAAAqL,GAAA,SAAAC,GAAA,QAAAhL,GAAA,SAAAhG,GAAA,YAAAiR,GAAA,cAAAC,GAAA,QAAAC,GAAA,WAAArR,GAAA,YAAAsR,GAAA,iBAAAC,GAAA,SAAAtR,GAAA,YAAAuR,GAAA,cAAAC,GAAA,aAAA3J,GAAA,UAAA4J,GAAA,YAAAC,KCAO,IAAIC,GACV,SAAUA,EAAc,CACrBA,EAAa,UAAe,YAC5BA,EAAa,OAAY,SACzBA,EAAa,cAAmB,iBAChCA,EAAa,IAAS,MACtBA,EAAa,UAAe,YAE5BA,EAAa,SAAc,WAC3BA,EAAa,MAAW,QACxBA,EAAa,WAAgB,aAC7BA,EAAa,OAAY,SACzBA,EAAa,QAAa,UAC1BA,EAAa,iBAAsB,mBACvC,GAAGA,IAAiBA,EAAe,CAAC,EAAE,EAc/B,IAAIC,GACV,SAAUA,EAAiB,CACxBA,EAAgB,IAAS,MACzBA,EAAgB,QAAa,UAC7BA,EAAgB,IAAS,MACzBA,EAAgB,OAAY,SAC5BA,EAAgB,OAAY,SAC5BA,EAAgB,OAAY,SAC5BA,EAAgB,IAAS,MACzBA,EAAgB,MAAW,OAC/B,GAAGA,IAAoBA,EAAkB,CAAC,EAAE,ECrC5C,IAAMC,GAAS,2DACTC,GAAW,+BACXC,GAAc,IAAI,IAAI,CACxB,CAAC,IAAiBH,EAAgB,OAAO,EACzC,CAAC,GAAqBA,EAAgB,KAAK,EAC3C,CAAC,GAAiBA,EAAgB,GAAG,EACrC,CAAC,GAAmBA,EAAgB,GAAG,EACvC,CAAC,GAA0BA,EAAgB,GAAG,EAC9C,CAAC,IAAgBA,EAAgB,MAAM,CAC3C,CAAC,EAEKI,GAAgB,IAAI,IAAI,CAC1B,MACA,MACA,UACA,KACA,QACA,OACA,cACJ,CAAC,EAQM,SAASC,GAAYC,EAAU,CAClC,OAAQA,EAAS,KAAM,CACnB,KAAKP,EAAa,SAClB,KAAKA,EAAa,MAClB,KAAKA,EAAa,WAClB,KAAKA,EAAa,OAClB,KAAKA,EAAa,QAClB,KAAKA,EAAa,iBACd,MAAO,GACX,QACI,MAAO,EACf,CACJ,CACA,IAAMQ,GAAyB,IAAI,IAAI,CAAC,WAAY,WAAW,CAAC,EAEhE,SAASC,GAAUxF,EAAGyF,EAASC,EAAmB,CAC9C,IAAMC,EAAO,SAASF,EAAS,EAAE,EAAI,MAErC,OAAOE,IAASA,GAAQD,EAClBD,EACAE,EAAO,EAED,OAAO,aAAaA,EAAO,KAAO,EAElC,OAAO,aAAcA,GAAQ,GAAM,MAASA,EAAO,KAAS,KAAM,CAClF,CACA,SAASC,GAAYhP,EAAK,CACtB,OAAOA,EAAI,QAAQsO,GAAUM,EAAS,CAC1C,CACA,SAASK,GAAQvQ,EAAG,CAChB,OAAOA,IAAM,IAAwBA,IAAM,EAC/C,CACA,SAASwQ,GAAaxQ,EAAG,CACrB,OAAQA,IAAM,IACVA,IAAM,GACNA,IAAM,IACNA,IAAM,IACNA,IAAM,EACd,CAUO,SAASyQ,GAAMT,EAAU,CAC5B,IAAMU,EAAa,CAAC,EACdC,EAAWC,GAAcF,EAAY,GAAGV,CAAQ,GAAI,CAAC,EAC3D,GAAIW,EAAWX,EAAS,OACpB,MAAM,IAAI,MAAM,uBAAuBA,EAAS,MAAMW,CAAQ,CAAC,EAAE,EAErE,OAAOD,CACX,CACA,SAASE,GAAcF,EAAYV,EAAUa,EAAe,CACxD,IAAIC,EAAS,CAAC,EACd,SAASpV,EAAQ6F,EAAQ,CACrB,IAAMqC,EAAQoM,EAAS,MAAMa,EAAgBtP,CAAM,EAAE,MAAMoO,EAAM,EACjE,GAAI,CAAC/L,EACD,MAAM,IAAI,MAAM,wBAAwBoM,EAAS,MAAMa,CAAa,CAAC,EAAE,EAE3E,GAAM,CAACxS,CAAI,EAAIuF,EACf,OAAAiN,GAAiBtP,EAASlD,EAAK,OACxBiS,GAAYjS,CAAI,CAC3B,CACA,SAAS0S,EAAgBxP,EAAQ,CAE7B,IADAsP,GAAiBtP,EACVsP,EAAgBb,EAAS,QAC5BQ,GAAaR,EAAS,WAAWa,CAAa,CAAC,GAC/CA,GAER,CACA,SAASG,GAA2B,CAChCH,GAAiB,EACjB,IAAMrP,EAAQqP,EACVI,EAAU,EACd,KAAOA,EAAU,GAAKJ,EAAgBb,EAAS,OAAQa,IAC/Cb,EAAS,WAAWa,CAAa,IACjC,IACA,CAACK,EAAUL,CAAa,EACxBI,IAEKjB,EAAS,WAAWa,CAAa,IACtC,IACA,CAACK,EAAUL,CAAa,GACxBI,IAGR,GAAIA,EACA,MAAM,IAAI,MAAM,yBAAyB,EAE7C,OAAOX,GAAYN,EAAS,MAAMxO,EAAOqP,EAAgB,CAAC,CAAC,CAC/D,CACA,SAASK,EAAUC,EAAK,CACpB,IAAIC,EAAa,EACjB,KAAOpB,EAAS,WAAW,EAAEmB,CAAG,IAAM,IAClCC,IACJ,OAAQA,EAAa,KAAO,CAChC,CACA,SAASC,GAAqB,CAC1B,GAAIP,EAAO,OAAS,GAAKf,GAAYe,EAAOA,EAAO,OAAS,CAAC,CAAC,EAC1D,MAAM,IAAI,MAAM,uCAAuC,CAE/D,CACA,SAASQ,EAAa1S,EAAM,CACxB,GAAIkS,EAAO,OAAS,GAChBA,EAAOA,EAAO,OAAS,CAAC,EAAE,OAASrB,EAAa,WAAY,CAC5DqB,EAAOA,EAAO,OAAS,CAAC,EAAE,KAAOlS,EACjC,MACJ,CACAyS,EAAmB,EACnBP,EAAO,KAAK,CAAE,KAAAlS,CAAK,CAAC,CACxB,CACA,SAAS2S,EAAoBlT,EAAMmT,EAAQ,CACvCV,EAAO,KAAK,CACR,KAAMrB,EAAa,UACnB,KAAApR,EACA,OAAAmT,EACA,MAAO9V,EAAQ,CAAC,EAChB,UAAW,KACX,WAAY,QAChB,CAAC,CACL,CAQA,SAAS+V,GAAsB,CAK3B,GAJIX,EAAO,QACPA,EAAOA,EAAO,OAAS,CAAC,EAAE,OAASrB,EAAa,YAChDqB,EAAO,IAAI,EAEXA,EAAO,SAAW,EAClB,MAAM,IAAI,MAAM,oBAAoB,EAExCJ,EAAW,KAAKI,CAAM,CAC1B,CAEA,GADAC,EAAgB,CAAC,EACbf,EAAS,SAAWa,EACpB,OAAOA,EAEXa,EAAM,KAAOb,EAAgBb,EAAS,QAAQ,CAC1C,IAAM2B,EAAY3B,EAAS,WAAWa,CAAa,EACnD,OAAQc,EAAW,CAEf,IAAK,IACL,IAAK,GACL,IAAK,IACL,IAAK,IACL,IAAK,IAAyB,EACtBb,EAAO,SAAW,GAClBA,EAAO,CAAC,EAAE,OAASrB,EAAa,cAChC4B,EAAmB,EACnBP,EAAO,KAAK,CAAE,KAAMrB,EAAa,UAAW,CAAC,GAEjDsB,EAAgB,CAAC,EACjB,KACJ,CAEA,IAAK,IAAsB,CACvBO,EAAa7B,EAAa,KAAK,EAC/BsB,EAAgB,CAAC,EACjB,KACJ,CACA,IAAK,IAAmB,CACpBO,EAAa7B,EAAa,MAAM,EAChCsB,EAAgB,CAAC,EACjB,KACJ,CACA,IAAK,KAAiB,CAClBO,EAAa7B,EAAa,OAAO,EACjCsB,EAAgB,CAAC,EACjB,KACJ,CACA,IAAK,IAAe,CAChBO,EAAa7B,EAAa,QAAQ,EAClCsB,EAAgB,CAAC,EACjB,KACJ,CAEA,IAAK,IAAiB,CAClBQ,EAAoB,QAAS7B,EAAgB,OAAO,EACpD,KACJ,CACA,IAAK,IAAe,CAChB6B,EAAoB,KAAM7B,EAAgB,MAAM,EAChD,KACJ,CACA,IAAK,IAA4B,CAC7BqB,EAAgB,CAAC,EAEjB,IAAI1S,EACAuT,EAAY,KACZ5B,EAAS,WAAWa,CAAa,IAAM,IAEvCxS,EAAO3C,EAAQ,CAAC,EAEXsU,EAAS,WAAW,KAAMa,CAAa,GAC5Ce,EAAY,IACZvT,EAAO3C,EAAQ,CAAC,IAGhB2C,EAAO3C,EAAQ,CAAC,EACZsU,EAAS,WAAWa,CAAa,IAAM,KACvCb,EAAS,WAAWa,EAAgB,CAAC,IACjC,KACJe,EAAYvT,EACZA,EAAO3C,EAAQ,CAAC,IAGxBqV,EAAgB,CAAC,EAEjB,IAAIS,EAAS9B,EAAgB,OACvBmC,EAAiBhC,GAAY,IAAIG,EAAS,WAAWa,CAAa,CAAC,EACzE,GAAIgB,EAAgB,CAEhB,GADAL,EAASK,EACL7B,EAAS,WAAWa,EAAgB,CAAC,IACrC,GACA,MAAM,IAAI,MAAM,cAAc,EAElCE,EAAgB,CAAC,CACrB,MACSf,EAAS,WAAWa,CAAa,IAAM,KAC5CW,EAAS9B,EAAgB,OACzBqB,EAAgB,CAAC,GAGrB,IAAInO,GAAQ,GACRkP,GAAa,KACjB,GAAIN,IAAW,SAAU,CACrB,GAAIjB,GAAQP,EAAS,WAAWa,CAAa,CAAC,EAAG,CAC7C,IAAMkB,GAAQ/B,EAAS,WAAWa,CAAa,EAC3CmB,GAAanB,EAAgB,EACjC,KAAOmB,GAAahC,EAAS,SACxBA,EAAS,WAAWgC,EAAU,IAAMD,IACjCb,EAAUc,EAAU,IACxBA,IAAc,EAElB,GAAIhC,EAAS,WAAWgC,EAAU,IAAMD,GACpC,MAAM,IAAI,MAAM,4BAA4B,EAEhDnP,GAAQ0N,GAAYN,EAAS,MAAMa,EAAgB,EAAGmB,EAAU,CAAC,EACjEnB,EAAgBmB,GAAa,CACjC,KACK,CACD,IAAMC,GAAapB,EACnB,KAAOA,EAAgBb,EAAS,SAC1B,CAACQ,GAAaR,EAAS,WAAWa,CAAa,CAAC,GAC9Cb,EAAS,WAAWa,CAAa,IAC7B,IACJK,EAAUL,CAAa,IAC3BA,GAAiB,EAErBjO,GAAQ0N,GAAYN,EAAS,MAAMiC,GAAYpB,CAAa,CAAC,CACjE,CACAE,EAAgB,CAAC,EAEjB,IAAMmB,GAAclC,EAAS,WAAWa,CAAa,EAAI,GAErDqB,KAAgB,KAChBJ,GAAa,GACbf,EAAgB,CAAC,GAEZmB,KAAgB,MACrBJ,GAAa,GACbf,EAAgB,CAAC,EAEzB,CACA,GAAIf,EAAS,WAAWa,CAAa,IACjC,GACA,MAAM,IAAI,MAAM,qCAAqC,EAEzDA,GAAiB,EACjB,IAAMsB,GAAoB,CACtB,KAAM1C,EAAa,UACnB,KAAApR,EACA,OAAAmT,EACA,MAAA5O,GACA,UAAAgP,EACA,WAAAE,EACJ,EACAhB,EAAO,KAAKqB,EAAiB,EAC7B,KACJ,CACA,IAAK,IAAgB,CACjB,GAAInC,EAAS,WAAWa,EAAgB,CAAC,IAAM,GAAgB,CAC3DC,EAAO,KAAK,CACR,KAAMrB,EAAa,cACnB,KAAM/T,EAAQ,CAAC,EAAE,YAAY,EAC7B,KAAMsU,EAAS,WAAWa,CAAa,IACnC,GACEG,EAAyB,EACzB,IACV,CAAC,EACD,QACJ,CACA,IAAM3S,EAAO3C,EAAQ,CAAC,EAAE,YAAY,EAChCyC,EAAO,KACX,GAAI6R,EAAS,WAAWa,CAAa,IACjC,GACA,GAAIf,GAAc,IAAIzR,CAAI,EAAG,CACzB,GAAIkS,GAAQP,EAAS,WAAWa,EAAgB,CAAC,CAAC,EAC9C,MAAM,IAAI,MAAM,mBAAmBxS,CAAI,mBAAmB,EAI9D,GAFAF,EAAO,CAAC,EACR0S,EAAgBD,GAAczS,EAAM6R,EAAUa,EAAgB,CAAC,EAC3Db,EAAS,WAAWa,CAAa,IACjC,GACA,MAAM,IAAI,MAAM,mCAAmCxS,CAAI,KAAK2R,CAAQ,GAAG,EAE3Ea,GAAiB,CACrB,KACK,CAED,GADA1S,EAAO6S,EAAyB,EAC5Bf,GAAuB,IAAI5R,CAAI,EAAG,CAClC,IAAM+T,EAAOjU,EAAK,WAAW,CAAC,EAC1BiU,IAASjU,EAAK,WAAWA,EAAK,OAAS,CAAC,GACxCoS,GAAQ6B,CAAI,IACZjU,EAAOA,EAAK,MAAM,EAAG,EAAE,EAE/B,CACAA,EAAOmS,GAAYnS,CAAI,CAC3B,CAEJ2S,EAAO,KAAK,CAAE,KAAMrB,EAAa,OAAQ,KAAApR,EAAM,KAAAF,CAAK,CAAC,EACrD,KACJ,CACA,IAAK,IAAgB,CACjBsT,EAAoB,EACpBX,EAAS,CAAC,EACVC,EAAgB,CAAC,EACjB,KACJ,CACA,QAAS,CACL,GAAIf,EAAS,WAAW,KAAMa,CAAa,EAAG,CAC1C,IAAMF,EAAWX,EAAS,QAAQ,KAAMa,EAAgB,CAAC,EACzD,GAAIF,EAAW,EACX,MAAM,IAAI,MAAM,4BAA4B,EAEhDE,EAAgBF,EAAW,EAEvBG,EAAO,SAAW,GAClBC,EAAgB,CAAC,EAErB,KACJ,CACA,IAAIa,EAAY,KACZvT,EACJ,GAAIsT,IAAc,GACdd,GAAiB,EACjBxS,EAAO,YAEFsT,IAAc,KAEnB,GADAtT,EAAO,GACH2R,EAAS,WAAWa,EAAgB,CAAC,IAAM,IAAgB,CAC3DS,EAAa7B,EAAa,gBAAgB,EAC1CsB,EAAgB,CAAC,EACjB,KACJ,UAEKpB,GAAO,KAAKK,EAAS,MAAMa,CAAa,CAAC,EAC9CxS,EAAO3C,EAAQ,CAAC,MAGhB,OAAMgW,EAEN1B,EAAS,WAAWa,CAAa,IAAM,KACvCb,EAAS,WAAWa,EAAgB,CAAC,IAAM,MAC3Ce,EAAYvT,EACR2R,EAAS,WAAWa,EAAgB,CAAC,IACrC,IACAxS,EAAO,IACPwS,GAAiB,GAGjBxS,EAAO3C,EAAQ,CAAC,GAGxBoV,EAAO,KAAKzS,IAAS,IACf,CAAE,KAAMoR,EAAa,UAAW,UAAAmC,CAAU,EAC1C,CAAE,KAAMnC,EAAa,IAAK,KAAApR,EAAM,UAAAuT,CAAU,CAAC,CACrD,CACJ,CACJ,CACA,OAAAH,EAAoB,EACbZ,CACX,CClaA,IAAAwB,GAAqB,WCArB,IAAAA,GAAqB,WCErB,IAAMC,GAAY,IAAI,IAAsC,CACxD,CAAC7C,EAAa,UAAW,EAAE,EAC3B,CAACA,EAAa,IAAK,EAAE,EACrB,CAACA,EAAa,UAAW,CAAC,EAC1B,CAACA,EAAa,OAAQ,CAAC,EAC1B,EAEK,SAAUM,GAAYwC,EAAuB,CAC/C,MAAO,CAACD,GAAU,IAAIC,EAAM,IAAI,CACpC,CAEA,IAAM5N,GAAa,IAAI,IAA6B,CAChD,CAAC+K,EAAgB,OAAQ,EAAE,EAC3B,CAACA,EAAgB,OAAQ,CAAC,EAC1B,CAACA,EAAgB,IAAK,CAAC,EACvB,CAACA,EAAgB,MAAO,CAAC,EACzB,CAACA,EAAgB,IAAK,CAAC,EACvB,CAACA,EAAgB,IAAK,CAAC,EAC1B,EASa,SAAP8C,GAAiCpP,EAAuB,CAC3D,IAAMqP,EAAQrP,EAAI,IAAIsP,EAAY,EAClC,QAASpT,EAAI,EAAGA,EAAI8D,EAAI,OAAQ9D,IAAK,CACjC,IAAMqT,EAAUF,EAAMnT,CAAC,EAEvB,GAAI,EAAAqT,EAAU,GAEd,QAASjF,EAAIpO,EAAI,EAAGoO,GAAK,GAAKiF,EAAUF,EAAM/E,CAAC,EAAGA,IAAK,CACnD,IAAM6E,EAAQnP,EAAIsK,EAAI,CAAC,EACvBtK,EAAIsK,EAAI,CAAC,EAAItK,EAAIsK,CAAC,EAClBtK,EAAIsK,CAAC,EAAI6E,EACTE,EAAM/E,EAAI,CAAC,EAAI+E,EAAM/E,CAAC,EACtB+E,EAAM/E,CAAC,EAAIiF,GAGvB,CAEA,SAASD,GAAaH,EAAuB,SACzC,IAAIK,GAAOpU,EAAA8T,GAAU,IAAIC,EAAM,IAAI,KAAC,MAAA/T,IAAA,OAAAA,EAAI,GAExC,OAAI+T,EAAM,OAAS9C,EAAa,WAC5BmD,GAAO/T,EAAA8F,GAAW,IAAI4N,EAAM,MAAM,KAAC,MAAA1T,IAAA,OAAAA,EAAI,EAEnC0T,EAAM,SAAW7C,EAAgB,QAAU6C,EAAM,OAAS,OAE1DK,EAAO,GAGPL,EAAM,aAKNK,IAAS,IAENL,EAAM,OAAS9C,EAAa,SAC9B8C,EAAM,KAEAA,EAAM,OAAS,OAASA,EAAM,OAAS,WAC9CK,EAAO,EACA,MAAM,QAAQL,EAAM,IAAI,GAE/BK,EAAO,KAAK,IACR,GAAGL,EAAM,KAAK,IAAKM,GAAM,KAAK,IAAI,GAAGA,EAAE,IAAIH,EAAY,CAAC,CAAC,CAAC,EAI1DE,EAAO,IACPA,EAAO,IAGXA,EAAO,EAdPA,EAAO,GAiBRA,CACX,CCrFA,IAAAP,GAAqB,WAUfS,GAAU,2BAChB,SAASC,GAAYnQ,EAAa,CAC9B,OAAOA,EAAM,QAAQkQ,GAAS,MAAM,CACxC,CAQA,IAAME,GAA4B,IAAI,IAAI,CACtC,SACA,iBACA,QACA,QACA,OACA,UACA,UACA,UACA,QACA,WACA,QACA,UACA,UACA,QACA,MACA,YACA,WACA,UACA,OACA,QACA,WACA,aACA,OACA,WACA,OACA,QACA,SACA,WACA,SACA,WACA,UACA,SACA,WACA,MACA,MACA,QACA,QACA,YACA,WACA,QACA,SACA,OACA,OACA,SACA,YACA,QACH,EAED,SAASC,GACLjD,EACAnW,EAA2C,CAE3C,OAAO,OAAOmW,EAAS,YAAe,UAChCA,EAAS,WACTA,EAAS,aAAe,SACxB,CAAC,CAACnW,EAAQ,WACV,CAACA,EAAQ,SAAWmZ,GAA0B,IAAIhD,EAAS,IAAI,CACzE,CAKO,IAAMkD,GAOT,CACA,OAAOnV,EAAMI,EAAMtE,EAAO,CACtB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,CAAI,EAAKF,EACb,CAAE,MAAAyE,CAAK,EAAKzE,EAEhB,OAAI8U,GAAiB9U,EAAMtE,CAAO,GAC9B+I,EAAQA,EAAM,YAAW,EAEjB1F,GAAQ,CACZ,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,MACRA,EAAK,SAAWtH,EAAM,QACtBsH,EAAK,YAAW,IAAOtH,GACvB7E,EAAKb,CAAI,CAEjB,GAGIA,GACJiW,EAAQ,kBAAkBjW,EAAMmB,CAAI,IAAMuE,GAAS7E,EAAKb,CAAI,CACpE,EACA,OAAOa,EAAMI,EAAMtE,EAAO,CACtB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,CAAI,EAAKF,EACb,CAAE,MAAAyE,CAAK,EAAKzE,EACVqE,EAAMI,EAAM,OAElB,OAAIqQ,GAAiB9U,EAAMtE,CAAO,GAC9B+I,EAAQA,EAAM,YAAW,EAElB,SAAkB1F,EAAI,CACzB,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,OACPA,EAAK,SAAW1H,GAAO0H,EAAK,OAAO1H,CAAG,IAAM,MAC7C0H,EAAK,OAAO,EAAG1H,CAAG,EAAE,YAAW,IAAOI,GACtC7E,EAAKb,CAAI,CAEjB,GAGG,SAAgBA,EAAI,CACvB,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,OACPA,EAAK,SAAW1H,GAAO0H,EAAK,OAAO1H,CAAG,IAAM,MAC7C0H,EAAK,OAAO,EAAG1H,CAAG,IAAMI,GACxB7E,EAAKb,CAAI,CAEjB,CACJ,EACA,QAAQa,EAAMI,EAAMtE,EAAO,CACvB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,EAAM,MAAAuE,CAAK,EAAKzE,EACxB,GAAI,KAAK,KAAKyE,CAAK,EACf,OAAO,GAAAwQ,QAAS,UAGpB,IAAMtP,EAAQ,IAAI,OACd,YAAYiP,GAAYnQ,CAAK,CAAC,YAC9BqQ,GAAiB9U,EAAMtE,CAAO,EAAI,IAAM,EAAE,EAG9C,OAAO,SAAiBqD,EAAI,CACxB,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,MACRA,EAAK,QAAUtH,EAAM,QACrBkB,EAAM,KAAKoG,CAAI,GACfnM,EAAKb,CAAI,CAEjB,CACJ,EACA,OAAOa,EAAM,CAAE,KAAAM,CAAI,EAAI,CAAE,QAAA8U,CAAO,EAAE,CAC9B,OAAQjW,GAASiW,EAAQ,UAAUjW,EAAMmB,CAAI,GAAKN,EAAKb,CAAI,CAC/D,EACA,MAAMa,EAAMI,EAAMtE,EAAO,CACrB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,CAAI,EAAKF,EACb,CAAE,MAAAyE,CAAK,EAAKzE,EACVqE,EAAMI,EAAM,OAElB,OAAIJ,IAAQ,EACD,GAAA4Q,QAAS,UAGhBH,GAAiB9U,EAAMtE,CAAO,GAC9B+I,EAAQA,EAAM,YAAW,EAEjB1F,GAAQ,CACZ,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,MACRA,EAAK,QAAU1H,GACf0H,EAAK,OAAO,EAAG1H,CAAG,EAAE,YAAW,IAAOI,GACtC7E,EAAKb,CAAI,CAEjB,GAGIA,GAAQ,OACZ,MAAA,CAAC,EAAC,GAAAsB,EAAA2U,EAAQ,kBAAkBjW,EAAMmB,CAAI,KAAC,MAAAG,IAAA,SAAAA,EAAE,WAAWoE,CAAK,IACzD7E,EAAKb,CAAI,EACjB,EACA,IAAIa,EAAMI,EAAMtE,EAAO,CACnB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,CAAI,EAAKF,EACb,CAAE,MAAAyE,CAAK,EAAKzE,EACVqE,EAAM,CAACI,EAAM,OAEnB,OAAIJ,IAAQ,EACD,GAAA4Q,QAAS,UAGhBH,GAAiB9U,EAAMtE,CAAO,GAC9B+I,EAAQA,EAAM,YAAW,EAEjB1F,GAAQ,OACZ,QAAAsB,EAAA2U,EACK,kBAAkBjW,EAAMmB,CAAI,KAAC,MAAAG,IAAA,OAAA,OAAAA,EAC5B,OAAOgE,CAAG,EACX,YAAW,KAAOI,GAAS7E,EAAKb,CAAI,IAGzCA,GAAQ,OACZ,MAAA,CAAC,EAAC,GAAAsB,EAAA2U,EAAQ,kBAAkBjW,EAAMmB,CAAI,KAAC,MAAAG,IAAA,SAAAA,EAAE,SAASoE,CAAK,IACvD7E,EAAKb,CAAI,EACjB,EACA,IAAIa,EAAMI,EAAMtE,EAAO,CACnB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,EAAM,MAAAuE,CAAK,EAAKzE,EAExB,GAAIyE,IAAU,GACV,OAAO,GAAAwQ,QAAS,UAGpB,GAAIH,GAAiB9U,EAAMtE,CAAO,EAAG,CACjC,IAAMiK,EAAQ,IAAI,OAAOiP,GAAYnQ,CAAK,EAAG,GAAG,EAEhD,OAAO,SAAe1F,EAAI,CACtB,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACI6L,GAAQ,MACRA,EAAK,QAAUtH,EAAM,QACrBkB,EAAM,KAAKoG,CAAI,GACfnM,EAAKb,CAAI,CAEjB,EAGJ,OAAQA,GAAQ,OACZ,MAAA,CAAC,EAAC,GAAAsB,EAAA2U,EAAQ,kBAAkBjW,EAAMmB,CAAI,KAAC,MAAAG,IAAA,SAAAA,EAAE,SAASoE,CAAK,IACvD7E,EAAKb,CAAI,EACjB,EACA,IAAIa,EAAMI,EAAMtE,EAAO,CACnB,GAAM,CAAE,QAAAsZ,CAAO,EAAKtZ,EACd,CAAE,KAAAwE,CAAI,EAAKF,EACb,CAAE,MAAAyE,CAAK,EAAKzE,EAEhB,OAAIyE,IAAU,GACF1F,GACJ,CAAC,CAACiW,EAAQ,kBAAkBjW,EAAMmB,CAAI,GAAKN,EAAKb,CAAI,EACjD+V,GAAiB9U,EAAMtE,CAAO,GACrC+I,EAAQA,EAAM,YAAW,EAEjB1F,GAAQ,CACZ,IAAMgN,EAAOiJ,EAAQ,kBAAkBjW,EAAMmB,CAAI,EACjD,OACK6L,GAAQ,MACLA,EAAK,SAAWtH,EAAM,QACtBsH,EAAK,YAAW,IAAOtH,IAC3B7E,EAAKb,CAAI,CAEjB,GAGIA,GACJiW,EAAQ,kBAAkBjW,EAAMmB,CAAI,IAAMuE,GAAS7E,EAAKb,CAAI,CACpE,GC5QJ,IAAMmW,GAAa,IAAI,IAAI,CAAC,EAAG,GAAI,GAAI,GAAI,EAAE,CAAC,EACxCC,GAAO,IAAI,WAAW,CAAC,EACvBC,GAAO,IAAI,WAAW,CAAC,EASvB,SAAU9C,GAAM+C,EAAe,CAGjC,GAFAA,EAAUA,EAAQ,KAAI,EAAG,YAAW,EAEhCA,IAAY,OACZ,MAAO,CAAC,EAAG,CAAC,EACT,GAAIA,IAAY,MACnB,MAAO,CAAC,EAAG,CAAC,EAKhB,IAAIxM,EAAM,EAENN,EAAI,EACJ+M,EAAOC,EAAQ,EACfC,EAASC,EAAU,EAkBvB,GAhBI5M,EAAMwM,EAAQ,QAAUA,EAAQ,OAAOxM,CAAG,IAAM,MAChDA,IACAN,EAAI+M,GAAQE,GAAU,GAEtBE,EAAc,EAEV7M,EAAMwM,EAAQ,QACdC,EAAOC,EAAQ,EACfG,EAAc,EACdF,EAASC,EAAU,GAEnBH,EAAOE,EAAS,GAKpBA,IAAW,MAAQ3M,EAAMwM,EAAQ,OACjC,MAAM,IAAI,MAAM,kCAAkCA,CAAO,IAAI,EAGjE,MAAO,CAAC9M,EAAG+M,EAAOE,CAAM,EAExB,SAASD,GAAQ,CACb,OAAIF,EAAQ,OAAOxM,CAAG,IAAM,KACxBA,IACO,KAGPwM,EAAQ,OAAOxM,CAAG,IAAM,KACxBA,IAGG,EACX,CAEA,SAAS4M,GAAU,CACf,IAAMpS,EAAQwF,EACVpE,EAAQ,EAEZ,KACIoE,EAAMwM,EAAQ,QACdA,EAAQ,WAAWxM,CAAG,GAAKsM,IAC3BE,EAAQ,WAAWxM,CAAG,GAAKuM,IAE3B3Q,EAAQA,EAAQ,IAAM4Q,EAAQ,WAAWxM,CAAG,EAAIsM,IAChDtM,IAIJ,OAAOA,IAAQxF,EAAQ,KAAOoB,CAClC,CAEA,SAASiR,GAAc,CACnB,KACI7M,EAAMwM,EAAQ,QACdH,GAAW,IAAIG,EAAQ,WAAWxM,CAAG,CAAC,GAEtCA,GAER,CACJ,CC3FA,IAAAqL,GAAqB,WAsBf,SAAUyB,GACZrK,EAA8B,CAE9B,IAAM/C,EAAI+C,EAAO,CAAC,EAEZ9C,EAAI8C,EAAO,CAAC,EAAI,EAStB,GAAI9C,EAAI,GAAKD,GAAK,EAAG,OAAO,GAAA0M,QAAS,UAGrC,GAAI1M,IAAM,GAAI,OAAQjD,GAAUA,GAASkD,EACzC,GAAID,IAAM,EAAG,OAAQjD,GAAUA,IAAUkD,EAEzC,GAAID,IAAM,EAAG,OAAOC,EAAI,EAAI,GAAAyM,QAAS,SAAY3P,GAAUA,GAASkD,EAOpE,IAAMoN,EAAO,KAAK,IAAIrN,CAAC,EAEjBsN,GAASrN,EAAIoN,EAAQA,GAAQA,EAEnC,OAAOrN,EAAI,EACJjD,GAAUA,GAASkD,GAAKlD,EAAQsQ,IAASC,EACzCvQ,GAAUA,GAASkD,GAAKlD,EAAQsQ,IAASC,CACpD,CC5Bc,SAAPC,GAA0BT,EAAe,CAC5C,OAAOM,GAAQrD,GAAM+C,CAAO,CAAC,CACjC,CC7BA,IAAAnB,EAAqB,WAUrB,SAAS6B,GACLnW,EACAoV,EAAmC,CAEnC,OAAQjW,GAAQ,CACZ,IAAMW,EAASsV,EAAQ,UAAUjW,CAAI,EACrC,OAAOW,GAAU,MAAQsV,EAAQ,MAAMtV,CAAM,GAAKE,EAAKb,CAAI,CAC/D,CACJ,CAEO,IAAMiX,GAAkC,CAC3C,SAASpW,EAAM1D,EAAM,CAAE,QAAA8Y,CAAO,EAAE,CAC5B,OAAO,SAAkBjW,EAAI,CACzB,OAAOa,EAAKb,CAAI,GAAKiW,EAAQ,QAAQjW,CAAI,EAAE,SAAS7C,CAAI,CAC5D,CACJ,EACA,UAAU0D,EAAM1D,EAAM,CAAE,QAAA8Y,CAAO,EAAE,CAC7B,IAAMiB,EAAQ/Z,EAAK,YAAW,EAE9B,OAAO,SAAmB6C,EAAI,CAC1B,OACIa,EAAKb,CAAI,GACTiW,EAAQ,QAAQjW,CAAI,EAAE,YAAW,EAAG,SAASkX,CAAK,CAE1D,CACJ,EAGA,YAAYrW,EAAMsW,EAAM,CAAE,QAAAlB,EAAS,OAAAmB,CAAM,EAAE,CACvC,IAAMC,EAAON,GAAUI,CAAI,EAE3B,OAAIE,IAAS,EAAAnB,QAAS,UAAkB,EAAAA,QAAS,UAC7CmB,IAAS,EAAAnB,QAAS,SAAiBc,GAAanW,EAAMoV,CAAO,EAE1D,SAAkBjW,EAAI,CACzB,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EACrCiU,EAAM,EAEV,QAAS7R,EAAI,EAAGA,EAAIqG,EAAS,QACrB,CAAA2O,EAAOpX,EAAMyI,EAASrG,CAAC,CAAC,EADKA,IAE7B6T,EAAQ,MAAMxN,EAASrG,CAAC,CAAC,GACzB6R,IAIR,OAAOoD,EAAKpD,CAAG,GAAKpT,EAAKb,CAAI,CACjC,CACJ,EACA,iBAAiBa,EAAMsW,EAAM,CAAE,QAAAlB,EAAS,OAAAmB,CAAM,EAAE,CAC5C,IAAMC,EAAON,GAAUI,CAAI,EAE3B,OAAIE,IAAS,EAAAnB,QAAS,UAAkB,EAAAA,QAAS,UAC7CmB,IAAS,EAAAnB,QAAS,SAAiBc,GAAanW,EAAMoV,CAAO,EAE1D,SAAsBjW,EAAI,CAC7B,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EACrCiU,EAAM,EAEV,QAAS7R,EAAIqG,EAAS,OAAS,EAAGrG,GAAK,GAC/B,CAAAgV,EAAOpX,EAAMyI,EAASrG,CAAC,CAAC,EADUA,IAElC6T,EAAQ,MAAMxN,EAASrG,CAAC,CAAC,GACzB6R,IAIR,OAAOoD,EAAKpD,CAAG,GAAKpT,EAAKb,CAAI,CACjC,CACJ,EACA,cAAca,EAAMsW,EAAM,CAAE,QAAAlB,EAAS,OAAAmB,CAAM,EAAE,CACzC,IAAMC,EAAON,GAAUI,CAAI,EAE3B,OAAIE,IAAS,EAAAnB,QAAS,UAAkB,EAAAA,QAAS,UAC7CmB,IAAS,EAAAnB,QAAS,SAAiBc,GAAanW,EAAMoV,CAAO,EAE1D,SAAmBjW,EAAI,CAC1B,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EACrCiU,EAAM,EAEV,QAAS7R,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACtC,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAE9BrB,EAAQ,MAAMqB,CAAc,GAC5BrB,EAAQ,QAAQqB,CAAc,IAAMrB,EAAQ,QAAQjW,CAAI,GAExDiU,IAIR,OAAOoD,EAAKpD,CAAG,GAAKpT,EAAKb,CAAI,CACjC,CACJ,EACA,mBAAmBa,EAAMsW,EAAM,CAAE,QAAAlB,EAAS,OAAAmB,CAAM,EAAE,CAC9C,IAAMC,EAAON,GAAUI,CAAI,EAE3B,OAAIE,IAAS,EAAAnB,QAAS,UAAkB,EAAAA,QAAS,UAC7CmB,IAAS,EAAAnB,QAAS,SAAiBc,GAAanW,EAAMoV,CAAO,EAE1D,SAAuBjW,EAAI,CAC9B,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EACrCiU,EAAM,EAEV,QAAS7R,EAAIqG,EAAS,OAAS,EAAGrG,GAAK,EAAGA,IAAK,CAC3C,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAE9BrB,EAAQ,MAAMqB,CAAc,GAC5BrB,EAAQ,QAAQqB,CAAc,IAAMrB,EAAQ,QAAQjW,CAAI,GAExDiU,IAIR,OAAOoD,EAAKpD,CAAG,GAAKpT,EAAKb,CAAI,CACjC,CACJ,EAGA,KAAKa,EAAM0W,EAAO,CAAE,QAAAtB,CAAO,EAAE,CACzB,OAAQjW,GAAQ,CACZ,IAAMW,EAASsV,EAAQ,UAAUjW,CAAI,EACrC,OAAQW,GAAU,MAAQ,CAACsV,EAAQ,MAAMtV,CAAM,IAAME,EAAKb,CAAI,CAClE,CACJ,EAEA,MACIa,EACAsW,EACAxa,EACA0P,EAAgB,CAEhB,GAAM,CAAE,OAAA+K,CAAM,EAAKza,EAEnB,MAAI,CAAC0P,GAAWA,EAAQ,SAAW,EAExB4K,GAAQ,KAAQpW,EAAMsW,EAAMxa,CAAO,EAG1C0P,EAAQ,SAAW,EAEXrM,GAASoX,EAAO/K,EAAQ,CAAC,EAAGrM,CAAI,GAAKa,EAAKb,CAAI,EAGlDA,GAASqM,EAAQ,SAASrM,CAAI,GAAKa,EAAKb,CAAI,CACxD,EAEA,MAAOwX,GAAmB,WAAW,EACrC,QAASA,GAAmB,WAAW,EACvC,OAAQA,GAAmB,UAAU,GASzC,SAASA,GACLrW,EAA4C,CAE5C,OAAO,SAAuBN,EAAM0W,EAAO,CAAE,QAAAtB,CAAO,EAAE,CAClD,IAAMoB,EAAOpB,EAAQ9U,CAAI,EAEzB,OAAI,OAAOkW,GAAS,WACT,EAAAnB,QAAS,UAGb,SAAgBlW,EAAI,CACvB,OAAOqX,EAAKrX,CAAI,GAAKa,EAAKb,CAAI,CAClC,CACJ,CACJ,CC5KO,IAAMyX,GAAkC,CAC3C,MAAMzX,EAAM,CAAE,QAAAiW,CAAO,EAAE,CACnB,MAAO,CAACA,EAAQ,YAAYjW,CAAI,EAAE,KAC7BA,GAEGiW,EAAQ,MAAMjW,CAAI,GAAKiW,EAAQ,QAAQjW,CAAI,IAAM,EAAE,CAE/D,EAEA,cAAcA,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CACnC,GAAInB,EAAQ,mBACR,OAAOA,EAAQ,mBAAmBjW,CAAI,GAAK,KAG/C,IAAM0X,EAAazB,EACd,YAAYjW,CAAI,EAChB,KAAMA,GAASiW,EAAQ,MAAMjW,CAAI,CAAC,EACvC,OAAO0X,GAAc,MAAQN,EAAOpX,EAAM0X,CAAU,CACxD,EACA,aAAa1X,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CAClC,IAAM3O,EAAWwN,EAAQ,YAAYjW,CAAI,EAEzC,QAASoC,EAAIqG,EAAS,OAAS,EAAGrG,GAAK,EAAGA,IAAK,CAC3C,GAAIgV,EAAOpX,EAAMyI,EAASrG,CAAC,CAAC,EAAG,MAAO,GACtC,GAAI6T,EAAQ,MAAMxN,EAASrG,CAAC,CAAC,EAAG,MAGpC,MAAO,EACX,EACA,gBAAgBpC,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CACrC,IAAM3O,EAAWwN,EAAQ,YAAYjW,CAAI,EACnC2X,EAAW1B,EAAQ,QAAQjW,CAAI,EAErC,QAASoC,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACtC,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAAO,GACzC,GACIrB,EAAQ,MAAMqB,CAAc,GAC5BrB,EAAQ,QAAQqB,CAAc,IAAMK,EAEpC,MAIR,MAAO,EACX,EACA,eAAe3X,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CACpC,IAAM3O,EAAWwN,EAAQ,YAAYjW,CAAI,EACnC2X,EAAW1B,EAAQ,QAAQjW,CAAI,EAErC,QAASoC,EAAIqG,EAAS,OAAS,EAAGrG,GAAK,EAAGA,IAAK,CAC3C,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAAO,GACzC,GACIrB,EAAQ,MAAMqB,CAAc,GAC5BrB,EAAQ,QAAQqB,CAAc,IAAMK,EAEpC,MAIR,MAAO,EACX,EACA,eAAe3X,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CACpC,IAAMO,EAAW1B,EAAQ,QAAQjW,CAAI,EAErC,OAAOiW,EACF,YAAYjW,CAAI,EAChB,MACI4I,GACGwO,EAAOpX,EAAM4I,CAAO,GACpB,CAACqN,EAAQ,MAAMrN,CAAO,GACtBqN,EAAQ,QAAQrN,CAAO,IAAM+O,CAAQ,CAErD,EACA,aAAa3X,EAAM,CAAE,QAAAiW,EAAS,OAAAmB,CAAM,EAAE,CAClC,OAAOnB,EACF,YAAYjW,CAAI,EAChB,MACI4I,GAAYwO,EAAOpX,EAAM4I,CAAO,GAAK,CAACqN,EAAQ,MAAMrN,CAAO,CAAC,CAEzE,GAGE,SAAUgP,GACZP,EACAlW,EACA0W,EACAC,EAAgB,CAEhB,GAAID,IAAc,MACd,GAAIR,EAAK,OAASS,EACd,MAAM,IAAI,MAAM,iBAAiB3W,CAAI,uBAAuB,UAEzDkW,EAAK,SAAWS,EACvB,MAAM,IAAI,MAAM,iBAAiB3W,CAAI,6BAA6B,CAE1E,CCxGO,IAAM4W,GAAkC,CAG3C,WAAY,2BACZ,KAAM,0BAKN,SAAU;;;;OAKV,QAAS,kBACT,QACI,8EACJ,SAAU,yCACV,SAAU,+CAKV,SACI,+FAEJ,SAAU,kBACV,KAAM,cACN,SAAU,kBACV,MAAO,eACP,MAAO,eACP,MAAO,eACP,OAAQ,gBAER,OAAQ,eACR,OAAQ,8BAER,OAAQ,kCACR,MAAO,uCACP,KAAM,2CCzCV,IAAA5C,EAAqB,WAUd,IAAM6C,GAAsB,CAAA,EAE7B,SAAUC,GACZpX,EACAoV,EAAmC,CAEnC,OAAIpV,IAAS,EAAAqV,QAAS,UAAkB,EAAAA,QAAS,UACzClW,GAAeiW,EAAQ,MAAMjW,CAAI,GAAKa,EAAKb,CAAI,CAC3D,CAUM,SAAUkY,GACZlY,EACAiW,EAAmC,CAEnC,IAAMxN,EAAWwN,EAAQ,YAAYjW,CAAI,EACzC,GAAIyI,EAAS,QAAU,EAAG,MAAO,CAAA,EACjC,IAAM0P,EAAY1P,EAAS,QAAQzI,CAAI,EACvC,OAAImY,EAAY,GAAKA,IAAc1P,EAAS,OAAS,EAAU,CAAA,EACxDA,EAAS,MAAM0P,EAAY,CAAC,EAAE,OAAOlC,EAAQ,KAAK,CAC7D,CAEA,SAASmC,GACLzb,EAA2C,CAG3C,MAAO,CACH,QAAS,CAAC,CAACA,EAAQ,QACnB,wBAAyB,CAAC,CAACA,EAAQ,wBACnC,cAAe,CAAC,CAACA,EAAQ,cACzB,WAAY,CAAC,CAACA,EAAQ,WACtB,aAAc,CAAC,CAACA,EAAQ,aACxB,QAASA,EAAQ,QACjB,QAASA,EAAQ,QACjB,OAAQA,EAAQ,OAExB,CAEA,IAAMiV,GAAgB,CAAC/Q,EAAMwU,EAAO1Y,EAAS0P,EAASgM,IAAgB,CAClE,IAAMhB,EAAOgB,EAAahD,EAAO+C,GAAYzb,CAAO,EAAG0P,CAAO,EAE9D,OAAOgL,IAAS,EAAAnB,QAAS,SACnBrV,EACAwW,IAAS,EAAAnB,QAAS,UAClB,EAAAA,QAAS,UACRlW,GAASqX,EAAKrX,CAAI,GAAKa,EAAKb,CAAI,CAC3C,EAOawT,GAAwC,CACjD,GAAA5B,GAIA,QAASA,GACT,MAAOA,GACP,IAAI/Q,EAAMwU,EAAO1Y,EAAS0P,EAASgM,EAAY,CAC3C,IAAMhB,EAAOgB,EAAahD,EAAO+C,GAAYzb,CAAO,EAAG0P,CAAO,EAE9D,OAAOgL,IAAS,EAAAnB,QAAS,UACnBrV,EACAwW,IAAS,EAAAnB,QAAS,SAClB,EAAAA,QAAS,UACRlW,GAAS,CAACqX,EAAKrX,CAAI,GAAKa,EAAKb,CAAI,CAC5C,EACA,IACIa,EACAgX,EACAlb,EACA2b,EACAD,EAA6C,CAE7C,GAAM,CAAE,QAAApC,CAAO,EAAKtZ,EAEd+K,EAAO0Q,GAAYzb,CAAO,EAChC+K,EAAK,iBAAmB,GAExB,IAAM2E,EAAUwL,EAAU,KAAMU,GAAMA,EAAE,KAAK1F,EAAW,CAAC,EAElD,CAACmF,EAAmB,EACrB,OAEAQ,EAAWH,EAAaR,EAAWnQ,EAAM2E,CAAO,EAEtD,GAAImM,IAAa,EAAAtC,QAAS,UAAW,OAAO,EAAAA,QAAS,UAErD,IAAMuC,EAAaR,GAAYO,EAAUvC,CAAO,EAGhD,GAAI5J,GAAWmM,IAAa,EAAAtC,QAAS,SAAU,CAK3C,GAAM,CAAE,uBAAAwC,EAAyB,EAAK,EAAKF,EAE3C,OAAQxY,GAAQ,CACZ,GAAI,CAACa,EAAKb,CAAI,EAAG,MAAO,GAExBqM,EAAQ,CAAC,EAAIrM,EACb,IAAMmC,EAAS8T,EAAQ,YAAYjW,CAAI,EACjC2Y,EAAeD,EACf,CAAC,GAAGvW,EAAQ,GAAG+V,GAAgBlY,EAAMiW,CAAO,CAAC,EAC7C9T,EAEN,OAAO8T,EAAQ,UAAUwC,EAAYE,CAAY,CACrD,EAGJ,OAAQ3Y,GACJa,EAAKb,CAAI,GACTiW,EAAQ,UAAUwC,EAAYxC,EAAQ,YAAYjW,CAAI,CAAC,CAC/D,GC/GE,SAAU4Y,GACZ/X,EACAiS,EACAnW,EACA0P,EACAgM,EAA6C,OAE7C,GAAM,CAAE,KAAAlX,EAAM,KAAAF,CAAI,EAAK6R,EAEvB,GAAI,MAAM,QAAQ7R,CAAI,EAAG,CACrB,GAAI,EAAEE,KAAQqS,IACV,MAAM,IAAI,MAAM,yBAAyBrS,CAAI,IAAIF,CAAI,GAAG,EAG5D,OAAOuS,GAAWrS,CAAI,EAAEN,EAAMI,EAAMtE,EAAS0P,EAASgM,CAAY,EAGtE,IAAMQ,GAAavX,EAAA3E,EAAQ,WAAO,MAAA2E,IAAA,OAAA,OAAAA,EAAGH,CAAI,EAEnC2X,EACF,OAAOD,GAAe,SAAWA,EAAad,GAAQ5W,CAAI,EAE9D,GAAI,OAAO2X,GAAiB,SAAU,CAClC,GAAI7X,GAAQ,KACR,MAAM,IAAI,MAAM,UAAUE,CAAI,6BAA6B,EAI/D,IAAM4X,EAAQxF,GAAMuF,CAAY,EAChC,OAAOtF,GAAW,GAAM3S,EAAMkY,EAAOpc,EAAS0P,EAASgM,CAAY,EAGvE,GAAI,OAAOQ,GAAe,WACtB,OAAAjB,GAAiBiB,EAAY1X,EAAMF,EAAM,CAAC,EAElCjB,GAAS6Y,EAAW7Y,EAAMiB,CAAI,GAAKJ,EAAKb,CAAI,EAGxD,GAAImB,KAAQ8V,GACR,OAAOA,GAAQ9V,CAAI,EAAEN,EAAMI,EAAgBtE,EAAS0P,CAAO,EAG/D,GAAIlL,KAAQsW,GAAS,CACjB,IAAMuB,EAASvB,GAAQtW,CAAI,EAC3B,OAAAyW,GAAiBoB,EAAQ7X,EAAMF,EAAM,CAAC,EAE9BjB,GAASgZ,EAAOhZ,EAAMrD,EAASsE,CAAI,GAAKJ,EAAKb,CAAI,EAG7D,MAAM,IAAI,MAAM,yBAAyBmB,CAAI,EAAE,CACnD,CC9DA,SAAS8X,GACLrX,EACAqU,EAAmC,CAEnC,IAAMtV,EAASsV,EAAQ,UAAUrU,CAAI,EACrC,OAAIjB,GAAUsV,EAAQ,MAAMtV,CAAM,EACvBA,EAEJ,IACX,CAMM,SAAUuY,GACZrY,EACAiS,EACAnW,EACA0P,EACAgM,EAA6C,CAE7C,GAAM,CAAE,QAAApC,EAAS,OAAAmB,CAAM,EAAKza,EAE5B,OAAQmW,EAAS,KAAM,CACnB,KAAKP,EAAa,cACd,MAAM,IAAI,MAAM,iDAAiD,EAErE,KAAKA,EAAa,iBACd,MAAM,IAAI,MACN,wDAAwD,EAGhE,KAAKA,EAAa,UAAW,CACzB,GAAIO,EAAS,WAAa,KACtB,MAAM,IAAI,MACN,2DAA2D,EAInE,OAAI,CAACnW,EAAQ,SAAWA,EAAQ,2BAC5BmW,EAAS,KAAOA,EAAS,KAAK,YAAW,GAEtCkD,GAAelD,EAAS,MAAM,EAAEjS,EAAMiS,EAAUnW,CAAO,EAElE,KAAK4V,EAAa,OACd,OAAOqG,GACH/X,EACAiS,EACAnW,EACA0P,EACAgM,CAAY,EAIpB,KAAK9F,EAAa,IAAK,CACnB,GAAIO,EAAS,WAAa,KACtB,MAAM,IAAI,MACN,0DAA0D,EAIlE,GAAI,CAAE,KAAA3R,CAAI,EAAK2R,EAEf,OAAI,CAACnW,EAAQ,SAAWA,EAAQ,iBAC5BwE,EAAOA,EAAK,YAAW,GAGpB,SAAanB,EAAiB,CACjC,OAAOiW,EAAQ,QAAQjW,CAAI,IAAMmB,GAAQN,EAAKb,CAAI,CACtD,EAIJ,KAAKuS,EAAa,WAAY,CAC1B,GACI5V,EAAQ,eAAiB,IACzB,OAAO,QAAY,IAEnB,OAAO,SAAoBqD,EAAiB,CACxC,IAAI8E,EAA8B9E,EAElC,KAAQ8E,EAAUmU,GAAiBnU,EAASmR,CAAO,GAC/C,GAAIpV,EAAKiE,CAAO,EACZ,MAAO,GAIf,MAAO,EACX,EAIJ,IAAMqU,EAAe,IAAI,QACzB,OAAO,SAA0BnZ,EAAiB,CAC9C,IAAI8E,EAA8B9E,EAElC,KAAQ8E,EAAUmU,GAAiBnU,EAASmR,CAAO,GAC/C,GAAI,CAACkD,EAAa,IAAIrU,CAAO,EAAG,CAC5B,GAAImR,EAAQ,MAAMnR,CAAO,GAAKjE,EAAKiE,CAAO,EACtC,MAAO,GAEXqU,EAAa,IAAIrU,CAAO,EAIhC,MAAO,EACX,EAEJ,IAAK,sBAED,OAAO,SAA4B9E,EAAiB,CAChD,IAAI8E,EAA8B9E,EAElC,EACI,IAAIa,EAAKiE,CAAO,EAAG,MAAO,SACpBA,EAAUmU,GAAiBnU,EAASmR,CAAO,GAErD,MAAO,EACX,EAEJ,KAAK1D,EAAa,OACd,OAAO,SAAgBvS,EAAiB,CACpC,OAAOiW,EACF,YAAYjW,CAAI,EAChB,KAAMA,GAASiW,EAAQ,MAAMjW,CAAI,GAAKa,EAAKb,CAAI,CAAC,CACzD,EAEJ,KAAKuS,EAAa,MACd,OAAO,SAAevS,EAAiB,CACnC,IAAMW,EAASsV,EAAQ,UAAUjW,CAAI,EACrC,OAAOW,GAAU,MAAQsV,EAAQ,MAAMtV,CAAM,GAAKE,EAAKF,CAAM,CACjE,EAEJ,KAAK4R,EAAa,QACd,OAAO,SAAiBvS,EAAiB,CACrC,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EAEzC,QAASoC,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACtC,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAClC,GAAIrB,EAAQ,MAAMqB,CAAc,GAAKzW,EAAKyW,CAAc,EACpD,MAAO,GAIf,MAAO,EACX,EAEJ,KAAK/E,EAAa,SACd,OAAI0D,EAAQ,mBACD,SAAkBjW,EAAiB,CACtC,IAAMoZ,EAAWnD,EAAQ,mBAAoBjW,CAAI,EACjD,OAAOoZ,GAAY,MAAQvY,EAAKuY,CAAQ,CAC5C,EAGG,SAAkBpZ,EAAiB,CACtC,IAAMyI,EAAWwN,EAAQ,YAAYjW,CAAI,EACrCqZ,EAEJ,QAASjX,EAAI,EAAGA,EAAIqG,EAAS,OAAQrG,IAAK,CACtC,IAAMkV,EAAiB7O,EAASrG,CAAC,EACjC,GAAIgV,EAAOpX,EAAMsX,CAAc,EAAG,MAC9BrB,EAAQ,MAAMqB,CAAc,IAC5B+B,EAAc/B,GAItB,MAAO,CAAC,CAAC+B,GAAexY,EAAKwY,CAAW,CAC5C,EAEJ,KAAK9G,EAAa,UAAW,CACzB,GAAIO,EAAS,WAAa,MAAQA,EAAS,YAAc,IACrD,MAAM,IAAI,MACN,oEAAoE,EAI5E,OAAOjS,GAGnB,CX5KM,SAAU+V,GACZ9D,EACAnW,EACA0P,EAAuB,CAEvB,IAAMxL,EAAOyY,GAAcxG,EAAUnW,EAAS0P,CAAO,EACrD,OAAO4L,GAAYpX,EAAMlE,EAAQ,OAAO,CAC5C,CAEM,SAAU2c,GACZxG,EACAnW,EACA0P,EAAuB,CAEvB,IAAMgJ,EAAQ,OAAOvC,GAAa,SAAWS,GAAMT,CAAQ,EAAIA,EAC/D,OAAOuF,GAAgChD,EAAO1Y,EAAS0P,CAAO,CAClE,CAEA,SAASkN,GAAoBC,EAAmB,CAC5C,OACIA,EAAE,OAASjH,EAAa,SACvBiH,EAAE,OAAS,SACP,MAAM,QAAQA,EAAE,IAAI,GACjBA,EAAE,KAAK,KAAMvY,GAASA,EAAK,KAAKsY,EAAmB,CAAC,EAEpE,CAEA,IAAME,GAA6B,CAAE,KAAMlH,EAAa,UAAU,EAC5DmH,GAA8C,CAChD,KAAM,uBAEJC,GAAwB,CAC1B,KAAMpH,EAAa,OACnB,KAAM,QACN,KAAM,MAOV,SAASqH,GACLvE,EACA,CAAE,QAAAY,CAAO,EACT5J,EAAgB,CAGhB,IAAMwN,EAAa,CAAC,CAACxN,GAAS,MAAOyN,GAAK,CACtC,IAAMnZ,EAASsV,EAAQ,MAAM6D,CAAC,GAAK7D,EAAQ,UAAU6D,CAAC,EACtD,OAAOA,IAAM9B,IAAwBrX,GAAUsV,EAAQ,MAAMtV,CAAM,CACvE,CAAC,EAED,QAAW6Y,KAAKnE,EAAO,CACnB,GACI,EAAAmE,EAAE,OAAS,GACX3G,GAAY2G,EAAE,CAAC,CAAC,GAChBA,EAAE,CAAC,EAAE,OAASjH,EAAa,YAGxB,GAAIsH,GAAc,CAACL,EAAE,KAAKD,EAAmB,EAChDC,EAAE,QAAQC,EAAgB,MAE1B,UAGJD,EAAE,QAAQG,EAAW,EAE7B,CAEM,SAAUtB,GACZhD,EACA1Y,EACA0P,EAAuB,OAEvBgJ,EAAM,QAAQC,EAAS,EAEvBjJ,GAAU/K,EAAA3E,EAAQ,WAAO,MAAA2E,IAAA,OAAAA,EAAI+K,EAC7B,IAAM0N,EAAiB,MAAM,QAAQ1N,CAAO,EAEtC2N,EACF3N,IAAY,MAAM,QAAQA,CAAO,EAAIA,EAAU,CAACA,CAAO,GAG3D,GAAI1P,EAAQ,mBAAqB,GAC7Bid,GAAWvE,EAAO1Y,EAASqd,CAAY,UAChC3E,EAAM,KAAMmE,GAAMA,EAAE,OAAS,GAAK3G,GAAY2G,EAAE,CAAC,CAAC,CAAC,EAC1D,MAAM,IAAI,MACN,mFAAmF,EAI3F,IAAId,EAAyB,GAEvBuB,EAAQ5E,EACT,IAAK6E,GAAS,CACX,GAAIA,EAAM,QAAU,EAAG,CACnB,GAAM,CAACzI,EAAO0I,CAAM,EAAID,EAGpBzI,EAAM,OAASc,EAAa,QAC5Bd,EAAM,OAAS,UAIfsI,GACAI,EAAO,OAAS5H,EAAa,WAE7B2H,EAAM,CAAC,EAAIR,IAEXS,EAAO,OAAS5H,EAAa,UAC7B4H,EAAO,OAAS5H,EAAa,WAE7BmG,EAAyB,KAIjC,OAAO0B,GACHF,EACAvd,EACAqd,CAAY,CAEpB,CAAC,EACA,OAAOK,GAAa,GAAAnE,QAAS,SAAS,EAE3C,OAAA+D,EAAM,uBAAyBvB,EAExBuB,CACX,CAEA,SAASG,GACLF,EACAvd,EACA0P,EAAgB,OAEhB,OAAO6N,EAAM,OACT,CAACd,EAAUjC,IACPiC,IAAa,GAAAlD,QAAS,UAChB,GAAAA,QAAS,UACTgD,GACIE,EACAjC,EACAxa,EACA0P,EACAgM,EAAY,GAE1B/W,EAAA3E,EAAQ,YAAQ,MAAA2E,IAAA,OAAAA,EAAI,GAAA4U,QAAS,QAAQ,CAE7C,CAEA,SAASmE,GACL7Q,EACAC,EAA6B,CAE7B,OAAIA,IAAM,GAAAyM,QAAS,WAAa1M,IAAM,GAAA0M,QAAS,SACpC1M,EAEPA,IAAM,GAAA0M,QAAS,WAAazM,IAAM,GAAAyM,QAAS,SACpCzM,EAGJ,SAAiBzJ,EAAI,CACxB,OAAOwJ,EAAExJ,CAAI,GAAKyJ,EAAEzJ,CAAI,CAC5B,CACJ,CDjKA,IAAMsa,GAAgB,CAAO9Q,EAASC,IAAYD,IAAMC,EAClD8Q,GAAqE,CACvE,QAASld,GACT,OAAQid,IAGZ,SAASE,GACL7d,EAAoC,aAMpC,IAAM+K,EAAmC/K,GAAW4d,GAEpD,OAAAjZ,EAAAoG,EAAK,WAAO,MAAApG,IAAA,SAAZoG,EAAK,QAAYrK,KAEjBsE,EAAA+F,EAAK,UAAM,MAAA/F,IAAA,SAAX+F,EAAK,QAAW+S,GAAAC,EAAAhT,EAAK,WAAO,MAAAgT,IAAA,OAAA,OAAAA,EAAE,UAAM,MAAAD,IAAA,OAAAA,EAAIH,IAEjC5S,CACX,CAEA,SAASiT,GACLtD,EAIqB,CAErB,OAAO,SACHvE,EACAnW,EACA0P,EAAuB,CAEvB,IAAM3E,EAAO8S,GAAqB7d,CAAO,EAEzC,OAAO0a,EAAKvE,EAAUpL,EAAM2E,CAAO,CACvC,CACJ,CAKO,IAAMuK,GAAU+D,GAAY/D,EAAU,EAChCgE,GAAiBD,GAAYrB,EAAa,EAC1CuB,GAAgBF,GAAYtC,EAAY,EAErD,SAASyC,GACLC,EAIM,CAEN,OAAO,SACHd,EACA9N,EACAxP,EAAoC,CAEpC,IAAM+K,EAAO8S,GAAqB7d,CAAO,EAErC,OAAOsd,GAAU,aACjBA,EAAQX,GAAiCW,EAAOvS,EAAMyE,CAAQ,GAGlE,IAAM6O,EAAmBC,GACrB9O,EACAzE,EAAK,QACLuS,EAAM,sBAAsB,EAEhC,OAAOc,EAAWd,EAAOe,EAAkBtT,CAAI,CACnD,CACJ,CAEM,SAAUuT,GACZ7O,EACA6J,EACAyC,EAAyB,GAAK,CAM9B,OAAIA,IACAtM,EAAQ8O,GAAmB9O,EAAO6J,CAAO,GAGtC,MAAM,QAAQ7J,CAAK,EACpB6J,EAAQ,cAAc7J,CAAK,EAC3B6J,EAAQ,YAAY7J,CAAK,CACnC,CAEA,SAAS8O,GACLlb,EACAiW,EAAmC,CAGnC,IAAM7J,EAAQ,MAAM,QAAQpM,CAAI,EAAIA,EAAK,MAAM,CAAC,EAAI,CAACA,CAAI,EACnDmb,EAAc/O,EAAM,OAE1B,QAAShK,EAAI,EAAGA,EAAI+Y,EAAa/Y,IAAK,CAClC,IAAMgZ,EAAelD,GAAgB9L,EAAMhK,CAAC,EAAG6T,CAAO,EACtD7J,EAAM,KAAK,GAAGgP,CAAY,EAE9B,OAAOhP,CACX,CAYO,IAAMiP,GAAYP,GACrB,CACIb,EACA7N,EACAzP,IAEAsd,IAAU,GAAA/D,QAAS,WAAa,CAAC9J,GAASA,EAAM,SAAW,EACrD,CAAA,EACAzP,EAAQ,QAAQ,QAAQsd,EAAO7N,CAAK,CAAC,EAYtCkP,GAAYR,GACrB,CACIb,EACA7N,EACAzP,IAEAsd,IAAU,GAAA/D,QAAS,WAAa,CAAC9J,GAASA,EAAM,SAAW,EACrD,KACAzP,EAAQ,QAAQ,QAAQsd,EAAO7N,CAAK,CAAC,EajKnD,IAAA8J,GAA0B,WCKnB,IAAMqF,GAA2B,IAAI,IAAY,CACpD,QACA,OACA,KACA,KACA,MACA,KACA,OACA,MACH,EAOK,SAAUC,GAASjD,EAAW,CAChC,OAAIA,EAAE,OAAS,SAAiB,GAC5BgD,GAAY,IAAIhD,EAAE,IAAI,EAAU,GAChCA,EAAE,OAAS,OAAS,MAAM,QAAQA,EAAE,IAAI,EAEjCA,EAAE,KAAK,KAAMA,GAAMA,EAAE,KAAKiD,EAAQ,CAAC,EAGvC,EACX,CAEM,SAAUC,GACZ9d,EACAsD,EACAya,EAAiB,CAEjB,IAAMC,EAAM1a,GAAQ,KAAO,SAASA,EAAM,EAAE,EAAI,IAEhD,OAAQtD,EAAQ,CACZ,IAAK,QACD,MAAO,GACX,IAAK,MACL,IAAK,KACD,OAAO,SAASge,CAAG,EAAKA,GAAO,EAAIA,EAAM,EAAI,IAAY,EAC7D,IAAK,KACD,OAAO,SAASA,CAAG,EACbA,GAAO,EACH,KAAK,IAAIA,EAAKD,CAAS,EACvB,IACJ,EACV,IAAK,KACD,OAAO,SAASC,CAAG,EAAI,IAAW,EACtC,IAAK,MACD,MAAO,GAAID,EACf,IAAK,OACD,MAAO,GAAIA,EAAY,EAC3B,IAAK,OACL,IAAK,MACD,MAAO,KAEnB,CChEM,SAAUE,GAAgBha,EAAa,CACzC,KAAOA,EAAK,QAAQA,EAAOA,EAAK,OAChC,OAAOA,CACX,CAEM,SAAUia,GACZC,EAAuB,CAEvB,IAAMC,EAAkC,CAAA,EAClCC,EAA+B,CAAA,EAErC,QAAWlJ,KAAYgJ,EACfhJ,EAAS,KAAK0I,EAAQ,EACtBO,EAAkB,KAAKjJ,CAAQ,EAE/BkJ,EAAe,KAAKlJ,CAAQ,EAIpC,MAAO,CAACkJ,EAAgBD,CAAiB,CAC7C,CFJA,IAAME,GAA+B,CACjC,KAAM1J,EAAa,UACnB,UAAW,MAET2J,GAAyB,CAC3B,KAAM3J,EAAa,OACnB,KAAM,QACN,KAAM,MAQJ,SAAUX,GACZlP,EACAoQ,EACAnW,EAAmB,CAAA,EAAE,CAErB,OAAOwf,GAAK,CAACzZ,CAAO,EAAGoQ,EAAUnW,CAAO,CAC5C,CAEM,SAAUwf,GACZhQ,EACA2G,EACAnW,EAAmB,CAAA,EAAE,CAErB,GAAI,OAAOmW,GAAa,WAAY,OAAO3G,EAAS,KAAK2G,CAAQ,EAEjE,GAAM,CAACsJ,EAAOC,CAAQ,EAAIR,GAAetI,GAAMT,CAAQ,CAAC,EAExD,OACKsJ,EAAM,OAAS,GAAKjQ,EAAS,KAAK0O,GAAauB,EAAOzf,CAAO,CAAC,GAC/D0f,EAAS,KACJC,GAAQC,GAAiBD,EAAKnQ,EAAUxP,CAAO,EAAE,OAAS,CAAC,CAGxE,CAEA,SAAS6f,GACL7e,EACAyO,EACAnL,EACAtE,EAAgB,CAEhB,IAAMgf,EAAM,OAAO1a,GAAS,SAAW,SAASA,EAAM,EAAE,EAAI,IAE5D,OAAQtD,EAAQ,CACZ,IAAK,QACL,IAAK,KAED,OAAOyO,EACX,IAAK,OACD,OAAOA,EAAM,OAAS,EAAI,CAACA,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAIA,EAC1D,IAAK,MACL,IAAK,KACD,OAAO,SAASuP,CAAG,GAAK,KAAK,IAAIA,CAAG,EAAIvP,EAAM,OACxC,CAACuP,EAAM,EAAIvP,EAAMA,EAAM,OAASuP,CAAG,EAAIvP,EAAMuP,CAAG,CAAC,EACjD,CAAA,EACV,IAAK,KACD,OAAO,SAASA,CAAG,EAAIvP,EAAM,MAAMuP,EAAM,CAAC,EAAI,CAAA,EAClD,IAAK,OACD,OAAOvP,EAAM,OAAO,CAACoB,EAAG,IAAM,EAAI,IAAM,CAAC,EAC7C,IAAK,MACD,OAAOpB,EAAM,OAAO,CAACoB,EAAG,IAAM,EAAI,IAAM,CAAC,EAC7C,IAAK,MAAO,CACR,IAAM6O,EAAW,IAAI,IACjBI,GAAaxb,EAAsBmL,EAAOzP,CAAO,CAAC,EAGtD,OAAOyP,EAAM,OAAQ0N,GAAM,CAACuC,EAAS,IAAIvC,CAAC,CAAC,GAGvD,CAEM,SAAUnc,GACZmV,EACA3G,EACAxP,EAAmB,CAAA,EAAE,CAErB,OAAO8f,GAAalJ,GAAMT,CAAQ,EAAG3G,EAAUxP,CAAO,CAC1D,CAWA,SAAS8f,GACL3J,EACA3G,EACAxP,EAAgB,CAEhB,GAAIwP,EAAS,SAAW,EAAG,MAAO,CAAA,EAElC,GAAM,CAAC6P,EAAgBD,CAAiB,EAAIF,GAAe/I,CAAQ,EAC/D4J,EAEJ,GAAIV,EAAe,OAAQ,CACvB,IAAMK,EAAWM,GAAexQ,EAAU6P,EAAgBrf,CAAO,EAGjE,GAAIof,EAAkB,SAAW,EAC7B,OAAOM,EAIPA,EAAS,SACTK,EAAQ,IAAI,IAAIL,CAAQ,GAIhC,QACQ,EAAI,EACR,EAAIN,EAAkB,QAAUW,GAAO,OAASvQ,EAAS,OACzD,IACF,CACE,IAAMyQ,EAAmBb,EAAkB,CAAC,EAK5C,IAJgBW,EACVvQ,EAAS,OAAQ2N,GAAe3a,EAAM2a,CAAC,GAAK,CAAC4C,EAAO,IAAI5C,CAAC,CAAC,EAC1D3N,GAEM,SAAW,EAAG,MAC1B,IAAMkQ,EAAWE,GAAiBK,EAAkBzQ,EAAUxP,CAAO,EAErE,GAAI0f,EAAS,OACT,GAAKK,EAWDL,EAAS,QAAStO,GAAO2O,EAAO,IAAI3O,CAAE,CAAC,MAX/B,CAKR,GAAI,IAAMgO,EAAkB,OAAS,EACjC,OAAOM,EAGXK,EAAQ,IAAI,IAAIL,CAAQ,GAOpC,OAAO,OAAOK,EAAU,IAChBA,EAAM,OAASvQ,EAAS,OACpBA,EAEAA,EAAS,OAAQ4B,GACZ2O,EAAuB,IAAI3O,CAAE,CAAC,EAEzC,CAAA,CACV,CAEA,SAASwO,GACLzJ,EACA3G,EACAxP,EAAgB,OAEhB,GAAImW,EAAS,KAAKD,EAAW,EAAG,CAK5B,IAAM3V,GAAOoE,EAAA3E,EAAQ,QAAI,MAAA2E,IAAA,OAAAA,EAAIsa,GAAgBzP,EAAS,CAAC,CAAC,EAClDzE,EAAO,CAAE,GAAG/K,EAAS,QAASwP,EAAU,iBAAkB,EAAK,EACrE,OAAA2G,EAAS,KAAKoJ,EAAY,EACnBW,GAAmB3f,EAAM4V,EAAUpL,EAAM,GAAMyE,EAAS,MAAM,EAGzE,OAAO0Q,GACH1Q,EACA2G,EACAnW,EACA,GACAwP,EAAS,MAAM,CAEvB,CAEM,SAAU2Q,GACZhK,EACA5V,EACAP,EAAmB,CAAA,EACnBqM,EAAQ,IAAQ,CAEhB,GAAI,OAAO8J,GAAa,WACpB,OAAOlV,GAAKV,EAAM4V,CAAQ,EAG9B,GAAM,CAACsJ,EAAOC,CAAQ,EAAIR,GAAetI,GAAMT,CAAQ,CAAC,EAElDiK,EAAuBV,EAAS,IAAKC,GACvCO,GAAmB3f,EAAMof,EAAK3f,EAAS,GAAMqM,CAAK,CAAC,EAQvD,OAJIoT,EAAM,QACNW,EAAQ,KAAKC,GAAa9f,EAAMkf,EAAOzf,EAASqM,CAAK,CAAC,EAGtD+T,EAAQ,SAAW,EACZ,CAAA,EAIPA,EAAQ,SAAW,EACZA,EAAQ,CAAC,EAIJjd,GAAWid,EAAQ,OAAO,CAACvT,EAAGC,IAAM,CAAC,GAAGD,EAAG,GAAGC,CAAC,CAAC,CAAC,CACrE,CASA,SAASoT,GACL3f,EACA4V,EACAnW,EACAsgB,EACAC,EAAkB,CAElB,IAAMC,EAAcrK,EAAS,UAAU0I,EAAQ,EACzC4B,EAAMtK,EAAS,MAAM,EAAGqK,CAAW,EACnCxf,EAASmV,EAASqK,CAAW,EAE7BzB,EACF5I,EAAS,OAAS,IAAMqK,EAAcD,EAAa,IAMjDlU,EAAQyS,GAAS9d,EAAO,KAAMA,EAAO,KAAM+d,CAAS,EAE1D,GAAI1S,IAAU,EAAG,MAAO,CAAA,EAexB,IAAMoD,GARFgR,EAAI,SAAW,GAAK,CAAC,MAAM,QAAQlgB,CAAI,EACxBe,GAAYf,CAAI,EAAE,OAAgBiC,CAAK,EAChDie,EAAI,SAAW,GACd,MAAM,QAAQlgB,CAAI,EAAIA,EAAO,CAACA,CAAI,GAAG,OAAgBiC,CAAK,EAC3D8d,GAAoBG,EAAI,KAAKvK,EAAW,EACxCmK,GAAa9f,EAAM,CAACkgB,CAAG,EAAGzgB,EAASqM,CAAK,EACxC2T,GAAezf,EAAM,CAACkgB,CAAG,EAAGzgB,CAAO,GAElB,MAAM,EAAGqM,CAAK,EAErClH,EAAS0a,GAAiB7e,EAAO,KAAMyO,EAAOzO,EAAO,KAAMhB,CAAO,EAEtE,GAAImF,EAAO,SAAW,GAAKgR,EAAS,SAAWqK,EAAc,EACzD,OAAOrb,EAGX,IAAMub,EAAoBvK,EAAS,MAAMqK,EAAc,CAAC,EAClDG,EAAwBD,EAAkB,KAAKxK,EAAW,EAEhE,GAAIyK,EAAuB,CACvB,GAAIzK,GAAYwK,EAAkB,CAAC,CAAC,EAAG,CACnC,GAAM,CAAE,KAAA3b,CAAI,EAAK2b,EAAkB,CAAC,GAGhC3b,IAAS6Q,EAAa,SACtB7Q,IAAS6Q,EAAa,YAGtBzQ,EAASmZ,GAAenZ,EAAQzE,GAAU,EAAI,GAIlDggB,EAAkB,QAAQpB,EAAkB,EAGhDtf,EAAU,CACN,GAAGA,EAEH,iBAAkB,GAKlB,SAAWoR,GAAgBjM,EAAO,SAASiM,CAAE,QAE1CpR,EAAQ,UAAYA,EAAQ,WAAsB,cACzDA,EAAU,CAAE,GAAGA,EAAS,SAAmB,WAAQ,GAUvD,OAAO0gB,EAAkB,KAAK7B,EAAQ,EAChCqB,GACI/a,EACAub,EACA1gB,EACA,GACAugB,CAAU,EAEdI,EAEAN,GAAalb,EAAQ,CAACub,CAAiB,EAAG1gB,EAASugB,CAAU,EAE7DP,GAAe7a,EAAQ,CAACub,CAAiB,EAAG1gB,CAAO,CAC7D,CAOA,SAASqgB,GACL9f,EACAof,EACA3f,EACAqM,EAAa,CAEb,IAAMiR,EAAuBY,GACzByB,EACA3f,EACAO,CAAI,EAGR,OAAOU,GAAKV,EAAM+c,EAAOjR,CAAK,CAClC,CAEA,SAASpL,GACLV,EACA+c,EACAjR,EAAQ,IAAQ,CAEhB,IAAMoD,EAAQ6O,GACV/d,EACAG,GACA4c,EAAM,sBAAsB,EAGhC,OAAgBrc,GACXgE,GAA2BzC,EAAMyC,CAAI,GAAKqY,EAAMrY,CAAI,EACrDwK,EACA,GACApD,CAAK,CAEb,CAEA,SAAS2T,GACLxQ,EACAmQ,EACA3f,EAAgB,CAEhB,IAAM4gB,GAAO,MAAM,QAAQpR,CAAQ,EAAIA,EAAW,CAACA,CAAQ,GAAG,OACjDhN,CAAK,EAGlB,GAAIoe,EAAI,SAAW,EAAG,OAAOA,EAE7B,IAAMtD,EAAQY,GAA+ByB,EAAK3f,CAAO,EACzD,OAAOsd,IAAmB,YAAWsD,EAAMA,EAAI,OAAOtD,CAAK,CAC/D,ChBhXA,IAAMuD,GAAoB,WAoBpB,SAAU5f,GAEd6f,EAAwD,OAExD,GAAI,CAACA,EACH,OAAO,KAAK,MAAM,CAAA,CAAE,EAGtB,IAAMpR,EAAqB,KAAK,QAAO,EAEvC,GAAI,OAAOoR,GAAuB,SAAU,CAC1C,IAAMC,EAAWrQ,EAAUoQ,CAAkB,EACzCA,EAAmB,QAAO,EAC1B,CAACA,CAAkB,EAEvB,OAAO,KAAK,MACVC,EAAS,OAAQ1d,GAASqM,EAAQ,KAAMzK,GAAS9E,GAAS8E,EAAM5B,CAAI,CAAC,CAAC,CAAC,EAI3E,IAAMoM,EAAQoR,GAAkB,KAAKC,CAAkB,EACnDpR,EACA,KAAK,SAAQ,EAAG,QAAO,EAErB1P,EAAU,CACd,QAAA0P,EACA,MAAM/K,EAAA,KAAK,SAAK,MAAAA,IAAA,OAAA,OAAAA,EAAG,CAAC,EAGpB,QAAS,KAAK,QAAQ,QACtB,cAAe,KAAK,QAAQ,cAC5B,wBAAyB,KAAK,QAAQ,wBACtC,QAAS,KAAK,QAAQ,QACtB,WAAY,KAAK,QAAQ,YAG3B,OAAO,KAAK,MAAawb,GAAOW,EAAoBrR,EAAOzP,CAAO,CAAC,CACrE,CAUA,SAASghB,GACPC,EAA0E,CAE1E,OAAO,SACL/P,KACGgQ,EAA4C,CAE/C,OAAO,SAEL/K,EAAmC,OAEnC,IAAIgL,EAAqBF,EAAS/P,EAAI,IAAI,EAE1C,OAAIiF,IACFgL,EAAUtM,GACRsM,EACAhL,EACA,KAAK,QAAQ,SACbxR,EAAA,KAAK,SAAK,MAAAA,IAAA,OAAA,OAAAA,EAAG,CAAC,CAAC,GAIZ,KAAK,MAEV,KAAK,OAAS,GAAKwc,EAAQ,OAAS,EAChCD,EAAQ,OAAO,CAACzR,EAAOyB,IAAOA,EAAGzB,CAAK,EAAG0R,CAAO,EAChDA,CAAO,CAEf,CACF,CACF,CAGA,IAAMC,GAAWJ,GAAY,CAAC9P,EAAkCzB,IAAS,CACvE,IAAMjH,EAAmB,CAAA,EAEzB,QAAS/C,EAAI,EAAGA,EAAIgK,EAAM,OAAQhK,IAAK,CACrC,IAAMsD,EAAQmI,EAAGzB,EAAMhK,CAAC,CAAC,EACzB+C,EAAI,KAAKO,CAAK,EAGhB,OAAO,IAAI,MAAK,EAAY,OAAO,GAAGP,CAAG,CAC3C,CAAC,EAGK6Y,GAAiBL,GACrB,CAAC9P,EAAuCzB,IAAS,CAC/C,IAAMjH,EAAiB,CAAA,EAEvB,QAAS/C,EAAI,EAAGA,EAAIgK,EAAM,OAAQhK,IAAK,CACrC,IAAMsD,EAAQmI,EAAGzB,EAAMhK,CAAC,CAAC,EACrBsD,IAAU,MACZP,EAAI,KAAKO,CAAK,EAGlB,OAAOP,CACT,CAAC,EAQH,SAAS8Y,GACPC,KACGL,EAA4C,CAG/C,IAAIM,EAAwD,KAEtDC,EAAeT,GACnB,CAACO,EAA6C9R,IAAS,CACrD,IAAM0R,EAAqB,CAAA,EAE3B,OAAAnQ,EAAQvB,EAAQpM,GAAQ,CACtB,QAASa,GAAOA,EAAOqd,EAASle,CAAI,IAE9B,CAAAme,IAAUtd,EAAMid,EAAQ,MAAM,EAFI9d,EAAOa,EAG7Cid,EAAQ,KAAKjd,CAAI,CAErB,CAAC,EAEMid,CACT,CAAC,EACDI,EAAU,GAAGL,CAAO,EAEtB,OAAO,SAEL/K,EACAuL,EAAyC,CAGzCF,EACE,OAAOrL,GAAa,SACf9S,GAAyB4R,GAAG5R,EAAM8S,EAAU,KAAK,OAAO,EACzDA,EACAwL,GAAYxL,CAAQ,EACpB,KAEN,IAAM3N,EAAMiZ,EAAa,KAAK,KAAMC,CAAc,EAGlD,OAAAF,EAAU,KAEHhZ,CACT,CACF,CAEA,SAASoZ,GAAqCnS,EAAU,CACtD,OAAO,MAAM,KAAK,IAAI,IAAOA,CAAK,CAAC,CACrC,CAkBO,IAAMzL,GAASqd,GACpB,CAAC,CAAE,OAAArd,CAAM,IAAQA,GAAU,CAACzB,EAAWyB,CAAM,EAAKA,EAAqB,KACvE4d,EAAiB,EAqBNtM,GAAU8L,GACpB/d,GAAQ,CACP,IAAM8d,EAAU,CAAA,EAChB,KAAO9d,EAAK,QAAU,CAACd,EAAWc,EAAK,MAAM,GAC3C8d,EAAQ,KAAK9d,EAAK,MAAiB,EACnCA,EAAOA,EAAK,OAEd,OAAO8d,CACT,EACAhe,GACCsM,GAAUA,EAAM,QAAO,CAAE,EAoBf8F,GAAe+L,GAC1B,CAAC,CAAE,OAAAtd,CAAM,IAAQA,GAAU,CAACzB,EAAWyB,CAAM,EAAKA,EAAqB,KACvEb,GACCsM,GAAUA,EAAM,QAAO,CAAE,EA4BtB,SAAUiF,GAEdyB,EAAmC,OAEnC,IAAM0L,EAAiB,CAAA,EAEvB,GAAI,CAAC1L,EACH,OAAO,KAAK,MAAM0L,CAAG,EAGvB,IAAMC,EAAa,CACjB,QAAS,KAAK,QAAQ,QACtB,MAAMnd,EAAA,KAAK,SAAK,MAAAA,IAAA,OAAA,OAAAA,EAAG,CAAC,GAGhBod,EACJ,OAAO5L,GAAa,SACf9S,GAAyB4R,GAAG5R,EAAM8S,EAAU2L,CAAU,EACvDH,GAAYxL,CAAQ,EAE1B,OAAAnF,EAAQ,KAAO3N,GAAwB,CACrC,KAAOA,GAAQb,EAAMa,CAAI,GAAG,CAC1B,GAAI0e,EAAS1e,EAAM,CAAC,EAAG,CAEhBwe,EAAI,SAASxe,CAAI,GACpBwe,EAAI,KAAKxe,CAAI,EAEf,MAEFA,EAAOA,EAAK,OAEhB,CAAC,EAEM,KAAK,MAAMwe,CAAG,CACvB,CAiBO,IAAM3d,GAAOmd,GAAgBhe,GAASX,GAAmBW,CAAI,CAAC,EAoBxD8R,GAAUiM,GAAU/d,GAAQ,CACvC,IAAM8d,EAAU,CAAA,EAChB,KAAO9d,EAAK,MACVA,EAAOA,EAAK,KACRb,EAAMa,CAAI,GAAG8d,EAAQ,KAAK9d,CAAI,EAEpC,OAAO8d,CACT,EAAGS,EAAiB,EAmBPxM,GAAYkM,GACtBlQ,GAAO1O,GAAmB0O,CAAE,EAC7BwQ,EAAiB,EAmBN3d,GAAOod,GAAgBhe,GAASR,GAAmBQ,CAAI,CAAC,EAqBxDmS,GAAU4L,GAAU/d,GAAQ,CACvC,IAAM8d,EAAU,CAAA,EAChB,KAAO9d,EAAK,MACVA,EAAOA,EAAK,KACRb,EAAMa,CAAI,GAAG8d,EAAQ,KAAK9d,CAAI,EAEpC,OAAO8d,CACT,EAAGS,EAAiB,EAmBPnM,GAAY6L,GACtBlQ,GAAOvO,GAAmBuO,CAAE,EAC7BwQ,EAAiB,EAsBN9V,GAAWsV,GACrB/d,GACCrB,GAAYqB,CAAI,EAAE,OAAQ+N,GAAsB5O,EAAM4O,CAAE,GAAKA,IAAO/N,CAAI,EAC1EF,EAAU,EAqBCuB,GAAW0c,GACrB/d,GAAS/B,GAAY+B,CAAI,EAAE,OAAOb,CAAK,EACxCof,EAAiB,EAkBb,SAAUjjB,IAAQ,CAGtB,IAAM8Q,EAAQ,KAAK,QAAO,EAAG,OAC3B,CAACuS,EAAU3e,IACTlB,EAAYkB,CAAI,EAAI2e,EAAS,OAAO3e,EAAK,QAAQ,EAAI2e,EACvD,CAAA,CAAE,EAEJ,OAAO,KAAK,MAAMvS,CAAK,CACzB,CA2BM,SAAUkF,GAEdzD,EAAiD,CAEjD,IAAIzL,EAAI,EACFkD,EAAM,KAAK,OACjB,KAAOlD,EAAIkD,GAAOuI,EAAG,KAAK,KAAKzL,CAAC,EAAGA,EAAG,KAAKA,CAAC,CAAC,IAAM,IAAO,EAAEA,EAC5D,OAAO,IACT,CA4BM,SAAUyE,GAEdgH,EAA6D,CAE7D,IAAIzB,EAAa,CAAA,EACjB,QAAShK,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAM2L,EAAK,KAAK3L,CAAC,EACXgF,EAAMyG,EAAG,KAAKE,EAAI3L,EAAG2L,CAAE,EACzB3G,GAAO,OACTgF,EAAQA,EAAM,OAAOhF,CAAG,GAG5B,OAAO,KAAK,MAAMgF,CAAK,CACzB,CAQA,SAASkS,GACP5X,EAAyC,CAEzC,OAAI,OAAOA,GAAU,WACZ,CAACqH,EAAI3L,IAAOsE,EAA4B,KAAKqH,EAAI3L,EAAG2L,CAAE,EAE3DV,EAAa3G,CAAK,EACZqH,GAAO,MAAM,UAAU,SAAS,KAAKrH,EAAOqH,CAAE,EAEjD,SAAUA,EAAE,CACjB,OAAOrH,IAAUqH,CACnB,CACF,CAqEM,SAAUpQ,GAEd+I,EAAyB,OAEzB,OAAO,KAAK,MACV8K,GAAY,KAAK,QAAO,EAAI9K,EAAO,KAAK,QAAQ,SAASpF,EAAA,KAAK,SAAK,MAAAA,IAAA,OAAA,OAAAA,EAAG,CAAC,CAAC,CAAC,CAE7E,CAEM,SAAUkQ,GACd1J,EACApB,EACAiI,EACAzR,EAAe,CAEf,OAAO,OAAOwJ,GAAU,SACb/I,GAAO+I,EAAOoB,EAA+B,CAAE,QAAA6G,EAAS,KAAAzR,CAAI,CAAE,EACrE4K,EAAM,OAAOwW,GAAe5X,CAAK,CAAC,CACxC,CAcM,SAAUkL,GAEdkB,EAA6B,CAE7B,IAAMhL,EAAQ,KAAK,QAAO,EAC1B,OAAO,OAAOgL,GAAa,SAChBqJ,GACJrU,EAA+B,OAAO3I,CAAK,EAC5C2T,EACA,KAAK,OAAO,EAEdA,EACAhL,EAAM,KAAKwW,GAAexL,CAAQ,CAAC,EACnC,EACN,CAmCM,SAAUd,GAEdtL,EAAyB,CAEzB,IAAIoB,EAAQ,KAAK,QAAO,EAExB,GAAI,OAAOpB,GAAU,SAAU,CAC7B,IAAMyX,EAAU,IAAI,IAAoBxgB,GAAO+I,EAAOoB,EAAO,KAAK,OAAO,CAAC,EAC1EA,EAAQA,EAAM,OAAQiG,GAAO,CAACoQ,EAAQ,IAAIpQ,CAAE,CAAC,MACxC,CACL,IAAM6Q,EAAWN,GAAY5X,CAAK,EAClCoB,EAAQA,EAAM,OAAO,CAACiG,EAAI3L,IAAM,CAACwc,EAAS7Q,EAAI3L,CAAC,CAAC,EAGlD,OAAO,KAAK,MAAM0F,CAAK,CACzB,CA0BM,SAAU6J,GAEd8L,EAAuD,CAEvD,OAAO,KAAK,OACV,OAAOA,GAAuB,SAE1B,QAAQA,CAAkB,IAC1B,CAACjQ,EAAGO,IAAO,KAAK,MAAMA,CAAE,EAAE,KAAK0P,CAAkB,EAAE,OAAS,CAAC,CAErE,CAgBM,SAAUhM,IAAK,CACnB,OAAO,KAAK,OAAS,EAAI,KAAK,MAAM,KAAK,CAAC,CAAC,EAAI,IACjD,CAgBM,SAAUI,IAAI,CAClB,OAAO,KAAK,OAAS,EAAI,KAAK,MAAM,KAAK,KAAK,OAAS,CAAC,CAAC,EAAI,IAC/D,CAqBM,SAAUN,GAAwBnP,EAAS,OAI/C,OAHAA,EAAI,CAACA,EAGDA,IAAM,GAAK,KAAK,QAAU,EAAU,MAEpCA,EAAI,IAAGA,EAAI,KAAK,OAASA,GACtB,KAAK,OAAMd,EAAA,KAAKc,CAAC,KAAC,MAAAd,IAAA,OAAAA,EAAI,CAAA,CAAE,EACjC,CAiCM,SAAUoQ,GAAyBtP,EAAU,CACjD,OAAIA,GAAK,KACA,KAAK,QAAO,EAEd,KAAKA,EAAI,EAAI,KAAK,OAASA,EAAIA,CAAC,CACzC,CAcM,SAAUkQ,IAAO,CACrB,OAAO,MAAM,UAAU,MAAM,KAAK,IAAI,CACxC,CAoBM,SAAU/L,GAEdsY,EAAsD,CAEtD,IAAIC,EACAC,EAEJ,OAAIF,GAAoB,MACtBC,EAAY,KAAK,OAAM,EAAG,SAAQ,EAClCC,EAAS,KAAK,CAAC,GACN,OAAOF,GAAqB,UACrCC,EAAY,KAAK,MAAeD,CAAgB,EAChDE,EAAS,KAAK,CAAC,IAGfD,EAAY,KACZC,EAAS1R,EAAUwR,CAAgB,EAC/BA,EAAiB,CAAC,EAClBA,GAGC,MAAM,UAAU,QAAQ,KAAKC,EAAWC,CAAM,CACvD,CAwBM,SAAU1M,GAEd/N,EACAC,EAAY,CAEZ,OAAO,KAAK,MAAM,MAAM,UAAU,MAAM,KAAK,KAAMD,EAAOC,CAAG,CAAC,CAChE,CAiBM,SAAUA,IAAG,OACjB,OAAOjD,EAAA,KAAK,cAAU,MAAAA,IAAA,OAAAA,EAAI,KAAK,MAAM,CAAA,CAAE,CACzC,CAkBM,SAAU6P,GAEd6N,EACA3S,EAA6B,CAE7B,IAAM4S,EAAY,KAAK,MAAMD,EAAO3S,CAAO,EACrC/Q,EAAWwE,GAAW,CAAC,GAAG,KAAK,IAAG,EAAI,GAAGmf,EAAU,IAAG,CAAE,CAAC,EAC/D,OAAO,KAAK,MAAM3jB,CAAQ,CAC5B,CAkBM,SAAU8V,GAEd0B,EAAiB,CAEjB,OAAO,KAAK,WACR,KAAK,IAAIA,EAAW,KAAK,WAAW,OAAOA,CAAQ,EAAI,KAAK,UAAU,EACtE,IACN,CmBjlCA,IAAAoM,GAAA,GAAAriB,GAAAqiB,GAAA,mBAAAC,GAAA,UAAAC,GAAA,WAAA7hB,GAAA,aAAA8hB,GAAA,WAAAC,GAAA,UAAAtd,GAAA,UAAAud,GAAA,SAAAxiB,GAAA,gBAAAyiB,GAAA,iBAAAC,GAAA,YAAAngB,GAAA,cAAAogB,GAAA,WAAAC,GAAA,gBAAAC,GAAA,SAAAziB,GAAA,aAAA0iB,GAAA,WAAAC,GAAA,SAAAzkB,GAAA,YAAA0kB,GAAA,cAAAC,KCeM,SAAUC,GACdzd,EAKa,CAWb,OAAO,SACL0d,EACAvjB,EACAuC,EACAmN,EAA0B,CAM1B,GAJI,OAAO,OAAW,KAAe,OAAO,SAAS6T,CAAO,IAC1DA,EAAUA,EAAQ,SAAQ,GAGxB,OAAOA,GAAY,SACrB,OAAO1d,EAAO0d,EAASvjB,EAASuC,EAAYmN,CAAO,EAGrD,IAAM5B,EAAMyV,EAEZ,GAAI,CAAC,MAAM,QAAQzV,CAAG,GAAKvL,EAAgBuL,CAAG,EAE5C,OAAOA,EAIT,IAAMvN,EAAO,IAAIqE,EAAS,CAAA,CAAE,EAG5B,OAAA4e,GAAO1V,EAAKvN,CAAI,EAETA,CACT,CACF,CASM,SAAUijB,GACdC,EACAzf,EAAyB,CAGzB,IAAMuF,EAAM,MAAM,QAAQka,CAAS,EAAIA,EAAY,CAACA,CAAS,EAGzDzf,EACFA,EAAO,SAAWuF,EAElBvF,EAAS,KAIX,QAASyB,EAAI,EAAGA,EAAI8D,EAAI,OAAQ9D,IAAK,CACnC,IAAMR,EAAOsE,EAAI9D,CAAC,EAGdR,EAAK,QAAUA,EAAK,OAAO,WAAasE,GAC1CzG,GAAcmC,CAAI,EAGhBjB,GACFiB,EAAK,KAAOsE,EAAI9D,EAAI,CAAC,GAAK,KAC1BR,EAAK,KAAOsE,EAAI9D,EAAI,CAAC,GAAK,MAE1BR,EAAK,KAAOA,EAAK,KAAO,KAG1BA,EAAK,OAASjB,EAGhB,OAAOA,CACT,CDjFM,SAAUwe,GAEdnf,EACAgC,EAAe,CAEf,OAAIhC,GAAQ,KACH,CAAA,EAELqN,EAAUrN,CAAI,EACTgC,EAAQ8L,GAAS9N,EAAK,IAAG,CAAE,EAAIA,EAAK,IAAG,EAE5C,MAAM,QAAQA,CAAI,EACbA,EAAK,OACV,CAAC2e,EAAU5Q,IAAO4Q,EAAS,OAAO,KAAK,cAAc5Q,EAAI/L,CAAK,CAAC,EAC/D,CAAA,CAAE,EAGF,OAAOhC,GAAS,SACX,KAAK,OAAOA,EAAM,KAAK,QAAS,GAAO,IAAI,EAAE,SAE/CgC,EAAQ8L,GAAS,CAAC9N,CAAI,CAAC,EAAI,CAACA,CAAI,CACzC,CAEA,SAASqgB,GACPC,EAIS,CAET,OAAO,YAEFlU,EAQ8B,CAEjC,IAAM3F,EAAU,KAAK,OAAS,EAE9B,OAAOkH,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CAC7B,GAAI,CAACtD,EAAYiP,CAAE,EAAG,OACtB,IAAMwS,EACJ,OAAOnU,EAAM,CAAC,GAAM,WAChBA,EAAM,CAAC,EAAE,KAAK2B,EAAI3L,EAAG,KAAK,QAAQ2L,EAAG,QAAQ,CAAC,EAC7C3B,EAEDJ,EAAM,KAAK,cAAcuU,EAAQne,EAAIqE,CAAO,EAClD6Z,EAAatU,EAAK+B,EAAG,SAAUA,CAAE,CACnC,CAAC,CACH,CACF,CAeA,SAASyS,GACP5S,EACA6S,EACAC,EACA/B,EACAhe,EAAkB,SAElB,IAAMggB,EAAwD,CAC5DF,EACAC,EACA,GAAG/B,GAEC/d,EAAO6f,IAAc,EAAI,KAAO7S,EAAM6S,EAAY,CAAC,EACnD5f,EACJ4f,EAAYC,GAAe9S,EAAM,OAC7B,KACAA,EAAM6S,EAAYC,CAAW,EAMnC,QAAS5W,EAAM,EAAGA,EAAM6U,EAAS,OAAQ,EAAE7U,EAAK,CAC9C,IAAMlI,EAAO+c,EAAS7U,CAAG,EACnB8W,EAAYhf,EAAK,OAEvB,GAAIgf,EAAW,CAEb,IAAMC,EADyBD,EAAU,SACb,QAAQhf,CAAI,EAEpCif,EAAU,KACZD,EAAU,SAAS,OAAOC,EAAS,CAAC,EAChClgB,IAAWigB,GAAaH,EAAYI,GACtCF,EAAW,CAAC,KAKlB/e,EAAK,OAASjB,EAEViB,EAAK,OACPA,EAAK,KAAK,MAAON,EAAAM,EAAK,QAAI,MAAAN,IAAA,OAAAA,EAAI,MAG5BM,EAAK,OACPA,EAAK,KAAK,MAAOD,EAAAC,EAAK,QAAI,MAAAD,IAAA,OAAAA,EAAI,MAGhCC,EAAK,KAAOkI,IAAQ,EAAIlJ,EAAO+d,EAAS7U,EAAM,CAAC,EAC/ClI,EAAK,KAAOkI,IAAQ6U,EAAS,OAAS,EAAI9d,EAAO8d,EAAS7U,EAAM,CAAC,EAGnE,OAAIlJ,IACFA,EAAK,KAAO+d,EAAS,CAAC,GAEpB9d,IACFA,EAAK,KAAO8d,EAASA,EAAS,OAAS,CAAC,GAEnC/Q,EAAM,OAAO,GAAG+S,CAAU,CACnC,CAuBM,SAAUtB,GAEdyB,EAAmC,CAInC,OAFqBzT,EAAUyT,CAAM,EAAIA,EAAS,KAAK,MAAMA,CAAM,GAEtD,OAAO,IAAI,EAEjB,IACT,CAuBM,SAAUpB,GAEdoB,EAAmC,CAInC,OAFsBzT,EAAUyT,CAAM,EAAIA,EAAS,KAAK,MAAMA,CAAM,GAEtD,QAAQ,IAAI,EAEnB,IACT,CAqBO,IAAMvjB,GAAS8iB,GAAQ,CAACrU,EAAK3K,EAAUV,IAAU,CACtD6f,GAAanf,EAAUA,EAAS,OAAQ,EAAG2K,EAAKrL,CAAM,CACxD,CAAC,EAqBYrB,GAAU+gB,GAAQ,CAACrU,EAAK3K,EAAUV,IAAU,CACvD6f,GAAanf,EAAU,EAAG,EAAG2K,EAAKrL,CAAM,CAC1C,CAAC,EAED,SAASogB,GACPC,EAIS,CAET,OAAO,SAELC,EAA+B,CAE/B,IAAMxa,EAAU,KAAK,OAAS,EACxBya,EAAa,KAAK,QAAO,EAAG,KAAI,EAEtC,QAAS9e,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAM2L,EAAK,KAAK3L,CAAC,EAEX/G,EACJ,OAAO4lB,GAAY,WACfA,EAAQ,KAAKlT,EAAI3L,EAAG2L,CAAE,EACtB,OAAOkT,GAAY,UAAY,CAAChT,GAAOgT,CAAO,EAC9CC,EAAW,KAAKD,CAAO,EAAE,MAAK,EAC9BA,EAEA,CAACE,CAAU,EAAI,KAAK,cAAc9lB,EAAM+G,EAAIqE,CAAO,EAEzD,GAAI,CAAC0a,GAAc,CAACriB,EAAYqiB,CAAU,EAAG,SAE7C,IAAIC,EAAmBD,EAMnB3Q,EAAI,EAER,KAAOA,EAAI4Q,EAAiB,SAAS,QAAQ,CAC3C,IAAMnf,EAAQmf,EAAiB,SAAS5Q,CAAC,EACrCrR,EAAM8C,CAAK,GACbmf,EAAmBnf,EACnBuO,EAAI,GAEJA,IAIJwQ,EAAOjT,EAAIqT,EAAkB,CAACD,CAAU,CAAC,EAG3C,OAAO,IACT,CACF,CA4CO,IAAM9lB,GAAO0lB,GAAM,CAAChT,EAAIqT,EAAkBD,IAAc,CAC7D,GAAM,CAAE,OAAAxgB,CAAM,EAAKoN,EAEnB,GAAI,CAACpN,EAAQ,OAEb,IAAM8H,EAAsB9H,EAAO,SAC7B4F,EAAQkC,EAAS,QAAQsF,CAAE,EAEjCoS,GAAU,CAACpS,CAAE,EAAGqT,CAAgB,EAMhCZ,GAAa/X,EAAUlC,EAAO,EAAG4a,EAAYxgB,CAAM,CACrD,CAAC,EA6CYqf,GAAYe,GAAM,CAAChT,EAAIqT,EAAkBD,IAAc,CAC7DriB,EAAYiP,CAAE,IACnBoS,GAAUpS,EAAG,SAAUqT,CAAgB,EACvCjB,GAAUgB,EAAYpT,CAAE,EAC1B,CAAC,EAwCK,SAAU+R,GAEdhN,EAAiB,CAEjB,YAAK,OAAOA,CAAQ,EACjB,IAAI,MAAM,EACV,KAAK,CAACtF,EAAGO,IAAM,CACd,KAAK,MAAMA,CAAE,EAAE,YAAYA,EAAG,QAAQ,CACxC,CAAC,EACI,IACT,CAqDM,SAAUgS,GAEdkB,EAAyB,CAEzB,IAAMlT,EAAK,KAAK,CAAC,EACjB,GAAIA,EAAI,CACN,IAAM1S,EAAyB,KAAK,MAClC,OAAO4lB,GAAY,WAAaA,EAAQ,KAAKlT,EAAI,EAAGA,CAAE,EAAIkT,CAAO,EACjE,aAAalT,CAAE,EAGbqT,EAEJ,QAAShf,EAAI,EAAGA,EAAI/G,EAAK,OAAQ+G,IAC3B/G,EAAK+G,CAAC,EAAE,OAAS,QAAOgf,EAAmB/lB,EAAK+G,CAAC,GAGvD,IAAIoO,EAAI,EAMR,KAAO4Q,GAAoB5Q,EAAI4Q,EAAiB,SAAS,QAAQ,CAC/D,IAAMnf,EAAQmf,EAAiB,SAAS5Q,CAAC,EACrCvO,EAAM,OAAS,OACjBmf,EAAmBnf,EACnBuO,EAAI,GAEJA,IAIA4Q,GAAkB,KAAK,MAAMA,CAAgB,EAAE,OAAO,IAAI,EAEhE,OAAO,IACT,CA0BM,SAAUhC,MAEXhT,EAE8B,CAEjC,IAAM3F,EAAU,KAAK,OAAS,EAE9B,OAAOkH,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CAC7B,GAAM,CAAE,OAAAzB,CAAM,EAAKoN,EACnB,GAAI,CAACjP,EAAYiP,CAAE,GAAK,CAACpN,EACvB,OAGF,IAAM8H,EAAsB9H,EAAO,SAC7B4F,EAAQkC,EAAS,QAAQsF,CAAE,EAIjC,GAAIxH,EAAQ,EAAG,OAEf,IAAMga,EACJ,OAAOnU,EAAM,CAAC,GAAM,WAChBA,EAAM,CAAC,EAAE,KAAK2B,EAAI3L,EAAG,KAAK,QAAQ2L,EAAG,QAAQ,CAAC,EAC7C3B,EAEDJ,EAAM,KAAK,cAAcuU,EAAQne,EAAIqE,CAAO,EAGlD+Z,GAAa/X,EAAUlC,EAAQ,EAAG,EAAGyF,EAAKrL,CAAM,CAClD,CAAC,CACH,CAyBM,SAAU6e,GAEdsB,EAAmC,CAE/B,OAAOA,GAAW,WACpBA,EAAS,KAAK,MAAeA,CAAM,GAGrC,KAAK,OAAM,EAEX,IAAMO,EAAc,CAAA,EAEpB,YAAK,cAAcP,CAAM,EAAE,QAAS/S,GAAM,CACxC,IAAMuT,EAAa,KAAK,MAAK,EAAG,QAAO,EACjC,CAAE,OAAA3gB,CAAM,EAAKoN,EACnB,GAAI,CAACpN,EACH,OAGF,IAAM8H,EAAsB9H,EAAO,SAC7B4F,EAAQkC,EAAS,QAAQsF,CAAE,EAI7BxH,EAAQ,IAGZia,GAAa/X,EAAUlC,EAAQ,EAAG,EAAG+a,EAAY3gB,CAAM,EACvD0gB,EAAO,KAAK,GAAGC,CAAU,EAC3B,CAAC,EAEM,KAAK,MAAMD,CAAM,CAC1B,CA0BM,SAAU/B,MAEXlT,EAE8B,CAEjC,IAAM3F,EAAU,KAAK,OAAS,EAE9B,OAAOkH,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CAC7B,GAAM,CAAE,OAAAzB,CAAM,EAAKoN,EACnB,GAAI,CAACjP,EAAYiP,CAAE,GAAK,CAACpN,EACvB,OAGF,IAAM8H,EAAsB9H,EAAO,SAC7B4F,EAAQkC,EAAS,QAAQsF,CAAE,EAIjC,GAAIxH,EAAQ,EAAG,OAEf,IAAMga,EACJ,OAAOnU,EAAM,CAAC,GAAM,WAChBA,EAAM,CAAC,EAAE,KAAK2B,EAAI3L,EAAG,KAAK,QAAQ2L,EAAG,QAAQ,CAAC,EAC7C3B,EAEDJ,EAAM,KAAK,cAAcuU,EAAQne,EAAIqE,CAAO,EAGlD+Z,GAAa/X,EAAUlC,EAAO,EAAGyF,EAAKrL,CAAM,CAC9C,CAAC,CACH,CAyBM,SAAU8e,GAEdqB,EAAmC,CAEnC,IAAMS,EAAY,KAAK,MAAeT,CAAM,EAE5C,KAAK,OAAM,EAEX,IAAMO,EAAc,CAAA,EAEpB,OAAA1T,EAAQ4T,EAAYxT,GAAM,CACxB,IAAMuT,EAAa,KAAK,MAAK,EAAG,QAAO,EACjC,CAAE,OAAA3gB,CAAM,EAAKoN,EACnB,GAAI,CAACpN,EACH,OAGF,IAAM8H,EAAsB9H,EAAO,SAC7B4F,EAAQkC,EAAS,QAAQsF,CAAE,EAI7BxH,EAAQ,IAGZia,GAAa/X,EAAUlC,EAAO,EAAG+a,EAAY3gB,CAAM,EACnD0gB,EAAO,KAAK,GAAGC,CAAU,EAC3B,CAAC,EAEM,KAAK,MAAMD,CAAM,CAC1B,CAsBM,SAAU1B,GAEd7M,EAAiB,CAGjB,IAAM1G,EAAQ0G,EAAW,KAAK,OAAOA,CAAQ,EAAI,KAEjD,OAAAnF,EAAQvB,EAAQ2B,GAAM,CACpBtO,GAAcsO,CAAE,EAChBA,EAAG,KAAOA,EAAG,KAAOA,EAAG,OAAS,IAClC,CAAC,EAEM,IACT,CAuBM,SAAU6R,GAEdM,EAA+B,CAE/B,OAAOvS,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CAC7B,GAAM,CAAE,OAAAzB,CAAM,EAAKoN,EACnB,GAAI,CAACpN,EACH,OAGF,IAAM8H,EAAsB9H,EAAO,SAC7B6gB,EACJ,OAAOtB,GAAY,WAAaA,EAAQ,KAAKnS,EAAI3L,EAAG2L,CAAE,EAAImS,EACtDlU,EAAM,KAAK,cAAcwV,CAAI,EAMnCrB,GAAUnU,EAAK,IAAI,EAEnB,IAAMzF,EAAQkC,EAAS,QAAQsF,CAAE,EAGjCyS,GAAa/X,EAAUlC,EAAO,EAAGyF,EAAKrL,CAAM,EAEvCqL,EAAI,SAAS+B,CAAE,IAClBA,EAAG,OAASA,EAAG,KAAOA,EAAG,KAAO,KAEpC,CAAC,CACH,CAiBM,SAAUwR,IAAK,CACnB,OAAO5R,EAAQ,KAAOI,GAAM,CACrBjP,EAAYiP,CAAE,IACnBA,EAAG,SAAS,QAAS9L,GAAS,CAC5BA,EAAM,KAAOA,EAAM,KAAOA,EAAM,OAAS,IAC3C,CAAC,EAED8L,EAAG,SAAS,OAAS,EACvB,CAAC,CACH,CAuCM,SAAUhR,GAEdqH,EAA+B,CAE/B,GAAIA,IAAQ,OAAW,CACrB,IAAM2J,EAAK,KAAK,CAAC,EACjB,MAAI,CAACA,GAAM,CAACjP,EAAYiP,CAAE,EAAU,KAC7B,KAAK,QAAQA,EAAG,QAAQ,EAGjC,OAAOJ,EAAQ,KAAOI,GAAM,CAC1B,GAAI,CAACjP,EAAYiP,CAAE,EAAG,OACtBA,EAAG,SAAS,QAAS9L,GAAS,CAC5BA,EAAM,KAAOA,EAAM,KAAOA,EAAM,OAAS,IAC3C,CAAC,EAED,IAAMie,EAAU7S,EAAUjJ,CAAG,EACzBA,EAAI,QAAO,EACX,KAAK,OAAO,GAAGA,CAAG,GAAI,KAAK,QAAS,GAAO2J,CAAE,EAAE,SAEnDoS,GAAUD,EAASnS,CAAE,CACvB,CAAC,CACH,CAQM,SAAU8R,IAAQ,CACtB,OAAO,KAAK,QAAQ,IAAI,CAC1B,CA0CM,SAAU1iB,GAEdiH,EAAmE,CAGnE,OAAIA,IAAQ,OACHjH,GAAW,IAAI,EAEpB,OAAOiH,GAAQ,WAEVuJ,EAAQ,KAAM,CAACI,EAAI3L,IACxB,KAAK,MAAM2L,CAAE,EAAE,KAAK3J,EAAI,KAAK2J,EAAI3L,EAAGjF,GAAW,CAAC4Q,CAAE,CAAC,CAAC,CAAC,CAAC,EAKnDJ,EAAQ,KAAOI,GAAM,CAC1B,GAAI,CAACjP,EAAYiP,CAAE,EAAG,OACtBA,EAAG,SAAS,QAAS9L,GAAS,CAC5BA,EAAM,KAAOA,EAAM,KAAOA,EAAM,OAAS,IAC3C,CAAC,EAED,IAAMwf,EAAW,IAAIvhB,GAAK,GAAGkE,CAAG,EAAE,EAElC+b,GAAUsB,EAAU1T,CAAE,CACxB,CAAC,CACH,CAeM,SAAU/L,IAAK,CACnB,OAAO,KAAK,MAAM8L,GAAS,KAAK,IAAG,CAAE,CAAC,CACxC,CEliCA,IAAA4T,GAAA,GAAA7kB,GAAA6kB,GAAA,SAAAC,KAiEM,SAAUA,GAEd7V,EACA1E,EAEqE,CAErE,GACG0E,GAAQ,MAAQ1E,GAAO,MAEvB,OAAO0E,GAAS,UAAY,CAAC,MAAM,QAAQA,CAAI,EAEhD,OAAO6B,EAAQ,KAAM,CAACI,EAAI3L,IAAK,CACzBjD,EAAM4O,CAAE,GAEV6T,GAAO7T,EAAIjC,EAAgB1E,EAAKhF,CAAC,CAErC,CAAC,EAGH,GAAI,KAAK,SAAW,EAIpB,OAAOyf,GAAO,KAAK,CAAC,EAAG/V,CAAc,CACvC,CAWA,SAAS8V,GACP7T,EACAjC,EACApG,EAIAoE,EAAW,CAEX,GAAI,OAAOgC,GAAS,SAAU,CAC5B,IAAMgW,EAASD,GAAO9T,CAAE,EAElB3G,EACJ,OAAO1B,GAAU,WAAaA,EAAM,KAAKqI,EAAIjE,EAAKgY,EAAOhW,CAAI,CAAC,EAAIpG,EAEhE0B,IAAQ,GACV,OAAO0a,EAAOhW,CAAI,EACT1E,GAAO,OAChB0a,EAAOhW,CAAI,EAAI1E,GAGjB2G,EAAG,QAAQ,MAAWgU,GAAUD,CAAM,OAC7B,OAAOhW,GAAS,UACzB,OAAO,KAAKA,CAAI,EAAE,QAAQ,CAACkW,EAAG5f,IAAK,CACjCwf,GAAO7T,EAAIiU,EAAGlW,EAAKkW,CAAC,EAAG5f,CAAC,CAC1B,CAAC,CAEL,CAsBA,SAASyf,GACP9T,EACAjC,EAAwB,CAExB,GAAI,CAACiC,GAAM,CAAC5O,EAAM4O,CAAE,EAAG,OAEvB,IAAM+T,EAASvO,GAAMxF,EAAG,QAAQ,KAAQ,EACxC,GAAI,OAAOjC,GAAS,SAClB,OAAOgW,EAAOhW,CAAI,EAEpB,GAAI,MAAM,QAAQA,CAAI,EAAG,CACvB,IAAMmW,EAAoC,CAAA,EAC1C,OAAAnW,EAAK,QAASd,GAAQ,CAChB8W,EAAO9W,CAAI,GAAK,OAClBiX,EAAUjX,CAAI,EAAI8W,EAAO9W,CAAI,EAEjC,CAAC,EACMiX,EAET,OAAOH,CACT,CAUA,SAASC,GAAUlW,EAA2B,CAC5C,OAAO,OAAO,KAAKA,CAAG,EAAE,OACtB,CAACzH,EAAK0H,IAAS,GAAG1H,CAAG,GAAGA,EAAM,IAAM,EAAE,GAAG0H,CAAI,KAAKD,EAAIC,CAAI,CAAC,IAC3D,EAAE,CAEN,CAUA,SAASyH,GAAMuO,EAAc,CAG3B,GAFAA,GAAUA,GAAU,IAAI,KAAI,EAExB,CAACA,EAAQ,MAAO,CAAA,EAEpB,IAAMjW,EAA8B,CAAA,EAEhChQ,EAEJ,QAAWuI,KAAO0d,EAAO,MAAM,GAAG,EAAG,CACnC,IAAMI,EAAI9d,EAAI,QAAQ,GAAG,EAEzB,GAAI8d,EAAI,GAAKA,IAAM9d,EAAI,OAAS,EAAG,CACjC,IAAM+d,EAAU/d,EAAI,QAAO,EACvB+d,EAAQ,OAAS,GAAKtmB,IAAQ,SAChCgQ,EAAIhQ,CAAG,GAAK,IAAIsmB,CAAO,SAGzBtmB,EAAMuI,EAAI,MAAM,EAAG8d,CAAC,EAAE,KAAI,EAC1BrW,EAAIhQ,CAAG,EAAIuI,EAAI,MAAM8d,EAAI,CAAC,EAAE,KAAI,EAIpC,OAAOrW,CACT,CCzNA,IAAAuW,GAAA,GAAAvlB,GAAAulB,GAAA,eAAAC,GAAA,mBAAAC,KAMA,IAAMC,GAAsB,+BACtBC,GAAM,OACNC,GAAQ,SAgBR,SAAUJ,IAAS,CAWvB,OATY,KAAK,eAAc,EAGZ,IAChBphB,GACC,GAAG,mBAAmBA,EAAK,IAAI,CAAC,IAAI,mBAAmBA,EAAK,KAAK,CAAC,EAAE,EAI1D,KAAK,GAAG,EAAE,QAAQuhB,GAAK,GAAG,CAC1C,CAqBM,SAAUF,IAAc,CAI5B,OAAO,KAAK,IAAI,CAAC9U,EAAGxN,IAAQ,CAC1B,IAAM0iB,EAAQ,KAAK,MAAM1iB,CAAI,EAC7B,OAAIb,EAAMa,CAAI,GAAKA,EAAK,OAAS,OACxB0iB,EAAM,KAAKH,EAAmB,EAAE,QAAO,EAEzCG,EAAM,OAAOH,EAAmB,EAAE,QAAO,CAClD,CAAC,EACE,OAEC,+GAOD,IAA8B,CAAC/U,EAAGxN,IAAQ,OACzC,IAAM0iB,EAAQ,KAAK,MAAM1iB,CAAI,EACvBmB,EAAOuhB,EAAM,KAAK,MAAM,EAExBhd,GAAQpE,EAAAohB,EAAM,IAAG,KAAE,MAAAphB,IAAA,OAAAA,EAAI,GAG7B,OAAI,MAAM,QAAQoE,CAAK,EACdA,EAAM,IAAK0B,IAKf,CAAE,KAAAjG,EAAM,MAAOiG,EAAI,QAAQqb,GAAO;CAAM,CAAC,EAAG,EAI1C,CAAE,KAAAthB,EAAM,MAAOuE,EAAM,QAAQ+c,GAAO;CAAM,CAAC,CACpD,CAAC,EACA,QAAO,CACZ,CCnFM,IAAgBE,GAAhB,KAAuB,CAqB3B,YACExW,EACAjP,EACAP,EAAwB,CAKxB,GA5BF,KAAA,OAAS,EAyBP,KAAK,QAAUA,EACf,KAAK,MAAQO,EAETiP,EAAU,CACZ,QAASrC,EAAM,EAAGA,EAAMqC,EAAS,OAAQrC,IACvC,KAAKA,CAAG,EAAIqC,EAASrC,CAAG,EAE1B,KAAK,OAASqC,EAAS,OAE3B,GAuDFwW,GAAQ,UAAU,QAAU,mBAK5BA,GAAQ,UAAU,OAAS,MAAM,UAAU,OAG3CA,GAAQ,UAAU,OAAO,QAAQ,EAAI,MAAM,UAAU,OAAO,QAAQ,EAGpE,OAAO,OACLA,GAAQ,UACR7V,GACAoE,GACAgO,GACAwC,GACAU,EAAK,ECjDD,SAAUQ,GACdrP,EACA1L,EAGW,CAeX,OAAO,SAASgb,EACd3C,EACAvjB,EACAuC,EAAa,GAAI,CAEjB,GAAKghB,GAA6B,KAChC,MAAM,IAAI,MAAM,iCAAiC,EAGnD,IAAM4C,EAAe,CAAE,GAAGtmB,GAAgB,GAAGE,GAAeC,CAAO,CAAC,EAC9DomB,EAAcxP,EAAM2M,EAAS4C,EAAc5jB,EAAY,IAAI,EAGjE,MAAM8jB,UAAyBL,EAAU,CACvC,MACE7P,EACAzG,EAA4C,CAE5C,IAAM4W,EAAUC,EAAWpQ,EAAUzG,CAAO,EAC5C,OAAA4W,EAAQ,WAAa,KAEdA,CACT,CAEA,OACE/C,EACAvjB,EACAuC,EACAmN,EAA0B,CAE1B,OAAOkH,EAAM2M,EAASvjB,EAASuC,EAAYmN,CAAO,CACpD,CAEA,QAAQL,EAAiC,CACvC,OAAOnE,EAAOmE,EAAK,KAAK,OAAO,CACjC,EAGF,SAASkX,EACPpQ,EACAzG,EACAnP,EAAqC6lB,EACrCrb,EAAqB,CAKrB,GAAIoL,GAAYzF,EAAkByF,CAAQ,EAAG,OAAOA,EAEpD,IAAMnW,EAAU,CACd,GAAGmmB,EACH,GAAGpmB,GAAegL,CAAI,GAElByb,EACJ,OAAOjmB,GAAS,SACZ,CAACqW,EAAMrW,EAAMP,EAAS,GAAO,IAAI,CAAC,EAClC,WAAYO,EACZA,EACA,CAACA,CAAI,EACLkmB,EAAe/V,EAAoB8V,CAAC,EACtCA,EACA,IAAIH,EAAwBG,EAAG,KAAMxmB,CAAO,EAKhD,GAHAymB,EAAa,MAAQA,EAGjB,CAACtQ,EACH,OAAO,IAAIkQ,EAAsB,OAAWI,EAAczmB,CAAO,EAGnE,IAAMwP,GACJ,OAAO2G,GAAa,UAAY7E,GAAO6E,CAAQ,EAE3CS,EAAMT,EAAUnW,EAAS,GAAO,IAAI,EAAE,SACtC0mB,GAAOvQ,CAAQ,EAEf,CAACA,CAAQ,EACT,MAAM,QAAQA,CAAQ,EAEtBA,EACA,OAEAwQ,GAAW,IAAIN,EAAc7W,GAAUiX,EAAczmB,CAAO,EAElE,GAAIwP,GACF,OAAOmX,GAGT,GAAI,OAAOxQ,GAAa,SACtB,MAAM,IAAI,MAAM,6BAA6B,EAI/C,IAAIyQ,GAASzQ,EAEP0Q,GAA+CnX,EAGjD,OAAOA,GAAY,SACnB4B,GAAO5B,CAAO,EAEZ,IAAI2W,EACF,CAACzP,EAAMlH,EAAS1P,EAAS,GAAO,IAAI,CAAC,EACrCymB,EACAzmB,CAAO,GAGP4mB,GAAS,GAAGlX,CAAO,IAAIkX,EAAM,GAAUH,GAC3C/V,EAAmBhB,CAAO,EAE1BA,EAEA,IAAI2W,EACF,MAAM,QAAQ3W,CAAO,EAAIA,EAAU,CAACA,CAAO,EAC3C+W,EACAzmB,CAAO,EAlBTymB,EAsBJ,OAAKI,GAKEA,GAAc,KAAKD,EAAM,EALLD,EAM7B,CAGA,cAAO,OAAOJ,EAAYtmB,GAAe,CACvC,KAAAimB,EAEA,MAAOE,EACP,SAAUD,EAEV,GAAIE,EAAc,UAElB,UAAWA,EAAc,UAC1B,EAEME,CACT,CACF,CAEA,SAASG,GAAOxX,EAAQ,CACtB,MACE,CAAC,CAACA,EAAI,MACNA,EAAI,OAAS,QACbA,EAAI,OAAS,QACbA,EAAI,OAAS,SAEjB,CCpPA,IAAM4X,GAAwB,IAAI,IAAI,CAClC,MAAO,MAAO,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAC9E,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACxE,QAAS,QAAS,OACtB,CAAC,EACYC,EAAwB,SAC1BC,GACV,SAAUA,EAAa,CACpBA,EAAYA,EAAY,IAAS,EAAE,EAAI,MACvCA,EAAYA,EAAY,KAAU,CAAC,EAAI,OACvCA,EAAYA,EAAY,WAAgB,CAAC,EAAI,aAC7CA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,MAAW,EAAE,EAAI,QACzCA,EAAYA,EAAY,iBAAsB,EAAE,EAAI,mBACpDA,EAAYA,EAAY,eAAoB,EAAE,EAAI,iBAClDA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,WAAgB,EAAE,EAAI,aAC9CA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,QAAa,EAAE,EAAI,UAC3CA,EAAYA,EAAY,UAAe,EAAE,EAAI,YAC7CA,EAAYA,EAAY,eAAoB,EAAE,EAAI,iBAClDA,EAAYA,EAAY,YAAiB,EAAE,EAAI,cAC/CA,EAAYA,EAAY,kBAAuB,EAAE,EAAI,oBACrDA,EAAYA,EAAY,cAAmB,EAAE,EAAI,gBACjDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,gBAAqB,EAAE,EAAI,kBACnDA,EAAYA,EAAY,qBAA0B,EAAE,EAAI,uBACxDA,EAAYA,EAAY,aAAkB,EAAE,EAAI,eAChDA,EAAYA,EAAY,cAAmB,EAAE,EAAI,gBACjDA,EAAYA,EAAY,cAAmB,GAAG,EAAI,gBAClDA,EAAYA,EAAY,cAAmB,GAAG,EAAI,gBAClDA,EAAYA,EAAY,cAAmB,GAAG,EAAI,gBAClDA,EAAYA,EAAY,sBAA2B,KAAK,EAAI,uBAChE,GAAGA,EAAcA,IAAgBA,EAAc,CAAC,EAAE,EAC3C,IAAMC,EAAY,CACrB,UAAW,KACX,YAAa,UACb,QAAS,UACT,OAAQ,SACR,OAAQ,SACR,OAAQ,QACZ,EAEO,SAASC,GAAYC,EAAI,CAC5B,OAAOA,GAAM,OAASA,GAAM,KAChC,CACO,SAASC,GAAgBD,EAAI,CAChC,OAAOA,GAAM,OAASA,GAAM,KAChC,CACO,SAASE,GAA0BC,EAAKC,EAAK,CAChD,OAAQD,EAAM,OAAS,KAAO,KAAOC,CACzC,CAEO,SAASC,GAAmBL,EAAI,CACnC,OAASA,IAAO,IAAQA,IAAO,IAAQA,IAAO,IAAQA,IAAO,GAAQA,IAAO,IAAQA,GAAM,GAAQA,GAAM,IACnGA,GAAM,KAAQA,GAAM,GAC7B,CACO,SAASM,GAAqBN,EAAI,CACrC,OAAQA,GAAM,OAASA,GAAM,OAAUL,GAAsB,IAAIK,CAAE,CACvE,CCnEO,IAAIO,GACV,SAAUA,EAAK,CACZA,EAAI,8BAAmC,oCACvCA,EAAI,0BAA+B,+BACnCA,EAAI,uBAA4B,4BAChCA,EAAI,8CAAmD,wDACvDA,EAAI,qBAA0B,0BAC9BA,EAAI,0BAA+B,gCACnCA,EAAI,uBAA4B,4BAChCA,EAAI,wBAA6B,4BACjCA,EAAI,uCAA4C,+CAChDA,EAAI,+BAAoC,sCACxCA,EAAI,wCAA6C,+CACjDA,EAAI,kBAAuB,uBAC3BA,EAAI,mCAAwC,yCAC5CA,EAAI,+BAAoC,oCACxCA,EAAI,wCAA6C,8CACjDA,EAAI,gDAAqD,uDACzDA,EAAI,4CAAiD,mDACrDA,EAAI,iBAAsB,sBAC1BA,EAAI,SAAc,aAClBA,EAAI,sBAA2B,0BAC/BA,EAAI,mCAAwC,wCAC5CA,EAAI,2CAAgD,kDACpDA,EAAI,0DAA+D,mEACnEA,EAAI,2CAAgD,kDACpDA,EAAI,0CAA+C,iDACnDA,EAAI,0CAA+C,iDACnDA,EAAI,+BAAoC,oCACxCA,EAAI,+BAAoC,oCACxCA,EAAI,8BAAmC,mCACvCA,EAAI,8BAAmC,mCACvCA,EAAI,mBAAwB,wBAC5BA,EAAI,yBAA8B,6BAClCA,EAAI,+BAAoC,uCACxCA,EAAI,aAAkB,iBACtBA,EAAI,cAAmB,iBACvBA,EAAI,4BAAiC,kCACrCA,EAAI,aAAkB,iBACtBA,EAAI,yBAA8B,6BAClCA,EAAI,WAAgB,eACpBA,EAAI,2CAAgD,mDACpDA,EAAI,uBAA4B,2BAChCA,EAAI,4BAAiC,gCACrCA,EAAI,sCAA2C,4CAC/CA,EAAI,0BAA+B,8BACnCA,EAAI,+BAAoC,mCACxCA,EAAI,mCAAwC,yCAC5CA,EAAI,mBAAwB,uBAC5BA,EAAI,yCAA8C,gDAClDA,EAAI,mBAAwB,sBAC5BA,EAAI,qBAA0B,yBAC9BA,EAAI,eAAoB,kBACxBA,EAAI,iBAAsB,oBAC1BA,EAAI,iCAAsC,wCAC1CA,EAAI,sCAA2C,8CAC/CA,EAAI,kCAAuC,yCAC3CA,EAAI,yBAA8B,+BAClCA,EAAI,0BAA+B,+BACnCA,EAAI,gCAAqC,uCACzCA,EAAI,qBAA0B,0BAC9BA,EAAI,mCAAwC,2CAChD,GAAGA,EAAMA,IAAQA,EAAM,CAAC,EAAE,EC3D1B,IAAMC,GAA2B,MAIpBC,GAAN,KAAmB,CACtB,YAAYC,EAAS,CACjB,KAAK,QAAUA,EACf,KAAK,KAAO,GACZ,KAAK,IAAM,GAEX,KAAK,WAAa,GAClB,KAAK,SAAW,CAAC,EACjB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,cAAgB,GACrB,KAAK,gBAAkBF,GACvB,KAAK,MAAQ,GACb,KAAK,aAAe,EACpB,KAAK,kBAAoB,EACzB,KAAK,KAAO,EAEZ,KAAK,cAAgB,EACzB,CAEA,IAAI,KAAM,CACN,OAAO,KAAK,IAAM,KAAK,cAAe,EAAO,KAAK,aAAe,KAAK,IAC1E,CACA,IAAI,QAAS,CACT,OAAO,KAAK,kBAAoB,KAAK,GACzC,CACA,SAAS7gB,EAAM,CACX,GAAM,CAAE,KAAAghB,EAAM,IAAAC,EAAK,OAAArgB,CAAO,EAAI,KAC9B,MAAO,CACH,KAAAZ,EACA,UAAWghB,EACX,QAASA,EACT,SAAUC,EACV,OAAQA,EACR,YAAargB,EACb,UAAWA,CACf,CACJ,CACA,KAAKZ,EAAM,CACH,KAAK,QAAQ,cAAgB,KAAK,gBAAkB,KAAK,SACzD,KAAK,cAAgB,KAAK,OAC1B,KAAK,QAAQ,aAAa,KAAK,SAASA,CAAI,CAAC,EAErD,CACA,SAAU,CACN,KAAK,SAAS,KAAK,KAAK,UAAU,EAClC,KAAK,WAAa,KAAK,GAC3B,CACA,kBAAkBqgB,EAAI,CAElB,GAAI,KAAK,MAAQ,KAAK,KAAK,OAAS,EAAG,CACnC,IAAMa,EAAS,KAAK,KAAK,WAAW,KAAK,IAAM,CAAC,EAChD,GAAIZ,GAAgBY,CAAM,EAEtB,YAAK,MAEL,KAAK,QAAQ,EACNX,GAA0BF,EAAIa,CAAM,CAEnD,SAES,CAAC,KAAK,iBACX,YAAK,cAAgB,GACdhB,EAAE,IAGb,YAAK,KAAKU,EAAI,sBAAsB,EAC7BP,CACX,CACA,qBAAsB,CAClB,OAAO,KAAK,IAAM,KAAK,eAC3B,CACA,iBAAkB,CACV,KAAK,oBAAoB,IACzB,KAAK,KAAO,KAAK,KAAK,UAAU,KAAK,GAAG,EACxC,KAAK,cAAgB,KAAK,IAC1B,KAAK,mBAAqB,KAAK,IAC/B,KAAK,IAAM,EACX,KAAK,WAAa,GAClB,KAAK,SAAS,OAAS,EAE/B,CACA,MAAMc,EAAOC,EAAa,CAClB,KAAK,KAAK,OAAS,EACnB,KAAK,MAAQD,EAGb,KAAK,KAAOA,EAEhB,KAAK,cAAgB,GACrB,KAAK,iBAAmBC,CAC5B,CACA,uBAAuBD,EAAO,CAC1B,KAAK,KAAO,KAAK,KAAK,UAAU,EAAG,KAAK,IAAM,CAAC,EAAIA,EAAQ,KAAK,KAAK,UAAU,KAAK,IAAM,CAAC,EAC3F,KAAK,cAAgB,EACzB,CACA,WAAWE,EAASC,EAAe,CAE/B,GAAI,KAAK,IAAMD,EAAQ,OAAS,KAAK,KAAK,OACtC,YAAK,cAAgB,CAAC,KAAK,iBACpB,GAEX,GAAIC,EACA,OAAO,KAAK,KAAK,WAAWD,EAAS,KAAK,GAAG,EAEjD,QAAS1iB,EAAI,EAAGA,EAAI0iB,EAAQ,OAAQ1iB,IAEhC,IADW,KAAK,KAAK,WAAW,KAAK,IAAMA,CAAC,EAAI,MACrC0iB,EAAQ,WAAW1iB,CAAC,EAC3B,MAAO,GAGf,MAAO,EACX,CACA,KAAKiC,EAAQ,CACT,IAAM4P,EAAM,KAAK,IAAM5P,EACvB,GAAI4P,GAAO,KAAK,KAAK,OACjB,YAAK,cAAgB,CAAC,KAAK,iBACpB0P,EAAE,IAEb,IAAMlgB,EAAO,KAAK,KAAK,WAAWwQ,CAAG,EACrC,OAAOxQ,IAASkgB,EAAE,gBAAkBA,EAAE,UAAYlgB,CACtD,CACA,SAAU,CAQN,GAPA,KAAK,MAED,KAAK,QACL,KAAK,MAAQ,GACb,KAAK,OACL,KAAK,aAAe,KAAK,KAEzB,KAAK,KAAO,KAAK,KAAK,OACtB,YAAK,cAAgB,CAAC,KAAK,iBACpBkgB,EAAE,IAEb,IAAIG,EAAK,KAAK,KAAK,WAAW,KAAK,GAAG,EAEtC,OAAIA,IAAOH,EAAE,iBACT,KAAK,MAAQ,GACb,KAAK,gBAAkB,GAChBA,EAAE,WAITG,IAAOH,EAAE,YACT,KAAK,MAAQ,GACT,KAAK,kBAEL,KAAK,OACL,KAAK,gBAAkB,GACvB,KAAK,QAAQ,EACN,KAAK,QAAQ,IAG5B,KAAK,gBAAkB,GACnBE,GAAYC,CAAE,IACdA,EAAK,KAAK,kBAAkBA,CAAE,GAKP,KAAK,QAAQ,eAAiB,MACpDA,EAAK,IAAQA,EAAK,KACnBA,IAAOH,EAAE,WACTG,IAAOH,EAAE,iBACRG,EAAK,KAAQA,EAAK,OAEnB,KAAK,+BAA+BA,CAAE,EAEnCA,EACX,CACA,+BAA+BA,EAAI,CAC3BK,GAAmBL,CAAE,EACrB,KAAK,KAAKO,EAAI,6BAA6B,EAEtCD,GAAqBN,CAAE,GAC5B,KAAK,KAAKO,EAAI,yBAAyB,CAE/C,CACA,QAAQW,EAAO,CAEX,IADA,KAAK,KAAOA,EACL,KAAK,IAAM,KAAK,YACnB,KAAK,WAAa,KAAK,SAAS,IAAI,EACpC,KAAK,MAET,KAAK,MAAQ,EACjB,CACJ,ECjMO,IAAIC,GACV,SAAUA,EAAW,CAClBA,EAAUA,EAAU,UAAe,CAAC,EAAI,YACxCA,EAAUA,EAAU,eAAoB,CAAC,EAAI,iBAC7CA,EAAUA,EAAU,qBAA0B,CAAC,EAAI,uBACnDA,EAAUA,EAAU,UAAe,CAAC,EAAI,YACxCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,QAAa,CAAC,EAAI,UACtCA,EAAUA,EAAU,IAAS,CAAC,EAAI,MAClCA,EAAUA,EAAU,YAAiB,CAAC,EAAI,aAC9C,GAAGA,EAAYA,IAAcA,EAAY,CAAC,EAAE,EACrC,SAASC,GAAa7P,EAAO5F,EAAU,CAC1C,QAASrN,EAAIiT,EAAM,MAAM,OAAS,EAAGjT,GAAK,EAAGA,IACzC,GAAIiT,EAAM,MAAMjT,CAAC,EAAE,OAASqN,EACxB,OAAO4F,EAAM,MAAMjT,CAAC,EAAE,MAG9B,OAAO,IACX,CCnBA,IAAA+iB,GAAA,GAAAtoB,GAAAsoB,GAAA,WAAAC,GAAA,kBAAAC,EAAA,OAAAC,EAAA,qBAAAC,GAAA,WAAAC,EAAA,cAAAC,EAAA,aAAAC,GAAA,qBAAAC,GAAA,qBAAAC,KACO,IAAIN,GACV,SAAUA,EAAI,CACXA,EAAG,KAAU,+BACbA,EAAG,OAAY,qCACfA,EAAG,IAAS,6BACZA,EAAG,MAAW,+BACdA,EAAG,IAAS,uCACZA,EAAG,MAAW,+BAClB,GAAGA,EAAKA,IAAOA,EAAK,CAAC,EAAE,EAChB,IAAIF,IACV,SAAUA,EAAO,CACdA,EAAM,KAAU,OAChBA,EAAM,OAAY,SAClBA,EAAM,SAAc,WACpBA,EAAM,OAAY,SAClBA,EAAM,KAAU,OAChBA,EAAM,MAAW,QACjBA,EAAM,KAAU,OAChBA,EAAM,KAAU,MACpB,GAAGA,GAAQA,KAAUA,GAAQ,CAAC,EAAE,EAMzB,IAAIC,GACV,SAAUA,EAAe,CACtBA,EAAc,UAAe,YAC7BA,EAAc,OAAY,SAC1BA,EAAc,eAAoB,gBACtC,GAAGA,EAAgBA,IAAkBA,EAAgB,CAAC,EAAE,EACjD,IAAII,GACV,SAAUA,EAAW,CAClBA,EAAU,EAAO,IACjBA,EAAU,QAAa,UACvBA,EAAU,eAAoB,iBAC9BA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,MAAW,QACrBA,EAAU,EAAO,IACjBA,EAAU,KAAU,OACpBA,EAAU,SAAc,WACxBA,EAAU,QAAa,UACvBA,EAAU,IAAS,MACnBA,EAAU,WAAgB,aAC1BA,EAAU,KAAU,OACpBA,EAAU,GAAQ,KAClBA,EAAU,OAAY,SACtBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,IAAS,MACnBA,EAAU,SAAc,WACxBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,WAAgB,aAC1BA,EAAU,OAAY,SACtBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,eAAoB,gBAC9BA,EAAU,KAAU,OACpBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,EAAO,IACjBA,EAAU,IAAS,MACnBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,KAAU,OACpBA,EAAU,QAAa,UACvBA,EAAU,KAAU,OACpBA,EAAU,WAAgB,aAC1BA,EAAU,QAAa,UACvBA,EAAU,KAAU,OACpBA,EAAU,KAAU,OACpBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,IAAS,MACnBA,EAAU,KAAU,OACpBA,EAAU,SAAc,WACxBA,EAAU,QAAa,UACvBA,EAAU,SAAc,WACxBA,EAAU,OAAY,SACtBA,EAAU,GAAQ,KAClBA,EAAU,SAAc,WACxBA,EAAU,OAAY,SACtBA,EAAU,EAAO,IACjBA,EAAU,MAAW,QACrBA,EAAU,UAAe,YACzBA,EAAU,IAAS,MACnBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,IAAS,MACnBA,EAAU,KAAU,OACpBA,EAAU,EAAO,IACjBA,EAAU,OAAY,SACtBA,EAAU,QAAa,UACvBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,KAAU,OACpBA,EAAU,OAAY,SACtBA,EAAU,OAAY,SACtBA,EAAU,MAAW,QACrBA,EAAU,IAAS,MACnBA,EAAU,QAAa,UACvBA,EAAU,IAAS,MACnBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,SAAc,WACxBA,EAAU,SAAc,WACxBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,MAAW,QACrBA,EAAU,GAAQ,KAClBA,EAAU,EAAO,IACjBA,EAAU,GAAQ,KAClBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,IAAS,MACnBA,EAAU,IAAS,KACvB,GAAGA,EAAYA,IAAcA,EAAY,CAAC,EAAE,EAMrC,IAAID,GACV,SAAUA,EAAQ,CACfA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,EAAO,CAAC,EAAI,IAC1BA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,eAAoB,CAAC,EAAI,iBACvCA,EAAOA,EAAO,OAAY,CAAC,EAAI,SAC/BA,EAAOA,EAAO,KAAU,CAAC,EAAI,OAC7BA,EAAOA,EAAO,QAAa,CAAC,EAAI,UAChCA,EAAOA,EAAO,MAAW,CAAC,EAAI,QAC9BA,EAAOA,EAAO,EAAO,CAAC,EAAI,IAC1BA,EAAOA,EAAO,KAAU,CAAC,EAAI,OAC7BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,eAAoB,EAAE,EAAI,iBACxCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,WAAgB,EAAE,EAAI,aACpCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,SAAc,EAAE,EAAI,WAClCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,UAAe,EAAE,EAAI,YACnCA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,GAAQ,EAAE,EAAI,KAC5BA,EAAOA,EAAO,IAAS,EAAE,EAAI,MAC7BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,EAAO,EAAE,EAAI,IAC3BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,QAAa,EAAE,EAAI,UACjCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,MAAW,EAAE,EAAI,QAC/BA,EAAOA,EAAO,KAAU,EAAE,EAAI,OAC9BA,EAAOA,EAAO,OAAY,EAAE,EAAI,SAChCA,EAAOA,EAAO,OAAY,GAAG,EAAI,SACjCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,QAAa,GAAG,EAAI,UAClCA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,SAAc,GAAG,EAAI,WACnCA,EAAOA,EAAO,SAAc,GAAG,EAAI,WACnCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,MAAW,GAAG,EAAI,QAChCA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,EAAO,GAAG,EAAI,IAC5BA,EAAOA,EAAO,GAAQ,GAAG,EAAI,KAC7BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,MAC9BA,EAAOA,EAAO,IAAS,GAAG,EAAI,KAClC,GAAGA,EAASA,IAAWA,EAAS,CAAC,EAAE,EACnC,IAAMK,GAAiB,IAAI,IAAI,CAC3B,CAACJ,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,eAAgBD,EAAO,cAAc,EAChD,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,WAAYD,EAAO,UAAU,EACxC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,WAAYD,EAAO,UAAU,EACxC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,eAAgBD,EAAO,cAAc,EAChD,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,WAAYD,EAAO,UAAU,EACxC,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,UAAWD,EAAO,SAAS,EACtC,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,KAAMD,EAAO,IAAI,EAC5B,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,OAAQD,EAAO,MAAM,EAChC,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,QAASD,EAAO,OAAO,EAClC,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,SAAUD,EAAO,QAAQ,EACpC,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,MAAOD,EAAO,KAAK,EAC9B,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,EAAGD,EAAO,CAAC,EACtB,CAACC,EAAU,GAAID,EAAO,EAAE,EACxB,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,IAAKD,EAAO,GAAG,EAC1B,CAACC,EAAU,IAAKD,EAAO,GAAG,CAC9B,CAAC,EACM,SAASE,GAAS7b,EAAS,CAC9B,IAAIvI,EACJ,OAAQA,EAAKukB,GAAe,IAAIhc,CAAO,KAAO,MAAQvI,IAAO,OAASA,EAAKkkB,EAAO,OACtF,CACA,IAAMM,EAAIN,EACGD,GAAmB,CAC5B,CAACD,EAAG,IAAI,EAAG,IAAI,IAAI,CACfQ,EAAE,QACFA,EAAE,OACFA,EAAE,KACFA,EAAE,QACFA,EAAE,MACFA,EAAE,KACFA,EAAE,SACFA,EAAE,QACFA,EAAE,WACFA,EAAE,KACFA,EAAE,GACFA,EAAE,OACFA,EAAE,QACFA,EAAE,OACFA,EAAE,IACFA,EAAE,SACFA,EAAE,GACFA,EAAE,QACFA,EAAE,IACFA,EAAE,IACFA,EAAE,GACFA,EAAE,GACFA,EAAE,MACFA,EAAE,SACFA,EAAE,WACFA,EAAE,OACFA,EAAE,OACFA,EAAE,KACFA,EAAE,MACFA,EAAE,SACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,KACFA,EAAE,OACFA,EAAE,OACFA,EAAE,GACFA,EAAE,KACFA,EAAE,OACFA,EAAE,IACFA,EAAE,MACFA,EAAE,GACFA,EAAE,KACFA,EAAE,QACFA,EAAE,KACFA,EAAE,QACFA,EAAE,KACFA,EAAE,KACFA,EAAE,IACFA,EAAE,QACFA,EAAE,SACFA,EAAE,SACFA,EAAE,OACFA,EAAE,GACFA,EAAE,EACFA,EAAE,MACFA,EAAE,UACFA,EAAE,IACFA,EAAE,OACFA,EAAE,QACFA,EAAE,OACFA,EAAE,OACFA,EAAE,MACFA,EAAE,QACFA,EAAE,MACFA,EAAE,MACFA,EAAE,GACFA,EAAE,SACFA,EAAE,SACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,GACFA,EAAE,IACFA,EAAE,GACN,CAAC,EACD,CAACR,EAAG,MAAM,EAAG,IAAI,IAAI,CAACQ,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,MAAOA,EAAE,cAAc,CAAC,EACxE,CAACR,EAAG,GAAG,EAAG,IAAI,IAAI,CAACQ,EAAE,MAAOA,EAAE,eAAgBA,EAAE,IAAI,CAAC,EACrD,CAACR,EAAG,KAAK,EAAG,IAAI,IAChB,CAACA,EAAG,GAAG,EAAG,IAAI,IACd,CAACA,EAAG,KAAK,EAAG,IAAI,GACpB,EACO,SAASM,GAAiBG,EAAI,CACjC,OAAOA,IAAOD,EAAE,IAAMC,IAAOD,EAAE,IAAMC,IAAOD,EAAE,IAAMC,IAAOD,EAAE,IAAMC,IAAOD,EAAE,IAAMC,IAAOD,EAAE,EAC/F,CACA,IAAME,GAAiB,IAAI,IAAI,CAC3BP,EAAU,MACVA,EAAU,OACVA,EAAU,IACVA,EAAU,OACVA,EAAU,QACVA,EAAU,SACVA,EAAU,SACd,CAAC,EACM,SAASE,GAAiBI,EAAIE,EAAkB,CACnD,OAAOD,GAAe,IAAID,CAAE,GAAME,GAAoBF,IAAON,EAAU,QAC3E,CClgBA,IAAMS,GAAqC,IAAI,IAAI,CAC/C,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,IAAI,EACX,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,GAAG,EACV,CAAC,IAAM,GAAG,CACd,CAAC,EAEGC,GACH,SAAUA,EAAO,CACdA,EAAMA,EAAM,KAAU,CAAC,EAAI,OAC3BA,EAAMA,EAAM,OAAY,CAAC,EAAI,SAC7BA,EAAMA,EAAM,QAAa,CAAC,EAAI,UAC9BA,EAAMA,EAAM,YAAiB,CAAC,EAAI,cAClCA,EAAMA,EAAM,UAAe,CAAC,EAAI,YAChCA,EAAMA,EAAM,SAAc,CAAC,EAAI,WAC/BA,EAAMA,EAAM,aAAkB,CAAC,EAAI,eACnCA,EAAMA,EAAM,SAAc,CAAC,EAAI,WAC/BA,EAAMA,EAAM,sBAA2B,CAAC,EAAI,wBAC5CA,EAAMA,EAAM,oBAAyB,CAAC,EAAI,sBAC1CA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,2BAAgC,EAAE,EAAI,6BAClDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,mCAAwC,EAAE,EAAI,qCAC1DA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,2BAAgC,EAAE,EAAI,6BAClDA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,qCAA0C,EAAE,EAAI,uCAC5DA,EAAMA,EAAM,0CAA+C,EAAE,EAAI,4CACjEA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,sBAA2B,EAAE,EAAI,wBAC7CA,EAAMA,EAAM,eAAoB,EAAE,EAAI,iBACtCA,EAAMA,EAAM,qBAA0B,EAAE,EAAI,uBAC5CA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,8BAAmC,EAAE,EAAI,gCACrDA,EAAMA,EAAM,yBAA8B,EAAE,EAAI,2BAChDA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,wBAA6B,EAAE,EAAI,0BAC/CA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,mBAAwB,EAAE,EAAI,qBAC1CA,EAAMA,EAAM,QAAa,EAAE,EAAI,UAC/BA,EAAMA,EAAM,uBAA4B,EAAE,EAAI,yBAC9CA,EAAMA,EAAM,4BAAiC,EAAE,EAAI,8BACnDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,sCAA2C,EAAE,EAAI,wCAC7DA,EAAMA,EAAM,iBAAsB,EAAE,EAAI,mBACxCA,EAAMA,EAAM,YAAiB,EAAE,EAAI,cACnCA,EAAMA,EAAM,iBAAsB,EAAE,EAAI,mBACxCA,EAAMA,EAAM,QAAa,EAAE,EAAI,UAC/BA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,aAAkB,EAAE,EAAI,eACpCA,EAAMA,EAAM,mBAAwB,EAAE,EAAI,qBAC1CA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,8CAAmD,EAAE,EAAI,gDACrEA,EAAMA,EAAM,6BAAkC,EAAE,EAAI,+BACpDA,EAAMA,EAAM,iCAAsC,EAAE,EAAI,mCACxDA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,wCAA6C,EAAE,EAAI,0CAC/DA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,cAAmB,EAAE,EAAI,gBACrCA,EAAMA,EAAM,sBAA2B,EAAE,EAAI,wBAC7CA,EAAMA,EAAM,kBAAuB,EAAE,EAAI,oBACzCA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,0BAA+B,EAAE,EAAI,4BACjDA,EAAMA,EAAM,oBAAyB,EAAE,EAAI,sBAC3CA,EAAMA,EAAM,4BAAiC,EAAE,EAAI,8BACnDA,EAAMA,EAAM,sCAA2C,EAAE,EAAI,wCAC7DA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,kCACvDA,EAAMA,EAAM,4BAAiC,EAAE,EAAI,8BACnDA,EAAMA,EAAM,gCAAqC,EAAE,EAAI,iCAC3D,GAAGA,IAAUA,EAAQ,CAAC,EAAE,EAEjB,IAAMC,EAAgB,CACzB,KAAMD,EAAM,KACZ,OAAQA,EAAM,OACd,QAASA,EAAM,QACf,YAAaA,EAAM,YACnB,UAAWA,EAAM,UACjB,cAAeA,EAAM,aACzB,EAKA,SAASE,GAAavC,EAAI,CACtB,OAAOA,GAAMH,EAAE,SAAWG,GAAMH,EAAE,OACtC,CACA,SAAS2C,GAAaxC,EAAI,CACtB,OAAOA,GAAMH,EAAE,iBAAmBG,GAAMH,EAAE,eAC9C,CACA,SAAS4C,GAAazC,EAAI,CACtB,OAAOA,GAAMH,EAAE,eAAiBG,GAAMH,EAAE,aAC5C,CACA,SAAS6C,GAAc1C,EAAI,CACvB,OAAOyC,GAAazC,CAAE,GAAKwC,GAAaxC,CAAE,CAC9C,CACA,SAASngB,GAAoBmgB,EAAI,CAC7B,OAAO0C,GAAc1C,CAAE,GAAKuC,GAAavC,CAAE,CAC/C,CACA,SAAS2C,GAAqB3C,EAAI,CAC9B,OAAOA,GAAMH,EAAE,iBAAmBG,GAAMH,EAAE,eAC9C,CACA,SAAS+C,GAAqB5C,EAAI,CAC9B,OAAOA,GAAMH,EAAE,eAAiBG,GAAMH,EAAE,aAC5C,CACA,SAASgD,GAAgB7C,EAAI,CACzB,OAAOuC,GAAavC,CAAE,GAAK2C,GAAqB3C,CAAE,GAAK4C,GAAqB5C,CAAE,CAClF,CACA,SAAS8C,GAAa9C,EAAI,CACtB,OAAOA,EAAK,EAChB,CACA,SAASxQ,GAAawQ,EAAI,CACtB,OAAOA,IAAOH,EAAE,OAASG,IAAOH,EAAE,WAAaG,IAAOH,EAAE,YAAcG,IAAOH,EAAE,SACnF,CACA,SAAS/f,GAA8B+gB,EAAQ,CAC3C,OAAOA,IAAWhB,EAAE,aAAehgB,GAAoBghB,CAAM,CACjE,CACA,SAASkC,GAAoC/C,EAAI,CAC7C,OAAOxQ,GAAawQ,CAAE,GAAKA,IAAOH,EAAE,SAAWG,IAAOH,EAAE,iBAC5D,CAEO,IAAMmD,GAAN,KAAgB,CACnB,YAAYnqB,EAAS6nB,EAAS,CAC1B,KAAK,QAAU7nB,EACf,KAAK,QAAU6nB,EACf,KAAK,OAAS,GAEd,KAAK,OAAS,GAOd,KAAK,cAAgB,GACrB,KAAK,iBAAmB,GACxB,KAAK,OAAS,GACd,KAAK,MAAQ2B,EAAM,KACnB,KAAK,YAAcA,EAAM,KACzB,KAAK,YAAc,GACnB,KAAK,sBAAwB,GAC7B,KAAK,sBAAwB,KAC7B,KAAK,aAAe,KACpB,KAAK,YAAc,CAAE,KAAM,GAAI,MAAO,EAAG,EACzC,KAAK,aAAe,IAAI5B,GAAaC,CAAO,EAC5C,KAAK,gBAAkB,KAAK,mBAAmB,EAAE,CACrD,CAEA,KAAK/gB,EAAM,CACP,IAAInC,EAAIK,GACPA,GAAML,EAAK,KAAK,SAAS,gBAAkB,MAAQK,IAAO,QAAkBA,EAAG,KAAKL,EAAI,KAAK,aAAa,SAASmC,CAAI,CAAC,CAC7H,CAEA,mBAAmBY,EAAQ,CACvB,OAAK,KAAK,QAAQ,uBAGX,CACH,UAAW,KAAK,aAAa,KAC7B,SAAU,KAAK,aAAa,IAAMA,EAClC,YAAa,KAAK,aAAa,OAASA,EACxC,QAAS,GACT,OAAQ,GACR,UAAW,EACf,EATW,IAUf,CACA,iBAAkB,CACd,GAAI,MAAK,OAGT,KADA,KAAK,OAAS,GACP,KAAK,QAAU,CAAC,KAAK,QAAQ,CAChC,KAAK,sBAAwB,EAC7B,IAAMyf,EAAK,KAAK,SAAS,EACpB,KAAK,mBAAmB,GACzB,KAAK,WAAWA,CAAE,CAE1B,CACA,KAAK,OAAS,GAClB,CAEA,OAAQ,CACJ,KAAK,OAAS,EAClB,CACA,OAAOiD,EAAe,CAClB,GAAI,CAAC,KAAK,OACN,MAAM,IAAI,MAAM,4BAA4B,EAEhD,KAAK,OAAS,GAEV,MAAK,SAET,KAAK,gBAAgB,EAChB,KAAK,QACwDA,IAAc,EAEpF,CACA,MAAMnC,EAAOC,EAAakC,EAAe,CACrC,KAAK,OAAS,GACd,KAAK,aAAa,MAAMnC,EAAOC,CAAW,EAC1C,KAAK,gBAAgB,EAChB,KAAK,QACwDkC,IAAc,CAEpF,CACA,uBAAuBnC,EAAO,CAC1B,KAAK,OAAS,GACd,KAAK,aAAa,uBAAuBA,CAAK,EAC9C,KAAK,gBAAgB,CACzB,CAEA,oBAAqB,CACjB,OAAI,KAAK,aAAa,eAClB,KAAK,WAAW,KAAK,qBAAqB,EAC1C,KAAK,OAAS,GACP,IAEJ,EACX,CAEA,UAAW,CACP,YAAK,wBACE,KAAK,aAAa,QAAQ,CACrC,CACA,WAAWI,EAAO,CACd,KAAK,uBAAyBA,EAC9B,KAAK,aAAa,QAAQA,CAAK,CACnC,CACA,kBAAkBhU,EAAO8S,EAAI,CACzB,KAAK,MAAQ9S,EACb,KAAK,WAAW8S,CAAE,CACtB,CACA,WAAWkB,EAAO,CACd,KAAK,uBAAyBA,EAC9B,QAAS5iB,EAAI,EAAGA,EAAI4iB,EAAO5iB,IACvB,KAAK,aAAa,QAAQ,CAElC,CACA,wBAAwB0iB,EAASC,EAAe,CAC5C,OAAI,KAAK,aAAa,WAAWD,EAASC,CAAa,GAEnD,KAAK,WAAWD,EAAQ,OAAS,CAAC,EAC3B,IAEJ,EACX,CAEA,sBAAuB,CACnB,KAAK,aAAe,CAChB,KAAMG,EAAU,UAChB,QAAS,GACT,MAAOO,EAAO,QACd,YAAa,GACb,eAAgB,GAChB,MAAO,CAAC,EACR,SAAU,KAAK,mBAAmB,CAAC,CACvC,CACJ,CACA,oBAAqB,CACjB,KAAK,aAAe,CAChB,KAAMP,EAAU,QAChB,QAAS,GACT,MAAOO,EAAO,QACd,YAAa,GACb,eAAgB,GAChB,MAAO,CAAC,EACR,SAAU,KAAK,mBAAmB,CAAC,CACvC,CACJ,CACA,oBAAoBnhB,EAAQ,CACxB,KAAK,aAAe,CAChB,KAAM4gB,EAAU,QAChB,KAAM,GACN,SAAU,KAAK,mBAAmB5gB,CAAM,CAC5C,CACJ,CACA,oBAAoB2iB,EAAa,CAC7B,KAAK,aAAe,CAChB,KAAM/B,EAAU,QAChB,KAAM+B,EACN,YAAa,GACb,SAAU,KACV,SAAU,KACV,SAAU,KAAK,eACnB,CACJ,CACA,sBAAsBtlB,EAAMulB,EAAO,CAC/B,KAAK,sBAAwB,CACzB,KAAAvlB,EACA,MAAAulB,EACA,SAAU,KAAK,eACnB,CACJ,CAEA,YAAYC,EAAiB,CACzB,KAAK,YAAc,CACf,KAAMA,EACN,MAAO,EACX,EACA,KAAK,gBAAkB,KAAK,mBAAmB,CAAC,CACpD,CACA,gBAAiB,CACb,IAAI5lB,EACAK,EACJ,IAAM0T,EAAQ,KAAK,aACnB,GAAI6P,GAAa7P,EAAO,KAAK,YAAY,IAAI,IAAM,MAE/C,GADAA,EAAM,MAAM,KAAK,KAAK,WAAW,EAC7BA,EAAM,UAAY,KAAK,gBAAiB,CACxC,IAAM8R,GAAkB7lB,GAAMK,EAAK0T,EAAM,UAAU,SAAW,MAAQ/T,IAAO,OAASA,EAAMK,EAAG,MAAQ,OAAO,OAAO,IAAI,EACzHwlB,EAAc,KAAK,YAAY,IAAI,EAAI,KAAK,gBAE5C,KAAK,gBAAgB,CACzB,OAGA,KAAK,KAAK9C,EAAI,kBAAkB,CAExC,CACA,iBAAkB,CACV,KAAK,kBACL,KAAK,gBAAgB,QAAU,KAAK,aAAa,KACjD,KAAK,gBAAgB,OAAS,KAAK,aAAa,IAChD,KAAK,gBAAgB,UAAY,KAAK,aAAa,OAE3D,CAEA,aAAa+C,EAAI,CACb,KAAK,2BAA2BA,EAAG,QAAQ,EAC3C,KAAK,aAAe,KAChBA,EAAG,WACHA,EAAG,SAAS,QAAU,KAAK,aAAa,KACxCA,EAAG,SAAS,OAAS,KAAK,aAAa,IAAM,EAC7CA,EAAG,SAAS,UAAY,KAAK,aAAa,OAAS,GAEvD,KAAK,gBAAkB,KAAK,mBAAmB,EAAE,CACrD,CACA,qBAAsB,CAClB,IAAMA,EAAK,KAAK,aAChB,KAAK,aAAaA,CAAE,EACpBA,EAAG,MAAQ1B,GAAS0B,EAAG,OAAO,EAC1BA,EAAG,OAASnC,EAAU,WACtB,KAAK,iBAAmBmC,EAAG,QAC3B,KAAK,QAAQ,WAAWA,CAAE,IAGtBA,EAAG,MAAM,OAAS,GAClB,KAAK,KAAK/C,EAAI,oBAAoB,EAElC+C,EAAG,aACH,KAAK,KAAK/C,EAAI,yBAAyB,EAE3C,KAAK,QAAQ,SAAS+C,CAAE,GAE5B,KAAK,aAAa,gBAAgB,CACtC,CACA,mBAAmBA,EAAI,CACnB,KAAK,aAAaA,CAAE,EACpB,KAAK,QAAQ,UAAUA,CAAE,EACzB,KAAK,aAAa,gBAAgB,CACtC,CACA,mBAAmBA,EAAI,CACnB,KAAK,aAAaA,CAAE,EACpB,KAAK,QAAQ,UAAUA,CAAE,EACzB,KAAK,aAAa,gBAAgB,CACtC,CACA,2BAA2BC,EAAc,CACrC,GAAI,KAAK,sBAAuB,CAQ5B,OALIA,GAAgB,KAAK,sBAAsB,WAC3C,KAAK,sBAAsB,SAAS,QAAUA,EAAa,UAC3D,KAAK,sBAAsB,SAAS,OAASA,EAAa,SAC1D,KAAK,sBAAsB,SAAS,UAAYA,EAAa,aAEzD,KAAK,sBAAsB,KAAM,CACrC,KAAKpC,EAAU,UAAW,CACtB,KAAK,QAAQ,YAAY,KAAK,qBAAqB,EACnD,KACJ,CACA,KAAKA,EAAU,eAAgB,CAC3B,KAAK,QAAQ,gBAAgB,KAAK,qBAAqB,EACvD,KACJ,CACA,KAAKA,EAAU,qBAAsB,CACjC,KAAK,QAAQ,sBAAsB,KAAK,qBAAqB,EAC7D,KACJ,CACJ,CACA,KAAK,sBAAwB,IACjC,CACJ,CACA,eAAgB,CACZ,IAAMqC,EAAW,KAAK,mBAAmB,CAAC,EACtCA,IACAA,EAAS,QAAUA,EAAS,UAC5BA,EAAS,OAASA,EAAS,SAC3BA,EAAS,UAAYA,EAAS,aAElC,KAAK,2BAA2BA,CAAQ,EACxC,KAAK,QAAQ,MAAM,CAAE,KAAMrC,EAAU,IAAK,SAAAqC,CAAS,CAAC,EACpD,KAAK,OAAS,EAClB,CAUA,mCAAmC5lB,EAAM6lB,EAAI,CACzC,GAAI,KAAK,sBACL,GAAI,KAAK,sBAAsB,OAAS7lB,EACpC,KAAK,gBAAkB,KAAK,mBAAmB,CAAC,EAChD,KAAK,2BAA2B,KAAK,eAAe,EACpD,KAAK,aAAa,gBAAgB,MAEjC,CACD,KAAK,sBAAsB,OAAS6lB,EACpC,MACJ,CAEJ,KAAK,sBAAsB7lB,EAAM6lB,CAAE,CACvC,CACA,eAAezD,EAAI,CACf,IAAMpiB,EAAO4R,GAAawQ,CAAE,EACtBmB,EAAU,qBACVnB,IAAOH,EAAE,KACLsB,EAAU,eACVA,EAAU,UACpB,KAAK,mCAAmCvjB,EAAM,OAAO,cAAcoiB,CAAE,CAAC,CAC1E,CAGA,WAAWyD,EAAI,CACX,KAAK,mCAAmCtC,EAAU,UAAWsC,CAAE,CACnE,CAEA,8BAA8BzD,EAAI,CAC9B,IAAIhiB,EAAS,KACT0lB,EAAS,EACTC,EAAmB,GACvB,QAASrlB,EAAI,EAAG0C,EAAUjC,EAAe,CAAC,EAAGT,GAAK,IAC9CA,EAAI4C,GAAgBnC,EAAgBiC,EAAS1C,EAAI,EAAG0hB,CAAE,EAClD,EAAA1hB,EAAI,IAFyC0hB,EAAK,KAAK,SAAS,EAAG,CAIvE0D,GAAU,EACV1iB,EAAUjC,EAAeT,CAAC,EAC1B,IAAMslB,EAAS5iB,EAAUvB,EAAa,aAEtC,GAAImkB,EAAQ,CAER,IAAM3iB,GAAe2iB,GAAU,IAAM,EAuBrC,GApBI5D,IAAOH,EAAE,WACT,KAAK,iCAAiC,GACtC/f,GAA8B,KAAK,aAAa,KAAK,CAAC,CAAC,GAGvD9B,EAAS,CAAC6hB,EAAE,SAAS,EAErBvhB,GAAK2C,IAILjD,EACIiD,IAAgB,EACV,CAAClC,EAAeT,CAAC,EAAI,CAACmB,EAAa,YAAY,EAC/CwB,IAAgB,EACZ,CAAClC,EAAe,EAAET,CAAC,CAAC,EACpB,CAACS,EAAe,EAAET,CAAC,EAAGS,EAAe,EAAET,CAAC,CAAC,EACvDolB,EAAS,EACTC,EAAmB3D,IAAOH,EAAE,WAE5B5e,IAAgB,EAAG,CAEnB,KAAK,SAAS,EACd,KACJ,CACJ,CACJ,CACA,YAAK,WAAWyiB,CAAM,EAClBC,GAAoB,CAAC,KAAK,aAAa,eACvC,KAAK,KAAKpD,EAAI,uCAAuC,EAKzD,KAAK,WAAW,CAAC,EACVviB,CACX,CACA,kCAAmC,CAC/B,OAAQ,KAAK,cAAgBqkB,EAAM,+BAC/B,KAAK,cAAgBA,EAAM,+BAC3B,KAAK,cAAgBA,EAAM,wBACnC,CACA,4CAA4CrC,EAAI,CACxC,KAAK,iCAAiC,EACtC,KAAK,YAAY,OAAS,OAAO,cAAcA,CAAE,EAGjD,KAAK,eAAeA,CAAE,CAE9B,CAEA,WAAWA,EAAI,CACX,OAAQ,KAAK,MAAO,CAChB,KAAKqC,EAAM,KAAM,CACb,KAAK,WAAWrC,CAAE,EAClB,KACJ,CACA,KAAKqC,EAAM,OAAQ,CACf,KAAK,aAAarC,CAAE,EACpB,KACJ,CACA,KAAKqC,EAAM,QAAS,CAChB,KAAK,cAAcrC,CAAE,EACrB,KACJ,CACA,KAAKqC,EAAM,YAAa,CACpB,KAAK,iBAAiBrC,CAAE,EACxB,KACJ,CACA,KAAKqC,EAAM,UAAW,CAClB,KAAK,gBAAgBrC,CAAE,EACvB,KACJ,CACA,KAAKqC,EAAM,SAAU,CACjB,KAAK,cAAcrC,CAAE,EACrB,KACJ,CACA,KAAKqC,EAAM,aAAc,CACrB,KAAK,iBAAiBrC,CAAE,EACxB,KACJ,CACA,KAAKqC,EAAM,SAAU,CACjB,KAAK,cAAcrC,CAAE,EACrB,KACJ,CACA,KAAKqC,EAAM,sBAAuB,CAC9B,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,uBAAuBrC,CAAE,EAC9B,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,uBAAuBrC,CAAE,EAC9B,KACJ,CACA,KAAKqC,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BrC,CAAE,EACjC,KACJ,CACA,KAAKqC,EAAM,qBAAsB,CAC7B,KAAK,wBAAwBrC,CAAE,EAC/B,KACJ,CACA,KAAKqC,EAAM,qBAAsB,CAC7B,KAAK,wBAAwBrC,CAAE,EAC/B,KACJ,CACA,KAAKqC,EAAM,2BAA4B,CACnC,KAAK,6BAA6BrC,CAAE,EACpC,KACJ,CACA,KAAKqC,EAAM,yBAA0B,CACjC,KAAK,2BAA2BrC,CAAE,EAClC,KACJ,CACA,KAAKqC,EAAM,yBAA0B,CACjC,KAAK,2BAA2BrC,CAAE,EAClC,KACJ,CACA,KAAKqC,EAAM,yBAA0B,CACjC,KAAK,4BAA4BrC,CAAE,EACnC,KACJ,CACA,KAAKqC,EAAM,8BAA+B,CACtC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,wBAAwBrC,CAAE,EAC/B,KACJ,CACA,KAAKqC,EAAM,yBAA0B,CACjC,KAAK,4BAA4BrC,CAAE,EACnC,KACJ,CACA,KAAKqC,EAAM,8BAA+B,CACtC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,mCAAoC,CAC3C,KAAK,oCAAoCrC,CAAE,EAC3C,KACJ,CACA,KAAKqC,EAAM,iCAAkC,CACzC,KAAK,kCAAkCrC,CAAE,EACzC,KACJ,CACA,KAAKqC,EAAM,iCAAkC,CACzC,KAAK,kCAAkCrC,CAAE,EACzC,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,kCAAkCrC,CAAE,EACzC,KACJ,CACA,KAAKqC,EAAM,2BAA4B,CACnC,KAAK,8BAA8BrC,CAAE,EACrC,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,kCAAkCrC,CAAE,EACzC,KACJ,CACA,KAAKqC,EAAM,qCAAsC,CAC7C,KAAK,sCAAsCrC,CAAE,EAC7C,KACJ,CACA,KAAKqC,EAAM,0CAA2C,CAClD,KAAK,0CAA0CrC,CAAE,EACjD,KACJ,CACA,KAAKqC,EAAM,8BAA+B,CACtC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,sBAAuB,CAC9B,KAAK,0BAA0BrC,CAAE,EACjC,KACJ,CACA,KAAKqC,EAAM,eAAgB,CACvB,KAAK,oBAAoBrC,CAAE,EAC3B,KACJ,CACA,KAAKqC,EAAM,qBAAsB,CAC7B,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKqC,EAAM,uBAAwB,CAC/B,KAAK,2BAA2BrC,CAAE,EAClC,KACJ,CACA,KAAKqC,EAAM,8BAA+B,CACtC,KAAK,iCAAiCrC,CAAE,EACxC,KACJ,CACA,KAAKqC,EAAM,8BAA+B,CACtC,KAAK,iCAAiCrC,CAAE,EACxC,KACJ,CACA,KAAKqC,EAAM,yBAA0B,CACjC,KAAK,6BAA6BrC,CAAE,EACpC,KACJ,CACA,KAAKqC,EAAM,6BAA8B,CACrC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BrC,CAAE,EACjC,KACJ,CACA,KAAKqC,EAAM,cAAe,CACtB,KAAK,mBAAmBrC,CAAE,EAC1B,KACJ,CACA,KAAKqC,EAAM,wBAAyB,CAChC,KAAK,4BAA4BrC,CAAE,EACnC,KACJ,CACA,KAAKqC,EAAM,cAAe,CACtB,KAAK,mBAAmBrC,CAAE,EAC1B,KACJ,CACA,KAAKqC,EAAM,mBAAoB,CAC3B,KAAK,uBAAuBrC,CAAE,EAC9B,KACJ,CACA,KAAKqC,EAAM,QAAS,CAChB,KAAK,cAAcrC,CAAE,EACrB,KACJ,CACA,KAAKqC,EAAM,uBAAwB,CAC/B,KAAK,0BAA0BrC,CAAE,EACjC,KACJ,CACA,KAAKqC,EAAM,4BAA6B,CACpC,KAAK,8BAA8BrC,CAAE,EACrC,KACJ,CACA,KAAKqC,EAAM,iCAAkC,CACzC,KAAK,kCAAkCrC,CAAE,EACzC,KACJ,CACA,KAAKqC,EAAM,sCAAuC,CAC9C,KAAK,sCAAsCrC,CAAE,EAC7C,KACJ,CACA,KAAKqC,EAAM,iBAAkB,CACzB,KAAK,qBAAqBrC,CAAE,EAC5B,KACJ,CACA,KAAKqC,EAAM,YAAa,CACpB,KAAK,iBAAiBrC,CAAE,EACxB,KACJ,CACA,KAAKqC,EAAM,iBAAkB,CACzB,KAAK,qBAAqBrC,CAAE,EAC5B,KACJ,CACA,KAAKqC,EAAM,QAAS,CAChB,KAAK,cAAcrC,CAAE,EACrB,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,wBAAwBrC,CAAE,EAC/B,KACJ,CACA,KAAKqC,EAAM,aAAc,CACrB,KAAK,kBAAkBrC,CAAE,EACzB,KACJ,CACA,KAAKqC,EAAM,mBAAoB,CAC3B,KAAK,uBAAuBrC,CAAE,EAC9B,KACJ,CACA,KAAKqC,EAAM,6BAA8B,CACrC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,iCAAkC,CACzC,KAAK,oCAAoCrC,CAAE,EAC3C,KACJ,CACA,KAAKqC,EAAM,wCAAyC,CAChD,KAAK,0CAA0CrC,CAAE,EACjD,KACJ,CACA,KAAKqC,EAAM,wCAAyC,CAChD,KAAK,0CAA0CrC,CAAE,EACjD,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,mCAAmCrC,CAAE,EAC1C,KACJ,CACA,KAAKqC,EAAM,8CAA+C,CACtD,KAAK,+CAA+CrC,CAAE,EACtD,KACJ,CACA,KAAKqC,EAAM,6BAA8B,CACrC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,iCAAkC,CACzC,KAAK,oCAAoCrC,CAAE,EAC3C,KACJ,CACA,KAAKqC,EAAM,wCAAyC,CAChD,KAAK,0CAA0CrC,CAAE,EACjD,KACJ,CACA,KAAKqC,EAAM,wCAAyC,CAChD,KAAK,0CAA0CrC,CAAE,EACjD,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,mCAAmCrC,CAAE,EAC1C,KACJ,CACA,KAAKqC,EAAM,cAAe,CACtB,KAAK,mBAAmBrC,CAAE,EAC1B,KACJ,CACA,KAAKqC,EAAM,cAAe,CACtB,KAAK,mBAAmBrC,CAAE,EAC1B,KACJ,CACA,KAAKqC,EAAM,sBAAuB,CAC9B,KAAK,0BAA0BrC,CAAE,EACjC,KACJ,CACA,KAAKqC,EAAM,kBAAmB,CAC1B,KAAK,sBAAsBrC,CAAE,EAC7B,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKqC,EAAM,0BAA2B,CAClC,KAAK,8BAA8BrC,CAAE,EACrC,KACJ,CACA,KAAKqC,EAAM,oBAAqB,CAC5B,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKqC,EAAM,4BAA6B,CACpC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,sCAAuC,CAC9C,KAAK,yCAAyCrC,CAAE,EAChD,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,oCAAoCrC,CAAE,EAC3C,KACJ,CACA,KAAKqC,EAAM,4BAA6B,CACpC,KAAK,gCAAgCrC,CAAE,EACvC,KACJ,CACA,KAAKqC,EAAM,gCAAiC,CACxC,KAAK,mCAAmCrC,CAAE,EAC1C,KACJ,CACA,QACI,MAAM,IAAI,MAAM,eAAe,CAEvC,CACJ,CAIA,WAAWA,EAAI,CACX,OAAQA,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,SACnB,KACJ,CACA,KAAKxC,EAAE,UAAW,CACd,KAAK,YAAcwC,EAAM,KACzB,KAAK,MAAQA,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,eAAeP,CAAE,EACtB,KACJ,CACA,KAAKH,EAAE,IAAK,CACR,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeG,CAAE,CAE9B,CACJ,CAGA,aAAaA,EAAI,CACb,OAAQA,EAAI,CACR,KAAKH,EAAE,UAAW,CACd,KAAK,YAAcwC,EAAM,OACzB,KAAK,MAAQA,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,sBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeG,CAAE,CAE9B,CACJ,CAGA,cAAcA,EAAI,CACd,OAAQA,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeG,CAAE,CAE9B,CACJ,CAGA,iBAAiBA,EAAI,CACjB,OAAQA,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,2BACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeG,CAAE,CAE9B,CACJ,CAGA,gBAAgBA,EAAI,CAChB,OAAQA,EAAI,CACR,KAAKH,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeG,CAAE,CAE9B,CACJ,CAGA,cAAcA,EAAI,CACd,GAAI0C,GAAc1C,CAAE,EAChB,KAAK,qBAAqB,EAC1B,KAAK,MAAQqC,EAAM,SACnB,KAAK,cAAcrC,CAAE,MAGrB,QAAQA,EAAI,CACR,KAAKH,EAAE,iBAAkB,CACrB,KAAK,MAAQwC,EAAM,wBACnB,KACJ,CACA,KAAKxC,EAAE,QAAS,CACZ,KAAK,MAAQwC,EAAM,aACnB,KACJ,CACA,KAAKxC,EAAE,cAAe,CAClB,KAAK,KAAKU,EAAI,sCAAsC,EACpD,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQ8B,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,EAC1B,KACJ,CACA,KAAKH,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,gBAAgB,EAC9B,KAAK,WAAW,GAAG,EACnB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKA,EAAI,8BAA8B,EAC5C,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQ8B,EAAM,KACnB,KAAK,WAAWrC,CAAE,CAE1B,CACR,CAGA,iBAAiBA,EAAI,CACjB,GAAI0C,GAAc1C,CAAE,EAChB,KAAK,mBAAmB,EACxB,KAAK,MAAQqC,EAAM,SACnB,KAAK,cAAcrC,CAAE,MAGrB,QAAQA,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,iBAAiB,EAC/B,KAAK,MAAQ8B,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,gBAAgB,EAC9B,KAAK,WAAW,IAAI,EACpB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKA,EAAI,8BAA8B,EAC5C,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQ8B,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACR,CAGA,cAAcA,EAAI,CACd,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,sBACnB,KACJ,CACA,KAAKxC,EAAE,QAAS,CACZ,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,SAAWqO,EACjB,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACIhP,EAAM,SAAW,OAAO,cAAciR,GAAaxC,CAAE,EAAI8C,GAAa9C,CAAE,EAAIA,CAAE,CAEtF,CACJ,CAGA,yBAAyBA,EAAI,CACrBA,IAAOH,EAAE,QACT,KAAK,MAAQwC,EAAM,qBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,OACnB,KAAK,aAAarC,CAAE,EAE5B,CAGA,uBAAuBA,EAAI,CACnB0C,GAAc1C,CAAE,GAChB,KAAK,MAAQqC,EAAM,oBACnB,KAAK,uBAAuBrC,CAAE,IAG9B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,OACnB,KAAK,aAAarC,CAAE,EAE5B,CACA,oBAAoB6D,EAAK,CACrB,GAAI,CAAC,KAAK,aAAa,WAAW,KAAK,iBAAkB,EAAK,EAC1D,MAAO,CAAC,KAAK,mBAAmB,EAEpC,KAAK,mBAAmB,EACxB,IAAMtS,EAAQ,KAAK,aAGnB,OAFAA,EAAM,QAAU,KAAK,iBACV,KAAK,aAAa,KAAK,KAAK,iBAAiB,MAAM,EAClD,CACR,KAAKsO,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,MAAQwC,EAAM,sBACZ,GAEX,KAAKxC,EAAE,QACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,MAAQwC,EAAM,uBACZ,GAEX,KAAKxC,EAAE,kBACH,YAAK,WAAW,KAAK,iBAAiB,MAAM,EAC5C,KAAK,oBAAoB,EACzB,KAAK,MAAQwC,EAAM,KACZ,GAEX,QACI,MAAO,CAAC,KAAK,mBAAmB,CAExC,CACJ,CAGA,uBAAuBrC,EAAI,CACnB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,OACnB,KAAK,aAAarC,CAAE,EAE5B,CAGA,0BAA0BA,EAAI,CACtBA,IAAOH,EAAE,QACT,KAAK,MAAQwC,EAAM,sBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,QACnB,KAAK,cAAcrC,CAAE,EAE7B,CAGA,wBAAwBA,EAAI,CACpB0C,GAAc1C,CAAE,GAChB,KAAK,MAAQqC,EAAM,qBACnB,KAAK,wBAAwBrC,CAAE,IAG/B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,QACnB,KAAK,cAAcrC,CAAE,EAE7B,CAGA,wBAAwBA,EAAI,CACpB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,QACnB,KAAK,cAAcrC,CAAE,EAE7B,CAGA,6BAA6BA,EAAI,CAC7B,OAAQA,EAAI,CACR,KAAKH,EAAE,QAAS,CACZ,KAAK,MAAQwC,EAAM,yBACnB,KACJ,CACA,KAAKxC,EAAE,iBAAkB,CACrB,KAAK,MAAQwC,EAAM,yBACnB,KAAK,WAAW,IAAI,EACpB,KACJ,CACA,QACI,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,CAEhC,CACJ,CAGA,2BAA2BA,EAAI,CACvB0C,GAAc1C,CAAE,GAChB,KAAK,MAAQqC,EAAM,yBACnB,KAAK,2BAA2BrC,CAAE,IAGlC,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,EAEhC,CAGA,2BAA2BA,EAAI,CACvB,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,EAEhC,CAGA,4BAA4BA,EAAI,CACxBA,IAAOH,EAAE,cACT,KAAK,MAAQwC,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,EAEhC,CAGA,gCAAgCA,EAAI,CAC5BA,IAAOH,EAAE,cACT,KAAK,MAAQwC,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,EAEhC,CAGA,wBAAwBA,EAAI,CACxB,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,yBACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,mCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAE9B,CACJ,CAGA,4BAA4BA,EAAI,CAC5B,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,8BACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,mCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,MAAQ8B,EAAM,oBACnB,KAAK,WAAWzC,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,MAAQ8B,EAAM,oBACnB,KAAK,eAAerC,CAAE,CAE9B,CACJ,CAGA,gCAAgCA,EAAI,CAChC,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,mCACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,YACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,MAAQ8B,EAAM,oBACnB,KAAK,WAAWzC,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,MAAQ8B,EAAM,oBACnB,KAAK,eAAerC,CAAE,CAE9B,CACJ,CAGA,oCAAoCA,EAAI,CAChCA,IAAOH,EAAE,QACT,KAAK,MAAQwC,EAAM,iCAEdK,GAAc1C,CAAE,GACrB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQqC,EAAM,gCACnB,KAAK,kCAAkCrC,CAAE,IAGzC,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQqC,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAC9B0C,GAAc1C,CAAE,GAChB,KAAK,MAAQqC,EAAM,iCACnB,KAAK,kCAAkCrC,CAAE,IAGzC,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAC9B,KAAK,oBAAoBA,CAAE,IAC3B,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQqC,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,EAEvC,CAGA,kCAAkCA,EAAI,CAClC,GAAI,KAAK,aAAa,WAAWF,EAAG,OAAQ,EAAK,GAC7CiD,GAAoC,KAAK,aAAa,KAAKjD,EAAG,OAAO,MAAM,CAAC,EAAG,CAC/E,KAAK,eAAeE,CAAE,EACtB,QAAS1hB,EAAI,EAAGA,EAAIwhB,EAAG,OAAO,OAAQxhB,IAClC,KAAK,eAAe,KAAK,SAAS,CAAC,EAEvC,KAAK,MAAQ+jB,EAAM,0BACvB,MACU,KAAK,mBAAmB,IAC9B,KAAK,MAAQA,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,EAEvC,CAGA,8BAA8BA,EAAI,CAC9B,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,gCACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,WAAWX,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAE9B,CACJ,CAGA,kCAAkCA,EAAI,CAClC,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,qCACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,MAAQ8B,EAAM,2BACnB,KAAK,WAAWzC,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,MAAQ8B,EAAM,2BACnB,KAAK,eAAerC,CAAE,CAE9B,CACJ,CAGA,sCAAsCA,EAAI,CACtC,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,0CACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,YACnB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,MAAQ8B,EAAM,2BACnB,KAAK,WAAWzC,CAAqB,EACrC,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,8BAA8B,EAC5C,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,MAAQ8B,EAAM,2BACnB,KAAK,eAAerC,CAAE,CAE9B,CACJ,CAGA,0CAA0CA,EAAI,CACtCA,IAAOH,EAAE,SACT,KAAK,MAAQwC,EAAM,8BACnB,KAAK,WAAW,GAAG,IAGnB,KAAK,MAAQA,EAAM,2BACnB,KAAK,8BAA8BrC,CAAE,EAE7C,CAGA,gCAAgCA,EAAI,CAChC,GAAI,KAAK,aAAa,WAAWF,EAAG,OAAQ,EAAK,GAC7CiD,GAAoC,KAAK,aAAa,KAAKjD,EAAG,OAAO,MAAM,CAAC,EAAG,CAC/E,KAAK,eAAeE,CAAE,EACtB,QAAS1hB,EAAI,EAAGA,EAAIwhB,EAAG,OAAO,OAAQxhB,IAClC,KAAK,eAAe,KAAK,SAAS,CAAC,EAEvC,KAAK,MAAQ+jB,EAAM,mBACvB,MACU,KAAK,mBAAmB,IAC9B,KAAK,MAAQA,EAAM,2BACnB,KAAK,8BAA8BrC,CAAE,EAE7C,CAGA,0BAA0BA,EAAI,CAC1B,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,QACP,KAAKA,EAAE,kBACP,KAAKA,EAAE,IAAK,CACR,KAAK,MAAQwC,EAAM,qBACnB,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKH,EAAE,YAAa,CAChB,KAAK,KAAKU,EAAI,uCAAuC,EACrD,KAAK,YAAY,GAAG,EACpB,KAAK,MAAQ8B,EAAM,eACnB,KACJ,CACA,QACI,KAAK,YAAY,EAAE,EACnB,KAAK,MAAQA,EAAM,eACnB,KAAK,oBAAoBrC,CAAE,CAEnC,CACJ,CAGA,oBAAoBA,EAAI,CACpB,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UACP,KAAKA,EAAE,QACP,KAAKA,EAAE,kBACP,KAAKA,EAAE,IAAK,CACR,KAAK,eAAe,EACpB,KAAK,MAAQwC,EAAM,qBACnB,KAAK,yBAAyBrC,CAAE,EAChC,KACJ,CACA,KAAKH,EAAE,YAAa,CAChB,KAAK,eAAe,EACpB,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,eACP,KAAKA,EAAE,WACP,KAAKA,EAAE,eAAgB,CACnB,KAAK,KAAKU,EAAI,kCAAkC,EAChD,KAAK,YAAY,MAAQ,OAAO,cAAcP,CAAE,EAChD,KACJ,CACA,KAAKH,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,YAAY,MAAQX,EACzB,KACJ,CACA,QACI,KAAK,YAAY,MAAQ,OAAO,cAAc4C,GAAaxC,CAAE,EAAI8C,GAAa9C,CAAE,EAAIA,CAAE,CAE9F,CACJ,CAGA,yBAAyBA,EAAI,CACzB,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,QAAS,CACZ,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,YAAa,CAChB,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,YAAY,EAAE,EACnB,KAAK,MAAQ8B,EAAM,eACnB,KAAK,oBAAoBrC,CAAE,CAEnC,CACJ,CAGA,2BAA2BA,EAAI,CAC3B,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,8BACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACf,KAAK,MAAQwC,EAAM,8BACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,qBAAqB,EACnC,KAAK,MAAQ8B,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,QACI,KAAK,MAAQA,EAAM,yBACnB,KAAK,6BAA6BrC,CAAE,CAE5C,CACJ,CAGA,iCAAiCA,EAAI,CACjC,OAAQA,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,6BACnB,KACJ,CACA,KAAKxC,EAAE,UAAW,CACd,KAAK,YAAcwC,EAAM,8BACzB,KAAK,MAAQA,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,EAC1B,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEzD,CACJ,CAGA,iCAAiCA,EAAI,CACjC,OAAQA,EAAI,CACR,KAAKH,EAAE,WAAY,CACf,KAAK,MAAQwC,EAAM,6BACnB,KACJ,CACA,KAAKxC,EAAE,UAAW,CACd,KAAK,YAAcwC,EAAM,8BACzB,KAAK,MAAQA,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,EAC1B,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEzD,CACJ,CAGA,6BAA6BA,EAAI,CAC7B,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,gBAAgB,EACrB,KAAK,MAAQwC,EAAM,sBACnB,KACJ,CACA,KAAKxC,EAAE,UAAW,CACd,KAAK,YAAcwC,EAAM,yBACzB,KAAK,MAAQA,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,gBAAgB,EACrB,KAAK,MAAQwC,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,YAAY,OAASX,EAC1B,KACJ,CACA,KAAKC,EAAE,eACP,KAAKA,EAAE,WACP,KAAKA,EAAE,eACP,KAAKA,EAAE,YACP,KAAKA,EAAE,aAAc,CACjB,KAAK,KAAKU,EAAI,2CAA2C,EACzD,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,EACjD,KACJ,CACA,KAAKH,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,YAAY,OAAS,OAAO,cAAcP,CAAE,CAEzD,CACJ,CAGA,gCAAgCA,EAAI,CAChC,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,gBAAgB,EACrB,KAAK,MAAQwC,EAAM,sBACnB,KACJ,CACA,KAAKxC,EAAE,QAAS,CACZ,KAAK,gBAAgB,EACrB,KAAK,MAAQwC,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,gBAAgB,EACrB,KAAK,MAAQwC,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKA,EAAI,kCAAkC,EAChD,KAAK,MAAQ8B,EAAM,sBACnB,KAAK,0BAA0BrC,CAAE,CAEzC,CACJ,CAGA,0BAA0BA,EAAI,CAC1B,OAAQA,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,IAAMtO,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,KACnB,KAAK,oBAAoB,EACzB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,QAAQ,EACtB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKA,EAAI,sBAAsB,EACpC,KAAK,MAAQ8B,EAAM,sBACnB,KAAK,0BAA0BrC,CAAE,CAEzC,CACJ,CAGA,mBAAmBA,EAAI,CACnB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,mBAAmBtO,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,KAAKsO,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,MAAQqO,EACd,KACJ,CACA,QACIrO,EAAM,MAAQ,OAAO,cAAcyO,CAAE,CAE7C,CACJ,CAGA,4BAA4BA,EAAI,CACxB,KAAK,wBAAwBF,EAAG,UAAW,EAAI,GAC/C,KAAK,oBAAoBA,EAAG,UAAU,OAAS,CAAC,EAChD,KAAK,MAAQuC,EAAM,eAEd,KAAK,wBAAwBvC,EAAG,QAAS,EAAK,GAEnD,KAAK,gBAAkB,KAAK,mBAAmBA,EAAG,QAAQ,OAAS,CAAC,EACpE,KAAK,MAAQuC,EAAM,SAEd,KAAK,wBAAwBvC,EAAG,YAAa,EAAI,EAClD,KAAK,cACL,KAAK,MAAQuC,EAAM,eAGnB,KAAK,KAAK9B,EAAI,kBAAkB,EAChC,KAAK,oBAAoBT,EAAG,YAAY,OAAS,CAAC,EAClD,KAAK,aAAa,KAAO,UACzB,KAAK,MAAQuC,EAAM,eAKjB,KAAK,mBAAmB,IAC9B,KAAK,KAAK9B,EAAI,wBAAwB,EACtC,KAAK,oBAAoB,CAAC,EAC1B,KAAK,MAAQ8B,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,EAElC,CAGA,mBAAmBA,EAAI,CACnB,OAAQA,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,mBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,2BAA2B,EACzC,KAAK,MAAQ8B,EAAM,KACnB,IAAM9Q,EAAQ,KAAK,aACnB,KAAK,mBAAmBA,CAAK,EAC7B,KACJ,CACA,QACI,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,uBAAuBA,EAAI,CACvB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,YACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,2BAA2B,EACzC,KAAK,MAAQ8B,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,mBAAmBhP,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,IACd,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,cAAcA,EAAI,CACd,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,iBACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnBtO,EAAM,MAAQ,IACd,KAAK,MAAQ8Q,EAAM,uBACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,MAAQqO,EACd,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,mBAAmBhP,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,OAAO,cAAcyO,CAAE,CAE7C,CACJ,CAGA,0BAA0BA,EAAI,CAC1B,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,iBAAkB,CACrBtO,EAAM,MAAQ,IACd,KAAK,MAAQ8Q,EAAM,4BACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnBtO,EAAM,MAAQ,IACd,KACJ,CACA,QACI,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,8BAA8BA,EAAI,CAC1BA,IAAOH,EAAE,aACT,KAAK,MAAQwC,EAAM,kCAGnB,KAAK,MAAQA,EAAM,QACnB,KAAK,cAAcrC,CAAE,EAE7B,CAGA,kCAAkCA,EAAI,CAC9BA,IAAOH,EAAE,aACT,KAAK,MAAQwC,EAAM,uCAGnB,KAAK,MAAQA,EAAM,iBACnB,KAAK,qBAAqBrC,CAAE,EAEpC,CAGA,sCAAsCA,EAAI,CAClCA,IAAOH,EAAE,mBAAqBG,IAAOH,EAAE,KACvC,KAAK,KAAKU,EAAI,aAAa,EAE/B,KAAK,MAAQ8B,EAAM,YACnB,KAAK,iBAAiBrC,CAAE,CAC5B,CAGA,qBAAqBA,EAAI,CACrB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,aAAc,CACjB,KAAK,MAAQwC,EAAM,YACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,mBAAmBhP,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,IACd,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,iBAAiBA,EAAI,CACjB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,iBAAkB,CACrB,KAAK,MAAQwC,EAAM,iBACnB,KACJ,CACA,KAAKxC,EAAE,aAAc,CACjBtO,EAAM,MAAQ,IACd,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,mBAAmBhP,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,KACd,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,qBAAqBA,EAAI,CACrB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,aAAc,CACjBtO,EAAM,MAAQ,MACd,KAAK,MAAQ8Q,EAAM,iBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,wBAAwB,EACtC,KAAK,MAAQ8B,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,mBAAmBhP,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,MACd,KAAK,MAAQ8Q,EAAM,QACnB,KAAK,cAAcrC,CAAE,CAE7B,CACJ,CAGA,cAAcA,EAAI,CACd,OAAQA,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,oBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,EAC/B,KACJ,CACA,KAAKH,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,oBAAoB,IAAI,EAC7B,IAAMhP,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,kCAAkC,EAChD,KAAK,MAAQ8B,EAAM,oBACnB,KAAK,wBAAwBrC,CAAE,CAEvC,CACJ,CAGA,wBAAwBA,EAAI,CACxB,GAAIwC,GAAaxC,CAAE,EACf,KAAK,oBAAoB,OAAO,aAAa8C,GAAa9C,CAAE,CAAC,CAAC,EAC9D,KAAK,MAAQqC,EAAM,iBAGnB,QAAQrC,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KAAK,oBAAoBX,CAAqB,EAC9C,KAAK,MAAQyC,EAAM,aACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,kBAAkB,EAChC,KAAK,oBAAoB,IAAI,EAC7B,IAAMhP,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1B,KAAK,oBAAoB,IAAI,EAC7B,IAAMhP,EAAQ,KAAK,aACnBA,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,oBAAoB,OAAO,cAAcyO,CAAE,CAAC,EACjD,KAAK,MAAQqC,EAAM,YAE3B,CACR,CAGA,kBAAkBrC,EAAI,CAClB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,mBACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,MAAQqO,EACd,KACJ,CACA,KAAKC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,MAAQ,OAAO,cAAciR,GAAaxC,CAAE,EAAI8C,GAAa9C,CAAE,EAAIA,CAAE,CAEnF,CACJ,CAGA,uBAAuBA,EAAI,CACvB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACQ,KAAK,wBAAwBuO,EAAG,OAAQ,EAAK,EAC7C,KAAK,MAAQuC,EAAM,6BAEd,KAAK,wBAAwBvC,EAAG,OAAQ,EAAK,EAClD,KAAK,MAAQuC,EAAM,6BAIb,KAAK,mBAAmB,IAC9B,KAAK,KAAK9B,EAAI,wCAAwC,EACtDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,EAGtC,CACJ,CAGA,gCAAgCA,EAAI,CAChC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,iCACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,KAAKU,EAAI,0CAA0C,EACxDhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACf,KAAK,KAAKU,EAAI,0CAA0C,EACxDhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,8BAA8B,EAC5ChP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,oCAAoCA,EAAI,CACpC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnBtO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACftO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,8BAA8B,EAC5ChP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,0CAA0CA,EAAI,CAC1C,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,gCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,UAAYqO,EAClB,KACJ,CACA,KAAKC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,6BAA6B,EAC3ChP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcyO,CAAE,CAEjD,CACJ,CAGA,0CAA0CA,EAAI,CAC1C,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,WAAY,CACf,KAAK,MAAQwC,EAAM,gCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,UAAYqO,EAClB,KACJ,CACA,KAAKC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,6BAA6B,EAC3ChP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcyO,CAAE,CAEjD,CACJ,CAGA,mCAAmCA,EAAI,CACnC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,8CACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,eAAgB,CACnB,KAAK,KAAKU,EAAI,yDAAyD,EACvEhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACf,KAAK,KAAKU,EAAI,yDAAyD,EACvEhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,+CAA+CA,EAAI,CAC/C,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtO,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnBtO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACftO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,gCAAgCA,EAAI,CAChC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAAW,CACd,KAAK,MAAQwC,EAAM,iCACnB,KACJ,CACA,KAAKxC,EAAE,eAAgB,CACnB,KAAK,KAAKU,EAAI,0CAA0C,EACxDhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACf,KAAK,KAAKU,EAAI,0CAA0C,EACxDhP,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,8BAA8B,EAC5ChP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,oCAAoCA,EAAI,CACpC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,eAAgB,CACnBtO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,WAAY,CACftO,EAAM,SAAW,GACjB,KAAK,MAAQ8Q,EAAM,wCACnB,KACJ,CACA,KAAKxC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,8BAA8B,EAC5ChP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,KACnB,KAAK,mBAAmB9Q,CAAK,EAC7B,KACJ,CACA,KAAKsO,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,yCAAyC,EACvDhP,EAAM,YAAc,GACpB,KAAK,MAAQ8Q,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,0CAA0CA,EAAI,CAC1C,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,eAAgB,CACnB,KAAK,MAAQwC,EAAM,gCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,UAAYqO,EAClB,KACJ,CACA,KAAKC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,6BAA6B,EAC3ChP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcyO,CAAE,CAEjD,CACJ,CAGA,0CAA0CA,EAAI,CAC1C,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,WAAY,CACf,KAAK,MAAQwC,EAAM,gCACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrChP,EAAM,UAAYqO,EAClB,KACJ,CACA,KAAKC,EAAE,kBAAmB,CACtB,KAAK,KAAKU,EAAI,6BAA6B,EAC3ChP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACIA,EAAM,UAAY,OAAO,cAAcyO,CAAE,CAEjD,CACJ,CAGA,mCAAmCA,EAAI,CACnC,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,MACP,KAAKA,EAAE,UACP,KAAKA,EAAE,WACP,KAAKA,EAAE,UAEH,MAEJ,KAAKA,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtO,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,YAAY,EAC1BhP,EAAM,YAAc,GACpB,KAAK,mBAAmBA,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,KAAKgP,EAAI,+CAA+C,EAC7D,KAAK,MAAQ8B,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,mBAAmBA,EAAI,CACnB,IAAMzO,EAAQ,KAAK,aACnB,OAAQyO,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,KAAK,mBAAmBtO,CAAK,EAC7B,KAAK,MAAQ8Q,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,KAAM,CACT,KAAK,KAAKU,EAAI,uBAAuB,EACrC,KACJ,CACA,KAAKV,EAAE,IAAK,CACR,KAAK,mBAAmBtO,CAAK,EAC7B,KAAK,cAAc,EACnB,KACJ,CACA,QAEJ,CACJ,CAGA,mBAAmByO,EAAI,CACnB,OAAQA,EAAI,CACR,KAAKH,EAAE,qBAAsB,CACzB,KAAK,MAAQwC,EAAM,sBACnB,KACJ,CACA,KAAKxC,EAAE,IAAK,CACR,KAAK,KAAKU,EAAI,UAAU,EACxB,KAAK,cAAc,EACnB,KACJ,CACA,QACI,KAAK,eAAeP,CAAE,CAE9B,CACJ,CAGA,0BAA0BA,EAAI,CACtBA,IAAOH,EAAE,qBACT,KAAK,MAAQwC,EAAM,mBAGnB,KAAK,WAAW,GAAG,EACnB,KAAK,MAAQA,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,EAElC,CAGA,sBAAsBA,EAAI,CACtB,OAAQA,EAAI,CACR,KAAKH,EAAE,kBAAmB,CACtB,KAAK,MAAQwC,EAAM,KACnB,KACJ,CACA,KAAKxC,EAAE,qBAAsB,CACzB,KAAK,WAAW,GAAG,EACnB,KACJ,CACA,QACI,KAAK,WAAW,IAAI,EACpB,KAAK,MAAQwC,EAAM,cACnB,KAAK,mBAAmBrC,CAAE,CAElC,CACJ,CAGA,yBAAyBA,EAAI,CACrBA,IAAOH,EAAE,YACT,KAAK,MAAQwC,EAAM,4BAEdxiB,GAAoBmgB,CAAE,GAC3B,KAAK,MAAQqC,EAAM,0BACnB,KAAK,8BAA8BrC,CAAE,IAGrC,KAAK,4CAA4CH,EAAE,SAAS,EAC5D,KAAK,kBAAkB,KAAK,YAAaG,CAAE,EAEnD,CAGA,8BAA8BA,EAAI,CAC9B,IAAM8D,EAAc,KAAK,8BAA8B9D,CAAE,EAGzD,GAAI,MAAK,mBAAmB,EAGvB,GAAI8D,EAAa,CAClB,QAASxlB,EAAI,EAAGA,EAAIwlB,EAAY,OAAQxlB,IACpC,KAAK,4CAA4CwlB,EAAYxlB,CAAC,CAAC,EAEnE,KAAK,MAAQ,KAAK,WACtB,MAEI,KAAK,4CAA4CuhB,EAAE,SAAS,EAC5D,KAAK,MAAQwC,EAAM,mBAE3B,CAGA,yBAAyBrC,EAAI,CACrBngB,GAAoBmgB,CAAE,EACtB,KAAK,4CAA4CA,CAAE,GAG/CA,IAAOH,EAAE,WACT,KAAK,KAAKU,EAAI,8BAA8B,EAEhD,KAAK,kBAAkB,KAAK,YAAaP,CAAE,EAEnD,CAGA,gCAAgCA,EAAI,CAChC,KAAK,YAAc,EACfA,IAAOH,EAAE,eAAiBG,IAAOH,EAAE,gBACnC,KAAK,MAAQwC,EAAM,sCAGdE,GAAavC,CAAE,GACpB,KAAK,MAAQqC,EAAM,4BACnB,KAAK,gCAAgCrC,CAAE,IAGvC,KAAK,KAAKO,EAAI,0CAA0C,EACxD,KAAK,4CAA4CV,EAAE,SAAS,EAC5D,KAAK,4CAA4CA,EAAE,WAAW,EAC9D,KAAK,kBAAkB,KAAK,YAAaG,CAAE,EAEnD,CAGA,yCAAyCA,EAAI,CACrC6C,GAAgB7C,CAAE,GAClB,KAAK,MAAQqC,EAAM,gCACnB,KAAK,oCAAoCrC,CAAE,IAG3C,KAAK,KAAKO,EAAI,0CAA0C,EACxD,KAAK,4CAA4CV,EAAE,SAAS,EAC5D,KAAK,4CAA4CA,EAAE,WAAW,EAC9D,KAAK,WAAW,CAAC,EACjB,KAAK,MAAQ,KAAK,YAE1B,CAGA,oCAAoCG,EAAI,CAChC2C,GAAqB3C,CAAE,EACvB,KAAK,YAAc,KAAK,YAAc,GAAKA,EAAK,GAE3C4C,GAAqB5C,CAAE,EAC5B,KAAK,YAAc,KAAK,YAAc,GAAKA,EAAK,GAE3CuC,GAAavC,CAAE,EACpB,KAAK,YAAc,KAAK,YAAc,GAAKA,EAAK,GAE3CA,IAAOH,EAAE,UACd,KAAK,MAAQwC,EAAM,iCAGnB,KAAK,KAAK9B,EAAI,uCAAuC,EACrD,KAAK,MAAQ8B,EAAM,gCACnB,KAAK,mCAAmCrC,CAAE,EAElD,CAGA,gCAAgCA,EAAI,CAC5BuC,GAAavC,CAAE,EACf,KAAK,YAAc,KAAK,YAAc,GAAKA,EAAK,GAE3CA,IAAOH,EAAE,UACd,KAAK,MAAQwC,EAAM,iCAGnB,KAAK,KAAK9B,EAAI,uCAAuC,EACrD,KAAK,MAAQ8B,EAAM,gCACnB,KAAK,mCAAmCrC,CAAE,EAElD,CAGA,mCAAmCA,EAAI,CACnC,GAAI,KAAK,cAAgBH,EAAE,KACvB,KAAK,KAAKU,EAAI,sBAAsB,EACpC,KAAK,YAAcV,EAAE,8BAEhB,KAAK,YAAc,QACxB,KAAK,KAAKU,EAAI,qCAAqC,EACnD,KAAK,YAAcV,EAAE,8BAEhBE,GAAY,KAAK,WAAW,EACjC,KAAK,KAAKQ,EAAI,2BAA2B,EACzC,KAAK,YAAcV,EAAE,8BAEhBS,GAAqB,KAAK,WAAW,EAC1C,KAAK,KAAKC,EAAI,8BAA8B,UAEvCF,GAAmB,KAAK,WAAW,GAAK,KAAK,cAAgBR,EAAE,gBAAiB,CACrF,KAAK,KAAKU,EAAI,yBAAyB,EACvC,IAAM1b,EAAcud,GAAmC,IAAI,KAAK,WAAW,EACvEvd,IAAgB,SAChB,KAAK,YAAcA,EAE3B,CACA,KAAK,4CAA4C,KAAK,WAAW,EACjE,KAAK,kBAAkB,KAAK,YAAamb,CAAE,CAC/C,CACJ,ECp1FA,IAAM+D,GAA4B,IAAI,IAAI,CAACrC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,SAAUA,EAAE,OAAQA,EAAE,EAAGA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAG,CAAC,EAC1GsC,GAAuC,IAAI,IAAI,CACjD,GAAGD,GACHrC,EAAE,QACFA,EAAE,SACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,GACFA,EAAE,MACFA,EAAE,EACN,CAAC,EACKuC,GAAqB,IAAI,IAAI,CAC/B,CAACvC,EAAE,OAAQF,EAAG,IAAI,EAClB,CAACE,EAAE,QAASF,EAAG,IAAI,EACnB,CAACE,EAAE,KAAMF,EAAG,IAAI,EAChB,CAACE,EAAE,QAASF,EAAG,IAAI,EACnB,CAACE,EAAE,OAAQF,EAAG,IAAI,EAClB,CAACE,EAAE,MAAOF,EAAG,IAAI,EACjB,CAACE,EAAE,GAAIF,EAAG,IAAI,EACd,CAACE,EAAE,SAAUF,EAAG,IAAI,EACpB,CAACE,EAAE,GAAIF,EAAG,IAAI,EACd,CAACE,EAAE,eAAgBF,EAAG,MAAM,EAC5B,CAACE,EAAE,GAAIF,EAAG,MAAM,EAChB,CAACE,EAAE,GAAIF,EAAG,MAAM,EAChB,CAACE,EAAE,GAAIF,EAAG,MAAM,EAChB,CAACE,EAAE,GAAIF,EAAG,MAAM,EAChB,CAACE,EAAE,MAAOF,EAAG,MAAM,EACnB,CAACE,EAAE,KAAMF,EAAG,GAAG,EACf,CAACE,EAAE,eAAgBF,EAAG,GAAG,EACzB,CAACE,EAAE,MAAOF,EAAG,GAAG,CACpB,CAAC,EACK0C,GAAgB,CAACxC,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,EAAE,EACnDyC,GAAoB,CAACzC,EAAE,GAAIA,EAAE,SAAUA,EAAE,IAAI,EAC7C0C,GAAqB,CAAC1C,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,SAAUA,EAAE,IAAI,EACnE2C,GAAgB,CAAC3C,EAAE,MAAOA,EAAE,SAAUA,EAAE,IAAI,EAC5C4C,GAAc,CAAC5C,EAAE,GAAIA,EAAE,EAAE,EAElB6C,GAAN,KAAuB,CAC1B,IAAI,0BAA2B,CAC3B,OAAO,KAAK,cAAc,EAAI,KAAK,YAAY,mBAAmB,KAAK,OAAO,EAAI,KAAK,OAC3F,CACA,YAAYC,EAAUC,EAAa/D,EAAS,CACxC,KAAK,YAAc+D,EACnB,KAAK,QAAU/D,EACf,KAAK,MAAQ,CAAC,EACd,KAAK,OAAS,CAAC,EACf,KAAK,SAAW,GAChB,KAAK,UAAY,EACjB,KAAK,aAAegB,EAAE,QACtB,KAAK,QAAU8C,CACnB,CAEA,SAAS5lB,EAAS,CACd,OAAO,KAAK,MAAM,YAAYA,EAAS,KAAK,QAAQ,CACxD,CAEA,eAAgB,CACZ,OAAO,KAAK,eAAiB8iB,EAAE,UAAY,KAAK,YAAY,gBAAgB,KAAK,OAAO,IAAMF,EAAG,IACrG,CACA,uBAAwB,CACpB,KAAK,QAAU,KAAK,MAAM,KAAK,QAAQ,EACvC,KAAK,aAAe,KAAK,OAAO,KAAK,QAAQ,CACjD,CAEA,KAAK5iB,EAAS8lB,EAAO,CACjB,KAAK,WACL,KAAK,MAAM,KAAK,QAAQ,EAAI9lB,EAC5B,KAAK,QAAUA,EACf,KAAK,OAAO,KAAK,QAAQ,EAAI8lB,EAC7B,KAAK,aAAeA,EAChB,KAAK,cAAc,GACnB,KAAK,YAET,KAAK,QAAQ,WAAW9lB,EAAS8lB,EAAO,EAAI,CAChD,CACA,KAAM,CACF,IAAMC,EAAS,KAAK,QAChB,KAAK,UAAY,GAAK,KAAK,cAAc,GACzC,KAAK,YAET,KAAK,WACL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,UAAUA,EAAQ,EAAI,CACvC,CACA,QAAQC,EAAYC,EAAY,CAC5B,IAAM7e,EAAM,KAAK,SAAS4e,CAAU,EACpC,KAAK,MAAM5e,CAAG,EAAI6e,EACd7e,IAAQ,KAAK,WACb,KAAK,QAAU6e,EAEvB,CACA,YAAYC,EAAkBD,EAAYE,EAAc,CACpD,IAAMC,EAAe,KAAK,SAASF,CAAgB,EAAI,EACvD,KAAK,MAAM,OAAOE,EAAc,EAAGH,CAAU,EAC7C,KAAK,OAAO,OAAOG,EAAc,EAAGD,CAAY,EAChD,KAAK,WACDC,IAAiB,KAAK,UACtB,KAAK,sBAAsB,EAE/B,KAAK,QAAQ,WAAW,KAAK,QAAS,KAAK,aAAcA,IAAiB,KAAK,QAAQ,CAC3F,CACA,sBAAsBjf,EAAS,CAC3B,IAAIkf,EAAY,KAAK,SAAW,EAChC,GACIA,EAAY,KAAK,OAAO,YAAYlf,EAASkf,EAAY,CAAC,QACrDA,EAAY,GAAK,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAS,CAAC,IAAMzD,EAAG,MACzF,KAAK,gBAAgByD,EAAY,EAAI,EAAIA,CAAS,CACtD,CACA,gBAAgBjf,EAAK,CACjB,KAAO,KAAK,UAAYA,GAAK,CACzB,IAAM2e,EAAS,KAAK,QAChB,KAAK,UAAY,GAAK,KAAK,cAAc,IACzC,KAAK,WAAa,GAEtB,KAAK,WACL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,UAAUA,EAAQ,KAAK,SAAW3e,CAAG,CACtD,CACJ,CACA,sBAAsBpH,EAAS,CAC3B,IAAMoH,EAAM,KAAK,SAASpH,CAAO,EACjC,KAAK,gBAAgBoH,EAAM,EAAI,EAAIA,CAAG,CAC1C,CACA,eAAekf,EAAUC,EAAU,CAC/B,IAAMnf,EAAM,KAAK,iBAAiBkf,EAAUC,CAAQ,EACpD,KAAK,gBAAgBnf,EAAM,EAAI,EAAIA,CAAG,CAC1C,CACA,8BAA+B,CAC3B,KAAK,eAAeke,GAAe1C,EAAG,IAAI,CAC9C,CACA,yBAA0B,CACtB,KAAK,eAAe8C,GAAa9C,EAAG,IAAI,CAC5C,CACA,uBAAwB,CAGpB,KAAK,UAAY,EACjB,KAAK,gBAAgB,CAAC,CAC1B,CACA,iBAAiB0D,EAAUtU,EAAW,CAClC,QAAStS,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAChC,GAAI4mB,EAAS,SAAS,KAAK,OAAO5mB,CAAC,CAAC,GAAK,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAAMsS,EACzF,OAAOtS,EAGf,MAAO,EACX,CACA,YAAY4mB,EAAUC,EAAU,CAC5B,IAAMnf,EAAM,KAAK,iBAAiBkf,EAAUC,CAAQ,EACpD,KAAK,gBAAgBnf,EAAM,CAAC,CAChC,CACA,yBAA0B,CACtB,KAAK,YAAYqe,GAAe7C,EAAG,IAAI,CAC3C,CACA,6BAA8B,CAC1B,KAAK,YAAY4C,GAAoB5C,EAAG,IAAI,CAChD,CACA,4BAA6B,CACzB,KAAK,YAAY2C,GAAmB3C,EAAG,IAAI,CAC/C,CACA,OAAO5iB,EAAS,CACZ,IAAMoH,EAAM,KAAK,SAASpH,CAAO,EAC7BoH,GAAO,IACHA,IAAQ,KAAK,SACb,KAAK,IAAI,GAGT,KAAK,MAAM,OAAOA,EAAK,CAAC,EACxB,KAAK,OAAO,OAAOA,EAAK,CAAC,EACzB,KAAK,WACL,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,UAAUpH,EAAS,EAAK,GAGjD,CAEA,kCAAmC,CAE/B,OAAO,KAAK,UAAY,GAAK,KAAK,OAAO,CAAC,IAAM8iB,EAAE,KAAO,KAAK,MAAM,CAAC,EAAI,IAC7E,CACA,SAAS9iB,EAAS,CACd,OAAO,KAAK,SAASA,CAAO,EAAI,EACpC,CACA,kBAAkBA,EAAS,CACvB,IAAMwmB,EAAa,KAAK,SAASxmB,CAAO,EAAI,EAC5C,OAAOwmB,GAAc,EAAI,KAAK,MAAMA,CAAU,EAAI,IACtD,CACA,0BAA2B,CACvB,OAAO,KAAK,WAAa,GAAK,KAAK,OAAO,CAAC,IAAM1D,EAAE,IACvD,CAEA,WAAW3b,EAAS,CAChB,QAASzH,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAClB+mB,EAAK,KAAK,YAAY,gBAAgB,KAAK,MAAM/mB,CAAC,CAAC,EACzD,GAAI2jB,IAAOlc,GAAWsf,IAAO7D,EAAG,KAC5B,MAAO,GAEX,GAAIyC,GAAmB,IAAIhC,CAAE,IAAMoD,EAC/B,MAAO,EAEf,CACA,MAAO,EACX,CACA,0BAA2B,CACvB,QAAS/mB,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAClB+mB,EAAK,KAAK,YAAY,gBAAgB,KAAK,MAAM/mB,CAAC,CAAC,EACzD,GAAIwjB,GAAiBG,CAAE,GAAKoD,IAAO7D,EAAG,KAClC,MAAO,GAEX,GAAIyC,GAAmB,IAAIhC,CAAE,IAAMoD,EAC/B,MAAO,EAEf,CACA,MAAO,EACX,CACA,mBAAmBtf,EAAS,CACxB,QAASzH,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAClB+mB,EAAK,KAAK,YAAY,gBAAgB,KAAK,MAAM/mB,CAAC,CAAC,EACzD,GAAI2jB,IAAOlc,GAAWsf,IAAO7D,EAAG,KAC5B,MAAO,GAEX,IAAMS,IAAOP,EAAE,IAAMO,IAAOP,EAAE,KAAO2D,IAAO7D,EAAG,MAASyC,GAAmB,IAAIhC,CAAE,IAAMoD,EACnF,MAAO,EAEf,CACA,MAAO,EACX,CACA,iBAAiBtf,EAAS,CACtB,QAASzH,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAClB+mB,EAAK,KAAK,YAAY,gBAAgB,KAAK,MAAM/mB,CAAC,CAAC,EACzD,GAAI2jB,IAAOlc,GAAWsf,IAAO7D,EAAG,KAC5B,MAAO,GAEX,GAAKS,IAAOP,EAAE,QAAU2D,IAAO7D,EAAG,MAASyC,GAAmB,IAAIhC,CAAE,IAAMoD,EACtE,MAAO,EAEf,CACA,MAAO,EACX,CACA,gBAAgBtf,EAAS,CACrB,QAASzH,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAExB,GADW,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAC9CkjB,EAAG,KAGd,IAAIS,IAAOlc,EACP,MAAO,GAEX,GAAIkc,IAAOP,EAAE,OAASO,IAAOP,EAAE,UAAYO,IAAOP,EAAE,KAChD,MAAO,GAEf,CACA,MAAO,EACX,CACA,iCAAkC,CAC9B,QAASpjB,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAExB,GADW,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAC9CkjB,EAAG,KAGd,IAAIS,IAAOP,EAAE,OAASO,IAAOP,EAAE,OAASO,IAAOP,EAAE,MAC7C,MAAO,GAEX,GAAIO,IAAOP,EAAE,OAASO,IAAOP,EAAE,KAC3B,MAAO,GAEf,CACA,MAAO,EACX,CACA,iBAAiB3b,EAAS,CACtB,QAASzH,EAAI,KAAK,SAAUA,GAAK,EAAGA,IAAK,CACrC,IAAM2jB,EAAK,KAAK,OAAO3jB,CAAC,EAExB,GADW,KAAK,YAAY,gBAAgB,KAAK,MAAMA,CAAC,CAAC,IAC9CkjB,EAAG,KAGd,IAAIS,IAAOlc,EACP,MAAO,GAEX,GAAIkc,IAAOP,EAAE,QAAUO,IAAOP,EAAE,SAC5B,MAAO,GAEf,CACA,MAAO,EACX,CAEA,wBAAyB,CACrB,KAAOqC,GAA0B,IAAI,KAAK,YAAY,GAClD,KAAK,IAAI,CAEjB,CACA,kCAAmC,CAC/B,KAAOC,GAAqC,IAAI,KAAK,YAAY,GAC7D,KAAK,IAAI,CAEjB,CACA,oCAAoCsB,EAAa,CAC7C,KAAO,KAAK,eAAiBA,GAAetB,GAAqC,IAAI,KAAK,YAAY,GAClG,KAAK,IAAI,CAEjB,CACJ,ECpTO,IAAIuB,GACV,SAAUA,EAAW,CAClBA,EAAUA,EAAU,OAAY,CAAC,EAAI,SACrCA,EAAUA,EAAU,QAAa,CAAC,EAAI,SAC1C,GAAGA,EAAYA,IAAcA,EAAY,CAAC,EAAE,EAC5C,IAAMC,GAAS,CAAE,KAAMD,EAAU,MAAO,EAE3BE,GAAN,KAA4B,CAC/B,YAAYhB,EAAa,CACrB,KAAK,YAAcA,EACnB,KAAK,QAAU,CAAC,EAChB,KAAK,SAAW,IACpB,CAIA,+BAA+BI,EAAYa,EAAS,CAChD,IAAMC,EAAa,CAAC,EACdC,EAAgBF,EAAQ,OACxBG,EAAY,KAAK,YAAY,WAAWhB,CAAU,EAClDiB,EAAiB,KAAK,YAAY,gBAAgBjB,CAAU,EAClE,QAASvmB,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,IAAM6I,EAAQ,KAAK,QAAQ7I,CAAC,EAC5B,GAAI6I,EAAM,OAASoe,EAAU,OACzB,MAEJ,GAAM,CAAE,QAAA3mB,CAAQ,EAAIuI,EACpB,GAAI,KAAK,YAAY,WAAWvI,CAAO,IAAMinB,GACzC,KAAK,YAAY,gBAAgBjnB,CAAO,IAAMknB,EAAgB,CAC9D,IAAMC,EAAe,KAAK,YAAY,YAAYnnB,CAAO,EACrDmnB,EAAa,SAAWH,GACxBD,EAAW,KAAK,CAAE,IAAKrnB,EAAG,MAAOynB,CAAa,CAAC,CAEvD,CACJ,CACA,OAAOJ,CACX,CACA,wBAAwBd,EAAY,CAChC,GAAI,KAAK,QAAQ,OAAS,EACtB,OACJ,IAAMa,EAAU,KAAK,YAAY,YAAYb,CAAU,EACjDc,EAAa,KAAK,+BAA+Bd,EAAYa,CAAO,EAC1E,GAAIC,EAAW,OAAS,EACpB,OAEJ,IAAMK,EAAa,IAAI,IAAIN,EAAQ,IAAKO,GAAW,CAACA,EAAO,KAAMA,EAAO,KAAK,CAAC,CAAC,EAC3EC,EAAkB,EAEtB,QAAS,EAAI,EAAG,EAAIP,EAAW,OAAQ,IAAK,CACxC,IAAMQ,EAAYR,EAAW,CAAC,EAE1BQ,EAAU,MAAM,MAAOC,GAAUJ,EAAW,IAAII,EAAM,IAAI,IAAMA,EAAM,KAAK,IAC3EF,GAAmB,EACfA,GAAmB,GACnB,KAAK,QAAQ,OAAOC,EAAU,IAAK,CAAC,EAGhD,CACJ,CAEA,cAAe,CACX,KAAK,QAAQ,QAAQX,EAAM,CAC/B,CACA,YAAY5mB,EAAS2S,EAAO,CACxB,KAAK,wBAAwB3S,CAAO,EACpC,KAAK,QAAQ,QAAQ,CACjB,KAAM2mB,EAAU,QAChB,QAAA3mB,EACA,MAAA2S,CACJ,CAAC,CACL,CACA,2BAA2B3S,EAAS2S,EAAO,CACvC,IAAM8U,EAAc,KAAK,QAAQ,QAAQ,KAAK,QAAQ,EACtD,KAAK,QAAQ,OAAOA,EAAa,EAAG,CAChC,KAAMd,EAAU,QAChB,QAAA3mB,EACA,MAAA2S,CACJ,CAAC,CACL,CACA,YAAYpK,EAAO,CACf,IAAMmf,EAAa,KAAK,QAAQ,QAAQnf,CAAK,EACzCmf,GAAc,GACd,KAAK,QAAQ,OAAOA,EAAY,CAAC,CAEzC,CAMA,mBAAoB,CAChB,IAAMC,EAAY,KAAK,QAAQ,QAAQf,EAAM,EACzCe,GAAa,EACb,KAAK,QAAQ,OAAO,EAAGA,EAAY,CAAC,EAGpC,KAAK,QAAQ,OAAS,CAE9B,CAEA,kCAAkCxgB,EAAS,CACvC,IAAMoB,EAAQ,KAAK,QAAQ,KAAMA,GAAUA,EAAM,OAASoe,EAAU,QAAU,KAAK,YAAY,WAAWpe,EAAM,OAAO,IAAMpB,CAAO,EACpI,OAAOoB,GAASA,EAAM,OAASoe,EAAU,QAAUpe,EAAQ,IAC/D,CACA,gBAAgBvI,EAAS,CACrB,OAAO,KAAK,QAAQ,KAAMuI,GAAUA,EAAM,OAASoe,EAAU,SAAWpe,EAAM,UAAYvI,CAAO,CACrG,CACJ,EC5GA,SAAS4nB,GAAe5kB,EAAO,CAC3B,MAAO,CACH,SAAU,QACV,MAAAA,EACA,WAAY,IAChB,CACJ,CACO,IAAM6kB,GAAqB,CAE9B,gBAAiB,CACb,MAAO,CACH,SAAU,YACV,KAAMlF,EAAc,UACpB,WAAY,CAAC,CACjB,CACJ,EACA,wBAAyB,CACrB,MAAO,CACH,SAAU,qBACV,WAAY,CAAC,CACjB,CACJ,EACA,cAAcxb,EAAS2gB,EAAcC,EAAO,CACxC,MAAO,CACH,SAAU5gB,EACV,QAAAA,EACA,MAAA4gB,EACA,aAAAD,EACA,WAAY,CAAC,EACb,WAAY,IAChB,CACJ,EACA,kBAAkBvpB,EAAM,CACpB,MAAO,CACH,SAAU,WACV,KAAAA,EACA,WAAY,IAChB,CACJ,EAEA,YAAYypB,EAAYC,EAAS,CAC7BD,EAAW,WAAW,KAAKC,CAAO,EAClCA,EAAQ,WAAaD,CACzB,EACA,aAAaA,EAAYC,EAASC,EAAe,CAC7C,IAAM9B,EAAe4B,EAAW,WAAW,QAAQE,CAAa,EAChEF,EAAW,WAAW,OAAO5B,EAAc,EAAG6B,CAAO,EACrDA,EAAQ,WAAaD,CACzB,EACA,mBAAmBG,EAAiBC,EAAgB,CAChDD,EAAgB,QAAUC,CAC9B,EACA,mBAAmBD,EAAiB,CAChC,OAAOA,EAAgB,OAC3B,EACA,gBAAgBvC,EAAUnnB,EAAM4pB,EAAUC,EAAU,CAChD,IAAMC,EAAc3C,EAAS,WAAW,KAAM1mB,GAASA,EAAK,WAAa,eAAe,EACxF,GAAIqpB,EACAA,EAAY,KAAO9pB,EACnB8pB,EAAY,SAAWF,EACvBE,EAAY,SAAWD,MAEtB,CACD,IAAMppB,EAAO,CACT,SAAU,gBACV,KAAAT,EACA,SAAA4pB,EACA,SAAAC,EACA,WAAY,IAChB,EACAT,GAAmB,YAAYjC,EAAU1mB,CAAI,CACjD,CACJ,EACA,gBAAgB0mB,EAAU4C,EAAM,CAC5B5C,EAAS,KAAO4C,CACpB,EACA,gBAAgB5C,EAAU,CACtB,OAAOA,EAAS,IACpB,EACA,WAAW1mB,EAAM,CACb,GAAIA,EAAK,WAAY,CACjB,IAAMkI,EAAMlI,EAAK,WAAW,WAAW,QAAQA,CAAI,EACnDA,EAAK,WAAW,WAAW,OAAOkI,EAAK,CAAC,EACxClI,EAAK,WAAa,IACtB,CACJ,EACA,WAAW8oB,EAAYvtB,EAAM,CACzB,GAAIutB,EAAW,WAAW,OAAS,EAAG,CAClC,IAAMS,EAAWT,EAAW,WAAWA,EAAW,WAAW,OAAS,CAAC,EACvE,GAAIH,GAAmB,WAAWY,CAAQ,EAAG,CACzCA,EAAS,OAAShuB,EAClB,MACJ,CACJ,CACAotB,GAAmB,YAAYG,EAAYJ,GAAentB,CAAI,CAAC,CACnE,EACA,iBAAiButB,EAAYvtB,EAAMytB,EAAe,CAC9C,IAAMO,EAAWT,EAAW,WAAWA,EAAW,WAAW,QAAQE,CAAa,EAAI,CAAC,EACnFO,GAAYZ,GAAmB,WAAWY,CAAQ,EAClDA,EAAS,OAAShuB,EAGlBotB,GAAmB,aAAaG,EAAYJ,GAAentB,CAAI,EAAGytB,CAAa,CAEvF,EACA,gBAAgBQ,EAAWX,EAAO,CAC9B,IAAMY,EAAoB,IAAI,IAAID,EAAU,MAAM,IAAKpe,GAASA,EAAK,IAAI,CAAC,EAC1E,QAASwD,EAAI,EAAGA,EAAIia,EAAM,OAAQja,IACzB6a,EAAkB,IAAIZ,EAAMja,CAAC,EAAE,IAAI,GACpC4a,EAAU,MAAM,KAAKX,EAAMja,CAAC,CAAC,CAGzC,EAEA,cAAc5O,EAAM,CAChB,OAAOA,EAAK,WAAW,CAAC,CAC5B,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,UAChB,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,UAChB,EACA,YAAYc,EAAS,CACjB,OAAOA,EAAQ,KACnB,EAEA,WAAWA,EAAS,CAChB,OAAOA,EAAQ,OACnB,EACA,gBAAgBA,EAAS,CACrB,OAAOA,EAAQ,YACnB,EACA,mBAAmB+e,EAAU,CACzB,OAAOA,EAAS,KACpB,EACA,sBAAsB6J,EAAa,CAC/B,OAAOA,EAAY,IACvB,EACA,wBAAwBL,EAAa,CACjC,OAAOA,EAAY,IACvB,EACA,4BAA4BA,EAAa,CACrC,OAAOA,EAAY,QACvB,EACA,4BAA4BA,EAAa,CACrC,OAAOA,EAAY,QACvB,EAEA,WAAWrpB,EAAM,CACb,OAAOA,EAAK,WAAa,OAC7B,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,WAAa,UAC7B,EACA,mBAAmBA,EAAM,CACrB,OAAOA,EAAK,WAAa,eAC7B,EACA,cAAcA,EAAM,CAChB,OAAO,OAAO,UAAU,eAAe,KAAKA,EAAM,SAAS,CAC/D,EAEA,0BAA0BA,EAAM0lB,EAAU,CACtC1lB,EAAK,mBAAqB0lB,CAC9B,EACA,0BAA0B1lB,EAAM,CAC5B,OAAOA,EAAK,kBAChB,EACA,6BAA6BA,EAAM2pB,EAAa,CAC5C3pB,EAAK,mBAAqB,CAAE,GAAGA,EAAK,mBAAoB,GAAG2pB,CAAY,CAC3E,CACJ,EC1KA,IAAMC,GAAqB,OACrBC,GAAkB,sBAClBC,GAAwB,6DACxBC,GAAiC,CACnC,6CACA,6CACA,uDACA,kCACA,kCACA,yCACA,yCACA,iCACA,0BACA,2BACA,0BACA,gCACA,0BACA,wBACA,8BACA,8BACA,8BACA,8BACA,qCACA,qCACA,qCACA,qCACA,6BACA,sBACA,2CACA,wDACA,iDACA,mDACA,wDACA,iDACA,mDACA,sCACA,6CACA,6CACA,sDACA,8DACA,8CACA,iFACA,wEACA,uCACA,gDACA,uDACA,kCACA,+BACA,+BACA,yBACA,gCACA,kCACA,sCACA,2CACA,yCACA,wBACA,4BACA,sCACA,iCACJ,EACMC,GAA8C,CAChD,GAAGD,GACH,mCACA,sCACJ,EACME,GAAyB,IAAI,IAAI,CACnC,uCACA,qCACA,MACJ,CAAC,EACKC,GAAoC,CAAC,mCAAoC,sCAAsC,EAC/GC,GAAmD,CACrD,GAAGD,GACH,mCACA,sCACJ,EAEA,SAASE,GAAUjB,EAAUkB,EAAU,CACnC,OAAOA,EAAS,KAAMC,GAAWnB,EAAS,WAAWmB,CAAM,CAAC,CAChE,CAEO,SAASC,GAAa9W,EAAO,CAChC,OAAQA,EAAM,OAASmW,IACnBnW,EAAM,WAAa,OAClBA,EAAM,WAAa,MAAQA,EAAM,WAAaoW,GACvD,CACO,SAASW,GAAgB/W,EAAO,CACnC,GAAIA,EAAM,OAASmW,GACf,OAAOnG,EAAc,OAEzB,GAAM,CAAE,SAAA2F,CAAS,EAAI3V,EACrB,GAAI2V,GAAYA,EAAS,YAAY,IAAMU,GACvC,OAAOrG,EAAc,OAEzB,GAAI,CAAE,SAAA0F,CAAS,EAAI1V,EACnB,GAAI0V,IAAa,KAAM,CAEnB,GADAA,EAAWA,EAAS,YAAY,EAC5Bc,GAAuB,IAAId,CAAQ,EACnC,OAAO1F,EAAc,OAEzB,IAAI4G,EAAWjB,IAAa,KAAOY,GAA8CD,GACjF,GAAIK,GAAUjB,EAAUkB,CAAQ,EAC5B,OAAO5G,EAAc,OAIzB,GAFA4G,EACIjB,IAAa,KAAOc,GAAoCC,GACxDC,GAAUjB,EAAUkB,CAAQ,EAC5B,OAAO5G,EAAc,cAE7B,CACA,OAAOA,EAAc,SACzB,CC/GA,IAAMgH,GAAa,CACf,UAAW,YACX,gBAAiB,uBACrB,EAEMC,GAAsB,gBACtBC,GAA+B,gBAC/BC,GAA2B,IAAI,IAAI,CACrC,gBACA,gBACA,gBACA,cACA,WACA,gBACA,kBACA,WACA,cACA,WACA,oBACA,gBACA,eACA,mBACA,YACA,aACA,WACA,eACA,oBACA,eACA,cACA,cACA,mBACA,YACA,aACA,aACA,sBACA,mBACA,eACA,YACA,YACA,YACA,gBACA,sBACA,iBACA,OACA,OACA,cACA,YACA,qBACA,mBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,eACA,iBACA,cACA,UACA,UACA,aACA,UACA,aACA,mBACA,mBACA,YACJ,EAAE,IAAKxf,GAAS,CAACA,EAAK,YAAY,EAAGA,CAAI,CAAC,CAAC,EACrCyf,GAA2B,IAAI,IAAI,CACrC,CAAC,gBAAiB,CAAE,OAAQ,QAAS,KAAM,UAAW,UAAWnH,EAAG,KAAM,CAAC,EAC3E,CAAC,gBAAiB,CAAE,OAAQ,QAAS,KAAM,UAAW,UAAWA,EAAG,KAAM,CAAC,EAC3E,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,EAAG,KAAM,CAAC,EACrE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,EAAG,KAAM,CAAC,EACrE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,EAAG,KAAM,CAAC,EACrE,CAAC,cAAe,CAAE,OAAQ,QAAS,KAAM,QAAS,UAAWA,EAAG,KAAM,CAAC,EACvE,CAAC,aAAc,CAAE,OAAQ,QAAS,KAAM,OAAQ,UAAWA,EAAG,KAAM,CAAC,EACrE,CAAC,WAAY,CAAE,OAAQ,MAAO,KAAM,OAAQ,UAAWA,EAAG,GAAI,CAAC,EAC/D,CAAC,WAAY,CAAE,OAAQ,MAAO,KAAM,OAAQ,UAAWA,EAAG,GAAI,CAAC,EAC/D,CAAC,YAAa,CAAE,OAAQ,MAAO,KAAM,QAAS,UAAWA,EAAG,GAAI,CAAC,EACjE,CAAC,QAAS,CAAE,OAAQ,GAAI,KAAM,QAAS,UAAWA,EAAG,KAAM,CAAC,EAC5D,CAAC,cAAe,CAAE,OAAQ,QAAS,KAAM,QAAS,UAAWA,EAAG,KAAM,CAAC,CAC3E,CAAC,EAEYoH,GAA+B,IAAI,IAAI,CAChD,WACA,cACA,eACA,eACA,gBACA,mBACA,WACA,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,eACA,gBACA,WACA,iBACA,iBACA,UACJ,EAAE,IAAK3G,GAAO,CAACA,EAAG,YAAY,EAAGA,CAAE,CAAC,CAAC,EAE/B4G,GAAwB,IAAI,IAAI,CAClCnH,EAAE,EACFA,EAAE,IACFA,EAAE,WACFA,EAAE,KACFA,EAAE,GACFA,EAAE,OACFA,EAAE,KACFA,EAAE,GACFA,EAAE,IACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,MACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,GACFA,EAAE,KACFA,EAAE,GACFA,EAAE,EACFA,EAAE,IACFA,EAAE,GACFA,EAAE,QACFA,EAAE,KACFA,EAAE,KACFA,EAAE,KACFA,EAAE,GACFA,EAAE,EACFA,EAAE,IACFA,EAAE,KACFA,EAAE,EACFA,EAAE,MACFA,EAAE,KACFA,EAAE,OACFA,EAAE,OACFA,EAAE,IACFA,EAAE,IACFA,EAAE,MACFA,EAAE,GACFA,EAAE,EACFA,EAAE,GACFA,EAAE,GACN,CAAC,EAEM,SAASoH,GAAWC,EAAe,CACtC,IAAM9G,EAAK8G,EAAc,MAGzB,OAFwB9G,IAAOP,EAAE,MAC7BqH,EAAc,MAAM,KAAK,CAAC,CAAE,KAAA1rB,CAAK,IAAMA,IAASikB,GAAM,OAASjkB,IAASikB,GAAM,MAAQjkB,IAASikB,GAAM,IAAI,GACnFuH,GAAsB,IAAI5G,CAAE,CAC1D,CAEO,SAAS+G,GAAuBzX,EAAO,CAC1C,QAASjT,EAAI,EAAGA,EAAIiT,EAAM,MAAM,OAAQjT,IACpC,GAAIiT,EAAM,MAAMjT,CAAC,EAAE,OAASkqB,GAAqB,CAC7CjX,EAAM,MAAMjT,CAAC,EAAE,KAAOmqB,GACtB,KACJ,CAER,CACO,SAASQ,GAAoB1X,EAAO,CACvC,QAASjT,EAAI,EAAGA,EAAIiT,EAAM,MAAM,OAAQjT,IAAK,CACzC,IAAM4qB,EAAmBR,GAAyB,IAAInX,EAAM,MAAMjT,CAAC,EAAE,IAAI,EACrE4qB,GAAoB,OACpB3X,EAAM,MAAMjT,CAAC,EAAE,KAAO4qB,EAE9B,CACJ,CACO,SAASC,GAAoB5X,EAAO,CACvC,QAASjT,EAAI,EAAGA,EAAIiT,EAAM,MAAM,OAAQjT,IAAK,CACzC,IAAM8qB,EAAoBT,GAAyB,IAAIpX,EAAM,MAAMjT,CAAC,EAAE,IAAI,EACtE8qB,IACA7X,EAAM,MAAMjT,CAAC,EAAE,OAAS8qB,EAAkB,OAC1C7X,EAAM,MAAMjT,CAAC,EAAE,KAAO8qB,EAAkB,KACxC7X,EAAM,MAAMjT,CAAC,EAAE,UAAY8qB,EAAkB,UAErD,CACJ,CACO,SAASC,GAAsB9X,EAAO,CACzC,IAAM+X,EAAkBV,GAA6B,IAAIrX,EAAM,OAAO,EAClE+X,GAAmB,OACnB/X,EAAM,QAAU+X,EAChB/X,EAAM,MAAQqQ,GAASrQ,EAAM,OAAO,EAE5C,CAEA,SAASgY,GAA6BtH,EAAIoD,EAAI,CAC1C,OAAOA,IAAO7D,EAAG,SAAWS,IAAOP,EAAE,IAAMO,IAAOP,EAAE,IAAMO,IAAOP,EAAE,IAAMO,IAAOP,EAAE,IAAMO,IAAOP,EAAE,MACrG,CACA,SAAS8H,GAAuBvH,EAAIoD,EAAIsB,EAAO,CAC3C,GAAItB,IAAO7D,EAAG,QAAUS,IAAOP,EAAE,gBAC7B,QAASpjB,EAAI,EAAGA,EAAIqoB,EAAM,OAAQroB,IAC9B,GAAIqoB,EAAMroB,CAAC,EAAE,OAASgjB,GAAM,SAAU,CAClC,IAAM1f,EAAQ+kB,EAAMroB,CAAC,EAAE,MAAM,YAAY,EACzC,OAAOsD,IAAU2mB,GAAW,WAAa3mB,IAAU2mB,GAAW,eAClE,EAGR,OAAOlD,IAAO7D,EAAG,MAAQS,IAAOP,EAAE,gBAAkBO,IAAOP,EAAE,MAAQO,IAAOP,EAAE,MAClF,CACO,SAAS+H,GAAmBxH,EAAIoD,EAAIsB,EAAO+C,EAAW,CACzD,OAAU,CAACA,GAAaA,IAAclI,EAAG,OAASgI,GAAuBvH,EAAIoD,EAAIsB,CAAK,IAChF,CAAC+C,GAAaA,IAAclI,EAAG,SAAW+H,GAA6BtH,EAAIoD,CAAE,CACvF,CCzNA,IAAMsE,GAAoB,SAEpBC,GAAqB,EACrBC,GAAqB,EAEvBC,GACH,SAAUA,EAAe,CACtBA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,YAAiB,CAAC,EAAI,cAClDA,EAAcA,EAAc,YAAiB,CAAC,EAAI,cAClDA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,kBAAuB,CAAC,EAAI,oBACxDA,EAAcA,EAAc,WAAgB,CAAC,EAAI,aACjDA,EAAcA,EAAc,QAAa,CAAC,EAAI,UAC9CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAC3CA,EAAcA,EAAc,SAAc,CAAC,EAAI,WAC/CA,EAAcA,EAAc,cAAmB,CAAC,EAAI,gBACpDA,EAAcA,EAAc,WAAgB,EAAE,EAAI,aAClDA,EAAcA,EAAc,gBAAqB,EAAE,EAAI,kBACvDA,EAAcA,EAAc,cAAmB,EAAE,EAAI,gBACrDA,EAAcA,EAAc,OAAY,EAAE,EAAI,SAC9CA,EAAcA,EAAc,QAAa,EAAE,EAAI,UAC/CA,EAAcA,EAAc,UAAe,EAAE,EAAI,YACjDA,EAAcA,EAAc,mBAAwB,EAAE,EAAI,qBAC1DA,EAAcA,EAAc,YAAiB,EAAE,EAAI,cACnDA,EAAcA,EAAc,WAAgB,EAAE,EAAI,aAClDA,EAAcA,EAAc,YAAiB,EAAE,EAAI,cACnDA,EAAcA,EAAc,eAAoB,EAAE,EAAI,iBACtDA,EAAcA,EAAc,iBAAsB,EAAE,EAAI,mBACxDA,EAAcA,EAAc,qBAA0B,EAAE,EAAI,sBAChE,GAAGA,IAAkBA,EAAgB,CAAC,EAAE,EACxC,IAAMC,GAAW,CACb,UAAW,GACX,SAAU,GACV,YAAa,GACb,QAAS,GACT,OAAQ,GACR,UAAW,EACf,EACMC,GAAuB,IAAI,IAAI,CAACtI,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,MAAOA,EAAE,EAAE,CAAC,EACzEuI,GAAuB,CACzB,iBAAkB,GAClB,uBAAwB,GACxB,YAAaxD,GACb,aAAc,IAClB,EAEayD,GAAN,KAAa,CAChB,YAAYrxB,EAAS2rB,EAAU2F,EAAkB,KAAMC,EAAgB,KAAM,CACzE,KAAK,gBAAkBD,EACvB,KAAK,cAAgBC,EACrB,KAAK,aAAe,KACpB,KAAK,QAAU,GACf,KAAK,cAAgBN,EAAc,QACnC,KAAK,sBAAwBA,EAAc,QAC3C,KAAK,YAAc,KACnB,KAAK,YAAc,KAEnB,KAAK,iBAAmB,GAKxB,KAAK,uBAAyB,CAAC,EAC/B,KAAK,uBAAyB,CAAC,EAC/B,KAAK,sCAAwC,GAC7C,KAAK,WAAa,GAClB,KAAK,gBAAkB,GACvB,KAAK,uBAAyB,GAC9B,KAAK,QAAU,CACX,GAAGG,GACH,GAAGpxB,CACP,EACA,KAAK,YAAc,KAAK,QAAQ,YAChC,KAAK,aAAe,KAAK,QAAQ,aAE7B,KAAK,eACL,KAAK,QAAQ,uBAAyB,IAE1C,KAAK,SAAW2rB,GAAsD,KAAK,YAAY,eAAe,EACtG,KAAK,UAAY,IAAIxB,GAAU,KAAK,QAAS,IAAI,EACjD,KAAK,yBAA2B,IAAIyC,GAAsB,KAAK,WAAW,EAC1E,KAAK,kBAAoB0E,EAAkBvI,GAAS,KAAK,YAAY,WAAWuI,CAAe,CAAC,EAAIzI,EAAE,QACtG,KAAK,iBAAiByI,GAA2E,KAAK,SAAU,KAAK,iBAAiB,EACtI,KAAK,aAAe,IAAI5F,GAAiB,KAAK,SAAU,KAAK,YAAa,IAAI,CAClF,CAEA,OAAO,MAAMtrB,EAAMJ,EAAS,CACxB,IAAM6F,EAAS,IAAI,KAAK7F,CAAO,EAC/B,OAAA6F,EAAO,UAAU,MAAMzF,EAAM,EAAI,EAC1ByF,EAAO,QAClB,CACA,OAAO,kBAAkByrB,EAAiBtxB,EAAS,CAC/C,IAAM+K,EAAO,CACT,GAAGqmB,GACH,GAAGpxB,CACP,EAGAsxB,IAA4EA,EAAkBvmB,EAAK,YAAY,cAAc+d,EAAG,SAAUH,EAAG,KAAM,CAAC,CAAC,GAIrJ,IAAM6I,EAAezmB,EAAK,YAAY,cAAc,eAAgB4d,EAAG,KAAM,CAAC,CAAC,EACzE9iB,EAAS,IAAI,KAAKkF,EAAMymB,EAAcF,CAAe,EAC3D,OAAIzrB,EAAO,oBAAsBgjB,EAAE,UAC/BhjB,EAAO,uBAAuB,QAAQorB,EAAc,WAAW,EAEnEprB,EAAO,iCAAiC,EACxCA,EAAO,uBAAuB,EAC9BA,EAAO,oBAAoB,EAC3BA,EAAO,2BAA2B,EAC3BA,CACX,CACA,aAAc,CACV,IAAM4rB,EAAc,KAAK,YAAY,cAAc,KAAK,QAAQ,EAC1DC,EAAW,KAAK,YAAY,uBAAuB,EACzD,YAAK,YAAYD,EAAaC,CAAQ,EAC/BA,CACX,CAEA,KAAKhZ,EAAO5R,EAAM6qB,EAAa,CAC3B,IAAIhtB,EACJ,GAAI,CAAC,KAAK,aACN,OACJ,IAAMitB,GAAOjtB,EAAK+T,EAAM,YAAc,MAAQ/T,IAAO,OAASA,EAAKusB,GAC7DW,EAAM,CACR,KAAA/qB,EACA,UAAW8qB,EAAI,UACf,SAAUA,EAAI,SACd,YAAaA,EAAI,YACjB,QAASD,EAAcC,EAAI,UAAYA,EAAI,QAC3C,OAAQD,EAAcC,EAAI,SAAWA,EAAI,OACzC,UAAWD,EAAcC,EAAI,YAAcA,EAAI,SACnD,EACA,KAAK,aAAaC,CAAG,CACzB,CAEA,WAAW5sB,EAAM6sB,EAAKC,EAAO,CACzB,IAAIptB,EAAIK,GACPA,GAAML,EAAK,KAAK,aAAa,cAAgB,MAAQK,IAAO,QAAkBA,EAAG,KAAKL,EAAIM,CAAI,EAC3F8sB,GAAS,KAAK,aAAa,SAAW,GACtC,KAAK,iBAAiB9sB,EAAM6sB,CAAG,CACvC,CACA,UAAU7sB,EAAM8sB,EAAO,CACnB,IAAIptB,EAAIK,EAKR,GAJI,KAAK,QAAQ,wBACb,KAAK,gBAAgBC,EAAM,KAAK,YAAY,GAE/CD,GAAML,EAAK,KAAK,aAAa,aAAe,MAAQK,IAAO,QAAkBA,EAAG,KAAKL,EAAIM,EAAM,KAAK,aAAa,OAAO,EACrH8sB,EAAO,CACP,IAAI5pB,EACA6pB,EACA,KAAK,aAAa,WAAa,GAAK,KAAK,iBACzC7pB,EAAU,KAAK,gBACf6pB,EAAe,KAAK,mBAGnB,CAAE,QAAA7pB,EAAS,aAAA6pB,CAAa,EAAI,KAAK,aAEtC,KAAK,iBAAiB7pB,EAAS6pB,CAAY,CAC/C,CACJ,CACA,iBAAiB7pB,EAAS2pB,EAAK,CAC3B,IAAMG,EAAS9pB,IAAY,KAAK,UAAY,KAAK,YAAY,gBAAgBA,CAAO,IAAMwgB,EAAG,KAC7F,KAAK,iBAAmB,CAACsJ,EACzB,KAAK,UAAU,cAAgB,CAACA,GAAU,CAAC,KAAK,oBAAoBH,EAAK3pB,CAAO,CACpF,CACA,qBAAqB+pB,EAAcC,EAAoB,CACnD,KAAK,eAAeD,EAAcvJ,EAAG,IAAI,EACzC,KAAK,UAAU,MAAQwJ,EACvB,KAAK,sBAAwB,KAAK,cAClC,KAAK,cAAgBlB,EAAc,IACvC,CACA,0BAA2B,CACvB,KAAK,cAAgBA,EAAc,KACnC,KAAK,sBAAwBA,EAAc,QAC3C,KAAK,UAAU,MAAQxH,EAAc,SACzC,CAEA,4BAA6B,CACzB,OAAO,KAAK,aAAa,WAAa,GAAK,KAAK,gBAC1C,KAAK,gBACL,KAAK,aAAa,OAC5B,CACA,4BAA6B,CACzB,IAAIxkB,EAAO,KAAK,gBAChB,KAAOA,GAAM,CACT,GAAI,KAAK,YAAY,WAAWA,CAAI,IAAM6jB,EAAG,KAAM,CAC/C,KAAK,YAAc7jB,EACnB,KACJ,CACAA,EAAO,KAAK,YAAY,cAAcA,CAAI,CAC9C,CACJ,CACA,kCAAmC,CAC/B,GAAI,GAAC,KAAK,iBAAmB,KAAK,YAAY,gBAAgB,KAAK,eAAe,IAAM0jB,EAAG,MAG3F,OAAQ,KAAK,kBAAmB,CAC5B,KAAKE,EAAE,MACP,KAAKA,EAAE,SAAU,CACb,KAAK,UAAU,MAAQY,EAAc,OACrC,KACJ,CACA,KAAKZ,EAAE,MACP,KAAKA,EAAE,IACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,SAAU,CACb,KAAK,UAAU,MAAQY,EAAc,QACrC,KACJ,CACA,KAAKZ,EAAE,OAAQ,CACX,KAAK,UAAU,MAAQY,EAAc,YACrC,KACJ,CACA,KAAKZ,EAAE,UAAW,CACd,KAAK,UAAU,MAAQY,EAAc,UACrC,KACJ,CACA,QAEJ,CACJ,CAEA,iBAAiB/Q,EAAO,CACpB,IAAMlU,EAAOkU,EAAM,MAAQ,GACrB0V,EAAW1V,EAAM,UAAY,GAC7B2V,EAAW3V,EAAM,UAAY,GAEnC,GADA,KAAK,YAAY,gBAAgB,KAAK,SAAUlU,EAAM4pB,EAAUC,CAAQ,EACpE3V,EAAM,SAAU,CAEhB,IAAM0Z,EADmB,KAAK,YAAY,cAAc,KAAK,QAAQ,EAChC,KAAMntB,GAAS,KAAK,YAAY,mBAAmBA,CAAI,CAAC,EACzFmtB,GACA,KAAK,YAAY,0BAA0BA,EAAa1Z,EAAM,QAAQ,CAE9E,CACJ,CACA,qBAAqB3S,EAAS4kB,EAAU,CACpC,GAAI,KAAK,QAAQ,uBAAwB,CACrC,IAAMiH,EAAMjH,GAAY,CACpB,GAAGA,EACH,SAAUA,CACd,EACA,KAAK,YAAY,0BAA0B5kB,EAAS6rB,CAAG,CAC3D,CACA,GAAI,KAAK,+BAA+B,EACpC,KAAK,qBAAqB7rB,CAAO,MAEhC,CACD,IAAM/B,EAAS,KAAK,aAAa,yBACjC,KAAK,YAAY,YAAYA,EAAQ+B,CAAO,CAChD,CACJ,CACA,eAAe2S,EAAOmV,EAAc,CAChC,IAAM9nB,EAAU,KAAK,YAAY,cAAc2S,EAAM,QAASmV,EAAcnV,EAAM,KAAK,EACvF,KAAK,qBAAqB3S,EAAS2S,EAAM,QAAQ,CACrD,CACA,eAAeA,EAAOmV,EAAc,CAChC,IAAM9nB,EAAU,KAAK,YAAY,cAAc2S,EAAM,QAASmV,EAAcnV,EAAM,KAAK,EACvF,KAAK,qBAAqB3S,EAAS2S,EAAM,QAAQ,EACjD,KAAK,aAAa,KAAK3S,EAAS2S,EAAM,KAAK,CAC/C,CACA,mBAAmBxL,EAAS2e,EAAO,CAC/B,IAAM9lB,EAAU,KAAK,YAAY,cAAcmH,EAASyb,EAAG,KAAM,CAAC,CAAC,EACnE,KAAK,qBAAqB5iB,EAAS,IAAI,EACvC,KAAK,aAAa,KAAKA,EAAS8lB,CAAK,CACzC,CACA,gBAAgBnT,EAAO,CACnB,IAAM2Z,EAAO,KAAK,YAAY,cAAc3Z,EAAM,QAASiQ,EAAG,KAAMjQ,EAAM,KAAK,EACzE6K,EAAU,KAAK,YAAY,uBAAuB,EACxD,KAAK,YAAY,mBAAmB8O,EAAM9O,CAAO,EACjD,KAAK,qBAAqB8O,EAAM3Z,EAAM,QAAQ,EAC9C,KAAK,aAAa,KAAK2Z,EAAM3Z,EAAM,KAAK,EACpC,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0B6K,EAAS,IAAI,CAChE,CACA,wBAAyB,CACrB,IAAMxd,EAAU,KAAK,YAAY,cAAc+iB,EAAG,KAAMH,EAAG,KAAM,CAAC,CAAC,EAC/D,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0B5iB,EAAS,IAAI,EAC5D,KAAK,YAAY,YAAY,KAAK,aAAa,QAASA,CAAO,EAC/D,KAAK,aAAa,KAAKA,EAAS8iB,EAAE,IAAI,CAC1C,CACA,mBAAmBnQ,EAAO1U,EAAQ,CAC9B,IAAM2qB,EAAc,KAAK,YAAY,kBAAkBjW,EAAM,IAAI,EACjE,KAAK,YAAY,YAAY1U,EAAQ2qB,CAAW,EAC5C,KAAK,QAAQ,wBACb,KAAK,YAAY,0BAA0BA,EAAajW,EAAM,QAAQ,CAE9E,CACA,kBAAkBA,EAAO,CACrB,IAAI1U,EACAsuB,EAcJ,GAbI,KAAK,+BAA+B,GACnC,CAAE,OAAAtuB,EAAQ,cAAAsuB,CAAc,EAAI,KAAK,6BAA6B,EAC3DA,EACA,KAAK,YAAY,iBAAiBtuB,EAAQ0U,EAAM,MAAO4Z,CAAa,EAGpE,KAAK,YAAY,WAAWtuB,EAAQ0U,EAAM,KAAK,IAInD1U,EAAS,KAAK,aAAa,yBAC3B,KAAK,YAAY,WAAWA,EAAQ0U,EAAM,KAAK,GAE/C,CAACA,EAAM,SACP,OACJ,IAAM5M,EAAW,KAAK,YAAY,cAAc9H,CAAM,EAChDuuB,EAAcD,EAAgBxmB,EAAS,YAAYwmB,CAAa,EAAIxmB,EAAS,OAC7EgZ,EAAWhZ,EAASymB,EAAc,CAAC,EAGzC,GADc,KAAK,YAAY,0BAA0BzN,CAAQ,EACtD,CACP,GAAM,CAAE,QAAA0N,EAAS,OAAAC,EAAQ,UAAAC,CAAU,EAAIha,EAAM,SAC7C,KAAK,YAAY,6BAA6BoM,EAAU,CAAE,QAAA0N,EAAS,OAAAC,EAAQ,UAAAC,CAAU,CAAC,CAC1F,MACS,KAAK,QAAQ,wBAClB,KAAK,YAAY,0BAA0B5N,EAAUpM,EAAM,QAAQ,CAE3E,CACA,YAAYia,EAAOlE,EAAW,CAC1B,QAASnpB,EAAQ,KAAK,YAAY,cAAcqtB,CAAK,EAAGrtB,EAAOA,EAAQ,KAAK,YAAY,cAAcqtB,CAAK,EACvG,KAAK,YAAY,WAAWrtB,CAAK,EACjC,KAAK,YAAY,YAAYmpB,EAAWnpB,CAAK,CAErD,CACA,gBAAgBS,EAAS6sB,EAAc,CACnC,GAAI,KAAK,YAAY,0BAA0B7sB,CAAO,GAAK6sB,EAAa,SAAU,CAC9E,IAAMC,EAAQD,EAAa,SACrBxJ,EAAK,KAAK,YAAY,WAAWrjB,CAAO,EACxC+sB,EAGNF,EAAa,OAAStK,EAAU,SAAWc,IAAOwJ,EAAa,QACzD,CACE,OAAQ,CAAE,GAAGC,CAAM,EACnB,QAASA,EAAM,QACf,OAAQA,EAAM,OACd,UAAWA,EAAM,SACrB,EACE,CACE,QAASA,EAAM,UACf,OAAQA,EAAM,SACd,UAAWA,EAAM,WACrB,EACJ,KAAK,YAAY,6BAA6B9sB,EAAS+sB,CAAM,CACjE,CACJ,CAEA,2CAA2Cpa,EAAO,CAE9C,GAAI,CAAC,KAAK,iBACN,MAAO,GACX,IAAIvQ,EACA6pB,EAQJ,OAPI,KAAK,aAAa,WAAa,GAAK,KAAK,iBACzC7pB,EAAU,KAAK,gBACf6pB,EAAe,KAAK,mBAGnB,CAAE,QAAA7pB,EAAS,aAAA6pB,CAAa,EAAI,KAAK,aAElCtZ,EAAM,QAAUmQ,EAAE,KAClB,KAAK,YAAY,WAAW1gB,CAAO,IAAM2gB,EAAG,gBAC5C,KAAK,YAAY,gBAAgB3gB,CAAO,IAAMwgB,EAAG,OAC1C,GAIX,KAAK,UAAU,gBAGTjQ,EAAM,QAAUmQ,EAAE,QAAUnQ,EAAM,QAAUmQ,EAAE,aAC5C,CAAC,KAAK,oBAAoBmJ,EAAc7pB,EAASwgB,EAAG,IAAI,CACpE,CACA,cAAcjQ,EAAO,CACjB,OAAQA,EAAM,KAAM,CAChB,KAAK4P,EAAU,UAAW,CACtB,KAAK,YAAY5P,CAAK,EACtB,KACJ,CACA,KAAK4P,EAAU,eAAgB,CAC3B,KAAK,gBAAgB5P,CAAK,EAC1B,KACJ,CACA,KAAK4P,EAAU,QAAS,CACpB,KAAK,UAAU5P,CAAK,EACpB,KACJ,CACA,KAAK4P,EAAU,QAAS,CACpB,KAAK,UAAU5P,CAAK,EACpB,KACJ,CACA,KAAK4P,EAAU,UAAW,CACtB,KAAK,iBAAiB5P,CAAK,EAC3B,KACJ,CACA,KAAK4P,EAAU,QAAS,CACpB,KAAK,SAAS5P,CAAK,EACnB,KACJ,CACA,KAAK4P,EAAU,IAAK,CAChB,KAAK,MAAM5P,CAAK,EAChB,KACJ,CACA,KAAK4P,EAAU,qBAAsB,CACjC,KAAK,sBAAsB5P,CAAK,EAChC,KACJ,CACJ,CACJ,CAEA,oBAAoBoZ,EAAK/rB,EAAS8qB,EAAW,CACzC,IAAMrE,EAAK,KAAK,YAAY,gBAAgBzmB,CAAO,EAC7C+nB,EAAQ,KAAK,YAAY,YAAY/nB,CAAO,EAClD,OAAsB6qB,GAAmBkB,EAAKtF,EAAIsB,EAAO+C,CAAS,CACtE,CAEA,sCAAuC,CACnC,IAAMkC,EAAa,KAAK,yBAAyB,QAAQ,OACzD,GAAIA,EAAY,CACZ,IAAMjc,EAAW,KAAK,yBAAyB,QAAQ,UAAWxI,GAAUA,EAAM,OAASoe,EAAU,QAAU,KAAK,aAAa,SAASpe,EAAM,OAAO,CAAC,EAClJ0kB,EAAYlc,EAAW,EAAIic,EAAa,EAAIjc,EAAW,EAC7D,QAASrR,EAAIutB,EAAWvtB,GAAK,EAAGA,IAAK,CACjC,IAAM6I,EAAQ,KAAK,yBAAyB,QAAQ7I,CAAC,EACrD,KAAK,eAAe6I,EAAM,MAAO,KAAK,YAAY,gBAAgBA,EAAM,OAAO,CAAC,EAChFA,EAAM,QAAU,KAAK,aAAa,OACtC,CACJ,CACJ,CAEA,iBAAkB,CACd,KAAK,aAAa,uBAAuB,EACzC,KAAK,aAAa,wBAAwB,EAC1C,KAAK,yBAAyB,kBAAkB,EAChD,KAAK,cAAgB2iB,EAAc,MACvC,CACA,gBAAiB,CACb,KAAK,aAAa,oCAAoCpI,EAAE,CAAC,EACzD,KAAK,aAAa,sBAAsBA,EAAE,CAAC,CAC/C,CAEA,qBAAsB,CAClB,QAASpjB,EAAI,KAAK,aAAa,SAAUA,GAAK,EAAGA,IAE7C,OAAQA,IAAM,GAAK,KAAK,gBAAkB,KAAK,kBAAoB,KAAK,aAAa,OAAOA,CAAC,EAAG,CAC5F,KAAKojB,EAAE,GAAI,CACP,KAAK,cAAgBoI,EAAc,OACnC,MACJ,CACA,KAAKpI,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACV,KAAK,cAAgBoI,EAAc,cACnC,MACJ,CACA,KAAKpI,EAAE,QAAS,CACZ,KAAK,cAAgBoI,EAAc,WACnC,MACJ,CACA,KAAKpI,EAAE,SAAU,CACb,KAAK,cAAgBoI,EAAc,gBACnC,MACJ,CACA,KAAKpI,EAAE,MAAO,CACV,KAAK,cAAgBoI,EAAc,SACnC,MACJ,CACA,KAAKpI,EAAE,KAAM,CACT,KAAK,cAAgBoI,EAAc,QACnC,MACJ,CACA,KAAKpI,EAAE,SAAU,CACb,KAAK,cAAgBoI,EAAc,YACnC,MACJ,CACA,KAAKpI,EAAE,OAAQ,CACX,KAAK,6BAA6BpjB,CAAC,EACnC,MACJ,CACA,KAAKojB,EAAE,SAAU,CACb,KAAK,cAAgB,KAAK,uBAAuB,CAAC,EAClD,MACJ,CACA,KAAKA,EAAE,KAAM,CACT,KAAK,cAAgB,KAAK,YAAcoI,EAAc,WAAaA,EAAc,YACjF,MACJ,CACA,KAAKpI,EAAE,GACP,KAAKA,EAAE,GAAI,CACP,GAAIpjB,EAAI,EAAG,CACP,KAAK,cAAgBwrB,EAAc,QACnC,MACJ,CACA,KACJ,CACA,KAAKpI,EAAE,KAAM,CACT,GAAIpjB,EAAI,EAAG,CACP,KAAK,cAAgBwrB,EAAc,QACnC,MACJ,CACA,KACJ,CACJ,CAEJ,KAAK,cAAgBA,EAAc,OACvC,CACA,6BAA6BgC,EAAW,CACpC,GAAIA,EAAY,EACZ,QAASxtB,EAAIwtB,EAAY,EAAGxtB,EAAI,EAAGA,IAAK,CACpC,IAAM2jB,EAAK,KAAK,aAAa,OAAO3jB,CAAC,EACrC,GAAI2jB,IAAOP,EAAE,SACT,MAEC,GAAIO,IAAOP,EAAE,MAAO,CACrB,KAAK,cAAgBoI,EAAc,mBACnC,MACJ,CACJ,CAEJ,KAAK,cAAgBA,EAAc,SACvC,CAEA,gCAAgC7H,EAAI,CAChC,OAAO+H,GAAqB,IAAI/H,CAAE,CACtC,CACA,gCAAiC,CAC7B,OAAO,KAAK,wBAA0B,KAAK,gCAAgC,KAAK,aAAa,YAAY,CAC7G,CACA,8BAA+B,CAC3B,QAAS3jB,EAAI,KAAK,aAAa,SAAUA,GAAK,EAAGA,IAAK,CAClD,IAAMytB,EAAc,KAAK,aAAa,MAAMztB,CAAC,EAC7C,OAAQ,KAAK,aAAa,OAAOA,CAAC,EAAG,CACjC,KAAKojB,EAAE,SAAU,CACb,GAAI,KAAK,YAAY,gBAAgBqK,CAAW,IAAMvK,EAAG,KACrD,MAAO,CAAE,OAAQ,KAAK,YAAY,mBAAmBuK,CAAW,EAAG,cAAe,IAAK,EAE3F,KACJ,CACA,KAAKrK,EAAE,MAAO,CACV,IAAM7kB,EAAS,KAAK,YAAY,cAAckvB,CAAW,EACzD,OAAIlvB,EACO,CAAE,OAAAA,EAAQ,cAAekvB,CAAY,EAEzC,CAAE,OAAQ,KAAK,aAAa,MAAMztB,EAAI,CAAC,EAAG,cAAe,IAAK,CACzE,CACA,QAEJ,CACJ,CACA,MAAO,CAAE,OAAQ,KAAK,aAAa,MAAM,CAAC,EAAG,cAAe,IAAK,CACrE,CACA,qBAAqBM,EAAS,CAC1B,IAAM4kB,EAAW,KAAK,6BAA6B,EAC/CA,EAAS,cACT,KAAK,YAAY,aAAaA,EAAS,OAAQ5kB,EAAS4kB,EAAS,aAAa,EAG9E,KAAK,YAAY,YAAYA,EAAS,OAAQ5kB,CAAO,CAE7D,CAEA,kBAAkBA,EAASkH,EAAI,CAC3B,IAAMuf,EAAK,KAAK,YAAY,gBAAgBzmB,CAAO,EACnD,OAAO6iB,GAAiB4D,CAAE,EAAE,IAAIvf,CAAE,CACtC,CACA,YAAYyL,EAAO,CAEf,GADA,KAAK,gBAAkB,GACnB,KAAK,UAAU,cAAe,CAC9Bya,GAA0B,KAAMza,CAAK,EACrC,MACJ,CACA,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBmC,GAAmB,KAAM1a,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BoC,GAAgB,KAAM3a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BqC,GAAgB,KAAM5a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBsC,GAAY,KAAM7a,CAAK,EACvB,KACJ,CACA,KAAKuY,EAAc,kBAAmB,CAClCuC,GAAoB,KAAM9a,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BwC,GAAe,KAAM/a,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,QACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,YAAa,CAC5ByC,GAAgB,KAAMhb,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,KACnB,KAAKA,EAAc,UACnB,KAAKA,EAAc,mBAAoB,CACnC,KAAK,kBAAkBvY,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,SACnB,KAAKA,EAAc,cACnB,KAAKA,EAAc,OAAQ,CACvB0C,GAAiB,KAAMjb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9B2C,GAAqB,KAAMlb,CAAK,EAChC,KACJ,CACA,KAAKuY,EAAc,gBAAiB,CAChC4C,GAAmB,KAAMnb,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B6C,GAAe,KAAMpb,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,iBAAkB,CACjC8C,GAAoB,KAAMrb,CAAK,EAC/B,KACJ,CACA,QAEJ,CACJ,CACA,gBAAgBA,EAAO,CAEnB,GADA,KAAK,gBAAkB,GACnB,KAAK,UAAU,cAAe,CAC9Bsb,GAA8B,KAAMtb,CAAK,EACzC,MACJ,CACA,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBmC,GAAmB,KAAM1a,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BoC,GAAgB,KAAM3a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BqC,GAAgB,KAAM5a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBsC,GAAY,KAAM7a,CAAK,EACvB,KACJ,CACA,KAAKuY,EAAc,kBAAmB,CAClCuC,GAAoB,KAAM9a,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BwC,GAAe,KAAM/a,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,KAAM,CACrB,KAAK,kBAAkBvY,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,SACnB,KAAKA,EAAc,cACnB,KAAKA,EAAc,OAAQ,CACvB0C,GAAiB,KAAMjb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,gBAAiB,CAChC4C,GAAmB,KAAMnb,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B6C,GAAe,KAAMpb,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,iBAAkB,CACjC8C,GAAoB,KAAMrb,CAAK,EAC/B,KACJ,CACA,QAEJ,CACJ,CACA,UAAUA,EAAO,CAEb,GADA,KAAK,gBAAkB,GACnB,KAAK,iBAAkB,CACvBub,GAAc,KAAMvb,CAAK,EACzB,MACJ,CACA,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,kBACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,SACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,gBACnB,KAAKA,EAAc,cACnB,KAAKA,EAAc,OACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,UACnB,KAAKA,EAAc,mBACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,eAAgB,CAC/BgD,GAAc,KAAMvb,CAAK,EACzB,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BiD,GAAiB,KAAMxb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BkD,GAA+B,KAAMzb,CAAK,EAC1C,KACJ,CACA,KAAKuY,EAAc,iBACnB,KAAKA,EAAc,qBAAsB,CACrCmD,GAAwB,KAAM1b,CAAK,EACnC,KACJ,CACA,QAEJ,CACJ,CACA,UAAUA,EAAO,CAEb,OADA,KAAK,gBAAkB,GACf,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBoD,GAAqB,KAAM3b,CAAK,EAChC,KACJ,CACA,KAAKuY,EAAc,YACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,kBACnB,KAAKA,EAAc,WAAY,CAC3B,KAAK,KAAKvY,EAAOgP,EAAI,gBAAgB,EACrC,KACJ,CACA,KAAKuJ,EAAc,cAAe,CAC9BiD,GAAiB,KAAMxb,CAAK,EAC5B,KACJ,CACA,QAEJ,CACJ,CACA,WAAWA,EAAO,CACd,KAAK,gBAAkB,GACvB,KAAK,aAAeA,EACpB,KAAK,iBAAiBA,CAAK,EACvBA,EAAM,aAAe,CAACA,EAAM,gBAC5B,KAAK,KAAKA,EAAOgP,EAAI,6CAA6C,CAE1E,CAWA,iBAAiBhP,EAAO,CAChB,KAAK,2CAA2CA,CAAK,EACrD4b,GAAyB,KAAM5b,CAAK,EAGpC,KAAK,+BAA+BA,CAAK,CAEjD,CACA,+BAA+BA,EAAO,CAClC,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBmC,GAAmB,KAAM1a,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BsD,GAAmB,KAAM7b,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BuD,GAAmB,KAAM9b,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBwD,GAAe,KAAM/b,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,kBAAmB,CAClCyD,GAAuB,KAAMhc,CAAK,EAClC,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B0D,GAAkB,KAAMjc,CAAK,EAC7B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxB2D,EAAe,KAAMlc,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,SAAU,CACzB4D,GAAgB,KAAMnc,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BiD,GAAiB,KAAMxb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B6D,GAAkB,KAAMpc,CAAK,EAC7B,KACJ,CACA,KAAKuY,EAAc,gBAAiB,CAChC8D,GAAsB,KAAMrc,CAAK,EACjC,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9B+D,GAAoB,KAAMtc,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,OAAQ,CACvBgE,GAAc,KAAMvc,CAAK,EACzB,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBiE,GAAe,KAAMxc,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,UAAW,CAC1BkE,GAAiB,KAAMzc,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,mBAAoB,CACnCmE,GAAwB,KAAM1c,CAAK,EACnC,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BoE,GAAmB,KAAM3c,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BqE,GAAkB,KAAM5c,CAAK,EAC7B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BsE,GAAmB,KAAM7c,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,eAAgB,CAC/BuE,GAAsB,KAAM9c,CAAK,EACjC,KACJ,CACA,KAAKuY,EAAc,iBAAkB,CACjCwE,GAAuB,KAAM/c,CAAK,EAClC,KACJ,CACA,KAAKuY,EAAc,qBAAsB,CACrCyE,GAA2B,KAAMhd,CAAK,EACtC,KACJ,CACA,QAEJ,CACJ,CACA,SAASA,EAAO,CACZ,KAAK,gBAAkB,GACvB,KAAK,aAAeA,EAChB,KAAK,iBACLid,GAAuB,KAAMjd,CAAK,EAGlC,KAAK,6BAA6BA,CAAK,CAE/C,CACA,6BAA6BA,EAAO,CAChC,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBmC,GAAmB,KAAM1a,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5B2E,GAAiB,KAAMld,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5B4E,GAAiB,KAAMnd,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxB6E,GAAa,KAAMpd,CAAK,EACxB,KACJ,CACA,KAAKuY,EAAc,kBAAmB,CAClC8E,GAAqB,KAAMrd,CAAK,EAChC,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B+E,GAAgB,KAAMtd,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBgF,GAAa,KAAMvd,CAAK,EACxB,KACJ,CACA,KAAKuY,EAAc,KAAM,CACrBiF,GAAa,KAAMxd,CAAK,EACxB,KACJ,CACA,KAAKuY,EAAc,SAAU,CACzBkF,GAAc,KAAMzd,CAAK,EACzB,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BiD,GAAiB,KAAMxb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BmF,GAAgB,KAAM1d,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,gBAAiB,CAChCoF,GAAoB,KAAM3d,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BqF,GAAkB,KAAM5d,CAAK,EAC7B,KACJ,CACA,KAAKuY,EAAc,OAAQ,CACvBsF,GAAY,KAAM7d,CAAK,EACvB,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBuF,GAAa,KAAM9d,CAAK,EACxB,KACJ,CACA,KAAKuY,EAAc,UAAW,CAC1BwF,GAAe,KAAM/d,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,mBAAoB,CACnCyF,GAAsB,KAAMhe,CAAK,EACjC,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5B0F,GAAiB,KAAMje,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3B2F,GAAgB,KAAMle,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5B4F,GAAiB,KAAMne,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,eAAgB,CAC/B6F,GAAoB,KAAMpe,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,iBAAkB,CACjC8C,GAAoB,KAAMrb,CAAK,EAC/B,KACJ,CACA,QAEJ,CACJ,CACA,MAAMA,EAAO,CACT,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QAAS,CACxBmC,GAAmB,KAAM1a,CAAK,EAC9B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BoC,GAAgB,KAAM3a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BqC,GAAgB,KAAM5a,CAAK,EAC3B,KACJ,CACA,KAAKuY,EAAc,QAAS,CACxBsC,GAAY,KAAM7a,CAAK,EACvB,KACJ,CACA,KAAKuY,EAAc,kBAAmB,CAClCuC,GAAoB,KAAM9a,CAAK,EAC/B,KACJ,CACA,KAAKuY,EAAc,WAAY,CAC3BwC,GAAe,KAAM/a,CAAK,EAC1B,KACJ,CACA,KAAKuY,EAAc,QACnB,KAAKA,EAAc,SACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,gBACnB,KAAKA,EAAc,cACnB,KAAKA,EAAc,OACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,UACnB,KAAKA,EAAc,mBAAoB,CACnC8F,GAAU,KAAMre,CAAK,EACrB,KACJ,CACA,KAAKuY,EAAc,KAAM,CACrB+F,GAAU,KAAMte,CAAK,EACrB,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BiD,GAAiB,KAAMxb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,YAAa,CAC5BgG,GAAc,KAAMve,CAAK,EACzB,KACJ,CACA,KAAKuY,EAAc,WACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,eACnB,KAAKA,EAAc,iBACnB,KAAKA,EAAc,qBAAsB,CACrCiG,GAAY,KAAMxe,CAAK,EACvB,KACJ,CACA,QAEJ,CACJ,CACA,sBAAsBA,EAAO,CACzB,GAAI,KAAK,kBACL,KAAK,gBAAkB,GACnBA,EAAM,MAAM,WAAW,CAAC,IAAcsO,EAAY,WAAW,CAC7D,GAAItO,EAAM,MAAM,SAAW,EACvB,OAEJA,EAAM,MAAQA,EAAM,MAAM,OAAO,CAAC,CACtC,CAEJ,GAAI,KAAK,UAAU,cAAe,CAC9B,KAAK,kBAAkBA,CAAK,EAC5B,MACJ,CACA,OAAQ,KAAK,cAAe,CACxB,KAAKuY,EAAc,QACnB,KAAKA,EAAc,kBACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,KACnB,KAAKA,EAAc,gBACnB,KAAKA,EAAc,UACnB,KAAKA,EAAc,mBACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,eAAgB,CAC/B,KAAK,kBAAkBvY,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,QACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,QACnB,KAAKA,EAAc,YACnB,KAAKA,EAAc,WACnB,KAAKA,EAAc,iBACnB,KAAKA,EAAc,qBAAsB,CACrCkG,GAA0B,KAAMze,CAAK,EACrC,KACJ,CACA,KAAKuY,EAAc,SACnB,KAAKA,EAAc,cACnB,KAAKA,EAAc,OAAQ,CACvB0C,GAAiB,KAAMjb,CAAK,EAC5B,KACJ,CACA,KAAKuY,EAAc,cAAe,CAC9BmG,GAA+B,KAAM1e,CAAK,EAC1C,KACJ,CACA,QAEJ,CACJ,CACJ,EAKA,SAAS2e,GAA+B5kB,EAAGiG,EAAO,CAC9C,IAAI4e,EAAyB7kB,EAAE,yBAAyB,kCAAkCiG,EAAM,OAAO,EACvG,OAAI4e,EACK7kB,EAAE,aAAa,SAAS6kB,EAAuB,OAAO,EAIjD7kB,EAAE,aAAa,WAAWiG,EAAM,KAAK,IAC3C4e,EAAyB,OAJzB7kB,EAAE,yBAAyB,YAAY6kB,CAAsB,EAC7DA,EAAyB,MAO7BC,GAAoB9kB,EAAGiG,CAAK,EAEzB4e,CACX,CAEA,SAASE,GAAsB/kB,EAAG6kB,EAAwB,CACtD,IAAIG,EAAgB,KAChBtqB,EAAMsF,EAAE,aAAa,SACzB,KAAOtF,GAAO,EAAGA,IAAO,CACpB,IAAMpH,EAAU0M,EAAE,aAAa,MAAMtF,CAAG,EACxC,GAAIpH,IAAYuxB,EAAuB,QACnC,MAEA7kB,EAAE,kBAAkB1M,EAAS0M,EAAE,aAAa,OAAOtF,CAAG,CAAC,IACvDsqB,EAAgB1xB,EAExB,CACA,OAAK0xB,IACDhlB,EAAE,aAAa,gBAAgBtF,EAAM,EAAI,EAAIA,CAAG,EAChDsF,EAAE,yBAAyB,YAAY6kB,CAAsB,GAE1DG,CACX,CAEA,SAASC,GAAYjlB,EAAGglB,EAAeE,EAAmB,CACtD,IAAIjb,EAAc+a,EACdG,EAAcnlB,EAAE,aAAa,kBAAkBglB,CAAa,EAChE,QAAShyB,EAAI,EAAGM,EAAU6xB,EAAa7xB,IAAY4xB,EAAmBlyB,IAAKM,EAAU6xB,EAAa,CAE9FA,EAAcnlB,EAAE,aAAa,kBAAkB1M,CAAO,EACtD,IAAM8xB,EAAeplB,EAAE,yBAAyB,gBAAgB1M,CAAO,EACjE+xB,EAAkBD,GAAgBpyB,GAAKurB,GACR,CAAC6G,GAAgBC,GAE9CA,GACArlB,EAAE,yBAAyB,YAAYolB,CAAY,EAEvDplB,EAAE,aAAa,OAAO1M,CAAO,IAG7BA,EAAUgyB,GAA2BtlB,EAAGolB,CAAY,EAChDnb,IAAgB+a,IAChBhlB,EAAE,yBAAyB,SAAWolB,GAE1CplB,EAAE,YAAY,WAAWiK,CAAW,EACpCjK,EAAE,YAAY,YAAY1M,EAAS2W,CAAW,EAC9CA,EAAc3W,EAEtB,CACA,OAAO2W,CACX,CAEA,SAASqb,GAA2BtlB,EAAGolB,EAAc,CACjD,IAAMrL,EAAK/Z,EAAE,YAAY,gBAAgBolB,EAAa,OAAO,EACvD7L,EAAavZ,EAAE,YAAY,cAAcolB,EAAa,MAAM,QAASrL,EAAIqL,EAAa,MAAM,KAAK,EACvG,OAAAplB,EAAE,aAAa,QAAQolB,EAAa,QAAS7L,CAAU,EACvD6L,EAAa,QAAU7L,EAChBA,CACX,CAEA,SAASgM,GAAiCvlB,EAAGwlB,EAAgBvb,EAAa,CACtE,IAAM0M,EAAK3W,EAAE,YAAY,WAAWwlB,CAAc,EAC5CnG,EAAM/I,GAASK,CAAE,EACvB,GAAI3W,EAAE,gCAAgCqf,CAAG,EACrCrf,EAAE,qBAAqBiK,CAAW,MAEjC,CACD,IAAM8P,EAAK/Z,EAAE,YAAY,gBAAgBwlB,CAAc,EACnDnG,IAAQjJ,EAAE,UAAY2D,IAAO7D,EAAG,OAChCsP,EAAiBxlB,EAAE,YAAY,mBAAmBwlB,CAAc,GAEpExlB,EAAE,YAAY,YAAYwlB,EAAgBvb,CAAW,CACzD,CACJ,CAEA,SAASwb,GAA2BzlB,EAAGglB,EAAeH,EAAwB,CAC1E,IAAM9K,EAAK/Z,EAAE,YAAY,gBAAgB6kB,EAAuB,OAAO,EACjE,CAAE,MAAA5e,CAAM,EAAI4e,EACZtL,EAAavZ,EAAE,YAAY,cAAciG,EAAM,QAAS8T,EAAI9T,EAAM,KAAK,EAC7EjG,EAAE,YAAYglB,EAAezL,CAAU,EACvCvZ,EAAE,YAAY,YAAYglB,EAAezL,CAAU,EACnDvZ,EAAE,yBAAyB,2BAA2BuZ,EAAYtT,CAAK,EACvEjG,EAAE,yBAAyB,YAAY6kB,CAAsB,EAC7D7kB,EAAE,aAAa,OAAO6kB,EAAuB,OAAO,EACpD7kB,EAAE,aAAa,YAAYglB,EAAezL,EAAYtT,EAAM,KAAK,CACrE,CAEA,SAASyf,GAAmB1lB,EAAGiG,EAAO,CAClC,QAASjT,EAAI,EAAGA,EAAIsrB,GAAoBtrB,IAAK,CACzC,IAAM6xB,EAAyBD,GAA+B5kB,EAAGiG,CAAK,EACtE,GAAI,CAAC4e,EACD,MAEJ,IAAMG,EAAgBD,GAAsB/kB,EAAG6kB,CAAsB,EACrE,GAAI,CAACG,EACD,MAEJhlB,EAAE,yBAAyB,SAAW6kB,EACtC,IAAM5a,EAAcgb,GAAYjlB,EAAGglB,EAAeH,EAAuB,OAAO,EAC1EW,EAAiBxlB,EAAE,aAAa,kBAAkB6kB,EAAuB,OAAO,EACtF7kB,EAAE,YAAY,WAAWiK,CAAW,EAChCub,GACAD,GAAiCvlB,EAAGwlB,EAAgBvb,CAAW,EACnEwb,GAA2BzlB,EAAGglB,EAAeH,CAAsB,CACvE,CACJ,CAGA,SAASrD,GAAcxhB,EAAGiG,EAAO,CAC7BjG,EAAE,mBAAmBiG,EAAOjG,EAAE,aAAa,wBAAwB,CACvE,CACA,SAAS0hB,GAA+B1hB,EAAGiG,EAAO,CAC9CjG,EAAE,mBAAmBiG,EAAOjG,EAAE,aAAa,MAAM,CAAC,CAAC,CACvD,CACA,SAAS2hB,GAAwB3hB,EAAGiG,EAAO,CACvCjG,EAAE,mBAAmBiG,EAAOjG,EAAE,QAAQ,CAC1C,CACA,SAASykB,GAAYzkB,EAAGiG,EAAO,CAG3B,GAFAjG,EAAE,QAAU,GAERiG,EAAM,SAAU,CAGhB,IAAMyL,EAAS1R,EAAE,gBAAkB,EAAI,EACvC,QAAShN,EAAIgN,EAAE,aAAa,SAAUhN,GAAK0e,EAAQ1e,IAC/CgN,EAAE,gBAAgBA,EAAE,aAAa,MAAMhN,CAAC,EAAGiT,CAAK,EAGpD,GAAI,CAACjG,EAAE,iBAAmBA,EAAE,aAAa,UAAY,EAAG,CACpD,IAAM2lB,EAAc3lB,EAAE,aAAa,MAAM,CAAC,EACpC4lB,EAAe5lB,EAAE,YAAY,0BAA0B2lB,CAAW,EACxE,GAAIC,GAAgB,CAACA,EAAa,SAC9B5lB,EAAE,gBAAgB2lB,EAAa1f,CAAK,EAChCjG,EAAE,aAAa,UAAY,GAAG,CAC9B,IAAM6lB,EAAc7lB,EAAE,aAAa,MAAM,CAAC,EACpC8lB,EAAe9lB,EAAE,YAAY,0BAA0B6lB,CAAW,EACpEC,GAAgB,CAACA,EAAa,QAC9B9lB,EAAE,gBAAgB6lB,EAAa5f,CAAK,CAE5C,CAER,CACJ,CACJ,CAGA,SAAS2b,GAAqB5hB,EAAGiG,EAAO,CACpCjG,EAAE,iBAAiBiG,CAAK,EACxB,IAAM6V,EAAO7V,EAAM,YAAcgQ,EAAc,OAAiB+G,GAAgB/W,CAAK,EACxE8W,GAAa9W,CAAK,GAC3BjG,EAAE,KAAKiG,EAAOgP,EAAI,oBAAoB,EAE1CjV,EAAE,YAAY,gBAAgBA,EAAE,SAAU8b,CAAI,EAC9C9b,EAAE,cAAgBwe,EAAc,WACpC,CACA,SAASmC,GAAmB3gB,EAAGiG,EAAO,CAClCjG,EAAE,KAAKiG,EAAOgP,EAAI,eAAgB,EAAI,EACtCjV,EAAE,YAAY,gBAAgBA,EAAE,SAAUiW,EAAc,MAAM,EAC9DjW,EAAE,cAAgBwe,EAAc,YAChCxe,EAAE,cAAciG,CAAK,CACzB,CAGA,SAAS6b,GAAmB9hB,EAAGiG,EAAO,CAC9BA,EAAM,QAAUmQ,EAAE,MAClBpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,aAGhCoC,GAAgB5gB,EAAGiG,CAAK,CAEhC,CACA,SAASkd,GAAiBnjB,EAAGiG,EAAO,CAChC,IAAM0Q,EAAK1Q,EAAM,OACb0Q,IAAOP,EAAE,MAAQO,IAAOP,EAAE,MAAQO,IAAOP,EAAE,MAAQO,IAAOP,EAAE,KAC5DwK,GAAgB5gB,EAAGiG,CAAK,CAEhC,CACA,SAAS2a,GAAgB5gB,EAAGiG,EAAO,CAC/BjG,EAAE,uBAAuB,EACzBA,EAAE,cAAgBwe,EAAc,YAChCxe,EAAE,cAAciG,CAAK,CACzB,CAGA,SAAS8b,GAAmB/hB,EAAGiG,EAAO,CAClC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACTpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,cAAgBwe,EAAc,QAChC,KACJ,CACA,QACIqC,GAAgB7gB,EAAGiG,CAAK,CAEhC,CACJ,CACA,SAASmd,GAAiBpjB,EAAGiG,EAAO,CAChC,IAAM0Q,EAAK1Q,EAAM,MACb0Q,IAAOP,EAAE,MAAQO,IAAOP,EAAE,MAAQO,IAAOP,EAAE,MAAQO,IAAOP,EAAE,GAC5DyK,GAAgB7gB,EAAGiG,CAAK,EAGxBjG,EAAE,KAAKiG,EAAOgP,EAAI,gCAAgC,CAE1D,CACA,SAAS4L,GAAgB7gB,EAAGiG,EAAO,CAC/BjG,EAAE,mBAAmBqW,EAAG,KAAMD,EAAE,IAAI,EACpCpW,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,cAAgBwe,EAAc,QAChCxe,EAAE,cAAciG,CAAK,CACzB,CAGA,SAAS+b,GAAehiB,EAAGiG,EAAO,CAC9B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KAAM,CACTpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BjQ,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACVpW,EAAE,qBAAqBiG,EAAO+Q,EAAc,MAAM,EAClD,KACJ,CACA,KAAKZ,EAAE,SAAU,CACTpW,EAAE,QAAQ,iBACVA,EAAE,qBAAqBiG,EAAO+Q,EAAc,OAAO,GAGnDhX,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,mBAEpC,KACJ,CACA,KAAKpI,EAAE,SACP,KAAKA,EAAE,MAAO,CACVpW,EAAE,qBAAqBiG,EAAO+Q,EAAc,OAAO,EACnD,KACJ,CACA,KAAKZ,EAAE,OAAQ,CACXpW,EAAE,qBAAqBiG,EAAO+Q,EAAc,WAAW,EACvD,KACJ,CACA,KAAKZ,EAAE,SAAU,CACbpW,EAAE,gBAAgBiG,CAAK,EACvBjG,EAAE,yBAAyB,aAAa,EACxCA,EAAE,WAAa,GACfA,EAAE,cAAgBwe,EAAc,YAChCxe,EAAE,uBAAuB,QAAQwe,EAAc,WAAW,EAC1D,KACJ,CACA,KAAKpI,EAAE,KAAM,CACTpW,EAAE,KAAKiG,EAAOgP,EAAI,+BAA+B,EACjD,KACJ,CACA,QACI6L,GAAY9gB,EAAGiG,CAAK,CAE5B,CACJ,CACA,SAASod,GAAarjB,EAAGiG,EAAO,CAC5B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACTpW,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,WAChC,KACJ,CACA,KAAKpI,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,KAAM,CACT0K,GAAY9gB,EAAGiG,CAAK,EACpB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,QACIjG,EAAE,KAAKiG,EAAOgP,EAAI,gCAAgC,CAE1D,CACJ,CACA,SAAS8Q,GAAqB/lB,EAAGiG,EAAO,CAChCjG,EAAE,aAAa,UAAY,GAC3BA,EAAE,aAAa,iCAAiC,EAC5CA,EAAE,aAAa,eAAiBoW,EAAE,UAClCpW,EAAE,KAAKiG,EAAOgP,EAAI,qCAAqC,EAE3DjV,EAAE,aAAa,sBAAsBoW,EAAE,QAAQ,EAC/CpW,EAAE,yBAAyB,kBAAkB,EAC7CA,EAAE,uBAAuB,MAAM,EAC/BA,EAAE,oBAAoB,GAGtBA,EAAE,KAAKiG,EAAOgP,EAAI,gCAAgC,CAE1D,CACA,SAAS6L,GAAY9gB,EAAGiG,EAAO,CAC3BjG,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,WAChCxe,EAAE,cAAciG,CAAK,CACzB,CAGA,SAASgc,GAAuBjiB,EAAGiG,EAAO,CACtC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACV4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACbpW,EAAE,KAAKiG,EAAOgP,EAAI,oBAAoB,EACtC,KACJ,CACA,QACI8L,GAAoB/gB,EAAGiG,CAAK,CAEpC,CACJ,CACA,SAASqd,GAAqBtjB,EAAGiG,EAAO,CACpC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,SAAU,CACbpW,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,QAChC,KACJ,CACA,KAAKpI,EAAE,GAAI,CACP2K,GAAoB/gB,EAAGiG,CAAK,EAC5B,KACJ,CACA,QACIjG,EAAE,KAAKiG,EAAOgP,EAAI,gCAAgC,CAE1D,CACJ,CACA,SAAS8L,GAAoB/gB,EAAGiG,EAAO,CACnC,IAAM+f,EAAU/f,EAAM,OAAS4P,EAAU,IAAMZ,EAAI,yBAA2BA,EAAI,kCAClFjV,EAAE,KAAKiG,EAAO+f,CAAO,EACrBhmB,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,QAChCxe,EAAE,cAAciG,CAAK,CACzB,CAGA,SAASic,GAAkBliB,EAAGiG,EAAO,CACjC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACTpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,GACfA,EAAE,cAAgBwe,EAAc,QAChC,KACJ,CACA,KAAKpI,EAAE,SAAU,CACbpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,YAChC,KACJ,CACA,KAAKpI,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OACP,KAAKA,EAAE,MACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACVpW,EAAE,KAAKiG,EAAOgP,EAAI,yBAAyB,EAC3CjV,EAAE,aAAa,KAAKA,EAAE,YAAaoW,EAAE,IAAI,EACzC4L,GAAehiB,EAAGiG,CAAK,EACvBjG,EAAE,aAAa,OAAOA,EAAE,WAAW,EACnC,KACJ,CACA,KAAKoW,EAAE,KAAM,CACTpW,EAAE,KAAKiG,EAAOgP,EAAI,+BAA+B,EACjD,KACJ,CACA,QACI+L,GAAehhB,EAAGiG,CAAK,CAE/B,CACJ,CACA,SAASsd,GAAgBvjB,EAAGiG,EAAO,CAC/B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GAAI,CACP4K,GAAehhB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,QACIjG,EAAE,KAAKiG,EAAOgP,EAAI,gCAAgC,CAE1D,CACJ,CACA,SAAS+L,GAAehhB,EAAGiG,EAAO,CAC9BjG,EAAE,mBAAmBqW,EAAG,KAAMD,EAAE,IAAI,EACpCpW,EAAE,cAAgBwe,EAAc,QAChCyH,GAAWjmB,EAAGiG,CAAK,CACvB,CAGA,SAASggB,GAAWjmB,EAAGiG,EAAO,CAC1B,OAAQA,EAAM,KAAM,CAChB,KAAK4P,EAAU,UAAW,CACtBoL,GAAgBjhB,EAAGiG,CAAK,EACxB,KACJ,CACA,KAAK4P,EAAU,qBAAsB,CACjC6O,GAA0B1kB,EAAGiG,CAAK,EAClC,KACJ,CACA,KAAK4P,EAAU,QAAS,CACpB2L,GAAcxhB,EAAGiG,CAAK,EACtB,KACJ,CACA,KAAK4P,EAAU,UAAW,CACtBsM,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAK4P,EAAU,QAAS,CACpB2N,GAAaxjB,EAAGiG,CAAK,EACrB,KACJ,CACA,KAAK4P,EAAU,IAAK,CAChByO,GAAUtkB,EAAGiG,CAAK,EAClB,KACJ,CACA,QAEJ,CACJ,CACA,SAASye,GAA0B1kB,EAAGiG,EAAO,CACzCjG,EAAE,qCAAqC,EACvCA,EAAE,kBAAkBiG,CAAK,CAC7B,CACA,SAASgb,GAAgBjhB,EAAGiG,EAAO,CAC/BjG,EAAE,qCAAqC,EACvCA,EAAE,kBAAkBiG,CAAK,EACzBjG,EAAE,WAAa,EACnB,CACA,SAASkmB,GAAmBlmB,EAAGiG,EAAO,CAC9BjG,EAAE,aAAa,YAAc,GAC7BA,EAAE,YAAY,gBAAgBA,EAAE,aAAa,MAAM,CAAC,EAAGiG,EAAM,KAAK,CAE1E,CACA,SAASkgB,GAAmBnmB,EAAGiG,EAAO,CAClC,IAAM4f,EAAc7lB,EAAE,aAAa,iCAAiC,EAChE6lB,GAAe7lB,EAAE,aAAa,YAAc,IAC5CA,EAAE,WAAa,GACfA,EAAE,YAAY,gBAAgB6lB,EAAa5f,EAAM,KAAK,EAE9D,CACA,SAASmgB,GAAuBpmB,EAAGiG,EAAO,CACtC,IAAM4f,EAAc7lB,EAAE,aAAa,iCAAiC,EAChEA,EAAE,YAAc6lB,IAChB7lB,EAAE,YAAY,WAAW6lB,CAAW,EACpC7lB,EAAE,aAAa,sBAAsB,EACrCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,YAExC,CACA,SAAS6H,GAAsBrmB,EAAGiG,EAAO,CACjCjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAASoQ,GAA6BtmB,EAAGiG,EAAO,CACxCjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAEjBwW,GAAiBxW,EAAE,aAAa,YAAY,GAC5CA,EAAE,aAAa,IAAI,EAEvBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAASqQ,GAAkBvmB,EAAGiG,EAAO,CAC7BjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAG/BlW,EAAE,gBAAkB,GACpBA,EAAE,WAAa,EACnB,CACA,SAASwmB,GAAmBxmB,EAAGiG,EAAO,CAClC,IAAMwgB,EAAazmB,EAAE,aAAa,UAAY,GAC1C,CAACA,EAAE,aAAeymB,KACdzmB,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC1BuQ,IACDzmB,EAAE,YAAcA,EAAE,aAAa,SAG3C,CACA,SAAS0mB,GAAuB1mB,EAAGiG,EAAO,CACtCjG,EAAE,WAAa,GACf,IAAM2W,EAAK1Q,EAAM,MACjB,QAASjT,EAAIgN,EAAE,aAAa,SAAUhN,GAAK,EAAGA,IAAK,CAC/C,IAAM2zB,EAAY3mB,EAAE,aAAa,OAAOhN,CAAC,EACzC,GAAK2jB,IAAOP,EAAE,IAAMuQ,IAAcvQ,EAAE,KAC9BO,IAAOP,EAAE,IAAMO,IAAOP,EAAE,MAAQuQ,IAAcvQ,EAAE,IAAMuQ,IAAcvQ,EAAE,IAAM,CAC9EpW,EAAE,aAAa,oCAAoC2mB,CAAS,EAC5D3mB,EAAE,aAAa,sBAAsB2mB,CAAS,EAC9C,KACJ,CACA,GAAIA,IAAcvQ,EAAE,SAChBuQ,IAAcvQ,EAAE,KAChBuQ,IAAcvQ,EAAE,GAChBpW,EAAE,kBAAkBA,EAAE,aAAa,MAAMhN,CAAC,EAAG2zB,CAAS,EACtD,KAER,CACI3mB,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAAS0Q,GAAwB5mB,EAAGiG,EAAO,CACnCjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,UAAU,MAAQgX,EAAc,SACtC,CACA,SAAS6P,GAAqB7mB,EAAGiG,EAAO,CAChCjG,EAAE,aAAa,WAAWoW,EAAE,MAAM,IAClCpW,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsBoW,EAAE,MAAM,GAEjDpW,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,EACnB,CACA,SAAS8mB,GAAgB9mB,EAAGiG,EAAO,CAC/B,IAAM8gB,EAAqB/mB,EAAE,yBAAyB,kCAAkCqW,EAAG,CAAC,EACxF0Q,IACArB,GAAmB1lB,EAAGiG,CAAK,EAC3BjG,EAAE,aAAa,OAAO+mB,EAAmB,OAAO,EAChD/mB,EAAE,yBAAyB,YAAY+mB,CAAkB,GAE7D/mB,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASiG,CAAK,CACxE,CACA,SAAS+gB,GAAgBhnB,EAAGiG,EAAO,CAC/BjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASiG,CAAK,CACxE,CACA,SAASghB,GAAmBjnB,EAAGiG,EAAO,CAClCjG,EAAE,qCAAqC,EACnCA,EAAE,aAAa,WAAWoW,EAAE,IAAI,IAChCsP,GAAmB1lB,EAAGiG,CAAK,EAC3BjG,EAAE,qCAAqC,GAE3CA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,yBAAyB,YAAYA,EAAE,aAAa,QAASiG,CAAK,CACxE,CACA,SAASihB,GAAqBlnB,EAAGiG,EAAO,CACpCjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,yBAAyB,aAAa,EACxCA,EAAE,WAAa,EACnB,CACA,SAASmnB,GAAoBnnB,EAAGiG,EAAO,CAC/BjG,EAAE,YAAY,gBAAgBA,EAAE,QAAQ,IAAMiW,EAAc,QAAUjW,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACzGpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,GACfA,EAAE,cAAgBwe,EAAc,QACpC,CACA,SAAS4I,GAAmBpnB,EAAGiG,EAAO,CAClCjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,GACfiG,EAAM,eAAiB,EAC3B,CACA,SAASohB,GAAcphB,EAAO,CAC1B,IAAMqhB,EAAYxR,GAAa7P,EAAO+P,GAAM,IAAI,EAChD,OAAOsR,GAAa,MAAQA,EAAU,YAAY,IAAMjJ,EAC5D,CACA,SAASkJ,GAAoBvnB,EAAGiG,EAAO,CACnCjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC1BmR,GAAcphB,CAAK,IACpBjG,EAAE,WAAa,IAEnBiG,EAAM,eAAiB,EAC3B,CACA,SAASuhB,GAAoBxnB,EAAGiG,EAAO,CACnCjG,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BjQ,EAAM,eAAiB,EAC3B,CACA,SAASwhB,GAAiBznB,EAAGiG,EAAO,CAC5BjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,GACfiG,EAAM,eAAiB,EAC3B,CACA,SAASyhB,GAAoB1nB,EAAGiG,EAAO,CACnCA,EAAM,QAAUoQ,EAAG,IACnBpQ,EAAM,MAAQmQ,EAAE,IAChBgR,GAAmBpnB,EAAGiG,CAAK,CAC/B,CACA,SAAS0hB,GAAuB3nB,EAAGiG,EAAO,CACtCjG,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAG/BlW,EAAE,gBAAkB,GACpBA,EAAE,UAAU,MAAQgX,EAAc,OAClChX,EAAE,sBAAwBA,EAAE,cAC5BA,EAAE,WAAa,GACfA,EAAE,cAAgBwe,EAAc,IACpC,CACA,SAASoJ,GAAkB5nB,EAAGiG,EAAO,CAC7BjG,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACnCpW,EAAE,eAAe,EAErBA,EAAE,qCAAqC,EACvCA,EAAE,WAAa,GACfA,EAAE,qBAAqBiG,EAAO+Q,EAAc,OAAO,CACvD,CACA,SAAS6Q,GAAqB7nB,EAAGiG,EAAO,CACpCjG,EAAE,WAAa,GACfA,EAAE,qBAAqBiG,EAAO+Q,EAAc,OAAO,CACvD,CAGA,SAAS8Q,GAAsB9nB,EAAGiG,EAAO,CACrCjG,EAAE,qBAAqBiG,EAAO+Q,EAAc,OAAO,CACvD,CACA,SAAS+Q,GAAqB/nB,EAAGiG,EAAO,CACpCjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,WAAa,GACfA,EAAE,cACEA,EAAE,gBAAkBwe,EAAc,UAC9Bxe,EAAE,gBAAkBwe,EAAc,YAClCxe,EAAE,gBAAkBwe,EAAc,eAClCxe,EAAE,gBAAkBwe,EAAc,QAClCxe,EAAE,gBAAkBwe,EAAc,QAChCA,EAAc,mBACdA,EAAc,SAC5B,CACA,SAASwJ,GAAuBhoB,EAAGiG,EAAO,CAClCjG,EAAE,aAAa,eAAiBoW,EAAE,QAClCpW,EAAE,aAAa,IAAI,EAEvBA,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAAS+R,GAAiBjoB,EAAGiG,EAAO,CAC5BjG,EAAE,aAAa,WAAWoW,EAAE,IAAI,GAChCpW,EAAE,aAAa,uBAAuB,EAE1CA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAASgS,GAAiBloB,EAAGiG,EAAO,CAC5BjG,EAAE,aAAa,WAAWoW,EAAE,IAAI,GAChCpW,EAAE,aAAa,oCAAoCoW,EAAE,GAAG,EAE5DpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAASiS,GAAmBnoB,EAAGiG,EAAO,CAClCjG,EAAE,qCAAqC,EACxB0d,GAAuBzX,CAAK,EAC5B4X,GAAoB5X,CAAK,EACpCA,EAAM,YACNjG,EAAE,eAAeiG,EAAOiQ,EAAG,MAAM,EAGjClW,EAAE,eAAeiG,EAAOiQ,EAAG,MAAM,EAErCjQ,EAAM,eAAiB,EAC3B,CACA,SAASmiB,GAAkBpoB,EAAGiG,EAAO,CACjCjG,EAAE,qCAAqC,EACxB2d,GAAoB1X,CAAK,EACzB4X,GAAoB5X,CAAK,EACpCA,EAAM,YACNjG,EAAE,eAAeiG,EAAOiQ,EAAG,GAAG,EAG9BlW,EAAE,eAAeiG,EAAOiQ,EAAG,GAAG,EAElCjQ,EAAM,eAAiB,EAC3B,CACA,SAASoiB,GAAsBroB,EAAGiG,EAAO,CACrCjG,EAAE,qCAAqC,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,CACnC,CACA,SAASiM,EAAeniB,EAAGiG,EAAO,CAC9B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OAAQ,CACX4Q,GAAgBhnB,EAAGiG,CAAK,EACxB,KACJ,CACA,KAAKmQ,EAAE,EAAG,CACN0Q,GAAgB9mB,EAAGiG,CAAK,EACxB,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACPkQ,GAA6BtmB,EAAGiG,CAAK,EACrC,KACJ,CACA,KAAKmQ,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,WACP,KAAKA,EAAE,WAAY,CACfiQ,GAAsBrmB,EAAGiG,CAAK,EAC9B,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACPsQ,GAAuB1mB,EAAGiG,CAAK,EAC/B,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OAAQ,CACXgR,GAAmBpnB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,GAAI,CACPqR,GAAiBznB,EAAGiG,CAAK,EACzB,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,IAAK,CACR6R,GAAiBjoB,EAAGiG,CAAK,EACzB,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GAAI,CACP8R,GAAiBloB,EAAGiG,CAAK,EACzB,KACJ,CACA,KAAKmQ,EAAE,IACP,KAAKA,EAAE,QAAS,CACZmQ,GAAkBvmB,EAAGiG,CAAK,EAC1B,KACJ,CACA,KAAKmQ,EAAE,IAAK,CACRwR,GAAkB5nB,EAAGiG,CAAK,EAC1B,KACJ,CACA,KAAKmQ,EAAE,IAAK,CACRgS,GAAkBpoB,EAAGiG,CAAK,EAC1B,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACT8P,GAAmBlmB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACT+P,GAAmBnmB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACToQ,GAAmBxmB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACT6Q,GAAmBjnB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACT+R,GAAmBnoB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACV+Q,GAAoBnnB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACVmR,GAAoBvnB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OAAQ,CACXoR,GAAoBxnB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACVsR,GAAoB1nB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,OAAQ,CACXyQ,GAAqB7mB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QAAS,CACZ8Q,GAAqBlnB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,OAAQ,CACXyR,GAAqB7nB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,OAAQ,CACX2R,GAAqB/nB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,OACP,KAAKA,EAAE,SAAU,CACb4R,GAAuBhoB,EAAGiG,CAAK,EAC/B,KACJ,CACA,KAAKmQ,EAAE,QAAS,CACZ0R,GAAsB9nB,EAAGiG,CAAK,EAC9B,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACbgQ,GAAuBpmB,EAAGiG,CAAK,EAC/B,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACbuR,GAAuB3nB,EAAGiG,CAAK,EAC/B,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACTpW,EAAE,QAAQ,iBACV8nB,GAAsB9nB,EAAGiG,CAAK,EAG9BoiB,GAAsBroB,EAAGiG,CAAK,EAElC,KACJ,CACA,KAAKmQ,EAAE,UAAW,CACdwQ,GAAwB5mB,EAAGiG,CAAK,EAChC,KACJ,CACA,KAAKmQ,EAAE,IACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SAEH,MAEJ,QACIiS,GAAsBroB,EAAGiG,CAAK,CAEtC,CACJ,CACA,SAASqiB,GAAiBtoB,EAAGiG,EAAO,CAChC,GAAIjG,EAAE,aAAa,WAAWoW,EAAE,IAAI,IAChCpW,EAAE,cAAgBwe,EAAc,WAG5Bxe,EAAE,QAAQ,wBAAwB,CAClC,IAAM6lB,EAAc7lB,EAAE,aAAa,iCAAiC,EAChE6lB,GACA7lB,EAAE,gBAAgB6lB,EAAa5f,CAAK,CAE5C,CAER,CACA,SAASsiB,GAAiBvoB,EAAGiG,EAAO,CAC5BjG,EAAE,aAAa,WAAWoW,EAAE,IAAI,IAChCpW,EAAE,cAAgBwe,EAAc,WAChC2F,GAAgBnkB,EAAGiG,CAAK,EAEhC,CACA,SAASuiB,GAAoBxoB,EAAGiG,EAAO,CACnC,IAAM0Q,EAAK1Q,EAAM,MACbjG,EAAE,aAAa,WAAW2W,CAAE,IAC5B3W,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsB2W,CAAE,EAE/C,CACA,SAAS8R,GAAiBzoB,EAAG,CACzB,IAAMymB,EAAazmB,EAAE,aAAa,UAAY,EACxC,CAAE,YAAA0oB,CAAY,EAAI1oB,EACnBymB,IACDzmB,EAAE,YAAc,OAEf0oB,GAAejC,IAAezmB,EAAE,aAAa,WAAWoW,EAAE,IAAI,IAC/DpW,EAAE,aAAa,uBAAuB,EAClCymB,EACAzmB,EAAE,aAAa,sBAAsBoW,EAAE,IAAI,EAEtCsS,GACL1oB,EAAE,aAAa,OAAO0oB,CAAW,EAG7C,CACA,SAASC,GAAc3oB,EAAG,CACjBA,EAAE,aAAa,iBAAiBoW,EAAE,CAAC,GACpCpW,EAAE,mBAAmBqW,EAAG,EAAGD,EAAE,CAAC,EAElCpW,EAAE,eAAe,CACrB,CACA,SAAS4oB,GAAe5oB,EAAG,CACnBA,EAAE,aAAa,mBAAmBoW,EAAE,EAAE,IACtCpW,EAAE,aAAa,oCAAoCoW,EAAE,EAAE,EACvDpW,EAAE,aAAa,sBAAsBoW,EAAE,EAAE,EAEjD,CACA,SAASyS,GAAe7oB,EAAGiG,EAAO,CAC9B,IAAM0Q,EAAK1Q,EAAM,MACbjG,EAAE,aAAa,WAAW2W,CAAE,IAC5B3W,EAAE,aAAa,oCAAoC2W,CAAE,EACrD3W,EAAE,aAAa,sBAAsB2W,CAAE,EAE/C,CACA,SAASmS,GAA2B9oB,EAAG,CAC/BA,EAAE,aAAa,yBAAyB,IACxCA,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,6BAA6B,EAEpD,CACA,SAAS+oB,GAAmB/oB,EAAGiG,EAAO,CAClC,IAAM0Q,EAAK1Q,EAAM,MACbjG,EAAE,aAAa,WAAW2W,CAAE,IAC5B3W,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsB2W,CAAE,EACvC3W,EAAE,yBAAyB,kBAAkB,EAErD,CACA,SAASgpB,GAAehpB,EAAG,CACvBA,EAAE,qCAAqC,EACvCA,EAAE,mBAAmBqW,EAAG,GAAID,EAAE,EAAE,EAChCpW,EAAE,aAAa,IAAI,EACnBA,EAAE,WAAa,EACnB,CACA,SAAS8kB,GAAoB9kB,EAAGiG,EAAO,CACnC,IAAM0Q,EAAK1Q,EAAM,QACXoZ,EAAMpZ,EAAM,MAClB,QAASjT,EAAIgN,EAAE,aAAa,SAAUhN,EAAI,EAAGA,IAAK,CAC9C,IAAMM,EAAU0M,EAAE,aAAa,MAAMhN,CAAC,EAChC2zB,EAAY3mB,EAAE,aAAa,OAAOhN,CAAC,EAEzC,GAAIqsB,IAAQsH,IAActH,IAAQjJ,EAAE,SAAWpW,EAAE,YAAY,WAAW1M,CAAO,IAAMqjB,GAAK,CACtF3W,EAAE,aAAa,oCAAoCqf,CAAG,EAClDrf,EAAE,aAAa,UAAYhN,GAC3BgN,EAAE,aAAa,gBAAgBhN,CAAC,EACpC,KACJ,CACA,GAAIgN,EAAE,kBAAkB1M,EAASqzB,CAAS,EACtC,KAER,CACJ,CACA,SAASnD,GAAaxjB,EAAGiG,EAAO,CAC5B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,EACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OAAQ,CACXsP,GAAmB1lB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,EAAG,CACNuS,GAAc3oB,CAAC,EACf,KACJ,CACA,KAAKoW,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,IACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,WACP,KAAKA,EAAE,WAAY,CACfoS,GAAoBxoB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,GAAI,CACPwS,GAAe5oB,CAAC,EAChB,KACJ,CACA,KAAKoW,EAAE,GACP,KAAKA,EAAE,GAAI,CACPyS,GAAe7oB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACP0S,GAA2B9oB,CAAC,EAC5B,KACJ,CACA,KAAKoW,EAAE,GAAI,CACP4S,GAAehpB,CAAC,EAChB,KACJ,CACA,KAAKoW,EAAE,KAAM,CACTkS,GAAiBtoB,EAAGiG,CAAK,EACzB,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACTmS,GAAiBvoB,EAAGiG,CAAK,EACzB,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACTqS,GAAiBzoB,CAAC,EAClB,KACJ,CACA,KAAKoW,EAAE,OACP,KAAKA,EAAE,OACP,KAAKA,EAAE,QAAS,CACZ2S,GAAmB/oB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,QACI6e,GAAoB9kB,EAAGiG,CAAK,CAEpC,CACJ,CACA,SAASqe,GAAUtkB,EAAGiG,EAAO,CACrBjG,EAAE,uBAAuB,OAAS,EAClCwkB,GAAcxkB,EAAGiG,CAAK,EAGtBwe,GAAYzkB,EAAGiG,CAAK,CAE5B,CAGA,SAASwd,GAAazjB,EAAGiG,EAAO,CAC5B,IAAI/T,EACA+T,EAAM,QAAUmQ,EAAE,UACjBlkB,EAAK8N,EAAE,iBAAmB,MAAQ9N,IAAO,QAAkBA,EAAG,KAAK8N,EAAGA,EAAE,aAAa,OAAO,GAEjGA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBA,EAAE,qBACxB,CACA,SAASukB,GAAUvkB,EAAGiG,EAAO,CACzBjG,EAAE,KAAKiG,EAAOgP,EAAI,kCAAkC,EACpDjV,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBA,EAAE,sBACpBA,EAAE,MAAMiG,CAAK,CACjB,CAGA,SAASib,GAAiBlhB,EAAGiG,EAAO,CAChC,GAAIyY,GAAqB,IAAI1e,EAAE,aAAa,YAAY,EAKpD,OAJAA,EAAE,uBAAuB,OAAS,EAClCA,EAAE,sCAAwC,GAC1CA,EAAE,sBAAwBA,EAAE,cAC5BA,EAAE,cAAgBwe,EAAc,cACxBvY,EAAM,KAAM,CAChB,KAAK4P,EAAU,UAAW,CACtBsL,GAAqBnhB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAK4P,EAAU,qBAAsB,CACjC8O,GAA+B3kB,EAAGiG,CAAK,EACvC,KACJ,CAEJ,MAGAgjB,GAAajpB,EAAGiG,CAAK,CAE7B,CACA,SAASijB,GAAuBlpB,EAAGiG,EAAO,CACtCjG,EAAE,aAAa,wBAAwB,EACvCA,EAAE,yBAAyB,aAAa,EACxCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,UACpC,CACA,SAAS2K,GAAwBnpB,EAAGiG,EAAO,CACvCjG,EAAE,aAAa,wBAAwB,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,eACpC,CACA,SAAS4K,GAAmBppB,EAAGiG,EAAO,CAClCjG,EAAE,aAAa,wBAAwB,EACvCA,EAAE,mBAAmBqW,EAAG,SAAUD,EAAE,QAAQ,EAC5CpW,EAAE,cAAgBwe,EAAc,gBAChC8D,GAAsBtiB,EAAGiG,CAAK,CAClC,CACA,SAASojB,GAAqBrpB,EAAGiG,EAAO,CACpCjG,EAAE,aAAa,wBAAwB,EACvCA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,aACpC,CACA,SAAS8K,GAAkBtpB,EAAGiG,EAAO,CACjCjG,EAAE,aAAa,wBAAwB,EACvCA,EAAE,mBAAmBqW,EAAG,MAAOD,EAAE,KAAK,EACtCpW,EAAE,cAAgBwe,EAAc,cAChC+D,GAAoBviB,EAAGiG,CAAK,CAChC,CACA,SAASsjB,GAAqBvpB,EAAGiG,EAAO,CAChCjG,EAAE,aAAa,gBAAgBoW,EAAE,KAAK,IACtCpW,EAAE,aAAa,sBAAsBoW,EAAE,KAAK,EAC5CpW,EAAE,oBAAoB,EACtBA,EAAE,iBAAiBiG,CAAK,EAEhC,CACA,SAASujB,GAAqBxpB,EAAGiG,EAAO,CAChCohB,GAAcphB,CAAK,EACnBjG,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAG/B+S,GAAajpB,EAAGiG,CAAK,EAEzBA,EAAM,eAAiB,EAC3B,CACA,SAASwjB,GAAoBzpB,EAAGiG,EAAO,CAC/B,CAACjG,EAAE,aAAeA,EAAE,aAAa,YAAc,IAC/CA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,YAAcA,EAAE,aAAa,QAC/BA,EAAE,aAAa,IAAI,EAE3B,CACA,SAASoiB,GAAgBpiB,EAAGiG,EAAO,CAC/B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAAI,CACPkT,GAAkBtpB,EAAGiG,CAAK,EAC1B,KACJ,CACA,KAAKmQ,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,IAAK,CACRgT,GAAmBppB,EAAGiG,CAAK,EAC3B,KACJ,CACA,KAAKmQ,EAAE,KAAM,CACTqT,GAAoBzpB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACVmT,GAAqBvpB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACViT,GAAqBrpB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,MAAO,CACVoT,GAAqBxpB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,QAAS,CACZ8S,GAAuBlpB,EAAGiG,CAAK,EAC/B,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb+S,GAAwBnpB,EAAGiG,CAAK,EAChC,KACJ,CACA,QACIgjB,GAAajpB,EAAGiG,CAAK,CAE7B,CACJ,CACA,SAASyd,GAAc1jB,EAAGiG,EAAO,CAC7B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,MAAO,CACNpW,EAAE,aAAa,gBAAgBoW,EAAE,KAAK,IACtCpW,EAAE,aAAa,sBAAsBoW,EAAE,KAAK,EAC5CpW,EAAE,oBAAoB,GAE1B,KACJ,CACA,KAAKoW,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAEH,MAEJ,QACI6S,GAAajpB,EAAGiG,CAAK,CAE7B,CACJ,CACA,SAASgjB,GAAajpB,EAAGiG,EAAO,CAC5B,IAAMyjB,EAA4B1pB,EAAE,uBACpCA,EAAE,uBAAyB,GAE3BimB,GAAWjmB,EAAGiG,CAAK,EACnBjG,EAAE,uBAAyB0pB,CAC/B,CAGA,SAAS/E,GAA+B3kB,EAAGiG,EAAO,CAC9CjG,EAAE,uBAAuB,KAAKiG,CAAK,CACvC,CACA,SAASkb,GAAqBnhB,EAAGiG,EAAO,CACpCjG,EAAE,uBAAuB,KAAKiG,CAAK,EACnCjG,EAAE,sCAAwC,EAC9C,CACA,SAASyhB,GAAiBzhB,EAAGiG,EAAO,CAChC,IAAIjT,EAAI,EACR,GAAIgN,EAAE,sCACF,KAAOhN,EAAIgN,EAAE,uBAAuB,OAAQhN,IACxCi2B,GAAajpB,EAAGA,EAAE,uBAAuBhN,CAAC,CAAC,MAI/C,MAAOA,EAAIgN,EAAE,uBAAuB,OAAQhN,IACxCgN,EAAE,kBAAkBA,EAAE,uBAAuBhN,CAAC,CAAC,EAGvDgN,EAAE,cAAgBA,EAAE,sBACpBA,EAAE,cAAciG,CAAK,CACzB,CAGA,IAAM0jB,GAAsB,IAAI,IAAI,CAACvT,EAAE,QAASA,EAAE,IAAKA,EAAE,SAAUA,EAAE,MAAOA,EAAE,GAAIA,EAAE,MAAOA,EAAE,GAAIA,EAAE,MAAOA,EAAE,EAAE,CAAC,EAC/G,SAASiM,GAAkBriB,EAAGiG,EAAO,CACjC,IAAM0Q,EAAK1Q,EAAM,MACb0jB,GAAoB,IAAIhT,CAAE,EACtB3W,EAAE,aAAa,gBAAgBoW,EAAE,OAAO,IACxCpW,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsBoW,EAAE,OAAO,EAC9CpW,EAAE,yBAAyB,kBAAkB,EAC7CA,EAAE,cAAgBwe,EAAc,SAChC4D,GAAgBpiB,EAAGiG,CAAK,GAI5Bkc,EAAeniB,EAAGiG,CAAK,CAE/B,CACA,SAAS0d,GAAgB3jB,EAAGiG,EAAO,CAC/B,IAAM0Q,EAAK1Q,EAAM,MACjB,OAAQ0Q,EAAI,CACR,KAAKP,EAAE,QACP,KAAKA,EAAE,MAAO,CACNpW,EAAE,aAAa,gBAAgBoW,EAAE,OAAO,IACxCpW,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsBoW,EAAE,OAAO,EAC9CpW,EAAE,yBAAyB,kBAAkB,EAC7CA,EAAE,cAAgBwe,EAAc,SAC5B7H,IAAOP,EAAE,OACTsN,GAAc1jB,EAAGiG,CAAK,GAG9B,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAEH,MAEJ,QACIoN,GAAaxjB,EAAGiG,CAAK,CAE7B,CACJ,CAGA,SAASqc,GAAsBtiB,EAAGiG,EAAO,CACrC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,IAAK,CACRpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BjQ,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,QACImb,GAAmBphB,EAAGiG,CAAK,CAEnC,CACJ,CACA,SAAS2d,GAAoB5jB,EAAGiG,EAAO,CACnC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,SAAU,CACTpW,EAAE,aAAa,eAAiBoW,EAAE,WAClCpW,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,UAEpC,KACJ,CACA,KAAKpI,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,KAAKmQ,EAAE,IAEH,MAEJ,QACIgL,GAAmBphB,EAAGiG,CAAK,CAEnC,CACJ,CACA,SAASmb,GAAmBphB,EAAGiG,EAAO,CAC9BjG,EAAE,aAAa,eAAiBoW,EAAE,WAClCpW,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,SAChCxe,EAAE,cAAciG,CAAK,EAE7B,CAGA,SAASsc,GAAoBviB,EAAGiG,EAAO,CACnC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,GAAI,CACPpW,EAAE,aAAa,4BAA4B,EAC3CA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,OAChC,KACJ,CACA,KAAKpI,EAAE,GACP,KAAKA,EAAE,GAAI,CACPpW,EAAE,aAAa,4BAA4B,EAC3CA,EAAE,mBAAmBqW,EAAG,GAAID,EAAE,EAAE,EAChCpW,EAAE,cAAgBwe,EAAc,OAChCgE,GAAcxiB,EAAGiG,CAAK,EACtB,KACJ,CACA,KAAKmQ,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACNpW,EAAE,aAAa,gCAAgC,IAC/CA,EAAE,aAAa,4BAA4B,EAC3CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,SAChC4D,GAAgBpiB,EAAGiG,CAAK,GAE5B,KACJ,CACA,QACImc,GAAgBpiB,EAAGiG,CAAK,CAEhC,CACJ,CACA,SAAS4d,GAAkB7jB,EAAGiG,EAAO,CACjC,IAAM0Q,EAAK1Q,EAAM,MACjB,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACNpW,EAAE,aAAa,gBAAgB2W,CAAE,IACjC3W,EAAE,aAAa,4BAA4B,EAC3CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,UAEpC,KACJ,CACA,KAAKpI,EAAE,MAAO,CACNpW,EAAE,aAAa,gCAAgC,IAC/CA,EAAE,aAAa,4BAA4B,EAC3CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,SAChCkF,GAAc1jB,EAAGiG,CAAK,GAE1B,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAEH,MAEJ,QACIsN,GAAc1jB,EAAGiG,CAAK,CAE9B,CACJ,CAGA,SAASuc,GAAcxiB,EAAGiG,EAAO,CAC7B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GAAI,CACPpW,EAAE,aAAa,2BAA2B,EAC1CA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BlW,EAAE,cAAgBwe,EAAc,QAChCxe,EAAE,yBAAyB,aAAa,EACxC,KACJ,CACA,KAAKoW,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAAI,CACHpW,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,IACnCpW,EAAE,aAAa,2BAA2B,EAC1CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,cAChC+D,GAAoBviB,EAAGiG,CAAK,GAEhC,KACJ,CACA,QACImc,GAAgBpiB,EAAGiG,CAAK,CAEhC,CACJ,CACA,SAAS6d,GAAY9jB,EAAGiG,EAAO,CAC3B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,GAAI,CACHpW,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,IACnCpW,EAAE,aAAa,2BAA2B,EAC1CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,eAEpC,KACJ,CACA,KAAKpI,EAAE,MAAO,CACNpW,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,IACnCpW,EAAE,aAAa,2BAA2B,EAC1CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,cAChCqF,GAAkB7jB,EAAGiG,CAAK,GAE9B,KACJ,CACA,KAAKmQ,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,EACNpW,EAAE,aAAa,gBAAgBiG,EAAM,KAAK,GAAKjG,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,KAClFpW,EAAE,aAAa,2BAA2B,EAC1CA,EAAE,aAAa,IAAI,EACnBA,EAAE,cAAgBwe,EAAc,cAChCqF,GAAkB7jB,EAAGiG,CAAK,GAE9B,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KACP,KAAKA,EAAE,GACP,KAAKA,EAAE,GAEH,MAEJ,QACIsN,GAAc1jB,EAAGiG,CAAK,CAE9B,CACJ,CAGA,SAASwc,GAAeziB,EAAGiG,EAAO,CAC9B,IAAM0Q,EAAK1Q,EAAM,MACb0jB,GAAoB,IAAIhT,CAAE,GACtB3W,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,GAAKpW,EAAE,aAAa,gBAAgBoW,EAAE,EAAE,KAC3EpW,EAAE,gBAAgB,EAClBwiB,GAAcxiB,EAAGiG,CAAK,GAI1Bkc,EAAeniB,EAAGiG,CAAK,CAE/B,CACA,SAAS8d,GAAa/jB,EAAGiG,EAAO,CAC5B,IAAM0Q,EAAK1Q,EAAM,MACjB,OAAQ0Q,EAAI,CACR,KAAKP,EAAE,GACP,KAAKA,EAAE,GAAI,CACHpW,EAAE,aAAa,gBAAgB2W,CAAE,IACjC3W,EAAE,aAAa,uBAAuB,EACtCA,EAAE,aAAa,sBAAsB2W,CAAE,EACvC3W,EAAE,yBAAyB,kBAAkB,EAC7CA,EAAE,cAAgBwe,EAAc,QAEpC,KACJ,CACA,KAAKpI,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,GAAI,CACHpW,EAAE,aAAa,gBAAgB2W,CAAE,IACjC3W,EAAE,gBAAgB,EAClB8jB,GAAY9jB,EAAGiG,CAAK,GAExB,KACJ,CACA,KAAKmQ,EAAE,KACP,KAAKA,EAAE,QACP,KAAKA,EAAE,IACP,KAAKA,EAAE,SACP,KAAKA,EAAE,KAEH,MAEJ,QACIoN,GAAaxjB,EAAGiG,CAAK,CAE7B,CACJ,CAGA,SAASyc,GAAiB1iB,EAAGiG,EAAO,CAChC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,OAAQ,CACPpW,EAAE,aAAa,eAAiBoW,EAAE,QAClCpW,EAAE,aAAa,IAAI,EAEvBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/B,KACJ,CACA,KAAKE,EAAE,SAAU,CACTpW,EAAE,aAAa,eAAiBoW,EAAE,QAClCpW,EAAE,aAAa,IAAI,EAEnBA,EAAE,aAAa,eAAiBoW,EAAE,UAClCpW,EAAE,aAAa,IAAI,EAEvBA,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/B,KACJ,CACA,KAAKE,EAAE,MACP,KAAKA,EAAE,OACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OAAQ,CACPpW,EAAE,aAAa,iBAAiBoW,EAAE,MAAM,IACxCpW,EAAE,aAAa,sBAAsBoW,EAAE,MAAM,EAC7CpW,EAAE,oBAAoB,EAClBiG,EAAM,QAAUmQ,EAAE,QAClBpW,EAAE,iBAAiBiG,CAAK,GAGhC,KACJ,CACA,KAAKmQ,EAAE,OACP,KAAKA,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,QAEJ,CACJ,CACA,SAAS+d,GAAehkB,EAAGiG,EAAO,CAC9B,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,SAAU,CACTpW,EAAE,aAAa,SAAW,GAC1BA,EAAE,aAAa,eAAiBoW,EAAE,QAClCpW,EAAE,aAAa,OAAOA,EAAE,aAAa,SAAW,CAAC,IAAMoW,EAAE,UACzDpW,EAAE,aAAa,IAAI,EAEnBA,EAAE,aAAa,eAAiBoW,EAAE,UAClCpW,EAAE,aAAa,IAAI,EAEvB,KACJ,CACA,KAAKoW,EAAE,OAAQ,CACPpW,EAAE,aAAa,eAAiBoW,EAAE,QAClCpW,EAAE,aAAa,IAAI,EAEvB,KACJ,CACA,KAAKoW,EAAE,OAAQ,CACPpW,EAAE,aAAa,iBAAiBoW,EAAE,MAAM,IACxCpW,EAAE,aAAa,sBAAsBoW,EAAE,MAAM,EAC7CpW,EAAE,oBAAoB,GAE1B,KACJ,CACA,KAAKoW,EAAE,SAAU,CACb2P,GAAqB/lB,EAAGiG,CAAK,EAC7B,KACJ,CACA,QAEJ,CACJ,CAGA,SAAS0c,GAAwB3iB,EAAGiG,EAAO,CACvC,IAAM0Q,EAAK1Q,EAAM,MACb0Q,IAAOP,EAAE,SACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,IACTO,IAAOP,EAAE,IACTO,IAAOP,EAAE,IACTpW,EAAE,aAAa,sBAAsBoW,EAAE,MAAM,EAC7CpW,EAAE,oBAAoB,EACtBA,EAAE,iBAAiBiG,CAAK,GAGxByc,GAAiB1iB,EAAGiG,CAAK,CAEjC,CACA,SAASge,GAAsBjkB,EAAGiG,EAAO,CACrC,IAAM0Q,EAAK1Q,EAAM,MACb0Q,IAAOP,EAAE,SACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,OACTO,IAAOP,EAAE,IACTO,IAAOP,EAAE,IACTO,IAAOP,EAAE,GACLpW,EAAE,aAAa,gBAAgB2W,CAAE,IACjC3W,EAAE,aAAa,sBAAsBoW,EAAE,MAAM,EAC7CpW,EAAE,oBAAoB,EACtBA,EAAE,SAASiG,CAAK,GAIpB+d,GAAehkB,EAAGiG,CAAK,CAE/B,CAGA,SAAS2c,GAAmB5iB,EAAGiG,EAAO,CAClC,OAAQA,EAAM,MAAO,CAEjB,KAAKmQ,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,QACP,KAAKA,EAAE,KACP,KAAKA,EAAE,KACP,KAAKA,EAAE,SACP,KAAKA,EAAE,OACP,KAAKA,EAAE,MACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MAAO,CACV4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CAEA,KAAKmQ,EAAE,QACP,KAAKA,EAAE,SACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MACP,KAAKA,EAAE,MAAO,CACVpW,EAAE,uBAAuB,CAAC,EAAIwe,EAAc,SAC5Cxe,EAAE,cAAgBwe,EAAc,SAChC4D,GAAgBpiB,EAAGiG,CAAK,EACxB,KACJ,CACA,KAAKmQ,EAAE,IAAK,CACRpW,EAAE,uBAAuB,CAAC,EAAIwe,EAAc,gBAC5Cxe,EAAE,cAAgBwe,EAAc,gBAChC8D,GAAsBtiB,EAAGiG,CAAK,EAC9B,KACJ,CACA,KAAKmQ,EAAE,GAAI,CACPpW,EAAE,uBAAuB,CAAC,EAAIwe,EAAc,cAC5Cxe,EAAE,cAAgBwe,EAAc,cAChC+D,GAAoBviB,EAAGiG,CAAK,EAC5B,KACJ,CACA,KAAKmQ,EAAE,GACP,KAAKA,EAAE,GAAI,CACPpW,EAAE,uBAAuB,CAAC,EAAIwe,EAAc,OAC5Cxe,EAAE,cAAgBwe,EAAc,OAChCgE,GAAcxiB,EAAGiG,CAAK,EACtB,KACJ,CACA,QACIjG,EAAE,uBAAuB,CAAC,EAAIwe,EAAc,QAC5Cxe,EAAE,cAAgBwe,EAAc,QAChC2D,EAAeniB,EAAGiG,CAAK,CAE/B,CACJ,CACA,SAASie,GAAiBlkB,EAAGiG,EAAO,CAC5BA,EAAM,QAAUmQ,EAAE,UAClB2P,GAAqB/lB,EAAGiG,CAAK,CAErC,CACA,SAASue,GAAcxkB,EAAGiG,EAAO,CACzBjG,EAAE,aAAa,UAAY,GAC3BA,EAAE,aAAa,sBAAsBoW,EAAE,QAAQ,EAC/CpW,EAAE,yBAAyB,kBAAkB,EAC7CA,EAAE,uBAAuB,MAAM,EAC/BA,EAAE,oBAAoB,EACtBA,EAAE,MAAMiG,CAAK,GAGbwe,GAAYzkB,EAAGiG,CAAK,CAE5B,CAGA,SAAS4c,GAAkB7iB,EAAGiG,EAAO,CAC7BA,EAAM,QAAUmQ,EAAE,KAClB+L,EAAeniB,EAAGiG,CAAK,EAGvBob,GAAerhB,EAAGiG,CAAK,CAE/B,CACA,SAASke,GAAgBnkB,EAAGiG,EAAO,CAC/B,IAAI/T,EACJ,GAAI+T,EAAM,QAAUmQ,EAAE,MAMlB,GALKpW,EAAE,kBACHA,EAAE,cAAgBwe,EAAc,kBAIhCxe,EAAE,QAAQ,wBAA0BA,EAAE,aAAa,OAAO,CAAC,IAAMoW,EAAE,KAAM,CACzEpW,EAAE,gBAAgBA,EAAE,aAAa,MAAM,CAAC,EAAGiG,CAAK,EAEhD,IAAM4f,EAAc7lB,EAAE,aAAa,MAAM,CAAC,EACtC6lB,GAAe,EAAG,GAAA3zB,EAAK8N,EAAE,YAAY,0BAA0B6lB,CAAW,KAAO,MAAQ3zB,IAAO,SAAkBA,EAAG,SACrH8N,EAAE,gBAAgB6lB,EAAa5f,CAAK,CAE5C,OAGAob,GAAerhB,EAAGiG,CAAK,CAE/B,CACA,SAASob,GAAerhB,EAAGiG,EAAO,CAC9BjG,EAAE,cAAgBwe,EAAc,QAChCyH,GAAWjmB,EAAGiG,CAAK,CACvB,CAGA,SAAS6c,GAAmB9iB,EAAGiG,EAAO,CAClC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACbpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/B,KACJ,CACA,KAAKE,EAAE,MAAO,CACVpW,EAAE,eAAeiG,EAAOiQ,EAAG,IAAI,EAC/BjQ,EAAM,eAAiB,GACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,QAEJ,CACJ,CACA,SAASme,GAAiBpkB,EAAGiG,EAAO,CAC5BA,EAAM,QAAUmQ,EAAE,UAAY,CAACpW,EAAE,aAAa,yBAAyB,IACvEA,EAAE,aAAa,IAAI,EACf,CAACA,EAAE,iBAAmBA,EAAE,aAAa,eAAiBoW,EAAE,WACxDpW,EAAE,cAAgBwe,EAAc,gBAG5C,CAGA,SAASuE,GAAsB/iB,EAAGiG,EAAO,CACrC,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,QAEJ,CACJ,CACA,SAASoe,GAAoBrkB,EAAGiG,EAAO,CAC/BA,EAAM,QAAUmQ,EAAE,OAClBpW,EAAE,cAAgBwe,EAAc,qBAExC,CAGA,SAASwE,GAAuBhjB,EAAGiG,EAAO,CAClCA,EAAM,QAAUmQ,EAAE,KAClB+L,EAAeniB,EAAGiG,CAAK,EAGvBqb,GAAoBthB,EAAGiG,CAAK,CAEpC,CACA,SAASqb,GAAoBthB,EAAGiG,EAAO,CACnCjG,EAAE,cAAgBwe,EAAc,QAChCyH,GAAWjmB,EAAGiG,CAAK,CACvB,CAGA,SAASgd,GAA2BjjB,EAAGiG,EAAO,CAC1C,OAAQA,EAAM,MAAO,CACjB,KAAKmQ,EAAE,KAAM,CACT+L,EAAeniB,EAAGiG,CAAK,EACvB,KACJ,CACA,KAAKmQ,EAAE,SAAU,CACb4L,GAAehiB,EAAGiG,CAAK,EACvB,KACJ,CACA,QAEJ,CACJ,CAGA,SAASsb,GAA8BvhB,EAAGiG,EAAO,CAC7CA,EAAM,MAAgBqO,EACtBtU,EAAE,kBAAkBiG,CAAK,CAC7B,CACA,SAASya,GAA0B1gB,EAAGiG,EAAO,CACzCjG,EAAE,kBAAkBiG,CAAK,EACzBjG,EAAE,WAAa,EACnB,CACA,SAAS4pB,GAA+B5pB,EAAG,CACvC,KAAOA,EAAE,YAAY,gBAAgBA,EAAE,aAAa,OAAO,IAAMkW,EAAG,MAChE,CAAClW,EAAE,oBAAoBA,EAAE,aAAa,aAAcA,EAAE,aAAa,OAAO,GAC1EA,EAAE,aAAa,IAAI,CAE3B,CACA,SAAS6hB,GAAyB7hB,EAAGiG,EAAO,CACxC,GAAmBuX,GAAWvX,CAAK,EAC/B2jB,GAA+B5pB,CAAC,EAChCA,EAAE,+BAA+BiG,CAAK,MAErC,CACD,IAAMvQ,EAAUsK,EAAE,2BAA2B,EACvC6pB,EAAY7pB,EAAE,YAAY,gBAAgBtK,CAAO,EACnDm0B,IAAc3T,EAAG,OACFwH,GAAuBzX,CAAK,EAEtC4jB,IAAc3T,EAAG,MACP6H,GAAsB9X,CAAK,EAC3B0X,GAAoB1X,CAAK,GAE7B4X,GAAoB5X,CAAK,EACpCA,EAAM,YACNjG,EAAE,eAAeiG,EAAO4jB,CAAS,EAGjC7pB,EAAE,eAAeiG,EAAO4jB,CAAS,EAErC5jB,EAAM,eAAiB,EAC3B,CACJ,CACA,SAASid,GAAuBljB,EAAGiG,EAAO,CACtC,GAAIA,EAAM,QAAUmQ,EAAE,GAAKnQ,EAAM,QAAUmQ,EAAE,GAAI,CAC7CwT,GAA+B5pB,CAAC,EAChCA,EAAE,6BAA6BiG,CAAK,EACpC,MACJ,CACA,QAASjT,EAAIgN,EAAE,aAAa,SAAUhN,EAAI,EAAGA,IAAK,CAC9C,IAAMM,EAAU0M,EAAE,aAAa,MAAMhN,CAAC,EACtC,GAAIgN,EAAE,YAAY,gBAAgB1M,CAAO,IAAM4iB,EAAG,KAAM,CACpDlW,EAAE,6BAA6BiG,CAAK,EACpC,KACJ,CACA,IAAMxL,EAAUuF,EAAE,YAAY,WAAW1M,CAAO,EAChD,GAAImH,EAAQ,YAAY,IAAMwL,EAAM,QAAS,CAEzCA,EAAM,QAAUxL,EAChBuF,EAAE,aAAa,gBAAgBhN,CAAC,EAChC,KACJ,CACJ,CACJ,CC1lGA,IAAM82B,GAAgB,IAAI,IAAI,CAC1BzT,EAAE,KACFA,EAAE,KACFA,EAAE,SACFA,EAAE,QACFA,EAAE,GACFA,EAAE,IACFA,EAAE,MACFA,EAAE,MACFA,EAAE,GACFA,EAAE,IACFA,EAAE,MACFA,EAAE,OACFA,EAAE,KACFA,EAAE,KACFA,EAAE,MACFA,EAAE,OACFA,EAAE,MACFA,EAAE,GACN,CAAC,EACD,SAAS0T,GAAcv3B,EAAMjF,EAAS,CAClC,OAAQA,EAAQ,YAAY,cAAciF,CAAI,GAC1CjF,EAAQ,YAAY,gBAAgBiF,CAAI,IAAM0jB,EAAG,MACjD4T,GAAc,IAAIv8B,EAAQ,YAAY,WAAWiF,CAAI,CAAC,CAC9D,CACA,IAAMrF,GAAc,CAAE,YAAaguB,GAAoB,iBAAkB,EAAK,EAiDvE,SAAS6O,GAAex3B,EAAMjF,EAAS,CAC1C,IAAM+K,EAAO,CAAE,GAAGnL,GAAa,GAAGI,CAAQ,EAC1C,OAAO08B,GAAcz3B,EAAM8F,CAAI,CACnC,CACA,SAAS4xB,GAAoB5O,EAAY/tB,EAAS,CAC9C,IAAII,EAAO,GAELyP,EAAY7P,EAAQ,YAAY,cAAc+tB,CAAU,GAC1D/tB,EAAQ,YAAY,WAAW+tB,CAAU,IAAMjF,EAAE,UACjD9oB,EAAQ,YAAY,gBAAgB+tB,CAAU,IAAMpF,EAAG,KACrD3oB,EAAQ,YAAY,mBAAmB+tB,CAAU,EACjDA,EACA6O,EAAa58B,EAAQ,YAAY,cAAc6P,CAAS,EAC9D,GAAI+sB,EACA,QAAWC,KAAeD,EACtBx8B,GAAQs8B,GAAcG,EAAa78B,CAAO,EAGlD,OAAOI,CACX,CACA,SAASs8B,GAAcz3B,EAAMjF,EAAS,CAClC,OAAIA,EAAQ,YAAY,cAAciF,CAAI,EAC/B63B,GAAiB73B,EAAMjF,CAAO,EAErCA,EAAQ,YAAY,WAAWiF,CAAI,EAC5B83B,GAAkB93B,EAAMjF,CAAO,EAEtCA,EAAQ,YAAY,cAAciF,CAAI,EAC/B+3B,GAAqB/3B,EAAMjF,CAAO,EAEzCA,EAAQ,YAAY,mBAAmBiF,CAAI,EACpCg4B,GAA0Bh4B,EAAMjF,CAAO,EAG3C,EACX,CACA,SAAS88B,GAAiB73B,EAAMjF,EAAS,CACrC,IAAMopB,EAAKppB,EAAQ,YAAY,WAAWiF,CAAI,EAC9C,MAAO,IAAImkB,CAAE,GAAG8T,GAAoBj4B,EAAMjF,CAAO,CAAC,IAAIw8B,GAAcv3B,EAAMjF,CAAO,EAAI,GAAK,GAAG28B,GAAoB13B,EAAMjF,CAAO,CAAC,KAAKopB,CAAE,GAAG,EAC7I,CACA,SAAS8T,GAAoBj4B,EAAM,CAAE,YAAA2mB,CAAY,EAAG,CAChD,IAAIxrB,EAAO,GACX,QAAWiQ,KAAQub,EAAY,YAAY3mB,CAAI,EAAG,CAE9C,GADA7E,GAAQ,IACJ,CAACiQ,EAAK,UACNjQ,GAAQiQ,EAAK,SAGb,QAAQA,EAAK,UAAW,CACpB,KAAKsY,EAAG,IAAK,CACTvoB,GAAQ,OAAOiQ,EAAK,IAAI,GACxB,KACJ,CACA,KAAKsY,EAAG,MAAO,CACPtY,EAAK,OAAS,UACdjQ,GAAQ,UAEZA,GAAQiQ,EAAK,KACb,KACJ,CACA,KAAKsY,EAAG,MAAO,CACXvoB,GAAQ,SAASiQ,EAAK,IAAI,GAC1B,KACJ,CACA,QACIjQ,GAAQ,GAAGiQ,EAAK,MAAM,IAAIA,EAAK,IAAI,EAE3C,CACJjQ,GAAQ,KAAKgK,GAAgBiG,EAAK,KAAK,CAAC,GAC5C,CACA,OAAOjQ,CACX,CACA,SAAS28B,GAAkB93B,EAAMjF,EAAS,CACtC,GAAM,CAAE,YAAA4rB,CAAY,EAAI5rB,EAClBujB,EAAUqI,EAAY,mBAAmB3mB,CAAI,EAC7CjB,EAAS4nB,EAAY,cAAc3mB,CAAI,EACvCk4B,EAAWn5B,GAAU4nB,EAAY,cAAc5nB,CAAM,GAAK4nB,EAAY,WAAW5nB,CAAM,EAC7F,OAAOm5B,GACHvR,EAAY,gBAAgB5nB,CAAM,IAAM2kB,EAAG,MAC3CK,GAAiBmU,EAAUn9B,EAAQ,gBAAgB,EACjDujB,EACAlZ,GAAWkZ,CAAO,CAC5B,CACA,SAASyZ,GAAqB/3B,EAAM,CAAE,YAAA2mB,CAAY,EAAG,CACjD,MAAO,OAAOA,EAAY,sBAAsB3mB,CAAI,CAAC,KACzD,CACA,SAASg4B,GAA0Bh4B,EAAM,CAAE,YAAA2mB,CAAY,EAAG,CACtD,MAAO,aAAaA,EAAY,wBAAwB3mB,CAAI,CAAC,GACjE,CCvIO,SAAS2R,GAAMxW,EAAMJ,EAAS,CACjC,OAAOqxB,GAAO,MAAMjxB,EAAMJ,CAAO,CACrC,CACO,SAASo9B,GAAc9L,EAAiBlxB,EAAMJ,EAAS,CACtD,OAAOsxB,GAAoB,WAC3BtxB,EAAUI,EACVA,EAAOkxB,EACPA,EAAkB,MAEtB,IAAMzrB,EAASwrB,GAAO,kBAAkBC,EAAiBtxB,CAAO,EAChE,OAAA6F,EAAO,UAAU,MAAMzF,EAAM,EAAI,EAC1ByF,EAAO,YAAY,CAC9B,CCzCA,SAAS8nB,GAAe5kB,EAAO,CAC3B,OAAO,IAAIxF,GAAKwF,CAAK,CACzB,CACA,SAASs0B,GAAiBpwB,EAAI,CAC1B,IAAMiL,EAAQjL,EAAG,SAAS,GAAG,EAAI,IAAM,IACvC,OAAOiL,EAAQjL,EAAKiL,CACxB,CAEO,SAASolB,GAAwB94B,EAAM4pB,EAAUC,EAAU,CAC9D,IAAI5mB,EAAM,YACV,OAAIjD,IACAiD,GAAOjD,GAEP4pB,EACA3mB,GAAO,WAAW41B,GAAiBjP,CAAQ,CAAC,GAEvCC,IACL5mB,GAAO,WAEP4mB,IACA5mB,GAAO,IAAI41B,GAAiBhP,CAAQ,CAAC,IAElC5mB,CACX,CACO,IAAM6R,GAAU,CAEnB,cAAehX,GACf,cAAeE,EACf,WAAYC,EAEZ,gBAAiB,CACb,IAAMwC,EAAO,IAAIL,EAAS,CAAC,CAAC,EAC5B,OAAAK,EAAK,QAAQ,EAAIujB,GAAK,cAAc,UAC7BvjB,CACX,EACA,wBAAyB,CACrB,OAAO,IAAIL,EAAS,CAAC,CAAC,CAC1B,EACA,cAAcsI,EAAS2gB,EAAcC,EAAO,CACxC,IAAMhpB,EAAU,OAAO,OAAO,IAAI,EAC5By4B,EAAmB,OAAO,OAAO,IAAI,EACrCC,EAAgB,OAAO,OAAO,IAAI,EACxC,QAAS/3B,EAAI,EAAGA,EAAIqoB,EAAM,OAAQroB,IAAK,CACnC,IAAMqN,EAAWgb,EAAMroB,CAAC,EAAE,KAC1BX,EAAQgO,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,MAC7B83B,EAAiBzqB,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,UACtC+3B,EAAc1qB,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,MACvC,CACA,IAAMR,EAAO,IAAIJ,GAAQqI,EAASpI,EAAS,CAAC,CAAC,EAC7C,OAAAG,EAAK,UAAY4oB,EACjB5oB,EAAK,oBAAoB,EAAIs4B,EAC7Bt4B,EAAK,iBAAiB,EAAIu4B,EACnBv4B,CACX,EACA,kBAAkBX,EAAM,CACpB,OAAO,IAAIb,GAAQa,CAAI,CAC3B,EAEA,YAAYypB,EAAYC,EAAS,CAC7B,IAAM/pB,EAAO8pB,EAAW,SAASA,EAAW,SAAS,OAAS,CAAC,EAC3D9pB,IACAA,EAAK,KAAO+pB,EACZA,EAAQ,KAAO/pB,GAEnB8pB,EAAW,SAAS,KAAKC,CAAO,EAChCA,EAAQ,OAASD,CACrB,EACA,aAAaA,EAAYC,EAASC,EAAe,CAC7C,IAAM9B,EAAe4B,EAAW,SAAS,QAAQE,CAAa,EACxD,CAAE,KAAAhqB,CAAK,EAAIgqB,EACbhqB,IACAA,EAAK,KAAO+pB,EACZA,EAAQ,KAAO/pB,GAEnBgqB,EAAc,KAAOD,EACrBA,EAAQ,KAAOC,EACfF,EAAW,SAAS,OAAO5B,EAAc,EAAG6B,CAAO,EACnDA,EAAQ,OAASD,CACrB,EACA,mBAAmBG,EAAiBC,EAAgB,CAChD7U,GAAQ,YAAY4U,EAAiBC,CAAc,CACvD,EACA,mBAAmBD,EAAiB,CAChC,OAAOA,EAAgB,SAAS,CAAC,CACrC,EACA,gBAAgBvC,EAAUnnB,EAAM4pB,EAAUC,EAAU,CAChD,IAAM/pB,EAAOg5B,GAAwB94B,EAAM4pB,EAAUC,CAAQ,EACzDC,EAAc3C,EAAS,SAAS,KAAM1mB,GAASC,GAAYD,CAAI,GAAKA,EAAK,OAAS,UAAU,EAC5FqpB,EACAA,EAAY,KAAOhqB,GAA0C,MAG7DgqB,EAAc,IAAI/pB,GAAsB,WAAYD,CAAI,EACxDgV,GAAQ,YAAYqS,EAAU2C,CAAW,GAE7CA,EAAY,QAAQ,EAAI9pB,GAA0C,OAClE8pB,EAAY,YAAY,EAAIF,GAAsD,OAClFE,EAAY,YAAY,EAAID,GAAsD,MACtF,EACA,gBAAgB1C,EAAU4C,EAAM,CAC5B5C,EAAS,QAAQ,EAAI4C,CACzB,EACA,gBAAgB5C,EAAU,CACtB,OAAOA,EAAS,QAAQ,CAC5B,EACA,WAAW1mB,EAAM,CACb,GAAIA,EAAK,OAAQ,CACb,IAAMkI,EAAMlI,EAAK,OAAO,SAAS,QAAQA,CAAI,EACvC,CAAE,KAAAhB,EAAM,KAAAC,CAAK,EAAIe,EACvBA,EAAK,KAAO,KACZA,EAAK,KAAO,KACRhB,IACAA,EAAK,KAAOC,GAEZA,IACAA,EAAK,KAAOD,GAEhBgB,EAAK,OAAO,SAAS,OAAOkI,EAAK,CAAC,EAClClI,EAAK,OAAS,IAClB,CACJ,EACA,WAAW8oB,EAAYvtB,EAAM,CACzB,IAAMi9B,EAAY1P,EAAW,SAASA,EAAW,SAAS,OAAS,CAAC,EAChE0P,GAAah7B,EAAOg7B,CAAS,EAC7BA,EAAU,MAAQj9B,EAGlB8Y,GAAQ,YAAYyU,EAAYJ,GAAentB,CAAI,CAAC,CAE5D,EACA,iBAAiButB,EAAYvtB,EAAMytB,EAAe,CAC9C,IAAMO,EAAWT,EAAW,SAASA,EAAW,SAAS,QAAQE,CAAa,EAAI,CAAC,EAC/EO,GAAY/rB,EAAO+rB,CAAQ,EAC3BA,EAAS,MAAQhuB,EAGjB8Y,GAAQ,aAAayU,EAAYJ,GAAentB,CAAI,EAAGytB,CAAa,CAE5E,EACA,gBAAgBQ,EAAWX,EAAO,CAC9B,QAASroB,EAAI,EAAGA,EAAIqoB,EAAM,OAAQroB,IAAK,CACnC,IAAMqN,EAAWgb,EAAMroB,CAAC,EAAE,KACtB,OAAOgpB,EAAU,QAAQ3b,CAAQ,EAAM,MACvC2b,EAAU,QAAQ3b,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,MACvCgpB,EAAU,oBAAoB,EAAE3b,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,UACrDgpB,EAAU,iBAAiB,EAAE3b,CAAQ,EAAIgb,EAAMroB,CAAC,EAAE,OAE1D,CACJ,EAEA,cAAcR,EAAM,CAChB,OAAOA,EAAK,SAAS,CAAC,CAC1B,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,QAChB,EACA,cAAcA,EAAM,CAChB,OAAOA,EAAK,MAChB,EACA,YAAYc,EAAS,CACjB,OAAOA,EAAQ,UACnB,EAEA,WAAWA,EAAS,CAChB,OAAOA,EAAQ,IACnB,EACA,gBAAgBA,EAAS,CACrB,OAAOA,EAAQ,SACnB,EACA,mBAAmB+e,EAAU,CACzB,OAAOA,EAAS,IACpB,EACA,sBAAsB6J,EAAa,CAC/B,OAAOA,EAAY,IACvB,EACA,wBAAwBL,EAAa,CACjC,IAAI3pB,EACJ,OAAQA,EAAK2pB,EAAY,QAAQ,KAAO,MAAQ3pB,IAAO,OAASA,EAAK,EACzE,EACA,4BAA4B2pB,EAAa,CACrC,IAAI3pB,EACJ,OAAQA,EAAK2pB,EAAY,YAAY,KAAO,MAAQ3pB,IAAO,OAASA,EAAK,EAC7E,EACA,4BAA4B2pB,EAAa,CACrC,IAAI3pB,EACJ,OAAQA,EAAK2pB,EAAY,YAAY,KAAO,MAAQ3pB,IAAO,OAASA,EAAK,EAC7E,EAEA,mBAAmBM,EAAM,CACrB,OAAOC,GAAYD,CAAI,GAAKA,EAAK,OAAS,UAC9C,EAEA,0BAA0BA,EAAM0lB,EAAU,CAClCA,IACA1lB,EAAK,WAAa0lB,EAAS,YAC3B1lB,EAAK,SAAW0lB,EAAS,WAE7B1lB,EAAK,mBAAqB0lB,CAC9B,EACA,0BAA0B1lB,EAAM,CAC5B,OAAOA,EAAK,kBAChB,EACA,6BAA6BA,EAAM2pB,EAAa,CACxCA,EAAY,WAAa,OACzB3pB,EAAK,SAAW2pB,EAAY,WAChC3pB,EAAK,mBAAqB,CACtB,GAAGA,EAAK,mBACR,GAAG2pB,CACP,CACJ,CACJ,ECtMM,SAAU8O,GACdna,EACAvjB,EACAuC,EACAmN,EAA0B,CAE1B,IAAM3E,EAAO,CACX,iBACE,OAAO/K,EAAQ,kBAAqB,UAChCA,EAAQ,iBACR,GACN,YAAasZ,GACb,uBAAwBtZ,EAAQ,wBAGlC,OAAOuC,EACHqU,GAAc2M,EAASxY,CAAI,EAC3BqyB,GAAc1tB,EAAS6T,EAASxY,CAAI,CAC1C,CAEA,IAAM4yB,GAAa,CAAE,YAAarkB,EAAkB,EAQ9C,SAAUskB,GAAiBvuB,EAAiC,CAMhE,IAAMlE,EAAQ,WAAYkE,EAAMA,EAAM,CAACA,CAAG,EAC1C,QAASzF,EAAQ,EAAGA,EAAQuB,EAAM,OAAQvB,GAAS,EAAG,CACpD,IAAM3E,EAAOkG,EAAMvB,CAAK,EACpBrH,EAAW0C,CAAI,GACjB,MAAM,UAAU,OAAO,KAAKkG,EAAOvB,EAAO,EAAG,GAAG3E,EAAK,QAAQ,EAIjE,IAAIE,EAAS,GACb,QAASyE,EAAQ,EAAGA,EAAQuB,EAAM,OAAQvB,GAAS,EAAG,CACpD,IAAM3E,EAAOkG,EAAMvB,CAAK,EACxBzE,GAAUs3B,GAAex3B,EAAM04B,EAAU,EAG3C,OAAOx4B,CACT,CCvDA,IAAWuB,GAAX,SAAWA,EAAS,CAChBA,EAAAA,EAAA,IAAA,CAAA,EAAA,MACAA,EAAAA,EAAA,QAAA,EAAA,EAAA,UACAA,EAAAA,EAAA,SAAA,EAAA,EAAA,WACAA,EAAAA,EAAA,eAAA,EAAA,EAAA,iBACAA,EAAAA,EAAA,MAAA,EAAA,EAAA,QACAA,EAAAA,EAAA,gBAAA,EAAA,EAAA,kBACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,IAAA,EAAA,EAAA,MACAA,EAAAA,EAAA,YAAA,EAAA,EAAA,cACAA,EAAAA,EAAA,YAAA,EAAA,EAAA,cACAA,EAAAA,EAAA,KAAA,EAAA,EAAA,OACAA,EAAAA,EAAA,MAAA,EAAA,EAAA,QACAA,EAAAA,EAAA,KAAA,EAAA,EAAA,OACAA,EAAAA,EAAA,KAAA,EAAA,EAAA,OACAA,EAAAA,EAAA,KAAA,EAAA,EAAA,OACAA,EAAAA,EAAA,GAAA,EAAA,EAAA,KACAA,EAAAA,EAAA,GAAA,EAAA,EAAA,KACAA,EAAAA,EAAA,GAAA,EAAA,EAAA,KACAA,EAAAA,EAAA,aAAA,EAAA,EAAA,eACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,EAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,GAAA,EAAA,SACAA,EAAAA,EAAA,qBAAA,EAAA,EAAA,sBACJ,GA5BWA,IAAAA,EAAS,CAAA,EAAA,EA+BpB,IAAW8iB,GAAX,SAAWA,EAAK,CACZA,EAAAA,EAAA,KAAA,CAAA,EAAA,OACAA,EAAAA,EAAA,cAAA,CAAA,EAAA,gBACAA,EAAAA,EAAA,UAAA,CAAA,EAAA,YACAA,EAAAA,EAAA,iBAAA,CAAA,EAAA,mBACAA,EAAAA,EAAA,qBAAA,CAAA,EAAA,uBACAA,EAAAA,EAAA,iBAAA,CAAA,EAAA,mBACAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBAGAA,EAAAA,EAAA,oBAAA,CAAA,EAAA,sBACAA,EAAAA,EAAA,gBAAA,CAAA,EAAA,kBACAA,EAAAA,EAAA,mBAAA,EAAA,EAAA,qBACAA,EAAAA,EAAA,qBAAA,EAAA,EAAA,uBACAA,EAAAA,EAAA,mBAAA,EAAA,EAAA,qBACAA,EAAAA,EAAA,mBAAA,EAAA,EAAA,qBACAA,EAAAA,EAAA,mBAAA,EAAA,EAAA,qBAGAA,EAAAA,EAAA,kBAAA,EAAA,EAAA,oBACAA,EAAAA,EAAA,cAAA,EAAA,EAAA,gBAGAA,EAAAA,EAAA,wBAAA,EAAA,EAAA,0BAGAA,EAAAA,EAAA,cAAA,EAAA,EAAA,gBACAA,EAAAA,EAAA,cAAA,EAAA,EAAA,gBACAA,EAAAA,EAAA,iBAAA,EAAA,EAAA,mBACAA,EAAAA,EAAA,cAAA,EAAA,EAAA,gBAGAA,EAAAA,EAAA,eAAA,EAAA,EAAA,iBACAA,EAAAA,EAAA,qBAAA,EAAA,EAAA,uBACAA,EAAAA,EAAA,aAAA,EAAA,EAAA,eAEAA,EAAAA,EAAA,aAAA,EAAA,EAAA,eACAA,EAAAA,EAAA,oBAAA,EAAA,EAAA,sBACAA,EAAAA,EAAA,cAAA,EAAA,EAAA,gBACAA,EAAAA,EAAA,gBAAA,EAAA,EAAA,kBACAA,EAAAA,EAAA,YAAA,EAAA,EAAA,aACJ,GAzCWA,IAAAA,EAAK,CAAA,EAAA,EA2ChB,SAAS7S,GAAaxQ,EAAS,CAC3B,OACIA,IAAMO,EAAU,OAChBP,IAAMO,EAAU,SAChBP,IAAMO,EAAU,KAChBP,IAAMO,EAAU,UAChBP,IAAMO,EAAU,cAExB,CAEA,SAASm3B,GAAkB13B,EAAS,CAChC,OAAOA,IAAMO,EAAU,OAASP,IAAMO,EAAU,IAAMiQ,GAAaxQ,CAAC,CACxE,CAEA,SAASU,GAASV,EAAS,CACvB,OAAOA,GAAKO,EAAU,MAAQP,GAAKO,EAAU,IACjD,CAEA,SAASo3B,GAAa33B,EAAS,CAC3B,OACKA,GAAKO,EAAU,QAAUP,GAAKO,EAAU,QACxCP,GAAKO,EAAU,QAAUP,GAAKO,EAAU,MAEjD,CAEA,SAASq3B,GAAW53B,EAAS,CACzB,OACKA,GAAKO,EAAU,QAAUP,GAAKO,EAAU,QACxCP,GAAKO,EAAU,QAAUP,GAAKO,EAAU,MAEjD,CAEA,IAAYs3B,IAAZ,SAAYA,EAAS,CACjBA,EAAAA,EAAA,QAAA,CAAA,EAAA,UACAA,EAAAA,EAAA,SAAA,CAAA,EAAA,WACAA,EAAAA,EAAA,OAAA,CAAA,EAAA,SACAA,EAAAA,EAAA,OAAA,CAAA,EAAA,QACJ,GALYA,KAAAA,GAAS,CAAA,EAAA,EA+BrB,IAAMC,EAAY,CACd,MAAO,IAAI,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,EAAI,CAAC,EAC1D,SAAU,IAAI,WAAW,CAAC,GAAM,GAAM,EAAI,CAAC,EAC3C,WAAY,IAAI,WAAW,CAAC,GAAM,GAAM,EAAI,CAAC,EAC7C,UAAW,IAAI,WAAW,CAAC,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAI,CAAC,EAC1E,SAAU,IAAI,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAI,CAAC,EACnE,SAAU,IAAI,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAI,CAAC,GAGlD9T,GAArB,KAA8B,CAsB1B,YACI,CACI,QAAAnY,EAAU,GACV,eAAAksB,EAAiB,EAAI,EAERC,EAAc,CAAd,KAAA,IAAAA,EAzBb,KAAA,MAAQ3U,EAAM,KAEd,KAAA,OAAS,GAET,KAAA,aAAe,EAEf,KAAA,MAAQ,EAER,KAAA,UAAYA,EAAM,KAElB,KAAA,UAAY,GAEb,KAAA,QAAU,GAET,KAAA,OAAS,EA+ET,KAAA,gBAA8B,OAC9B,KAAA,cAAgB,EA+WhB,KAAA,UAAY,EACZ,KAAA,YAAc,EAEd,KAAA,aAAe,EACf,KAAA,aAAe,EAtbnB,KAAK,QAAUxX,EACf,KAAK,eAAiBksB,EACtB,KAAK,WAAalsB,EAAU5L,GAAgBF,CAChD,CAEO,OAAK,CACR,KAAK,MAAQsjB,EAAM,KACnB,KAAK,OAAS,GACd,KAAK,aAAe,EACpB,KAAK,MAAQ,EACb,KAAK,UAAYA,EAAM,KACvB,KAAK,gBAAkB,OACvB,KAAK,QAAU,GACf,KAAK,OAAS,CAClB,CAEO,MAAMvB,EAAa,CACtB,KAAK,QAAU,KAAK,OAAO,OAC3B,KAAK,OAASA,EACd,KAAK,MAAK,CACd,CAEO,KAAG,CACF,KAAK,SAAS,KAAK,OAAM,CACjC,CAEO,OAAK,CACR,KAAK,QAAU,EACnB,CAEO,QAAM,CACT,KAAK,QAAU,GACX,KAAK,MAAQ,KAAK,OAAO,OAAS,KAAK,QACvC,KAAK,MAAK,CAElB,CAKO,UAAQ,CACX,OAAO,KAAK,KAChB,CAKO,iBAAe,CAClB,OAAO,KAAK,YAChB,CAEQ,UAAU9hB,EAAS,CAEnBA,IAAMO,EAAU,IACf,CAAC,KAAK,gBAAkB,KAAK,cAAcA,EAAU,EAAE,GAEpD,KAAK,MAAQ,KAAK,cAClB,KAAK,IAAI,OAAO,KAAK,aAAc,KAAK,KAAK,EAEjD,KAAK,MAAQ8iB,EAAM,cACnB,KAAK,aAAe,KAAK,OAClB,KAAK,gBAAkBrjB,IAAMO,EAAU,MAC9C,KAAK,MAAQ8iB,EAAM,aAE3B,CAIQ,0BAA0BrjB,EAAS,CACvC,IAAMi4B,EAAQ,KAAK,gBAAkB,KAAK,gBAAgB,OAO1D,GAAI,EANYA,EAEVP,GAAkB13B,CAAC,GAElBA,EAAI,MAAU,KAAK,gBAAgB,KAAK,aAAa,GAGxD,KAAK,UAAY,WACV,CAACi4B,EAAO,CACf,KAAK,gBACL,OAGJ,KAAK,cAAgB,EACrB,KAAK,MAAQ5U,EAAM,UACnB,KAAK,eAAerjB,CAAC,CACzB,CAGQ,kBAAkBA,EAAS,CAC/B,GAAI,KAAK,gBAAkB,KAAK,gBAAgB,OAAQ,CACpD,GAAIA,IAAMO,EAAU,IAAMiQ,GAAaxQ,CAAC,EAAG,CACvC,IAAMk4B,EAAY,KAAK,MAAQ,KAAK,gBAAgB,OAEpD,GAAI,KAAK,aAAeA,EAAW,CAE/B,IAAMC,EAAc,KAAK,MACzB,KAAK,MAAQD,EACb,KAAK,IAAI,OAAO,KAAK,aAAcA,CAAS,EAC5C,KAAK,MAAQC,EAGjB,KAAK,UAAY,GACjB,KAAK,aAAeD,EAAY,EAChC,KAAK,sBAAsBl4B,CAAC,EAC5B,OAGJ,KAAK,cAAgB,GAGpBA,EAAI,MAAU,KAAK,gBAAgB,KAAK,aAAa,EACtD,KAAK,eAAiB,EACf,KAAK,gBAAkB,EAC1B,KAAK,kBAAoB83B,EAAU,SAE/B,KAAK,gBAAkB93B,IAAMO,EAAU,MACvC,KAAK,MAAQ8iB,EAAM,cAEhB,KAAK,cAAc9iB,EAAU,EAAE,IAEtC,KAAK,cAAgB,GAIzB,KAAK,cAAgB,EAAOP,IAAMO,EAAU,GAEpD,CAEQ,mBAAmBP,EAAS,CAC5BA,IAAM83B,EAAU,MAAM,KAAK,aAAa,EACpC,EAAE,KAAK,gBAAkBA,EAAU,MAAM,SACzC,KAAK,MAAQzU,EAAM,cACnB,KAAK,gBAAkByU,EAAU,SACjC,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,IAGrC,KAAK,cAAgB,EACrB,KAAK,MAAQzU,EAAM,cACnB,KAAK,mBAAmBrjB,CAAC,EAEjC,CAQQ,cAAcA,EAAS,CAC3B,KAAO,EAAE,KAAK,MAAQ,KAAK,OAAO,OAAS,KAAK,QAC5C,GAAI,KAAK,OAAO,WAAW,KAAK,MAAQ,KAAK,MAAM,IAAMA,EACrD,MAAO,GAUf,YAAK,MAAQ,KAAK,OAAO,OAAS,KAAK,OAAS,EAEzC,EACX,CAUQ,mBAAmBA,EAAS,CAC5BA,IAAM,KAAK,gBAAgB,KAAK,aAAa,EACzC,EAAE,KAAK,gBAAkB,KAAK,gBAAgB,SAC1C,KAAK,kBAAoB83B,EAAU,SACnC,KAAK,IAAI,QAAQ,KAAK,aAAc,KAAK,MAAO,CAAC,EAEjD,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,MAAO,CAAC,EAGvD,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,EACjC,KAAK,MAAQzU,EAAM,MAEhB,KAAK,gBAAkB,EAE1B,KAAK,cAAc,KAAK,gBAAgB,CAAC,CAAC,IAC1C,KAAK,cAAgB,GAElBrjB,IAAM,KAAK,gBAAgB,KAAK,cAAgB,CAAC,IAExD,KAAK,cAAgB,EAE7B,CAQQ,eAAeA,EAAS,CAC5B,OAAO,KAAK,QAAU,CAAC03B,GAAkB13B,CAAC,EAAI23B,GAAa33B,CAAC,CAChE,CAEQ,aAAao4B,EAAsB72B,EAAc,CACrD,KAAK,UAAY,GACjB,KAAK,gBAAkB62B,EACvB,KAAK,cAAgB72B,EACrB,KAAK,MAAQ8hB,EAAM,oBACvB,CAEQ,mBAAmBrjB,EAAS,CAChC,GAAIA,IAAMO,EAAU,gBAChB,KAAK,MAAQ8iB,EAAM,kBACnB,KAAK,aAAe,KAAK,MAAQ,UAC1BrjB,IAAMO,EAAU,aACvB,KAAK,MAAQ8iB,EAAM,wBACnB,KAAK,aAAe,KAAK,MAAQ,UAC1B,KAAK,eAAerjB,CAAC,EAAG,CAC/B,IAAMq4B,EAAQr4B,EAAI,GAClB,KAAK,aAAe,KAAK,MACrB,CAAC,KAAK,SAAWq4B,IAAUP,EAAU,SAAS,CAAC,EAC/C,KAAK,aAAaA,EAAU,SAAU,CAAC,EAEvC,KAAK,MACD,CAAC,KAAK,SAAWO,IAAUP,EAAU,UAAU,CAAC,EAC1CzU,EAAM,eACNA,EAAM,eAEbrjB,IAAMO,EAAU,MACvB,KAAK,MAAQ8iB,EAAM,sBAEnB,KAAK,MAAQA,EAAM,KACnB,KAAK,UAAUrjB,CAAC,EAExB,CACQ,eAAeA,EAAS,CACxB03B,GAAkB13B,CAAC,IACnB,KAAK,IAAI,cAAc,KAAK,aAAc,KAAK,KAAK,EACpD,KAAK,aAAe,GACpB,KAAK,MAAQqjB,EAAM,oBACnB,KAAK,yBAAyBrjB,CAAC,EAEvC,CACQ,0BAA0BA,EAAS,CACnCwQ,GAAaxQ,CAAC,IAEPA,IAAMO,EAAU,GACvB,KAAK,MAAQ8iB,EAAM,MAEnB,KAAK,MAAQ,KAAK,eAAerjB,CAAC,EAC5BqjB,EAAM,iBACNA,EAAM,iBACZ,KAAK,aAAe,KAAK,OAEjC,CACQ,sBAAsBrjB,EAAS,EAC/BA,IAAMO,EAAU,IAAMiQ,GAAaxQ,CAAC,KACpC,KAAK,IAAI,WAAW,KAAK,aAAc,KAAK,KAAK,EACjD,KAAK,aAAe,GACpB,KAAK,MAAQqjB,EAAM,oBACnB,KAAK,yBAAyBrjB,CAAC,EAEvC,CACQ,yBAAyBA,EAAS,EAElCA,IAAMO,EAAU,IAAM,KAAK,cAAcA,EAAU,EAAE,KACrD,KAAK,MAAQ8iB,EAAM,KACnB,KAAK,UAAYA,EAAM,KACvB,KAAK,aAAe,KAAK,MAAQ,EAEzC,CACQ,yBAAyBrjB,EAAS,CAClCA,IAAMO,EAAU,IAChB,KAAK,IAAI,aAAa,KAAK,KAAK,EAC5B,KAAK,WACL,KAAK,MAAQ8iB,EAAM,aACnB,KAAK,cAAgB,GAErB,KAAK,MAAQA,EAAM,KAEvB,KAAK,UAAY,KAAK,MACtB,KAAK,aAAe,KAAK,MAAQ,GAC1BrjB,IAAMO,EAAU,MACvB,KAAK,MAAQ8iB,EAAM,iBACX7S,GAAaxQ,CAAC,IACtB,KAAK,MAAQqjB,EAAM,gBACnB,KAAK,aAAe,KAAK,MAEjC,CACQ,sBAAsBrjB,EAAS,CAC/BA,IAAMO,EAAU,IAChB,KAAK,IAAI,iBAAiB,KAAK,KAAK,EACpC,KAAK,MAAQ8iB,EAAM,KACnB,KAAK,UAAYA,EAAM,KACvB,KAAK,aAAe,KAAK,MAAQ,EACjC,KAAK,UAAY,IACT7S,GAAaxQ,CAAC,IACtB,KAAK,MAAQqjB,EAAM,oBACnB,KAAK,yBAAyBrjB,CAAC,EAEvC,CACQ,qBAAqBA,EAAS,EAC9BA,IAAMO,EAAU,IAAMm3B,GAAkB13B,CAAC,KACzC,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,GACpB,KAAK,MAAQqjB,EAAM,mBACnB,KAAK,wBAAwBrjB,CAAC,EAEtC,CACQ,wBAAwBA,EAAS,CACjCA,IAAMO,EAAU,GAChB,KAAK,MAAQ8iB,EAAM,qBACZrjB,IAAMO,EAAU,OAASP,IAAMO,EAAU,IAChD,KAAK,IAAI,YAAYs3B,GAAU,QAAS,KAAK,KAAK,EAClD,KAAK,MAAQxU,EAAM,oBACnB,KAAK,yBAAyBrjB,CAAC,GACvBwQ,GAAaxQ,CAAC,IACtB,KAAK,IAAI,YAAY63B,GAAU,QAAS,KAAK,KAAK,EAClD,KAAK,MAAQxU,EAAM,gBACnB,KAAK,aAAe,KAAK,MAEjC,CACQ,0BAA0BrjB,EAAS,CACnCA,IAAMO,EAAU,aAChB,KAAK,MAAQ8iB,EAAM,mBACnB,KAAK,aAAe,KAAK,MAAQ,GAC1BrjB,IAAMO,EAAU,aACvB,KAAK,MAAQ8iB,EAAM,mBACnB,KAAK,aAAe,KAAK,MAAQ,GACzB7S,GAAaxQ,CAAC,IACtB,KAAK,aAAe,KAAK,MACzB,KAAK,MAAQqjB,EAAM,mBACnB,KAAK,8BAA8BrjB,CAAC,EAE5C,CACQ,uBAAuBA,EAAW+R,EAAa,CAE/C/R,IAAM+R,GACL,CAAC,KAAK,gBAAkB,KAAK,cAAcA,CAAK,GAEjD,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,GACpB,KAAK,IAAI,YACLA,IAAUxR,EAAU,YACds3B,GAAU,OACVA,GAAU,OAChB,KAAK,KAAK,EAEd,KAAK,MAAQxU,EAAM,qBACZ,KAAK,gBAAkBrjB,IAAMO,EAAU,MAC9C,KAAK,UAAY,KAAK,MACtB,KAAK,MAAQ8iB,EAAM,aAE3B,CACQ,kCAAkCrjB,EAAS,CAC/C,KAAK,uBAAuBA,EAAGO,EAAU,WAAW,CACxD,CACQ,kCAAkCP,EAAS,CAC/C,KAAK,uBAAuBA,EAAGO,EAAU,WAAW,CACxD,CACQ,8BAA8BP,EAAS,CACvCwQ,GAAaxQ,CAAC,GAAKA,IAAMO,EAAU,IACnC,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,GACpB,KAAK,IAAI,YAAYs3B,GAAU,SAAU,KAAK,KAAK,EACnD,KAAK,MAAQxU,EAAM,oBACnB,KAAK,yBAAyBrjB,CAAC,GACxB,KAAK,gBAAkBA,IAAMO,EAAU,MAC9C,KAAK,UAAY,KAAK,MACtB,KAAK,MAAQ8iB,EAAM,aAE3B,CACQ,uBAAuBrjB,EAAS,CAChCA,IAAMO,EAAU,sBAChB,KAAK,MAAQ8iB,EAAM,cACnB,KAAK,cAAgB,GAErB,KAAK,MACDrjB,IAAMO,EAAU,KACV8iB,EAAM,cACNA,EAAM,aAExB,CACQ,mBAAmBrjB,EAAS,EAC5BA,IAAMO,EAAU,IAAM,KAAK,cAAcA,EAAU,EAAE,KACrD,KAAK,IAAI,cAAc,KAAK,aAAc,KAAK,KAAK,EACpD,KAAK,MAAQ8iB,EAAM,KACnB,KAAK,aAAe,KAAK,MAAQ,EAEzC,CACQ,6BAA6BrjB,EAAS,EACtCA,IAAMO,EAAU,IAAM,KAAK,cAAcA,EAAU,EAAE,KACrD,KAAK,IAAI,wBAAwB,KAAK,aAAc,KAAK,KAAK,EAC9D,KAAK,MAAQ8iB,EAAM,KACnB,KAAK,aAAe,KAAK,MAAQ,EAEzC,CACQ,mBAAmBrjB,EAAS,CAC5BA,IAAMO,EAAU,MAChB,KAAK,MAAQ8iB,EAAM,cACnB,KAAK,gBAAkByU,EAAU,WAEjC,KAAK,cAAgB,EACrB,KAAK,aAAe,KAAK,MAAQ,GAEjC,KAAK,MAAQzU,EAAM,aAE3B,CACQ,sBAAsBrjB,EAAS,EAC/BA,IAAMO,EAAU,IAAM,KAAK,cAAcA,EAAU,EAAE,KACrD,KAAK,IAAI,UAAU,KAAK,aAAc,KAAK,MAAO,CAAC,EACnD,KAAK,MAAQ8iB,EAAM,KACnB,KAAK,aAAe,KAAK,MAAQ,EAEzC,CACQ,oBAAoBrjB,EAAS,CACjC,IAAMq4B,EAAQr4B,EAAI,GACdq4B,IAAUP,EAAU,UAAU,CAAC,EAC/B,KAAK,aAAaA,EAAU,UAAW,CAAC,EACjCO,IAAUP,EAAU,SAAS,CAAC,EACrC,KAAK,aAAaA,EAAU,SAAU,CAAC,GAEvC,KAAK,MAAQzU,EAAM,UACnB,KAAK,eAAerjB,CAAC,EAE7B,CAQQ,kBAAkBA,EAAS,CAE/B,KAAK,aAAe,EACpB,KAAK,aAAe,EAEhBA,IAAMO,EAAU,OAChB,KAAK,MAAQ8iB,EAAM,oBACZrjB,IAAMO,EAAU,MAGvB,KAAK,UAAY,EACjB,KAAK,YAAc,KAAK,WAAW,CAAC,EACpC,KAAK,MAAQ8iB,EAAM,cACnB,KAAK,mBAAmBrjB,CAAC,EAEjC,CAEQ,mBAAmBA,EAAS,CAUhC,GATA,KAAK,cAAgB,EAErB,KAAK,UAAYkC,GACb,KAAK,WACL,KAAK,YACL,KAAK,UAAY,EACjBlC,CAAC,EAGD,KAAK,UAAY,EAAG,CACpB,KAAK,gBAAe,EACpB,KAAK,QACL,OAGJ,KAAK,YAAc,KAAK,WAAW,KAAK,SAAS,EAEjD,IAAM4kB,EAAS,KAAK,YAAcnkB,EAAa,aAG/C,GAAImkB,EAAQ,CAER,IAAM3iB,GAAe2iB,GAAU,IAAM,EAGrC,GAAI,CAAC,KAAK,kBAAiB,GAAM5kB,IAAMO,EAAU,KAC7C,KAAK,WAAa0B,MACf,CAEH,IAAMq2B,EAAc,KAAK,MAAQ,KAAK,aAAe,EAEjDA,EAAc,KAAK,cACnB,KAAK,YAAY,KAAK,aAAcA,CAAW,EAInD,KAAK,aAAe,KAAK,UACzB,KAAK,WAAar2B,EAClB,KAAK,aAAe,EACpB,KAAK,aAAe,KAAK,MAAQ,EAE7BA,IAAgB,GAChB,KAAK,gBAAe,GAIpC,CAEQ,iBAAe,CAGnB,GAFA,KAAK,MAAQ,KAAK,UAEd,KAAK,eAAiB,EACtB,OAOJ,QAHK,KAAK,WAAW,KAAK,YAAY,EAAIxB,EAAa,eACnD,GAEiB,CACjB,IAAK,GAAG,CACJ,KAAK,cACD,KAAK,WAAW,KAAK,YAAY,EAC7B,CAACA,EAAa,YAAY,EAElC,MAEJ,IAAK,GAAG,CACJ,KAAK,cAAc,KAAK,WAAW,KAAK,aAAe,CAAC,CAAC,EACzD,MAEJ,IAAK,GACD,KAAK,cAAc,KAAK,WAAW,KAAK,aAAe,CAAC,CAAC,EACzD,KAAK,cAAc,KAAK,WAAW,KAAK,aAAe,CAAC,CAAC,EAGrE,CAEQ,yBAAyBT,EAAS,EACjCA,EAAI,MAAUO,EAAU,QACzB,KAAK,eACL,KAAK,MAAQ8iB,EAAM,cAEnB,KAAK,MAAQA,EAAM,gBACnB,KAAK,qBAAqBrjB,CAAC,EAEnC,CAEQ,kBAAkBu4B,EAAe,CACrC,IAAMD,EAAc,KAAK,MAAQ,KAAK,aAAe,EAEjDA,EAAc,GAAI,EAAO,KAAK,QAAUjV,EAAM,eAE9B,KAAK,QAEjBiV,EAAc,KAAK,cACnB,KAAK,YAAY,KAAK,aAAcA,CAAW,EAGnD,KAAK,aAAe,KAAK,MAAQ,OAAOC,CAAM,EAC9C,KAAK,cAAcj4B,GAAiB,KAAK,YAAY,CAAC,GAE1D,KAAK,MAAQ,KAAK,SACtB,CACQ,qBAAqBN,EAAS,CAC9BA,IAAMO,EAAU,KAChB,KAAK,kBAAkB,EAAI,EACpBG,GAASV,CAAC,GACjB,KAAK,aAAe,KAAK,aAAe,IAAMA,EAAIO,EAAU,MAC5D,KAAK,iBAED,KAAK,kBAAiB,EACtB,KAAK,kBAAkB,EAAK,EAE5B,KAAK,MAAQ,KAAK,UAEtB,KAAK,QAEb,CACQ,iBAAiBP,EAAS,CAC1BA,IAAMO,EAAU,KAChB,KAAK,kBAAkB,EAAI,EACpBG,GAASV,CAAC,GACjB,KAAK,aAAe,KAAK,aAAe,IAAMA,EAAIO,EAAU,MAC5D,KAAK,gBACEq3B,GAAW53B,CAAC,GACnB,KAAK,aACD,KAAK,aAAe,KAAOA,EAAI,IAAQO,EAAU,OAAS,IAC9D,KAAK,iBAED,KAAK,kBAAiB,EACtB,KAAK,kBAAkB,EAAK,EAE5B,KAAK,MAAQ,KAAK,UAEtB,KAAK,QAEb,CAEQ,mBAAiB,CACrB,MACI,CAAC,KAAK,UACL,KAAK,YAAc8iB,EAAM,MACtB,KAAK,YAAcA,EAAM,aAErC,CAKQ,SAAO,CAEP,KAAK,SAAW,KAAK,eAAiB,KAAK,QAEvC,KAAK,QAAUA,EAAM,MACpB,KAAK,QAAUA,EAAM,cAAgB,KAAK,gBAAkB,GAE7D,KAAK,IAAI,OAAO,KAAK,aAAc,KAAK,KAAK,EAC7C,KAAK,aAAe,KAAK,QAEzB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,sBAErB,KAAK,IAAI,aAAa,KAAK,aAAc,KAAK,KAAK,EACnD,KAAK,aAAe,KAAK,OAGrC,CAEQ,gBAAc,CAClB,OAAO,KAAK,MAAQ,KAAK,OAAO,OAAS,KAAK,QAAU,KAAK,OACjE,CAOQ,OAAK,CACT,KAAO,KAAK,eAAc,GAAI,CAC1B,IAAMrjB,EAAI,KAAK,OAAO,WAAW,KAAK,MAAQ,KAAK,MAAM,EACzD,OAAQ,KAAK,MAAO,CAChB,KAAKqjB,EAAM,KAAM,CACb,KAAK,UAAUrjB,CAAC,EAChB,MAEJ,KAAKqjB,EAAM,qBAAsB,CAC7B,KAAK,0BAA0BrjB,CAAC,EAChC,MAEJ,KAAKqjB,EAAM,aAAc,CACrB,KAAK,kBAAkBrjB,CAAC,EACxB,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,mBAAoB,CAC3B,KAAK,kCAAkCrjB,CAAC,EACxC,MAEJ,KAAKqjB,EAAM,gBAAiB,CACxB,KAAK,qBAAqBrjB,CAAC,EAC3B,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,iBAAkB,CACzB,KAAK,sBAAsBrjB,CAAC,EAC5B,MAEJ,KAAKqjB,EAAM,oBAAqB,CAC5B,KAAK,yBAAyBrjB,CAAC,EAC/B,MAEJ,KAAKqjB,EAAM,UAAW,CAClB,KAAK,eAAerjB,CAAC,EACrB,MAEJ,KAAKqjB,EAAM,iBAAkB,CACzB,KAAK,sBAAsBrjB,CAAC,EAC5B,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,mBAAoB,CAC3B,KAAK,wBAAwBrjB,CAAC,EAC9B,MAEJ,KAAKqjB,EAAM,mBAAoB,CAC3B,KAAK,kCAAkCrjB,CAAC,EACxC,MAEJ,KAAKqjB,EAAM,qBAAsB,CAC7B,KAAK,0BAA0BrjB,CAAC,EAChC,MAEJ,KAAKqjB,EAAM,qBAAsB,CAC7B,KAAK,0BAA0BrjB,CAAC,EAChC,MAEJ,KAAKqjB,EAAM,oBAAqB,CAC5B,KAAK,yBAAyBrjB,CAAC,EAC/B,MAEJ,KAAKqjB,EAAM,eAAgB,CACvB,KAAK,oBAAoBrjB,CAAC,EAC1B,MAEJ,KAAKqjB,EAAM,mBAAoB,CAC3B,KAAK,8BAA8BrjB,CAAC,EACpC,MAEJ,KAAKqjB,EAAM,iBAAkB,CACzB,KAAK,sBAAsBrjB,CAAC,EAC5B,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,kBAAmB,CAC1B,KAAK,uBAAuBrjB,CAAC,EAC7B,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,wBAAyB,CAChC,KAAK,6BAA6BrjB,CAAC,EACnC,MAEJ,KAAKqjB,EAAM,cAAe,CACtB,KAAK,mBAAmBrjB,CAAC,EACzB,MAEJ,KAAKqjB,EAAM,aAAc,CACrB,KAAK,kBAAkBrjB,CAAC,EACxB,MAEJ,KAAKqjB,EAAM,YAAa,CACpB,KAAK,iBAAiBrjB,CAAC,EACvB,MAEJ,KAAKqjB,EAAM,gBAAiB,CACxB,KAAK,qBAAqBrjB,CAAC,EAC3B,MAEJ,QAEI,KAAK,yBAAyBA,CAAC,EAGvC,KAAK,QAET,KAAK,QAAO,CAChB,CAEQ,QAAM,CACN,KAAK,QAAUqjB,EAAM,eACrB,KAAK,gBAAe,EAIpB,KAAK,aAAe,KAAK,OACzB,KAAK,mBAAkB,EAE3B,KAAK,IAAI,MAAK,CAClB,CAGQ,oBAAkB,CACtB,IAAM1S,EAAW,KAAK,OAAO,OAAS,KAAK,OACvC,KAAK,QAAU0S,EAAM,cACjB,KAAK,kBAAoByU,EAAU,SACnC,KAAK,IAAI,QAAQ,KAAK,aAAcnnB,EAAU,CAAC,EAE/C,KAAK,IAAI,UAAU,KAAK,aAAcA,EAAU,CAAC,EAGrD,KAAK,QAAU0S,EAAM,iBACrB,KAAK,kBAAiB,EAEtB,KAAK,kBAAkB,EAAK,EAG5B,KAAK,QAAUA,EAAM,aACrB,KAAK,kBAAiB,EAEtB,KAAK,kBAAkB,EAAK,EAG5B,KAAK,QAAUA,EAAM,WACrB,KAAK,QAAUA,EAAM,qBACrB,KAAK,QAAUA,EAAM,sBACrB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,iBACrB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,oBACrB,KAAK,QAAUA,EAAM,kBAOrB,KAAK,IAAI,OAAO,KAAK,aAAc1S,CAAQ,CAEnD,CAEQ,YAAYnP,EAAemP,EAAgB,CAE3C,KAAK,YAAc0S,EAAM,MACzB,KAAK,YAAcA,EAAM,aAEzB,KAAK,IAAI,aAAa7hB,EAAOmP,CAAQ,EAErC,KAAK,IAAI,OAAOnP,EAAOmP,CAAQ,CAEvC,CACQ,cAAcqQ,EAAU,CAExB,KAAK,YAAcqC,EAAM,MACzB,KAAK,YAAcA,EAAM,aAEzB,KAAK,IAAI,eAAerC,CAAE,EAE1B,KAAK,IAAI,aAAaA,CAAE,CAEhC,GCv/BJ,IAAMwX,GAAW,IAAI,IAAI,CACrB,QACA,SACA,WACA,SACA,SACA,WACA,WACH,EACKC,EAAO,IAAI,IAAI,CAAC,GAAG,CAAC,EACpBC,GAAmB,IAAI,IAAI,CAAC,QAAS,OAAO,CAAC,EAC7CC,GAAU,IAAI,IAAI,CAAC,KAAM,IAAI,CAAC,EAC9BC,GAAU,IAAI,IAAI,CAAC,KAAM,IAAI,CAAC,EAE9BC,GAAmB,IAAI,IAAyB,CAClD,CAAC,KAAM,IAAI,IAAI,CAAC,KAAM,KAAM,IAAI,CAAC,CAAC,EAClC,CAAC,KAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EACtB,CAAC,KAAM,IAAI,IAAI,CAAC,QAAS,KAAM,IAAI,CAAC,CAAC,EACrC,CAAC,OAAQ,IAAI,IAAI,CAAC,OAAQ,OAAQ,QAAQ,CAAC,CAAC,EAC5C,CAAC,KAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EACtB,CAAC,IAAKJ,CAAI,EACV,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMA,CAAI,EACX,CAAC,SAAUD,EAAQ,EACnB,CAAC,QAASA,EAAQ,EAClB,CAAC,SAAUA,EAAQ,EACnB,CAAC,SAAUA,EAAQ,EACnB,CAAC,WAAYA,EAAQ,EACrB,CAAC,WAAYA,EAAQ,EACrB,CAAC,SAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAC9B,CAAC,WAAY,IAAI,IAAI,CAAC,WAAY,QAAQ,CAAC,CAAC,EAC5C,CAAC,KAAMG,EAAO,EACd,CAAC,KAAMA,EAAO,EACd,CAAC,UAAWF,CAAI,EAChB,CAAC,UAAWA,CAAI,EAChB,CAAC,QAASA,CAAI,EACd,CAAC,aAAcA,CAAI,EACnB,CAAC,UAAWA,CAAI,EAChB,CAAC,MAAOA,CAAI,EACZ,CAAC,KAAMA,CAAI,EACX,CAAC,WAAYA,CAAI,EACjB,CAAC,aAAcA,CAAI,EACnB,CAAC,SAAUA,CAAI,EACf,CAAC,SAAUA,CAAI,EACf,CAAC,OAAQA,CAAI,EACb,CAAC,SAAUA,CAAI,EACf,CAAC,KAAMA,CAAI,EACX,CAAC,OAAQA,CAAI,EACb,CAAC,MAAOA,CAAI,EACZ,CAAC,KAAMA,CAAI,EACX,CAAC,MAAOA,CAAI,EACZ,CAAC,UAAWA,CAAI,EAChB,CAAC,QAASA,CAAI,EACd,CAAC,KAAMA,CAAI,EACX,CAAC,KAAMG,EAAO,EACd,CAAC,KAAMA,EAAO,EACd,CAAC,QAASF,EAAgB,EAC1B,CAAC,QAASA,EAAgB,EAC7B,EAEKI,GAAe,IAAI,IAAI,CACzB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,MACH,EAEKC,GAAyB,IAAI,IAAI,CAAC,OAAQ,KAAK,CAAC,EAEhDC,GAA0B,IAAI,IAAI,CACpC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,QACH,EA+FKC,GAAY,QAEL/N,GAAP,KAAa,CA6Bf,YACI8M,EACiBn+B,EAAyB,CAAA,EAAE,eAA3B,KAAA,QAAAA,EA7Bd,KAAA,WAAa,EAEb,KAAA,SAAW,EAKV,KAAA,aAAe,EAEf,KAAA,QAAU,GACV,KAAA,WAAa,GACb,KAAA,YAAc,GACd,KAAA,QAA4C,KACnC,KAAA,MAAkB,CAAA,EAClB,KAAA,eAA4B,CAAA,EAM5B,KAAA,QAAoB,CAAA,EAC7B,KAAA,aAAe,EAEf,KAAA,WAAa,EAEb,KAAA,MAAQ,GAMZ,KAAK,IAAMm+B,GAAO,CAAA,EAClB,KAAK,mBAAoBx5B,EAAA3E,EAAQ,iBAAa,MAAA2E,IAAA,OAAAA,EAAI,CAAC3E,EAAQ,QAC3D,KAAK,yBACDgF,EAAAhF,EAAQ,2BAAuB,MAAAgF,IAAA,OAAAA,EAAI,CAAChF,EAAQ,QAChD,KAAK,UAAY,KAAK+d,EAAA/d,EAAQ,aAAS,MAAA+d,IAAA,OAAAA,EAAIoM,IACvC,KAAK,QACL,IAAI,GAERkV,GAAAvhB,EAAA,KAAK,KAAI,gBAAY,MAAAuhB,IAAA,QAAAA,EAAA,KAAAvhB,EAAG,IAAI,CAChC,CAKA,OAAOnW,EAAemP,EAAgB,SAClC,IAAMxS,EAAO,KAAK,SAASqD,EAAOmP,CAAQ,EAC1C,KAAK,SAAWA,EAAW,GAC3B9R,GAAAL,EAAA,KAAK,KAAI,UAAM,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAGL,CAAI,EACtB,KAAK,WAAawS,CACtB,CAGA,aAAaqQ,EAAU,SAKnB,IAAMvd,EAAQ,KAAK,UAAU,gBAAe,EAC5C,KAAK,SAAWA,EAAQ,GACxB5E,GAAAL,EAAA,KAAK,KAAI,UAAM,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG2B,GAAc6gB,CAAE,CAAC,EACnC,KAAK,WAAavd,CACtB,CAEU,cAAcpF,EAAY,CAChC,MAAO,CAAC,KAAK,QAAQ,SAAWy6B,GAAa,IAAIz6B,CAAI,CACzD,CAGA,cAAcmD,EAAemP,EAAgB,CACzC,KAAK,SAAWA,EAEhB,IAAItS,EAAO,KAAK,SAASmD,EAAOmP,CAAQ,EAEpC,KAAK,oBACLtS,EAAOA,EAAK,YAAW,GAG3B,KAAK,YAAYA,CAAI,CACzB,CAEQ,YAAYA,EAAY,aAC5B,KAAK,aAAe,KAAK,WACzB,KAAK,QAAUA,EAEf,IAAM86B,EACF,CAAC,KAAK,QAAQ,SAAWN,GAAiB,IAAIx6B,CAAI,EAEtD,GAAI86B,EACA,KACI,KAAK,MAAM,OAAS,GACpBA,EAAa,IAAI,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,CAAC,GACpD,CACE,IAAMv5B,EAAU,KAAK,MAAM,IAAG,GAC9Bf,GAAAL,EAAA,KAAK,KAAI,cAAU,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAGoB,EAAS,EAAI,EAGtC,KAAK,cAAcvB,CAAI,IACxB,KAAK,MAAM,KAAKA,CAAI,EAChB06B,GAAuB,IAAI16B,CAAI,EAC/B,KAAK,eAAe,KAAK,EAAI,EACtB26B,GAAwB,IAAI36B,CAAI,GACvC,KAAK,eAAe,KAAK,EAAK,IAGtCsZ,GAAAC,EAAA,KAAK,KAAI,iBAAa,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAGvZ,CAAI,EACzB,KAAK,IAAI,YAAW,KAAK,QAAU,CAAA,EAC3C,CAEQ,WAAW+6B,EAAkB,SACjC,KAAK,WAAa,KAAK,aAEnB,KAAK,WACLv6B,GAAAL,EAAA,KAAK,KAAI,aAAS,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG,KAAK,QAAS,KAAK,QAAS46B,CAAS,EAC1D,KAAK,QAAU,MAEf,KAAK,IAAI,YAAc,KAAK,cAAc,KAAK,OAAO,GACtD,KAAK,IAAI,WAAW,KAAK,QAAS,EAAI,EAG1C,KAAK,QAAU,EACnB,CAGA,aAAazoB,EAAgB,CACzB,KAAK,SAAWA,EAChB,KAAK,WAAW,EAAK,EAGrB,KAAK,WAAaA,EAAW,CACjC,CAGA,WAAWnP,EAAemP,EAAgB,iBACtC,KAAK,SAAWA,EAEhB,IAAItS,EAAO,KAAK,SAASmD,EAAOmP,CAAQ,EAaxC,GAXI,KAAK,oBACLtS,EAAOA,EAAK,YAAW,IAIvB06B,GAAuB,IAAI16B,CAAI,GAC/B26B,GAAwB,IAAI36B,CAAI,IAEhC,KAAK,eAAe,IAAG,EAGtB,KAAK,cAAcA,CAAI,EAejB,CAAC,KAAK,QAAQ,SAAWA,IAAS,QAEzCQ,GAAAL,EAAA,KAAK,KAAI,iBAAa,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG,IAAI,GAC7BmZ,GAAAC,EAAA,KAAK,KAAI,aAAS,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAG,KAAM,CAAA,EAAI,EAAI,GACnCyhB,GAAAH,EAAA,KAAK,KAAI,cAAU,MAAAG,IAAA,QAAAA,EAAA,KAAAH,EAAG,KAAM,EAAK,OAnBN,CAC3B,IAAM/nB,EAAM,KAAK,MAAM,YAAY9S,CAAI,EACvC,GAAI8S,IAAQ,GACR,GAAI,KAAK,IAAI,WAAY,CACrB,IAAI+Q,EAAQ,KAAK,MAAM,OAAS/Q,EAChC,KAAO+Q,KAEH,KAAK,IAAI,WAAW,KAAK,MAAM,IAAG,EAAKA,IAAU,CAAC,OAEnD,KAAK,MAAM,OAAS/Q,MACpB,CAAC,KAAK,QAAQ,SAAW9S,IAAS,MAEzC,KAAK,YAAY,GAAG,EACpB,KAAK,gBAAgB,EAAI,GAUjC,KAAK,WAAasS,EAAW,CACjC,CAGA,iBAAiBA,EAAgB,CAC7B,KAAK,SAAWA,EAEZ,KAAK,QAAQ,SACb,KAAK,QAAQ,sBACb,KAAK,eAAe,KAAK,eAAe,OAAS,CAAC,GAElD,KAAK,gBAAgB,EAAK,EAG1B,KAAK,WAAaA,EAAW,GAG7B,KAAK,aAAaA,CAAQ,CAElC,CAEQ,gBAAgB2oB,EAAsB,SAC1C,IAAMj7B,EAAO,KAAK,QAClB,KAAK,WAAWi7B,CAAa,EAGzB,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,IAAMj7B,KAEtCQ,GAAAL,EAAA,KAAK,KAAI,cAAU,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAGH,EAAM,CAACi7B,CAAa,EAC1C,KAAK,MAAM,IAAG,EAEtB,CAGA,aAAa93B,EAAemP,EAAgB,CACxC,KAAK,WAAanP,EAClB,IAAMnD,EAAO,KAAK,SAASmD,EAAOmP,CAAQ,EAE1C,KAAK,WAAa,KAAK,wBACjBtS,EAAK,YAAW,EAChBA,CACV,CAGA,aAAamD,EAAemP,EAAgB,CACxC,KAAK,aAAe,KAAK,SAASnP,EAAOmP,CAAQ,CACrD,CAGA,eAAeqQ,EAAU,CACrB,KAAK,aAAe7gB,GAAc6gB,CAAE,CACxC,CAGA,YAAYjP,EAAkBpB,EAAgB,SAC1C,KAAK,SAAWA,GAEhB9R,GAAAL,EAAA,KAAK,KAAI,eAAW,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAChB,KAAK,WACL,KAAK,YACLuT,IAAU8lB,GAAU,OACd,IACA9lB,IAAU8lB,GAAU,OACpB,IACA9lB,IAAU8lB,GAAU,QACpB,OACA,IAAI,EAIV,KAAK,SACL,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,QAAS,KAAK,UAAU,IAEnE,KAAK,QAAQ,KAAK,UAAU,EAAI,KAAK,aAEzC,KAAK,YAAc,EACvB,CAEQ,mBAAmBj1B,EAAa,CACpC,IAAMa,EAAQb,EAAM,OAAOq2B,EAAS,EAChC56B,EAAOoF,EAAQ,EAAIb,EAAQA,EAAM,OAAO,EAAGa,CAAK,EAEpD,OAAI,KAAK,oBACLpF,EAAOA,EAAK,YAAW,GAGpBA,CACX,CAGA,cAAcmD,EAAemP,EAAgB,CACzC,KAAK,SAAWA,EAChB,IAAM/N,EAAQ,KAAK,SAASpB,EAAOmP,CAAQ,EAE3C,GAAI,KAAK,IAAI,wBAAyB,CAClC,IAAMtS,EAAO,KAAK,mBAAmBuE,CAAK,EAC1C,KAAK,IAAI,wBAAwB,IAAIvE,CAAI,GAAI,IAAIuE,CAAK,EAAE,EAI5D,KAAK,WAAa+N,EAAW,CACjC,CAGA,wBAAwBnP,EAAemP,EAAgB,CACnD,KAAK,SAAWA,EAChB,IAAM/N,EAAQ,KAAK,SAASpB,EAAOmP,CAAQ,EAE3C,GAAI,KAAK,IAAI,wBAAyB,CAClC,IAAMtS,EAAO,KAAK,mBAAmBuE,CAAK,EAC1C,KAAK,IAAI,wBAAwB,IAAIvE,CAAI,GAAI,IAAIuE,CAAK,EAAE,EAI5D,KAAK,WAAa+N,EAAW,CACjC,CAGA,UAAUnP,EAAemP,EAAkBpP,EAAc,aACrD,KAAK,SAAWoP,GAEhB9R,GAAAL,EAAA,KAAK,KAAI,aAAS,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG,KAAK,SAASgD,EAAOmP,EAAWpP,CAAM,CAAC,GAC5DoW,GAAAC,EAAA,KAAK,KAAI,gBAAY,MAAAD,IAAA,QAAAA,EAAA,KAAAC,CAAA,EAGrB,KAAK,WAAajH,EAAW,CACjC,CAGA,QAAQnP,EAAemP,EAAkBpP,EAAc,yBACnD,KAAK,SAAWoP,EAChB,IAAM/N,EAAQ,KAAK,SAASpB,EAAOmP,EAAWpP,CAAM,EAEhD,KAAK,QAAQ,SAAW,KAAK,QAAQ,iBACrC1C,GAAAL,EAAA,KAAK,KAAI,gBAAY,MAAAK,IAAA,QAAAA,EAAA,KAAAL,CAAA,GACrBmZ,GAAAC,EAAA,KAAK,KAAI,UAAM,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAGhV,CAAK,GACvBy2B,GAAAH,EAAA,KAAK,KAAI,cAAU,MAAAG,IAAA,QAAAA,EAAA,KAAAH,CAAA,KAEnBK,GAAAC,EAAA,KAAK,KAAI,aAAS,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAG,UAAU52B,CAAK,IAAI,GACxC62B,GAAAC,EAAA,KAAK,KAAI,gBAAY,MAAAD,IAAA,QAAAA,EAAA,KAAAC,CAAA,GAIzB,KAAK,WAAa/oB,EAAW,CACjC,CAGA,OAAK,SACD,GAAI,KAAK,IAAI,WAAY,CAErB,KAAK,SAAW,KAAK,WACrB,QACQlN,EAAQ,KAAK,MAAM,OACvBA,EAAQ,EACR,KAAK,IAAI,WAAW,KAAK,MAAM,EAAEA,CAAK,EAAG,EAAI,EAChD,GAEL5E,GAAAL,EAAA,KAAK,KAAI,SAAK,MAAAK,IAAA,QAAAA,EAAA,KAAAL,CAAA,CAClB,CAKO,OAAK,cACRK,GAAAL,EAAA,KAAK,KAAI,WAAO,MAAAK,IAAA,QAAAA,EAAA,KAAAL,CAAA,EAChB,KAAK,UAAU,MAAK,EACpB,KAAK,QAAU,GACf,KAAK,WAAa,GAClB,KAAK,QAAU,KACf,KAAK,MAAM,OAAS,EACpB,KAAK,WAAa,EAClB,KAAK,SAAW,GAChBmZ,GAAAC,EAAA,KAAK,KAAI,gBAAY,MAAAD,IAAA,QAAAA,EAAA,KAAAC,EAAG,IAAI,EAC5B,KAAK,QAAQ,OAAS,EACtB,KAAK,aAAe,EACpB,KAAK,WAAa,EAClB,KAAK,MAAQ,EACjB,CAQO,cAAczZ,EAAY,CAC7B,KAAK,MAAK,EACV,KAAK,IAAIA,CAAI,CACjB,CAEQ,SAASqD,EAAeC,EAAW,CACvC,KAAOD,EAAQ,KAAK,cAAgB,KAAK,QAAQ,CAAC,EAAE,QAChD,KAAK,YAAW,EAGpB,IAAI+N,EAAQ,KAAK,QAAQ,CAAC,EAAE,MACxB/N,EAAQ,KAAK,aACbC,EAAM,KAAK,YAAY,EAG3B,KAAOA,EAAM,KAAK,aAAe,KAAK,QAAQ,CAAC,EAAE,QAC7C,KAAK,YAAW,EAChB8N,GAAS,KAAK,QAAQ,CAAC,EAAE,MAAM,EAAG9N,EAAM,KAAK,YAAY,EAG7D,OAAO8N,CACX,CAEQ,aAAW,CACf,KAAK,cAAgB,KAAK,QAAQ,CAAC,EAAE,OACrC,KAAK,aACL,KAAK,QAAQ,MAAK,CACtB,CAOO,MAAMuS,EAAa,SACtB,GAAI,KAAK,MAAO,EACZjjB,GAAAL,EAAA,KAAK,KAAI,WAAO,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG,IAAI,MAAM,sBAAsB,CAAC,EACpD,OAGJ,KAAK,QAAQ,KAAKsjB,CAAK,EACnB,KAAK,UAAU,UACf,KAAK,UAAU,MAAMA,CAAK,EAC1B,KAAK,aAEb,CAOO,IAAIA,EAAc,SACrB,GAAI,KAAK,MAAO,EACZjjB,GAAAL,EAAA,KAAK,KAAI,WAAO,MAAAK,IAAA,QAAAA,EAAA,KAAAL,EAAG,IAAI,MAAM,oBAAoB,CAAC,EAClD,OAGAsjB,GAAO,KAAK,MAAMA,CAAK,EAC3B,KAAK,MAAQ,GACb,KAAK,UAAU,IAAG,CACtB,CAKO,OAAK,CACR,KAAK,UAAU,MAAK,CACxB,CAKO,QAAM,CAGT,IAFA,KAAK,UAAU,OAAM,EAGjB,KAAK,UAAU,SACf,KAAK,WAAa,KAAK,QAAQ,QAE/B,KAAK,UAAU,MAAM,KAAK,QAAQ,KAAK,YAAY,CAAC,EAGpD,KAAK,OAAO,KAAK,UAAU,IAAG,CACtC,CAQO,WAAWA,EAAa,CAC3B,KAAK,MAAMA,CAAK,CACpB,CAOO,KAAKA,EAAc,CACtB,KAAK,IAAIA,CAAK,CAClB,GCxnBE,SAAU6X,GAAcx7B,EAActE,EAAiB,CACzD,IAAM6nB,EAAU,IAAIniB,GAAW,OAAW1F,CAAO,EACjD,WAAIqxB,GAAOxJ,EAAS7nB,CAAO,EAAE,IAAIsE,CAAI,EAC9BujB,EAAQ,IACnB,CCAA,IAAMjR,GAAQ0M,GAAS,CAACC,EAASvjB,EAASuC,EAAYmN,IACpD1P,EAAQ,SAAWA,EAAQ,gBACvB8/B,GAAqBvc,EAASvjB,CAAO,EACrC09B,GAAgBna,EAASvjB,EAASuC,EAAYmN,CAAO,CAAC,EAiB/CwW,GAAOD,GAAQrP,GAAO,CAACvH,EAAKrP,IACvCA,EAAQ,SAAWA,EAAQ,gBACvBqL,GAAsBgE,EAAKrP,CAAO,EAClC49B,GAAiBvuB,CAAG,CAAC,EAQ3BhE,GAAe6a,GAAK,CAAA,CAAE,EAyBT,CAAE,SAAA/lB,EAAQ,EAAKF,GAgBf,CAAE,MAAAI,EAAK,EAAKJ,GAeZ,CAAE,UAAAK,EAAS,EAAKL,GAchB,CAAE,KAAAM,EAAI,EAAKN,GChIjB,IAAM8/B,GAAoDC,GACjEA,EAAU,OAAO,CAACzgC,EAAKiF,KAAU,CAAE,GAAGjF,EAAK,CAACiF,CAAI,EAAG,WAAWA,CAAI,KAAe,GAAI,CAAC,CAA0B,EAchH,IAAOy7B,GAAQ,CAACn5B,EAAc,CAAE,UAAA/H,EAAW,SAAAmhC,EAAU,WAAA7gC,CAAW,IAAkC,CAEhG,IAAM8pB,EAAIjD,GAAKpf,EAAM,CACnB,IAAK,CACH,QAAS,GACT,wBAAyB,GACzB,cAAe,GACf,eAAgB,EAClB,CACF,EAAG,EAAK,EAEFxH,EAAgBP,GAAW,QAAWA,EAA6B,KAEnEohC,EAAchX,EAAE7pB,CAAa,EAE7BN,EAAQ,OAAO,KAAKkhC,CAAQ,EAAE,OAAOhhC,GAAOghC,EAAShhC,CAAG,EAAE,OAAO,WAAaN,EAAmB,EAEjGwhC,EAAY,OAAO,QAAQ/gC,EAAW,OAAS,CAAC,CAAC,EAAE,OAAO,CAACE,EAAK,CAACL,EAAKuL,CAAG,KAAO,CAAE,GAAGlL,EAAK,CAACL,CAAG,EAAG,OAAOuL,GAAQ,UAAYA,EAAI,WAAa,OAAYA,EAAI,SAAY,WAAWvL,CAAG,KAAM,GAAI,CAAC,CAA2B,EAE7NmhC,EAAWC,GAAYx5B,CAAI,EAG3By5B,EAAgB,CACpB,GAAGR,GAAiB/gC,CAAK,EACzB,GAAGohC,CACL,EAGA,OADiBD,EAAY,SAAS,EAAE,OAAO,CAAC16B,EAAG2L,IAAOA,EAAG,OAAS,OAASA,EAAG,OAAS,YAAcA,EAAG,OAAS,MAAO,EACnH,OAAO,EAEhB,OAAO,QAAQmvB,CAAa,EAAE,QAAQ,CAAC,CAACrhC,EAAKX,CAAQ,IAAM,CAEzD,IAAMiiC,EAAmBC,GAAWliC,EAAU8hC,CAAQ,EAEtDF,EAAY,OAAO7hC,GAAgBkiC,EAAkBthC,CAAG,CAAC,CAC3D,CAAC,EAIqBiqB,EAAE,KAAK,CAC3B,wBAAyB,GACzB,cAAe,GACf,QAAS,GACT,qBAAsB,EACxB,CAAC,CAGH,EAEasX,GAAa,CAACliC,EAAkBU,IAAiC,CAC5E,IAAMyhC,EAAkB,2BAClBC,EAAY,qBAUlB,OARiB,OAAO,QAAQ1hC,CAAI,EAAE,OAAO,CAACM,EAAK,CAACL,EAAKuL,CAAG,IAAMlL,EAAI,WAAW,QAAQL,CAAG,GAAI,IAAIuL,CAAG,GAAG,EAAGlM,CAAQ,EAExE,QAAQ,6BAA8B,EAAE,EAEnC,WAAWoiC,EAAW,SAAS,EAEvC,WAAWD,EAAiB,IAAI,CAG5E,EAEaJ,GAAex5B,GAAiB,CAC3C,IAAM85B,EAAY,yCAIZ3hC,EAFU,CAAC,GAAG6H,EAAK,SAAS85B,CAAS,CAAC,EAEvB,OAAO,CAACrhC,EAAK,CAACsR,EAAGrS,EAAUqiC,CAAG,KAAO,CAAE,GAAGthC,EAAK,CAACf,CAAQ,EAAGqiC,CAAI,GAAI,CAAC,CAA2B,EAGpH,GAAG5hC,EAAK,UAAY,OAAU,CAE5B,IAAM6hC,EAAmBh6B,EAAK,WAAW85B,EAAW,EAAE,EAEhDG,EAAe,qDAEfC,EAAe,CAAC,GAAGF,EAAiB,SAASC,CAAY,CAAC,EAE1Dh4B,EAAQi4B,EAAa,CAAC,IAAIA,EAAa,CAAC,GAAG,OAAS,CAAC,EAE3D,GAAGj4B,IAAU,OACX,MAAO,CACL,GAAG9J,EACH,QAAS8J,CACX,CAEJ,CAEA,OAAO9J,CACT,ECxGA,IAAMgiC,GAAuB,CAACC,EAAO,CAAE,UAAAniC,EAAW,WAAAM,CAAW,IAAM,CAEjE,IAAML,EAAQ,OAAO,KAAKK,EAAW,OAAS,CAAC,CAAC,EAAE,OAAO,CAACE,EAAKL,KAAS,CAAE,GAAGK,EAAK,CAACL,CAAG,EAAG,MAAO,GAAI,CAAC,CAAC,EAEhGiiC,EAAMpiC,EAEZ,OAAGoiC,IACHA,EAAI,MAAQ,CACV,GAAGA,EAAI,MACP,GAAGniC,CACL,GAEO,CACL,WAAY,CAAE,MAAAkiC,CAAM,EACpB,MAAME,EAAO,CACX,MAAO,CAAE,MAAAF,EAAO,MAAAE,CAAM,CACxB,EACA,SAAU,0BACZ,CACF,EAEMC,GAA4D3xB,GAAY,CAE5E,GAAI,CAACA,EAAQ,WAAW,MAAO,OAAOA,EAAQ,SAE9C,IAAM1Q,EAAQ0Q,EAAQ,WAAW,MAG3B4xB,EAFY,OAAO,KAAKtiC,CAAK,EAEJ,OAAO,CAACO,EAAKf,IAAa,CACvD,IAAM+iC,EAAOviC,EAAMR,CAAQ,EACrBgjC,EAAc,CAClB,GAAG9xB,EAAQ,SAASlR,CAAQ,EAC5B,KAAMA,EAEN,YAAa,OAAO+iC,GAAS,SAAWA,EAAOA,EAAK,YACpD,MAAO,CACL,GAAG7xB,EAAQ,SAASlR,CAAQ,GAAG,MAC/B,SAAUI,GACV,aAAc,KACd,UAAW,OACX,KAAM,CACJ,GAAG8Q,EAAQ,SAASlR,CAAQ,GAAG,OAAO,KACtC,OAAQ,OACR,QAAS,MACX,CACF,EACA,KAAM,CACJ,GAAGkR,EAAQ,SAASlR,CAAQ,GAAG,KAC/B,SAAU,OACV,KAAM,QACR,CACF,EAEA,MAAO,CACL,GAAGe,EACH,CAACf,CAAQ,EAAGgjC,CACd,CACF,EAAG,CAAC,CAAoC,EAOxC,MALiB,CACf,GAAG9xB,EAAQ,SACX,GAAG4xB,CACL,CAGF,EAEMG,GAAoD/xB,GACjDA,EAAQ,YAGXgyB,GAA2C,CAC/C,WAAY,CAACT,EAAS,EACtB,OAAQthC,GAAgB,EACxB,kBAAmB,CAAC0hC,EAAmB,EACvC,cAAe,CAACI,EAAe,EAC/B,WAAY,CACV,KAAM,CACJ,OAAQ,CACN,SAAU,OACV,UAAAxB,EACF,CACF,CACF,CACF,EAEO0B,GAAQD","sourcesContent":["module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","import { computed, type DefineComponent } from 'vue'\nimport type { Args, ArgsStoryFn, Renderer } from '@storybook/types'\nimport { wrappedTemplate } from './utils'\nimport type { VueRenderer } from '@storybook/vue3'\n\nexport const renderWithSlots = <TRenderer extends Renderer, TArgs extends Record<string, any>>() => {\n  const makeComponentTemplate = (component: string, slots: string, args: Args) => `\n    <${component} ${Object.keys(args).map((key) => `:${key}=\"args['${key}']\"`).join(\" \")}>\n      ${slots}\n    </${component}>\n  ` as const\n\n  return ((args, { viewMode, componentId, component, parameters }) => {\n    const componentName = (component as DefineComponent).__name! || (component as { name: string }).name\n\n    if (!parameters?.slots) {\n      return {\n        template: makeComponentTemplate(componentName, '', args),\n        components: { [componentName]: component },\n        setup: () => ({ args: computed(() => ({ ...args })) }),\n      }\n    }\n\n    const slots = Object.entries(parameters.slots).reduce((acc, [currentSlotName, params]) => `${acc}\\n${wrappedTemplate(typeof params === 'object' ? params.template : undefined, currentSlotName)}`, '')\n\n    const components = Object.entries(parameters.slots).reduce((acc, [, params]) => ({...acc, ...(typeof params === 'object' ? params.components : {})}), {})\n\n    // Fix for root-based components (overlays, modals, tooltips etc.)\n    if (!component)\n      throw new Error('No component provided to render')\n\n    return {\n      template: makeComponentTemplate(componentName, slots, args),\n      components: { [componentName]: component, ...(components || {}) },\n      setup: () => ({ args: computed(() => ({ ...args })) }),\n    }\n  }) as ArgsStoryFn<VueRenderer, TArgs>\n}\n\nexport default renderWithSlots\n","\nexport const wrappedTemplate = (template: string | undefined, slotName: string) => {\n\n  const templateWithDefault = template ?? `{{ args.${slotName} }}`\n\n  const wrap = (contents: string) => `<template #${slotName}>\\n${contents}\\n</template>`\n\n  const wrappedTemplate = templateWithDefault.includes(`<template #${slotName}`) ?\n  templateWithDefault : wrap(templateWithDefault)\n\n  return wrappedTemplate.replace(/<template #default>(\\n*)(.*)(\\n*)<\\/template>/gimsu, '$2')\n}\n\nexport const SLOTS_CATEGORY_NAME = 'slots'\n",null,null,null,"/** Types of elements found in htmlparser2's DOM */\nexport var ElementType;\n(function (ElementType) {\n    /** Type for the root element of a document */\n    ElementType[\"Root\"] = \"root\";\n    /** Type for Text */\n    ElementType[\"Text\"] = \"text\";\n    /** Type for <? ... ?> */\n    ElementType[\"Directive\"] = \"directive\";\n    /** Type for <!-- ... --> */\n    ElementType[\"Comment\"] = \"comment\";\n    /** Type for <script> tags */\n    ElementType[\"Script\"] = \"script\";\n    /** Type for <style> tags */\n    ElementType[\"Style\"] = \"style\";\n    /** Type for Any tag */\n    ElementType[\"Tag\"] = \"tag\";\n    /** Type for <![CDATA[ ... ]]> */\n    ElementType[\"CDATA\"] = \"cdata\";\n    /** Type for <!doctype ...> */\n    ElementType[\"Doctype\"] = \"doctype\";\n})(ElementType || (ElementType = {}));\n/**\n * Tests whether an element is a tag or not.\n *\n * @param elem Element to test\n */\nexport function isTag(elem) {\n    return (elem.type === ElementType.Tag ||\n        elem.type === ElementType.Script ||\n        elem.type === ElementType.Style);\n}\n// Exports for backwards compatibility\n/** Type for the root element of a document */\nexport const Root = ElementType.Root;\n/** Type for Text */\nexport const Text = ElementType.Text;\n/** Type for <? ... ?> */\nexport const Directive = ElementType.Directive;\n/** Type for <!-- ... --> */\nexport const Comment = ElementType.Comment;\n/** Type for <script> tags */\nexport const Script = ElementType.Script;\n/** Type for <style> tags */\nexport const Style = ElementType.Style;\n/** Type for Any tag */\nexport const Tag = ElementType.Tag;\n/** Type for <![CDATA[ ... ]]> */\nexport const CDATA = ElementType.CDATA;\n/** Type for <!doctype ...> */\nexport const Doctype = ElementType.Doctype;\n","import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n    constructor() {\n        /** Parent of the node */\n        this.parent = null;\n        /** Previous sibling */\n        this.prev = null;\n        /** Next sibling */\n        this.next = null;\n        /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n        this.startIndex = null;\n        /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n        this.endIndex = null;\n    }\n    // Read-write aliases for properties\n    /**\n     * Same as {@link parent}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get parentNode() {\n        return this.parent;\n    }\n    set parentNode(parent) {\n        this.parent = parent;\n    }\n    /**\n     * Same as {@link prev}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get previousSibling() {\n        return this.prev;\n    }\n    set previousSibling(prev) {\n        this.prev = prev;\n    }\n    /**\n     * Same as {@link next}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get nextSibling() {\n        return this.next;\n    }\n    set nextSibling(next) {\n        this.next = next;\n    }\n    /**\n     * Clone this node, and optionally its children.\n     *\n     * @param recursive Clone child nodes as well.\n     * @returns A clone of the node.\n     */\n    cloneNode(recursive = false) {\n        return cloneNode(this, recursive);\n    }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n    /**\n     * @param data The content of the data node\n     */\n    constructor(data) {\n        super();\n        this.data = data;\n    }\n    /**\n     * Same as {@link data}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get nodeValue() {\n        return this.data;\n    }\n    set nodeValue(data) {\n        this.data = data;\n    }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Text;\n    }\n    get nodeType() {\n        return 3;\n    }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Comment;\n    }\n    get nodeType() {\n        return 8;\n    }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n    constructor(name, data) {\n        super(data);\n        this.name = name;\n        this.type = ElementType.Directive;\n    }\n    get nodeType() {\n        return 1;\n    }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n    /**\n     * @param children Children of the node. Only certain node types can have children.\n     */\n    constructor(children) {\n        super();\n        this.children = children;\n    }\n    // Aliases\n    /** First child of the node. */\n    get firstChild() {\n        var _a;\n        return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n    }\n    /** Last child of the node. */\n    get lastChild() {\n        return this.children.length > 0\n            ? this.children[this.children.length - 1]\n            : null;\n    }\n    /**\n     * Same as {@link children}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get childNodes() {\n        return this.children;\n    }\n    set childNodes(children) {\n        this.children = children;\n    }\n}\nexport class CDATA extends NodeWithChildren {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.CDATA;\n    }\n    get nodeType() {\n        return 4;\n    }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n    constructor() {\n        super(...arguments);\n        this.type = ElementType.Root;\n    }\n    get nodeType() {\n        return 9;\n    }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n    /**\n     * @param name Name of the tag, eg. `div`, `span`.\n     * @param attribs Object mapping attribute names to attribute values.\n     * @param children Children of the node.\n     */\n    constructor(name, attribs, children = [], type = name === \"script\"\n        ? ElementType.Script\n        : name === \"style\"\n            ? ElementType.Style\n            : ElementType.Tag) {\n        super(children);\n        this.name = name;\n        this.attribs = attribs;\n        this.type = type;\n    }\n    get nodeType() {\n        return 1;\n    }\n    // DOM Level 1 aliases\n    /**\n     * Same as {@link name}.\n     * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n     */\n    get tagName() {\n        return this.name;\n    }\n    set tagName(name) {\n        this.name = name;\n    }\n    get attributes() {\n        return Object.keys(this.attribs).map((name) => {\n            var _a, _b;\n            return ({\n                name,\n                value: this.attribs[name],\n                namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n                prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n            });\n        });\n    }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n    return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n    return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n    return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n    return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n    return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n    return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n    return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n    let result;\n    if (isText(node)) {\n        result = new Text(node.data);\n    }\n    else if (isComment(node)) {\n        result = new Comment(node.data);\n    }\n    else if (isTag(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new Element(node.name, { ...node.attribs }, children);\n        children.forEach((child) => (child.parent = clone));\n        if (node.namespace != null) {\n            clone.namespace = node.namespace;\n        }\n        if (node[\"x-attribsNamespace\"]) {\n            clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n        }\n        if (node[\"x-attribsPrefix\"]) {\n            clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n        }\n        result = clone;\n    }\n    else if (isCDATA(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new CDATA(children);\n        children.forEach((child) => (child.parent = clone));\n        result = clone;\n    }\n    else if (isDocument(node)) {\n        const children = recursive ? cloneChildren(node.children) : [];\n        const clone = new Document(children);\n        children.forEach((child) => (child.parent = clone));\n        if (node[\"x-mode\"]) {\n            clone[\"x-mode\"] = node[\"x-mode\"];\n        }\n        result = clone;\n    }\n    else if (isDirective(node)) {\n        const instruction = new ProcessingInstruction(node.name, node.data);\n        if (node[\"x-name\"] != null) {\n            instruction[\"x-name\"] = node[\"x-name\"];\n            instruction[\"x-publicId\"] = node[\"x-publicId\"];\n            instruction[\"x-systemId\"] = node[\"x-systemId\"];\n        }\n        result = instruction;\n    }\n    else {\n        throw new Error(`Not implemented yet: ${node.type}`);\n    }\n    result.startIndex = node.startIndex;\n    result.endIndex = node.endIndex;\n    if (node.sourceCodeLocation != null) {\n        result.sourceCodeLocation = node.sourceCodeLocation;\n    }\n    return result;\n}\nfunction cloneChildren(childs) {\n    const children = childs.map((child) => cloneNode(child, true));\n    for (let i = 1; i < children.length; i++) {\n        children[i].prev = children[i - 1];\n        children[i - 1].next = children[i];\n    }\n    return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n    withStartIndices: false,\n    withEndIndices: false,\n    xmlMode: false,\n};\nexport class DomHandler {\n    /**\n     * @param callback Called once parsing has completed.\n     * @param options Settings for the handler.\n     * @param elementCB Callback whenever a tag is closed.\n     */\n    constructor(callback, options, elementCB) {\n        /** The elements of the DOM */\n        this.dom = [];\n        /** The root element for the DOM */\n        this.root = new Document(this.dom);\n        /** Indicated whether parsing has been completed. */\n        this.done = false;\n        /** Stack of open tags. */\n        this.tagStack = [this.root];\n        /** A data node that is still being written to. */\n        this.lastNode = null;\n        /** Reference to the parser instance. Used for location information. */\n        this.parser = null;\n        // Make it possible to skip arguments, for backwards-compatibility\n        if (typeof options === \"function\") {\n            elementCB = options;\n            options = defaultOpts;\n        }\n        if (typeof callback === \"object\") {\n            options = callback;\n            callback = undefined;\n        }\n        this.callback = callback !== null && callback !== void 0 ? callback : null;\n        this.options = options !== null && options !== void 0 ? options : defaultOpts;\n        this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n    }\n    onparserinit(parser) {\n        this.parser = parser;\n    }\n    // Resets the handler back to starting state\n    onreset() {\n        this.dom = [];\n        this.root = new Document(this.dom);\n        this.done = false;\n        this.tagStack = [this.root];\n        this.lastNode = null;\n        this.parser = null;\n    }\n    // Signals the handler that parsing is done\n    onend() {\n        if (this.done)\n            return;\n        this.done = true;\n        this.parser = null;\n        this.handleCallback(null);\n    }\n    onerror(error) {\n        this.handleCallback(error);\n    }\n    onclosetag() {\n        this.lastNode = null;\n        const elem = this.tagStack.pop();\n        if (this.options.withEndIndices) {\n            elem.endIndex = this.parser.endIndex;\n        }\n        if (this.elementCB)\n            this.elementCB(elem);\n    }\n    onopentag(name, attribs) {\n        const type = this.options.xmlMode ? ElementType.Tag : undefined;\n        const element = new Element(name, attribs, undefined, type);\n        this.addNode(element);\n        this.tagStack.push(element);\n    }\n    ontext(data) {\n        const { lastNode } = this;\n        if (lastNode && lastNode.type === ElementType.Text) {\n            lastNode.data += data;\n            if (this.options.withEndIndices) {\n                lastNode.endIndex = this.parser.endIndex;\n            }\n        }\n        else {\n            const node = new Text(data);\n            this.addNode(node);\n            this.lastNode = node;\n        }\n    }\n    oncomment(data) {\n        if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n            this.lastNode.data += data;\n            return;\n        }\n        const node = new Comment(data);\n        this.addNode(node);\n        this.lastNode = node;\n    }\n    oncommentend() {\n        this.lastNode = null;\n    }\n    oncdatastart() {\n        const text = new Text(\"\");\n        const node = new CDATA([text]);\n        this.addNode(node);\n        text.parent = node;\n        this.lastNode = text;\n    }\n    oncdataend() {\n        this.lastNode = null;\n    }\n    onprocessinginstruction(name, data) {\n        const node = new ProcessingInstruction(name, data);\n        this.addNode(node);\n    }\n    handleCallback(error) {\n        if (typeof this.callback === \"function\") {\n            this.callback(error, this.dom);\n        }\n        else if (error) {\n            throw error;\n        }\n    }\n    addNode(node) {\n        const parent = this.tagStack[this.tagStack.length - 1];\n        const previousSibling = parent.children[parent.children.length - 1];\n        if (this.options.withStartIndices) {\n            node.startIndex = this.parser.startIndex;\n        }\n        if (this.options.withEndIndices) {\n            node.endIndex = this.parser.endIndex;\n        }\n        parent.children.push(node);\n        if (previousSibling) {\n            node.prev = previousSibling;\n            previousSibling.next = node;\n        }\n        node.parent = parent;\n        this.lastNode = null;\n    }\n}\nexport default DomHandler;\n",null,null,null,null,null,null,null,"export const elementNames = new Map([\n    \"altGlyph\",\n    \"altGlyphDef\",\n    \"altGlyphItem\",\n    \"animateColor\",\n    \"animateMotion\",\n    \"animateTransform\",\n    \"clipPath\",\n    \"feBlend\",\n    \"feColorMatrix\",\n    \"feComponentTransfer\",\n    \"feComposite\",\n    \"feConvolveMatrix\",\n    \"feDiffuseLighting\",\n    \"feDisplacementMap\",\n    \"feDistantLight\",\n    \"feDropShadow\",\n    \"feFlood\",\n    \"feFuncA\",\n    \"feFuncB\",\n    \"feFuncG\",\n    \"feFuncR\",\n    \"feGaussianBlur\",\n    \"feImage\",\n    \"feMerge\",\n    \"feMergeNode\",\n    \"feMorphology\",\n    \"feOffset\",\n    \"fePointLight\",\n    \"feSpecularLighting\",\n    \"feSpotLight\",\n    \"feTile\",\n    \"feTurbulence\",\n    \"foreignObject\",\n    \"glyphRef\",\n    \"linearGradient\",\n    \"radialGradient\",\n    \"textPath\",\n].map((val) => [val.toLowerCase(), val]));\nexport const attributeNames = new Map([\n    \"definitionURL\",\n    \"attributeName\",\n    \"attributeType\",\n    \"baseFrequency\",\n    \"baseProfile\",\n    \"calcMode\",\n    \"clipPathUnits\",\n    \"diffuseConstant\",\n    \"edgeMode\",\n    \"filterUnits\",\n    \"glyphRef\",\n    \"gradientTransform\",\n    \"gradientUnits\",\n    \"kernelMatrix\",\n    \"kernelUnitLength\",\n    \"keyPoints\",\n    \"keySplines\",\n    \"keyTimes\",\n    \"lengthAdjust\",\n    \"limitingConeAngle\",\n    \"markerHeight\",\n    \"markerUnits\",\n    \"markerWidth\",\n    \"maskContentUnits\",\n    \"maskUnits\",\n    \"numOctaves\",\n    \"pathLength\",\n    \"patternContentUnits\",\n    \"patternTransform\",\n    \"patternUnits\",\n    \"pointsAtX\",\n    \"pointsAtY\",\n    \"pointsAtZ\",\n    \"preserveAlpha\",\n    \"preserveAspectRatio\",\n    \"primitiveUnits\",\n    \"refX\",\n    \"refY\",\n    \"repeatCount\",\n    \"repeatDur\",\n    \"requiredExtensions\",\n    \"requiredFeatures\",\n    \"specularConstant\",\n    \"specularExponent\",\n    \"spreadMethod\",\n    \"startOffset\",\n    \"stdDeviation\",\n    \"stitchTiles\",\n    \"surfaceScale\",\n    \"systemLanguage\",\n    \"tableValues\",\n    \"targetX\",\n    \"targetY\",\n    \"textLength\",\n    \"viewBox\",\n    \"viewTarget\",\n    \"xChannelSelector\",\n    \"yChannelSelector\",\n    \"zoomAndPan\",\n].map((val) => [val.toLowerCase(), val]));\n","/*\n * Module dependencies\n */\nimport * as ElementType from \"domelementtype\";\nimport { encodeXML, escapeAttribute, escapeText } from \"entities\";\n/**\n * Mixed-case SVG and MathML tags & attributes\n * recognized by the HTML parser.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign\n */\nimport { elementNames, attributeNames } from \"./foreignNames.js\";\nconst unencodedElements = new Set([\n    \"style\",\n    \"script\",\n    \"xmp\",\n    \"iframe\",\n    \"noembed\",\n    \"noframes\",\n    \"plaintext\",\n    \"noscript\",\n]);\nfunction replaceQuotes(value) {\n    return value.replace(/\"/g, \"&quot;\");\n}\n/**\n * Format attributes\n */\nfunction formatAttributes(attributes, opts) {\n    var _a;\n    if (!attributes)\n        return;\n    const encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false\n        ? replaceQuotes\n        : opts.xmlMode || opts.encodeEntities !== \"utf8\"\n            ? encodeXML\n            : escapeAttribute;\n    return Object.keys(attributes)\n        .map((key) => {\n        var _a, _b;\n        const value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : \"\";\n        if (opts.xmlMode === \"foreign\") {\n            /* Fix up mixed-case attribute names */\n            key = (_b = attributeNames.get(key)) !== null && _b !== void 0 ? _b : key;\n        }\n        if (!opts.emptyAttrs && !opts.xmlMode && value === \"\") {\n            return key;\n        }\n        return `${key}=\"${encode(value)}\"`;\n    })\n        .join(\" \");\n}\n/**\n * Self-enclosing tags\n */\nconst singleTag = new Set([\n    \"area\",\n    \"base\",\n    \"basefont\",\n    \"br\",\n    \"col\",\n    \"command\",\n    \"embed\",\n    \"frame\",\n    \"hr\",\n    \"img\",\n    \"input\",\n    \"isindex\",\n    \"keygen\",\n    \"link\",\n    \"meta\",\n    \"param\",\n    \"source\",\n    \"track\",\n    \"wbr\",\n]);\n/**\n * Renders a DOM node or an array of DOM nodes to a string.\n *\n * Can be thought of as the equivalent of the `outerHTML` of the passed node(s).\n *\n * @param node Node to be rendered.\n * @param options Changes serialization behavior\n */\nexport function render(node, options = {}) {\n    const nodes = \"length\" in node ? node : [node];\n    let output = \"\";\n    for (let i = 0; i < nodes.length; i++) {\n        output += renderNode(nodes[i], options);\n    }\n    return output;\n}\nexport default render;\nfunction renderNode(node, options) {\n    switch (node.type) {\n        case ElementType.Root:\n            return render(node.children, options);\n        // @ts-expect-error We don't use `Doctype` yet\n        case ElementType.Doctype:\n        case ElementType.Directive:\n            return renderDirective(node);\n        case ElementType.Comment:\n            return renderComment(node);\n        case ElementType.CDATA:\n            return renderCdata(node);\n        case ElementType.Script:\n        case ElementType.Style:\n        case ElementType.Tag:\n            return renderTag(node, options);\n        case ElementType.Text:\n            return renderText(node, options);\n    }\n}\nconst foreignModeIntegrationPoints = new Set([\n    \"mi\",\n    \"mo\",\n    \"mn\",\n    \"ms\",\n    \"mtext\",\n    \"annotation-xml\",\n    \"foreignObject\",\n    \"desc\",\n    \"title\",\n]);\nconst foreignElements = new Set([\"svg\", \"math\"]);\nfunction renderTag(elem, opts) {\n    var _a;\n    // Handle SVG / MathML in HTML\n    if (opts.xmlMode === \"foreign\") {\n        /* Fix up mixed-case element names */\n        elem.name = (_a = elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name;\n        /* Exit foreign mode at integration points */\n        if (elem.parent &&\n            foreignModeIntegrationPoints.has(elem.parent.name)) {\n            opts = { ...opts, xmlMode: false };\n        }\n    }\n    if (!opts.xmlMode && foreignElements.has(elem.name)) {\n        opts = { ...opts, xmlMode: \"foreign\" };\n    }\n    let tag = `<${elem.name}`;\n    const attribs = formatAttributes(elem.attribs, opts);\n    if (attribs) {\n        tag += ` ${attribs}`;\n    }\n    if (elem.children.length === 0 &&\n        (opts.xmlMode\n            ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags\n                opts.selfClosingTags !== false\n            : // User explicitly asked for self-closing tags, even in HTML mode\n                opts.selfClosingTags && singleTag.has(elem.name))) {\n        if (!opts.xmlMode)\n            tag += \" \";\n        tag += \"/>\";\n    }\n    else {\n        tag += \">\";\n        if (elem.children.length > 0) {\n            tag += render(elem.children, opts);\n        }\n        if (opts.xmlMode || !singleTag.has(elem.name)) {\n            tag += `</${elem.name}>`;\n        }\n    }\n    return tag;\n}\nfunction renderDirective(elem) {\n    return `<${elem.data}>`;\n}\nfunction renderText(elem, opts) {\n    var _a;\n    let data = elem.data || \"\";\n    // If entities weren't decoded, no need to encode them back\n    if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false &&\n        !(!opts.xmlMode &&\n            elem.parent &&\n            unencodedElements.has(elem.parent.name))) {\n        data =\n            opts.xmlMode || opts.encodeEntities !== \"utf8\"\n                ? encodeXML(data)\n                : escapeText(data);\n    }\n    return data;\n}\nfunction renderCdata(elem) {\n    return `<![CDATA[${elem.children[0].data}]]>`;\n}\nfunction renderComment(elem) {\n    return `<!--${elem.data}-->`;\n}\n",null,null,null,null,null,null,null,null,null,null,"export var SelectorType;\n(function (SelectorType) {\n    SelectorType[\"Attribute\"] = \"attribute\";\n    SelectorType[\"Pseudo\"] = \"pseudo\";\n    SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n    SelectorType[\"Tag\"] = \"tag\";\n    SelectorType[\"Universal\"] = \"universal\";\n    // Traversals\n    SelectorType[\"Adjacent\"] = \"adjacent\";\n    SelectorType[\"Child\"] = \"child\";\n    SelectorType[\"Descendant\"] = \"descendant\";\n    SelectorType[\"Parent\"] = \"parent\";\n    SelectorType[\"Sibling\"] = \"sibling\";\n    SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n    Unknown: null,\n    QuirksMode: \"quirks\",\n    IgnoreCase: true,\n    CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n    AttributeAction[\"Any\"] = \"any\";\n    AttributeAction[\"Element\"] = \"element\";\n    AttributeAction[\"End\"] = \"end\";\n    AttributeAction[\"Equals\"] = \"equals\";\n    AttributeAction[\"Exists\"] = \"exists\";\n    AttributeAction[\"Hyphen\"] = \"hyphen\";\n    AttributeAction[\"Not\"] = \"not\";\n    AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n    [126 /* Tilde */, AttributeAction.Element],\n    [94 /* Circumflex */, AttributeAction.Start],\n    [36 /* Dollar */, AttributeAction.End],\n    [42 /* Asterisk */, AttributeAction.Any],\n    [33 /* ExclamationMark */, AttributeAction.Not],\n    [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n    \"has\",\n    \"not\",\n    \"matches\",\n    \"is\",\n    \"where\",\n    \"host\",\n    \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n    switch (selector.type) {\n        case SelectorType.Adjacent:\n        case SelectorType.Child:\n        case SelectorType.Descendant:\n        case SelectorType.Parent:\n        case SelectorType.Sibling:\n        case SelectorType.ColumnCombinator:\n            return true;\n        default:\n            return false;\n    }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n    const high = parseInt(escaped, 16) - 0x10000;\n    // NaN means non-codepoint\n    return high !== high || escapedWhitespace\n        ? escaped\n        : high < 0\n            ? // BMP codepoint\n                String.fromCharCode(high + 0x10000)\n            : // Supplemental Plane codepoint (surrogate pair)\n                String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n    return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n    return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n    return (c === 32 /* Space */ ||\n        c === 9 /* Tab */ ||\n        c === 10 /* NewLine */ ||\n        c === 12 /* FormFeed */ ||\n        c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n    const subselects = [];\n    const endIndex = parseSelector(subselects, `${selector}`, 0);\n    if (endIndex < selector.length) {\n        throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n    }\n    return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n    let tokens = [];\n    function getName(offset) {\n        const match = selector.slice(selectorIndex + offset).match(reName);\n        if (!match) {\n            throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n        }\n        const [name] = match;\n        selectorIndex += offset + name.length;\n        return unescapeCSS(name);\n    }\n    function stripWhitespace(offset) {\n        selectorIndex += offset;\n        while (selectorIndex < selector.length &&\n            isWhitespace(selector.charCodeAt(selectorIndex))) {\n            selectorIndex++;\n        }\n    }\n    function readValueWithParenthesis() {\n        selectorIndex += 1;\n        const start = selectorIndex;\n        let counter = 1;\n        for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n            if (selector.charCodeAt(selectorIndex) ===\n                40 /* LeftParenthesis */ &&\n                !isEscaped(selectorIndex)) {\n                counter++;\n            }\n            else if (selector.charCodeAt(selectorIndex) ===\n                41 /* RightParenthesis */ &&\n                !isEscaped(selectorIndex)) {\n                counter--;\n            }\n        }\n        if (counter) {\n            throw new Error(\"Parenthesis not matched\");\n        }\n        return unescapeCSS(selector.slice(start, selectorIndex - 1));\n    }\n    function isEscaped(pos) {\n        let slashCount = 0;\n        while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n            slashCount++;\n        return (slashCount & 1) === 1;\n    }\n    function ensureNotTraversal() {\n        if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n            throw new Error(\"Did not expect successive traversals.\");\n        }\n    }\n    function addTraversal(type) {\n        if (tokens.length > 0 &&\n            tokens[tokens.length - 1].type === SelectorType.Descendant) {\n            tokens[tokens.length - 1].type = type;\n            return;\n        }\n        ensureNotTraversal();\n        tokens.push({ type });\n    }\n    function addSpecialAttribute(name, action) {\n        tokens.push({\n            type: SelectorType.Attribute,\n            name,\n            action,\n            value: getName(1),\n            namespace: null,\n            ignoreCase: \"quirks\",\n        });\n    }\n    /**\n     * We have finished parsing the current part of the selector.\n     *\n     * Remove descendant tokens at the end if they exist,\n     * and return the last index, so that parsing can be\n     * picked up from here.\n     */\n    function finalizeSubselector() {\n        if (tokens.length &&\n            tokens[tokens.length - 1].type === SelectorType.Descendant) {\n            tokens.pop();\n        }\n        if (tokens.length === 0) {\n            throw new Error(\"Empty sub-selector\");\n        }\n        subselects.push(tokens);\n    }\n    stripWhitespace(0);\n    if (selector.length === selectorIndex) {\n        return selectorIndex;\n    }\n    loop: while (selectorIndex < selector.length) {\n        const firstChar = selector.charCodeAt(selectorIndex);\n        switch (firstChar) {\n            // Whitespace\n            case 32 /* Space */:\n            case 9 /* Tab */:\n            case 10 /* NewLine */:\n            case 12 /* FormFeed */:\n            case 13 /* CarriageReturn */: {\n                if (tokens.length === 0 ||\n                    tokens[0].type !== SelectorType.Descendant) {\n                    ensureNotTraversal();\n                    tokens.push({ type: SelectorType.Descendant });\n                }\n                stripWhitespace(1);\n                break;\n            }\n            // Traversals\n            case 62 /* GreaterThan */: {\n                addTraversal(SelectorType.Child);\n                stripWhitespace(1);\n                break;\n            }\n            case 60 /* LessThan */: {\n                addTraversal(SelectorType.Parent);\n                stripWhitespace(1);\n                break;\n            }\n            case 126 /* Tilde */: {\n                addTraversal(SelectorType.Sibling);\n                stripWhitespace(1);\n                break;\n            }\n            case 43 /* Plus */: {\n                addTraversal(SelectorType.Adjacent);\n                stripWhitespace(1);\n                break;\n            }\n            // Special attribute selectors: .class, #id\n            case 46 /* Period */: {\n                addSpecialAttribute(\"class\", AttributeAction.Element);\n                break;\n            }\n            case 35 /* Hash */: {\n                addSpecialAttribute(\"id\", AttributeAction.Equals);\n                break;\n            }\n            case 91 /* LeftSquareBracket */: {\n                stripWhitespace(1);\n                // Determine attribute name and namespace\n                let name;\n                let namespace = null;\n                if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n                    // Equivalent to no namespace\n                    name = getName(1);\n                }\n                else if (selector.startsWith(\"*|\", selectorIndex)) {\n                    namespace = \"*\";\n                    name = getName(2);\n                }\n                else {\n                    name = getName(0);\n                    if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n                        selector.charCodeAt(selectorIndex + 1) !==\n                            61 /* Equal */) {\n                        namespace = name;\n                        name = getName(1);\n                    }\n                }\n                stripWhitespace(0);\n                // Determine comparison operation\n                let action = AttributeAction.Exists;\n                const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n                if (possibleAction) {\n                    action = possibleAction;\n                    if (selector.charCodeAt(selectorIndex + 1) !==\n                        61 /* Equal */) {\n                        throw new Error(\"Expected `=`\");\n                    }\n                    stripWhitespace(2);\n                }\n                else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n                    action = AttributeAction.Equals;\n                    stripWhitespace(1);\n                }\n                // Determine value\n                let value = \"\";\n                let ignoreCase = null;\n                if (action !== \"exists\") {\n                    if (isQuote(selector.charCodeAt(selectorIndex))) {\n                        const quote = selector.charCodeAt(selectorIndex);\n                        let sectionEnd = selectorIndex + 1;\n                        while (sectionEnd < selector.length &&\n                            (selector.charCodeAt(sectionEnd) !== quote ||\n                                isEscaped(sectionEnd))) {\n                            sectionEnd += 1;\n                        }\n                        if (selector.charCodeAt(sectionEnd) !== quote) {\n                            throw new Error(\"Attribute value didn't end\");\n                        }\n                        value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n                        selectorIndex = sectionEnd + 1;\n                    }\n                    else {\n                        const valueStart = selectorIndex;\n                        while (selectorIndex < selector.length &&\n                            ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n                                selector.charCodeAt(selectorIndex) !==\n                                    93 /* RightSquareBracket */) ||\n                                isEscaped(selectorIndex))) {\n                            selectorIndex += 1;\n                        }\n                        value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n                    }\n                    stripWhitespace(0);\n                    // See if we have a force ignore flag\n                    const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n                    // If the forceIgnore flag is set (either `i` or `s`), use that value\n                    if (forceIgnore === 115 /* LowerS */) {\n                        ignoreCase = false;\n                        stripWhitespace(1);\n                    }\n                    else if (forceIgnore === 105 /* LowerI */) {\n                        ignoreCase = true;\n                        stripWhitespace(1);\n                    }\n                }\n                if (selector.charCodeAt(selectorIndex) !==\n                    93 /* RightSquareBracket */) {\n                    throw new Error(\"Attribute selector didn't terminate\");\n                }\n                selectorIndex += 1;\n                const attributeSelector = {\n                    type: SelectorType.Attribute,\n                    name,\n                    action,\n                    value,\n                    namespace,\n                    ignoreCase,\n                };\n                tokens.push(attributeSelector);\n                break;\n            }\n            case 58 /* Colon */: {\n                if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n                    tokens.push({\n                        type: SelectorType.PseudoElement,\n                        name: getName(2).toLowerCase(),\n                        data: selector.charCodeAt(selectorIndex) ===\n                            40 /* LeftParenthesis */\n                            ? readValueWithParenthesis()\n                            : null,\n                    });\n                    continue;\n                }\n                const name = getName(1).toLowerCase();\n                let data = null;\n                if (selector.charCodeAt(selectorIndex) ===\n                    40 /* LeftParenthesis */) {\n                    if (unpackPseudos.has(name)) {\n                        if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n                            throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n                        }\n                        data = [];\n                        selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n                        if (selector.charCodeAt(selectorIndex) !==\n                            41 /* RightParenthesis */) {\n                            throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n                        }\n                        selectorIndex += 1;\n                    }\n                    else {\n                        data = readValueWithParenthesis();\n                        if (stripQuotesFromPseudos.has(name)) {\n                            const quot = data.charCodeAt(0);\n                            if (quot === data.charCodeAt(data.length - 1) &&\n                                isQuote(quot)) {\n                                data = data.slice(1, -1);\n                            }\n                        }\n                        data = unescapeCSS(data);\n                    }\n                }\n                tokens.push({ type: SelectorType.Pseudo, name, data });\n                break;\n            }\n            case 44 /* Comma */: {\n                finalizeSubselector();\n                tokens = [];\n                stripWhitespace(1);\n                break;\n            }\n            default: {\n                if (selector.startsWith(\"/*\", selectorIndex)) {\n                    const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n                    if (endIndex < 0) {\n                        throw new Error(\"Comment was not terminated\");\n                    }\n                    selectorIndex = endIndex + 2;\n                    // Remove leading whitespace\n                    if (tokens.length === 0) {\n                        stripWhitespace(0);\n                    }\n                    break;\n                }\n                let namespace = null;\n                let name;\n                if (firstChar === 42 /* Asterisk */) {\n                    selectorIndex += 1;\n                    name = \"*\";\n                }\n                else if (firstChar === 124 /* Pipe */) {\n                    name = \"\";\n                    if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n                        addTraversal(SelectorType.ColumnCombinator);\n                        stripWhitespace(2);\n                        break;\n                    }\n                }\n                else if (reName.test(selector.slice(selectorIndex))) {\n                    name = getName(0);\n                }\n                else {\n                    break loop;\n                }\n                if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n                    selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n                    namespace = name;\n                    if (selector.charCodeAt(selectorIndex + 1) ===\n                        42 /* Asterisk */) {\n                        name = \"*\";\n                        selectorIndex += 2;\n                    }\n                    else {\n                        name = getName(1);\n                    }\n                }\n                tokens.push(name === \"*\"\n                    ? { type: SelectorType.Universal, namespace }\n                    : { type: SelectorType.Tag, name, namespace });\n            }\n        }\n    }\n    finalizeSubselector();\n    return selectorIndex;\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"const UNDEFINED_CODE_POINTS = new Set([\n    65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n    393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n    720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n    1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n    CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n    CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n    CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n    CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n    CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n    CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n    CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n    CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n    CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n    CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n    CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n    CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n    CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n    CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n    CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n    CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n    DASH_DASH: '--',\n    CDATA_START: '[CDATA[',\n    DOCTYPE: 'doctype',\n    SCRIPT: 'script',\n    PUBLIC: 'public',\n    SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n    return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n    return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n    return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n    return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map","export var ERR;\n(function (ERR) {\n    ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n    ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n    ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n    ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n    ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n    ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n    ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n    ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n    ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n    ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n    ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n    ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n    ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n    ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n    ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n    ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n    ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n    ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n    ERR[\"eofInTag\"] = \"eof-in-tag\";\n    ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n    ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n    ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n    ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n    ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n    ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n    ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n    ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n    ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n    ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n    ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n    ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n    ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n    ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n    ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n    ERR[\"nestedComment\"] = \"nested-comment\";\n    ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n    ERR[\"eofInComment\"] = \"eof-in-comment\";\n    ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n    ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n    ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n    ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n    ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n    ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n    ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n    ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n    ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n    ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n    ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n    ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n    ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n    ERR[\"missingDoctype\"] = \"missing-doctype\";\n    ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n    ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n    ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n    ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n    ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n    ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n    ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n    ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n    ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n    constructor(handler) {\n        this.handler = handler;\n        this.html = '';\n        this.pos = -1;\n        // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n        this.lastGapPos = -2;\n        this.gapStack = [];\n        this.skipNextNewLine = false;\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n        this.line = 1;\n        //NOTE: avoid reporting errors twice on advance/retreat\n        this.lastErrOffset = -1;\n    }\n    /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n    get col() {\n        return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n    }\n    get offset() {\n        return this.droppedBufferSize + this.pos;\n    }\n    getError(code) {\n        const { line, col, offset } = this;\n        return {\n            code,\n            startLine: line,\n            endLine: line,\n            startCol: col,\n            endCol: col,\n            startOffset: offset,\n            endOffset: offset,\n        };\n    }\n    _err(code) {\n        if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n            this.lastErrOffset = this.offset;\n            this.handler.onParseError(this.getError(code));\n        }\n    }\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.html.length - 1) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n            if (isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n                //NOTE: add a gap that should be avoided during retreat\n                this._addGap();\n                return getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n        //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n        return cp;\n    }\n    willDropParsedChunk() {\n        return this.pos > this.bufferWaterline;\n    }\n    dropParsedChunk() {\n        if (this.willDropParsedChunk()) {\n            this.html = this.html.substring(this.pos);\n            this.lineStartPos -= this.pos;\n            this.droppedBufferSize += this.pos;\n            this.pos = 0;\n            this.lastGapPos = -2;\n            this.gapStack.length = 0;\n        }\n    }\n    write(chunk, isLastChunk) {\n        if (this.html.length > 0) {\n            this.html += chunk;\n        }\n        else {\n            this.html = chunk;\n        }\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);\n        this.endOfChunkHit = false;\n    }\n    startsWith(pattern, caseSensitive) {\n        // Check if our buffer has enough characters\n        if (this.pos + pattern.length > this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return false;\n        }\n        if (caseSensitive) {\n            return this.html.startsWith(pattern, this.pos);\n        }\n        for (let i = 0; i < pattern.length; i++) {\n            const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n            if (cp !== pattern.charCodeAt(i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    peek(offset) {\n        const pos = this.pos + offset;\n        if (pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        const code = this.html.charCodeAt(pos);\n        return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n    }\n    advance() {\n        this.pos++;\n        //NOTE: LF should be in the last column of the line\n        if (this.isEol) {\n            this.isEol = false;\n            this.line++;\n            this.lineStartPos = this.pos;\n        }\n        if (this.pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        let cp = this.html.charCodeAt(this.pos);\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.isEol = true;\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (cp === $.LINE_FEED) {\n            this.isEol = true;\n            if (this.skipNextNewLine) {\n                // `line` will be bumped again in the recursive call.\n                this.line--;\n                this.skipNextNewLine = false;\n                this._addGap();\n                return this.advance();\n            }\n        }\n        this.skipNextNewLine = false;\n        if (isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange = this.handler.onParseError === null ||\n            (cp > 0x1f && cp < 0x7f) ||\n            cp === $.LINE_FEED ||\n            cp === $.CARRIAGE_RETURN ||\n            (cp > 0x9f && cp < 64976);\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n        return cp;\n    }\n    _checkForProblematicCharacters(cp) {\n        if (isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        }\n        else if (isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n    retreat(count) {\n        this.pos -= count;\n        while (this.pos < this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n        this.isEol = false;\n    }\n}\n//# sourceMappingURL=preprocessor.js.map","export var TokenType;\n(function (TokenType) {\n    TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n    TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n    TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n    TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n    TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n    TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n    TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n    TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n    TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(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}\n//# sourceMappingURL=token.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n    NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n    NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n    NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n    NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n    NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n    NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n    ATTRS[\"TYPE\"] = \"type\";\n    ATTRS[\"ACTION\"] = \"action\";\n    ATTRS[\"ENCODING\"] = \"encoding\";\n    ATTRS[\"PROMPT\"] = \"prompt\";\n    ATTRS[\"NAME\"] = \"name\";\n    ATTRS[\"COLOR\"] = \"color\";\n    ATTRS[\"FACE\"] = \"face\";\n    ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n    DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n    DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n    DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n    TAG_NAMES[\"A\"] = \"a\";\n    TAG_NAMES[\"ADDRESS\"] = \"address\";\n    TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n    TAG_NAMES[\"APPLET\"] = \"applet\";\n    TAG_NAMES[\"AREA\"] = \"area\";\n    TAG_NAMES[\"ARTICLE\"] = \"article\";\n    TAG_NAMES[\"ASIDE\"] = \"aside\";\n    TAG_NAMES[\"B\"] = \"b\";\n    TAG_NAMES[\"BASE\"] = \"base\";\n    TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n    TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n    TAG_NAMES[\"BIG\"] = \"big\";\n    TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n    TAG_NAMES[\"BODY\"] = \"body\";\n    TAG_NAMES[\"BR\"] = \"br\";\n    TAG_NAMES[\"BUTTON\"] = \"button\";\n    TAG_NAMES[\"CAPTION\"] = \"caption\";\n    TAG_NAMES[\"CENTER\"] = \"center\";\n    TAG_NAMES[\"CODE\"] = \"code\";\n    TAG_NAMES[\"COL\"] = \"col\";\n    TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n    TAG_NAMES[\"DD\"] = \"dd\";\n    TAG_NAMES[\"DESC\"] = \"desc\";\n    TAG_NAMES[\"DETAILS\"] = \"details\";\n    TAG_NAMES[\"DIALOG\"] = \"dialog\";\n    TAG_NAMES[\"DIR\"] = \"dir\";\n    TAG_NAMES[\"DIV\"] = \"div\";\n    TAG_NAMES[\"DL\"] = \"dl\";\n    TAG_NAMES[\"DT\"] = \"dt\";\n    TAG_NAMES[\"EM\"] = \"em\";\n    TAG_NAMES[\"EMBED\"] = \"embed\";\n    TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n    TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n    TAG_NAMES[\"FIGURE\"] = \"figure\";\n    TAG_NAMES[\"FONT\"] = \"font\";\n    TAG_NAMES[\"FOOTER\"] = \"footer\";\n    TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n    TAG_NAMES[\"FORM\"] = \"form\";\n    TAG_NAMES[\"FRAME\"] = \"frame\";\n    TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n    TAG_NAMES[\"H1\"] = \"h1\";\n    TAG_NAMES[\"H2\"] = \"h2\";\n    TAG_NAMES[\"H3\"] = \"h3\";\n    TAG_NAMES[\"H4\"] = \"h4\";\n    TAG_NAMES[\"H5\"] = \"h5\";\n    TAG_NAMES[\"H6\"] = \"h6\";\n    TAG_NAMES[\"HEAD\"] = \"head\";\n    TAG_NAMES[\"HEADER\"] = \"header\";\n    TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n    TAG_NAMES[\"HR\"] = \"hr\";\n    TAG_NAMES[\"HTML\"] = \"html\";\n    TAG_NAMES[\"I\"] = \"i\";\n    TAG_NAMES[\"IMG\"] = \"img\";\n    TAG_NAMES[\"IMAGE\"] = \"image\";\n    TAG_NAMES[\"INPUT\"] = \"input\";\n    TAG_NAMES[\"IFRAME\"] = \"iframe\";\n    TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n    TAG_NAMES[\"LABEL\"] = \"label\";\n    TAG_NAMES[\"LI\"] = \"li\";\n    TAG_NAMES[\"LINK\"] = \"link\";\n    TAG_NAMES[\"LISTING\"] = \"listing\";\n    TAG_NAMES[\"MAIN\"] = \"main\";\n    TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n    TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n    TAG_NAMES[\"MATH\"] = \"math\";\n    TAG_NAMES[\"MENU\"] = \"menu\";\n    TAG_NAMES[\"META\"] = \"meta\";\n    TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n    TAG_NAMES[\"MI\"] = \"mi\";\n    TAG_NAMES[\"MO\"] = \"mo\";\n    TAG_NAMES[\"MN\"] = \"mn\";\n    TAG_NAMES[\"MS\"] = \"ms\";\n    TAG_NAMES[\"MTEXT\"] = \"mtext\";\n    TAG_NAMES[\"NAV\"] = \"nav\";\n    TAG_NAMES[\"NOBR\"] = \"nobr\";\n    TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n    TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n    TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n    TAG_NAMES[\"OBJECT\"] = \"object\";\n    TAG_NAMES[\"OL\"] = \"ol\";\n    TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n    TAG_NAMES[\"OPTION\"] = \"option\";\n    TAG_NAMES[\"P\"] = \"p\";\n    TAG_NAMES[\"PARAM\"] = \"param\";\n    TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n    TAG_NAMES[\"PRE\"] = \"pre\";\n    TAG_NAMES[\"RB\"] = \"rb\";\n    TAG_NAMES[\"RP\"] = \"rp\";\n    TAG_NAMES[\"RT\"] = \"rt\";\n    TAG_NAMES[\"RTC\"] = \"rtc\";\n    TAG_NAMES[\"RUBY\"] = \"ruby\";\n    TAG_NAMES[\"S\"] = \"s\";\n    TAG_NAMES[\"SCRIPT\"] = \"script\";\n    TAG_NAMES[\"SECTION\"] = \"section\";\n    TAG_NAMES[\"SELECT\"] = \"select\";\n    TAG_NAMES[\"SOURCE\"] = \"source\";\n    TAG_NAMES[\"SMALL\"] = \"small\";\n    TAG_NAMES[\"SPAN\"] = \"span\";\n    TAG_NAMES[\"STRIKE\"] = \"strike\";\n    TAG_NAMES[\"STRONG\"] = \"strong\";\n    TAG_NAMES[\"STYLE\"] = \"style\";\n    TAG_NAMES[\"SUB\"] = \"sub\";\n    TAG_NAMES[\"SUMMARY\"] = \"summary\";\n    TAG_NAMES[\"SUP\"] = \"sup\";\n    TAG_NAMES[\"TABLE\"] = \"table\";\n    TAG_NAMES[\"TBODY\"] = \"tbody\";\n    TAG_NAMES[\"TEMPLATE\"] = \"template\";\n    TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n    TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n    TAG_NAMES[\"TD\"] = \"td\";\n    TAG_NAMES[\"TH\"] = \"th\";\n    TAG_NAMES[\"THEAD\"] = \"thead\";\n    TAG_NAMES[\"TITLE\"] = \"title\";\n    TAG_NAMES[\"TR\"] = \"tr\";\n    TAG_NAMES[\"TRACK\"] = \"track\";\n    TAG_NAMES[\"TT\"] = \"tt\";\n    TAG_NAMES[\"U\"] = \"u\";\n    TAG_NAMES[\"UL\"] = \"ul\";\n    TAG_NAMES[\"SVG\"] = \"svg\";\n    TAG_NAMES[\"VAR\"] = \"var\";\n    TAG_NAMES[\"WBR\"] = \"wbr\";\n    TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n    TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n    TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n    TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n    TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n    TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n    TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n    TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n    TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n    TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n    TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n    TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n    TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n    TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n    TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n    TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n    TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n    TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n    TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n    TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n    TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n    TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n    TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n    TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n    TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n    TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n    TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n    TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n    TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n    TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n    TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n    TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n    TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n    TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n    TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n    TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n    TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n    TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n    TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n    TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n    TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n    TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n    TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n    TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n    TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n    TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n    TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n    TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n    TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n    TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n    TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n    TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n    TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n    TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n    TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n    TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n    TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n    TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n    TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n    TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n    TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n    TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n    TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n    TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n    TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n    TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n    TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n    TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n    TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n    TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n    TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n    TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n    TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n    TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n    TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n    TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n    TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n    TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n    TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n    TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n    TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n    TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n    TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n    TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n    TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n    TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n    TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n    TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n    TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n    TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n    TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n    TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n    TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n    TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n    TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n    TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n    TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n    TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n    TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n    TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n    TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n    TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n    TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n    TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n    TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n    TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n    TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n    TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n    TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n    TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n    TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n    TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n    TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n    TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n    TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n    TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n    TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n    TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n    TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n    TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n    TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n    TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n    TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n    [TAG_NAMES.A, TAG_ID.A],\n    [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n    [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n    [TAG_NAMES.APPLET, TAG_ID.APPLET],\n    [TAG_NAMES.AREA, TAG_ID.AREA],\n    [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n    [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n    [TAG_NAMES.B, TAG_ID.B],\n    [TAG_NAMES.BASE, TAG_ID.BASE],\n    [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n    [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n    [TAG_NAMES.BIG, TAG_ID.BIG],\n    [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n    [TAG_NAMES.BODY, TAG_ID.BODY],\n    [TAG_NAMES.BR, TAG_ID.BR],\n    [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n    [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n    [TAG_NAMES.CENTER, TAG_ID.CENTER],\n    [TAG_NAMES.CODE, TAG_ID.CODE],\n    [TAG_NAMES.COL, TAG_ID.COL],\n    [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n    [TAG_NAMES.DD, TAG_ID.DD],\n    [TAG_NAMES.DESC, TAG_ID.DESC],\n    [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n    [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n    [TAG_NAMES.DIR, TAG_ID.DIR],\n    [TAG_NAMES.DIV, TAG_ID.DIV],\n    [TAG_NAMES.DL, TAG_ID.DL],\n    [TAG_NAMES.DT, TAG_ID.DT],\n    [TAG_NAMES.EM, TAG_ID.EM],\n    [TAG_NAMES.EMBED, TAG_ID.EMBED],\n    [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n    [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n    [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n    [TAG_NAMES.FONT, TAG_ID.FONT],\n    [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n    [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n    [TAG_NAMES.FORM, TAG_ID.FORM],\n    [TAG_NAMES.FRAME, TAG_ID.FRAME],\n    [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n    [TAG_NAMES.H1, TAG_ID.H1],\n    [TAG_NAMES.H2, TAG_ID.H2],\n    [TAG_NAMES.H3, TAG_ID.H3],\n    [TAG_NAMES.H4, TAG_ID.H4],\n    [TAG_NAMES.H5, TAG_ID.H5],\n    [TAG_NAMES.H6, TAG_ID.H6],\n    [TAG_NAMES.HEAD, TAG_ID.HEAD],\n    [TAG_NAMES.HEADER, TAG_ID.HEADER],\n    [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n    [TAG_NAMES.HR, TAG_ID.HR],\n    [TAG_NAMES.HTML, TAG_ID.HTML],\n    [TAG_NAMES.I, TAG_ID.I],\n    [TAG_NAMES.IMG, TAG_ID.IMG],\n    [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n    [TAG_NAMES.INPUT, TAG_ID.INPUT],\n    [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n    [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n    [TAG_NAMES.LABEL, TAG_ID.LABEL],\n    [TAG_NAMES.LI, TAG_ID.LI],\n    [TAG_NAMES.LINK, TAG_ID.LINK],\n    [TAG_NAMES.LISTING, TAG_ID.LISTING],\n    [TAG_NAMES.MAIN, TAG_ID.MAIN],\n    [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n    [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n    [TAG_NAMES.MATH, TAG_ID.MATH],\n    [TAG_NAMES.MENU, TAG_ID.MENU],\n    [TAG_NAMES.META, TAG_ID.META],\n    [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n    [TAG_NAMES.MI, TAG_ID.MI],\n    [TAG_NAMES.MO, TAG_ID.MO],\n    [TAG_NAMES.MN, TAG_ID.MN],\n    [TAG_NAMES.MS, TAG_ID.MS],\n    [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n    [TAG_NAMES.NAV, TAG_ID.NAV],\n    [TAG_NAMES.NOBR, TAG_ID.NOBR],\n    [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n    [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n    [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n    [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n    [TAG_NAMES.OL, TAG_ID.OL],\n    [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n    [TAG_NAMES.OPTION, TAG_ID.OPTION],\n    [TAG_NAMES.P, TAG_ID.P],\n    [TAG_NAMES.PARAM, TAG_ID.PARAM],\n    [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n    [TAG_NAMES.PRE, TAG_ID.PRE],\n    [TAG_NAMES.RB, TAG_ID.RB],\n    [TAG_NAMES.RP, TAG_ID.RP],\n    [TAG_NAMES.RT, TAG_ID.RT],\n    [TAG_NAMES.RTC, TAG_ID.RTC],\n    [TAG_NAMES.RUBY, TAG_ID.RUBY],\n    [TAG_NAMES.S, TAG_ID.S],\n    [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n    [TAG_NAMES.SECTION, TAG_ID.SECTION],\n    [TAG_NAMES.SELECT, TAG_ID.SELECT],\n    [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n    [TAG_NAMES.SMALL, TAG_ID.SMALL],\n    [TAG_NAMES.SPAN, TAG_ID.SPAN],\n    [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n    [TAG_NAMES.STRONG, TAG_ID.STRONG],\n    [TAG_NAMES.STYLE, TAG_ID.STYLE],\n    [TAG_NAMES.SUB, TAG_ID.SUB],\n    [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n    [TAG_NAMES.SUP, TAG_ID.SUP],\n    [TAG_NAMES.TABLE, TAG_ID.TABLE],\n    [TAG_NAMES.TBODY, TAG_ID.TBODY],\n    [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n    [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n    [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n    [TAG_NAMES.TD, TAG_ID.TD],\n    [TAG_NAMES.TH, TAG_ID.TH],\n    [TAG_NAMES.THEAD, TAG_ID.THEAD],\n    [TAG_NAMES.TITLE, TAG_ID.TITLE],\n    [TAG_NAMES.TR, TAG_ID.TR],\n    [TAG_NAMES.TRACK, TAG_ID.TRACK],\n    [TAG_NAMES.TT, TAG_ID.TT],\n    [TAG_NAMES.U, TAG_ID.U],\n    [TAG_NAMES.UL, TAG_ID.UL],\n    [TAG_NAMES.SVG, TAG_ID.SVG],\n    [TAG_NAMES.VAR, TAG_ID.VAR],\n    [TAG_NAMES.WBR, TAG_ID.WBR],\n    [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n    var _a;\n    return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n    [NS.HTML]: new Set([\n        $.ADDRESS,\n        $.APPLET,\n        $.AREA,\n        $.ARTICLE,\n        $.ASIDE,\n        $.BASE,\n        $.BASEFONT,\n        $.BGSOUND,\n        $.BLOCKQUOTE,\n        $.BODY,\n        $.BR,\n        $.BUTTON,\n        $.CAPTION,\n        $.CENTER,\n        $.COL,\n        $.COLGROUP,\n        $.DD,\n        $.DETAILS,\n        $.DIR,\n        $.DIV,\n        $.DL,\n        $.DT,\n        $.EMBED,\n        $.FIELDSET,\n        $.FIGCAPTION,\n        $.FIGURE,\n        $.FOOTER,\n        $.FORM,\n        $.FRAME,\n        $.FRAMESET,\n        $.H1,\n        $.H2,\n        $.H3,\n        $.H4,\n        $.H5,\n        $.H6,\n        $.HEAD,\n        $.HEADER,\n        $.HGROUP,\n        $.HR,\n        $.HTML,\n        $.IFRAME,\n        $.IMG,\n        $.INPUT,\n        $.LI,\n        $.LINK,\n        $.LISTING,\n        $.MAIN,\n        $.MARQUEE,\n        $.MENU,\n        $.META,\n        $.NAV,\n        $.NOEMBED,\n        $.NOFRAMES,\n        $.NOSCRIPT,\n        $.OBJECT,\n        $.OL,\n        $.P,\n        $.PARAM,\n        $.PLAINTEXT,\n        $.PRE,\n        $.SCRIPT,\n        $.SECTION,\n        $.SELECT,\n        $.SOURCE,\n        $.STYLE,\n        $.SUMMARY,\n        $.TABLE,\n        $.TBODY,\n        $.TD,\n        $.TEMPLATE,\n        $.TEXTAREA,\n        $.TFOOT,\n        $.TH,\n        $.THEAD,\n        $.TITLE,\n        $.TR,\n        $.TRACK,\n        $.UL,\n        $.WBR,\n        $.XMP,\n    ]),\n    [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n    [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n    [NS.XLINK]: new Set(),\n    [NS.XML]: new Set(),\n    [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n    return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n    TAG_NAMES.STYLE,\n    TAG_NAMES.SCRIPT,\n    TAG_NAMES.XMP,\n    TAG_NAMES.IFRAME,\n    TAG_NAMES.NOEMBED,\n    TAG_NAMES.NOFRAMES,\n    TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n    return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n    [0x80, 8364],\n    [0x82, 8218],\n    [0x83, 402],\n    [0x84, 8222],\n    [0x85, 8230],\n    [0x86, 8224],\n    [0x87, 8225],\n    [0x88, 710],\n    [0x89, 8240],\n    [0x8a, 352],\n    [0x8b, 8249],\n    [0x8c, 338],\n    [0x8e, 381],\n    [0x91, 8216],\n    [0x92, 8217],\n    [0x93, 8220],\n    [0x94, 8221],\n    [0x95, 8226],\n    [0x96, 8211],\n    [0x97, 8212],\n    [0x98, 732],\n    [0x99, 8482],\n    [0x9a, 353],\n    [0x9b, 8250],\n    [0x9c, 339],\n    [0x9e, 382],\n    [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n    State[State[\"DATA\"] = 0] = \"DATA\";\n    State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n    State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n    State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n    State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n    State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n    State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n    State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n    State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n    State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n    State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n    State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n    State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n    State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n    State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n    State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n    State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n    State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n    State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n    State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n    State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n    State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n    State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n    State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n    State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n    State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n    State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n    State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n    State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n    State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n    State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n    State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n    State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n    State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n    State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n    State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n    State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n    State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n    State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n    State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n    DATA: State.DATA,\n    RCDATA: State.RCDATA,\n    RAWTEXT: State.RAWTEXT,\n    SCRIPT_DATA: State.SCRIPT_DATA,\n    PLAINTEXT: State.PLAINTEXT,\n    CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.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 >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n    return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n    return cp + 32;\n}\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n    return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n    return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n    constructor(options, handler) {\n        this.options = options;\n        this.handler = handler;\n        this.paused = false;\n        /** Ensures that the parsing loop isn't run multiple times at once. */\n        this.inLoop = false;\n        /**\n         * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n         * and that it is not an integration point for either MathML or HTML.\n         *\n         * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n         */\n        this.inForeignNode = false;\n        this.lastStartTagName = '';\n        this.active = false;\n        this.state = State.DATA;\n        this.returnState = State.DATA;\n        this.charRefCode = -1;\n        this.consumedAfterSnapshot = -1;\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = { name: '', value: '' };\n        this.preprocessor = new Preprocessor(handler);\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    //Errors\n    _err(code) {\n        var _a, _b;\n        (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n    }\n    // NOTE: `offset` may never run across line boundaries.\n    getCurrentLocation(offset) {\n        if (!this.options.sourceCodeLocationInfo) {\n            return null;\n        }\n        return {\n            startLine: this.preprocessor.line,\n            startCol: this.preprocessor.col - offset,\n            startOffset: this.preprocessor.offset - offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1,\n        };\n    }\n    _runParsingLoop() {\n        if (this.inLoop)\n            return;\n        this.inLoop = true;\n        while (this.active && !this.paused) {\n            this.consumedAfterSnapshot = 0;\n            const cp = this._consume();\n            if (!this._ensureHibernation()) {\n                this._callState(cp);\n            }\n        }\n        this.inLoop = false;\n    }\n    //API\n    pause() {\n        this.paused = true;\n    }\n    resume(writeCallback) {\n        if (!this.paused) {\n            throw new Error('Parser was already resumed');\n        }\n        this.paused = false;\n        // Necessary for synchronous resume.\n        if (this.inLoop)\n            return;\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    write(chunk, isLastChunk, writeCallback) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n        this._runParsingLoop();\n    }\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            this._unconsume(this.consumedAfterSnapshot);\n            this.active = false;\n            return true;\n        }\n        return false;\n    }\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n    _unconsume(count) {\n        this.consumedAfterSnapshot -= count;\n        this.preprocessor.retreat(count);\n    }\n    _reconsumeInState(state, cp) {\n        this.state = state;\n        this._callState(cp);\n    }\n    _advanceBy(count) {\n        this.consumedAfterSnapshot += count;\n        for (let i = 0; i < count; i++) {\n            this.preprocessor.advance();\n        }\n    }\n    _consumeSequenceIfMatch(pattern, caseSensitive) {\n        if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n            // We will already have consumed one character before calling this method.\n            this._advanceBy(pattern.length - 1);\n            return true;\n        }\n        return false;\n    }\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: TokenType.START_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(1),\n        };\n    }\n    _createEndTagToken() {\n        this.currentToken = {\n            type: TokenType.END_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(2),\n        };\n    }\n    _createCommentToken(offset) {\n        this.currentToken = {\n            type: TokenType.COMMENT,\n            data: '',\n            location: this.getCurrentLocation(offset),\n        };\n    }\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: TokenType.DOCTYPE,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null,\n            location: this.currentLocation,\n        };\n    }\n    _createCharacterToken(type, chars) {\n        this.currentCharacterToken = {\n            type,\n            chars,\n            location: this.currentLocation,\n        };\n    }\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: '',\n        };\n        this.currentLocation = this.getCurrentLocation(0);\n    }\n    _leaveAttrName() {\n        var _a;\n        var _b;\n        const token = this.currentToken;\n        if (getTokenAttr(token, this.currentAttr.name) === null) {\n            token.attrs.push(this.currentAttr);\n            if (token.location && this.currentLocation) {\n                const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n                attrLocations[this.currentAttr.name] = this.currentLocation;\n                // Set end location\n                this._leaveAttrValue();\n            }\n        }\n        else {\n            this._err(ERR.duplicateAttribute);\n        }\n    }\n    _leaveAttrValue() {\n        if (this.currentLocation) {\n            this.currentLocation.endLine = this.preprocessor.line;\n            this.currentLocation.endCol = this.preprocessor.col;\n            this.currentLocation.endOffset = this.preprocessor.offset;\n        }\n    }\n    //Token emission\n    prepareToken(ct) {\n        this._emitCurrentCharacterToken(ct.location);\n        this.currentToken = null;\n        if (ct.location) {\n            ct.location.endLine = this.preprocessor.line;\n            ct.location.endCol = this.preprocessor.col + 1;\n            ct.location.endOffset = this.preprocessor.offset + 1;\n        }\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    emitCurrentTagToken() {\n        const ct = this.currentToken;\n        this.prepareToken(ct);\n        ct.tagID = getTagID(ct.tagName);\n        if (ct.type === TokenType.START_TAG) {\n            this.lastStartTagName = ct.tagName;\n            this.handler.onStartTag(ct);\n        }\n        else {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n            this.handler.onEndTag(ct);\n        }\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentComment(ct) {\n        this.prepareToken(ct);\n        this.handler.onComment(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentDoctype(ct) {\n        this.prepareToken(ct);\n        this.handler.onDoctype(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    _emitCurrentCharacterToken(nextLocation) {\n        if (this.currentCharacterToken) {\n            //NOTE: if we have a pending character token, make it's end location equal to the\n            //current token's start location.\n            if (nextLocation && this.currentCharacterToken.location) {\n                this.currentCharacterToken.location.endLine = nextLocation.startLine;\n                this.currentCharacterToken.location.endCol = nextLocation.startCol;\n                this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n            }\n            switch (this.currentCharacterToken.type) {\n                case TokenType.CHARACTER: {\n                    this.handler.onCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.NULL_CHARACTER: {\n                    this.handler.onNullCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.WHITESPACE_CHARACTER: {\n                    this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n                    break;\n                }\n            }\n            this.currentCharacterToken = null;\n        }\n    }\n    _emitEOFToken() {\n        const location = this.getCurrentLocation(0);\n        if (location) {\n            location.endLine = location.startLine;\n            location.endCol = location.startCol;\n            location.endOffset = location.startOffset;\n        }\n        this._emitCurrentCharacterToken(location);\n        this.handler.onEof({ type: TokenType.EOF, location });\n        this.active = false;\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, the parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken) {\n            if (this.currentCharacterToken.type !== type) {\n                this.currentLocation = this.getCurrentLocation(0);\n                this._emitCurrentCharacterToken(this.currentLocation);\n                this.preprocessor.dropParsedChunk();\n            }\n            else {\n                this.currentCharacterToken.chars += ch;\n                return;\n            }\n        }\n        this._createCharacterToken(type, ch);\n    }\n    _emitCodePoint(cp) {\n        const type = isWhitespace(cp)\n            ? TokenType.WHITESPACE_CHARACTER\n            : cp === $.NULL\n                ? TokenType.NULL_CHARACTER\n                : TokenType.CHARACTER;\n        this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n    }\n    //NOTE: used when we emit characters explicitly.\n    //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n    }\n    // Character reference helpers\n    _matchNamedCharacterReference(cp) {\n        let result = null;\n        let excess = 0;\n        let withoutSemicolon = false;\n        for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n            i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n            if (i < 0)\n                break;\n            excess += 1;\n            current = htmlDecodeTree[i];\n            const masked = current & BinTrieFlags.VALUE_LENGTH;\n            // If the branch is a value, store it and continue\n            if (masked) {\n                // The mask is the number of bytes of the value, including the current byte.\n                const valueLength = (masked >> 14) - 1;\n                // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n                // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n                if (cp !== $.SEMICOLON &&\n                    this._isCharacterReferenceInAttribute() &&\n                    isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n                    //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n                    //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n                    result = [$.AMPERSAND];\n                    // Skip over the value.\n                    i += valueLength;\n                }\n                else {\n                    // If this is a surrogate pair, consume the next two bytes.\n                    result =\n                        valueLength === 0\n                            ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n                            : valueLength === 1\n                                ? [htmlDecodeTree[++i]]\n                                : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n                    excess = 0;\n                    withoutSemicolon = cp !== $.SEMICOLON;\n                }\n                if (valueLength === 0) {\n                    // If the value is zero-length, we're done.\n                    this._consume();\n                    break;\n                }\n            }\n        }\n        this._unconsume(excess);\n        if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n        }\n        // We want to emit the error above on the code point after the entity.\n        // We always consume one code point too many in the loop, and we wait to\n        // unconsume it until after the error is emitted.\n        this._unconsume(1);\n        return result;\n    }\n    _isCharacterReferenceInAttribute() {\n        return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n    }\n    _flushCodePointConsumedAsCharacterReference(cp) {\n        if (this._isCharacterReferenceInAttribute()) {\n            this.currentAttr.value += String.fromCodePoint(cp);\n        }\n        else {\n            this._emitCodePoint(cp);\n        }\n    }\n    // Calling states this way turns out to be much faster than any other approach.\n    _callState(cp) {\n        switch (this.state) {\n            case State.DATA: {\n                this._stateData(cp);\n                break;\n            }\n            case State.RCDATA: {\n                this._stateRcdata(cp);\n                break;\n            }\n            case State.RAWTEXT: {\n                this._stateRawtext(cp);\n                break;\n            }\n            case State.SCRIPT_DATA: {\n                this._stateScriptData(cp);\n                break;\n            }\n            case State.PLAINTEXT: {\n                this._statePlaintext(cp);\n                break;\n            }\n            case State.TAG_OPEN: {\n                this._stateTagOpen(cp);\n                break;\n            }\n            case State.END_TAG_OPEN: {\n                this._stateEndTagOpen(cp);\n                break;\n            }\n            case State.TAG_NAME: {\n                this._stateTagName(cp);\n                break;\n            }\n            case State.RCDATA_LESS_THAN_SIGN: {\n                this._stateRcdataLessThanSign(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_OPEN: {\n                this._stateRcdataEndTagOpen(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_NAME: {\n                this._stateRcdataEndTagName(cp);\n                break;\n            }\n            case State.RAWTEXT_LESS_THAN_SIGN: {\n                this._stateRawtextLessThanSign(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_OPEN: {\n                this._stateRawtextEndTagOpen(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_NAME: {\n                this._stateRawtextEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n                this._stateScriptDataLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_OPEN: {\n                this._stateScriptDataEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_NAME: {\n                this._stateScriptDataEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START: {\n                this._stateScriptDataEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n                this._stateScriptDataEscapeStartDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED: {\n                this._stateScriptDataEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH: {\n                this._stateScriptDataEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n                this._stateScriptDataEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n                this._stateScriptDataEscapedEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n                this._stateScriptDataEscapedEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n                this._stateScriptDataDoubleEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n                this._stateScriptDataDoubleEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n                this._stateScriptDataDoubleEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n                this._stateScriptDataDoubleEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataDoubleEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n                this._stateScriptDataDoubleEscapeEnd(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_NAME: {\n                this._stateBeforeAttributeName(cp);\n                break;\n            }\n            case State.ATTRIBUTE_NAME: {\n                this._stateAttributeName(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_NAME: {\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_VALUE: {\n                this._stateBeforeAttributeValue(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n                this._stateAttributeValueDoubleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n                this._stateAttributeValueSingleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_UNQUOTED: {\n                this._stateAttributeValueUnquoted(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n                this._stateAfterAttributeValueQuoted(cp);\n                break;\n            }\n            case State.SELF_CLOSING_START_TAG: {\n                this._stateSelfClosingStartTag(cp);\n                break;\n            }\n            case State.BOGUS_COMMENT: {\n                this._stateBogusComment(cp);\n                break;\n            }\n            case State.MARKUP_DECLARATION_OPEN: {\n                this._stateMarkupDeclarationOpen(cp);\n                break;\n            }\n            case State.COMMENT_START: {\n                this._stateCommentStart(cp);\n                break;\n            }\n            case State.COMMENT_START_DASH: {\n                this._stateCommentStartDash(cp);\n                break;\n            }\n            case State.COMMENT: {\n                this._stateComment(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN: {\n                this._stateCommentLessThanSign(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG: {\n                this._stateCommentLessThanSignBang(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n                this._stateCommentLessThanSignBangDash(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n                this._stateCommentLessThanSignBangDashDash(cp);\n                break;\n            }\n            case State.COMMENT_END_DASH: {\n                this._stateCommentEndDash(cp);\n                break;\n            }\n            case State.COMMENT_END: {\n                this._stateCommentEnd(cp);\n                break;\n            }\n            case State.COMMENT_END_BANG: {\n                this._stateCommentEndBang(cp);\n                break;\n            }\n            case State.DOCTYPE: {\n                this._stateDoctype(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_NAME: {\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case State.DOCTYPE_NAME: {\n                this._stateDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_NAME: {\n                this._stateAfterDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n                this._stateAfterDoctypePublicKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateBeforeDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypePublicIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateAfterDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n                this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n                this._stateAfterDoctypeSystemKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateBeforeDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateAfterDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.BOGUS_DOCTYPE: {\n                this._stateBogusDoctype(cp);\n                break;\n            }\n            case State.CDATA_SECTION: {\n                this._stateCdataSection(cp);\n                break;\n            }\n            case State.CDATA_SECTION_BRACKET: {\n                this._stateCdataSectionBracket(cp);\n                break;\n            }\n            case State.CDATA_SECTION_END: {\n                this._stateCdataSectionEnd(cp);\n                break;\n            }\n            case State.CHARACTER_REFERENCE: {\n                this._stateCharacterReference(cp);\n                break;\n            }\n            case State.NAMED_CHARACTER_REFERENCE: {\n                this._stateNamedCharacterReference(cp);\n                break;\n            }\n            case State.AMBIGUOUS_AMPERSAND: {\n                this._stateAmbiguousAmpersand(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE: {\n                this._stateNumericCharacterReference(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n                this._stateHexademicalCharacterReferenceStart(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n                this._stateHexademicalCharacterReference(cp);\n                break;\n            }\n            case State.DECIMAL_CHARACTER_REFERENCE: {\n                this._stateDecimalCharacterReference(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE_END: {\n                this._stateNumericCharacterReferenceEnd(cp);\n                break;\n            }\n            default: {\n                throw new Error('Unknown state');\n            }\n        }\n    }\n    // State machine\n    // Data state\n    //------------------------------------------------------------------\n    _stateData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.TAG_OPEN;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.DATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    //  RCDATA state\n    //------------------------------------------------------------------\n    _stateRcdata(cp) {\n        switch (cp) {\n            case $.AMPERSAND: {\n                this.returnState = State.RCDATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RCDATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    _stateRawtext(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RAWTEXT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data state\n    //------------------------------------------------------------------\n    _stateScriptData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    _statePlaintext(cp) {\n        switch (cp) {\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Tag open state\n    //------------------------------------------------------------------\n    _stateTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.EXCLAMATION_MARK: {\n                    this.state = State.MARKUP_DECLARATION_OPEN;\n                    break;\n                }\n                case $.SOLIDUS: {\n                    this.state = State.END_TAG_OPEN;\n                    break;\n                }\n                case $.QUESTION_MARK: {\n                    this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n                    this._createCommentToken(1);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('<');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._emitChars('<');\n                    this.state = State.DATA;\n                    this._stateData(cp);\n                }\n            }\n    }\n    // End tag open state\n    //------------------------------------------------------------------\n    _stateEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingEndTagName);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('</');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._createCommentToken(2);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                }\n            }\n    }\n    // Tag name state\n    //------------------------------------------------------------------\n    _stateTagName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.tagName += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    _stateRcdataLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RCDATA_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RCDATA_END_TAG_NAME;\n            this._stateRcdataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    handleSpecialEndTag(_cp) {\n        if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n            return !this._ensureHibernation();\n        }\n        this._createEndTagToken();\n        const token = this.currentToken;\n        token.tagName = this.lastStartTagName;\n        const cp = this.preprocessor.peek(this.lastStartTagName.length);\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                return false;\n            }\n            case $.SOLIDUS: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.SELF_CLOSING_START_TAG;\n                return false;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.emitCurrentTagToken();\n                this.state = State.DATA;\n                return false;\n            }\n            default: {\n                return !this._ensureHibernation();\n            }\n        }\n    }\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    _stateRawtextLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RAWTEXT_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RAWTEXT_END_TAG_NAME;\n            this._stateRawtextEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataLessThanSign(cp) {\n        switch (cp) {\n            case $.SOLIDUS: {\n                this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.SCRIPT_DATA_ESCAPE_START;\n                this._emitChars('<!');\n                break;\n            }\n            default: {\n                this._emitChars('<');\n                this.state = State.SCRIPT_DATA;\n                this._stateScriptData(cp);\n            }\n        }\n    }\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_END_TAG_NAME;\n            this._stateScriptDataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStart(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStartDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n        }\n        else if (isAsciiLetter(cp)) {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n            this._stateScriptDataDoubleEscapeStart(cp);\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n            this._stateScriptDataEscapedEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeStart(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n            this._emitChars('/');\n        }\n        else {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeEnd(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Before attribute name state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n                this._createAttr('=');\n                this.state = State.ATTRIBUTE_NAME;\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Attribute name state\n    //------------------------------------------------------------------\n    _stateAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED:\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this._leaveAttrName();\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._leaveAttrName();\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN: {\n                this._err(ERR.unexpectedCharacterInAttributeName);\n                this.currentAttr.name += String.fromCodePoint(cp);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After attribute name state\n    //------------------------------------------------------------------\n    _stateAfterAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Before attribute value state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeValue(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingAttributeValue);\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            default: {\n                this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this._stateAttributeValueUnquoted(cp);\n            }\n        }\n    }\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueDoubleQuoted(cp) {\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueSingleQuoted(cp) {\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueUnquoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN:\n            case $.EQUALS_SIGN:\n            case $.GRAVE_ACCENT: {\n                this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n                this.currentAttr.value += String.fromCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    _stateAfterAttributeValueQuoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this._leaveAttrValue();\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBetweenAttributes);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    _stateSelfClosingStartTag(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                const token = this.currentToken;\n                token.selfClosing = true;\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedSolidusInTag);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Bogus comment state\n    //------------------------------------------------------------------\n    _stateBogusComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    _stateMarkupDeclarationOpen(cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n            this._createCommentToken($$.DASH_DASH.length + 1);\n            this.state = State.COMMENT_START;\n        }\n        else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n            // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n            this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n            this.state = State.DOCTYPE;\n        }\n        else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n            if (this.inForeignNode) {\n                this.state = State.CDATA_SECTION;\n            }\n            else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken($$.CDATA_START.length + 1);\n                this.currentToken.data = '[CDATA[';\n                this.state = State.BOGUS_COMMENT;\n            }\n        }\n        //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken(2);\n            this.state = State.BOGUS_COMMENT;\n            this._stateBogusComment(cp);\n        }\n    }\n    // Comment start state\n    //------------------------------------------------------------------\n    _stateCommentStart(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_START_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                const token = this.currentToken;\n                this.emitCurrentComment(token);\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment start dash state\n    //------------------------------------------------------------------\n    _stateCommentStartDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment state\n    //------------------------------------------------------------------\n    _stateComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                this.state = State.COMMENT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSign(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.EXCLAMATION_MARK: {\n                token.data += '!';\n                this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBang(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n        }\n        else {\n            this.state = State.COMMENT;\n            this._stateComment(cp);\n        }\n    }\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n        }\n        else {\n            this.state = State.COMMENT_END_DASH;\n            this._stateCommentEndDash(cp);\n        }\n    }\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDashDash(cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n        this.state = State.COMMENT_END;\n        this._stateCommentEnd(cp);\n    }\n    // Comment end dash state\n    //------------------------------------------------------------------\n    _stateCommentEndDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end state\n    //------------------------------------------------------------------\n    _stateCommentEnd(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.COMMENT_END_BANG;\n                break;\n            }\n            case $.HYPHEN_MINUS: {\n                token.data += '-';\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end bang state\n    //------------------------------------------------------------------\n    _stateCommentEndBang(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                token.data += '--!';\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.incorrectlyClosedComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--!';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    _stateDoctype(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                this._createDoctypeToken(null);\n                const token = this.currentToken;\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBeforeDoctypeName);\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n            }\n        }\n    }\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeName(cp) {\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n            this.state = State.DOCTYPE_NAME;\n        }\n        else\n            switch (cp) {\n                case $.SPACE:\n                case $.LINE_FEED:\n                case $.TABULATION:\n                case $.FORM_FEED: {\n                    // Ignore whitespace\n                    break;\n                }\n                case $.NULL: {\n                    this._err(ERR.unexpectedNullCharacter);\n                    this._createDoctypeToken(REPLACEMENT_CHARACTER);\n                    this.state = State.DOCTYPE_NAME;\n                    break;\n                }\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingDoctypeName);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofInDoctype);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._createDoctypeToken(String.fromCodePoint(cp));\n                    this.state = State.DOCTYPE_NAME;\n                }\n            }\n    }\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.AFTER_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n                    this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n                }\n                else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n                    this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n                }\n                //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n                //results are no longer valid and we will need to start over.\n                else if (!this._ensureHibernation()) {\n                    this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n                    token.forceQuirks = true;\n                    this.state = State.BOGUS_DOCTYPE;\n                    this._stateBogusDoctype(cp);\n                }\n            }\n        }\n    }\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    _stateBogusDoctype(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    // CDATA section state\n    //------------------------------------------------------------------\n    _stateCdataSection(cp) {\n        switch (cp) {\n            case $.RIGHT_SQUARE_BRACKET: {\n                this.state = State.CDATA_SECTION_BRACKET;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInCdata);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    _stateCdataSectionBracket(cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = State.CDATA_SECTION_END;\n        }\n        else {\n            this._emitChars(']');\n            this.state = State.CDATA_SECTION;\n            this._stateCdataSection(cp);\n        }\n    }\n    // CDATA section end state\n    //------------------------------------------------------------------\n    _stateCdataSectionEnd(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                break;\n            }\n            case $.RIGHT_SQUARE_BRACKET: {\n                this._emitChars(']');\n                break;\n            }\n            default: {\n                this._emitChars(']]');\n                this.state = State.CDATA_SECTION;\n                this._stateCdataSection(cp);\n            }\n        }\n    }\n    // Character reference state\n    //------------------------------------------------------------------\n    _stateCharacterReference(cp) {\n        if (cp === $.NUMBER_SIGN) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE;\n        }\n        else if (isAsciiAlphaNumeric(cp)) {\n            this.state = State.NAMED_CHARACTER_REFERENCE;\n            this._stateNamedCharacterReference(cp);\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Named character reference state\n    //------------------------------------------------------------------\n    _stateNamedCharacterReference(cp) {\n        const matchResult = this._matchNamedCharacterReference(cp);\n        //NOTE: Matching can be abrupted by hibernation. In that case, match\n        //results are no longer valid and we will need to start over.\n        if (this._ensureHibernation()) {\n            // Stay in the state, try again.\n        }\n        else if (matchResult) {\n            for (let i = 0; i < matchResult.length; i++) {\n                this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n            }\n            this.state = this.returnState;\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this.state = State.AMBIGUOUS_AMPERSAND;\n        }\n    }\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    _stateAmbiguousAmpersand(cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }\n        else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Numeric character reference state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReference(cp) {\n        this.charRefCode = 0;\n        if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n        }\n        // Inlined decimal character reference start state\n        else if (isAsciiDigit(cp)) {\n            this.state = State.DECIMAL_CHARACTER_REFERENCE;\n            this._stateDecimalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Hexademical character reference start state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReferenceStart(cp) {\n        if (isAsciiHexDigit(cp)) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n            this._stateHexademicalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n            this._unconsume(2);\n            this.state = this.returnState;\n        }\n    }\n    // Hexademical character reference state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReference(cp) {\n        if (isAsciiUpperHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n        }\n        else if (isAsciiLowerHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n        }\n        else if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n        }\n        else if (cp === $.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Decimal character reference state\n    //------------------------------------------------------------------\n    _stateDecimalCharacterReference(cp) {\n        if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n        }\n        else if (cp === $.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Numeric character reference end state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReferenceEnd(cp) {\n        if (this.charRefCode === $.NULL) {\n            this._err(ERR.nullCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (this.charRefCode > 1114111) {\n            this._err(ERR.characterReferenceOutsideUnicodeRange);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (isSurrogate(this.charRefCode)) {\n            this._err(ERR.surrogateCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (isUndefinedCodePoint(this.charRefCode)) {\n            this._err(ERR.noncharacterCharacterReference);\n        }\n        else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n            this._err(ERR.controlCharacterReference);\n            const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n            if (replacement !== undefined) {\n                this.charRefCode = replacement;\n            }\n        }\n        this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n        this._reconsumeInState(this.returnState, cp);\n    }\n}\n//# sourceMappingURL=index.js.map","import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n    ...IMPLICIT_END_TAG_REQUIRED,\n    $.CAPTION,\n    $.COLGROUP,\n    $.TBODY,\n    $.TD,\n    $.TFOOT,\n    $.TH,\n    $.THEAD,\n    $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n    [$.APPLET, NS.HTML],\n    [$.CAPTION, NS.HTML],\n    [$.HTML, NS.HTML],\n    [$.MARQUEE, NS.HTML],\n    [$.OBJECT, NS.HTML],\n    [$.TABLE, NS.HTML],\n    [$.TD, NS.HTML],\n    [$.TEMPLATE, NS.HTML],\n    [$.TH, NS.HTML],\n    [$.ANNOTATION_XML, NS.MATHML],\n    [$.MI, NS.MATHML],\n    [$.MN, NS.MATHML],\n    [$.MO, NS.MATHML],\n    [$.MS, NS.MATHML],\n    [$.MTEXT, NS.MATHML],\n    [$.DESC, NS.SVG],\n    [$.FOREIGN_OBJECT, NS.SVG],\n    [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n    get currentTmplContentOrNode() {\n        return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n    }\n    constructor(document, treeAdapter, handler) {\n        this.treeAdapter = treeAdapter;\n        this.handler = handler;\n        this.items = [];\n        this.tagIDs = [];\n        this.stackTop = -1;\n        this.tmplCount = 0;\n        this.currentTagId = $.UNKNOWN;\n        this.current = document;\n    }\n    //Index of element\n    _indexOf(element) {\n        return this.items.lastIndexOf(element, this.stackTop);\n    }\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagId = this.tagIDs[this.stackTop];\n    }\n    //Mutations\n    push(element, tagID) {\n        this.stackTop++;\n        this.items[this.stackTop] = element;\n        this.current = element;\n        this.tagIDs[this.stackTop] = tagID;\n        this.currentTagId = tagID;\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n        this.handler.onItemPush(element, tagID, true);\n    }\n    pop() {\n        const popped = this.current;\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n        this.stackTop--;\n        this._updateCurrentElement();\n        this.handler.onItemPop(popped, true);\n    }\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n        this.items[idx] = newElement;\n        if (idx === this.stackTop) {\n            this.current = newElement;\n        }\n    }\n    insertAfter(referenceElement, newElement, newElementID) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n        this.items.splice(insertionIdx, 0, newElement);\n        this.tagIDs.splice(insertionIdx, 0, newElementID);\n        this.stackTop++;\n        if (insertionIdx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n        this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n    }\n    popUntilTagNamePopped(tagName) {\n        let targetIdx = this.stackTop + 1;\n        do {\n            targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n        } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n        this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n    }\n    shortenToLength(idx) {\n        while (this.stackTop >= idx) {\n            const popped = this.current;\n            if (this.tmplCount > 0 && this._isInTemplate()) {\n                this.tmplCount -= 1;\n            }\n            this.stackTop--;\n            this._updateCurrentElement();\n            this.handler.onItemPop(popped, this.stackTop < idx);\n        }\n    }\n    popUntilElementPopped(element) {\n        const idx = this._indexOf(element);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilPopped(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilNumberedHeaderPopped() {\n        this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n    }\n    popUntilTableCellPopped() {\n        this.popUntilPopped(TABLE_CELLS, NS.HTML);\n    }\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.tmplCount = 0;\n        this.shortenToLength(1);\n    }\n    _indexOfTagNames(tagNames, namespace) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    clearBackTo(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx + 1);\n    }\n    clearBackToTableContext() {\n        this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n    }\n    clearBackToTableBodyContext() {\n        this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n    }\n    clearBackToTableRowContext() {\n        this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n    }\n    remove(element) {\n        const idx = this._indexOf(element);\n        if (idx >= 0) {\n            if (idx === this.stackTop) {\n                this.pop();\n            }\n            else {\n                this.items.splice(idx, 1);\n                this.tagIDs.splice(idx, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                this.handler.onItemPop(element, false);\n            }\n        }\n    }\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n    }\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n    getCommonAncestor(element) {\n        const elementIdx = this._indexOf(element) - 1;\n        return elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n    }\n    //Element in scope\n    hasInScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (isNumberedHeader(tn) && ns === NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\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.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\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.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\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.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.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.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n                return true;\n            }\n            if (tn === $.TABLE || tn === $.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.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n                return false;\n            }\n        }\n        return true;\n    }\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsThoroughly() {\n        while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsWithExclusion(exclusionId) {\n        while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n}\n//# sourceMappingURL=open-element-stack.js.map","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n    EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n    EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n    constructor(treeAdapter) {\n        this.treeAdapter = treeAdapter;\n        this.entries = [];\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, neAttrs) {\n        const candidates = [];\n        const neAttrsLength = neAttrs.length;\n        const neTagName = this.treeAdapter.getTagName(newElement);\n        const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n        for (let i = 0; i < this.entries.length; i++) {\n            const entry = this.entries[i];\n            if (entry.type === EntryType.Marker) {\n                break;\n            }\n            const { element } = entry;\n            if (this.treeAdapter.getTagName(element) === neTagName &&\n                this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n                if (elementAttrs.length === neAttrsLength) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n        return candidates;\n    }\n    _ensureNoahArkCondition(newElement) {\n        if (this.entries.length < NOAH_ARK_CAPACITY)\n            return;\n        const neAttrs = this.treeAdapter.getAttrList(newElement);\n        const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n        if (candidates.length < NOAH_ARK_CAPACITY)\n            return;\n        //NOTE: build attrs map for the new element, so we can perform fast lookups\n        const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n        let validCandidates = 0;\n        //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n        for (let i = 0; i < candidates.length; i++) {\n            const candidate = candidates[i];\n            // We know that `candidate.attrs.length === neAttrs.length`\n            if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n                validCandidates += 1;\n                if (validCandidates >= NOAH_ARK_CAPACITY) {\n                    this.entries.splice(candidate.idx, 1);\n                }\n            }\n        }\n    }\n    //Mutations\n    insertMarker() {\n        this.entries.unshift(MARKER);\n    }\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n        this.entries.unshift({\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    insertElementAfterBookmark(element, token) {\n        const bookmarkIdx = this.entries.indexOf(this.bookmark);\n        this.entries.splice(bookmarkIdx, 0, {\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    removeEntry(entry) {\n        const entryIndex = this.entries.indexOf(entry);\n        if (entryIndex >= 0) {\n            this.entries.splice(entryIndex, 1);\n        }\n    }\n    /**\n     * Clears the list of formatting elements up to the last marker.\n     *\n     * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n     */\n    clearToLastMarker() {\n        const markerIdx = this.entries.indexOf(MARKER);\n        if (markerIdx >= 0) {\n            this.entries.splice(0, markerIdx + 1);\n        }\n        else {\n            this.entries.length = 0;\n        }\n    }\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n        return entry && entry.type === EntryType.Element ? entry : null;\n    }\n    getElementEntry(element) {\n        return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n    }\n}\n//# sourceMappingURL=formatting-element-list.js.map","import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n    return {\n        nodeName: '#text',\n        value,\n        parentNode: null,\n    };\n}\nexport const defaultTreeAdapter = {\n    //Node construction\n    createDocument() {\n        return {\n            nodeName: '#document',\n            mode: DOCUMENT_MODE.NO_QUIRKS,\n            childNodes: [],\n        };\n    },\n    createDocumentFragment() {\n        return {\n            nodeName: '#document-fragment',\n            childNodes: [],\n        };\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        return {\n            nodeName: tagName,\n            tagName,\n            attrs,\n            namespaceURI,\n            childNodes: [],\n            parentNode: null,\n        };\n    },\n    createCommentNode(data) {\n        return {\n            nodeName: '#comment',\n            data,\n            parentNode: null,\n        };\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        parentNode.childNodes.push(newNode);\n        newNode.parentNode = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n        parentNode.childNodes.splice(insertionIdx, 0, newNode);\n        newNode.parentNode = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        templateElement.content = contentElement;\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.content;\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n        if (doctypeNode) {\n            doctypeNode.name = name;\n            doctypeNode.publicId = publicId;\n            doctypeNode.systemId = systemId;\n        }\n        else {\n            const node = {\n                nodeName: '#documentType',\n                name,\n                publicId,\n                systemId,\n                parentNode: null,\n            };\n            defaultTreeAdapter.appendChild(document, node);\n        }\n    },\n    setDocumentMode(document, mode) {\n        document.mode = mode;\n    },\n    getDocumentMode(document) {\n        return document.mode;\n    },\n    detachNode(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    insertText(parentNode, text) {\n        if (parentNode.childNodes.length > 0) {\n            const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n            if (defaultTreeAdapter.isTextNode(prevNode)) {\n                prevNode.value += text;\n                return;\n            }\n        }\n        defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n        if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n            prevNode.value += text;\n        }\n        else {\n            defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n        for (let j = 0; j < attrs.length; j++) {\n            if (!recipientAttrsMap.has(attrs[j].name)) {\n                recipient.attrs.push(attrs[j]);\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.childNodes[0];\n    },\n    getChildNodes(node) {\n        return node.childNodes;\n    },\n    getParentNode(node) {\n        return node.parentNode;\n    },\n    getAttrList(element) {\n        return element.attrs;\n    },\n    //Node data\n    getTagName(element) {\n        return element.tagName;\n    },\n    getNamespaceURI(element) {\n        return element.namespaceURI;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.value;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        return doctypeNode.name;\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        return doctypeNode.publicId;\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        return doctypeNode.systemId;\n    },\n    //Node types\n    isTextNode(node) {\n        return node.nodeName === '#text';\n    },\n    isCommentNode(node) {\n        return node.nodeName === '#comment';\n    },\n    isDocumentTypeNode(node) {\n        return node.nodeName === '#documentType';\n    },\n    isElementNode(node) {\n        return Object.prototype.hasOwnProperty.call(node, 'tagName');\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n    },\n};\n//# sourceMappingURL=default.js.map","import { DOCUMENT_MODE } from './html.js';\n//Const\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 = [\n    ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n    '-//w3o//dtd w3 html strict 3.0//en//',\n    '-/w3c/dtd html 4.0 transitional/en',\n    'html',\n]);\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 = [\n    ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n    return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n    return (token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    const { systemId } = token;\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    let { publicId } = token;\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n        if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\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 =\n            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}\n//# sourceMappingURL=doctype.js.map","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n    'attributeName',\n    'attributeType',\n    'baseFrequency',\n    'baseProfile',\n    'calcMode',\n    'clipPathUnits',\n    'diffuseConstant',\n    'edgeMode',\n    'filterUnits',\n    'glyphRef',\n    'gradientTransform',\n    'gradientUnits',\n    'kernelMatrix',\n    'kernelUnitLength',\n    'keyPoints',\n    'keySplines',\n    'keyTimes',\n    'lengthAdjust',\n    'limitingConeAngle',\n    'markerHeight',\n    'markerUnits',\n    'markerWidth',\n    'maskContentUnits',\n    'maskUnits',\n    'numOctaves',\n    'pathLength',\n    'patternContentUnits',\n    'patternTransform',\n    'patternUnits',\n    'pointsAtX',\n    'pointsAtY',\n    'pointsAtZ',\n    'preserveAlpha',\n    'preserveAspectRatio',\n    'primitiveUnits',\n    'refX',\n    'refY',\n    'repeatCount',\n    'repeatDur',\n    'requiredExtensions',\n    'requiredFeatures',\n    'specularConstant',\n    'specularExponent',\n    'spreadMethod',\n    'startOffset',\n    'stdDeviation',\n    'stitchTiles',\n    'surfaceScale',\n    'systemLanguage',\n    'tableValues',\n    'targetX',\n    'targetY',\n    'textLength',\n    'viewBox',\n    'viewTarget',\n    'xChannelSelector',\n    'yChannelSelector',\n    'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n    ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n    ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n    ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n    ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n    ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n    ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n    ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n    ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n    ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n    ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n    ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n    ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n    'altGlyph',\n    'altGlyphDef',\n    'altGlyphItem',\n    'animateColor',\n    'animateMotion',\n    'animateTransform',\n    'clipPath',\n    'feBlend',\n    'feColorMatrix',\n    'feComponentTransfer',\n    'feComposite',\n    'feConvolveMatrix',\n    'feDiffuseLighting',\n    'feDisplacementMap',\n    'feDistantLight',\n    'feFlood',\n    'feFuncA',\n    'feFuncB',\n    'feFuncG',\n    'feFuncR',\n    'feGaussianBlur',\n    'feImage',\n    'feMerge',\n    'feMergeNode',\n    'feMorphology',\n    'feOffset',\n    'fePointLight',\n    'feSpecularLighting',\n    'feSpotLight',\n    'feTile',\n    'feTurbulence',\n    'foreignObject',\n    'glyphRef',\n    'linearGradient',\n    'radialGradient',\n    'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n    $.B,\n    $.BIG,\n    $.BLOCKQUOTE,\n    $.BODY,\n    $.BR,\n    $.CENTER,\n    $.CODE,\n    $.DD,\n    $.DIV,\n    $.DL,\n    $.DT,\n    $.EM,\n    $.EMBED,\n    $.H1,\n    $.H2,\n    $.H3,\n    $.H4,\n    $.H5,\n    $.H6,\n    $.HEAD,\n    $.HR,\n    $.I,\n    $.IMG,\n    $.LI,\n    $.LISTING,\n    $.MENU,\n    $.META,\n    $.NOBR,\n    $.OL,\n    $.P,\n    $.PRE,\n    $.RUBY,\n    $.S,\n    $.SMALL,\n    $.SPAN,\n    $.STRONG,\n    $.STRIKE,\n    $.SUB,\n    $.SUP,\n    $.TABLE,\n    $.TT,\n    $.U,\n    $.UL,\n    $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n    const tn = startTagToken.tagID;\n    const isFontWithAttrs = tn === $.FONT &&\n        startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n    return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(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}\nexport function adjustTokenSVGAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrName != null) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n}\nexport function adjustTokenXMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(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}\nexport function adjustTokenSVGTagName(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n    if (adjustedTagName != null) {\n        token.tagName = adjustedTagName;\n        token.tagID = getTagID(token.tagName);\n    }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.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 ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n    return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n        ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n    InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n    InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n    InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n    InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n    InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n    InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n    InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n    InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n    InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n    InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n    InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n    InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n    InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n    InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n    InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n    InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n    startLine: -1,\n    startCol: -1,\n    startOffset: -1,\n    endLine: -1,\n    endCol: -1,\n    endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    treeAdapter: defaultTreeAdapter,\n    onParseError: null,\n};\n//Parser\nexport class Parser {\n    constructor(options, document, fragmentContext = null, scriptHandler = null) {\n        this.fragmentContext = fragmentContext;\n        this.scriptHandler = scriptHandler;\n        this.currentToken = null;\n        this.stopped = false;\n        this.insertionMode = InsertionMode.INITIAL;\n        this.originalInsertionMode = InsertionMode.INITIAL;\n        this.headElement = null;\n        this.formElement = null;\n        /** Indicates that the current node is not an element in the HTML namespace */\n        this.currentNotInHTML = false;\n        /**\n         * The template insertion mode stack is maintained from the left.\n         * Ie. the topmost element will always have index 0.\n         */\n        this.tmplInsertionModeStack = [];\n        this.pendingCharacterTokens = [];\n        this.hasNonWhitespacePendingCharacterToken = false;\n        this.framesetOk = true;\n        this.skipNextNewLine = false;\n        this.fosterParentingEnabled = false;\n        this.options = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        this.treeAdapter = this.options.treeAdapter;\n        this.onParseError = this.options.onParseError;\n        // Always enable location info if we report parse errors.\n        if (this.onParseError) {\n            this.options.sourceCodeLocationInfo = true;\n        }\n        this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n        this.tokenizer = new Tokenizer(this.options, this);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n        this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n        this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n    }\n    // API\n    static parse(html, options) {\n        const parser = new this(options);\n        parser.tokenizer.write(html, true);\n        return parser.document;\n    }\n    static getFragmentParser(fragmentContext, options) {\n        const opts = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        //NOTE: use a <template> element as the fragment context if no context element was provided,\n        //so we will parse in a \"forgiving\" manner\n        fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n        //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n        //This is important for jsdom, where a new `document` cannot be created. This led to\n        //fragment parsing messing with the main `document`.\n        const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n        const parser = new this(opts, documentMock, fragmentContext);\n        if (parser.fragmentContextID === $.TEMPLATE) {\n            parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n        }\n        parser._initTokenizerForFragmentParsing();\n        parser._insertFakeRootElement();\n        parser._resetInsertionMode();\n        parser._findFormInFragmentContext();\n        return parser;\n    }\n    getFragment() {\n        const rootElement = this.treeAdapter.getFirstChild(this.document);\n        const fragment = this.treeAdapter.createDocumentFragment();\n        this._adoptNodes(rootElement, fragment);\n        return fragment;\n    }\n    //Errors\n    _err(token, code, beforeToken) {\n        var _a;\n        if (!this.onParseError)\n            return;\n        const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n        const err = {\n            code,\n            startLine: loc.startLine,\n            startCol: loc.startCol,\n            startOffset: loc.startOffset,\n            endLine: beforeToken ? loc.startLine : loc.endLine,\n            endCol: beforeToken ? loc.startCol : loc.endCol,\n            endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n        };\n        this.onParseError(err);\n    }\n    //Stack events\n    onItemPush(node, tid, isTop) {\n        var _a, _b;\n        (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n        if (isTop && this.openElements.stackTop > 0)\n            this._setContextModes(node, tid);\n    }\n    onItemPop(node, isTop) {\n        var _a, _b;\n        if (this.options.sourceCodeLocationInfo) {\n            this._setEndLocation(node, this.currentToken);\n        }\n        (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n        if (isTop) {\n            let current;\n            let currentTagId;\n            if (this.openElements.stackTop === 0 && this.fragmentContext) {\n                current = this.fragmentContext;\n                currentTagId = this.fragmentContextID;\n            }\n            else {\n                ({ current, currentTagId } = this.openElements);\n            }\n            this._setContextModes(current, currentTagId);\n        }\n    }\n    _setContextModes(current, tid) {\n        const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n        this.currentNotInHTML = !isHTML;\n        this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, 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 = InsertionMode.TEXT;\n    }\n    switchToPlaintextParsing() {\n        this.insertionMode = InsertionMode.TEXT;\n        this.originalInsertionMode = InsertionMode.IN_BODY;\n        this.tokenizer.state = TokenizerMode.PLAINTEXT;\n    }\n    //Fragment parsing\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n        while (node) {\n            if (this.treeAdapter.getTagName(node) === TN.FORM) {\n                this.formElement = node;\n                break;\n            }\n            node = this.treeAdapter.getParentNode(node);\n        }\n    }\n    _initTokenizerForFragmentParsing() {\n        if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n            return;\n        }\n        switch (this.fragmentContextID) {\n            case $.TITLE:\n            case $.TEXTAREA: {\n                this.tokenizer.state = TokenizerMode.RCDATA;\n                break;\n            }\n            case $.STYLE:\n            case $.XMP:\n            case $.IFRAME:\n            case $.NOEMBED:\n            case $.NOFRAMES:\n            case $.NOSCRIPT: {\n                this.tokenizer.state = TokenizerMode.RAWTEXT;\n                break;\n            }\n            case $.SCRIPT: {\n                this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n                break;\n            }\n            case $.PLAINTEXT: {\n                this.tokenizer.state = TokenizerMode.PLAINTEXT;\n                break;\n            }\n            default:\n            // Do nothing\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        if (token.location) {\n            const documentChildren = this.treeAdapter.getChildNodes(this.document);\n            const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n            if (docTypeNode) {\n                this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n            }\n        }\n    }\n    _attachElementToTree(element, location) {\n        if (this.options.sourceCodeLocationInfo) {\n            const loc = location && {\n                ...location,\n                startTag: location,\n            };\n            this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n        }\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        }\n        else {\n            const parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.appendChild(parent, element);\n        }\n    }\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n    }\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n        this.openElements.push(element, token.tagID);\n    }\n    _insertFakeElement(tagName, tagID) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n        this._attachElementToTree(element, null);\n        this.openElements.push(element, tagID);\n    }\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl, token.location);\n        this.openElements.push(tmpl, token.tagID);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(content, null);\n    }\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(element, null);\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element, $.HTML);\n    }\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n        this.treeAdapter.appendChild(parent, commentNode);\n        if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n        }\n    }\n    _insertCharacters(token) {\n        let parent;\n        let beforeElement;\n        if (this._shouldFosterParentOnInsertion()) {\n            ({ parent, beforeElement } = this._findFosterParentingLocation());\n            if (beforeElement) {\n                this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n            }\n            else {\n                this.treeAdapter.insertText(parent, token.chars);\n            }\n        }\n        else {\n            parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n        if (!token.location)\n            return;\n        const siblings = this.treeAdapter.getChildNodes(parent);\n        const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n        const textNode = siblings[textNodeIdx - 1];\n        //NOTE: if we have a location assigned by another token, then just update the end position\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        }\n        else if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\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    _setEndLocation(element, closingToken) {\n        if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n            const ctLoc = closingToken.location;\n            const tn = this.treeAdapter.getTagName(element);\n            const endLoc = \n            // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n            // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n            closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n                ? {\n                    endTag: { ...ctLoc },\n                    endLine: ctLoc.endLine,\n                    endCol: ctLoc.endCol,\n                    endOffset: ctLoc.endOffset,\n                }\n                : {\n                    endLine: ctLoc.startLine,\n                    endCol: ctLoc.startCol,\n                    endOffset: ctLoc.startOffset,\n                };\n            this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n        }\n    }\n    //Token processing\n    shouldProcessStartTagTokenInForeignContent(token) {\n        // Check that neither current === document, or ns === NS.HTML\n        if (!this.currentNotInHTML)\n            return false;\n        let current;\n        let currentTagId;\n        if (this.openElements.stackTop === 0 && this.fragmentContext) {\n            current = this.fragmentContext;\n            currentTagId = this.fragmentContextID;\n        }\n        else {\n            ({ current, currentTagId } = this.openElements);\n        }\n        if (token.tagID === $.SVG &&\n            this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n            this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n            return false;\n        }\n        return (\n        // Check that `current` is not an integration point for HTML or MathML elements.\n        this.tokenizer.inForeignNode ||\n            // If it _is_ an integration point, then we might have to check that it is not an HTML\n            // integration point.\n            ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n                !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n    }\n    _processToken(token) {\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                this.onCharacter(token);\n                break;\n            }\n            case TokenType.NULL_CHARACTER: {\n                this.onNullCharacter(token);\n                break;\n            }\n            case TokenType.COMMENT: {\n                this.onComment(token);\n                break;\n            }\n            case TokenType.DOCTYPE: {\n                this.onDoctype(token);\n                break;\n            }\n            case TokenType.START_TAG: {\n                this._processStartTag(token);\n                break;\n            }\n            case TokenType.END_TAG: {\n                this.onEndTag(token);\n                break;\n            }\n            case TokenType.EOF: {\n                this.onEof(token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                this.onWhitespaceCharacter(token);\n                break;\n            }\n        }\n    }\n    //Integration points\n    _isIntegrationPoint(tid, element, foreignNS) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n        return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n    }\n    //Active formatting elements reconstruction\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.entries.length;\n        if (listLength) {\n            const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n            const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n            for (let i = unopenIdx; i >= 0; i--) {\n                const 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 = InsertionMode.IN_ROW;\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; i >= 0; i--) {\n            //Insertion mode reset map\n            switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n                case $.TR: {\n                    this.insertionMode = InsertionMode.IN_ROW;\n                    return;\n                }\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    this.insertionMode = InsertionMode.IN_TABLE_BODY;\n                    return;\n                }\n                case $.CAPTION: {\n                    this.insertionMode = InsertionMode.IN_CAPTION;\n                    return;\n                }\n                case $.COLGROUP: {\n                    this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n                    return;\n                }\n                case $.TABLE: {\n                    this.insertionMode = InsertionMode.IN_TABLE;\n                    return;\n                }\n                case $.BODY: {\n                    this.insertionMode = InsertionMode.IN_BODY;\n                    return;\n                }\n                case $.FRAMESET: {\n                    this.insertionMode = InsertionMode.IN_FRAMESET;\n                    return;\n                }\n                case $.SELECT: {\n                    this._resetInsertionModeForSelect(i);\n                    return;\n                }\n                case $.TEMPLATE: {\n                    this.insertionMode = this.tmplInsertionModeStack[0];\n                    return;\n                }\n                case $.HTML: {\n                    this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n                    return;\n                }\n                case $.TD:\n                case $.TH: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_CELL;\n                        return;\n                    }\n                    break;\n                }\n                case $.HEAD: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_HEAD;\n                        return;\n                    }\n                    break;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_BODY;\n    }\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const tn = this.openElements.tagIDs[i];\n                if (tn === $.TEMPLATE) {\n                    break;\n                }\n                else if (tn === $.TABLE) {\n                    this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n                    return;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_SELECT;\n    }\n    //Foster parenting\n    _isElementCausesFosterParenting(tn) {\n        return TABLE_STRUCTURE_TAGS.has(tn);\n    }\n    _shouldFosterParentOnInsertion() {\n        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n    }\n    _findFosterParentingLocation() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            switch (this.openElements.tagIDs[i]) {\n                case $.TEMPLATE: {\n                    if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n                        return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n                    }\n                    break;\n                }\n                case $.TABLE: {\n                    const parent = this.treeAdapter.getParentNode(openElement);\n                    if (parent) {\n                        return { parent, beforeElement: openElement };\n                    }\n                    return { parent: this.openElements.items[i - 1], beforeElement: null };\n                }\n                default:\n                // Do nothing\n            }\n        }\n        return { parent: this.openElements.items[0], beforeElement: null };\n    }\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        }\n        else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n    //Special elements\n    _isSpecialElement(element, id) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        return SPECIAL_ELEMENTS[ns].has(id);\n    }\n    onCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            characterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE: {\n                characterInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                characterInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onNullCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            nullCharacterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onComment(token) {\n        this.skipNextNewLine = false;\n        if (this.currentNotInHTML) {\n            appendComment(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL:\n            case InsertionMode.BEFORE_HTML:\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                appendComment(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                appendCommentToRootHtmlElement(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                appendCommentToDocument(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onDoctype(token) {\n        this.skipNextNewLine = false;\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                doctypeInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD: {\n                this._err(token, ERR.misplacedDoctype);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onStartTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        this._processStartTag(token);\n        if (token.selfClosing && !token.ackSelfClosing) {\n            this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n    /**\n     * Processes a given start tag.\n     *\n     * `onStartTag` checks if a self-closing tag was recognized. When a token\n     * is moved inbetween multiple insertion modes, this check for self-closing\n     * could lead to false positives. To avoid this, `_processStartTag` is used\n     * for nested calls.\n     *\n     * @param token The token to process.\n     */\n    _processStartTag(token) {\n        if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n            startTagInForeignContent(this, token);\n        }\n        else {\n            this._startTagOutsideForeignContent(token);\n        }\n    }\n    _startTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                startTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                startTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                startTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                startTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                startTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                startTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                startTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                startTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                startTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                startTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                startTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                startTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                startTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                startTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                startTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                startTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                startTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                startTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                startTagAfterAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                startTagAfterAfterFrameset(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEndTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        if (this.currentNotInHTML) {\n            endTagInForeignContent(this, token);\n        }\n        else {\n            this._endTagOutsideForeignContent(token);\n        }\n    }\n    _endTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                endTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                endTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                endTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                endTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                endTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                endTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                endTagInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                endTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                endTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                endTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                endTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                endTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                endTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                endTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                endTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                endTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                endTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                endTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                endTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEof(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                eofInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                eofInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                eofInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                stopParsing(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onWhitespaceCharacter(token) {\n        if (this.skipNextNewLine) {\n            this.skipNextNewLine = false;\n            if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n                if (token.chars.length === 1) {\n                    return;\n                }\n                token.chars = token.chars.substr(1);\n            }\n        }\n        if (this.tokenizer.inForeignNode) {\n            this._insertCharacters(token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                whitespaceCharacterInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                whitespaceCharacterInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        }\n        else if (!p.openElements.hasInScope(token.tagID)) {\n            formattingElementEntry = null;\n        }\n    }\n    else {\n        genericEndTagInBody(p, token);\n    }\n    return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n    let idx = p.openElements.stackTop;\n    for (; idx >= 0; idx--) {\n        const element = p.openElements.items[idx];\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n        if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n            furthestBlock = element;\n        }\n    }\n    if (!furthestBlock) {\n        p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n    return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n            p.openElements.remove(element);\n        }\n        else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n    return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n    return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    const tn = p.treeAdapter.getTagName(commonAncestor);\n    const tid = getTagID(tn);\n    if (p._isElementCausesFosterParenting(tid)) {\n        p._fosterParentElement(lastElement);\n    }\n    else {\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n        if (tid === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const { token } = formattingElementEntry;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n        if (!formattingElementEntry) {\n            break;\n        }\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n        if (!furthestBlock) {\n            break;\n        }\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n        p.treeAdapter.detachNode(lastElement);\n        if (commonAncestor)\n            aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n    p.stopped = true;\n    // NOTE: Set end locations for elements that remain on the open element stack.\n    if (token.location) {\n        // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n        // This is a problem, as we might overwrite their end position here.\n        const target = p.fragmentContext ? 0 : 2;\n        for (let i = p.openElements.stackTop; i >= target; i--) {\n            p._setEndLocation(p.openElements.items[i], token);\n        }\n        // Handle `html` and `body`\n        if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n            const htmlElement = p.openElements.items[0];\n            const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n            if (htmlLocation && !htmlLocation.endTag) {\n                p._setEndLocation(htmlElement, token);\n                if (p.openElements.stackTop >= 1) {\n                    const bodyElement = p.openElements.items[1];\n                    const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n                    if (bodyLocation && !bodyLocation.endTag) {\n                        p._setEndLocation(bodyElement, token);\n                    }\n                }\n            }\n        }\n    }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n    const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n    if (!doctype.isConforming(token)) {\n        p._err(token, ERR.nonConformingDoctype);\n    }\n    p.treeAdapter.setDocumentMode(p.document, mode);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n    p._err(token, ERR.missingDoctype, true);\n    p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n    p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagID === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.BEFORE_HEAD;\n    }\n    else {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = InsertionMode.BEFORE_HEAD;\n    p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.HEAD: {\n            p._insertElement(token, NS.HTML);\n            p.headElement = p.openElements.current;\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        default: {\n            tokenBeforeHead(p, token);\n        }\n    }\n}\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement(TN.HEAD, $.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TITLE: {\n            p._switchToTextParsing(token, TokenizerMode.RCDATA);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            }\n            else {\n                p._insertElement(token, NS.HTML);\n                p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n            }\n            break;\n        }\n        case $.NOFRAMES:\n        case $.STYLE: {\n            p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            break;\n        }\n        case $.SCRIPT: {\n            p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n            break;\n        }\n        case $.TEMPLATE: {\n            p._insertTemplate(token);\n            p.activeFormattingElements.insertMarker();\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_TEMPLATE;\n            p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenInHead(p, token);\n        }\n    }\n}\nfunction endTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HEAD: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.AFTER_HEAD;\n            break;\n        }\n        case $.BODY:\n        case $.BR:\n        case $.HTML: {\n            tokenInHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction templateEndTagInHead(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.generateImpliedEndTagsThoroughly();\n        if (p.openElements.currentTagId !== $.TEMPLATE) {\n            p._err(token, ERR.closingOfElementWithOpenChildElements);\n        }\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.AFTER_HEAD;\n    p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.HEAD:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.STYLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            p._err(token, ERR.nestedNoscriptInHead);\n            break;\n        }\n        default: {\n            tokenInHeadNoScript(p, token);\n        }\n    }\n}\nfunction endTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.NOSCRIPT: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        case $.BR: {\n            tokenInHeadNoScript(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenInHeadNoScript(p, token) {\n    const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n    p._err(token, errCode);\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BODY: {\n            p._insertElement(token, NS.HTML);\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_BODY;\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_FRAMESET;\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            p._err(token, ERR.abandonedHeadElementChild);\n            p.openElements.push(p.headElement, $.HEAD);\n            startTagInHead(p, token);\n            p.openElements.remove(p.headElement);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenAfterHead(p, token);\n        }\n    }\n}\nfunction endTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.BODY:\n        case $.HTML:\n        case $.BR: {\n            tokenAfterHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement(TN.BODY, $.BODY);\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n    switch (token.type) {\n        case TokenType.CHARACTER: {\n            characterInBody(p, token);\n            break;\n        }\n        case TokenType.WHITESPACE_CHARACTER: {\n            whitespaceCharacterInBody(p, token);\n            break;\n        }\n        case TokenType.COMMENT: {\n            appendComment(p, token);\n            break;\n        }\n        case TokenType.START_TAG: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TokenType.END_TAG: {\n            endTagInBody(p, token);\n            break;\n        }\n        case TokenType.EOF: {\n            eofInBody(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.IN_FRAMESET;\n    }\n}\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    if (isNumberedHeader(p.openElements.currentTagId)) {\n        p.openElements.pop();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n        p._insertElement(token, NS.HTML);\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n    const tn = token.tagID;\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const elementId = p.openElements.tagIDs[i];\n        if ((tn === $.LI && elementId === $.LI) ||\n            ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n            p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n            p.openElements.popUntilTagNamePopped(elementId);\n            break;\n        }\n        if (elementId !== $.ADDRESS &&\n            elementId !== $.DIV &&\n            elementId !== $.P &&\n            p._isSpecialElement(p.openElements.items[i], elementId)) {\n            break;\n        }\n    }\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n    if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n    const inputType = getTokenAttr(token, ATTRS.TYPE);\n    return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    if (!isHiddenInput(token)) {\n        p.framesetOk = false;\n    }\n    token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n    token.tagName = TN.IMG;\n    token.tagID = $.IMG;\n    areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = TokenizerMode.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode =\n        p.insertionMode === InsertionMode.IN_TABLE ||\n            p.insertionMode === InsertionMode.IN_CAPTION ||\n            p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n            p.insertionMode === InsertionMode.IN_ROW ||\n            p.insertionMode === InsertionMode.IN_CELL\n            ? InsertionMode.IN_SELECT_IN_TABLE\n            : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagId === $.OPTION) {\n        p.openElements.pop();\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    }\n    else {\n        p._insertElement(token, NS.MATHML);\n    }\n    token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    }\n    else {\n        p._insertElement(token, NS.SVG);\n    }\n    token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.I:\n        case $.S:\n        case $.B:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            bStartTagInBody(p, token);\n            break;\n        }\n        case $.A: {\n            aStartTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderStartTagInBody(p, token);\n            break;\n        }\n        case $.P:\n        case $.DL:\n        case $.OL:\n        case $.UL:\n        case $.DIV:\n        case $.DIR:\n        case $.NAV:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.DETAILS:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressStartTagInBody(p, token);\n            break;\n        }\n        case $.LI:\n        case $.DD:\n        case $.DT: {\n            listItemStartTagInBody(p, token);\n            break;\n        }\n        case $.BR:\n        case $.IMG:\n        case $.WBR:\n        case $.AREA:\n        case $.EMBED:\n        case $.KEYGEN: {\n            areaStartTagInBody(p, token);\n            break;\n        }\n        case $.HR: {\n            hrStartTagInBody(p, token);\n            break;\n        }\n        case $.RB:\n        case $.RTC: {\n            rbStartTagInBody(p, token);\n            break;\n        }\n        case $.RT:\n        case $.RP: {\n            rtStartTagInBody(p, token);\n            break;\n        }\n        case $.PRE:\n        case $.LISTING: {\n            preStartTagInBody(p, token);\n            break;\n        }\n        case $.XMP: {\n            xmpStartTagInBody(p, token);\n            break;\n        }\n        case $.SVG: {\n            svgStartTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlStartTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.LINK:\n        case $.META:\n        case $.STYLE:\n        case $.TITLE:\n        case $.SCRIPT:\n        case $.BGSOUND:\n        case $.BASEFONT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.BODY: {\n            bodyStartTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInBody(p, token);\n            break;\n        }\n        case $.NOBR: {\n            nobrStartTagInBody(p, token);\n            break;\n        }\n        case $.MATH: {\n            mathStartTagInBody(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInBody(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInBody(p, token);\n            break;\n        }\n        case $.PARAM:\n        case $.TRACK:\n        case $.SOURCE: {\n            paramStartTagInBody(p, token);\n            break;\n        }\n        case $.IMAGE: {\n            imageStartTagInBody(p, token);\n            break;\n        }\n        case $.BUTTON: {\n            buttonStartTagInBody(p, token);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletStartTagInBody(p, token);\n            break;\n        }\n        case $.IFRAME: {\n            iframeStartTagInBody(p, token);\n            break;\n        }\n        case $.SELECT: {\n            selectStartTagInBody(p, token);\n            break;\n        }\n        case $.OPTION:\n        case $.OPTGROUP: {\n            optgroupStartTagInBody(p, token);\n            break;\n        }\n        case $.NOEMBED: {\n            noembedStartTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            framesetStartTagInBody(p, token);\n            break;\n        }\n        case $.TEXTAREA: {\n            textareaStartTagInBody(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                noembedStartTagInBody(p, token);\n            }\n            else {\n                genericStartTagInBody(p, token);\n            }\n            break;\n        }\n        case $.PLAINTEXT: {\n            plaintextStartTagInBody(p, token);\n            break;\n        }\n        case $.COL:\n        case $.TH:\n        case $.TD:\n        case $.TR:\n        case $.HEAD:\n        case $.FRAME:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.CAPTION:\n        case $.COLGROUP: {\n            // Ignore token\n            break;\n        }\n        default: {\n            genericStartTagInBody(p, token);\n        }\n    }\n}\nfunction bodyEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        //NOTE: <body> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo) {\n            const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n            if (bodyElement) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n}\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        endTagAfterBody(p, token);\n    }\n}\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const { formElement } = p;\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        }\n        else if (formElement) {\n            p.openElements.remove(formElement);\n        }\n    }\n}\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement(TN.P, $.P);\n    }\n    p._closePElement();\n}\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement(TN.BR, $.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n    const tid = token.tagID;\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        const elementId = p.openElements.tagIDs[i];\n        // Compare the tag name here, as the tag might not be a known tag with an ID.\n        if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tid);\n            if (p.openElements.stackTop >= i)\n                p.openElements.shortenToLength(i);\n            break;\n        }\n        if (p._isSpecialElement(element, elementId)) {\n            break;\n        }\n    }\n}\nfunction endTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.A:\n        case $.B:\n        case $.I:\n        case $.S:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.NOBR:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            callAdoptionAgency(p, token);\n            break;\n        }\n        case $.P: {\n            pEndTagInBody(p);\n            break;\n        }\n        case $.DL:\n        case $.UL:\n        case $.OL:\n        case $.DIR:\n        case $.DIV:\n        case $.NAV:\n        case $.PRE:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.BUTTON:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.DETAILS:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.LISTING:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressEndTagInBody(p, token);\n            break;\n        }\n        case $.LI: {\n            liEndTagInBody(p);\n            break;\n        }\n        case $.DD:\n        case $.DT: {\n            ddEndTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderEndTagInBody(p);\n            break;\n        }\n        case $.BR: {\n            brEndTagInBody(p);\n            break;\n        }\n        case $.BODY: {\n            bodyEndTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlEndTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formEndTagInBody(p);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletEndTagInBody(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            genericEndTagInBody(p, token);\n        }\n    }\n}\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStack.length > 0) {\n        eofInTemplate(p, token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    var _a;\n    if (token.tagID === $.SCRIPT) {\n        (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n    }\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n    p._err(token, ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n        p.pendingCharacterTokens.length = 0;\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                characterInTableText(p, token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                whitespaceCharacterInTableText(p, token);\n                break;\n            }\n            // Ignore null\n        }\n    }\n    else {\n        tokenInTable(p, token);\n    }\n}\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n    startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.TBODY, $.TBODY);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n    startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n}\nfunction inputStartTagInTable(p, token) {\n    if (isHiddenInput(token)) {\n        p._appendElement(token, NS.HTML);\n    }\n    else {\n        tokenInTable(p, token);\n    }\n    token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\nfunction startTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            tdStartTagInTable(p, token);\n            break;\n        }\n        case $.STYLE:\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            colStartTagInTable(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInTable(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInTable(p, token);\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            tbodyStartTagInTable(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInTable(p, token);\n            break;\n        }\n        case $.CAPTION: {\n            captionStartTagInTable(p, token);\n            break;\n        }\n        case $.COLGROUP: {\n            colgroupStartTagInTable(p, token);\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction endTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TABLE)) {\n                p.openElements.popUntilTagNamePopped($.TABLE);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n    p.fosterParentingEnabled = true;\n    // Process token in `In Body` mode\n    modeInBody(p, token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n    let i = 0;\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    }\n    else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCaption(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.CAPTION:\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.CAPTION)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped($.CAPTION);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                if (tn === $.TABLE) {\n                    endTagInTable(p, token);\n                }\n            }\n            break;\n        }\n        case $.BODY:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.COL: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction endTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.COLGROUP: {\n            if (p.openElements.currentTagId === $.COLGROUP) {\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagId === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = InsertionMode.IN_TABLE;\n        p._processToken(token);\n    }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_ROW;\n            break;\n        }\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertFakeElement(TN.TR, $.TR);\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                startTagInTable(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagID;\n    switch (token.tagID) {\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                endTagInTable(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableRowContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_CELL;\n            p.activeFormattingElements.insertMarker();\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                startTagInTableBody(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH: {\n            // Ignore end tag\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            startTagInRow(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCell(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.TD:\n        case $.TH: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(tn);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_ROW;\n            }\n            break;\n        }\n        case $.TABLE:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p._closeTableCell();\n                endTagInRow(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.OPTGROUP: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.INPUT:\n        case $.KEYGEN:\n        case $.TEXTAREA:\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n                if (token.tagID !== $.SELECT) {\n                    p._processStartTag(token);\n                }\n            }\n            break;\n        }\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.OPTGROUP: {\n            if (p.openElements.stackTop > 0 &&\n                p.openElements.currentTagId === $.OPTION &&\n                p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n    else {\n        startTagInSelect(p, token);\n    }\n}\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p.onEndTag(token);\n        }\n    }\n    else {\n        endTagInSelect(p, token);\n    }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    switch (token.tagID) {\n        // First, handle tags that can start without a mode change\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        // Re-process the token in the appropriate mode\n        case $.CAPTION:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n            break;\n        }\n        case $.COL: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n            p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n            startTagInColumnGroup(p, token);\n            break;\n        }\n        case $.TR: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n            p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            startTagInTableBody(p, token);\n            break;\n        }\n        case $.TD:\n        case $.TH: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        default: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n            p.insertionMode = InsertionMode.IN_BODY;\n            startTagInBody(p, token);\n        }\n    }\n}\nfunction endTagInTemplate(p, token) {\n    if (token.tagID === $.TEMPLATE) {\n        templateEndTagInHead(p, token);\n    }\n}\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n        p.onEof(token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction endTagAfterBody(p, token) {\n    var _a;\n    if (token.tagID === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n        }\n        //NOTE: <html> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n            p._setEndLocation(p.openElements.items[0], token);\n            // Update the body element, if it doesn't have an end tag\n            const bodyElement = p.openElements.items[1];\n            if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.FRAME: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInFrameset(p, token) {\n    if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n        if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n            p.insertionMode = InsertionMode.AFTER_FRAMESET;\n        }\n    }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagID === $.HTML) {\n        p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n    }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterAfterBody(p, token);\n    }\n}\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n    while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n        !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n        p.openElements.pop();\n    }\n}\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token)) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._startTagOutsideForeignContent(token);\n    }\n    else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        }\n        else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n        foreignContent.adjustTokenXMLAttrs(token);\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        }\n        else {\n            p._insertElement(token, currentNs);\n        }\n        token.ackSelfClosing = true;\n    }\n}\nfunction endTagInForeignContent(p, token) {\n    if (token.tagID === $.P || token.tagID === $.BR) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._endTagOutsideForeignContent(token);\n        return;\n    }\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._endTagOutsideForeignContent(token);\n            break;\n        }\n        const tagName = p.treeAdapter.getTagName(element);\n        if (tagName.toLowerCase() === token.tagName) {\n            //NOTE: update the token tag name for `_setEndLocation`.\n            token.tagName = tagName;\n            p.openElements.shortenToLength(i);\n            break;\n        }\n    }\n}\n//# sourceMappingURL=index.js.map","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n    $.AREA,\n    $.BASE,\n    $.BASEFONT,\n    $.BGSOUND,\n    $.BR,\n    $.COL,\n    $.EMBED,\n    $.FRAME,\n    $.HR,\n    $.IMG,\n    $.INPUT,\n    $.KEYGEN,\n    $.LINK,\n    $.META,\n    $.PARAM,\n    $.SOURCE,\n    $.TRACK,\n    $.WBR,\n]);\nfunction isVoidElement(node, options) {\n    return (options.treeAdapter.isElementNode(node) &&\n        options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n        VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    if (isVoidElement(node, opts)) {\n        return '';\n    }\n    return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n    let html = '';\n    // Get container of the child nodes\n    const container = options.treeAdapter.isElementNode(parentNode) &&\n        options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n        options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n        ? options.treeAdapter.getTemplateContent(parentNode)\n        : parentNode;\n    const childNodes = options.treeAdapter.getChildNodes(container);\n    if (childNodes) {\n        for (const currentNode of childNodes) {\n            html += serializeNode(currentNode, options);\n        }\n    }\n    return html;\n}\nfunction serializeNode(node, options) {\n    if (options.treeAdapter.isElementNode(node)) {\n        return serializeElement(node, options);\n    }\n    if (options.treeAdapter.isTextNode(node)) {\n        return serializeTextNode(node, options);\n    }\n    if (options.treeAdapter.isCommentNode(node)) {\n        return serializeCommentNode(node, options);\n    }\n    if (options.treeAdapter.isDocumentTypeNode(node)) {\n        return serializeDocumentTypeNode(node, options);\n    }\n    // Return an empty string for unknown nodes\n    return '';\n}\nfunction serializeElement(node, options) {\n    const tn = options.treeAdapter.getTagName(node);\n    return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n    let html = '';\n    for (const attr of treeAdapter.getAttrList(node)) {\n        html += ' ';\n        if (!attr.namespace) {\n            html += attr.name;\n        }\n        else\n            switch (attr.namespace) {\n                case NS.XML: {\n                    html += `xml:${attr.name}`;\n                    break;\n                }\n                case NS.XMLNS: {\n                    if (attr.name !== 'xmlns') {\n                        html += 'xmlns:';\n                    }\n                    html += attr.name;\n                    break;\n                }\n                case NS.XLINK: {\n                    html += `xlink:${attr.name}`;\n                    break;\n                }\n                default: {\n                    html += `${attr.prefix}:${attr.name}`;\n                }\n            }\n        html += `=\"${escapeAttribute(attr.value)}\"`;\n    }\n    return html;\n}\nfunction serializeTextNode(node, options) {\n    const { treeAdapter } = options;\n    const content = treeAdapter.getTextNodeContent(node);\n    const parent = treeAdapter.getParentNode(node);\n    const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n    return parentTn &&\n        treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n        hasUnescapedText(parentTn, options.scriptingEnabled)\n        ? content\n        : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n    return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n    return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceMappingURL=index.js.map","import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\n/** @internal */\nexport * as html from './common/html.js';\n/** @internal */\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n    return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n    if (typeof fragmentContext === 'string') {\n        options = html;\n        html = fragmentContext;\n        fragmentContext = null;\n    }\n    const parser = Parser.getFragmentParser(fragmentContext, options);\n    parser.tokenizer.write(html, true);\n    return parser.getFragment();\n}\n//# sourceMappingURL=index.js.map","import { html } from 'parse5';\nimport { Element, Document, ProcessingInstruction, Comment, Text, isDirective, isText, isComment, isTag, } from 'domhandler';\nfunction createTextNode(value) {\n    return new Text(value);\n}\nfunction enquoteDoctypeId(id) {\n    const quote = id.includes('\"') ? \"'\" : '\"';\n    return quote + id + quote;\n}\n/** @internal */\nexport function serializeDoctypeContent(name, publicId, systemId) {\n    let str = '!DOCTYPE ';\n    if (name) {\n        str += name;\n    }\n    if (publicId) {\n        str += ` PUBLIC ${enquoteDoctypeId(publicId)}`;\n    }\n    else if (systemId) {\n        str += ' SYSTEM';\n    }\n    if (systemId) {\n        str += ` ${enquoteDoctypeId(systemId)}`;\n    }\n    return str;\n}\nexport const adapter = {\n    // Re-exports from domhandler\n    isCommentNode: isComment,\n    isElementNode: isTag,\n    isTextNode: isText,\n    //Node construction\n    createDocument() {\n        const node = new Document([]);\n        node['x-mode'] = html.DOCUMENT_MODE.NO_QUIRKS;\n        return node;\n    },\n    createDocumentFragment() {\n        return new Document([]);\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        const attribs = Object.create(null);\n        const attribsNamespace = Object.create(null);\n        const attribsPrefix = Object.create(null);\n        for (let i = 0; i < attrs.length; i++) {\n            const attrName = attrs[i].name;\n            attribs[attrName] = attrs[i].value;\n            attribsNamespace[attrName] = attrs[i].namespace;\n            attribsPrefix[attrName] = attrs[i].prefix;\n        }\n        const node = new Element(tagName, attribs, []);\n        node.namespace = namespaceURI;\n        node['x-attribsNamespace'] = attribsNamespace;\n        node['x-attribsPrefix'] = attribsPrefix;\n        return node;\n    },\n    createCommentNode(data) {\n        return new Comment(data);\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        const prev = parentNode.children[parentNode.children.length - 1];\n        if (prev) {\n            prev.next = newNode;\n            newNode.prev = prev;\n        }\n        parentNode.children.push(newNode);\n        newNode.parent = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.children.indexOf(referenceNode);\n        const { prev } = referenceNode;\n        if (prev) {\n            prev.next = newNode;\n            newNode.prev = prev;\n        }\n        referenceNode.prev = newNode;\n        newNode.next = referenceNode;\n        parentNode.children.splice(insertionIdx, 0, newNode);\n        newNode.parent = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        adapter.appendChild(templateElement, contentElement);\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.children[0];\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const data = serializeDoctypeContent(name, publicId, systemId);\n        let doctypeNode = document.children.find((node) => isDirective(node) && node.name === '!doctype');\n        if (doctypeNode) {\n            doctypeNode.data = data !== null && data !== void 0 ? data : null;\n        }\n        else {\n            doctypeNode = new ProcessingInstruction('!doctype', data);\n            adapter.appendChild(document, doctypeNode);\n        }\n        doctypeNode['x-name'] = name !== null && name !== void 0 ? name : undefined;\n        doctypeNode['x-publicId'] = publicId !== null && publicId !== void 0 ? publicId : undefined;\n        doctypeNode['x-systemId'] = systemId !== null && systemId !== void 0 ? systemId : undefined;\n    },\n    setDocumentMode(document, mode) {\n        document['x-mode'] = mode;\n    },\n    getDocumentMode(document) {\n        return document['x-mode'];\n    },\n    detachNode(node) {\n        if (node.parent) {\n            const idx = node.parent.children.indexOf(node);\n            const { prev, next } = node;\n            node.prev = null;\n            node.next = null;\n            if (prev) {\n                prev.next = next;\n            }\n            if (next) {\n                next.prev = prev;\n            }\n            node.parent.children.splice(idx, 1);\n            node.parent = null;\n        }\n    },\n    insertText(parentNode, text) {\n        const lastChild = parentNode.children[parentNode.children.length - 1];\n        if (lastChild && isText(lastChild)) {\n            lastChild.data += text;\n        }\n        else {\n            adapter.appendChild(parentNode, createTextNode(text));\n        }\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1];\n        if (prevNode && isText(prevNode)) {\n            prevNode.data += text;\n        }\n        else {\n            adapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        for (let i = 0; i < attrs.length; i++) {\n            const attrName = attrs[i].name;\n            if (typeof recipient.attribs[attrName] === 'undefined') {\n                recipient.attribs[attrName] = attrs[i].value;\n                recipient['x-attribsNamespace'][attrName] = attrs[i].namespace;\n                recipient['x-attribsPrefix'][attrName] = attrs[i].prefix;\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.children[0];\n    },\n    getChildNodes(node) {\n        return node.children;\n    },\n    getParentNode(node) {\n        return node.parent;\n    },\n    getAttrList(element) {\n        return element.attributes;\n    },\n    //Node data\n    getTagName(element) {\n        return element.name;\n    },\n    getNamespaceURI(element) {\n        return element.namespace;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.data;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        var _a;\n        return (_a = doctypeNode['x-name']) !== null && _a !== void 0 ? _a : '';\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        var _a;\n        return (_a = doctypeNode['x-publicId']) !== null && _a !== void 0 ? _a : '';\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        var _a;\n        return (_a = doctypeNode['x-systemId']) !== null && _a !== void 0 ? _a : '';\n    },\n    //Node types\n    isDocumentTypeNode(node) {\n        return isDirective(node) && node.name === '!doctype';\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        if (location) {\n            node.startIndex = location.startOffset;\n            node.endIndex = location.endOffset;\n        }\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        if (endLocation.endOffset != null)\n            node.endIndex = endLocation.endOffset;\n        node.sourceCodeLocation = {\n            ...node.sourceCodeLocation,\n            ...endLocation,\n        };\n    },\n};\n//# sourceMappingURL=index.js.map",null,null,null,null,null,"import type { VueRenderer } from '@storybook/vue3'\nimport { wrappedTemplate, SLOTS_CATEGORY_NAME } from './utils'\nimport type { PreparedStory } from '@storybook/types'\nimport { load } from \"cheerio\";\n\nexport const makeDefaultSlots = <TName extends Readonly<string>>(slotNames: TName[]) =>\nslotNames.reduce((acc, name) => ({ ...acc, [name]: `{{ args.${name} }}` as const }), {} as Record<TName, string>)\n\nexport const slot = <TDesc extends Readonly<string>>(description: TDesc) => ({\n  description,\n  control: 'text',\n  table: {\n    category: SLOTS_CATEGORY_NAME,\n    type: {\n      summary: 'html',\n    },\n  },\n} as const)\n\n// TODO: Remove string manipulations in favour of AST manipulation (cheerio)\nexport default (code: string, { component, argTypes, parameters }: PreparedStory<VueRenderer>) => {\n\n  const $ = load(code, {\n    xml: {\n      xmlMode: true,\n      lowerCaseAttributeNames: false,\n      lowerCaseTags: false,\n      decodeEntities: false\n    }\n  }, false);\n\n  const componentName = component?.__name || (component as {name: string}).name\n\n  const componentEl = $(componentName);\n\n  const slots = Object.keys(argTypes).filter(key => argTypes[key].table?.category === SLOTS_CATEGORY_NAME);\n\n  const templates = Object.entries(parameters.slots || {}).reduce((acc, [key, val]) => ({ ...acc, [key]: typeof val === 'object' && val.template !== undefined ? val.template :  `{{ args.${key} }}` }), {} as Record<string, string>)\n\n  const slotArgs = getSlotArgs(code)\n\n  // TODO: consider multi-word slot names and kebab-case\n  const slotTemplates = {\n    ...makeDefaultSlots(slots),\n    ...templates\n  };\n\n  const children = componentEl.contents().filter((i, el) => el.type === 'tag' && el.name === 'template' || el.type === 'text' )\n  children.remove()\n\n  Object.entries(slotTemplates).forEach(([key, template]) => {\n\n    const templateWithArgs = renderArgs(template, slotArgs)\n\n    componentEl.append(wrappedTemplate(templateWithArgs, key))\n  });\n\n  // console.log({code, slots, templates, slotArgs, slotTemplates, children})\n\n  const generatedCode = $.html({\n    lowerCaseAttributeNames: false,\n    lowerCaseTags: false,\n    xmlMode: false,\n    recognizeSelfClosing: true\n  });\n\n  return generatedCode\n}\n\nexport const renderArgs = (template: string, args: Record<string, string>) => {\n  const handlebarsRegex = /\\{\\{\\s*'(.*)'\\s*\\}\\}/gmiu\n  const propRegex = /:(.*)=\"'(.*)'\"/gmiu\n\n  const withArgs = Object.entries(args).reduce((acc, [key, val]) => acc.replaceAll(`args.${key}`, `'${val}'`), template)\n  \n  const withoutOtherArgPlaceholders = withArgs.replace(/\\{\\{(\\s*)args.(.*)\\}\\}/gmiu, '')\n  \n  const withFixedProp = withoutOtherArgPlaceholders.replaceAll(propRegex, '$1=\"$2\"')\n  \n  const withFixedHandlebars = withFixedProp.replaceAll(handlebarsRegex, '$1')\n  \n  return withFixedHandlebars\n}\n\nexport const getSlotArgs = (code: string) => {\n  const slotRegex = /<template #(.*)>\"(.*)\"<\\/template>/gmiu\n\n  const matches = [...code.matchAll(slotRegex)]\n\n  const args = matches.reduce((acc, [_, slotName, arg]) => ({ ...acc, [slotName]: arg }), {} as Record<string, string>)\n\n  \n  if(args.default === undefined){\n\n    const codeWithoutSlots = code.replaceAll(slotRegex, '')\n\n    const defaultRegex = /<template>(\\n*)(\\s*)<(.*)>(\\n*)(\\s*)(.*)\"(.*)\"/gmiu\n\n    const defaultMatch = [...codeWithoutSlots.matchAll(defaultRegex)]\n\n    const value = defaultMatch[0]?.[defaultMatch[0]?.length - 1]\n\n    if(value !== undefined){\n      return {\n        ...args,\n        default: value\n      }\n    }\n  }\n\n  return args\n}","import type { ProjectAnnotations, ArgTypesEnhancer, StrictInputType, ArgsEnhancer, Args } from \"@storybook/types\";\nimport { Decorator, type VueRenderer } from \"@storybook/vue3\"\nimport type { ConcreteComponent } from \"vue\"\nimport renderWithSlots from './render'\nimport transform from './source'\nimport { SLOTS_CATEGORY_NAME } from './utils'\n\nconst withSlots: Decorator = (story, { component, parameters }) => {\n\n  const slots = Object.keys(parameters.slots || {}).reduce((acc, key) => ({ ...acc, [key]: String }), {})\n\n  const cmp = component as ConcreteComponent<any> | undefined\n\n  if(cmp)\n  cmp.props = {\n    ...cmp.props,\n    ...slots\n  }\n\n  return {\n    components: { story },\n    setup(props) {\n      return { story, props }\n    },\n    template: '<story v-bind=\"props\" />'\n  }\n}\n\nconst convertSlotArgTypes: ArgTypesEnhancer<VueRenderer, Args> = (context) => {\n\n  if (!context.parameters.slots) return context.argTypes\n\n  const slots = context.parameters.slots\n  const slotNames = Object.keys(slots)\n\n  const slotArgTypes = slotNames.reduce((acc, slotName) => {\n    const slot = slots[slotName]\n    const slotArgType = {\n      ...context.argTypes[slotName],\n      name: slotName,\n      // control: 'text',\n      description: typeof slot === 'string' ? slot : slot.description,\n      table: {\n        ...context.argTypes[slotName]?.table,\n        category: SLOTS_CATEGORY_NAME,\n        defaultValue: null,\n        jsDocTags: undefined,\n        type: {\n          ...context.argTypes[slotName]?.table?.type,\n          detail: undefined,\n          summary: 'html'\n        }\n      },\n      type: {\n        ...context.argTypes[slotName]?.type,\n        required: undefined,\n        name: 'string'\n      }\n    } as StrictInputType\n\n    return {\n      ...acc,\n      [slotName]: slotArgType\n    }\n  }, {} as Record<string, StrictInputType>)\n\n  const argTypes = {\n    ...context.argTypes,\n    ...slotArgTypes\n  }\n\n  return argTypes\n}\n\nconst convertSlotArgs: ArgsEnhancer<VueRenderer, Args> = (context) => {\n  return context.initialArgs\n}\n\nconst preview: ProjectAnnotations<VueRenderer> = {\n  decorators: [withSlots],\n  render: renderWithSlots(),\n  argTypesEnhancers: [convertSlotArgTypes],\n  argsEnhancers: [convertSlotArgs],\n  parameters: {\n    docs: {\n      source: {\n        language: 'html',\n        transform\n      }\n    }\n  },\n};\n\nexport default preview;\n"]}