{"version":3,"names":["Object","defineProperty","decodeDataHtml","value","Uint16Array","split","map","c","charCodeAt","decodeDataXml","_a","exports","replaceCodePoint","fromCodePoint","decodeMap","Map","String","codePoint","output","fromCharCode","get","decodeCodePoint","default","__createBinding","this","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__setModuleDefault","v","__importStar","mod","result","prototype","hasOwnProperty","call","__importDefault","decodeXML","decodeHTMLStrict","decodeHTMLAttribute","decodeHTML","determineBranch","EntityDecoder","DecodingMode","BinTrieFlags","xmlDecodeTree","htmlDecodeTree","decode_data_html_js_1","require$$0","decode_data_xml_js_1","require$$1","decode_codepoint_js_1","require$$2","decode_codepoint_js_2","CharCodes","TO_LOWER_BIT","isNumber","code","ZERO","NINE","isHexadecimalCharacter","UPPER_A","UPPER_F","LOWER_A","LOWER_F","isAsciiAlphaNumeric","UPPER_Z","LOWER_Z","isEntityInAttributeInvalidEnd","EQUALS","EntityDecoderState","decodeTree","emitCodePoint","errors","state","EntityStart","consumed","treeIndex","excess","decodeMode","Strict","startEntity","write","str","offset","NUM","NumericStart","stateNumericStart","NamedEntity","stateNamedEntity","NumericDecimal","stateNumericDecimal","NumericHex","stateNumericHex","length","LOWER_X","addToNumericResult","start","end","base","digitCount","Math","pow","parseInt","substr","startIdx","char","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","SEMI","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","current","valueLength","VALUE_LENGTH","max","Attribute","emitNotTerminatedNamedEntity","emitNamedEntityData","_b","getDecoder","ret","decoder","decodeWithTrie","lastIndex","indexOf","slice","len","nodeIdx","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","mid","midVal","htmlDecoder","xmlDecoder","mode","Legacy","State","isWhitespace","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","Zero","Nine","isASCIIAlpha","LowerA","LowerZ","UpperA","UpperZ","isHexDigit","UpperF","LowerF","QuoteType","Sequences","Cdata","Uint8Array","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","Tokenizer","constructor","xmlMode","decodeEntities","cbs","Text","buffer","sectionStart","index","baseState","isSpecial","running","currentSequence","sequenceIndex","trieIndex","trieCurrent","entityResult","entityExcess","entityTrie","reset","chunk","parse","finish","pause","resume","getIndex","getSectionStart","stateText","Lt","fastForwardTo","ontext","BeforeTagName","Amp","BeforeEntity","stateSpecialStartSequence","isEnd","isMatch","InTagName","stateInTagName","stateInSpecialTag","endOfText","actualIndex","stateInClosingTagName","Number","stateCDATASequence","InCommentLike","InDeclaration","stateInDeclaration","stateInCommentLike","oncdata","oncomment","isTagStartChar","startSpecial","sequence","SpecialStartSequence","stateBeforeTagName","ExclamationMark","BeforeDeclaration","Questionmark","InProcessingInstruction","lower","BeforeSpecialS","BeforeClosingTagName","onopentagname","BeforeAttributeName","stateBeforeAttributeName","stateBeforeClosingTagName","InClosingTagName","InSpecialComment","onclosetag","AfterClosingTagName","stateAfterClosingTagName","onopentagend","InSpecialTag","InSelfClosingTag","InAttributeName","stateInSelfClosingTag","onselfclosingtag","stateInAttributeName","Eq","onattribname","AfterAttributeName","stateAfterAttributeName","BeforeAttributeValue","onattribend","NoValue","stateBeforeAttributeValue","DoubleQuote","InAttributeValueDq","SingleQuote","InAttributeValueSq","InAttributeValueNq","stateInAttributeValueNoQuotes","handleInAttributeValue","quote","onattribdata","Double","Single","stateInAttributeValueDoubleQuotes","stateInAttributeValueSingleQuotes","Unquoted","stateBeforeDeclaration","OpeningSquareBracket","CDATASequence","Dash","BeforeComment","ondeclaration","stateInProcessingInstruction","onprocessinginstruction","stateBeforeComment","stateInSpecialComment","stateBeforeSpecialS","stateBeforeEntity","BeforeNumericEntity","InNamedEntity","stateInNamedEntity","emitNamedEntity","masked","allowLegacyEntity","Semi","entityStart","emitPartial","stateBeforeNumericEntity","LowerX","InHexEntity","InNumericEntity","stateInNumericEntity","strict","numberStart","stateInHexEntity","cleanup","shouldContinue","handleTrailingData","onend","endIndex","cp","onattribentity","ontextentity","formTags","Set","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","Parser","options","_c","_d","_e","startIndex","openTagStart","tagname","attribname","attribvalue","attribs","stack","foreignContext","buffers","bufferOffset","writeIndex","ended","lowerCaseTagNames","lowerCaseTags","lowerCaseAttributeNames","tokenizer","onparserinit","data","getSlice","isVoidElement","name","has","toLowerCase","emitOpenTag","impliesClose","element","pop","push","onopentag","endOpenTag","isImplied","_f","pos","lastIndexOf","count","closeCurrentTag","recognizeSelfClosing","isOpenImplied","onattribute","getInstructionName","search","oncommentend","_g","_h","_j","_k","recognizeCDATA","oncdatastart","oncdataend","onreset","parseComplete","shiftBuffer","shift","onerror","Error","parseChunk","done","ElementType","isTag","elem","type","Tag","Script","Style","Root","Directive","Comment","CDATA","Doctype","Node","parent","prev","next","parentNode","previousSibling","nextSibling","cloneNode","recursive","DataNode","super","nodeValue","arguments","nodeType","ProcessingInstruction","NodeWithChildren","children","firstChild","lastChild","childNodes","Document","Element","tagName","attributes","keys","namespace","prefix","node","isTagRaw","isCDATA","isText","isComment","isDirective","isDocument","hasChildren","cloneChildren","clone","forEach","child","instruction","sourceCodeLocation","childs","i","defaultOpts","withStartIndices","withEndIndices","DomHandler","callback","elementCB","dom","root","tagStack","lastNode","parser","handleCallback","error","addNode","text","xmlReplacer","xmlCodeMap","getCodePoint","codePointAt","encodeXML","lastIdx","match","exec","substring","toString","getEscaper","regex","escape","escapeAttribute","escapeText","elementNames","val","attributeNames","unencodedElements","replaceQuotes","replace","formatAttributes","opts","encode","encodeEntities","key","emptyAttrs","join","singleTag","render","nodes","renderNode","ElementType.Root","ElementType.Doctype","ElementType.Directive","renderDirective","ElementType.Comment","renderComment","ElementType.CDATA","renderCdata","ElementType.Script","ElementType.Style","ElementType.Tag","renderTag","ElementType.Text","renderText","foreignModeIntegrationPoints","foreignElements","tag","selfClosingTags","getOuterHTML","renderHTML","getInnerHTML","getText","Array","isArray","textContent","innerText","getChildren","getParent","getSiblings","siblings","unshift","getAttributeValue","hasAttrib","getName","nextElementSibling","prevElementSibling","removeElement","childsIndex","splice","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","filter","test","recurse","limit","Infinity","find","nodeStack","indexStack","findOneChild","findOne","existsOne","some","checked","findAll","Checks","tag_name","tag_type","tag_contains","getAttribCheck","attrib","combineFuncs","a","b","compileTest","funcs","reduce","testElement","getElements","getElementById","id","getElementsByTagName","getElementsByTagType","removeSubsets","idx","ancestor","includes","DocumentPosition","compareDocumentPosition","nodeA","nodeB","aParents","bParents","maxIdx","min","DISCONNECTED","sharedParent","aSibling","bSibling","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","uniqueSort","arr","sort","relative","getFeed","doc","feedRoot","getOneElement","isValidFeed","getAtomFeed","getRssFeed","feed","items","item","entry","media","getMediaElements","addConditionally","href","link","description","fetch","pubDate","Date","updated","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","medium","isDefault","expression","trim","obj","prop","parseDocument","handler","parseDOM","createDomStream","elementCallback","parseFeedDefaultOptions","parseFeed","escapeStringRegexp","string","TypeError","isObject","isPlainObject","ctor","prot","isMergeableObject","isNonNullObject","stringValue","isReactElement","canUseSymbol","Symbol","for","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","target","source","concat","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","getOwnPropertySymbols","symbol","propertyIsEnumerable","getKeys","propertyIsOnObject","object","property","_","propertyIsUnsafe","mergeObject","destination","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","all","deepmergeAll","array","deepmerge_1","cjs","factory","module","parseSrcset","input","isSpace","collectCharacters","regEx","chars","inputLength","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","url","descriptors","currentDescriptor","candidates","parseDescriptors","tokenize","charAt","pError","w","d","h","candidate","lastChar","intVal","floatVal","parseFloat","console","log","process","global","x","isColorSupported","bold","dim","italic","underline","inverse","hidden","strikethrough","black","red","green","yellow","blue","magenta","cyan","white","gray","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","picocolors_browserModule","pico","terminalHighlight","CssSyntaxError","message","line","column","file","plugin","reason","endLine","endColumn","setMessage","captureStackTrace","showSourceCode","color","css","lines","maxWidth","mark","aside","createColors","number","gutter","spacing","cssSyntaxError","DEFAULT_RAW","after","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","colon","commentLeft","commentRight","emptyBody","indent","semicolon","capitalize","toUpperCase","Stringifier","builder","atrule","params","rawValue","raws","afterName","block","between","beforeAfter","detect","raw","buf","depth","step","body","last","before","stringify","comment","left","right","decl","important","document","own","first","rawCache","method","walk","rawBeforeClose","rawBeforeComment","walkComments","rawBeforeDecl","walkDecls","rawBeforeOpen","rawBeforeRule","rawColon","rawEmptyBody","rawIndent","p","parts","rawSemicolon","rule","ownSemicolon","stringifier","stringify_1","isClean","my","require$$3","cloned","j","defaults","addToError","postcssNode","s","from","add","insertAfter","assign","overrides","insertBefore","cleanRaws","keepBetween","cloneAfter","cloneBefore","rangeBy","getProxyProcessor","toProxy","set","markDirty","positionBy","stringRepresentation","positionInside","word","defaultType","remove","removeChild","replaceWith","bookmark","foundSelf","toJSON","inputs","fixed","emitInputs","inputsNextIndex","inputId","proxyCache","Proxy","warn","proxyOf","node_1","Declaration","variable","startsWith","declaration","global$1","self","window","lookup","revLookup","Arr","inited","init","toByteArray","b64","l","tmp","placeHolders","L","tripletToBase64","num","encodeChunk","uint8","fromByteArray","extraBytes","maxChunkLength","len2","read","isLE","mLen","nBytes","e","eLen","eMax","eBias","nBits","NaN","rt","abs","isNaN","floor","LN2","INSPECT_MAX_BYTES","Buffer","TYPED_ARRAY_SUPPORT","kMaxLength","createBuffer","that","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","poolSize","_augment","ArrayBuffer","fromArrayBuffer","fromString","fromObject","assertSize","size","alloc","fill","encoding","allocUnsafeSlow","isEncoding","byteLength","actual","fromArrayLike","byteOffset","internalIsBuffer","copy","isnan","isBuffer","_isBuffer","compare","y","list","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","swap16","swap32","swap64","apply","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","_arr","res","firstByte","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","out","toHex","bytes","newBuf","subarray","sliceLen","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","src","dst","isFastBuffer","isSlowBuffer","urlAlphabet","customAlphabet","alphabet","defaultSize","random","nanoid","SourceMapConsumer","SourceMapGenerator","existsSync","readFileSync","dirname","fromBase64","atob","PreviousMap","loadAnnotation","inline","startWith","annotation","loadMap","mapFile","consumer","consumerCache","decodeInline","baseCharsetUri","baseUri","charsetUri","uri","decodeURIComponent","RegExp","lastMatch","getAnnotationURL","sourceMapString","isMap","mappings","_mappings","sections","comments","loadFile","path","prevPath","fromSourceMap","JSON","withContent","sourcesContent","previousMap","fileURLToPath","pathToFileURL","isAbsolute","resolve","require$$4","require$$5","require$$6","fromOffsetCache","sourceMapAvailable","Boolean","pathAvailable","Input","hasBOM","mapResolve","fromOffset","col","origin","lastLine","lineToIndex","prevIndex","sourceRoot","originalPositionFor","to","fromUrl","URL","protocol","sourceContentFor","json","registerInput","sep","MapGenerator","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","memoizedPaths","memoizedURLs","addAnnotation","content","isInline","toBase64","outputFile","eol","applyPrevMaps","previous","toUrl","applySourceMap","clearAnnotation","generate","generateMap","generateString","addMapping","generated","original","isSourcesContent","setSourcesContent","isAnnotation","noSource","mapping","sourcePath","childless","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","encodeURIComponent","fileURL","encodeURI","mapGenerator","Rule","AtRule","cleanSource","markDirtyUp","Container","normalize","each","iterator","getIterator","indexes","every","condition","lastEach","args","cb","other","exist","existIndex","reverse","sample","selector","processed","rebuild","removeAll","replaceValues","pattern","props","fast","walkAtRules","walkRules","registerParse","dependant","registerRule","registerAtRule","registerRoot","container","setPrototypeOf","LazyResult","Processor","toResult","lazy","registerLazyResult","registerProcessor","Warning","range","opt","warning","Result","processor","messages","lastPlugin","postcssPlugin","warnings","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","valueOf","ignore","ignoreErrors","escaped","escapePos","currentToken","returned","position","unclosed","what","endOfFile","nextToken","ignoreUnclosed","controlChar","back","token","atRule","comma","space","spaces","separators","func","inQuote","prevQuote","letter","list_1","selectors","values","SAFE_COMMENT_NEIGHBOR","empty","findLastWithPosition","tokens","createTokenizer","unnamedAtrule","open","brackets","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","checkMissedSemicolon","founded","entries","doubleColon","customProperty","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","cache","hasWord","emptyRule","unexpectedClose","endFile","unclosedBlock","freeSemicolon","bracket","unclosedBracket","clean","lastTokenType","parse_1","require$$7","require$$8","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","prepare","RootExit","RuleExit","NOT_VISITORS","CHILDREN","isPromise","then","getEvents","toStack","events","eventIndex","visitorIndex","visitors","cleanMarks","postcss","stringified","syntax","helpers","plugins","async","Promise","reject","processing","runAsync","onRejected","catch","onFinally","getAsyncError","handleError","err","prepareVisitors","listeners","event","version","hasListener","promise","runOnRoot","visitTick","visitor","roots","subRoot","sync","walkSync","visitSync","onFulfilled","visit","toStringTag","registerPostcss","lazyResult","NoWorkResult","_processor","_css","_opts","_map","generatedCSS","generatedMap","_root","noWorkResult","normalized","use","fromJSON","ownInputs","inputHydrated","fromJSON_1","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","initializer","warningPrinted","creator","env","LANG","transformer","postcssVersion","processOpts","pluginOpts","postcss_1","htmlparser","postcssParse","mediaTags","vulnerableTags","isEmptyObject","stringifySrcset","parsedSrcset","part","sanitizeHtml_1","sanitizeHtml","VALID_HTML_ATTRIBUTE_NAME","html","_recursing","tempResult","Frame","tagPosition","mediaChildren","updateParentNodeText","parentFrame","updateParentNodeMediaChildren","htmlParserDefaults","tagAllowed","allowedTags","allowVulnerableTags","nonTextTagsArray","nonTextTags","allowedAttributesMap","allowedAttributesGlobMap","allowedAttributes","globRegex","allowedClassesMap","allowedClassesGlobMap","allowedClassesRegexMap","allowedClasses","classes","transformTagsMap","transformTagsAll","transformTags","transform","transFun","simpleTransform","skipMap","transformMap","skipText","skipTextDepth","addedText","initializeState","enforceHtmlBoundary","frame","skip","hasText","transformedTag","disallowedTagsMode","nestingLimit","allowedScriptHostnames","allowedScriptDomains","nonBooleanAttributes","passedAllowedAttributesMapCheck","newValue","multiple","splitStrArray","allowedSchemesAppliedToAttributes","naughtyHref","allowed","parseUrl","allowedHostname","hostname","allowedDomain","domain","endsWith","isRelativeUrl","allowIframeRelativeUrls","allowedIframeHostnames","allowedIframeDomains","evil","allowedSpecificClasses","allowedWildcardClasses","allowedSpecificClassesGlob","allowedSpecificClassesRegex","allowedWildcardClassesGlob","allowedClassesGlobs","t","filterClasses","parseStyleAttributes","abstractSyntaxTree","filteredAST","filterCss","allowedStyles","stringifyStyleAttributes","escapeHtml","selfClosing","textFilter","lastFrame","exclusiveFilter","firstIndex","matches","allowProtocolRelative","scheme","allowedSchemesByTag","allowedSchemes","astRules","selectedRule","filterDeclarations","extractedAttributes","attrObject","allowedDeclarationsList","attributeObject","matchesRegex","regularExpression","allowedGlobs","clss","glob","img","newTagName","newAttribs","merge"],"sources":["node_modules/htmlparser2/node_modules/entities/lib/generated/decode-data-html.js","node_modules/htmlparser2/node_modules/entities/lib/generated/decode-data-xml.js","node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js","node_modules/htmlparser2/node_modules/entities/lib/decode.js","node_modules/htmlparser2/lib/esm/Tokenizer.js","node_modules/htmlparser2/lib/esm/Parser.js","node_modules/domelementtype/lib/esm/index.js","node_modules/htmlparser2/node_modules/domhandler/lib/esm/node.js","node_modules/htmlparser2/node_modules/domhandler/lib/esm/index.js","node_modules/htmlparser2/node_modules/entities/lib/esm/escape.js","node_modules/htmlparser2/node_modules/dom-serializer/lib/esm/foreignNames.js","node_modules/htmlparser2/node_modules/dom-serializer/lib/esm/index.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/stringify.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/traversal.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/manipulation.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/querying.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/legacy.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/helpers.js","node_modules/htmlparser2/node_modules/domutils/lib/esm/feeds.js","node_modules/htmlparser2/lib/esm/index.js","node_modules/sanitize-html/node_modules/escape-string-regexp/index.js","node_modules/is-plain-object/dist/is-plain-object.mjs","node_modules/deepmerge/dist/cjs.js","node_modules/parse-srcset/src/parse-srcset.js","node_modules/process/index.js","node_modules/picocolors/picocolors.browser.js","node_modules/sanitize-html/node_modules/postcss/lib/css-syntax-error.js","node_modules/sanitize-html/node_modules/postcss/lib/symbols.js","node_modules/sanitize-html/node_modules/postcss/lib/stringifier.js","node_modules/sanitize-html/node_modules/postcss/lib/stringify.js","node_modules/sanitize-html/node_modules/postcss/lib/node.js","node_modules/sanitize-html/node_modules/postcss/lib/declaration.js","node_modules/rollup-plugin-node-polyfills/polyfills/global.js","node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","node_modules/sanitize-html/node_modules/nanoid/non-secure/index.js","node_modules/sanitize-html/node_modules/postcss/lib/previous-map.js","node_modules/sanitize-html/node_modules/postcss/lib/input.js","node_modules/sanitize-html/node_modules/postcss/lib/map-generator.js","node_modules/sanitize-html/node_modules/postcss/lib/comment.js","node_modules/sanitize-html/node_modules/postcss/lib/container.js","node_modules/sanitize-html/node_modules/postcss/lib/document.js","node_modules/sanitize-html/node_modules/postcss/lib/warning.js","node_modules/sanitize-html/node_modules/postcss/lib/result.js","node_modules/sanitize-html/node_modules/postcss/lib/tokenize.js","node_modules/sanitize-html/node_modules/postcss/lib/at-rule.js","node_modules/sanitize-html/node_modules/postcss/lib/root.js","node_modules/sanitize-html/node_modules/postcss/lib/list.js","node_modules/sanitize-html/node_modules/postcss/lib/rule.js","node_modules/sanitize-html/node_modules/postcss/lib/parser.js","node_modules/sanitize-html/node_modules/postcss/lib/parse.js","node_modules/sanitize-html/node_modules/postcss/lib/lazy-result.js","node_modules/sanitize-html/node_modules/postcss/lib/no-work-result.js","node_modules/sanitize-html/node_modules/postcss/lib/processor.js","node_modules/sanitize-html/node_modules/postcss/lib/fromJSON.js","node_modules/sanitize-html/node_modules/postcss/lib/postcss.js","node_modules/sanitize-html/index.js"],"sourcesContent":["\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-html.js.map","\"use strict\";\n// Generated using scripts/write-decode-map.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map(function (c) { return c.charCodeAt(0); }));\n//# sourceMappingURL=decode-data-xml.js.map","\"use strict\";\n// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.replaceCodePoint = exports.fromCodePoint = void 0;\nvar decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexports.fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nfunction replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\nexports.replaceCodePoint = replaceCodePoint;\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nfunction decodeCodePoint(codePoint) {\n return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));\n}\nexports.default = decodeCodePoint;\n//# sourceMappingURL=decode_codepoint.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;\nvar decode_data_html_js_1 = __importDefault(require(\"./generated/decode-data-html.js\"));\nexports.htmlDecodeTree = decode_data_html_js_1.default;\nvar decode_data_xml_js_1 = __importDefault(require(\"./generated/decode-data-xml.js\"));\nexports.xmlDecodeTree = decode_data_xml_js_1.default;\nvar decode_codepoint_js_1 = __importStar(require(\"./decode_codepoint.js\"));\nexports.decodeCodePoint = decode_codepoint_js_1.default;\nvar decode_codepoint_js_2 = require(\"./decode_codepoint.js\");\nObject.defineProperty(exports, \"replaceCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });\nObject.defineProperty(exports, \"fromCodePoint\", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nvar TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\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 */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nvar EntityDecoder = /** @class */ (function () {\n function EntityDecoder(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n EntityDecoder.prototype.startEntity = function (decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n };\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.write = function (str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n };\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericStart = function (str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n };\n EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {\n if (start !== end) {\n var digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n };\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericHex = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n };\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {\n var startIdx = offset;\n while (offset < str.length) {\n var char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n };\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n };\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n EntityDecoder.prototype.stateNamedEntity = function (str, offset) {\n var decodeTree = this.decodeTree;\n var current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n var char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n };\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {\n var _a;\n var _b = this, result = _b.result, decodeTree = _b.decodeTree;\n var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n };\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {\n var decodeTree = this.decodeTree;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n };\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n EntityDecoder.prototype.end = function () {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n };\n return EntityDecoder;\n}());\nexports.EntityDecoder = EntityDecoder;\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n var ret = \"\";\n var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });\n return function decodeWithTrie(str, decodeMode) {\n var lastIndex = 0;\n var offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n var len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n var result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n var jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n var value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n var lo = nodeIdx;\n var hi = lo + branchCount - 1;\n while (lo <= hi) {\n var mid = (lo + hi) >>> 1;\n var midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nexports.determineBranch = determineBranch;\nvar htmlDecoder = getDecoder(decode_data_html_js_1.default);\nvar xmlDecoder = getDecoder(decode_data_xml_js_1.default);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nfunction decodeHTML(str, mode) {\n if (mode === void 0) { mode = DecodingMode.Legacy; }\n return htmlDecoder(str, mode);\n}\nexports.decodeHTML = decodeHTML;\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\nexports.decodeHTMLAttribute = decodeHTMLAttribute;\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeHTMLStrict = decodeHTMLStrict;\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nfunction decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\nexports.decodeXML = decodeXML;\n//# sourceMappingURL=decode.js.map","import { htmlDecodeTree, xmlDecodeTree, BinTrieFlags, determineBranch, replaceCodePoint, } from \"entities/lib/decode.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n State[State[\"Text\"] = 1] = \"Text\";\n State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n State[State[\"InTagName\"] = 3] = \"InTagName\";\n State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n // Attributes\n State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n // Declarations\n State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n // Processing instructions\n State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n // Comments & CDATA\n State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n // Special tags\n State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n State[State[\"SpecialStartSequence\"] = 23] = \"SpecialStartSequence\";\n State[State[\"InSpecialTag\"] = 24] = \"InSpecialTag\";\n State[State[\"BeforeEntity\"] = 25] = \"BeforeEntity\";\n State[State[\"BeforeNumericEntity\"] = 26] = \"BeforeNumericEntity\";\n State[State[\"InNamedEntity\"] = 27] = \"InNamedEntity\";\n State[State[\"InNumericEntity\"] = 28] = \"InNumericEntity\";\n State[State[\"InHexEntity\"] = 29] = \"InHexEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n return (c === CharCodes.Space ||\n c === CharCodes.NewLine ||\n c === CharCodes.Tab ||\n c === CharCodes.FormFeed ||\n c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isNumber(c) {\n return c >= CharCodes.Zero && c <= CharCodes.Nine;\n}\nfunction isASCIIAlpha(c) {\n return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nfunction isHexDigit(c) {\n return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) ||\n (c >= CharCodes.LowerA && c <= CharCodes.LowerF));\n}\nexport var QuoteType;\n(function (QuoteType) {\n QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]),\n CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]),\n CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]),\n ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]),\n StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]),\n TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // ` this.sectionStart) {\n this.cbs.ontext(this.sectionStart, this.index);\n }\n this.state = State.BeforeTagName;\n this.sectionStart = this.index;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n stateSpecialStartSequence(c) {\n const isEnd = this.sequenceIndex === this.currentSequence.length;\n const isMatch = isEnd\n ? // If we are at the end of the sequence, make sure the tag name has ended\n isEndOfTagSection(c)\n : // Otherwise, do a case-insensitive comparison\n (c | 0x20) === this.currentSequence[this.sequenceIndex];\n if (!isMatch) {\n this.isSpecial = false;\n }\n else if (!isEnd) {\n this.sequenceIndex++;\n return;\n }\n this.sequenceIndex = 0;\n this.state = State.InTagName;\n this.stateInTagName(c);\n }\n /** Look for an end tag. For tags, also decode entities. */\n stateInSpecialTag(c) {\n if (this.sequenceIndex === this.currentSequence.length) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n const endOfText = this.index - this.currentSequence.length;\n if (this.sectionStart < endOfText) {\n // Spoof the index so that reported locations match up.\n const actualIndex = this.index;\n this.index = endOfText;\n this.cbs.ontext(this.sectionStart, endOfText);\n this.index = actualIndex;\n }\n this.isSpecial = false;\n this.sectionStart = endOfText + 2; // Skip over the `</`\n this.stateInClosingTagName(c);\n return; // We are done; skip the rest of the function.\n }\n this.sequenceIndex = 0;\n }\n if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n this.sequenceIndex += 1;\n }\n else if (this.sequenceIndex === 0) {\n if (this.currentSequence === Sequences.TitleEnd) {\n // We have to parse entities in <title> tags.\n if (this.decodeEntities && c === CharCodes.Amp) {\n this.state = State.BeforeEntity;\n }\n }\n else if (this.fastForwardTo(CharCodes.Lt)) {\n // Outside of <title> tags, we can fast-forward.\n this.sequenceIndex = 1;\n }\n }\n else {\n // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n this.sequenceIndex = Number(c === CharCodes.Lt);\n }\n }\n stateCDATASequence(c) {\n if (c === Sequences.Cdata[this.sequenceIndex]) {\n if (++this.sequenceIndex === Sequences.Cdata.length) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CdataEnd;\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n }\n }\n else {\n this.sequenceIndex = 0;\n this.state = State.InDeclaration;\n this.stateInDeclaration(c); // Reconsume the character\n }\n }\n /**\n * When we wait for one specific character, we can speed things up\n * by skipping through the buffer until we find it.\n *\n * @returns Whether the character was found.\n */\n fastForwardTo(c) {\n while (++this.index < this.buffer.length + this.offset) {\n if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n return true;\n }\n }\n /*\n * We increment the index at the end of the `parse` loop,\n * so set it to `buffer.length - 1` here.\n *\n * TODO: Refactor `parse` to increment index before calling states.\n */\n this.index = this.buffer.length + this.offset - 1;\n return false;\n }\n /**\n * Comments and CDATA end with `-->` and `]]>`.\n *\n * Their common qualities are:\n * - Their end sequences have a distinct character they start with.\n * - That character is then repeated, so we have to check multiple repeats.\n * - All characters but the start character of the sequence can be skipped.\n */\n stateInCommentLike(c) {\n if (c === this.currentSequence[this.sequenceIndex]) {\n if (++this.sequenceIndex === this.currentSequence.length) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, this.index, 2);\n }\n else {\n this.cbs.oncomment(this.sectionStart, this.index, 2);\n }\n this.sequenceIndex = 0;\n this.sectionStart = this.index + 1;\n this.state = State.Text;\n }\n }\n else if (this.sequenceIndex === 0) {\n // Fast-forward to the first character of the sequence\n if (this.fastForwardTo(this.currentSequence[0])) {\n this.sequenceIndex = 1;\n }\n }\n else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n // Allow long sequences, eg. --->, ]]]>\n this.sequenceIndex = 0;\n }\n }\n /**\n * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n *\n * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n * We allow anything that wouldn't end the tag.\n */\n isTagStartChar(c) {\n return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n }\n startSpecial(sequence, offset) {\n this.isSpecial = true;\n this.currentSequence = sequence;\n this.sequenceIndex = offset;\n this.state = State.SpecialStartSequence;\n }\n stateBeforeTagName(c) {\n if (c === CharCodes.ExclamationMark) {\n this.state = State.BeforeDeclaration;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Questionmark) {\n this.state = State.InProcessingInstruction;\n this.sectionStart = this.index + 1;\n }\n else if (this.isTagStartChar(c)) {\n const lower = c | 0x20;\n this.sectionStart = this.index;\n if (!this.xmlMode && lower === Sequences.TitleEnd[2]) {\n this.startSpecial(Sequences.TitleEnd, 3);\n }\n else {\n this.state =\n !this.xmlMode && lower === Sequences.ScriptEnd[2]\n ? State.BeforeSpecialS\n : State.InTagName;\n }\n }\n else if (c === CharCodes.Slash) {\n this.state = State.BeforeClosingTagName;\n }\n else {\n this.state = State.Text;\n this.stateText(c);\n }\n }\n stateInTagName(c) {\n if (isEndOfTagSection(c)) {\n this.cbs.onopentagname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateBeforeClosingTagName(c) {\n if (isWhitespace(c)) {\n // Ignore\n }\n else if (c === CharCodes.Gt) {\n this.state = State.Text;\n }\n else {\n this.state = this.isTagStartChar(c)\n ? State.InClosingTagName\n : State.InSpecialComment;\n this.sectionStart = this.index;\n }\n }\n stateInClosingTagName(c) {\n if (c === CharCodes.Gt || isWhitespace(c)) {\n this.cbs.onclosetag(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterClosingTagName;\n this.stateAfterClosingTagName(c);\n }\n }\n stateAfterClosingTagName(c) {\n // Skip everything until \">\"\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeAttributeName(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onopentagend(this.index);\n if (this.isSpecial) {\n this.state = State.InSpecialTag;\n this.sequenceIndex = 0;\n }\n else {\n this.state = State.Text;\n }\n this.baseState = this.state;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.Slash) {\n this.state = State.InSelfClosingTag;\n }\n else if (!isWhitespace(c)) {\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateInSelfClosingTag(c) {\n if (c === CharCodes.Gt) {\n this.cbs.onselfclosingtag(this.index);\n this.state = State.Text;\n this.baseState = State.Text;\n this.sectionStart = this.index + 1;\n this.isSpecial = false; // Reset special state, in case of self-closing special tags\n }\n else if (!isWhitespace(c)) {\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n }\n stateInAttributeName(c) {\n if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n this.cbs.onattribname(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.state = State.AfterAttributeName;\n this.stateAfterAttributeName(c);\n }\n }\n stateAfterAttributeName(c) {\n if (c === CharCodes.Eq) {\n this.state = State.BeforeAttributeValue;\n }\n else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (!isWhitespace(c)) {\n this.cbs.onattribend(QuoteType.NoValue, this.index);\n this.state = State.InAttributeName;\n this.sectionStart = this.index;\n }\n }\n stateBeforeAttributeValue(c) {\n if (c === CharCodes.DoubleQuote) {\n this.state = State.InAttributeValueDq;\n this.sectionStart = this.index + 1;\n }\n else if (c === CharCodes.SingleQuote) {\n this.state = State.InAttributeValueSq;\n this.sectionStart = this.index + 1;\n }\n else if (!isWhitespace(c)) {\n this.sectionStart = this.index;\n this.state = State.InAttributeValueNq;\n this.stateInAttributeValueNoQuotes(c); // Reconsume token\n }\n }\n handleInAttributeValue(c, quote) {\n if (c === quote ||\n (!this.decodeEntities && this.fastForwardTo(quote))) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(quote === CharCodes.DoubleQuote\n ? QuoteType.Double\n : QuoteType.Single, this.index);\n this.state = State.BeforeAttributeName;\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateInAttributeValueDoubleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n }\n stateInAttributeValueSingleQuotes(c) {\n this.handleInAttributeValue(c, CharCodes.SingleQuote);\n }\n stateInAttributeValueNoQuotes(c) {\n if (isWhitespace(c) || c === CharCodes.Gt) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = -1;\n this.cbs.onattribend(QuoteType.Unquoted, this.index);\n this.state = State.BeforeAttributeName;\n this.stateBeforeAttributeName(c);\n }\n else if (this.decodeEntities && c === CharCodes.Amp) {\n this.baseState = this.state;\n this.state = State.BeforeEntity;\n }\n }\n stateBeforeDeclaration(c) {\n if (c === CharCodes.OpeningSquareBracket) {\n this.state = State.CDATASequence;\n this.sequenceIndex = 0;\n }\n else {\n this.state =\n c === CharCodes.Dash\n ? State.BeforeComment\n : State.InDeclaration;\n }\n }\n stateInDeclaration(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.ondeclaration(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateInProcessingInstruction(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeComment(c) {\n if (c === CharCodes.Dash) {\n this.state = State.InCommentLike;\n this.currentSequence = Sequences.CommentEnd;\n // Allow short comments (eg. <!-->)\n this.sequenceIndex = 2;\n this.sectionStart = this.index + 1;\n }\n else {\n this.state = State.InDeclaration;\n }\n }\n stateInSpecialComment(c) {\n if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n this.cbs.oncomment(this.sectionStart, this.index, 0);\n this.state = State.Text;\n this.sectionStart = this.index + 1;\n }\n }\n stateBeforeSpecialS(c) {\n const lower = c | 0x20;\n if (lower === Sequences.ScriptEnd[3]) {\n this.startSpecial(Sequences.ScriptEnd, 4);\n }\n else if (lower === Sequences.StyleEnd[3]) {\n this.startSpecial(Sequences.StyleEnd, 4);\n }\n else {\n this.state = State.InTagName;\n this.stateInTagName(c); // Consume the token again\n }\n }\n stateBeforeEntity(c) {\n // Start excess with 1 to include the '&'\n this.entityExcess = 1;\n this.entityResult = 0;\n if (c === CharCodes.Number) {\n this.state = State.BeforeNumericEntity;\n }\n else if (c === CharCodes.Amp) {\n // We have two `&` characters in a row. Stay in the current state.\n }\n else {\n this.trieIndex = 0;\n this.trieCurrent = this.entityTrie[0];\n this.state = State.InNamedEntity;\n this.stateInNamedEntity(c);\n }\n }\n stateInNamedEntity(c) {\n this.entityExcess += 1;\n this.trieIndex = determineBranch(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c);\n if (this.trieIndex < 0) {\n this.emitNamedEntity();\n this.index--;\n return;\n }\n this.trieCurrent = this.entityTrie[this.trieIndex];\n const masked = this.trieCurrent & 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 // If we have a legacy entity while parsing strictly, just skip the number of bytes\n if (!this.allowLegacyEntity() && c !== CharCodes.Semi) {\n this.trieIndex += valueLength;\n }\n else {\n // Add 1 as we have already incremented the excess\n const entityStart = this.index - this.entityExcess + 1;\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n // If this is a surrogate pair, consume the next two bytes\n this.entityResult = this.trieIndex;\n this.trieIndex += valueLength;\n this.entityExcess = 0;\n this.sectionStart = this.index + 1;\n if (valueLength === 0) {\n this.emitNamedEntity();\n }\n }\n }\n }\n emitNamedEntity() {\n this.state = this.baseState;\n if (this.entityResult === 0) {\n return;\n }\n const valueLength = (this.entityTrie[this.entityResult] & BinTrieFlags.VALUE_LENGTH) >>\n 14;\n switch (valueLength) {\n case 1: {\n this.emitCodePoint(this.entityTrie[this.entityResult] &\n ~BinTrieFlags.VALUE_LENGTH);\n break;\n }\n case 2: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n break;\n }\n case 3: {\n this.emitCodePoint(this.entityTrie[this.entityResult + 1]);\n this.emitCodePoint(this.entityTrie[this.entityResult + 2]);\n }\n }\n }\n stateBeforeNumericEntity(c) {\n if ((c | 0x20) === CharCodes.LowerX) {\n this.entityExcess++;\n this.state = State.InHexEntity;\n }\n else {\n this.state = State.InNumericEntity;\n this.stateInNumericEntity(c);\n }\n }\n emitNumericEntity(strict) {\n const entityStart = this.index - this.entityExcess - 1;\n const numberStart = entityStart + 2 + Number(this.state === State.InHexEntity);\n if (numberStart !== this.index) {\n // Emit leading data if any\n if (entityStart > this.sectionStart) {\n this.emitPartial(this.sectionStart, entityStart);\n }\n this.sectionStart = this.index + Number(strict);\n this.emitCodePoint(replaceCodePoint(this.entityResult));\n }\n this.state = this.baseState;\n }\n stateInNumericEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n stateInHexEntity(c) {\n if (c === CharCodes.Semi) {\n this.emitNumericEntity(true);\n }\n else if (isNumber(c)) {\n this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero);\n this.entityExcess++;\n }\n else if (isHexDigit(c)) {\n this.entityResult =\n this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10);\n this.entityExcess++;\n }\n else {\n if (this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n }\n else {\n this.state = this.baseState;\n }\n this.index--;\n }\n }\n allowLegacyEntity() {\n return (!this.xmlMode &&\n (this.baseState === State.Text ||\n this.baseState === State.InSpecialTag));\n }\n /**\n * Remove data that has already been consumed from the buffer.\n */\n cleanup() {\n // If we are inside of text or attributes, emit what we already have.\n if (this.running && this.sectionStart !== this.index) {\n if (this.state === State.Text ||\n (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n this.cbs.ontext(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n else if (this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueNq) {\n this.cbs.onattribdata(this.sectionStart, this.index);\n this.sectionStart = this.index;\n }\n }\n }\n shouldContinue() {\n return this.index < this.buffer.length + this.offset && this.running;\n }\n /**\n * Iterates through the buffer, calling the function corresponding to the current state.\n *\n * States that are more likely to be hit are higher up, as a performance improvement.\n */\n parse() {\n while (this.shouldContinue()) {\n const c = this.buffer.charCodeAt(this.index - this.offset);\n switch (this.state) {\n case State.Text: {\n this.stateText(c);\n break;\n }\n case State.SpecialStartSequence: {\n this.stateSpecialStartSequence(c);\n break;\n }\n case State.InSpecialTag: {\n this.stateInSpecialTag(c);\n break;\n }\n case State.CDATASequence: {\n this.stateCDATASequence(c);\n break;\n }\n case State.InAttributeValueDq: {\n this.stateInAttributeValueDoubleQuotes(c);\n break;\n }\n case State.InAttributeName: {\n this.stateInAttributeName(c);\n break;\n }\n case State.InCommentLike: {\n this.stateInCommentLike(c);\n break;\n }\n case State.InSpecialComment: {\n this.stateInSpecialComment(c);\n break;\n }\n case State.BeforeAttributeName: {\n this.stateBeforeAttributeName(c);\n break;\n }\n case State.InTagName: {\n this.stateInTagName(c);\n break;\n }\n case State.InClosingTagName: {\n this.stateInClosingTagName(c);\n break;\n }\n case State.BeforeTagName: {\n this.stateBeforeTagName(c);\n break;\n }\n case State.AfterAttributeName: {\n this.stateAfterAttributeName(c);\n break;\n }\n case State.InAttributeValueSq: {\n this.stateInAttributeValueSingleQuotes(c);\n break;\n }\n case State.BeforeAttributeValue: {\n this.stateBeforeAttributeValue(c);\n break;\n }\n case State.BeforeClosingTagName: {\n this.stateBeforeClosingTagName(c);\n break;\n }\n case State.AfterClosingTagName: {\n this.stateAfterClosingTagName(c);\n break;\n }\n case State.BeforeSpecialS: {\n this.stateBeforeSpecialS(c);\n break;\n }\n case State.InAttributeValueNq: {\n this.stateInAttributeValueNoQuotes(c);\n break;\n }\n case State.InSelfClosingTag: {\n this.stateInSelfClosingTag(c);\n break;\n }\n case State.InDeclaration: {\n this.stateInDeclaration(c);\n break;\n }\n case State.BeforeDeclaration: {\n this.stateBeforeDeclaration(c);\n break;\n }\n case State.BeforeComment: {\n this.stateBeforeComment(c);\n break;\n }\n case State.InProcessingInstruction: {\n this.stateInProcessingInstruction(c);\n break;\n }\n case State.InNamedEntity: {\n this.stateInNamedEntity(c);\n break;\n }\n case State.BeforeEntity: {\n this.stateBeforeEntity(c);\n break;\n }\n case State.InHexEntity: {\n this.stateInHexEntity(c);\n break;\n }\n case State.InNumericEntity: {\n this.stateInNumericEntity(c);\n break;\n }\n default: {\n // `this._state === State.BeforeNumericEntity`\n this.stateBeforeNumericEntity(c);\n }\n }\n this.index++;\n }\n this.cleanup();\n }\n finish() {\n if (this.state === State.InNamedEntity) {\n this.emitNamedEntity();\n }\n // If there is remaining data, emit it in a reasonable way\n if (this.sectionStart < this.index) {\n this.handleTrailingData();\n }\n this.cbs.onend();\n }\n /** Handle any trailing data. */\n handleTrailingData() {\n const endIndex = this.buffer.length + this.offset;\n if (this.state === State.InCommentLike) {\n if (this.currentSequence === Sequences.CdataEnd) {\n this.cbs.oncdata(this.sectionStart, endIndex, 0);\n }\n else {\n this.cbs.oncomment(this.sectionStart, endIndex, 0);\n }\n }\n else if (this.state === State.InNumericEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InHexEntity &&\n this.allowLegacyEntity()) {\n this.emitNumericEntity(false);\n // All trailing data will have been consumed\n }\n else if (this.state === State.InTagName ||\n this.state === State.BeforeAttributeName ||\n this.state === State.BeforeAttributeValue ||\n this.state === State.AfterAttributeName ||\n this.state === State.InAttributeName ||\n this.state === State.InAttributeValueSq ||\n this.state === State.InAttributeValueDq ||\n this.state === State.InAttributeValueNq ||\n this.state === State.InClosingTagName) {\n /*\n * If we are currently in an opening or closing tag, us not calling the\n * respective callback signals that the tag should be ignored.\n */\n }\n else {\n this.cbs.ontext(this.sectionStart, endIndex);\n }\n }\n emitPartial(start, endIndex) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribdata(start, endIndex);\n }\n else {\n this.cbs.ontext(start, endIndex);\n }\n }\n emitCodePoint(cp) {\n if (this.baseState !== State.Text &&\n this.baseState !== State.InSpecialTag) {\n this.cbs.onattribentity(cp);\n }\n else {\n this.cbs.ontextentity(cp);\n }\n }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/lib/decode.js\";\nconst formTags = new Set([\n \"input\",\n \"option\",\n \"optgroup\",\n \"select\",\n \"button\",\n \"datalist\",\n \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n [\"th\", new Set([\"th\"])],\n [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n [\"body\", new Set([\"head\", \"link\", \"script\"])],\n [\"li\", new Set([\"li\"])],\n [\"p\", pTag],\n [\"h1\", pTag],\n [\"h2\", pTag],\n [\"h3\", pTag],\n [\"h4\", pTag],\n [\"h5\", pTag],\n [\"h6\", pTag],\n [\"select\", formTags],\n [\"input\", formTags],\n [\"output\", formTags],\n [\"button\", formTags],\n [\"datalist\", formTags],\n [\"textarea\", formTags],\n [\"option\", new Set([\"option\"])],\n [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n [\"dd\", ddtTags],\n [\"dt\", ddtTags],\n [\"address\", pTag],\n [\"article\", pTag],\n [\"aside\", pTag],\n [\"blockquote\", pTag],\n [\"details\", pTag],\n [\"div\", pTag],\n [\"dl\", pTag],\n [\"fieldset\", pTag],\n [\"figcaption\", pTag],\n [\"figure\", pTag],\n [\"footer\", pTag],\n [\"form\", pTag],\n [\"header\", pTag],\n [\"hr\", pTag],\n [\"main\", pTag],\n [\"nav\", pTag],\n [\"ol\", pTag],\n [\"pre\", pTag],\n [\"section\", pTag],\n [\"table\", pTag],\n [\"ul\", pTag],\n [\"rt\", rtpTags],\n [\"rp\", rtpTags],\n [\"tbody\", tableSectionTags],\n [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = 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]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n \"mi\",\n \"mo\",\n \"mn\",\n \"ms\",\n \"mtext\",\n \"annotation-xml\",\n \"foreignobject\",\n \"desc\",\n \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n constructor(cbs, options = {}) {\n var _a, _b, _c, _d, _e;\n this.options = options;\n /** The start index of the last event. */\n this.startIndex = 0;\n /** The end index of the last event. */\n this.endIndex = 0;\n /**\n * Store the start index of the current open tag,\n * so we can update the start index for attributes.\n */\n this.openTagStart = 0;\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribvalue = \"\";\n this.attribs = null;\n this.stack = [];\n this.foreignContext = [];\n this.buffers = [];\n this.bufferOffset = 0;\n /** The index of the last written buffer. Used when resuming after a `pause()`. */\n this.writeIndex = 0;\n /** Indicates whether the parser has finished running / `.end` has been called. */\n this.ended = false;\n this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode;\n this.lowerCaseAttributeNames =\n (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode;\n this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer)(this.options, this);\n (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this);\n }\n // Tokenizer event handlers\n /** @internal */\n ontext(start, endIndex) {\n var _a, _b;\n const data = this.getSlice(start, endIndex);\n this.endIndex = endIndex - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n this.startIndex = endIndex;\n }\n /** @internal */\n ontextentity(cp) {\n var _a, _b;\n /*\n * Entities can be emitted on the character, or directly after.\n * We use the section start here to get accurate indices.\n */\n const index = this.tokenizer.getSectionStart();\n this.endIndex = index - 1;\n (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n this.startIndex = index;\n }\n isVoidElement(name) {\n return !this.options.xmlMode && voidElements.has(name);\n }\n /** @internal */\n onopentagname(start, endIndex) {\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n this.emitOpenTag(name);\n }\n emitOpenTag(name) {\n var _a, _b, _c, _d;\n this.openTagStart = this.startIndex;\n this.tagname = name;\n const impliesClose = !this.options.xmlMode && openImpliesClose.get(name);\n if (impliesClose) {\n while (this.stack.length > 0 &&\n impliesClose.has(this.stack[this.stack.length - 1])) {\n const element = this.stack.pop();\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n }\n }\n if (!this.isVoidElement(name)) {\n this.stack.push(name);\n if (foreignContextElements.has(name)) {\n this.foreignContext.push(true);\n }\n else if (htmlIntegrationElements.has(name)) {\n this.foreignContext.push(false);\n }\n }\n (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n if (this.cbs.onopentag)\n this.attribs = {};\n }\n endOpenTag(isImplied) {\n var _a, _b;\n this.startIndex = this.openTagStart;\n if (this.attribs) {\n (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n this.attribs = null;\n }\n if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n this.cbs.onclosetag(this.tagname, true);\n }\n this.tagname = \"\";\n }\n /** @internal */\n onopentagend(endIndex) {\n this.endIndex = endIndex;\n this.endOpenTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onclosetag(start, endIndex) {\n var _a, _b, _c, _d, _e, _f;\n this.endIndex = endIndex;\n let name = this.getSlice(start, endIndex);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n if (foreignContextElements.has(name) ||\n htmlIntegrationElements.has(name)) {\n this.foreignContext.pop();\n }\n if (!this.isVoidElement(name)) {\n const pos = this.stack.lastIndexOf(name);\n if (pos !== -1) {\n if (this.cbs.onclosetag) {\n let count = this.stack.length - pos;\n while (count--) {\n // We know the stack has sufficient elements.\n this.cbs.onclosetag(this.stack.pop(), count !== 0);\n }\n }\n else\n this.stack.length = pos;\n }\n else if (!this.options.xmlMode && name === \"p\") {\n // Implicit open before close\n this.emitOpenTag(\"p\");\n this.closeCurrentTag(true);\n }\n }\n else if (!this.options.xmlMode && name === \"br\") {\n // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, \"br\");\n (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\", {}, true);\n (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", false);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onselfclosingtag(endIndex) {\n this.endIndex = endIndex;\n if (this.options.xmlMode ||\n this.options.recognizeSelfClosing ||\n this.foreignContext[this.foreignContext.length - 1]) {\n this.closeCurrentTag(false);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n else {\n // Ignore the fact that the tag is self-closing.\n this.onopentagend(endIndex);\n }\n }\n closeCurrentTag(isOpenImplied) {\n var _a, _b;\n const name = this.tagname;\n this.endOpenTag(isOpenImplied);\n // Self-closing tags will be on the top of the stack\n if (this.stack[this.stack.length - 1] === name) {\n // If the opening tag isn't implied, the closing tag has to be implied.\n (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n this.stack.pop();\n }\n }\n /** @internal */\n onattribname(start, endIndex) {\n this.startIndex = start;\n const name = this.getSlice(start, endIndex);\n this.attribname = this.lowerCaseAttributeNames\n ? name.toLowerCase()\n : name;\n }\n /** @internal */\n onattribdata(start, endIndex) {\n this.attribvalue += this.getSlice(start, endIndex);\n }\n /** @internal */\n onattribentity(cp) {\n this.attribvalue += fromCodePoint(cp);\n }\n /** @internal */\n onattribend(quote, endIndex) {\n var _a, _b;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n ? '\"'\n : quote === QuoteType.Single\n ? \"'\"\n : quote === QuoteType.NoValue\n ? undefined\n : null);\n if (this.attribs &&\n !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n this.attribs[this.attribname] = this.attribvalue;\n }\n this.attribvalue = \"\";\n }\n getInstructionName(value) {\n const index = value.search(reNameEnd);\n let name = index < 0 ? value : value.substr(0, index);\n if (this.lowerCaseTagNames) {\n name = name.toLowerCase();\n }\n return name;\n }\n /** @internal */\n ondeclaration(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onprocessinginstruction(start, endIndex) {\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex);\n if (this.cbs.onprocessinginstruction) {\n const name = this.getInstructionName(value);\n this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncomment(start, endIndex, offset) {\n var _a, _b, _c, _d;\n this.endIndex = endIndex;\n (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n oncdata(start, endIndex, offset) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n this.endIndex = endIndex;\n const value = this.getSlice(start, endIndex - offset);\n if (this.options.xmlMode || this.options.recognizeCDATA) {\n (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n }\n else {\n (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n }\n // Set `startIndex` for next node\n this.startIndex = endIndex + 1;\n }\n /** @internal */\n onend() {\n var _a, _b;\n if (this.cbs.onclosetag) {\n // Set the end index for all remaining tags\n this.endIndex = this.startIndex;\n for (let index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true))\n ;\n }\n (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n /**\n * Resets the parser to a blank state, ready to parse a new HTML document\n */\n reset() {\n var _a, _b, _c, _d;\n (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.tokenizer.reset();\n this.tagname = \"\";\n this.attribname = \"\";\n this.attribs = null;\n this.stack.length = 0;\n this.startIndex = 0;\n this.endIndex = 0;\n (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n this.buffers.length = 0;\n this.bufferOffset = 0;\n this.writeIndex = 0;\n this.ended = false;\n }\n /**\n * Resets the parser, then parses a complete document and\n * pushes it to the handler.\n *\n * @param data Document to parse.\n */\n parseComplete(data) {\n this.reset();\n this.end(data);\n }\n getSlice(start, end) {\n while (start - this.bufferOffset >= this.buffers[0].length) {\n this.shiftBuffer();\n }\n let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n while (end - this.bufferOffset > this.buffers[0].length) {\n this.shiftBuffer();\n slice += this.buffers[0].slice(0, end - this.bufferOffset);\n }\n return slice;\n }\n shiftBuffer() {\n this.bufferOffset += this.buffers[0].length;\n this.writeIndex--;\n this.buffers.shift();\n }\n /**\n * Parses a chunk of data and calls the corresponding callbacks.\n *\n * @param chunk Chunk to parse.\n */\n write(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n return;\n }\n this.buffers.push(chunk);\n if (this.tokenizer.running) {\n this.tokenizer.write(chunk);\n this.writeIndex++;\n }\n }\n /**\n * Parses the end of the buffer and clears the stack, calls onend.\n *\n * @param chunk Optional final chunk to parse.\n */\n end(chunk) {\n var _a, _b;\n if (this.ended) {\n (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n return;\n }\n if (chunk)\n this.write(chunk);\n this.ended = true;\n this.tokenizer.end();\n }\n /**\n * Pauses parsing. The parser won't emit events until `resume` is called.\n */\n pause() {\n this.tokenizer.pause();\n }\n /**\n * Resumes parsing after `pause` was called.\n */\n resume() {\n this.tokenizer.resume();\n while (this.tokenizer.running &&\n this.writeIndex < this.buffers.length) {\n this.tokenizer.write(this.buffers[this.writeIndex++]);\n }\n if (this.ended)\n this.tokenizer.end();\n }\n /**\n * Alias of `write`, for backwards compatibility.\n *\n * @param chunk Chunk to parse.\n * @deprecated\n */\n parseChunk(chunk) {\n this.write(chunk);\n }\n /**\n * Alias of `end`, for backwards compatibility.\n *\n * @param chunk Optional final chunk to parse.\n * @deprecated\n */\n done(chunk) {\n this.end(chunk);\n }\n}\n//# sourceMappingURL=Parser.js.map","/** 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","export const xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? (str, index) => str.codePointAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800\n ? (c.charCodeAt(index) - 0xd800) * 0x400 +\n c.charCodeAt(index + 1) -\n 0xdc00 +\n 0x10000\n : c.charCodeAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(str) {\n let ret = \"\";\n let lastIdx = 0;\n let match;\n while ((match = xmlReplacer.exec(str)) !== null) {\n const i = match.index;\n const char = str.charCodeAt(i);\n const next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += `${str.substring(lastIdx, i)}&#x${getCodePoint(str, i).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIdx = xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIdx = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIdx !== match.index) {\n result += data.substring(lastIdx, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIdx = match.index + 1;\n }\n return result + data.substring(lastIdx);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = getEscaper(/[&<>'\"]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","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, \""\");\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","import { isTag, isCDATA, isText, hasChildren, isComment, } from \"domhandler\";\nimport renderHTML from \"dom-serializer\";\nimport { ElementType } from \"domelementtype\";\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the outer HTML of.\n * @param options Options for serialization.\n * @returns `node`'s outer HTML.\n */\nexport function getOuterHTML(node, options) {\n return renderHTML(node, options);\n}\n/**\n * @category Stringify\n * @deprecated Use the `dom-serializer` module directly.\n * @param node Node to get the inner HTML of.\n * @param options Options for serialization.\n * @returns `node`'s inner HTML.\n */\nexport function getInnerHTML(node, options) {\n return hasChildren(node)\n ? node.children.map((node) => getOuterHTML(node, options)).join(\"\")\n : \"\";\n}\n/**\n * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments.\n *\n * @category Stringify\n * @deprecated Use `textContent` instead.\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n */\nexport function getText(node) {\n if (Array.isArray(node))\n return node.map(getText).join(\"\");\n if (isTag(node))\n return node.name === \"br\" ? \"\\n\" : getText(node.children);\n if (isCDATA(node))\n return getText(node.children);\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's text content. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the text content of.\n * @returns `node`'s text content.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent}\n */\nexport function textContent(node) {\n if (Array.isArray(node))\n return node.map(textContent).join(\"\");\n if (hasChildren(node) && !isComment(node)) {\n return textContent(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n/**\n * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments.\n *\n * @category Stringify\n * @param node Node to get the inner text of.\n * @returns `node`'s inner text.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText}\n */\nexport function innerText(node) {\n if (Array.isArray(node))\n return node.map(innerText).join(\"\");\n if (hasChildren(node) && (node.type === ElementType.Tag || isCDATA(node))) {\n return innerText(node.children);\n }\n if (isText(node))\n return node.data;\n return \"\";\n}\n//# sourceMappingURL=stringify.js.map","import { isTag, hasChildren, } from \"domhandler\";\n/**\n * Get a node's children.\n *\n * @category Traversal\n * @param elem Node to get the children of.\n * @returns `elem`'s children, or an empty array.\n */\nexport function getChildren(elem) {\n return hasChildren(elem) ? elem.children : [];\n}\n/**\n * Get a node's parent.\n *\n * @category Traversal\n * @param elem Node to get the parent of.\n * @returns `elem`'s parent node, or `null` if `elem` is a root node.\n */\nexport function getParent(elem) {\n return elem.parent || null;\n}\n/**\n * Gets an elements siblings, including the element itself.\n *\n * Attempts to get the children through the element's parent first. If we don't\n * have a parent (the element is a root node), we walk the element's `prev` &\n * `next` to get all remaining nodes.\n *\n * @category Traversal\n * @param elem Element to get the siblings of.\n * @returns `elem`'s siblings, including `elem`.\n */\nexport function getSiblings(elem) {\n const parent = getParent(elem);\n if (parent != null)\n return getChildren(parent);\n const siblings = [elem];\n let { prev, next } = elem;\n while (prev != null) {\n siblings.unshift(prev);\n ({ prev } = prev);\n }\n while (next != null) {\n siblings.push(next);\n ({ next } = next);\n }\n return siblings;\n}\n/**\n * Gets an attribute from an element.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to retrieve.\n * @returns The element's attribute value, or `undefined`.\n */\nexport function getAttributeValue(elem, name) {\n var _a;\n return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name];\n}\n/**\n * Checks whether an element has an attribute.\n *\n * @category Traversal\n * @param elem Element to check.\n * @param name Attribute name to look for.\n * @returns Returns whether `elem` has the attribute `name`.\n */\nexport function hasAttrib(elem, name) {\n return (elem.attribs != null &&\n Object.prototype.hasOwnProperty.call(elem.attribs, name) &&\n elem.attribs[name] != null);\n}\n/**\n * Get the tag name of an element.\n *\n * @category Traversal\n * @param elem The element to get the name for.\n * @returns The tag name of `elem`.\n */\nexport function getName(elem) {\n return elem.name;\n}\n/**\n * Returns the next element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the next sibling of.\n * @returns `elem`'s next sibling that is a tag, or `null` if there is no next\n * sibling.\n */\nexport function nextElementSibling(elem) {\n let { next } = elem;\n while (next !== null && !isTag(next))\n ({ next } = next);\n return next;\n}\n/**\n * Returns the previous element sibling of a node.\n *\n * @category Traversal\n * @param elem The element to get the previous sibling of.\n * @returns `elem`'s previous sibling that is a tag, or `null` if there is no\n * previous sibling.\n */\nexport function prevElementSibling(elem) {\n let { prev } = elem;\n while (prev !== null && !isTag(prev))\n ({ prev } = prev);\n return prev;\n}\n//# sourceMappingURL=traversal.js.map","/**\n * Remove an element from the dom\n *\n * @category Manipulation\n * @param elem The element to be removed\n */\nexport function removeElement(elem) {\n if (elem.prev)\n elem.prev.next = elem.next;\n if (elem.next)\n elem.next.prev = elem.prev;\n if (elem.parent) {\n const childs = elem.parent.children;\n const childsIndex = childs.lastIndexOf(elem);\n if (childsIndex >= 0) {\n childs.splice(childsIndex, 1);\n }\n }\n elem.next = null;\n elem.prev = null;\n elem.parent = null;\n}\n/**\n * Replace an element in the dom\n *\n * @category Manipulation\n * @param elem The element to be replaced\n * @param replacement The element to be added\n */\nexport function replaceElement(elem, replacement) {\n const prev = (replacement.prev = elem.prev);\n if (prev) {\n prev.next = replacement;\n }\n const next = (replacement.next = elem.next);\n if (next) {\n next.prev = replacement;\n }\n const parent = (replacement.parent = elem.parent);\n if (parent) {\n const childs = parent.children;\n childs[childs.lastIndexOf(elem)] = replacement;\n elem.parent = null;\n }\n}\n/**\n * Append a child to an element.\n *\n * @category Manipulation\n * @param parent The element to append to.\n * @param child The element to be added as a child.\n */\nexport function appendChild(parent, child) {\n removeElement(child);\n child.next = null;\n child.parent = parent;\n if (parent.children.push(child) > 1) {\n const sibling = parent.children[parent.children.length - 2];\n sibling.next = child;\n child.prev = sibling;\n }\n else {\n child.prev = null;\n }\n}\n/**\n * Append an element after another.\n *\n * @category Manipulation\n * @param elem The element to append after.\n * @param next The element be added.\n */\nexport function append(elem, next) {\n removeElement(next);\n const { parent } = elem;\n const currNext = elem.next;\n next.next = currNext;\n next.prev = elem;\n elem.next = next;\n next.parent = parent;\n if (currNext) {\n currNext.prev = next;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.lastIndexOf(currNext), 0, next);\n }\n }\n else if (parent) {\n parent.children.push(next);\n }\n}\n/**\n * Prepend a child to an element.\n *\n * @category Manipulation\n * @param parent The element to prepend before.\n * @param child The element to be added as a child.\n */\nexport function prependChild(parent, child) {\n removeElement(child);\n child.parent = parent;\n child.prev = null;\n if (parent.children.unshift(child) !== 1) {\n const sibling = parent.children[1];\n sibling.prev = child;\n child.next = sibling;\n }\n else {\n child.next = null;\n }\n}\n/**\n * Prepend an element before another.\n *\n * @category Manipulation\n * @param elem The element to prepend before.\n * @param prev The element be added.\n */\nexport function prepend(elem, prev) {\n removeElement(prev);\n const { parent } = elem;\n if (parent) {\n const childs = parent.children;\n childs.splice(childs.indexOf(elem), 0, prev);\n }\n if (elem.prev) {\n elem.prev.next = prev;\n }\n prev.parent = parent;\n prev.prev = elem.prev;\n prev.next = elem;\n elem.prev = prev;\n}\n//# sourceMappingURL=manipulation.js.map","import { isTag, hasChildren } from \"domhandler\";\n/**\n * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param node Node to search. Will be included in the result set if it matches.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function filter(test, node, recurse = true, limit = Infinity) {\n return find(test, Array.isArray(node) ? node : [node], recurse, limit);\n}\n/**\n * Search an array of nodes and their children for nodes passing a test function.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes passing `test`.\n */\nexport function find(test, nodes, recurse, limit) {\n const result = [];\n /** Stack of the arrays we are looking at. */\n const nodeStack = [nodes];\n /** Stack of the indices within the arrays. */\n const indexStack = [0];\n for (;;) {\n // First, check if the current array has any more elements to look at.\n if (indexStack[0] >= nodeStack[0].length) {\n // If we have no more arrays to look at, we are done.\n if (indexStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (test(elem)) {\n result.push(elem);\n if (--limit <= 0)\n return result;\n }\n if (recurse && hasChildren(elem) && elem.children.length > 0) {\n /*\n * Add the children to the stack. We are depth-first, so this is\n * the next array we look at.\n */\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n/**\n * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns The first node in the array that passes `test`.\n * @deprecated Use `Array.prototype.find` directly.\n */\nexport function findOneChild(test, nodes) {\n return nodes.find(test);\n}\n/**\n * Finds one element in a tree that passes a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Node or array of nodes to search.\n * @param recurse Also consider child nodes.\n * @returns The first node that passes `test`.\n */\nexport function findOne(test, nodes, recurse = true) {\n let elem = null;\n for (let i = 0; i < nodes.length && !elem; i++) {\n const node = nodes[i];\n if (!isTag(node)) {\n continue;\n }\n else if (test(node)) {\n elem = node;\n }\n else if (recurse && node.children.length > 0) {\n elem = findOne(test, node.children, true);\n }\n }\n return elem;\n}\n/**\n * Checks if a tree of nodes contains at least one node passing a test.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns Whether a tree of nodes contains at least one node passing the test.\n */\nexport function existsOne(test, nodes) {\n return nodes.some((checked) => isTag(checked) &&\n (test(checked) || existsOne(test, checked.children)));\n}\n/**\n * Search an array of nodes and their children for elements passing a test function.\n *\n * Same as `find`, but limited to elements and with less options, leading to reduced complexity.\n *\n * @category Querying\n * @param test Function to test nodes on.\n * @param nodes Array of nodes to search.\n * @returns All nodes passing `test`.\n */\nexport function findAll(test, nodes) {\n const result = [];\n const nodeStack = [nodes];\n const indexStack = [0];\n for (;;) {\n if (indexStack[0] >= nodeStack[0].length) {\n if (nodeStack.length === 1) {\n return result;\n }\n // Otherwise, remove the current array from the stack.\n nodeStack.shift();\n indexStack.shift();\n // Loop back to the start to continue with the next array.\n continue;\n }\n const elem = nodeStack[0][indexStack[0]++];\n if (!isTag(elem))\n continue;\n if (test(elem))\n result.push(elem);\n if (elem.children.length > 0) {\n indexStack.unshift(0);\n nodeStack.unshift(elem.children);\n }\n }\n}\n//# sourceMappingURL=querying.js.map","import { isTag, isText } from \"domhandler\";\nimport { filter, findOne } from \"./querying.js\";\n/**\n * A map of functions to check nodes against.\n */\nconst Checks = {\n tag_name(name) {\n if (typeof name === \"function\") {\n return (elem) => isTag(elem) && name(elem.name);\n }\n else if (name === \"*\") {\n return isTag;\n }\n return (elem) => isTag(elem) && elem.name === name;\n },\n tag_type(type) {\n if (typeof type === \"function\") {\n return (elem) => type(elem.type);\n }\n return (elem) => elem.type === type;\n },\n tag_contains(data) {\n if (typeof data === \"function\") {\n return (elem) => isText(elem) && data(elem.data);\n }\n return (elem) => isText(elem) && elem.data === data;\n },\n};\n/**\n * Returns a function to check whether a node has an attribute with a particular\n * value.\n *\n * @param attrib Attribute to check.\n * @param value Attribute value to look for.\n * @returns A function to check whether the a node has an attribute with a\n * particular value.\n */\nfunction getAttribCheck(attrib, value) {\n if (typeof value === \"function\") {\n return (elem) => isTag(elem) && value(elem.attribs[attrib]);\n }\n return (elem) => isTag(elem) && elem.attribs[attrib] === value;\n}\n/**\n * Returns a function that returns `true` if either of the input functions\n * returns `true` for a node.\n *\n * @param a First function to combine.\n * @param b Second function to combine.\n * @returns A function taking a node and returning `true` if either of the input\n * functions returns `true` for the node.\n */\nfunction combineFuncs(a, b) {\n return (elem) => a(elem) || b(elem);\n}\n/**\n * Returns a function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n *\n * @param options An object describing nodes to look for.\n * @returns A function that executes all checks in `options` and returns `true`\n * if any of them match a node.\n */\nfunction compileTest(options) {\n const funcs = Object.keys(options).map((key) => {\n const value = options[key];\n return Object.prototype.hasOwnProperty.call(Checks, key)\n ? Checks[key](value)\n : getAttribCheck(key, value);\n });\n return funcs.length === 0 ? null : funcs.reduce(combineFuncs);\n}\n/**\n * Checks whether a node matches the description in `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param node The element to test.\n * @returns Whether the element matches the description in `options`.\n */\nexport function testElement(options, node) {\n const test = compileTest(options);\n return test ? test(node) : true;\n}\n/**\n * Returns all nodes that match `options`.\n *\n * @category Legacy Query Functions\n * @param options An object describing nodes to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes that match `options`.\n */\nexport function getElements(options, nodes, recurse, limit = Infinity) {\n const test = compileTest(options);\n return test ? filter(test, nodes, recurse, limit) : [];\n}\n/**\n * Returns the node with the supplied ID.\n *\n * @category Legacy Query Functions\n * @param id The unique ID attribute value to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @returns The node with the supplied ID.\n */\nexport function getElementById(id, nodes, recurse = true) {\n if (!Array.isArray(nodes))\n nodes = [nodes];\n return findOne(getAttribCheck(\"id\", id), nodes, recurse);\n}\n/**\n * Returns all nodes with the supplied `tagName`.\n *\n * @category Legacy Query Functions\n * @param tagName Tag name to search for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `tagName`.\n */\nexport function getElementsByTagName(tagName, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_name\"](tagName), nodes, recurse, limit);\n}\n/**\n * Returns all nodes with the supplied `type`.\n *\n * @category Legacy Query Functions\n * @param type Element type to look for.\n * @param nodes Nodes to search through.\n * @param recurse Also consider child nodes.\n * @param limit Maximum number of nodes to return.\n * @returns All nodes with the supplied `type`.\n */\nexport function getElementsByTagType(type, nodes, recurse = true, limit = Infinity) {\n return filter(Checks[\"tag_type\"](type), nodes, recurse, limit);\n}\n//# sourceMappingURL=legacy.js.map","import { hasChildren } from \"domhandler\";\n/**\n * Given an array of nodes, remove any member that is contained by another\n * member.\n *\n * @category Helpers\n * @param nodes Nodes to filter.\n * @returns Remaining nodes that aren't contained by other nodes.\n */\nexport function removeSubsets(nodes) {\n let idx = nodes.length;\n /*\n * Check if each node (or one of its ancestors) is already contained in the\n * array.\n */\n while (--idx >= 0) {\n const node = nodes[idx];\n /*\n * Remove the node if it is not unique.\n * We are going through the array from the end, so we only\n * have to check nodes that preceed the node under consideration in the array.\n */\n if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) {\n nodes.splice(idx, 1);\n continue;\n }\n for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n if (nodes.includes(ancestor)) {\n nodes.splice(idx, 1);\n break;\n }\n }\n }\n return nodes;\n}\n/**\n * @category Helpers\n * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition}\n */\nexport var DocumentPosition;\n(function (DocumentPosition) {\n DocumentPosition[DocumentPosition[\"DISCONNECTED\"] = 1] = \"DISCONNECTED\";\n DocumentPosition[DocumentPosition[\"PRECEDING\"] = 2] = \"PRECEDING\";\n DocumentPosition[DocumentPosition[\"FOLLOWING\"] = 4] = \"FOLLOWING\";\n DocumentPosition[DocumentPosition[\"CONTAINS\"] = 8] = \"CONTAINS\";\n DocumentPosition[DocumentPosition[\"CONTAINED_BY\"] = 16] = \"CONTAINED_BY\";\n})(DocumentPosition || (DocumentPosition = {}));\n/**\n * Compare the position of one node against another node in any other document,\n * returning a bitmask with the values from {@link DocumentPosition}.\n *\n * Document order:\n * > There is an ordering, document order, defined on all the nodes in the\n * > document corresponding to the order in which the first character of the\n * > XML representation of each node occurs in the XML representation of the\n * > document after expansion of general entities. Thus, the document element\n * > node will be the first node. Element nodes occur before their children.\n * > Thus, document order orders element nodes in order of the occurrence of\n * > their start-tag in the XML (after expansion of entities). The attribute\n * > nodes of an element occur after the element and before its children. The\n * > relative order of attribute nodes is implementation-dependent.\n *\n * Source:\n * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n *\n * @category Helpers\n * @param nodeA The first node to use in the comparison\n * @param nodeB The second node to use in the comparison\n * @returns A bitmask describing the input nodes' relative position.\n *\n * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n * a description of these values.\n */\nexport function compareDocumentPosition(nodeA, nodeB) {\n const aParents = [];\n const bParents = [];\n if (nodeA === nodeB) {\n return 0;\n }\n let current = hasChildren(nodeA) ? nodeA : nodeA.parent;\n while (current) {\n aParents.unshift(current);\n current = current.parent;\n }\n current = hasChildren(nodeB) ? nodeB : nodeB.parent;\n while (current) {\n bParents.unshift(current);\n current = current.parent;\n }\n const maxIdx = Math.min(aParents.length, bParents.length);\n let idx = 0;\n while (idx < maxIdx && aParents[idx] === bParents[idx]) {\n idx++;\n }\n if (idx === 0) {\n return DocumentPosition.DISCONNECTED;\n }\n const sharedParent = aParents[idx - 1];\n const siblings = sharedParent.children;\n const aSibling = aParents[idx];\n const bSibling = bParents[idx];\n if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n if (sharedParent === nodeB) {\n return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY;\n }\n return DocumentPosition.FOLLOWING;\n }\n if (sharedParent === nodeA) {\n return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS;\n }\n return DocumentPosition.PRECEDING;\n}\n/**\n * Sort an array of nodes based on their relative position in the document,\n * removing any duplicate nodes. If the array contains nodes that do not belong\n * to the same document, sort order is unspecified.\n *\n * @category Helpers\n * @param nodes Array of DOM nodes.\n * @returns Collection of unique nodes, sorted in document order.\n */\nexport function uniqueSort(nodes) {\n nodes = nodes.filter((node, i, arr) => !arr.includes(node, i + 1));\n nodes.sort((a, b) => {\n const relative = compareDocumentPosition(a, b);\n if (relative & DocumentPosition.PRECEDING) {\n return -1;\n }\n else if (relative & DocumentPosition.FOLLOWING) {\n return 1;\n }\n return 0;\n });\n return nodes;\n}\n//# sourceMappingURL=helpers.js.map","import { textContent } from \"./stringify.js\";\nimport { getElementsByTagName } from \"./legacy.js\";\n/**\n * Get the feed object from the root of a DOM tree.\n *\n * @category Feeds\n * @param doc - The DOM to to extract the feed from.\n * @returns The feed.\n */\nexport function getFeed(doc) {\n const feedRoot = getOneElement(isValidFeed, doc);\n return !feedRoot\n ? null\n : feedRoot.name === \"feed\"\n ? getAtomFeed(feedRoot)\n : getRssFeed(feedRoot);\n}\n/**\n * Parse an Atom feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getAtomFeed(feedRoot) {\n var _a;\n const childs = feedRoot.children;\n const feed = {\n type: \"atom\",\n items: getElementsByTagName(\"entry\", childs).map((item) => {\n var _a;\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"id\", children);\n addConditionally(entry, \"title\", \"title\", children);\n const href = (_a = getOneElement(\"link\", children)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n entry.link = href;\n }\n const description = fetch(\"summary\", children) || fetch(\"content\", children);\n if (description) {\n entry.description = description;\n }\n const pubDate = fetch(\"updated\", children);\n if (pubDate) {\n entry.pubDate = new Date(pubDate);\n }\n return entry;\n }),\n };\n addConditionally(feed, \"id\", \"id\", childs);\n addConditionally(feed, \"title\", \"title\", childs);\n const href = (_a = getOneElement(\"link\", childs)) === null || _a === void 0 ? void 0 : _a.attribs[\"href\"];\n if (href) {\n feed.link = href;\n }\n addConditionally(feed, \"description\", \"subtitle\", childs);\n const updated = fetch(\"updated\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"email\", childs, true);\n return feed;\n}\n/**\n * Parse a RSS feed.\n *\n * @param feedRoot The root of the feed.\n * @returns The parsed feed.\n */\nfunction getRssFeed(feedRoot) {\n var _a, _b;\n const childs = (_b = (_a = getOneElement(\"channel\", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : [];\n const feed = {\n type: feedRoot.name.substr(0, 3),\n id: \"\",\n items: getElementsByTagName(\"item\", feedRoot.children).map((item) => {\n const { children } = item;\n const entry = { media: getMediaElements(children) };\n addConditionally(entry, \"id\", \"guid\", children);\n addConditionally(entry, \"title\", \"title\", children);\n addConditionally(entry, \"link\", \"link\", children);\n addConditionally(entry, \"description\", \"description\", children);\n const pubDate = fetch(\"pubDate\", children) || fetch(\"dc:date\", children);\n if (pubDate)\n entry.pubDate = new Date(pubDate);\n return entry;\n }),\n };\n addConditionally(feed, \"title\", \"title\", childs);\n addConditionally(feed, \"link\", \"link\", childs);\n addConditionally(feed, \"description\", \"description\", childs);\n const updated = fetch(\"lastBuildDate\", childs);\n if (updated) {\n feed.updated = new Date(updated);\n }\n addConditionally(feed, \"author\", \"managingEditor\", childs, true);\n return feed;\n}\nconst MEDIA_KEYS_STRING = [\"url\", \"type\", \"lang\"];\nconst MEDIA_KEYS_INT = [\n \"fileSize\",\n \"bitrate\",\n \"framerate\",\n \"samplingrate\",\n \"channels\",\n \"duration\",\n \"height\",\n \"width\",\n];\n/**\n * Get all media elements of a feed item.\n *\n * @param where Nodes to search in.\n * @returns Media elements.\n */\nfunction getMediaElements(where) {\n return getElementsByTagName(\"media:content\", where).map((elem) => {\n const { attribs } = elem;\n const media = {\n medium: attribs[\"medium\"],\n isDefault: !!attribs[\"isDefault\"],\n };\n for (const attrib of MEDIA_KEYS_STRING) {\n if (attribs[attrib]) {\n media[attrib] = attribs[attrib];\n }\n }\n for (const attrib of MEDIA_KEYS_INT) {\n if (attribs[attrib]) {\n media[attrib] = parseInt(attribs[attrib], 10);\n }\n }\n if (attribs[\"expression\"]) {\n media.expression = attribs[\"expression\"];\n }\n return media;\n });\n}\n/**\n * Get one element by tag name.\n *\n * @param tagName Tag name to look for\n * @param node Node to search in\n * @returns The element or null\n */\nfunction getOneElement(tagName, node) {\n return getElementsByTagName(tagName, node, true, 1)[0];\n}\n/**\n * Get the text content of an element with a certain tag name.\n *\n * @param tagName Tag name to look for.\n * @param where Node to search in.\n * @param recurse Whether to recurse into child nodes.\n * @returns The text content of the element.\n */\nfunction fetch(tagName, where, recurse = false) {\n return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim();\n}\n/**\n * Adds a property to an object if it has a value.\n *\n * @param obj Object to be extended\n * @param prop Property name\n * @param tagName Tag name that contains the conditionally added property\n * @param where Element to search for the property\n * @param recurse Whether to recurse into child nodes.\n */\nfunction addConditionally(obj, prop, tagName, where, recurse = false) {\n const val = fetch(tagName, where, recurse);\n if (val)\n obj[prop] = val;\n}\n/**\n * Checks if an element is a feed root node.\n *\n * @param value The name of the element to check.\n * @returns Whether an element is a feed root node.\n */\nfunction isValidFeed(value) {\n return value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n}\n//# sourceMappingURL=feeds.js.map","import { Parser } from \"./Parser.js\";\nexport { Parser } from \"./Parser.js\";\nimport { DomHandler, } from \"domhandler\";\nexport { DomHandler, \n// Old name for DomHandler\nDomHandler as DefaultHandler, } from \"domhandler\";\n// Helper methods\n/**\n * Parses the data, returns the resulting document.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n */\nexport function parseDocument(data, options) {\n const handler = new DomHandler(undefined, options);\n new Parser(handler, options).end(data);\n return handler.root;\n}\n/**\n * Parses data, returns an array of the root nodes.\n *\n * Note that the root nodes still have a `Document` node as their parent.\n * Use `parseDocument` to get the `Document` node instead.\n *\n * @param data The data that should be parsed.\n * @param options Optional options for the parser and DOM builder.\n * @deprecated Use `parseDocument` instead.\n */\nexport function parseDOM(data, options) {\n return parseDocument(data, options).children;\n}\n/**\n * Creates a parser instance, with an attached DOM handler.\n *\n * @param callback A callback that will be called once parsing has been completed.\n * @param options Optional options for the parser and DOM builder.\n * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.\n */\nexport function createDomStream(callback, options, elementCallback) {\n const handler = new DomHandler(callback, options, elementCallback);\n return new Parser(handler, options);\n}\nexport { default as Tokenizer, } from \"./Tokenizer.js\";\n/*\n * All of the following exports exist for backwards-compatibility.\n * They should probably be removed eventually.\n */\nexport * as ElementType from \"domelementtype\";\nimport { getFeed } from \"domutils\";\nexport { getFeed } from \"domutils\";\nconst parseFeedDefaultOptions = { xmlMode: true };\n/**\n * Parse a feed.\n *\n * @param feed The feed that should be parsed, as a string.\n * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.\n */\nexport function parseFeed(feed, options = parseFeedDefaultOptions) {\n return getFeed(parseDOM(feed, options));\n}\nexport * as DomUtils from \"domutils\";\n//# sourceMappingURL=index.js.map","'use strict';\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a \\unnnn escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n};\n","/*!\n * is-plain-object <https://github.com/jonschlinkert/is-plain-object>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/**\n * Srcset Parser\n *\n * By Alex Bell | MIT License\n *\n * JS Parser for the string value that appears in markup <img srcset=\"here\">\n *\n * @returns Array [{url: _, d: _, w: _, h:_}, ...]\n *\n * Based super duper closely on the reference algorithm at:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n *\n * Most comments are copied in directly from the spec\n * (except for comments in parens).\n */\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof module === 'object' && module.exports) {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.parseSrcset = factory();\n\t}\n}(this, function () {\n\n\t// 1. Let input be the value passed to this algorithm.\n\treturn function (input) {\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// Manual is faster than RegEx\n\t\t// http://bjorn.tipling.com/state-and-regular-expressions-in-javascript\n\t\t// http://jsperf.com/whitespace-character/5\n\t\tfunction isSpace(c) {\n\t\t\treturn (c === \"\\u0020\" || // space\n\t\t\tc === \"\\u0009\" || // horizontal tab\n\t\t\tc === \"\\u000A\" || // new line\n\t\t\tc === \"\\u000C\" || // form feed\n\t\t\tc === \"\\u000D\"); // carriage return\n\t\t}\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t\tmatch = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\n\t\t\t// (Don't use \\s, to avoid matching non-breaking space)\n\t\t\tregexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t\t\tregexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t\t\tregexTrailingCommas = /[,]+$/,\n\t\t\tregexNonNegativeInteger = /^\\d+$/,\n\n\t\t\t// ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t\t\t// Must include at least one digit.\n\t\t\t// According to spec tests any decimal point must be followed by a digit.\n\t\t\t// No leading plus sign is allowed.)\n\t\t\t// https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t\t\tregexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,\n\n\t\t\turl,\n\t\t\tdescriptors,\n\t\t\tcurrentDescriptor,\n\t\t\tstate,\n\t\t\tc,\n\n\t\t\t// 2. Let position be a pointer into input, initially pointing at the start\n\t\t\t// of the string.\n\t\t\tpos = 0,\n\n\t\t\t// 3. Let candidates be an initially empty source set.\n\t\t\tcandidates = [];\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we're done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === \",\") {\n\t\t\t\turl = url.replace(regexTrailingCommas, \"\");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\n\t\t/**\n\t\t * Tokenizes descriptor properties prior to parsing\n\t\t * Returns undefined.\n\t\t */\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = \"\";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = \"in descriptor\";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, \"EOF\" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === \"in descriptor\") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t\t// Space character\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors and let current descriptor be the empty string.\n\t\t\t\t\t// Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = \"\";\n\t\t\t\t\t\t\tstate = \"after descriptor\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === \",\") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === \"\\u0028\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in parens\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t\t// (end \"in descriptor\"\n\n\t\t\t\t\t// In parens\n\t\t\t\t} else if (state === \"in parens\") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === \")\") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = \"in descriptor\";\n\n\t\t\t\t\t\t// EOF\n\t\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === \"after descriptor\") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === \"\") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\t// Anything else\n\t\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = \"in descriptor\";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t/**\n\t\t * Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t * @return undefined\n\t\t */\n\t\t// Declared outside of the while loop so that it's only created once.\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t\t// 10. Let width be absent.\n\t\t\t\t// 11. Let density be absent.\n\t\t\t\t// 12. Let future-compat-h be absent. (We're implementing it now as h)\n\t\t\t\tw, d, h, i,\n\t\t\t\tcandidate = {},\n\t\t\t\tdesc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === \"w\")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === \"x\")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === \"h\")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tcandidates.push(candidate);\n\t\t\t} else if (console && console.log) {\n\t\t\t\tconsole.log(\"Invalid srcset descriptor found in '\" +\n\t\t\t\t\tinput + \"' at '\" + desc + \"'.\");\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t}\n}));\n","// for now just expose the builtin process global from node.js\nmodule.exports = global.process;\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : '<css input>'\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n if (terminalHighlight) {\n if (color) css = terminalHighlight(css)\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n\n let maxWidth = String(end).length\n\n let mark, aside\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n } else {\n mark = aside = str => str\n }\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^')\n }\n return ' ' + aside(gutter) + line\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let params = node.params ? this.rawValue(node, 'params') : ''\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName\n } else if (params) {\n name += ' '\n }\n\n if (node.nodes) {\n this.block(node, name + params)\n } else {\n let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment')\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule')\n } else {\n value = this.raw(node, null, 'beforeClose')\n }\n\n let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\n if (node.nodes && node.nodes.length) {\n this.body(node)\n after = this.raw(node, 'after')\n } else {\n after = this.raw(node, 'after', 'emptyBody')\n }\n\n if (after) this.builder(after)\n this.builder('}', node, 'end')\n }\n\n body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let string = node.prop + between + this.rawValue(node, 'value')\n\n if (node.important) {\n string += node.raws.important || ' !important'\n }\n\n if (semicolon) string += ';'\n this.builder(string, node)\n }\n\n document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect]\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect)\n } else {\n let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(i => {\n if (i.type !== 'decl') {\n value = i.raws.between\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '')\n return false\n }\n })\n return value\n }\n\n rawEmptyBody(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let parts = i.raws.before.split('\\n')\n value = parts[parts.length - 1]\n value = value.replace(/\\S/g, '')\n return false\n }\n }\n })\n return value\n }\n\n rawSemicolon(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon\n if (typeof value !== 'undefined') return false\n }\n })\n return value\n }\n\n rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = typeof value\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent\n } else if (i === 'source') {\n cloned[i] = value\n } else if (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nclass Node {\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts, stringRepresentation) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index, stringRepresentation)\n } else if (opts.word) {\n stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index, stringRepresentation)\n }\n return pos\n }\n\n positionInside(index, stringRepresentation) {\n let string = stringRepresentation || this.toString()\n let column = this.source.start.column\n let line = this.source.start.line\n\n for (let i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n }\n : {\n column: start.column + 1,\n line: start.line\n }\n\n if (opts.word) {\n let stringRepresentation = this.toString()\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index, stringRepresentation)\n end = this.positionInside(index + opts.word.length, stringRepresentation)\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n }\n } else if (opts.endIndex) {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = { column: start.column + 1, line: start.line }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n\n get proxyOf() {\n return this\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nexport { nanoid, customAlphabet }\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n if (charsetUri.test(text) || uri.test(text)) {\n return decodeURIComponent(text.substr(RegExp.lastMatch.length))\n }\n\n if (baseCharsetUri.test(text) || baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/gm)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\nlet { isAbsolute, resolve } = require('path')\nlet { nanoid } = require('nanoid/non-secure')\n\nlet terminalHighlight = require('./terminal-highlight')\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = '<input css ' + nanoid(6) + '>'\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let result, endLine, endColumn\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n let pos = this.fromOffset(start.offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n }\n if (typeof end.offset === 'number') {\n let pos = this.fromOffset(end.offset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n }\n } else if (!column) {\n let pos = this.fromOffset(line)\n line = pos.line\n column = pos.col\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, line, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromOffset(offset) {\n let lastLine, lineToIndex\n if (!this[fromOffsetCache]) {\n let lines = this.css.split('\\n')\n lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n this[fromOffsetCache] = lineToIndex\n } else {\n lineToIndex = this[fromOffsetCache]\n }\n lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n\n get from() {\n return this.file || this.id\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { dirname, relative, resolve, sep } = require('path')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*?\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev)\n } else {\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({ file: this.outputFile() })\n\n let line = 1\n let column = 1\n\n let noSource = '<no source>'\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let lines, last\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : '<no source>'\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet Declaration = require('./declaration')\nlet Comment = require('./comment')\nlet Node = require('./node')\n\nlet parse, Rule, AtRule, Root\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markDirtyUp(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markDirtyUp(i)\n }\n }\n}\n\nclass Container extends Node {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type) {\n nodes = [nodes]\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation')\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value)\n }\n nodes = [new Declaration(nodes)]\n } else if (nodes.selector) {\n nodes = [new Rule(nodes)]\n } else if (nodes.name) {\n nodes = [new AtRule(nodes)]\n } else if (nodes.text) {\n nodes = [new Comment(nodes)]\n } else {\n throw new Error('Unknown node type in node creation')\n }\n\n let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markDirtyUp(i)\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/\\S/g, '')\n }\n }\n i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, next, quote, content, escape\n let escaped, escapePos, prev, n, currentToken\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n pos = next\n } else {\n next = css.indexOf(')', pos + 1)\n content = css.slice(pos, next + 1)\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(child)\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before\n } else {\n delete sample.raws.before\n }\n } else if (this.first !== sample) {\n for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = letter\n } else if (letter === '(') {\n func += 1\n } else if (letter === ')') {\n if (func > 0) func -= 1\n } else if (func === 0) {\n if (separators.includes(letter)) split = true\n }\n\n if (split) {\n if (current !== '') array.push(current.trim())\n current = ''\n split = false\n } else {\n current += letter\n }\n }\n\n if (last || current !== '') array.push(current.trim())\n return array\n }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet tokenizer = require('./tokenize')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n this.spaces = node.raws.between\n node.raws.between = ''\n }\n } else {\n node.raws.afterName = ''\n node.params = ''\n }\n\n if (open) {\n node.nodes = []\n this.current = node\n }\n }\n\n checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let token, type, prev\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token)\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue\n } else {\n return i\n }\n }\n\n prev = token\n }\n return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n node.text = match[2]\n node.raws.left = match[1]\n node.raws.right = match[3]\n }\n }\n\n createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\n node.raws.between += token[1]\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0]\n node.prop = node.prop.slice(1)\n }\n\n let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let string = this.stringFrom(tokens, i)\n string = this.spacesFromEnd(tokens) + string\n if (string !== ' !important') node.raws.important = string\n break\n } else if (token[1].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().indexOf('!') === 0 && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true\n node.raws.important = str\n tokens = cache\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break\n }\n }\n\n let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.spaces = ''\n\n if (this.current.parent) {\n this.current.source.end = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\n end = true\n break\n } else if (type === ':') {\n colon = true\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n if (brackets.length === 0) bracket = null\n }\n\n token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\n break\n\n case '}':\n this.end(token)\n break\n\n case 'comment':\n this.comment(token)\n break\n\n case 'at-word':\n this.atrule(token)\n break\n\n case '{':\n this.emptyRule(token)\n break\n\n default:\n this.other(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word',\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Parser = require('./parser')\nlet Input = require('./input')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet { isClean, my } = require('./symbols')\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet Container = require('./container')\nlet Document = require('./document')\nlet warnOnce = require('./warn-once')\nlet Result = require('./result')\nlet parse = require('./parse')\nlet Root = require('./root')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {}\n if (!opts.map.inline) opts.map.inline = false\n opts.map.prev = css.map\n }\n } else {\n let parser = parse\n if (opts.syntax) parser = opts.syntax.parse\n if (opts.parser) parser = opts.parser\n if (parser.parse) parser = parser.parse\n\n try {\n root = parser(css, opts)\n } catch (error) {\n this.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\nlet parse = require('./parse')\nconst Result = require('./result')\n\nclass NoWorkResult {\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet NoWorkResult = require('./no-work-result')\nlet LazyResult = require('./lazy-result')\nlet Document = require('./document')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.4.35'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet Declaration = require('./declaration')\nlet PreviousMap = require('./previous-map')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Input = require('./input')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet LazyResult = require('./lazy-result')\nlet Container = require('./container')\nlet Processor = require('./processor')\nlet stringify = require('./stringify')\nlet fromJSON = require('./fromJSON')\nlet Document = require('./document')\nlet Warning = require('./warning')\nlet Comment = require('./comment')\nlet AtRule = require('./at-rule')\nlet Result = require('./result.js')\nlet Input = require('./input')\nlet parse = require('./parse')\nlet list = require('./list')\nlet Rule = require('./rule')\nlet Root = require('./root')\nlet Node = require('./node')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","const htmlparser = require('htmlparser2');\nconst escapeStringRegexp = require('escape-string-regexp');\nconst { isPlainObject } = require('is-plain-object');\nconst deepmerge = require('deepmerge');\nconst parseSrcset = require('parse-srcset');\nconst { parse: postcssParse } = require('postcss');\n// Tags that can conceivably represent stand-alone media.\nconst mediaTags = [\n 'img', 'audio', 'video', 'picture', 'svg',\n 'object', 'map', 'iframe', 'embed'\n];\n// Tags that are inherently vulnerable to being used in XSS attacks.\nconst vulnerableTags = [ 'script', 'style' ];\n\nfunction each(obj, cb) {\n if (obj) {\n Object.keys(obj).forEach(function (key) {\n cb(obj[key], key);\n });\n }\n}\n\n// Avoid false positives with .__proto__, .hasOwnProperty, etc.\nfunction has(obj, key) {\n return ({}).hasOwnProperty.call(obj, key);\n}\n\n// Returns those elements of `a` for which `cb(a)` returns truthy\nfunction filter(a, cb) {\n const n = [];\n each(a, function(v) {\n if (cb(v)) {\n n.push(v);\n }\n });\n return n;\n}\n\nfunction isEmptyObject(obj) {\n for (const key in obj) {\n if (has(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nfunction stringifySrcset(parsedSrcset) {\n return parsedSrcset.map(function(part) {\n if (!part.url) {\n throw new Error('URL missing');\n }\n\n return (\n part.url +\n (part.w ? ` ${part.w}w` : '') +\n (part.h ? ` ${part.h}h` : '') +\n (part.d ? ` ${part.d}x` : '')\n );\n }).join(', ');\n}\n\nmodule.exports = sanitizeHtml;\n\n// A valid attribute name.\n// We use a tolerant definition based on the set of strings defined by\n// html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n// and html.spec.whatwg.org/multipage/parsing.html#attribute-name-state .\n// The characters accepted are ones which can be appended to the attribute\n// name buffer without triggering a parse error:\n// * unexpected-equals-sign-before-attribute-name\n// * unexpected-null-character\n// * unexpected-character-in-attribute-name\n// We exclude the empty string because it's impossible to get to the after\n// attribute name state with an empty attribute name buffer.\nconst VALID_HTML_ATTRIBUTE_NAME = /^[^\\0\\t\\n\\f\\r /<=>]+$/;\n\n// Ignore the _recursing flag; it's there for recursive\n// invocation as a guard against this exploit:\n// https://github.com/fb55/htmlparser2/issues/105\n\nfunction sanitizeHtml(html, options, _recursing) {\n if (html == null) {\n return '';\n }\n if (typeof html === 'number') {\n html = html.toString();\n }\n\n let result = '';\n // Used for hot swapping the result variable with an empty string in order to \"capture\" the text written to it.\n let tempResult = '';\n\n function Frame(tag, attribs) {\n const that = this;\n this.tag = tag;\n this.attribs = attribs || {};\n this.tagPosition = result.length;\n this.text = ''; // Node inner text\n this.mediaChildren = [];\n\n this.updateParentNodeText = function() {\n if (stack.length) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.text += that.text;\n }\n };\n\n this.updateParentNodeMediaChildren = function() {\n if (stack.length && mediaTags.includes(this.tag)) {\n const parentFrame = stack[stack.length - 1];\n parentFrame.mediaChildren.push(this.tag);\n }\n };\n }\n\n options = Object.assign({}, sanitizeHtml.defaults, options);\n options.parser = Object.assign({}, htmlParserDefaults, options.parser);\n\n const tagAllowed = function (name) {\n return options.allowedTags === false || (options.allowedTags || []).indexOf(name) > -1;\n };\n\n // vulnerableTags\n vulnerableTags.forEach(function (tag) {\n if (tagAllowed(tag) && !options.allowVulnerableTags) {\n console.warn(`\\n\\n⚠️ Your \\`allowedTags\\` option includes, \\`${tag}\\`, which is inherently\\nvulnerable to XSS attacks. Please remove it from \\`allowedTags\\`.\\nOr, to disable this warning, add the \\`allowVulnerableTags\\` option\\nand ensure you are accounting for this risk.\\n\\n`);\n }\n });\n\n // Tags that contain something other than HTML, or where discarding\n // the text when the tag is disallowed makes sense for other reasons.\n // If we are not allowing these tags, we should drop their content too.\n // For other tags you would drop the tag but keep its content.\n const nonTextTagsArray = options.nonTextTags || [\n 'script',\n 'style',\n 'textarea',\n 'option'\n ];\n let allowedAttributesMap;\n let allowedAttributesGlobMap;\n if (options.allowedAttributes) {\n allowedAttributesMap = {};\n allowedAttributesGlobMap = {};\n each(options.allowedAttributes, function(attributes, tag) {\n allowedAttributesMap[tag] = [];\n const globRegex = [];\n attributes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else {\n allowedAttributesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedAttributesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n });\n }\n const allowedClassesMap = {};\n const allowedClassesGlobMap = {};\n const allowedClassesRegexMap = {};\n each(options.allowedClasses, function(classes, tag) {\n // Implicitly allows the class attribute\n if (allowedAttributesMap) {\n if (!has(allowedAttributesMap, tag)) {\n allowedAttributesMap[tag] = [];\n }\n allowedAttributesMap[tag].push('class');\n }\n\n allowedClassesMap[tag] = classes;\n\n if (Array.isArray(classes)) {\n const globRegex = [];\n allowedClassesMap[tag] = [];\n allowedClassesRegexMap[tag] = [];\n classes.forEach(function(obj) {\n if (typeof obj === 'string' && obj.indexOf('*') >= 0) {\n globRegex.push(escapeStringRegexp(obj).replace(/\\\\\\*/g, '.*'));\n } else if (obj instanceof RegExp) {\n allowedClassesRegexMap[tag].push(obj);\n } else {\n allowedClassesMap[tag].push(obj);\n }\n });\n if (globRegex.length) {\n allowedClassesGlobMap[tag] = new RegExp('^(' + globRegex.join('|') + ')$');\n }\n }\n });\n\n const transformTagsMap = {};\n let transformTagsAll;\n each(options.transformTags, function(transform, tag) {\n let transFun;\n if (typeof transform === 'function') {\n transFun = transform;\n } else if (typeof transform === 'string') {\n transFun = sanitizeHtml.simpleTransform(transform);\n }\n if (tag === '*') {\n transformTagsAll = transFun;\n } else {\n transformTagsMap[tag] = transFun;\n }\n });\n\n let depth;\n let stack;\n let skipMap;\n let transformMap;\n let skipText;\n let skipTextDepth;\n let addedText = false;\n\n initializeState();\n\n const parser = new htmlparser.Parser({\n onopentag: function(name, attribs) {\n // If `enforceHtmlBoundary` is `true` and this has found the opening\n // `html` tag, reset the state.\n if (options.enforceHtmlBoundary && name === 'html') {\n initializeState();\n }\n\n if (skipText) {\n skipTextDepth++;\n return;\n }\n const frame = new Frame(name, attribs);\n stack.push(frame);\n\n let skip = false;\n const hasText = !!frame.text;\n let transformedTag;\n if (has(transformTagsMap, name)) {\n transformedTag = transformTagsMap[name](name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n\n if (transformedTag.text !== undefined) {\n frame.innerText = transformedTag.text;\n }\n\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n if (transformTagsAll) {\n transformedTag = transformTagsAll(name, attribs);\n\n frame.attribs = attribs = transformedTag.attribs;\n if (name !== transformedTag.tagName) {\n frame.name = name = transformedTag.tagName;\n transformMap[depth] = transformedTag.tagName;\n }\n }\n\n if (!tagAllowed(name) || (options.disallowedTagsMode === 'recursiveEscape' && !isEmptyObject(skipMap)) || (options.nestingLimit != null && depth >= options.nestingLimit)) {\n skip = true;\n skipMap[depth] = true;\n if (options.disallowedTagsMode === 'discard') {\n if (nonTextTagsArray.indexOf(name) !== -1) {\n skipText = true;\n skipTextDepth = 1;\n }\n }\n skipMap[depth] = true;\n }\n depth++;\n if (skip) {\n if (options.disallowedTagsMode === 'discard') {\n // We want the contents but not this tag\n return;\n }\n tempResult = result;\n result = '';\n }\n result += '<' + name;\n\n if (name === 'script') {\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n frame.innerText = '';\n }\n }\n\n if (!allowedAttributesMap || has(allowedAttributesMap, name) || allowedAttributesMap['*']) {\n each(attribs, function(value, a) {\n if (!VALID_HTML_ATTRIBUTE_NAME.test(a)) {\n // This prevents part of an attribute name in the output from being\n // interpreted as the end of an attribute, or end of a tag.\n delete frame.attribs[a];\n return;\n }\n // If the value is empty, and this is a known non-boolean attribute, delete it\n // List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n if (value === '' && (options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {\n delete frame.attribs[a];\n return;\n }\n // check allowedAttributesMap for the element and attribute and modify the value\n // as necessary if there are specific values defined.\n let passedAllowedAttributesMapCheck = false;\n if (!allowedAttributesMap ||\n (has(allowedAttributesMap, name) && allowedAttributesMap[name].indexOf(a) !== -1) ||\n (allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||\n (has(allowedAttributesGlobMap, name) && allowedAttributesGlobMap[name].test(a)) ||\n (allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {\n passedAllowedAttributesMapCheck = true;\n } else if (allowedAttributesMap && allowedAttributesMap[name]) {\n for (const o of allowedAttributesMap[name]) {\n if (isPlainObject(o) && o.name && (o.name === a)) {\n passedAllowedAttributesMapCheck = true;\n let newValue = '';\n if (o.multiple === true) {\n // verify the values that are allowed\n const splitStrArray = value.split(' ');\n for (const s of splitStrArray) {\n if (o.values.indexOf(s) !== -1) {\n if (newValue === '') {\n newValue = s;\n } else {\n newValue += ' ' + s;\n }\n }\n }\n } else if (o.values.indexOf(value) >= 0) {\n // verified an allowed value matches the entire attribute value\n newValue = value;\n }\n value = newValue;\n }\n }\n }\n if (passedAllowedAttributesMapCheck) {\n if (options.allowedSchemesAppliedToAttributes.indexOf(a) !== -1) {\n if (naughtyHref(name, value)) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'script' && a === 'src') {\n\n let allowed = true;\n\n try {\n const parsed = parseUrl(value);\n\n if (options.allowedScriptHostnames || options.allowedScriptDomains) {\n const allowedHostname = (options.allowedScriptHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedScriptDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n allowed = false;\n }\n\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n\n if (name === 'iframe' && a === 'src') {\n let allowed = true;\n try {\n const parsed = parseUrl(value);\n\n if (parsed.isRelativeUrl) {\n // default value of allowIframeRelativeUrls is true\n // unless allowedIframeHostnames or allowedIframeDomains specified\n allowed = has(options, 'allowIframeRelativeUrls')\n ? options.allowIframeRelativeUrls\n : (!options.allowedIframeHostnames && !options.allowedIframeDomains);\n } else if (options.allowedIframeHostnames || options.allowedIframeDomains) {\n const allowedHostname = (options.allowedIframeHostnames || []).find(function (hostname) {\n return hostname === parsed.url.hostname;\n });\n const allowedDomain = (options.allowedIframeDomains || []).find(function(domain) {\n return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);\n });\n allowed = allowedHostname || allowedDomain;\n }\n } catch (e) {\n // Unparseable iframe src\n allowed = false;\n }\n if (!allowed) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'srcset') {\n try {\n let parsed = parseSrcset(value);\n parsed.forEach(function(value) {\n if (naughtyHref('srcset', value.url)) {\n value.evil = true;\n }\n });\n parsed = filter(parsed, function(v) {\n return !v.evil;\n });\n if (!parsed.length) {\n delete frame.attribs[a];\n return;\n } else {\n value = stringifySrcset(filter(parsed, function(v) {\n return !v.evil;\n }));\n frame.attribs[a] = value;\n }\n } catch (e) {\n // Unparseable srcset\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'class') {\n const allowedSpecificClasses = allowedClassesMap[name];\n const allowedWildcardClasses = allowedClassesMap['*'];\n const allowedSpecificClassesGlob = allowedClassesGlobMap[name];\n const allowedSpecificClassesRegex = allowedClassesRegexMap[name];\n const allowedWildcardClassesGlob = allowedClassesGlobMap['*'];\n const allowedClassesGlobs = [\n allowedSpecificClassesGlob,\n allowedWildcardClassesGlob\n ]\n .concat(allowedSpecificClassesRegex)\n .filter(function (t) {\n return t;\n });\n if (allowedSpecificClasses && allowedWildcardClasses) {\n value = filterClasses(value, deepmerge(allowedSpecificClasses, allowedWildcardClasses), allowedClassesGlobs);\n } else {\n value = filterClasses(value, allowedSpecificClasses || allowedWildcardClasses, allowedClassesGlobs);\n }\n if (!value.length) {\n delete frame.attribs[a];\n return;\n }\n }\n if (a === 'style') {\n if (options.parseStyleAttributes) {\n try {\n const abstractSyntaxTree = postcssParse(name + ' {' + value + '}');\n const filteredAST = filterCss(abstractSyntaxTree, options.allowedStyles);\n\n value = stringifyStyleAttributes(filteredAST);\n\n if (value.length === 0) {\n delete frame.attribs[a];\n return;\n }\n } catch (e) {\n if (typeof window !== 'undefined') {\n console.warn('Failed to parse \"' + name + ' {' + value + '}' + '\", If you\\'re running this in a browser, we recommend to disable style parsing: options.parseStyleAttributes: false, since this only works in a node environment due to a postcss dependency, More info: https://github.com/apostrophecms/sanitize-html/issues/547');\n }\n delete frame.attribs[a];\n return;\n }\n } else if (options.allowedStyles) {\n throw new Error('allowedStyles option cannot be used together with parseStyleAttributes: false.');\n }\n }\n result += ' ' + a;\n if (value && value.length) {\n result += '=\"' + escapeHtml(value, true) + '\"';\n }\n } else {\n delete frame.attribs[a];\n }\n });\n }\n if (options.selfClosing.indexOf(name) !== -1) {\n result += ' />';\n } else {\n result += '>';\n if (frame.innerText && !hasText && !options.textFilter) {\n result += escapeHtml(frame.innerText);\n addedText = true;\n }\n }\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n },\n ontext: function(text) {\n if (skipText) {\n return;\n }\n const lastFrame = stack[stack.length - 1];\n let tag;\n\n if (lastFrame) {\n tag = lastFrame.tag;\n // If inner text was set by transform function then let's use it\n text = lastFrame.innerText !== undefined ? lastFrame.innerText : text;\n }\n\n if (options.disallowedTagsMode === 'discard' && ((tag === 'script') || (tag === 'style'))) {\n // htmlparser2 gives us these as-is. Escaping them ruins the content. Allowing\n // script tags is, by definition, game over for XSS protection, so if that's\n // your concern, don't allow them. The same is essentially true for style tags\n // which have their own collection of XSS vectors.\n result += text;\n } else {\n const escaped = escapeHtml(text, false);\n if (options.textFilter && !addedText) {\n result += options.textFilter(escaped, tag);\n } else if (!addedText) {\n result += escaped;\n }\n }\n if (stack.length) {\n const frame = stack[stack.length - 1];\n frame.text += text;\n }\n },\n onclosetag: function(name, isImplied) {\n\n if (skipText) {\n skipTextDepth--;\n if (!skipTextDepth) {\n skipText = false;\n } else {\n return;\n }\n }\n\n const frame = stack.pop();\n if (!frame) {\n // Do not crash on bad markup\n return;\n }\n\n if (frame.tag !== name) {\n // Another case of bad markup.\n // Push to stack, so that it will be used in future closing tags.\n stack.push(frame);\n return;\n }\n\n skipText = options.enforceHtmlBoundary ? name === 'html' : false;\n depth--;\n const skip = skipMap[depth];\n if (skip) {\n delete skipMap[depth];\n if (options.disallowedTagsMode === 'discard') {\n frame.updateParentNodeText();\n return;\n }\n tempResult = result;\n result = '';\n }\n\n if (transformMap[depth]) {\n name = transformMap[depth];\n delete transformMap[depth];\n }\n\n if (options.exclusiveFilter && options.exclusiveFilter(frame)) {\n result = result.substr(0, frame.tagPosition);\n return;\n }\n\n frame.updateParentNodeMediaChildren();\n frame.updateParentNodeText();\n\n if (\n // Already output />\n options.selfClosing.indexOf(name) !== -1 ||\n // Escaped tag, closing tag is implied\n (isImplied && !tagAllowed(name) && [ 'escape', 'recursiveEscape' ].indexOf(options.disallowedTagsMode) >= 0)\n ) {\n if (skip) {\n result = tempResult;\n tempResult = '';\n }\n return;\n }\n\n result += '</' + name + '>';\n if (skip) {\n result = tempResult + escapeHtml(result);\n tempResult = '';\n }\n addedText = false;\n }\n }, options.parser);\n parser.write(html);\n parser.end();\n\n return result;\n\n function initializeState() {\n result = '';\n depth = 0;\n stack = [];\n skipMap = {};\n transformMap = {};\n skipText = false;\n skipTextDepth = 0;\n }\n\n function escapeHtml(s, quote) {\n if (typeof (s) !== 'string') {\n s = s + '';\n }\n if (options.parser.decodeEntities) {\n s = s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n }\n // TODO: this is inadequate because it will pass `&0;`. This approach\n // will not work, each & must be considered with regard to whether it\n // is followed by a 100% syntactically valid entity or not, and escaped\n // if it is not. If this bothers you, don't set parser.decodeEntities\n // to false. (The default is true.)\n s = s.replace(/&(?![a-zA-Z0-9#]{1,20};)/g, '&') // Match ampersands not part of existing HTML entity\n .replace(/</g, '<')\n .replace(/>/g, '>');\n if (quote) {\n s = s.replace(/\"/g, '"');\n }\n return s;\n }\n\n function naughtyHref(name, href) {\n // Browsers ignore character codes of 32 (space) and below in a surprising\n // number of situations. Start reading here:\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet#Embedded_tab\n // eslint-disable-next-line no-control-regex\n href = href.replace(/[\\x00-\\x20]+/g, '');\n // Clobber any comments in URLs, which the browser might\n // interpret inside an XML data island, allowing\n // a javascript: URL to be snuck through\n while (true) {\n const firstIndex = href.indexOf('<!--');\n if (firstIndex === -1) {\n break;\n }\n const lastIndex = href.indexOf('-->', firstIndex + 4);\n if (lastIndex === -1) {\n break;\n }\n href = href.substring(0, firstIndex) + href.substring(lastIndex + 3);\n }\n // Case insensitive so we don't get faked out by JAVASCRIPT #1\n // Allow more characters after the first so we don't get faked\n // out by certain schemes browsers accept\n const matches = href.match(/^([a-zA-Z][a-zA-Z0-9.\\-+]*):/);\n if (!matches) {\n // Protocol-relative URL starting with any combination of '/' and '\\'\n if (href.match(/^[/\\\\]{2}/)) {\n return !options.allowProtocolRelative;\n }\n\n // No scheme\n return false;\n }\n const scheme = matches[1].toLowerCase();\n\n if (has(options.allowedSchemesByTag, name)) {\n return options.allowedSchemesByTag[name].indexOf(scheme) === -1;\n }\n\n return !options.allowedSchemes || options.allowedSchemes.indexOf(scheme) === -1;\n }\n\n function parseUrl(value) {\n value = value.replace(/^(\\w+:)?\\s*[\\\\/]\\s*[\\\\/]/, '$1//');\n if (value.startsWith('relative:')) {\n // An attempt to exploit our workaround for base URLs being\n // mandatory for relative URL validation in the WHATWG\n // URL parser, reject it\n throw new Error('relative: exploit attempt');\n }\n // naughtyHref is in charge of whether protocol relative URLs\n // are cool. Here we are concerned just with allowed hostnames and\n // whether to allow relative URLs.\n //\n // Build a placeholder \"base URL\" against which any reasonable\n // relative URL may be parsed successfully\n let base = 'relative://relative-site';\n for (let i = 0; (i < 100); i++) {\n base += `/${i}`;\n }\n\n const parsed = new URL(value, base);\n\n const isRelativeUrl = parsed && parsed.hostname === 'relative-site' && parsed.protocol === 'relative:';\n return {\n isRelativeUrl,\n url: parsed\n };\n }\n /**\n * Filters user input css properties by allowlisted regex attributes.\n * Modifies the abstractSyntaxTree object.\n *\n * @param {object} abstractSyntaxTree - Object representation of CSS attributes.\n * @property {array[Declaration]} abstractSyntaxTree.nodes[0] - Each object cointains prop and value key, i.e { prop: 'color', value: 'red' }.\n * @param {object} allowedStyles - Keys are properties (i.e color), value is list of permitted regex rules (i.e /green/i).\n * @return {object} - The modified tree.\n */\n function filterCss(abstractSyntaxTree, allowedStyles) {\n if (!allowedStyles) {\n return abstractSyntaxTree;\n }\n\n const astRules = abstractSyntaxTree.nodes[0];\n let selectedRule;\n\n // Merge global and tag-specific styles into new AST.\n if (allowedStyles[astRules.selector] && allowedStyles['*']) {\n selectedRule = deepmerge(\n allowedStyles[astRules.selector],\n allowedStyles['*']\n );\n } else {\n selectedRule = allowedStyles[astRules.selector] || allowedStyles['*'];\n }\n\n if (selectedRule) {\n abstractSyntaxTree.nodes[0].nodes = astRules.nodes.reduce(filterDeclarations(selectedRule), []);\n }\n\n return abstractSyntaxTree;\n }\n\n /**\n * Extracts the style attributes from an AbstractSyntaxTree and formats those\n * values in the inline style attribute format.\n *\n * @param {AbstractSyntaxTree} filteredAST\n * @return {string} - Example: \"color:yellow;text-align:center !important;font-family:helvetica;\"\n */\n function stringifyStyleAttributes(filteredAST) {\n return filteredAST.nodes[0].nodes\n .reduce(function(extractedAttributes, attrObject) {\n extractedAttributes.push(\n `${attrObject.prop}:${attrObject.value}${attrObject.important ? ' !important' : ''}`\n );\n return extractedAttributes;\n }, [])\n .join(';');\n }\n\n /**\n * Filters the existing attributes for the given property. Discards any attributes\n * which don't match the allowlist.\n *\n * @param {object} selectedRule - Example: { color: red, font-family: helvetica }\n * @param {array} allowedDeclarationsList - List of declarations which pass the allowlist.\n * @param {object} attributeObject - Object representing the current css property.\n * @property {string} attributeObject.type - Typically 'declaration'.\n * @property {string} attributeObject.prop - The CSS property, i.e 'color'.\n * @property {string} attributeObject.value - The corresponding value to the css property, i.e 'red'.\n * @return {function} - When used in Array.reduce, will return an array of Declaration objects\n */\n function filterDeclarations(selectedRule) {\n return function (allowedDeclarationsList, attributeObject) {\n // If this property is allowlisted...\n if (has(selectedRule, attributeObject.prop)) {\n const matchesRegex = selectedRule[attributeObject.prop].some(function(regularExpression) {\n return regularExpression.test(attributeObject.value);\n });\n\n if (matchesRegex) {\n allowedDeclarationsList.push(attributeObject);\n }\n }\n return allowedDeclarationsList;\n };\n }\n\n function filterClasses(classes, allowed, allowedGlobs) {\n if (!allowed) {\n // The class attribute is allowed without filtering on this tag\n return classes;\n }\n classes = classes.split(/\\s+/);\n return classes.filter(function(clss) {\n return allowed.indexOf(clss) !== -1 || allowedGlobs.some(function(glob) {\n return glob.test(clss);\n });\n }).join(' ');\n }\n}\n\n// Defaults are accessible to you so that you can use them as a starting point\n// programmatically if you wish\n\nconst htmlParserDefaults = {\n decodeEntities: true\n};\nsanitizeHtml.defaults = {\n allowedTags: [\n // Sections derived from MDN element categories and limited to the more\n // benign categories.\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element\n // Content sectioning\n 'address', 'article', 'aside', 'footer', 'header',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup',\n 'main', 'nav', 'section',\n // Text content\n 'blockquote', 'dd', 'div', 'dl', 'dt', 'figcaption', 'figure',\n 'hr', 'li', 'main', 'ol', 'p', 'pre', 'ul',\n // Inline text semantics\n 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'code', 'data', 'dfn',\n 'em', 'i', 'kbd', 'mark', 'q',\n 'rb', 'rp', 'rt', 'rtc', 'ruby',\n 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr',\n // Table content\n 'caption', 'col', 'colgroup', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'\n ],\n // Tags that cannot be boolean\n nonBooleanAttributes: [\n 'abbr', 'accept', 'accept-charset', 'accesskey', 'action',\n 'allow', 'alt', 'as', 'autocapitalize', 'autocomplete',\n 'blocking', 'charset', 'cite', 'class', 'color', 'cols',\n 'colspan', 'content', 'contenteditable', 'coords', 'crossorigin',\n 'data', 'datetime', 'decoding', 'dir', 'dirname', 'download',\n 'draggable', 'enctype', 'enterkeyhint', 'fetchpriority', 'for',\n 'form', 'formaction', 'formenctype', 'formmethod', 'formtarget',\n 'headers', 'height', 'hidden', 'high', 'href', 'hreflang',\n 'http-equiv', 'id', 'imagesizes', 'imagesrcset', 'inputmode',\n 'integrity', 'is', 'itemid', 'itemprop', 'itemref', 'itemtype',\n 'kind', 'label', 'lang', 'list', 'loading', 'low', 'max',\n 'maxlength', 'media', 'method', 'min', 'minlength', 'name',\n 'nonce', 'optimum', 'pattern', 'ping', 'placeholder', 'popover',\n 'popovertarget', 'popovertargetaction', 'poster', 'preload',\n 'referrerpolicy', 'rel', 'rows', 'rowspan', 'sandbox', 'scope',\n 'shape', 'size', 'sizes', 'slot', 'span', 'spellcheck', 'src',\n 'srcdoc', 'srclang', 'srcset', 'start', 'step', 'style',\n 'tabindex', 'target', 'title', 'translate', 'type', 'usemap',\n 'value', 'width', 'wrap',\n // Event handlers\n 'onauxclick', 'onafterprint', 'onbeforematch', 'onbeforeprint',\n 'onbeforeunload', 'onbeforetoggle', 'onblur', 'oncancel',\n 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'onclose',\n 'oncontextlost', 'oncontextmenu', 'oncontextrestored', 'oncopy',\n 'oncuechange', 'oncut', 'ondblclick', 'ondrag', 'ondragend',\n 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart',\n 'ondrop', 'ondurationchange', 'onemptied', 'onended',\n 'onerror', 'onfocus', 'onformdata', 'onhashchange', 'oninput',\n 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup',\n 'onlanguagechange', 'onload', 'onloadeddata', 'onloadedmetadata',\n 'onloadstart', 'onmessage', 'onmessageerror', 'onmousedown',\n 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout',\n 'onmouseover', 'onmouseup', 'onoffline', 'ononline', 'onpagehide',\n 'onpageshow', 'onpaste', 'onpause', 'onplay', 'onplaying',\n 'onpopstate', 'onprogress', 'onratechange', 'onreset', 'onresize',\n 'onrejectionhandled', 'onscroll', 'onscrollend',\n 'onsecuritypolicyviolation', 'onseeked', 'onseeking', 'onselect',\n 'onslotchange', 'onstalled', 'onstorage', 'onsubmit', 'onsuspend',\n 'ontimeupdate', 'ontoggle', 'onunhandledrejection', 'onunload',\n 'onvolumechange', 'onwaiting', 'onwheel'\n ],\n disallowedTagsMode: 'discard',\n allowedAttributes: {\n a: [ 'href', 'name', 'target' ],\n // We don't currently allow img itself by default, but\n // these attributes would make sense if we did.\n img: [ 'src', 'srcset', 'alt', 'title', 'width', 'height', 'loading' ]\n },\n // Lots of these won't come up by default because we don't allow them\n selfClosing: [ 'img', 'br', 'hr', 'area', 'base', 'basefont', 'input', 'link', 'meta' ],\n // URL schemes we permit\n allowedSchemes: [ 'http', 'https', 'ftp', 'mailto', 'tel' ],\n allowedSchemesByTag: {},\n allowedSchemesAppliedToAttributes: [ 'href', 'src', 'cite' ],\n allowProtocolRelative: true,\n enforceHtmlBoundary: false,\n parseStyleAttributes: true\n};\n\nsanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {\n merge = (merge === undefined) ? true : merge;\n newAttribs = newAttribs || {};\n\n return function(tagName, attribs) {\n let attrib;\n if (merge) {\n for (attrib in newAttribs) {\n attribs[attrib] = newAttribs[attrib];\n }\n } else {\n attribs = newAttribs;\n }\n\n return {\n tagName: newTagName,\n attribs: attribs\n };\n };\n};\n"],"mappings":"6DAEAA,OAAOC,eAAeC,EAAS,aAAc,CAAEC,MAAO,O,UACpC,IAAIC,YAEtB,2keACKC,MAAM,IACNC,KAAI,SAAUC,GAAK,OAAOA,EAAEC,WAAW,EAAG,K,SCL/CR,OAAOC,eAAeQ,EAAS,aAAc,CAAEN,MAAO,O,UACpC,IAAIC,YAEtB,sCACKC,MAAM,IACNC,KAAI,SAAUC,GAAK,OAAOA,EAAEC,WAAW,EAAG,K,sBCL/C,IAAIE,EACJV,OAAOC,eAAcU,EAAU,aAAc,CAAER,MAAO,OACtDQ,EAAAC,iBAA2BD,EAAAE,mBAA6B,EACxD,IAAIC,EAAY,IAAIC,IAAI,CACpB,CAAC,EAAG,OAEJ,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,MACN,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,OAKVJ,EAAAE,eAECH,EAAKM,OAAOH,iBAAmB,MAAQH,SAAY,EAAIA,EAAK,SAAUO,GACnE,IAAIC,EAAS,GACb,GAAID,EAAY,MAAQ,CACpBA,GAAa,MACbC,GAAUF,OAAOG,aAAeF,IAAc,GAAM,KAAS,OAC7DA,EAAY,MAAUA,EAAY,IAC1C,CACIC,GAAUF,OAAOG,aAAaF,GAC9B,OAAOC,CACX,EAMA,SAASN,EAAiBK,GACtB,IAAIP,EACJ,GAAKO,GAAa,OAAUA,GAAa,OAAWA,EAAY,QAAU,CACtE,OAAO,KACf,CACI,OAAQP,EAAKI,EAAUM,IAAIH,MAAgB,MAAQP,SAAY,EAAIA,EAAKO,CAC5E,CACAN,EAAAC,iBAA2BA,EAQ3B,SAASS,EAAgBJ,GACrB,OAAO,EAAIN,EAAQE,eAAeD,EAAiBK,GACvD,CACAN,EAAAW,QAAkBD,C,mBCzElB,IAAIE,EAAmBC,GAAQA,EAAKD,kBAAqBvB,OAAOyB,OAAM,SAAaC,EAAGC,EAAGC,EAAGC,GACxF,GAAIA,IAAOC,UAAWD,EAAKD,EAC3B,IAAIG,EAAO/B,OAAOgC,yBAAyBL,EAAGC,GAC9C,IAAKG,IAAS,QAASA,GAAQJ,EAAEM,WAAaF,EAAKG,UAAYH,EAAKI,cAAe,CACjFJ,EAAO,CAAEK,WAAY,KAAMhB,IAAK,WAAa,OAAOO,EAAEC,EAAG,EAC/D,CACI5B,OAAOC,eAAeyB,EAAGG,EAAIE,EAChC,WAAcL,EAAGC,EAAGC,EAAGC,GACpB,GAAIA,IAAOC,UAAWD,EAAKD,EAC3BF,EAAEG,GAAMF,EAAEC,EACb,GACD,IAAIS,EAAsBb,GAAQA,EAAKa,qBAAwBrC,OAAOyB,OAAM,SAAaC,EAAGY,GACxFtC,OAAOC,eAAeyB,EAAG,UAAW,CAAEU,WAAY,KAAMjC,MAAOmC,GAClE,EAAI,SAASZ,EAAGY,GACbZ,EAAE,WAAaY,CACnB,GACA,IAAIC,EAAgBf,GAAQA,EAAKe,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIP,WAAY,OAAOO,EAClC,IAAIC,EAAS,GACb,GAAID,GAAO,KAAM,IAAK,IAAIZ,KAAKY,EAAK,GAAIZ,IAAM,WAAa5B,OAAO0C,UAAUC,eAAeC,KAAKJ,EAAKZ,GAAIL,EAAgBkB,EAAQD,EAAKZ,GACtIS,EAAmBI,EAAQD,GAC3B,OAAOC,CACX,EACA,IAAII,EAAmBrB,GAAQA,EAAKqB,iBAAoB,SAAUL,GAC9D,OAAQA,GAAOA,EAAIP,WAAcO,EAAM,CAAElB,QAAWkB,EACxD,EACAxC,OAAOC,eAAcU,EAAU,aAAc,CAAER,MAAO,OACtDQ,EAAAmC,UAAoBnC,EAAAoC,iBAA2BpC,EAAAqC,oBAA8BrC,EAAAsC,WAAqBtC,EAAAuC,gBAA0BvC,EAAAwC,cAAwBxC,EAAAyC,aAAuBzC,EAAA0C,aAAuB1C,EAAAE,cAAwBF,EAAAC,iBAA2BD,EAAAU,gBAA0BV,EAAA2C,cAAwB3C,EAAA4C,oBAA8B,EACrU,IAAIC,EAAwBX,EAAgBY,GAC5C9C,EAAA4C,eAAyBC,EAAsBlC,QAC/C,IAAIoC,EAAuBb,EAAgBc,GAC3ChD,EAAA2C,cAAwBI,EAAqBpC,QAC7C,IAAIsC,EAAwBrB,EAAasB,GACzClD,EAAAU,gBAA0BuC,EAAsBtC,QAChD,IAAIwC,EAAwBD,EAC5B7D,OAAOC,eAAeU,EAAS,mBAAoB,CAAEyB,WAAY,KAAMhB,IAAK,WAAc,OAAO0C,EAAsBlD,gBAAiB,IACxIZ,OAAOC,eAAeU,EAAS,gBAAiB,CAAEyB,WAAY,KAAMhB,IAAK,WAAc,OAAO0C,EAAsBjD,aAAc,IAClI,IAAIkD,GACJ,SAAWA,GACPA,EAAUA,EAAU,OAAS,IAAM,MACnCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,WAAa,IAAM,UACvCA,EAAUA,EAAU,WAAa,KAAO,UACxCA,EAAUA,EAAU,WAAa,KAAO,UACxCA,EAAUA,EAAU,WAAa,KAAO,UACxCA,EAAUA,EAAU,WAAa,IAAM,UACvCA,EAAUA,EAAU,WAAa,IAAM,UACvCA,EAAUA,EAAU,WAAa,IAAM,SAC1C,EAbD,CAaGA,IAAcA,EAAY,KAE7B,IAAIC,EAAe,GACnB,IAAIX,GACJ,SAAWA,GACPA,EAAaA,EAAa,gBAAkB,OAAS,eACrDA,EAAaA,EAAa,iBAAmB,OAAS,gBACtDA,EAAaA,EAAa,cAAgB,KAAO,YACpD,EAJD,CAIGA,EAAe1C,EAAQ0C,eAAiB1C,EAAA0C,aAAuB,KAClE,SAASY,EAASC,GACd,OAAOA,GAAQH,EAAUI,MAAQD,GAAQH,EAAUK,IACvD,CACA,SAASC,EAAuBH,GAC5B,OAASA,GAAQH,EAAUO,SAAWJ,GAAQH,EAAUQ,SACnDL,GAAQH,EAAUS,SAAWN,GAAQH,EAAUU,OACxD,CACA,SAASC,EAAoBR,GACzB,OAASA,GAAQH,EAAUO,SAAWJ,GAAQH,EAAUY,SACnDT,GAAQH,EAAUS,SAAWN,GAAQH,EAAUa,SAChDX,EAASC,EACjB,CAOA,SAASW,EAA8BX,GACnC,OAAOA,IAASH,EAAUe,QAAUJ,EAAoBR,EAC5D,CACA,IAAIa,GACJ,SAAWA,GACPA,EAAmBA,EAAmB,eAAiB,GAAK,cAC5DA,EAAmBA,EAAmB,gBAAkB,GAAK,eAC7DA,EAAmBA,EAAmB,kBAAoB,GAAK,iBAC/DA,EAAmBA,EAAmB,cAAgB,GAAK,aAC3DA,EAAmBA,EAAmB,eAAiB,GAAK,aAC/D,EAND,CAMGA,IAAuBA,EAAqB,KAC/C,IAAI3B,GACJ,SAAWA,GAEPA,EAAaA,EAAa,UAAY,GAAK,SAE3CA,EAAaA,EAAa,UAAY,GAAK,SAE3CA,EAAaA,EAAa,aAAe,GAAK,WACjD,EAPD,CAOGA,EAAezC,EAAQyC,eAAiBzC,EAAAyC,aAAuB,KAIlE,IAAID,EAA+B,WAC/B,SAASA,EAET6B,EAUAC,EAEAC,GACI1D,KAAKwD,WAAaA,EAClBxD,KAAKyD,cAAgBA,EACrBzD,KAAK0D,OAASA,EAEd1D,KAAK2D,MAAQJ,EAAmBK,YAEhC5D,KAAK6D,SAAW,EAOhB7D,KAAKiB,OAAS,EAEdjB,KAAK8D,UAAY,EAEjB9D,KAAK+D,OAAS,EAEd/D,KAAKgE,WAAapC,EAAaqC,MACvC,CAEItC,EAAcT,UAAUgD,YAAc,SAAUF,GAC5ChE,KAAKgE,WAAaA,EAClBhE,KAAK2D,MAAQJ,EAAmBK,YAChC5D,KAAKiB,OAAS,EACdjB,KAAK8D,UAAY,EACjB9D,KAAK+D,OAAS,EACd/D,KAAK6D,SAAW,CACxB,EAYIlC,EAAcT,UAAUiD,MAAQ,SAAUC,EAAKC,GAC3C,OAAQrE,KAAK2D,OACT,KAAKJ,EAAmBK,YAAa,CACjC,GAAIQ,EAAIpF,WAAWqF,KAAY9B,EAAU+B,IAAK,CAC1CtE,KAAK2D,MAAQJ,EAAmBgB,aAChCvE,KAAK6D,UAAY,EACjB,OAAO7D,KAAKwE,kBAAkBJ,EAAKC,EAAS,EAChE,CACgBrE,KAAK2D,MAAQJ,EAAmBkB,YAChC,OAAOzE,KAAK0E,iBAAiBN,EAAKC,EAClD,CACY,KAAKd,EAAmBgB,aAAc,CAClC,OAAOvE,KAAKwE,kBAAkBJ,EAAKC,EACnD,CACY,KAAKd,EAAmBoB,eAAgB,CACpC,OAAO3E,KAAK4E,oBAAoBR,EAAKC,EACrD,CACY,KAAKd,EAAmBsB,WAAY,CAChC,OAAO7E,KAAK8E,gBAAgBV,EAAKC,EACjD,CACY,KAAKd,EAAmBkB,YAAa,CACjC,OAAOzE,KAAK0E,iBAAiBN,EAAKC,EAClD,EAEA,EAUI1C,EAAcT,UAAUsD,kBAAoB,SAAUJ,EAAKC,GACvD,GAAIA,GAAUD,EAAIW,OAAQ,CACtB,OAAQ,CACpB,CACQ,IAAKX,EAAIpF,WAAWqF,GAAU7B,KAAkBD,EAAUyC,QAAS,CAC/DhF,KAAK2D,MAAQJ,EAAmBsB,WAChC7E,KAAK6D,UAAY,EACjB,OAAO7D,KAAK8E,gBAAgBV,EAAKC,EAAS,EACtD,CACQrE,KAAK2D,MAAQJ,EAAmBoB,eAChC,OAAO3E,KAAK4E,oBAAoBR,EAAKC,EAC7C,EACI1C,EAAcT,UAAU+D,mBAAqB,SAAUb,EAAKc,EAAOC,EAAKC,GACpE,GAAIF,IAAUC,EAAK,CACf,IAAIE,EAAaF,EAAMD,EACvBlF,KAAKiB,OACDjB,KAAKiB,OAASqE,KAAKC,IAAIH,EAAMC,GACzBG,SAASpB,EAAIqB,OAAOP,EAAOG,GAAaD,GAChDpF,KAAK6D,UAAYwB,CAC7B,CACA,EAUI1D,EAAcT,UAAU4D,gBAAkB,SAAUV,EAAKC,GACrD,IAAIqB,EAAWrB,EACf,MAAOA,EAASD,EAAIW,OAAQ,CACxB,IAAIY,EAAOvB,EAAIpF,WAAWqF,GAC1B,GAAI5B,EAASkD,IAAS9C,EAAuB8C,GAAO,CAChDtB,GAAU,CAC1B,KACiB,CACDrE,KAAKiF,mBAAmBb,EAAKsB,EAAUrB,EAAQ,IAC/C,OAAOrE,KAAK4F,kBAAkBD,EAAM,EACpD,CACA,CACQ3F,KAAKiF,mBAAmBb,EAAKsB,EAAUrB,EAAQ,IAC/C,OAAQ,CAChB,EAUI1C,EAAcT,UAAU0D,oBAAsB,SAAUR,EAAKC,GACzD,IAAIqB,EAAWrB,EACf,MAAOA,EAASD,EAAIW,OAAQ,CACxB,IAAIY,EAAOvB,EAAIpF,WAAWqF,GAC1B,GAAI5B,EAASkD,GAAO,CAChBtB,GAAU,CAC1B,KACiB,CACDrE,KAAKiF,mBAAmBb,EAAKsB,EAAUrB,EAAQ,IAC/C,OAAOrE,KAAK4F,kBAAkBD,EAAM,EACpD,CACA,CACQ3F,KAAKiF,mBAAmBb,EAAKsB,EAAUrB,EAAQ,IAC/C,OAAQ,CAChB,EAcI1C,EAAcT,UAAU0E,kBAAoB,SAAUC,EAAQC,GAC1D,IAAI5G,EAEJ,GAAIc,KAAK6D,UAAYiC,EAAgB,EAChC5G,EAAKc,KAAK0D,UAAY,MAAQxE,SAAY,OAAS,EAAIA,EAAG6G,2CAA2C/F,KAAK6D,UAC3G,OAAO,CACnB,CAEQ,GAAIgC,IAAWtD,EAAUyD,KAAM,CAC3BhG,KAAK6D,UAAY,CAC7B,MACa,GAAI7D,KAAKgE,aAAepC,EAAaqC,OAAQ,CAC9C,OAAO,CACnB,CACQjE,KAAKyD,eAAc,EAAIrB,EAAsBhD,kBAAkBY,KAAKiB,QAASjB,KAAK6D,UAClF,GAAI7D,KAAK0D,OAAQ,CACb,GAAImC,IAAWtD,EAAUyD,KAAM,CAC3BhG,KAAK0D,OAAOuC,yCAC5B,CACYjG,KAAK0D,OAAOwC,kCAAkClG,KAAKiB,OAC/D,CACQ,OAAOjB,KAAK6D,QACpB,EAUIlC,EAAcT,UAAUwD,iBAAmB,SAAUN,EAAKC,GACtD,IAAIb,EAAaxD,KAAKwD,WACtB,IAAI2C,EAAU3C,EAAWxD,KAAK8D,WAE9B,IAAIsC,GAAeD,EAAUtE,EAAawE,eAAiB,GAC3D,KAAOhC,EAASD,EAAIW,OAAQV,IAAUrE,KAAK+D,SAAU,CACjD,IAAI4B,EAAOvB,EAAIpF,WAAWqF,GAC1BrE,KAAK8D,UAAYpC,EAAgB8B,EAAY2C,EAASnG,KAAK8D,UAAYwB,KAAKgB,IAAI,EAAGF,GAAcT,GACjG,GAAI3F,KAAK8D,UAAY,EAAG,CACpB,OAAO9D,KAAKiB,SAAW,GAElBjB,KAAKgE,aAAepC,EAAa2E,YAE7BH,IAAgB,GAEb/C,EAA8BsC,IACpC,EACA3F,KAAKwG,8BAC3B,CACYL,EAAU3C,EAAWxD,KAAK8D,WAC1BsC,GAAeD,EAAUtE,EAAawE,eAAiB,GAEvD,GAAID,IAAgB,EAAG,CAEnB,GAAIT,IAASpD,EAAUyD,KAAM,CACzB,OAAOhG,KAAKyG,oBAAoBzG,KAAK8D,UAAWsC,EAAapG,KAAK6D,SAAW7D,KAAK+D,OACtG,CAEgB,GAAI/D,KAAKgE,aAAepC,EAAaqC,OAAQ,CACzCjE,KAAKiB,OAASjB,KAAK8D,UACnB9D,KAAK6D,UAAY7D,KAAK+D,OACtB/D,KAAK+D,OAAS,CAClC,CACA,CACA,CACQ,OAAQ,CAChB,EAMIpC,EAAcT,UAAUsF,6BAA+B,WACnD,IAAItH,EACJ,IAAIwH,EAAK1G,KAAMiB,EAASyF,EAAGzF,OAAQuC,EAAakD,EAAGlD,WACnD,IAAI4C,GAAe5C,EAAWvC,GAAUY,EAAawE,eAAiB,GACtErG,KAAKyG,oBAAoBxF,EAAQmF,EAAapG,KAAK6D,WAClD3E,EAAKc,KAAK0D,UAAY,MAAQxE,SAAY,OAAS,EAAIA,EAAG+G,0CAC3D,OAAOjG,KAAK6D,QACpB,EAUIlC,EAAcT,UAAUuF,oBAAsB,SAAUxF,EAAQmF,EAAavC,GACzE,IAAIL,EAAaxD,KAAKwD,WACtBxD,KAAKyD,cAAc2C,IAAgB,EAC7B5C,EAAWvC,IAAWY,EAAawE,aACnC7C,EAAWvC,EAAS,GAAI4C,GAC9B,GAAIuC,IAAgB,EAAG,CAEnBpG,KAAKyD,cAAcD,EAAWvC,EAAS,GAAI4C,EACvD,CACQ,OAAOA,CACf,EAQIlC,EAAcT,UAAUiE,IAAM,WAC1B,IAAIjG,EACJ,OAAQc,KAAK2D,OACT,KAAKJ,EAAmBkB,YAAa,CAEjC,OAAOzE,KAAKiB,SAAW,IAClBjB,KAAKgE,aAAepC,EAAa2E,WAC9BvG,KAAKiB,SAAWjB,KAAK8D,WACvB9D,KAAKwG,+BACL,CACtB,CAEY,KAAKjD,EAAmBoB,eAAgB,CACpC,OAAO3E,KAAK4F,kBAAkB,EAAG,EACjD,CACY,KAAKrC,EAAmBsB,WAAY,CAChC,OAAO7E,KAAK4F,kBAAkB,EAAG,EACjD,CACY,KAAKrC,EAAmBgB,aAAc,EACjCrF,EAAKc,KAAK0D,UAAY,MAAQxE,SAAY,OAAS,EAAIA,EAAG6G,2CAA2C/F,KAAK6D,UAC3G,OAAO,CACvB,CACY,KAAKN,EAAmBK,YAAa,CAEjC,OAAO,CACvB,EAEA,EACI,OAAOjC,CACX,CAvTiB,GAwTjBxC,EAAAwC,cAAwBA,EAOxB,SAASgF,EAAWnD,GAChB,IAAIoD,EAAM,GACV,IAAIC,EAAU,IAAIlF,EAAc6B,GAAY,SAAUY,GAAO,OAAQwC,IAAO,EAAIxE,EAAsB/C,eAAe+E,EAAM,IAC3H,OAAO,SAAS0C,EAAe1C,EAAKJ,GAChC,IAAI+C,EAAY,EAChB,IAAI1C,EAAS,EACb,OAAQA,EAASD,EAAI4C,QAAQ,IAAK3C,KAAY,EAAG,CAC7CuC,GAAOxC,EAAI6C,MAAMF,EAAW1C,GAC5BwC,EAAQ3C,YAAYF,GACpB,IAAIkD,EAAML,EAAQ1C,MAAMC,EAExBC,EAAS,GACT,GAAI6C,EAAM,EAAG,CACTH,EAAY1C,EAASwC,EAAQ1B,MAC7B,KAChB,CACY4B,EAAY1C,EAAS6C,EAErB7C,EAAS6C,IAAQ,EAAIH,EAAY,EAAIA,CACjD,CACQ,IAAI9F,EAAS2F,EAAMxC,EAAI6C,MAAMF,GAE7BH,EAAM,GACN,OAAO3F,CACf,CACA,CAWA,SAASS,EAAgB8B,EAAY2C,EAASgB,EAASxB,GACnD,IAAIyB,GAAejB,EAAUtE,EAAawF,gBAAkB,EAC5D,IAAIC,EAAanB,EAAUtE,EAAa0F,WAExC,GAAIH,IAAgB,EAAG,CACnB,OAAOE,IAAe,GAAK3B,IAAS2B,EAAaH,GAAW,CACpE,CAEI,GAAIG,EAAY,CACZ,IAAI3I,EAAQgH,EAAO2B,EACnB,OAAO3I,EAAQ,GAAKA,GAASyI,GACtB,EACD5D,EAAW2D,EAAUxI,GAAS,CAC5C,CAGI,IAAI6I,EAAKL,EACT,IAAIM,EAAKD,EAAKJ,EAAc,EAC5B,MAAOI,GAAMC,EAAI,CACb,IAAIC,EAAOF,EAAKC,IAAQ,EACxB,IAAIE,EAASnE,EAAWkE,GACxB,GAAIC,EAAShC,EAAM,CACf6B,EAAKE,EAAM,CACvB,MACa,GAAIC,EAAShC,EAAM,CACpB8B,EAAKC,EAAM,CACvB,KACa,CACD,OAAOlE,EAAWkE,EAAMN,EACpC,CACA,CACI,OAAQ,CACZ,CACAjI,EAAAuC,gBAA0BA,EAC1B,IAAIkG,EAAcjB,EAAW3E,EAAsBlC,SACnD,IAAI+H,EAAalB,EAAWzE,EAAqBpC,SAQjD,SAAS2B,EAAW2C,EAAK0D,GACrB,GAAIA,SAAc,EAAG,CAAEA,EAAOlG,EAAamG,MAAO,CAClD,OAAOH,EAAYxD,EAAK0D,EAC5B,CACA3I,EAAAsC,WAAqBA,EAOrB,SAASD,EAAoB4C,GACzB,OAAOwD,EAAYxD,EAAKxC,EAAa2E,UACzC,CACApH,EAAAqC,oBAA8BA,EAO9B,SAASD,EAAiB6C,GACtB,OAAOwD,EAAYxD,EAAKxC,EAAaqC,OACzC,CACA9E,EAAAoC,iBAA2BA,EAO3B,SAASD,EAAU8C,GACf,OAAOyD,EAAWzD,EAAKxC,EAAaqC,OACxC,CACA9E,EAAAmC,UAAoBA,C,MCrhBpB,IAAIiB,GACJ,SAAWA,GACPA,EAAUA,EAAU,OAAS,GAAK,MAClCA,EAAUA,EAAU,WAAa,IAAM,UACvCA,EAAUA,EAAU,YAAc,IAAM,WACxCA,EAAUA,EAAU,kBAAoB,IAAM,iBAC9CA,EAAUA,EAAU,SAAW,IAAM,QACrCA,EAAUA,EAAU,mBAAqB,IAAM,kBAC/CA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,OAAS,IAAM,MACnCA,EAAUA,EAAU,eAAiB,IAAM,cAC3CA,EAAUA,EAAU,eAAiB,IAAM,cAC3CA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,SAAW,IAAM,QACrCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,QAAU,IAAM,OACpCA,EAAUA,EAAU,MAAQ,IAAM,KAClCA,EAAUA,EAAU,MAAQ,IAAM,KAClCA,EAAUA,EAAU,MAAQ,IAAM,KAClCA,EAAUA,EAAU,gBAAkB,IAAM,eAC5CA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,UAAY,KAAO,SACvCA,EAAUA,EAAU,UAAY,IAAM,SACtCA,EAAUA,EAAU,UAAY,KAAO,SACvCA,EAAUA,EAAU,UAAY,KAAO,SACvCA,EAAUA,EAAU,wBAA0B,IAAM,sBACvD,EA5BD,CA4BGA,IAAcA,EAAY,KAE7B,IAAIyF,GACJ,SAAWA,GACPA,EAAMA,EAAM,QAAU,GAAK,OAC3BA,EAAMA,EAAM,iBAAmB,GAAK,gBACpCA,EAAMA,EAAM,aAAe,GAAK,YAChCA,EAAMA,EAAM,oBAAsB,GAAK,mBACvCA,EAAMA,EAAM,wBAA0B,GAAK,uBAC3CA,EAAMA,EAAM,oBAAsB,GAAK,mBACvCA,EAAMA,EAAM,uBAAyB,GAAK,sBAE1CA,EAAMA,EAAM,uBAAyB,GAAK,sBAC1CA,EAAMA,EAAM,mBAAqB,GAAK,kBACtCA,EAAMA,EAAM,sBAAwB,IAAM,qBAC1CA,EAAMA,EAAM,wBAA0B,IAAM,uBAC5CA,EAAMA,EAAM,sBAAwB,IAAM,qBAC1CA,EAAMA,EAAM,sBAAwB,IAAM,qBAC1CA,EAAMA,EAAM,sBAAwB,IAAM,qBAE1CA,EAAMA,EAAM,qBAAuB,IAAM,oBACzCA,EAAMA,EAAM,iBAAmB,IAAM,gBAErCA,EAAMA,EAAM,2BAA6B,IAAM,0BAE/CA,EAAMA,EAAM,iBAAmB,IAAM,gBACrCA,EAAMA,EAAM,iBAAmB,IAAM,gBACrCA,EAAMA,EAAM,oBAAsB,IAAM,mBACxCA,EAAMA,EAAM,iBAAmB,IAAM,gBAErCA,EAAMA,EAAM,kBAAoB,IAAM,iBACtCA,EAAMA,EAAM,wBAA0B,IAAM,uBAC5CA,EAAMA,EAAM,gBAAkB,IAAM,eACpCA,EAAMA,EAAM,gBAAkB,IAAM,eACpCA,EAAMA,EAAM,uBAAyB,IAAM,sBAC3CA,EAAMA,EAAM,iBAAmB,IAAM,gBACrCA,EAAMA,EAAM,mBAAqB,IAAM,kBACvCA,EAAMA,EAAM,eAAiB,IAAM,aACtC,EAnCD,CAmCGA,IAAUA,EAAQ,KACrB,SAASC,EAAalJ,GAClB,OAAQA,IAAMwD,EAAU2F,OACpBnJ,IAAMwD,EAAU4F,SAChBpJ,IAAMwD,EAAU6F,KAChBrJ,IAAMwD,EAAU8F,UAChBtJ,IAAMwD,EAAU+F,cACxB,CACA,SAASC,EAAkBxJ,GACvB,OAAOA,IAAMwD,EAAUiG,OAASzJ,IAAMwD,EAAUkG,IAAMR,EAAalJ,EACvE,CACA,SAAS0D,EAAS1D,GACd,OAAOA,GAAKwD,EAAUmG,MAAQ3J,GAAKwD,EAAUoG,IACjD,CACA,SAASC,EAAa7J,GAClB,OAASA,GAAKwD,EAAUsG,QAAU9J,GAAKwD,EAAUuG,QAC5C/J,GAAKwD,EAAUwG,QAAUhK,GAAKwD,EAAUyG,MACjD,CACA,SAASC,EAAWlK,GAChB,OAASA,GAAKwD,EAAUwG,QAAUhK,GAAKwD,EAAU2G,QAC5CnK,GAAKwD,EAAUsG,QAAU9J,GAAKwD,EAAU4G,MACjD,CACO,IAAIC,GACX,SAAWA,GACPA,EAAUA,EAAU,WAAa,GAAK,UACtCA,EAAUA,EAAU,YAAc,GAAK,WACvCA,EAAUA,EAAU,UAAY,GAAK,SACrCA,EAAUA,EAAU,UAAY,GAAK,QACxC,EALD,CAKGA,IAAcA,EAAY,KAO7B,MAAMC,EAAY,CACdC,MAAO,IAAIC,WAAW,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KACrDC,SAAU,IAAID,WAAW,CAAC,GAAM,GAAM,KACtCE,WAAY,IAAIF,WAAW,CAAC,GAAM,GAAM,KACxCG,UAAW,IAAIH,WAAW,CAAC,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,MACrEI,SAAU,IAAIJ,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,MAC9DK,SAAU,IAAIL,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,OAEnD,MAAMM,EACjB,WAAAC,EAAYC,QAAEA,EAAU,MAAKC,eAAEA,EAAiB,MAASC,GACrDjK,KAAKiK,IAAMA,EAEXjK,KAAK2D,MAAQqE,EAAMkC,KAEnBlK,KAAKmK,OAAS,GAEdnK,KAAKoK,aAAe,EAEpBpK,KAAKqK,MAAQ,EAEbrK,KAAKsK,UAAYtC,EAAMkC,KAEvBlK,KAAKuK,UAAY,MAEjBvK,KAAKwK,QAAU,KAEfxK,KAAKqE,OAAS,EACdrE,KAAKyK,gBAAkBnK,UACvBN,KAAK0K,cAAgB,EACrB1K,KAAK2K,UAAY,EACjB3K,KAAK4K,YAAc,EAEnB5K,KAAK6K,aAAe,EACpB7K,KAAK8K,aAAe,EACpB9K,KAAK+J,QAAUA,EACf/J,KAAKgK,eAAiBA,EACtBhK,KAAK+K,WAAahB,EAAUjI,gBAAgBC,gBACpD,CACI,KAAAiJ,GACIhL,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKmK,OAAS,GACdnK,KAAKoK,aAAe,EACpBpK,KAAKqK,MAAQ,EACbrK,KAAKsK,UAAYtC,EAAMkC,KACvBlK,KAAKyK,gBAAkBnK,UACvBN,KAAKwK,QAAU,KACfxK,KAAKqE,OAAS,CACtB,CACI,KAAAF,CAAM8G,GACFjL,KAAKqE,QAAUrE,KAAKmK,OAAOpF,OAC3B/E,KAAKmK,OAASc,EACdjL,KAAKkL,OACb,CACI,GAAA/F,GACI,GAAInF,KAAKwK,QACLxK,KAAKmL,QACjB,CACI,KAAAC,GACIpL,KAAKwK,QAAU,KACvB,CACI,MAAAa,GACIrL,KAAKwK,QAAU,KACf,GAAIxK,KAAKqK,MAAQrK,KAAKmK,OAAOpF,OAAS/E,KAAKqE,OAAQ,CAC/CrE,KAAKkL,OACjB,CACA,CAII,QAAAI,GACI,OAAOtL,KAAKqK,KACpB,CAII,eAAAkB,GACI,OAAOvL,KAAKoK,YACpB,CACI,SAAAoB,CAAUzM,GACN,GAAIA,IAAMwD,EAAUkJ,KACdzL,KAAKgK,gBAAkBhK,KAAK0L,cAAcnJ,EAAUkJ,IAAM,CAC5D,GAAIzL,KAAKqK,MAAQrK,KAAKoK,aAAc,CAChCpK,KAAKiK,IAAI0B,OAAO3L,KAAKoK,aAAcpK,KAAKqK,MACxD,CACYrK,KAAK2D,MAAQqE,EAAM4D,cACnB5L,KAAKoK,aAAepK,KAAKqK,KACrC,MACa,GAAIrK,KAAKgK,gBAAkBjL,IAAMwD,EAAUsJ,IAAK,CACjD7L,KAAK2D,MAAQqE,EAAM8D,YAC/B,CACA,CACI,yBAAAC,CAA0BhN,GACtB,MAAMiN,EAAQhM,KAAK0K,gBAAkB1K,KAAKyK,gBAAgB1F,OAC1D,MAAMkH,EAAUD,EAERzD,EAAkBxJ,IAEjBA,EAAI,MAAUiB,KAAKyK,gBAAgBzK,KAAK0K,eACjD,IAAKuB,EAAS,CACVjM,KAAKuK,UAAY,KAC7B,MACa,IAAKyB,EAAO,CACbhM,KAAK0K,gBACL,MACZ,CACQ1K,KAAK0K,cAAgB,EACrB1K,KAAK2D,MAAQqE,EAAMkE,UACnBlM,KAAKmM,eAAepN,EAC5B,CAEI,iBAAAqN,CAAkBrN,GACd,GAAIiB,KAAK0K,gBAAkB1K,KAAKyK,gBAAgB1F,OAAQ,CACpD,GAAIhG,IAAMwD,EAAUkG,IAAMR,EAAalJ,GAAI,CACvC,MAAMsN,EAAYrM,KAAKqK,MAAQrK,KAAKyK,gBAAgB1F,OACpD,GAAI/E,KAAKoK,aAAeiC,EAAW,CAE/B,MAAMC,EAActM,KAAKqK,MACzBrK,KAAKqK,MAAQgC,EACbrM,KAAKiK,IAAI0B,OAAO3L,KAAKoK,aAAciC,GACnCrM,KAAKqK,MAAQiC,CACjC,CACgBtM,KAAKuK,UAAY,MACjBvK,KAAKoK,aAAeiC,EAAY,EAChCrM,KAAKuM,sBAAsBxN,GAC3B,MAChB,CACYiB,KAAK0K,cAAgB,CACjC,CACQ,IAAK3L,EAAI,MAAUiB,KAAKyK,gBAAgBzK,KAAK0K,eAAgB,CACzD1K,KAAK0K,eAAiB,CAClC,MACa,GAAI1K,KAAK0K,gBAAkB,EAAG,CAC/B,GAAI1K,KAAKyK,kBAAoBpB,EAAUO,SAAU,CAE7C,GAAI5J,KAAKgK,gBAAkBjL,IAAMwD,EAAUsJ,IAAK,CAC5C7L,KAAK2D,MAAQqE,EAAM8D,YACvC,CACA,MACiB,GAAI9L,KAAK0L,cAAcnJ,EAAUkJ,IAAK,CAEvCzL,KAAK0K,cAAgB,CACrC,CACA,KACa,CAED1K,KAAK0K,cAAgB8B,OAAOzN,IAAMwD,EAAUkJ,GACxD,CACA,CACI,kBAAAgB,CAAmB1N,GACf,GAAIA,IAAMsK,EAAUC,MAAMtJ,KAAK0K,eAAgB,CAC3C,KAAM1K,KAAK0K,gBAAkBrB,EAAUC,MAAMvE,OAAQ,CACjD/E,KAAK2D,MAAQqE,EAAM0E,cACnB1M,KAAKyK,gBAAkBpB,EAAUG,SACjCxJ,KAAK0K,cAAgB,EACrB1K,KAAKoK,aAAepK,KAAKqK,MAAQ,CACjD,CACA,KACa,CACDrK,KAAK0K,cAAgB,EACrB1K,KAAK2D,MAAQqE,EAAM2E,cACnB3M,KAAK4M,mBAAmB7N,EACpC,CACA,CAOI,aAAA2M,CAAc3M,GACV,QAASiB,KAAKqK,MAAQrK,KAAKmK,OAAOpF,OAAS/E,KAAKqE,OAAQ,CACpD,GAAIrE,KAAKmK,OAAOnL,WAAWgB,KAAKqK,MAAQrK,KAAKqE,UAAYtF,EAAG,CACxD,OAAO,IACvB,CACA,CAOQiB,KAAKqK,MAAQrK,KAAKmK,OAAOpF,OAAS/E,KAAKqE,OAAS,EAChD,OAAO,KACf,CASI,kBAAAwI,CAAmB9N,GACf,GAAIA,IAAMiB,KAAKyK,gBAAgBzK,KAAK0K,eAAgB,CAChD,KAAM1K,KAAK0K,gBAAkB1K,KAAKyK,gBAAgB1F,OAAQ,CACtD,GAAI/E,KAAKyK,kBAAoBpB,EAAUG,SAAU,CAC7CxJ,KAAKiK,IAAI6C,QAAQ9M,KAAKoK,aAAcpK,KAAKqK,MAAO,EACpE,KACqB,CACDrK,KAAKiK,IAAI8C,UAAU/M,KAAKoK,aAAcpK,KAAKqK,MAAO,EACtE,CACgBrK,KAAK0K,cAAgB,EACrB1K,KAAKoK,aAAepK,KAAKqK,MAAQ,EACjCrK,KAAK2D,MAAQqE,EAAMkC,IACnC,CACA,MACa,GAAIlK,KAAK0K,gBAAkB,EAAG,CAE/B,GAAI1K,KAAK0L,cAAc1L,KAAKyK,gBAAgB,IAAK,CAC7CzK,KAAK0K,cAAgB,CACrC,CACA,MACa,GAAI3L,IAAMiB,KAAKyK,gBAAgBzK,KAAK0K,cAAgB,GAAI,CAEzD1K,KAAK0K,cAAgB,CACjC,CACA,CAOI,cAAAsC,CAAejO,GACX,OAAOiB,KAAK+J,SAAWxB,EAAkBxJ,GAAK6J,EAAa7J,EACnE,CACI,YAAAkO,CAAaC,EAAU7I,GACnBrE,KAAKuK,UAAY,KACjBvK,KAAKyK,gBAAkByC,EACvBlN,KAAK0K,cAAgBrG,EACrBrE,KAAK2D,MAAQqE,EAAMmF,oBAC3B,CACI,kBAAAC,CAAmBrO,GACf,GAAIA,IAAMwD,EAAU8K,gBAAiB,CACjCrN,KAAK2D,MAAQqE,EAAMsF,kBACnBtN,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,MACa,GAAItL,IAAMwD,EAAUgL,aAAc,CACnCvN,KAAK2D,MAAQqE,EAAMwF,wBACnBxN,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,MACa,GAAIrK,KAAKgN,eAAejO,GAAI,CAC7B,MAAM0O,EAAQ1O,EAAI,GAClBiB,KAAKoK,aAAepK,KAAKqK,MACzB,IAAKrK,KAAK+J,SAAW0D,IAAUpE,EAAUO,SAAS,GAAI,CAClD5J,KAAKiN,aAAa5D,EAAUO,SAAU,EACtD,KACiB,CACD5J,KAAK2D,OACA3D,KAAK+J,SAAW0D,IAAUpE,EAAUK,UAAU,GACzC1B,EAAM0F,eACN1F,EAAMkE,SAChC,CACA,MACa,GAAInN,IAAMwD,EAAUiG,MAAO,CAC5BxI,KAAK2D,MAAQqE,EAAM2F,oBAC/B,KACa,CACD3N,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKwL,UAAUzM,EAC3B,CACA,CACI,cAAAoN,CAAepN,GACX,GAAIwJ,EAAkBxJ,GAAI,CACtBiB,KAAKiK,IAAI2D,cAAc5N,KAAKoK,aAAcpK,KAAKqK,OAC/CrK,KAAKoK,cAAgB,EACrBpK,KAAK2D,MAAQqE,EAAM6F,oBACnB7N,KAAK8N,yBAAyB/O,EAC1C,CACA,CACI,yBAAAgP,CAA0BhP,GACtB,GAAIkJ,EAAalJ,SAGZ,GAAIA,IAAMwD,EAAUkG,GAAI,CACzBzI,KAAK2D,MAAQqE,EAAMkC,IAC/B,KACa,CACDlK,KAAK2D,MAAQ3D,KAAKgN,eAAejO,GAC3BiJ,EAAMgG,iBACNhG,EAAMiG,iBACZjO,KAAKoK,aAAepK,KAAKqK,KACrC,CACA,CACI,qBAAAkC,CAAsBxN,GAClB,GAAIA,IAAMwD,EAAUkG,IAAMR,EAAalJ,GAAI,CACvCiB,KAAKiK,IAAIiE,WAAWlO,KAAKoK,aAAcpK,KAAKqK,OAC5CrK,KAAKoK,cAAgB,EACrBpK,KAAK2D,MAAQqE,EAAMmG,oBACnBnO,KAAKoO,yBAAyBrP,EAC1C,CACA,CACI,wBAAAqP,CAAyBrP,GAErB,GAAIA,IAAMwD,EAAUkG,IAAMzI,KAAK0L,cAAcnJ,EAAUkG,IAAK,CACxDzI,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKsK,UAAYtC,EAAMkC,KACvBlK,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,CACA,CACI,wBAAAyD,CAAyB/O,GACrB,GAAIA,IAAMwD,EAAUkG,GAAI,CACpBzI,KAAKiK,IAAIoE,aAAarO,KAAKqK,OAC3B,GAAIrK,KAAKuK,UAAW,CAChBvK,KAAK2D,MAAQqE,EAAMsG,aACnBtO,KAAK0K,cAAgB,CACrC,KACiB,CACD1K,KAAK2D,MAAQqE,EAAMkC,IACnC,CACYlK,KAAKsK,UAAYtK,KAAK2D,MACtB3D,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,MACa,GAAItL,IAAMwD,EAAUiG,MAAO,CAC5BxI,KAAK2D,MAAQqE,EAAMuG,gBAC/B,MACa,IAAKtG,EAAalJ,GAAI,CACvBiB,KAAK2D,MAAQqE,EAAMwG,gBACnBxO,KAAKoK,aAAepK,KAAKqK,KACrC,CACA,CACI,qBAAAoE,CAAsB1P,GAClB,GAAIA,IAAMwD,EAAUkG,GAAI,CACpBzI,KAAKiK,IAAIyE,iBAAiB1O,KAAKqK,OAC/BrK,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKsK,UAAYtC,EAAMkC,KACvBlK,KAAKoK,aAAepK,KAAKqK,MAAQ,EACjCrK,KAAKuK,UAAY,KAC7B,MACa,IAAKtC,EAAalJ,GAAI,CACvBiB,KAAK2D,MAAQqE,EAAM6F,oBACnB7N,KAAK8N,yBAAyB/O,EAC1C,CACA,CACI,oBAAA4P,CAAqB5P,GACjB,GAAIA,IAAMwD,EAAUqM,IAAMrG,EAAkBxJ,GAAI,CAC5CiB,KAAKiK,IAAI4E,aAAa7O,KAAKoK,aAAcpK,KAAKqK,OAC9CrK,KAAKoK,cAAgB,EACrBpK,KAAK2D,MAAQqE,EAAM8G,mBACnB9O,KAAK+O,wBAAwBhQ,EACzC,CACA,CACI,uBAAAgQ,CAAwBhQ,GACpB,GAAIA,IAAMwD,EAAUqM,GAAI,CACpB5O,KAAK2D,MAAQqE,EAAMgH,oBAC/B,MACa,GAAIjQ,IAAMwD,EAAUiG,OAASzJ,IAAMwD,EAAUkG,GAAI,CAClDzI,KAAKiK,IAAIgF,YAAY7F,EAAU8F,QAASlP,KAAKqK,OAC7CrK,KAAK2D,MAAQqE,EAAM6F,oBACnB7N,KAAK8N,yBAAyB/O,EAC1C,MACa,IAAKkJ,EAAalJ,GAAI,CACvBiB,KAAKiK,IAAIgF,YAAY7F,EAAU8F,QAASlP,KAAKqK,OAC7CrK,KAAK2D,MAAQqE,EAAMwG,gBACnBxO,KAAKoK,aAAepK,KAAKqK,KACrC,CACA,CACI,yBAAA8E,CAA0BpQ,GACtB,GAAIA,IAAMwD,EAAU6M,YAAa,CAC7BpP,KAAK2D,MAAQqE,EAAMqH,mBACnBrP,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,MACa,GAAItL,IAAMwD,EAAU+M,YAAa,CAClCtP,KAAK2D,MAAQqE,EAAMuH,mBACnBvP,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,MACa,IAAKpC,EAAalJ,GAAI,CACvBiB,KAAKoK,aAAepK,KAAKqK,MACzBrK,KAAK2D,MAAQqE,EAAMwH,mBACnBxP,KAAKyP,8BAA8B1Q,EAC/C,CACA,CACI,sBAAA2Q,CAAuB3Q,EAAG4Q,GACtB,GAAI5Q,IAAM4Q,IACJ3P,KAAKgK,gBAAkBhK,KAAK0L,cAAciE,GAAS,CACrD3P,KAAKiK,IAAI2F,aAAa5P,KAAKoK,aAAcpK,KAAKqK,OAC9CrK,KAAKoK,cAAgB,EACrBpK,KAAKiK,IAAIgF,YAAYU,IAAUpN,EAAU6M,YACnChG,EAAUyG,OACVzG,EAAU0G,OAAQ9P,KAAKqK,OAC7BrK,KAAK2D,MAAQqE,EAAM6F,mBAC/B,MACa,GAAI7N,KAAKgK,gBAAkBjL,IAAMwD,EAAUsJ,IAAK,CACjD7L,KAAKsK,UAAYtK,KAAK2D,MACtB3D,KAAK2D,MAAQqE,EAAM8D,YAC/B,CACA,CACI,iCAAAiE,CAAkChR,GAC9BiB,KAAK0P,uBAAuB3Q,EAAGwD,EAAU6M,YACjD,CACI,iCAAAY,CAAkCjR,GAC9BiB,KAAK0P,uBAAuB3Q,EAAGwD,EAAU+M,YACjD,CACI,6BAAAG,CAA8B1Q,GAC1B,GAAIkJ,EAAalJ,IAAMA,IAAMwD,EAAUkG,GAAI,CACvCzI,KAAKiK,IAAI2F,aAAa5P,KAAKoK,aAAcpK,KAAKqK,OAC9CrK,KAAKoK,cAAgB,EACrBpK,KAAKiK,IAAIgF,YAAY7F,EAAU6G,SAAUjQ,KAAKqK,OAC9CrK,KAAK2D,MAAQqE,EAAM6F,oBACnB7N,KAAK8N,yBAAyB/O,EAC1C,MACa,GAAIiB,KAAKgK,gBAAkBjL,IAAMwD,EAAUsJ,IAAK,CACjD7L,KAAKsK,UAAYtK,KAAK2D,MACtB3D,KAAK2D,MAAQqE,EAAM8D,YAC/B,CACA,CACI,sBAAAoE,CAAuBnR,GACnB,GAAIA,IAAMwD,EAAU4N,qBAAsB,CACtCnQ,KAAK2D,MAAQqE,EAAMoI,cACnBpQ,KAAK0K,cAAgB,CACjC,KACa,CACD1K,KAAK2D,MACD5E,IAAMwD,EAAU8N,KACVrI,EAAMsI,cACNtI,EAAM2E,aAC5B,CACA,CACI,kBAAAC,CAAmB7N,GACf,GAAIA,IAAMwD,EAAUkG,IAAMzI,KAAK0L,cAAcnJ,EAAUkG,IAAK,CACxDzI,KAAKiK,IAAIsG,cAAcvQ,KAAKoK,aAAcpK,KAAKqK,OAC/CrK,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,CACA,CACI,4BAAAmG,CAA6BzR,GACzB,GAAIA,IAAMwD,EAAUkG,IAAMzI,KAAK0L,cAAcnJ,EAAUkG,IAAK,CACxDzI,KAAKiK,IAAIwG,wBAAwBzQ,KAAKoK,aAAcpK,KAAKqK,OACzDrK,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,CACA,CACI,kBAAAqG,CAAmB3R,GACf,GAAIA,IAAMwD,EAAU8N,KAAM,CACtBrQ,KAAK2D,MAAQqE,EAAM0E,cACnB1M,KAAKyK,gBAAkBpB,EAAUI,WAEjCzJ,KAAK0K,cAAgB,EACrB1K,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,KACa,CACDrK,KAAK2D,MAAQqE,EAAM2E,aAC/B,CACA,CACI,qBAAAgE,CAAsB5R,GAClB,GAAIA,IAAMwD,EAAUkG,IAAMzI,KAAK0L,cAAcnJ,EAAUkG,IAAK,CACxDzI,KAAKiK,IAAI8C,UAAU/M,KAAKoK,aAAcpK,KAAKqK,MAAO,GAClDrK,KAAK2D,MAAQqE,EAAMkC,KACnBlK,KAAKoK,aAAepK,KAAKqK,MAAQ,CAC7C,CACA,CACI,mBAAAuG,CAAoB7R,GAChB,MAAM0O,EAAQ1O,EAAI,GAClB,GAAI0O,IAAUpE,EAAUK,UAAU,GAAI,CAClC1J,KAAKiN,aAAa5D,EAAUK,UAAW,EACnD,MACa,GAAI+D,IAAUpE,EAAUM,SAAS,GAAI,CACtC3J,KAAKiN,aAAa5D,EAAUM,SAAU,EAClD,KACa,CACD3J,KAAK2D,MAAQqE,EAAMkE,UACnBlM,KAAKmM,eAAepN,EAChC,CACA,CACI,iBAAA8R,CAAkB9R,GAEdiB,KAAK8K,aAAe,EACpB9K,KAAK6K,aAAe,EACpB,GAAI9L,IAAMwD,EAAUiK,OAAQ,CACxBxM,KAAK2D,MAAQqE,EAAM8I,mBAC/B,MACa,GAAI/R,IAAMwD,EAAUsJ,SAGpB,CACD7L,KAAK2K,UAAY,EACjB3K,KAAK4K,YAAc5K,KAAK+K,WAAW,GACnC/K,KAAK2D,MAAQqE,EAAM+I,cACnB/Q,KAAKgR,mBAAmBjS,EACpC,CACA,CACI,kBAAAiS,CAAmBjS,GACfiB,KAAK8K,cAAgB,EACrB9K,KAAK2K,UAAYjJ,kBAAgB1B,KAAK+K,WAAY/K,KAAK4K,YAAa5K,KAAK2K,UAAY,EAAG5L,GACxF,GAAIiB,KAAK2K,UAAY,EAAG,CACpB3K,KAAKiR,kBACLjR,KAAKqK,QACL,MACZ,CACQrK,KAAK4K,YAAc5K,KAAK+K,WAAW/K,KAAK2K,WACxC,MAAMuG,EAASlR,KAAK4K,YAAc/I,eAAawE,aAE/C,GAAI6K,EAAQ,CAER,MAAM9K,GAAe8K,GAAU,IAAM,EAErC,IAAKlR,KAAKmR,qBAAuBpS,IAAMwD,EAAU6O,KAAM,CACnDpR,KAAK2K,WAAavE,CAClC,KACiB,CAED,MAAMiL,EAAcrR,KAAKqK,MAAQrK,KAAK8K,aAAe,EACrD,GAAIuG,EAAcrR,KAAKoK,aAAc,CACjCpK,KAAKsR,YAAYtR,KAAKoK,aAAciH,EACxD,CAEgBrR,KAAK6K,aAAe7K,KAAK2K,UACzB3K,KAAK2K,WAAavE,EAClBpG,KAAK8K,aAAe,EACpB9K,KAAKoK,aAAepK,KAAKqK,MAAQ,EACjC,GAAIjE,IAAgB,EAAG,CACnBpG,KAAKiR,iBACzB,CACA,CACA,CACA,CACI,eAAAA,GACIjR,KAAK2D,MAAQ3D,KAAKsK,UAClB,GAAItK,KAAK6K,eAAiB,EAAG,CACzB,MACZ,CACQ,MAAMzE,GAAepG,KAAK+K,WAAW/K,KAAK6K,cAAgBhJ,eAAawE,eACnE,GACJ,OAAQD,GACJ,KAAK,EAAG,CACJpG,KAAKyD,cAAczD,KAAK+K,WAAW/K,KAAK6K,eACnChJ,eAAawE,cAClB,KAChB,CACY,KAAK,EAAG,CACJrG,KAAKyD,cAAczD,KAAK+K,WAAW/K,KAAK6K,aAAe,IACvD,KAChB,CACY,KAAK,EAAG,CACJ7K,KAAKyD,cAAczD,KAAK+K,WAAW/K,KAAK6K,aAAe,IACvD7K,KAAKyD,cAAczD,KAAK+K,WAAW/K,KAAK6K,aAAe,GACvE,EAEA,CACI,wBAAA0G,CAAyBxS,GACrB,IAAKA,EAAI,MAAUwD,EAAUiP,OAAQ,CACjCxR,KAAK8K,eACL9K,KAAK2D,MAAQqE,EAAMyJ,WAC/B,KACa,CACDzR,KAAK2D,MAAQqE,EAAM0J,gBACnB1R,KAAK2R,qBAAqB5S,EACtC,CACA,CACI,iBAAA6G,CAAkBgM,GACd,MAAMP,EAAcrR,KAAKqK,MAAQrK,KAAK8K,aAAe,EACrD,MAAM+G,EAAcR,EAAc,EAAI7E,OAAOxM,KAAK2D,QAAUqE,EAAMyJ,aAClE,GAAII,IAAgB7R,KAAKqK,MAAO,CAE5B,GAAIgH,EAAcrR,KAAKoK,aAAc,CACjCpK,KAAKsR,YAAYtR,KAAKoK,aAAciH,EACpD,CACYrR,KAAKoK,aAAepK,KAAKqK,MAAQmC,OAAOoF,GACxC5R,KAAKyD,cAAcrE,mBAAiBY,KAAK6K,cACrD,CACQ7K,KAAK2D,MAAQ3D,KAAKsK,SAC1B,CACI,oBAAAqH,CAAqB5S,GACjB,GAAIA,IAAMwD,EAAU6O,KAAM,CACtBpR,KAAK4F,kBAAkB,KACnC,MACa,GAAInD,EAAS1D,GAAI,CAClBiB,KAAK6K,aAAe7K,KAAK6K,aAAe,IAAM9L,EAAIwD,EAAUmG,MAC5D1I,KAAK8K,cACjB,KACa,CACD,GAAI9K,KAAKmR,oBAAqB,CAC1BnR,KAAK4F,kBAAkB,MACvC,KACiB,CACD5F,KAAK2D,MAAQ3D,KAAKsK,SAClC,CACYtK,KAAKqK,OACjB,CACA,CACI,gBAAAyH,CAAiB/S,GACb,GAAIA,IAAMwD,EAAU6O,KAAM,CACtBpR,KAAK4F,kBAAkB,KACnC,MACa,GAAInD,EAAS1D,GAAI,CAClBiB,KAAK6K,aAAe7K,KAAK6K,aAAe,IAAM9L,EAAIwD,EAAUmG,MAC5D1I,KAAK8K,cACjB,MACa,GAAI7B,EAAWlK,GAAI,CACpBiB,KAAK6K,aACD7K,KAAK6K,aAAe,KAAO9L,EAAI,IAAQwD,EAAUsG,OAAS,IAC9D7I,KAAK8K,cACjB,KACa,CACD,GAAI9K,KAAKmR,oBAAqB,CAC1BnR,KAAK4F,kBAAkB,MACvC,KACiB,CACD5F,KAAK2D,MAAQ3D,KAAKsK,SAClC,CACYtK,KAAKqK,OACjB,CACA,CACI,iBAAA8G,GACI,OAASnR,KAAK+J,UACT/J,KAAKsK,YAActC,EAAMkC,MACtBlK,KAAKsK,YAActC,EAAMsG,aACzC,CAII,OAAAyD,GAEI,GAAI/R,KAAKwK,SAAWxK,KAAKoK,eAAiBpK,KAAKqK,MAAO,CAClD,GAAIrK,KAAK2D,QAAUqE,EAAMkC,MACpBlK,KAAK2D,QAAUqE,EAAMsG,cAAgBtO,KAAK0K,gBAAkB,EAAI,CACjE1K,KAAKiK,IAAI0B,OAAO3L,KAAKoK,aAAcpK,KAAKqK,OACxCrK,KAAKoK,aAAepK,KAAKqK,KACzC,MACiB,GAAIrK,KAAK2D,QAAUqE,EAAMqH,oBAC1BrP,KAAK2D,QAAUqE,EAAMuH,oBACrBvP,KAAK2D,QAAUqE,EAAMwH,mBAAoB,CACzCxP,KAAKiK,IAAI2F,aAAa5P,KAAKoK,aAAcpK,KAAKqK,OAC9CrK,KAAKoK,aAAepK,KAAKqK,KACzC,CACA,CACA,CACI,cAAA2H,GACI,OAAOhS,KAAKqK,MAAQrK,KAAKmK,OAAOpF,OAAS/E,KAAKqE,QAAUrE,KAAKwK,OACrE,CAMI,KAAAU,GACI,MAAOlL,KAAKgS,iBAAkB,CAC1B,MAAMjT,EAAIiB,KAAKmK,OAAOnL,WAAWgB,KAAKqK,MAAQrK,KAAKqE,QACnD,OAAQrE,KAAK2D,OACT,KAAKqE,EAAMkC,KAAM,CACblK,KAAKwL,UAAUzM,GACf,KACpB,CACgB,KAAKiJ,EAAMmF,qBAAsB,CAC7BnN,KAAK+L,0BAA0BhN,GAC/B,KACpB,CACgB,KAAKiJ,EAAMsG,aAAc,CACrBtO,KAAKoM,kBAAkBrN,GACvB,KACpB,CACgB,KAAKiJ,EAAMoI,cAAe,CACtBpQ,KAAKyM,mBAAmB1N,GACxB,KACpB,CACgB,KAAKiJ,EAAMqH,mBAAoB,CAC3BrP,KAAK+P,kCAAkChR,GACvC,KACpB,CACgB,KAAKiJ,EAAMwG,gBAAiB,CACxBxO,KAAK2O,qBAAqB5P,GAC1B,KACpB,CACgB,KAAKiJ,EAAM0E,cAAe,CACtB1M,KAAK6M,mBAAmB9N,GACxB,KACpB,CACgB,KAAKiJ,EAAMiG,iBAAkB,CACzBjO,KAAK2Q,sBAAsB5R,GAC3B,KACpB,CACgB,KAAKiJ,EAAM6F,oBAAqB,CAC5B7N,KAAK8N,yBAAyB/O,GAC9B,KACpB,CACgB,KAAKiJ,EAAMkE,UAAW,CAClBlM,KAAKmM,eAAepN,GACpB,KACpB,CACgB,KAAKiJ,EAAMgG,iBAAkB,CACzBhO,KAAKuM,sBAAsBxN,GAC3B,KACpB,CACgB,KAAKiJ,EAAM4D,cAAe,CACtB5L,KAAKoN,mBAAmBrO,GACxB,KACpB,CACgB,KAAKiJ,EAAM8G,mBAAoB,CAC3B9O,KAAK+O,wBAAwBhQ,GAC7B,KACpB,CACgB,KAAKiJ,EAAMuH,mBAAoB,CAC3BvP,KAAKgQ,kCAAkCjR,GACvC,KACpB,CACgB,KAAKiJ,EAAMgH,qBAAsB,CAC7BhP,KAAKmP,0BAA0BpQ,GAC/B,KACpB,CACgB,KAAKiJ,EAAM2F,qBAAsB,CAC7B3N,KAAK+N,0BAA0BhP,GAC/B,KACpB,CACgB,KAAKiJ,EAAMmG,oBAAqB,CAC5BnO,KAAKoO,yBAAyBrP,GAC9B,KACpB,CACgB,KAAKiJ,EAAM0F,eAAgB,CACvB1N,KAAK4Q,oBAAoB7R,GACzB,KACpB,CACgB,KAAKiJ,EAAMwH,mBAAoB,CAC3BxP,KAAKyP,8BAA8B1Q,GACnC,KACpB,CACgB,KAAKiJ,EAAMuG,iBAAkB,CACzBvO,KAAKyO,sBAAsB1P,GAC3B,KACpB,CACgB,KAAKiJ,EAAM2E,cAAe,CACtB3M,KAAK4M,mBAAmB7N,GACxB,KACpB,CACgB,KAAKiJ,EAAMsF,kBAAmB,CAC1BtN,KAAKkQ,uBAAuBnR,GAC5B,KACpB,CACgB,KAAKiJ,EAAMsI,cAAe,CACtBtQ,KAAK0Q,mBAAmB3R,GACxB,KACpB,CACgB,KAAKiJ,EAAMwF,wBAAyB,CAChCxN,KAAKwQ,6BAA6BzR,GAClC,KACpB,CACgB,KAAKiJ,EAAM+I,cAAe,CACtB/Q,KAAKgR,mBAAmBjS,GACxB,KACpB,CACgB,KAAKiJ,EAAM8D,aAAc,CACrB9L,KAAK6Q,kBAAkB9R,GACvB,KACpB,CACgB,KAAKiJ,EAAMyJ,YAAa,CACpBzR,KAAK8R,iBAAiB/S,GACtB,KACpB,CACgB,KAAKiJ,EAAM0J,gBAAiB,CACxB1R,KAAK2R,qBAAqB5S,GAC1B,KACpB,CACgB,QAAS,CAELiB,KAAKuR,yBAAyBxS,EAClD,EAEYiB,KAAKqK,OACjB,CACQrK,KAAK+R,SACb,CACI,MAAA5G,GACI,GAAInL,KAAK2D,QAAUqE,EAAM+I,cAAe,CACpC/Q,KAAKiR,iBACjB,CAEQ,GAAIjR,KAAKoK,aAAepK,KAAKqK,MAAO,CAChCrK,KAAKiS,oBACjB,CACQjS,KAAKiK,IAAIiI,OACjB,CAEI,kBAAAD,GACI,MAAME,EAAWnS,KAAKmK,OAAOpF,OAAS/E,KAAKqE,OAC3C,GAAIrE,KAAK2D,QAAUqE,EAAM0E,cAAe,CACpC,GAAI1M,KAAKyK,kBAAoBpB,EAAUG,SAAU,CAC7CxJ,KAAKiK,IAAI6C,QAAQ9M,KAAKoK,aAAc+H,EAAU,EAC9D,KACiB,CACDnS,KAAKiK,IAAI8C,UAAU/M,KAAKoK,aAAc+H,EAAU,EAChE,CACA,MACa,GAAInS,KAAK2D,QAAUqE,EAAM0J,iBAC1B1R,KAAKmR,oBAAqB,CAC1BnR,KAAK4F,kBAAkB,MAEnC,MACa,GAAI5F,KAAK2D,QAAUqE,EAAMyJ,aAC1BzR,KAAKmR,oBAAqB,CAC1BnR,KAAK4F,kBAAkB,MAEnC,MACa,GAAI5F,KAAK2D,QAAUqE,EAAMkE,WAC1BlM,KAAK2D,QAAUqE,EAAM6F,qBACrB7N,KAAK2D,QAAUqE,EAAMgH,sBACrBhP,KAAK2D,QAAUqE,EAAM8G,oBACrB9O,KAAK2D,QAAUqE,EAAMwG,iBACrBxO,KAAK2D,QAAUqE,EAAMuH,oBACrBvP,KAAK2D,QAAUqE,EAAMqH,oBACrBrP,KAAK2D,QAAUqE,EAAMwH,oBACrBxP,KAAK2D,QAAUqE,EAAMgG,sBAMpB,CACDhO,KAAKiK,IAAI0B,OAAO3L,KAAKoK,aAAc+H,EAC/C,CACA,CACI,WAAAb,CAAYpM,EAAOiN,GACf,GAAInS,KAAKsK,YAActC,EAAMkC,MACzBlK,KAAKsK,YAActC,EAAMsG,aAAc,CACvCtO,KAAKiK,IAAI2F,aAAa1K,EAAOiN,EACzC,KACa,CACDnS,KAAKiK,IAAI0B,OAAOzG,EAAOiN,EACnC,CACA,CACI,aAAA1O,CAAc2O,GACV,GAAIpS,KAAKsK,YAActC,EAAMkC,MACzBlK,KAAKsK,YAActC,EAAMsG,aAAc,CACvCtO,KAAKiK,IAAIoI,eAAeD,EACpC,KACa,CACDpS,KAAKiK,IAAIqI,aAAaF,EAClC,CACA,EC/5BA,MAAMG,EAAW,IAAIC,IAAI,CACrB,QACA,SACA,WACA,SACA,SACA,WACA,aAEJ,MAAMC,EAAO,IAAID,IAAI,CAAC,MACtB,MAAME,EAAmB,IAAIF,IAAI,CAAC,QAAS,UAC3C,MAAMG,EAAU,IAAIH,IAAI,CAAC,KAAM,OAC/B,MAAMI,EAAU,IAAIJ,IAAI,CAAC,KAAM,OAC/B,MAAMK,EAAmB,IAAItT,IAAI,CAC7B,CAAC,KAAM,IAAIiT,IAAI,CAAC,KAAM,KAAM,QAC5B,CAAC,KAAM,IAAIA,IAAI,CAAC,QAChB,CAAC,KAAM,IAAIA,IAAI,CAAC,QAAS,KAAM,QAC/B,CAAC,OAAQ,IAAIA,IAAI,CAAC,OAAQ,OAAQ,YAClC,CAAC,KAAM,IAAIA,IAAI,CAAC,QAChB,CAAC,IAAKC,GACN,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,KAAMA,GACP,CAAC,SAAUF,GACX,CAAC,QAASA,GACV,CAAC,SAAUA,GACX,CAAC,SAAUA,GACX,CAAC,WAAYA,GACb,CAAC,WAAYA,GACb,CAAC,SAAU,IAAIC,IAAI,CAAC,YACpB,CAAC,WAAY,IAAIA,IAAI,CAAC,WAAY,YAClC,CAAC,KAAMG,GACP,CAAC,KAAMA,GACP,CAAC,UAAWF,GACZ,CAAC,UAAWA,GACZ,CAAC,QAASA,GACV,CAAC,aAAcA,GACf,CAAC,UAAWA,GACZ,CAAC,MAAOA,GACR,CAAC,KAAMA,GACP,CAAC,WAAYA,GACb,CAAC,aAAcA,GACf,CAAC,SAAUA,GACX,CAAC,SAAUA,GACX,CAAC,OAAQA,GACT,CAAC,SAAUA,GACX,CAAC,KAAMA,GACP,CAAC,OAAQA,GACT,CAAC,MAAOA,GACR,CAAC,KAAMA,GACP,CAAC,MAAOA,GACR,CAAC,UAAWA,GACZ,CAAC,QAASA,GACV,CAAC,KAAMA,GACP,CAAC,KAAMG,GACP,CAAC,KAAMA,GACP,CAAC,QAASF,GACV,CAAC,QAASA,KAEd,MAAMI,EAAe,IAAIN,IAAI,CACzB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAEJ,MAAMO,EAAyB,IAAIP,IAAI,CAAC,OAAQ,QAChD,MAAMQ,EAA0B,IAAIR,IAAI,CACpC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEJ,MAAMS,EAAY,QACX,MAAMC,EACT,WAAApJ,CAAYG,EAAKkJ,EAAU,IACvB,IAAIjU,EAAIwH,EAAI0M,EAAIC,EAAIC,EACpBtT,KAAKmT,QAAUA,EAEfnT,KAAKuT,WAAa,EAElBvT,KAAKmS,SAAW,EAKhBnS,KAAKwT,aAAe,EACpBxT,KAAKyT,QAAU,GACfzT,KAAK0T,WAAa,GAClB1T,KAAK2T,YAAc,GACnB3T,KAAK4T,QAAU,KACf5T,KAAK6T,MAAQ,GACb7T,KAAK8T,eAAiB,GACtB9T,KAAK+T,QAAU,GACf/T,KAAKgU,aAAe,EAEpBhU,KAAKiU,WAAa,EAElBjU,KAAKkU,MAAQ,MACblU,KAAKiK,IAAMA,IAAQ,MAAQA,SAAa,EAAIA,EAAM,GAClDjK,KAAKmU,mBAAqBjV,EAAKiU,EAAQiB,iBAAmB,MAAQlV,SAAY,EAAIA,GAAMiU,EAAQpJ,QAChG/J,KAAKqU,yBACA3N,EAAKyM,EAAQkB,2BAA6B,MAAQ3N,SAAY,EAAIA,GAAMyM,EAAQpJ,QACrF/J,KAAKsU,UAAY,KAAMlB,EAAKD,EAAQtJ,aAAe,MAAQuJ,SAAY,EAAIA,EAAKvJ,GAAW7J,KAAKmT,QAASnT,OACxGsT,GAAMD,EAAKrT,KAAKiK,KAAKsK,gBAAkB,MAAQjB,SAAY,OAAS,EAAIA,EAAGlS,KAAKiS,EAAIrT,KAC7F,CAGI,MAAA2L,CAAOzG,EAAOiN,GACV,IAAIjT,EAAIwH,EACR,MAAM8N,EAAOxU,KAAKyU,SAASvP,EAAOiN,GAClCnS,KAAKmS,SAAWA,EAAW,GAC1BzL,GAAMxH,EAAKc,KAAKiK,KAAK0B,UAAY,MAAQjF,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIsV,GAC/ExU,KAAKuT,WAAapB,CAC1B,CAEI,YAAAG,CAAaF,GACT,IAAIlT,EAAIwH,EAKR,MAAM2D,EAAQrK,KAAKsU,UAAU/I,kBAC7BvL,KAAKmS,SAAW9H,EAAQ,GACvB3D,GAAMxH,EAAKc,KAAKiK,KAAK0B,UAAY,MAAQjF,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIG,gBAAc+S,IAC7FpS,KAAKuT,WAAalJ,CAC1B,CACI,aAAAqK,CAAcC,GACV,OAAQ3U,KAAKmT,QAAQpJ,SAAW+I,EAAa8B,IAAID,EACzD,CAEI,aAAA/G,CAAc1I,EAAOiN,GACjBnS,KAAKmS,SAAWA,EAChB,IAAIwC,EAAO3U,KAAKyU,SAASvP,EAAOiN,GAChC,GAAInS,KAAKmU,kBAAmB,CACxBQ,EAAOA,EAAKE,aACxB,CACQ7U,KAAK8U,YAAYH,EACzB,CACI,WAAAG,CAAYH,GACR,IAAIzV,EAAIwH,EAAI0M,EAAIC,EAChBrT,KAAKwT,aAAexT,KAAKuT,WACzBvT,KAAKyT,QAAUkB,EACf,MAAMI,GAAgB/U,KAAKmT,QAAQpJ,SAAW8I,EAAiBjT,IAAI+U,GACnE,GAAII,EAAc,CACd,MAAO/U,KAAK6T,MAAM9O,OAAS,GACvBgQ,EAAaH,IAAI5U,KAAK6T,MAAM7T,KAAK6T,MAAM9O,OAAS,IAAK,CACrD,MAAMiQ,EAAUhV,KAAK6T,MAAMoB,OAC1BvO,GAAMxH,EAAKc,KAAKiK,KAAKiE,cAAgB,MAAQxH,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAI8V,EAAS,KAC5G,CACA,CACQ,IAAKhV,KAAK0U,cAAcC,GAAO,CAC3B3U,KAAK6T,MAAMqB,KAAKP,GAChB,GAAI5B,EAAuB6B,IAAID,GAAO,CAClC3U,KAAK8T,eAAeoB,KAAK,KACzC,MACiB,GAAIlC,EAAwB4B,IAAID,GAAO,CACxC3U,KAAK8T,eAAeoB,KAAK,MACzC,CACA,EACS7B,GAAMD,EAAKpT,KAAKiK,KAAK2D,iBAAmB,MAAQyF,SAAY,OAAS,EAAIA,EAAGjS,KAAKgS,EAAIuB,GACtF,GAAI3U,KAAKiK,IAAIkL,UACTnV,KAAK4T,QAAU,EAC3B,CACI,UAAAwB,CAAWC,GACP,IAAInW,EAAIwH,EACR1G,KAAKuT,WAAavT,KAAKwT,aACvB,GAAIxT,KAAK4T,QAAS,EACblN,GAAMxH,EAAKc,KAAKiK,KAAKkL,aAAe,MAAQzO,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIc,KAAKyT,QAASzT,KAAK4T,QAASyB,GAC9GrV,KAAK4T,QAAU,IAC3B,CACQ,GAAI5T,KAAKiK,IAAIiE,YAAclO,KAAK0U,cAAc1U,KAAKyT,SAAU,CACzDzT,KAAKiK,IAAIiE,WAAWlO,KAAKyT,QAAS,KAC9C,CACQzT,KAAKyT,QAAU,EACvB,CAEI,YAAApF,CAAa8D,GACTnS,KAAKmS,SAAWA,EAChBnS,KAAKoV,WAAW,OAEhBpV,KAAKuT,WAAapB,EAAW,CACrC,CAEI,UAAAjE,CAAWhJ,EAAOiN,GACd,IAAIjT,EAAIwH,EAAI0M,EAAIC,EAAIC,EAAIgC,EACxBtV,KAAKmS,SAAWA,EAChB,IAAIwC,EAAO3U,KAAKyU,SAASvP,EAAOiN,GAChC,GAAInS,KAAKmU,kBAAmB,CACxBQ,EAAOA,EAAKE,aACxB,CACQ,GAAI9B,EAAuB6B,IAAID,IAC3B3B,EAAwB4B,IAAID,GAAO,CACnC3U,KAAK8T,eAAemB,KAChC,CACQ,IAAKjV,KAAK0U,cAAcC,GAAO,CAC3B,MAAMY,EAAMvV,KAAK6T,MAAM2B,YAAYb,GACnC,GAAIY,KAAS,EAAG,CACZ,GAAIvV,KAAKiK,IAAIiE,WAAY,CACrB,IAAIuH,EAAQzV,KAAK6T,MAAM9O,OAASwQ,EAChC,MAAOE,IAAS,CAEZzV,KAAKiK,IAAIiE,WAAWlO,KAAK6T,MAAMoB,MAAOQ,IAAU,EACxE,CACA,MAEoBzV,KAAK6T,MAAM9O,OAASwQ,CACxC,MACiB,IAAKvV,KAAKmT,QAAQpJ,SAAW4K,IAAS,IAAK,CAE5C3U,KAAK8U,YAAY,KACjB9U,KAAK0V,gBAAgB,KACrC,CACA,MACa,IAAK1V,KAAKmT,QAAQpJ,SAAW4K,IAAS,KAAM,EAE5CjO,GAAMxH,EAAKc,KAAKiK,KAAK2D,iBAAmB,MAAQlH,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAI,OACrFmU,GAAMD,EAAKpT,KAAKiK,KAAKkL,aAAe,MAAQ9B,SAAY,OAAS,EAAIA,EAAGjS,KAAKgS,EAAI,KAAM,GAAI,OAC3FkC,GAAMhC,EAAKtT,KAAKiK,KAAKiE,cAAgB,MAAQoH,SAAY,OAAS,EAAIA,EAAGlU,KAAKkS,EAAI,KAAM,MACrG,CAEQtT,KAAKuT,WAAapB,EAAW,CACrC,CAEI,gBAAAzD,CAAiByD,GACbnS,KAAKmS,SAAWA,EAChB,GAAInS,KAAKmT,QAAQpJ,SACb/J,KAAKmT,QAAQwC,sBACb3V,KAAK8T,eAAe9T,KAAK8T,eAAe/O,OAAS,GAAI,CACrD/E,KAAK0V,gBAAgB,OAErB1V,KAAKuT,WAAapB,EAAW,CACzC,KACa,CAEDnS,KAAKqO,aAAa8D,EAC9B,CACA,CACI,eAAAuD,CAAgBE,GACZ,IAAI1W,EAAIwH,EACR,MAAMiO,EAAO3U,KAAKyT,QAClBzT,KAAKoV,WAAWQ,GAEhB,GAAI5V,KAAK6T,MAAM7T,KAAK6T,MAAM9O,OAAS,KAAO4P,EAAM,EAE3CjO,GAAMxH,EAAKc,KAAKiK,KAAKiE,cAAgB,MAAQxH,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIyV,GAAOiB,GAC1F5V,KAAK6T,MAAMoB,KACvB,CACA,CAEI,YAAApG,CAAa3J,EAAOiN,GAChBnS,KAAKuT,WAAarO,EAClB,MAAMyP,EAAO3U,KAAKyU,SAASvP,EAAOiN,GAClCnS,KAAK0T,WAAa1T,KAAKqU,wBACjBM,EAAKE,cACLF,CACd,CAEI,YAAA/E,CAAa1K,EAAOiN,GAChBnS,KAAK2T,aAAe3T,KAAKyU,SAASvP,EAAOiN,EACjD,CAEI,cAAAE,CAAeD,GACXpS,KAAK2T,aAAetU,gBAAc+S,EAC1C,CAEI,WAAAnD,CAAYU,EAAOwC,GACf,IAAIjT,EAAIwH,EACR1G,KAAKmS,SAAWA,GACfzL,GAAMxH,EAAKc,KAAKiK,KAAK4L,eAAiB,MAAQnP,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIc,KAAK0T,WAAY1T,KAAK2T,YAAahE,IAAUvG,EAAUyG,OACrI,IACAF,IAAUvG,EAAU0G,OAChB,IACAH,IAAUvG,EAAU8F,QAChB5O,UACA,MACd,GAAIN,KAAK4T,UACJpV,OAAO0C,UAAUC,eAAeC,KAAKpB,KAAK4T,QAAS5T,KAAK0T,YAAa,CACtE1T,KAAK4T,QAAQ5T,KAAK0T,YAAc1T,KAAK2T,WACjD,CACQ3T,KAAK2T,YAAc,EAC3B,CACI,kBAAAmC,CAAmBnX,GACf,MAAM0L,EAAQ1L,EAAMoX,OAAO9C,GAC3B,IAAI0B,EAAOtK,EAAQ,EAAI1L,EAAQA,EAAM8G,OAAO,EAAG4E,GAC/C,GAAIrK,KAAKmU,kBAAmB,CACxBQ,EAAOA,EAAKE,aACxB,CACQ,OAAOF,CACf,CAEI,aAAApE,CAAcrL,EAAOiN,GACjBnS,KAAKmS,SAAWA,EAChB,MAAMxT,EAAQqB,KAAKyU,SAASvP,EAAOiN,GACnC,GAAInS,KAAKiK,IAAIwG,wBAAyB,CAClC,MAAMkE,EAAO3U,KAAK8V,mBAAmBnX,GACrCqB,KAAKiK,IAAIwG,wBAAwB,IAAIkE,IAAQ,IAAIhW,IAC7D,CAEQqB,KAAKuT,WAAapB,EAAW,CACrC,CAEI,uBAAA1B,CAAwBvL,EAAOiN,GAC3BnS,KAAKmS,SAAWA,EAChB,MAAMxT,EAAQqB,KAAKyU,SAASvP,EAAOiN,GACnC,GAAInS,KAAKiK,IAAIwG,wBAAyB,CAClC,MAAMkE,EAAO3U,KAAK8V,mBAAmBnX,GACrCqB,KAAKiK,IAAIwG,wBAAwB,IAAIkE,IAAQ,IAAIhW,IAC7D,CAEQqB,KAAKuT,WAAapB,EAAW,CACrC,CAEI,SAAApF,CAAU7H,EAAOiN,EAAU9N,GACvB,IAAInF,EAAIwH,EAAI0M,EAAIC,EAChBrT,KAAKmS,SAAWA,GACfzL,GAAMxH,EAAKc,KAAKiK,KAAK8C,aAAe,MAAQrG,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAIc,KAAKyU,SAASvP,EAAOiN,EAAW9N,KACjHgP,GAAMD,EAAKpT,KAAKiK,KAAK+L,gBAAkB,MAAQ3C,SAAY,OAAS,EAAIA,EAAGjS,KAAKgS,GAEjFpT,KAAKuT,WAAapB,EAAW,CACrC,CAEI,OAAArF,CAAQ5H,EAAOiN,EAAU9N,GACrB,IAAInF,EAAIwH,EAAI0M,EAAIC,EAAIC,EAAIgC,EAAIW,EAAIC,EAAIC,EAAIC,EACxCpW,KAAKmS,SAAWA,EAChB,MAAMxT,EAAQqB,KAAKyU,SAASvP,EAAOiN,EAAW9N,GAC9C,GAAIrE,KAAKmT,QAAQpJ,SAAW/J,KAAKmT,QAAQkD,eAAgB,EACpD3P,GAAMxH,EAAKc,KAAKiK,KAAKqM,gBAAkB,MAAQ5P,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,IAChFmU,GAAMD,EAAKpT,KAAKiK,KAAK0B,UAAY,MAAQ0H,SAAY,OAAS,EAAIA,EAAGjS,KAAKgS,EAAIzU,IAC9E2W,GAAMhC,EAAKtT,KAAKiK,KAAKsM,cAAgB,MAAQjB,SAAY,OAAS,EAAIA,EAAGlU,KAAKkS,EAC3F,KACa,EACA4C,GAAMD,EAAKjW,KAAKiK,KAAK8C,aAAe,MAAQmJ,SAAY,OAAS,EAAIA,EAAG9U,KAAK6U,EAAI,UAAUtX,QAC3FyX,GAAMD,EAAKnW,KAAKiK,KAAK+L,gBAAkB,MAAQI,SAAY,OAAS,EAAIA,EAAGhV,KAAK+U,EAC7F,CAEQnW,KAAKuT,WAAapB,EAAW,CACrC,CAEI,KAAAD,GACI,IAAIhT,EAAIwH,EACR,GAAI1G,KAAKiK,IAAIiE,WAAY,CAErBlO,KAAKmS,SAAWnS,KAAKuT,WACrB,IAAK,IAAIlJ,EAAQrK,KAAK6T,MAAM9O,OAAQsF,EAAQ,EAAGrK,KAAKiK,IAAIiE,WAAWlO,KAAK6T,QAAQxJ,GAAQ,OAEpG,EACS3D,GAAMxH,EAAKc,KAAKiK,KAAKiI,SAAW,MAAQxL,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAClF,CAII,KAAA8L,GACI,IAAI9L,EAAIwH,EAAI0M,EAAIC,GACf3M,GAAMxH,EAAKc,KAAKiK,KAAKuM,WAAa,MAAQ9P,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,GAC5Ec,KAAKsU,UAAUtJ,QACfhL,KAAKyT,QAAU,GACfzT,KAAK0T,WAAa,GAClB1T,KAAK4T,QAAU,KACf5T,KAAK6T,MAAM9O,OAAS,EACpB/E,KAAKuT,WAAa,EAClBvT,KAAKmS,SAAW,GACfkB,GAAMD,EAAKpT,KAAKiK,KAAKsK,gBAAkB,MAAQlB,SAAY,OAAS,EAAIA,EAAGjS,KAAKgS,EAAIpT,MACrFA,KAAK+T,QAAQhP,OAAS,EACtB/E,KAAKgU,aAAe,EACpBhU,KAAKiU,WAAa,EAClBjU,KAAKkU,MAAQ,KACrB,CAOI,aAAAuC,CAAcjC,GACVxU,KAAKgL,QACLhL,KAAKmF,IAAIqP,EACjB,CACI,QAAAC,CAASvP,EAAOC,GACZ,MAAOD,EAAQlF,KAAKgU,cAAgBhU,KAAK+T,QAAQ,GAAGhP,OAAQ,CACxD/E,KAAK0W,aACjB,CACQ,IAAIzP,EAAQjH,KAAK+T,QAAQ,GAAG9M,MAAM/B,EAAQlF,KAAKgU,aAAc7O,EAAMnF,KAAKgU,cACxE,MAAO7O,EAAMnF,KAAKgU,aAAehU,KAAK+T,QAAQ,GAAGhP,OAAQ,CACrD/E,KAAK0W,cACLzP,GAASjH,KAAK+T,QAAQ,GAAG9M,MAAM,EAAG9B,EAAMnF,KAAKgU,aACzD,CACQ,OAAO/M,CACf,CACI,WAAAyP,GACI1W,KAAKgU,cAAgBhU,KAAK+T,QAAQ,GAAGhP,OACrC/E,KAAKiU,aACLjU,KAAK+T,QAAQ4C,OACrB,CAMI,KAAAxS,CAAM8G,GACF,IAAI/L,EAAIwH,EACR,GAAI1G,KAAKkU,MAAO,EACXxN,GAAMxH,EAAKc,KAAKiK,KAAK2M,WAAa,MAAQlQ,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAI,IAAI2X,MAAM,yBAC1F,MACZ,CACQ7W,KAAK+T,QAAQmB,KAAKjK,GAClB,GAAIjL,KAAKsU,UAAU9J,QAAS,CACxBxK,KAAKsU,UAAUnQ,MAAM8G,GACrBjL,KAAKiU,YACjB,CACA,CAMI,GAAA9O,CAAI8F,GACA,IAAI/L,EAAIwH,EACR,GAAI1G,KAAKkU,MAAO,EACXxN,GAAMxH,EAAKc,KAAKiK,KAAK2M,WAAa,MAAQlQ,SAAY,OAAS,EAAIA,EAAGtF,KAAKlC,EAAI,IAAI2X,MAAM,uBAC1F,MACZ,CACQ,GAAI5L,EACAjL,KAAKmE,MAAM8G,GACfjL,KAAKkU,MAAQ,KACblU,KAAKsU,UAAUnP,KACvB,CAII,KAAAiG,GACIpL,KAAKsU,UAAUlJ,OACvB,CAII,MAAAC,GACIrL,KAAKsU,UAAUjJ,SACf,MAAOrL,KAAKsU,UAAU9J,SAClBxK,KAAKiU,WAAajU,KAAK+T,QAAQhP,OAAQ,CACvC/E,KAAKsU,UAAUnQ,MAAMnE,KAAK+T,QAAQ/T,KAAKiU,cACnD,CACQ,GAAIjU,KAAKkU,MACLlU,KAAKsU,UAAUnP,KAC3B,CAOI,UAAA2R,CAAW7L,GACPjL,KAAKmE,MAAM8G,EACnB,CAOI,IAAA8L,CAAK9L,GACDjL,KAAKmF,IAAI8F,EACjB,ECreO,IAAI+L,GACX,SAAWA,GAEPA,EAAY,QAAU,OAEtBA,EAAY,QAAU,OAEtBA,EAAY,aAAe,YAE3BA,EAAY,WAAa,UAEzBA,EAAY,UAAY,SAExBA,EAAY,SAAW,QAEvBA,EAAY,OAAS,MAErBA,EAAY,SAAW,QAEvBA,EAAY,WAAa,SAC5B,EAnBD,CAmBGA,IAAgBA,EAAc,KAM1B,SAASC,EAAMC,GAClB,OAAQA,EAAKC,OAASH,EAAYI,KAC9BF,EAAKC,OAASH,EAAYK,QAC1BH,EAAKC,OAASH,EAAYM,KAClC,CAGO,MAAMC,EAAOP,EAAYO,KAEzB,MAAMrN,EAAO8M,EAAY9M,KAEzB,MAAMsN,EAAYR,EAAYQ,UAE9B,MAAMC,EAAUT,EAAYS,QAE5B,MAAMJ,EAASL,EAAYK,OAE3B,MAAMC,EAAQN,EAAYM,MAE1B,MAAMF,EAAMJ,EAAYI,IAExB,MAAMM,EAAQV,EAAYU,MAE1B,MAAMC,EAAUX,EAAYW,Q,yJC7C5B,MAAMC,EACT,WAAA9N,GAEI9J,KAAK6X,OAAS,KAEd7X,KAAK8X,KAAO,KAEZ9X,KAAK+X,KAAO,KAEZ/X,KAAKuT,WAAa,KAElBvT,KAAKmS,SAAW,IACxB,CAMI,cAAI6F,GACA,OAAOhY,KAAK6X,MACpB,CACI,cAAIG,CAAWH,GACX7X,KAAK6X,OAASA,CACtB,CAKI,mBAAII,GACA,OAAOjY,KAAK8X,IACpB,CACI,mBAAIG,CAAgBH,GAChB9X,KAAK8X,KAAOA,CACpB,CAKI,eAAII,GACA,OAAOlY,KAAK+X,IACpB,CACI,eAAIG,CAAYH,GACZ/X,KAAK+X,KAAOA,CACpB,CAOI,SAAAI,CAAUC,EAAY,OAClB,OAAOD,GAAUnY,KAAMoY,EAC/B,EAKO,MAAMC,UAAiBT,EAI1B,WAAA9N,CAAY0K,GACR8D,QACAtY,KAAKwU,KAAOA,CACpB,CAKI,aAAI+D,GACA,OAAOvY,KAAKwU,IACpB,CACI,aAAI+D,CAAU/D,GACVxU,KAAKwU,KAAOA,CACpB,EAKO,MAAMtK,UAAamO,EACtB,WAAAvO,GACIwO,SAASE,WACTxY,KAAKmX,KAAOH,EAAY9M,IAChC,CACI,YAAIuO,GACA,OAAO,CACf,EAKO,MAAMhB,UAAgBY,EACzB,WAAAvO,GACIwO,SAASE,WACTxY,KAAKmX,KAAOH,EAAYS,OAChC,CACI,YAAIgB,GACA,OAAO,CACf,EAKO,MAAMC,UAA8BL,EACvC,WAAAvO,CAAY6K,EAAMH,GACd8D,MAAM9D,GACNxU,KAAK2U,KAAOA,EACZ3U,KAAKmX,KAAOH,EAAYQ,SAChC,CACI,YAAIiB,GACA,OAAO,CACf,EAKO,MAAME,UAAyBf,EAIlC,WAAA9N,CAAY8O,GACRN,QACAtY,KAAK4Y,SAAWA,CACxB,CAGI,cAAIC,GACA,IAAI3Z,EACJ,OAAQA,EAAKc,KAAK4Y,SAAS,MAAQ,MAAQ1Z,SAAY,EAAIA,EAAK,IACxE,CAEI,aAAI4Z,GACA,OAAO9Y,KAAK4Y,SAAS7T,OAAS,EACxB/E,KAAK4Y,SAAS5Y,KAAK4Y,SAAS7T,OAAS,GACrC,IACd,CAKI,cAAIgU,GACA,OAAO/Y,KAAK4Y,QACpB,CACI,cAAIG,CAAWH,GACX5Y,KAAK4Y,SAAWA,CACxB,EAEO,MAAMlB,UAAciB,EACvB,WAAA7O,GACIwO,SAASE,WACTxY,KAAKmX,KAAOH,EAAYU,KAChC,CACI,YAAIe,GACA,OAAO,CACf,EAKO,MAAMO,UAAiBL,EAC1B,WAAA7O,GACIwO,SAASE,WACTxY,KAAKmX,KAAOH,EAAYO,IAChC,CACI,YAAIkB,GACA,OAAO,CACf,EAKO,MAAMQ,UAAgBN,EAMzB,WAAA7O,CAAY6K,EAAMf,EAASgF,EAAW,GAAIzB,GAAOxC,IAAS,SACpDqC,EAAYK,OACZ1C,IAAS,QACLqC,EAAYM,MACZN,EAAYI,MAClBkB,MAAMM,GACN5Y,KAAK2U,KAAOA,EACZ3U,KAAK4T,QAAUA,EACf5T,KAAKmX,KAAOA,CACpB,CACI,YAAIsB,GACA,OAAO,CACf,CAMI,WAAIS,GACA,OAAOlZ,KAAK2U,IACpB,CACI,WAAIuE,CAAQvE,GACR3U,KAAK2U,KAAOA,CACpB,CACI,cAAIwE,GACA,OAAO3a,OAAO4a,KAAKpZ,KAAK4T,SAAS9U,KAAK6V,IAClC,IAAIzV,EAAIwH,EACR,OACIiO,OACAhW,MAAOqB,KAAK4T,QAAQe,GACpB0E,WAAYna,EAAKc,KAAK,yBAA2B,MAAQd,SAAY,OAAS,EAAIA,EAAGyV,GACrF2E,QAAS5S,EAAK1G,KAAK,sBAAwB,MAAQ0G,SAAY,OAAS,EAAIA,EAAGiO,GAClF,GAEb,EAMO,SAASsC,EAAMsC,GAClB,OAAOC,EAASD,EACpB,CAKO,SAASE,EAAQF,GACpB,OAAOA,EAAKpC,OAASH,EAAYU,KACrC,CAKO,SAASgC,EAAOH,GACnB,OAAOA,EAAKpC,OAASH,EAAY9M,IACrC,CAKO,SAASyP,EAAUJ,GACtB,OAAOA,EAAKpC,OAASH,EAAYS,OACrC,CAKO,SAASmC,EAAYL,GACxB,OAAOA,EAAKpC,OAASH,EAAYQ,SACrC,CAKO,SAASqC,EAAWN,GACvB,OAAOA,EAAKpC,OAASH,EAAYO,IACrC,CAKO,SAASuC,GAAYP,GACxB,OAAO/a,OAAO0C,UAAUC,eAAeC,KAAKmY,EAAM,WACtD,CAOO,SAASpB,GAAUoB,EAAMnB,EAAY,OACxC,IAAInX,EACJ,GAAIyY,EAAOH,GAAO,CACdtY,EAAS,IAAIiJ,EAAKqP,EAAK/E,KAC/B,MACS,GAAImF,EAAUJ,GAAO,CACtBtY,EAAS,IAAIwW,EAAQ8B,EAAK/E,KAClC,MACS,GAAIyC,EAAMsC,GAAO,CAClB,MAAMX,EAAWR,EAAY2B,GAAcR,EAAKX,UAAY,GAC5D,MAAMoB,EAAQ,IAAIf,EAAQM,EAAK5E,KAAM,IAAK4E,EAAK3F,SAAWgF,GAC1DA,EAASqB,SAASC,GAAWA,EAAMrC,OAASmC,IAC5C,GAAIT,EAAKF,WAAa,KAAM,CACxBW,EAAMX,UAAYE,EAAKF,SACnC,CACQ,GAAIE,EAAK,sBAAuB,CAC5BS,EAAM,sBAAwB,IAAKT,EAAK,sBACpD,CACQ,GAAIA,EAAK,mBAAoB,CACzBS,EAAM,mBAAqB,IAAKT,EAAK,mBACjD,CACQtY,EAAS+Y,CACjB,MACS,GAAIP,EAAQF,GAAO,CACpB,MAAMX,EAAWR,EAAY2B,GAAcR,EAAKX,UAAY,GAC5D,MAAMoB,EAAQ,IAAItC,EAAMkB,GACxBA,EAASqB,SAASC,GAAWA,EAAMrC,OAASmC,IAC5C/Y,EAAS+Y,CACjB,MACS,GAAIH,EAAWN,GAAO,CACvB,MAAMX,EAAWR,EAAY2B,GAAcR,EAAKX,UAAY,GAC5D,MAAMoB,EAAQ,IAAIhB,EAASJ,GAC3BA,EAASqB,SAASC,GAAWA,EAAMrC,OAASmC,IAC5C,GAAIT,EAAK,UAAW,CAChBS,EAAM,UAAYT,EAAK,SACnC,CACQtY,EAAS+Y,CACjB,MACS,GAAIJ,EAAYL,GAAO,CACxB,MAAMY,EAAc,IAAIzB,EAAsBa,EAAK5E,KAAM4E,EAAK/E,MAC9D,GAAI+E,EAAK,WAAa,KAAM,CACxBY,EAAY,UAAYZ,EAAK,UAC7BY,EAAY,cAAgBZ,EAAK,cACjCY,EAAY,cAAgBZ,EAAK,aAC7C,CACQtY,EAASkZ,CACjB,KACS,CACD,MAAM,IAAItD,MAAM,wBAAwB0C,EAAKpC,OACrD,CACIlW,EAAOsS,WAAagG,EAAKhG,WACzBtS,EAAOkR,SAAWoH,EAAKpH,SACvB,GAAIoH,EAAKa,oBAAsB,KAAM,CACjCnZ,EAAOmZ,mBAAqBb,EAAKa,kBACzC,CACI,OAAOnZ,CACX,CACA,SAAS8Y,GAAcM,GACnB,MAAMzB,EAAWyB,EAAOvb,KAAKob,GAAU/B,GAAU+B,EAAO,QACxD,IAAK,IAAII,EAAI,EAAGA,EAAI1B,EAAS7T,OAAQuV,IAAK,CACtC1B,EAAS0B,GAAGxC,KAAOc,EAAS0B,EAAI,GAChC1B,EAAS0B,EAAI,GAAGvC,KAAOa,EAAS0B,EACxC,CACI,OAAO1B,CACX,CC7UA,MAAM2B,GAAc,CAChBC,iBAAkB,MAClBC,eAAgB,MAChB1Q,QAAS,OAEN,MAAM2Q,GAMT,WAAA5Q,CAAY6Q,EAAUxH,EAASyH,GAE3B5a,KAAK6a,IAAM,GAEX7a,KAAK8a,KAAO,IAAI9B,EAAShZ,KAAK6a,KAE9B7a,KAAK+W,KAAO,MAEZ/W,KAAK+a,SAAW,CAAC/a,KAAK8a,MAEtB9a,KAAKgb,SAAW,KAEhBhb,KAAKib,OAAS,KAEd,UAAW9H,IAAY,WAAY,CAC/ByH,EAAYzH,EACZA,EAAUoH,EACtB,CACQ,UAAWI,IAAa,SAAU,CAC9BxH,EAAUwH,EACVA,EAAWra,SACvB,CACQN,KAAK2a,SAAWA,IAAa,MAAQA,SAAkB,EAAIA,EAAW,KACtE3a,KAAKmT,QAAUA,IAAY,MAAQA,SAAiB,EAAIA,EAAUoH,GAClEva,KAAK4a,UAAYA,IAAc,MAAQA,SAAmB,EAAIA,EAAY,IAClF,CACI,YAAArG,CAAa0G,GACTjb,KAAKib,OAASA,CACtB,CAEI,OAAAzE,GACIxW,KAAK6a,IAAM,GACX7a,KAAK8a,KAAO,IAAI9B,EAAShZ,KAAK6a,KAC9B7a,KAAK+W,KAAO,MACZ/W,KAAK+a,SAAW,CAAC/a,KAAK8a,MACtB9a,KAAKgb,SAAW,KAChBhb,KAAKib,OAAS,IACtB,CAEI,KAAA/I,GACI,GAAIlS,KAAK+W,KACL,OACJ/W,KAAK+W,KAAO,KACZ/W,KAAKib,OAAS,KACdjb,KAAKkb,eAAe,KAC5B,CACI,OAAAtE,CAAQuE,GACJnb,KAAKkb,eAAeC,EAC5B,CACI,UAAAjN,GACIlO,KAAKgb,SAAW,KAChB,MAAM9D,EAAOlX,KAAK+a,SAAS9F,MAC3B,GAAIjV,KAAKmT,QAAQsH,eAAgB,CAC7BvD,EAAK/E,SAAWnS,KAAKib,OAAO9I,QACxC,CACQ,GAAInS,KAAK4a,UACL5a,KAAK4a,UAAU1D,EAC3B,CACI,SAAA/B,CAAUR,EAAMf,GACZ,MAAMuD,EAAOnX,KAAKmT,QAAQpJ,QAAUiN,EAAYI,IAAM9W,UACtD,MAAM0U,EAAU,IAAIiE,EAAQtE,EAAMf,EAAStT,UAAW6W,GACtDnX,KAAKob,QAAQpG,GACbhV,KAAK+a,SAAS7F,KAAKF,EAC3B,CACI,MAAArJ,CAAO6I,GACH,MAAMwG,SAAEA,GAAahb,KACrB,GAAIgb,GAAYA,EAAS7D,OAASH,EAAY9M,KAAM,CAChD8Q,EAASxG,MAAQA,EACjB,GAAIxU,KAAKmT,QAAQsH,eAAgB,CAC7BO,EAAS7I,SAAWnS,KAAKib,OAAO9I,QAChD,CACA,KACa,CACD,MAAMoH,EAAO,IAAIrP,EAAKsK,GACtBxU,KAAKob,QAAQ7B,GACbvZ,KAAKgb,SAAWzB,CAC5B,CACA,CACI,SAAAxM,CAAUyH,GACN,GAAIxU,KAAKgb,UAAYhb,KAAKgb,SAAS7D,OAASH,EAAYS,QAAS,CAC7DzX,KAAKgb,SAASxG,MAAQA,EACtB,MACZ,CACQ,MAAM+E,EAAO,IAAI9B,EAAQjD,GACzBxU,KAAKob,QAAQ7B,GACbvZ,KAAKgb,SAAWzB,CACxB,CACI,YAAAvD,GACIhW,KAAKgb,SAAW,IACxB,CACI,YAAA1E,GACI,MAAM+E,EAAO,IAAInR,EAAK,IACtB,MAAMqP,EAAO,IAAI7B,EAAM,CAAC2D,IACxBrb,KAAKob,QAAQ7B,GACb8B,EAAKxD,OAAS0B,EACdvZ,KAAKgb,SAAWK,CACxB,CACI,UAAA9E,GACIvW,KAAKgb,SAAW,IACxB,CACI,uBAAAvK,CAAwBkE,EAAMH,GAC1B,MAAM+E,EAAO,IAAIb,EAAsB/D,EAAMH,GAC7CxU,KAAKob,QAAQ7B,EACrB,CACI,cAAA2B,CAAeC,GACX,UAAWnb,KAAK2a,WAAa,WAAY,CACrC3a,KAAK2a,SAASQ,EAAOnb,KAAK6a,IACtC,MACa,GAAIM,EAAO,CACZ,MAAMA,CAClB,CACA,CACI,OAAAC,CAAQ7B,GACJ,MAAM1B,EAAS7X,KAAK+a,SAAS/a,KAAK+a,SAAShW,OAAS,GACpD,MAAMkT,EAAkBJ,EAAOe,SAASf,EAAOe,SAAS7T,OAAS,GACjE,GAAI/E,KAAKmT,QAAQqH,iBAAkB,CAC/BjB,EAAKhG,WAAavT,KAAKib,OAAO1H,UAC1C,CACQ,GAAIvT,KAAKmT,QAAQsH,eAAgB,CAC7BlB,EAAKpH,SAAWnS,KAAKib,OAAO9I,QACxC,CACQ0F,EAAOe,SAAS1D,KAAKqE,GACrB,GAAItB,EAAiB,CACjBsB,EAAKzB,KAAOG,EACZA,EAAgBF,KAAOwB,CACnC,CACQA,EAAK1B,OAASA,EACd7X,KAAKgb,SAAW,IACxB,EC/IO,MAAMM,GAAc,uBAC3B,MAAMC,GAAa,IAAIhc,IAAI,CACvB,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,GAAI,UACL,CAAC,GAAI,QACL,CAAC,GAAI,UAGF,MAAMic,GAEbhc,OAAO0B,UAAUua,aAAe,KAC1B,CAACrX,EAAKiG,IAAUjG,EAAIqX,YAAYpR,GAE9B,CAACtL,EAAGsL,KAAWtL,EAAEC,WAAWqL,GAAS,SAAY,OAC1CtL,EAAEC,WAAWqL,GAAS,OAAU,KAC/BtL,EAAEC,WAAWqL,EAAQ,GACrB,MACA,MACFtL,EAAEC,WAAWqL,GAQpB,SAASqR,GAAUtX,GACtB,IAAIwC,EAAM,GACV,IAAI+U,EAAU,EACd,IAAIC,EACJ,OAAQA,EAAQN,GAAYO,KAAKzX,MAAU,KAAM,CAC7C,MAAMkW,EAAIsB,EAAMvR,MAChB,MAAM1E,EAAOvB,EAAIpF,WAAWsb,GAC5B,MAAMvC,EAAOwD,GAAW3b,IAAI+F,GAC5B,GAAIoS,IAASzX,UAAW,CACpBsG,GAAOxC,EAAI0X,UAAUH,EAASrB,GAAKvC,EACnC4D,EAAUrB,EAAI,CAC1B,KACa,CACD1T,GAAO,GAAGxC,EAAI0X,UAAUH,EAASrB,QAAQkB,GAAapX,EAAKkW,GAAGyB,SAAS,OAEvEJ,EAAUL,GAAYvU,WAAayF,QAAQ7G,EAAO,SAAY,MAC1E,CACA,CACI,OAAOiB,EAAMxC,EAAIqB,OAAOkW,EAC5B,CAqBA,SAASK,GAAWC,EAAOnd,GACvB,OAAO,SAASod,EAAO1H,GACnB,IAAIoH,EACJ,IAAID,EAAU,EACd,IAAI1a,EAAS,GACb,MAAQ2a,EAAQK,EAAMJ,KAAKrH,GAAQ,CAC/B,GAAImH,IAAYC,EAAMvR,MAAO,CACzBpJ,GAAUuT,EAAKsH,UAAUH,EAASC,EAAMvR,MACxD,CAEYpJ,GAAUnC,EAAIc,IAAIgc,EAAM,GAAG5c,WAAW,IAEtC2c,EAAUC,EAAMvR,MAAQ,CACpC,CACQ,OAAOpJ,EAASuT,EAAKsH,UAAUH,EACvC,CACA,CAeO,MAAMQ,GAAkBH,GAAW,cAAe,IAAIzc,IAAI,CAC7D,CAAC,GAAI,UACL,CAAC,GAAI,SACL,CAAC,IAAK,aAQH,MAAM6c,GAAaJ,GAAW,eAAgB,IAAIzc,IAAI,CACzD,CAAC,GAAI,SACL,CAAC,GAAI,QACL,CAAC,GAAI,QACL,CAAC,IAAK,aCjHH,MAAM8c,GAAe,IAAI9c,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,YACFT,KAAKwd,GAAQ,CAACA,EAAIzH,cAAeyH,MAC5B,MAAMC,GAAiB,IAAIhd,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,cACFT,KAAKwd,GAAQ,CAACA,EAAIzH,cAAeyH,MCvFnC,MAAME,GAAoB,IAAIhK,IAAI,CAC9B,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aAEJ,SAASiK,GAAc9d,GACnB,OAAOA,EAAM+d,QAAQ,KAAM,SAC/B,CAIA,SAASC,GAAiBxD,EAAYyD,GAClC,IAAI1d,EACJ,IAAKia,EACD,OACJ,MAAM0D,IAAW3d,EAAK0d,EAAKE,kBAAoB,MAAQ5d,SAAY,EAAIA,EAAK0d,EAAK5S,kBAAoB,MAC/FyS,GACAG,EAAK7S,SAAW6S,EAAKE,iBAAmB,OACpCpB,GACAS,GACV,OAAO3d,OAAO4a,KAAKD,GACdra,KAAKie,IACN,IAAI7d,EAAIwH,EACR,MAAM/H,GAASO,EAAKia,EAAW4D,MAAU,MAAQ7d,SAAY,EAAIA,EAAK,GACtE,GAAI0d,EAAK7S,UAAY,UAAW,CAE5BgT,GAAOrW,EAAK6V,GAAe3c,IAAImd,MAAU,MAAQrW,SAAY,EAAIA,EAAKqW,CAClF,CACQ,IAAKH,EAAKI,aAAeJ,EAAK7S,SAAWpL,IAAU,GAAI,CACnD,OAAOoe,CACnB,CACQ,MAAO,GAAGA,MAAQF,EAAOle,KAAS,IAEjCse,KAAK,IACd,CAIA,MAAMC,GAAY,IAAI1K,IAAI,CACtB,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAUG,SAAS2K,GAAO5D,EAAMpG,EAAU,IACnC,MAAMiK,EAAQ,WAAY7D,EAAOA,EAAO,CAACA,GACzC,IAAI7Z,EAAS,GACb,IAAK,IAAI4a,EAAI,EAAGA,EAAI8C,EAAMrY,OAAQuV,IAAK,CACnC5a,GAAU2d,GAAWD,EAAM9C,GAAInH,EACvC,CACI,OAAOzT,CACX,CAEA,SAAS2d,GAAW9D,EAAMpG,GACtB,OAAQoG,EAAKpC,MACT,KAAKmG,EACD,OAAOH,GAAO5D,EAAKX,SAAUzF,GAEjC,KAAKoK,EACL,KAAKC,EACD,OAAOC,GAAgBlE,GAC3B,KAAKmE,EACD,OAAOC,GAAcpE,GACzB,KAAKqE,EACD,OAAOC,GAAYtE,GACvB,KAAKuE,EACL,KAAKC,EACL,KAAKC,EACD,OAAOC,GAAU1E,EAAMpG,GAC3B,KAAK+K,EACD,OAAOC,GAAW5E,EAAMpG,GAEpC,CACA,MAAMiL,GAA+B,IAAI5L,IAAI,CACzC,KACA,KACA,KACA,KACA,QACA,iBACA,gBACA,OACA,UAEJ,MAAM6L,GAAkB,IAAI7L,IAAI,CAAC,MAAO,SACxC,SAASyL,GAAU/G,EAAM0F,GACrB,IAAI1d,EAEJ,GAAI0d,EAAK7S,UAAY,UAAW,CAE5BmN,EAAKvC,MAAQzV,EAAKmd,GAAazc,IAAIsX,EAAKvC,SAAW,MAAQzV,SAAY,EAAIA,EAAKgY,EAAKvC,KAErF,GAAIuC,EAAKW,QACLuG,GAA6BxJ,IAAIsC,EAAKW,OAAOlD,MAAO,CACpDiI,EAAO,IAAKA,EAAM7S,QAAS,MACvC,CACA,CACI,IAAK6S,EAAK7S,SAAWsU,GAAgBzJ,IAAIsC,EAAKvC,MAAO,CACjDiI,EAAO,IAAKA,EAAM7S,QAAS,UACnC,CACI,IAAIuU,EAAM,IAAIpH,EAAKvC,OACnB,MAAMf,EAAU+I,GAAiBzF,EAAKtD,QAASgJ,GAC/C,GAAIhJ,EAAS,CACT0K,GAAO,IAAI1K,GACnB,CACI,GAAIsD,EAAK0B,SAAS7T,SAAW,IACxB6X,EAAK7S,QAEE6S,EAAK2B,kBAAoB,MAEzB3B,EAAK2B,iBAAmBrB,GAAUtI,IAAIsC,EAAKvC,OAAQ,CAC3D,IAAKiI,EAAK7S,QACNuU,GAAO,IACXA,GAAO,IACf,KACS,CACDA,GAAO,IACP,GAAIpH,EAAK0B,SAAS7T,OAAS,EAAG,CAC1BuZ,GAAOnB,GAAOjG,EAAK0B,SAAUgE,EACzC,CACQ,GAAIA,EAAK7S,UAAYmT,GAAUtI,IAAIsC,EAAKvC,MAAO,CAC3C2J,GAAO,KAAKpH,EAAKvC,OAC7B,CACA,CACI,OAAO2J,CACX,CACA,SAASb,GAAgBvG,GACrB,MAAO,IAAIA,EAAK1C,OACpB,CACA,SAAS2J,GAAWjH,EAAM0F,GACtB,IAAI1d,EACJ,IAAIsV,EAAO0C,EAAK1C,MAAQ,GAExB,KAAMtV,EAAK0d,EAAKE,kBAAoB,MAAQ5d,SAAY,EAAIA,EAAK0d,EAAK5S,kBAAoB,UACnF4S,EAAK7S,SACJmN,EAAKW,QACL2E,GAAkB5H,IAAIsC,EAAKW,OAAOlD,OAAQ,CAC9CH,EACIoI,EAAK7S,SAAW6S,EAAKE,iBAAmB,OAClCpB,GAAUlH,GACV4H,GAAW5H,EAC7B,CACI,OAAOA,CACX,CACA,SAASqJ,GAAY3G,GACjB,MAAO,YAAYA,EAAK0B,SAAS,GAAGpE,SACxC,CACA,SAASmJ,GAAczG,GACnB,MAAO,UAAOA,EAAK1C,YACvB,CCnLO,SAASgK,GAAajF,EAAMpG,GAC/B,OAAOsL,GAAWlF,EAAMpG,EAC5B,CAQO,SAASuL,GAAanF,EAAMpG,GAC/B,OAAO2G,GAAYP,GACbA,EAAKX,SAAS9Z,KAAKya,GAASiF,GAAajF,EAAMpG,KAAU8J,KAAK,IAC9D,EACV,CASO,SAAS0B,GAAQpF,GACpB,GAAIqF,MAAMC,QAAQtF,GACd,OAAOA,EAAKza,IAAI6f,IAAS1B,KAAK,IAClC,GAAIhG,EAAMsC,GACN,OAAOA,EAAK5E,OAAS,KAAO,KAAOgK,GAAQpF,EAAKX,UACpD,GAAIa,EAAQF,GACR,OAAOoF,GAAQpF,EAAKX,UACxB,GAAIc,EAAOH,GACP,OAAOA,EAAK/E,KAChB,MAAO,EACX,CASO,SAASsK,GAAYvF,GACxB,GAAIqF,MAAMC,QAAQtF,GACd,OAAOA,EAAKza,IAAIggB,IAAa7B,KAAK,IACtC,GAAInD,GAAYP,KAAUI,EAAUJ,GAAO,CACvC,OAAOuF,GAAYvF,EAAKX,SAChC,CACI,GAAIc,EAAOH,GACP,OAAOA,EAAK/E,KAChB,MAAO,EACX,CASO,SAASuK,GAAUxF,GACtB,GAAIqF,MAAMC,QAAQtF,GACd,OAAOA,EAAKza,IAAIigB,IAAW9B,KAAK,IACpC,GAAInD,GAAYP,KAAUA,EAAKpC,OAASH,EAAYI,KAAOqC,EAAQF,IAAQ,CACvE,OAAOwF,GAAUxF,EAAKX,SAC9B,CACI,GAAIc,EAAOH,GACP,OAAOA,EAAK/E,KAChB,MAAO,EACX,CCvEO,SAASwK,GAAY9H,GACxB,OAAO4C,GAAY5C,GAAQA,EAAK0B,SAAW,EAC/C,CAQO,SAASqG,GAAU/H,GACtB,OAAOA,EAAKW,QAAU,IAC1B,CAYO,SAASqH,GAAYhI,GACxB,MAAMW,EAASoH,GAAU/H,GACzB,GAAIW,GAAU,KACV,OAAOmH,GAAYnH,GACvB,MAAMsH,EAAW,CAACjI,GAClB,IAAIY,KAAEA,EAAIC,KAAEA,GAASb,EACrB,MAAOY,GAAQ,KAAM,CACjBqH,EAASC,QAAQtH,KACdA,QAASA,EACpB,CACI,MAAOC,GAAQ,KAAM,CACjBoH,EAASjK,KAAK6C,KACXA,QAASA,EACpB,CACI,OAAOoH,CACX,CASO,SAASE,GAAkBnI,EAAMvC,GACpC,IAAIzV,EACJ,OAAQA,EAAKgY,EAAKtD,WAAa,MAAQ1U,SAAY,OAAS,EAAIA,EAAGyV,EACvE,CASO,SAAS2K,GAAUpI,EAAMvC,GAC5B,OAAQuC,EAAKtD,SAAW,MACpBpV,OAAO0C,UAAUC,eAAeC,KAAK8V,EAAKtD,QAASe,IACnDuC,EAAKtD,QAAQe,IAAS,IAC9B,CAQO,SAAS4K,GAAQrI,GACpB,OAAOA,EAAKvC,IAChB,CASO,SAAS6K,GAAmBtI,GAC/B,IAAIa,KAAEA,GAASb,EACf,MAAOa,IAAS,OAASd,EAAMc,KACxBA,QAASA,GAChB,OAAOA,CACX,CASO,SAAS0H,GAAmBvI,GAC/B,IAAIY,KAAEA,GAASZ,EACf,MAAOY,IAAS,OAASb,EAAMa,KACxBA,QAASA,GAChB,OAAOA,CACX,CCxGO,SAAS4H,GAAcxI,GAC1B,GAAIA,EAAKY,KACLZ,EAAKY,KAAKC,KAAOb,EAAKa,KAC1B,GAAIb,EAAKa,KACLb,EAAKa,KAAKD,KAAOZ,EAAKY,KAC1B,GAAIZ,EAAKW,OAAQ,CACb,MAAMwC,EAASnD,EAAKW,OAAOe,SAC3B,MAAM+G,EAActF,EAAO7E,YAAY0B,GACvC,GAAIyI,GAAe,EAAG,CAClBtF,EAAOuF,OAAOD,EAAa,EACvC,CACA,CACIzI,EAAKa,KAAO,KACZb,EAAKY,KAAO,KACZZ,EAAKW,OAAS,IAClB,CAQO,SAASgI,GAAe3I,EAAM4I,GACjC,MAAMhI,EAAQgI,EAAYhI,KAAOZ,EAAKY,KACtC,GAAIA,EAAM,CACNA,EAAKC,KAAO+H,CACpB,CACI,MAAM/H,EAAQ+H,EAAY/H,KAAOb,EAAKa,KACtC,GAAIA,EAAM,CACNA,EAAKD,KAAOgI,CACpB,CACI,MAAMjI,EAAUiI,EAAYjI,OAASX,EAAKW,OAC1C,GAAIA,EAAQ,CACR,MAAMwC,EAASxC,EAAOe,SACtByB,EAAOA,EAAO7E,YAAY0B,IAAS4I,EACnC5I,EAAKW,OAAS,IACtB,CACA,CAQO,SAASkI,GAAYlI,EAAQqC,GAChCwF,GAAcxF,GACdA,EAAMnC,KAAO,KACbmC,EAAMrC,OAASA,EACf,GAAIA,EAAOe,SAAS1D,KAAKgF,GAAS,EAAG,CACjC,MAAM8F,EAAUnI,EAAOe,SAASf,EAAOe,SAAS7T,OAAS,GACzDib,EAAQjI,KAAOmC,EACfA,EAAMpC,KAAOkI,CACrB,KACS,CACD9F,EAAMpC,KAAO,IACrB,CACA,CAQO,SAASmI,GAAO/I,EAAMa,GACzB2H,GAAc3H,GACd,MAAMF,OAAEA,GAAWX,EACnB,MAAMgJ,EAAWhJ,EAAKa,KACtBA,EAAKA,KAAOmI,EACZnI,EAAKD,KAAOZ,EACZA,EAAKa,KAAOA,EACZA,EAAKF,OAASA,EACd,GAAIqI,EAAU,CACVA,EAASpI,KAAOC,EAChB,GAAIF,EAAQ,CACR,MAAMwC,EAASxC,EAAOe,SACtByB,EAAOuF,OAAOvF,EAAO7E,YAAY0K,GAAW,EAAGnI,EAC3D,CACA,MACS,GAAIF,EAAQ,CACbA,EAAOe,SAAS1D,KAAK6C,EAC7B,CACA,CAQO,SAASoI,GAAatI,EAAQqC,GACjCwF,GAAcxF,GACdA,EAAMrC,OAASA,EACfqC,EAAMpC,KAAO,KACb,GAAID,EAAOe,SAASwG,QAAQlF,KAAW,EAAG,CACtC,MAAM8F,EAAUnI,EAAOe,SAAS,GAChCoH,EAAQlI,KAAOoC,EACfA,EAAMnC,KAAOiI,CACrB,KACS,CACD9F,EAAMnC,KAAO,IACrB,CACA,CAQO,SAASqI,GAAQlJ,EAAMY,GAC1B4H,GAAc5H,GACd,MAAMD,OAAEA,GAAWX,EACnB,GAAIW,EAAQ,CACR,MAAMwC,EAASxC,EAAOe,SACtByB,EAAOuF,OAAOvF,EAAOrT,QAAQkQ,GAAO,EAAGY,EAC/C,CACI,GAAIZ,EAAKY,KAAM,CACXZ,EAAKY,KAAKC,KAAOD,CACzB,CACIA,EAAKD,OAASA,EACdC,EAAKA,KAAOZ,EAAKY,KACjBA,EAAKC,KAAOb,EACZA,EAAKY,KAAOA,CAChB,CCzHO,SAASuI,GAAOC,EAAM/G,EAAMgH,EAAU,KAAMC,EAAQC,UACvD,OAAOC,GAAKJ,EAAM1B,MAAMC,QAAQtF,GAAQA,EAAO,CAACA,GAAOgH,EAASC,EACpE,CAWO,SAASE,GAAKJ,EAAMlD,EAAOmD,EAASC,GACvC,MAAMvf,EAAS,GAEf,MAAM0f,EAAY,CAACvD,GAEnB,MAAMwD,EAAa,CAAC,GACpB,OAAS,CAEL,GAAIA,EAAW,IAAMD,EAAU,GAAG5b,OAAQ,CAEtC,GAAI6b,EAAW7b,SAAW,EAAG,CACzB,OAAO9D,CACvB,CAEY0f,EAAUhK,QACViK,EAAWjK,QAEX,QACZ,CACQ,MAAMO,EAAOyJ,EAAU,GAAGC,EAAW,MACrC,GAAIN,EAAKpJ,GAAO,CACZjW,EAAOiU,KAAKgC,GACZ,KAAMsJ,GAAS,EACX,OAAOvf,CACvB,CACQ,GAAIsf,GAAWzG,GAAY5C,IAASA,EAAK0B,SAAS7T,OAAS,EAAG,CAK1D6b,EAAWxB,QAAQ,GACnBuB,EAAUvB,QAAQlI,EAAK0B,SACnC,CACA,CACA,CAUO,SAASiI,GAAaP,EAAMlD,GAC/B,OAAOA,EAAMsD,KAAKJ,EACtB,CAUO,SAASQ,GAAQR,EAAMlD,EAAOmD,EAAU,MAC3C,IAAIrJ,EAAO,KACX,IAAK,IAAIoD,EAAI,EAAGA,EAAI8C,EAAMrY,SAAWmS,EAAMoD,IAAK,CAC5C,MAAMf,EAAO6D,EAAM9C,GACnB,IAAKrD,EAAMsC,GAAO,CACd,QACZ,MACa,GAAI+G,EAAK/G,GAAO,CACjBrC,EAAOqC,CACnB,MACa,GAAIgH,GAAWhH,EAAKX,SAAS7T,OAAS,EAAG,CAC1CmS,EAAO4J,GAAQR,EAAM/G,EAAKX,SAAU,KAChD,CACA,CACI,OAAO1B,CACX,CASO,SAAS6J,GAAUT,EAAMlD,GAC5B,OAAOA,EAAM4D,MAAMC,GAAYhK,EAAMgK,KAChCX,EAAKW,IAAYF,GAAUT,EAAMW,EAAQrI,YAClD,CAWO,SAASsI,GAAQZ,EAAMlD,GAC1B,MAAMnc,EAAS,GACf,MAAM0f,EAAY,CAACvD,GACnB,MAAMwD,EAAa,CAAC,GACpB,OAAS,CACL,GAAIA,EAAW,IAAMD,EAAU,GAAG5b,OAAQ,CACtC,GAAI4b,EAAU5b,SAAW,EAAG,CACxB,OAAO9D,CACvB,CAEY0f,EAAUhK,QACViK,EAAWjK,QAEX,QACZ,CACQ,MAAMO,EAAOyJ,EAAU,GAAGC,EAAW,MACrC,IAAK3J,EAAMC,GACP,SACJ,GAAIoJ,EAAKpJ,GACLjW,EAAOiU,KAAKgC,GAChB,GAAIA,EAAK0B,SAAS7T,OAAS,EAAG,CAC1B6b,EAAWxB,QAAQ,GACnBuB,EAAUvB,QAAQlI,EAAK0B,SACnC,CACA,CACA,CC1IA,MAAMuI,GAAS,CACX,QAAAC,CAASzM,GACL,UAAWA,IAAS,WAAY,CAC5B,OAAQuC,GAASD,EAAMC,IAASvC,EAAKuC,EAAKvC,KACtD,MACa,GAAIA,IAAS,IAAK,CACnB,OAAOsC,CACnB,CACQ,OAAQC,GAASD,EAAMC,IAASA,EAAKvC,OAASA,CACtD,EACI,QAAA0M,CAASlK,GACL,UAAWA,IAAS,WAAY,CAC5B,OAAQD,GAASC,EAAKD,EAAKC,KACvC,CACQ,OAAQD,GAASA,EAAKC,OAASA,CACvC,EACI,YAAAmK,CAAa9M,GACT,UAAWA,IAAS,WAAY,CAC5B,OAAQ0C,GAASwC,EAAOxC,IAAS1C,EAAK0C,EAAK1C,KACvD,CACQ,OAAQ0C,GAASwC,EAAOxC,IAASA,EAAK1C,OAASA,CACvD,GAWA,SAAS+M,GAAeC,EAAQ7iB,GAC5B,UAAWA,IAAU,WAAY,CAC7B,OAAQuY,GAASD,EAAMC,IAASvY,EAAMuY,EAAKtD,QAAQ4N,GAC3D,CACI,OAAQtK,GAASD,EAAMC,IAASA,EAAKtD,QAAQ4N,KAAY7iB,CAC7D,CAUA,SAAS8iB,GAAaC,EAAGC,GACrB,OAAQzK,GAASwK,EAAExK,IAASyK,EAAEzK,EAClC,CASA,SAAS0K,GAAYzO,GACjB,MAAM0O,EAAQrjB,OAAO4a,KAAKjG,GAASrU,KAAKie,IACpC,MAAMpe,EAAQwU,EAAQ4J,GACtB,OAAOve,OAAO0C,UAAUC,eAAeC,KAAK+f,GAAQpE,GAC9CoE,GAAOpE,GAAKpe,GACZ4iB,GAAexE,EAAKpe,EAAM,IAEpC,OAAOkjB,EAAM9c,SAAW,EAAI,KAAO8c,EAAMC,OAAOL,GACpD,CASO,SAASM,GAAY5O,EAASoG,GACjC,MAAM+G,EAAOsB,GAAYzO,GACzB,OAAOmN,EAAOA,EAAK/G,GAAQ,IAC/B,CAWO,SAASyI,GAAY7O,EAASiK,EAAOmD,EAASC,EAAQC,UACzD,MAAMH,EAAOsB,GAAYzO,GACzB,OAAOmN,EAAOD,GAAOC,EAAMlD,EAAOmD,EAASC,GAAS,EACxD,CAUO,SAASyB,GAAeC,EAAI9E,EAAOmD,EAAU,MAChD,IAAK3B,MAAMC,QAAQzB,GACfA,EAAQ,CAACA,GACb,OAAO0D,GAAQS,GAAe,KAAMW,GAAK9E,EAAOmD,EACpD,CAWO,SAAS4B,GAAqBjJ,EAASkE,EAAOmD,EAAU,KAAMC,EAAQC,UACzE,OAAOJ,GAAOc,GAAO,YAAYjI,GAAUkE,EAAOmD,EAASC,EAC/D,CAWO,SAAS4B,GAAqBjL,EAAMiG,EAAOmD,EAAU,KAAMC,EAAQC,UACtE,OAAOJ,GAAOc,GAAO,YAAYhK,GAAOiG,EAAOmD,EAASC,EAC5D,CChIO,SAAS6B,GAAcjF,GAC1B,IAAIkF,EAAMlF,EAAMrY,OAKhB,QAASud,GAAO,EAAG,CACf,MAAM/I,EAAO6D,EAAMkF,GAMnB,GAAIA,EAAM,GAAKlF,EAAM5H,YAAY+D,EAAM+I,EAAM,IAAM,EAAG,CAClDlF,EAAMwC,OAAO0C,EAAK,GAClB,QACZ,CACQ,IAAK,IAAIC,EAAWhJ,EAAK1B,OAAQ0K,EAAUA,EAAWA,EAAS1K,OAAQ,CACnE,GAAIuF,EAAMoF,SAASD,GAAW,CAC1BnF,EAAMwC,OAAO0C,EAAK,GAClB,KAChB,CACA,CACA,CACI,OAAOlF,CACX,CAKO,IAAIqF,IACX,SAAWA,GACPA,EAAiBA,EAAiB,gBAAkB,GAAK,eACzDA,EAAiBA,EAAiB,aAAe,GAAK,YACtDA,EAAiBA,EAAiB,aAAe,GAAK,YACtDA,EAAiBA,EAAiB,YAAc,GAAK,WACrDA,EAAiBA,EAAiB,gBAAkB,IAAM,cAC7D,EAND,CAMGA,KAAqBA,GAAmB,KA2BpC,SAASC,GAAwBC,EAAOC,GAC3C,MAAMC,EAAW,GACjB,MAAMC,EAAW,GACjB,GAAIH,IAAUC,EAAO,CACjB,OAAO,CACf,CACI,IAAIzc,EAAU2T,GAAY6I,GAASA,EAAQA,EAAM9K,OACjD,MAAO1R,EAAS,CACZ0c,EAASzD,QAAQjZ,GACjBA,EAAUA,EAAQ0R,MAC1B,CACI1R,EAAU2T,GAAY8I,GAASA,EAAQA,EAAM/K,OAC7C,MAAO1R,EAAS,CACZ2c,EAAS1D,QAAQjZ,GACjBA,EAAUA,EAAQ0R,MAC1B,CACI,MAAMkL,EAASzd,KAAK0d,IAAIH,EAAS9d,OAAQ+d,EAAS/d,QAClD,IAAIud,EAAM,EACV,MAAOA,EAAMS,GAAUF,EAASP,KAASQ,EAASR,GAAM,CACpDA,GACR,CACI,GAAIA,IAAQ,EAAG,CACX,OAAOG,GAAiBQ,YAChC,CACI,MAAMC,EAAeL,EAASP,EAAM,GACpC,MAAMnD,EAAW+D,EAAatK,SAC9B,MAAMuK,EAAWN,EAASP,GAC1B,MAAMc,EAAWN,EAASR,GAC1B,GAAInD,EAASnY,QAAQmc,GAAYhE,EAASnY,QAAQoc,GAAW,CACzD,GAAIF,IAAiBN,EAAO,CACxB,OAAOH,GAAiBY,UAAYZ,GAAiBa,YACjE,CACQ,OAAOb,GAAiBY,SAChC,CACI,GAAIH,IAAiBP,EAAO,CACxB,OAAOF,GAAiBc,UAAYd,GAAiBe,QAC7D,CACI,OAAOf,GAAiBc,SAC5B,CAUO,SAASE,GAAWrG,GACvBA,EAAQA,EAAMiD,QAAO,CAAC9G,EAAMe,EAAGoJ,KAASA,EAAIlB,SAASjJ,EAAMe,EAAI,KAC/D8C,EAAMuG,MAAK,CAACjC,EAAGC,KACX,MAAMiC,EAAWlB,GAAwBhB,EAAGC,GAC5C,GAAIiC,EAAWnB,GAAiBc,UAAW,CACvC,OAAQ,CACpB,MACa,GAAIK,EAAWnB,GAAiBY,UAAW,CAC5C,OAAO,CACnB,CACQ,OAAO,CAAC,IAEZ,OAAOjG,CACX,CC7HO,SAASyG,GAAQC,GACpB,MAAMC,EAAWC,GAAcC,GAAaH,GAC5C,OAAQC,EACF,KACAA,EAASpP,OAAS,OACduP,GAAYH,GACZI,GAAWJ,EACzB,CAOA,SAASG,GAAYH,GACjB,IAAI7kB,EACJ,MAAMmb,EAAS0J,EAASnL,SACxB,MAAMwL,EAAO,CACTjN,KAAM,OACNkN,MAAOlC,GAAqB,QAAS9H,GAAQvb,KAAKwlB,IAC9C,IAAIplB,EACJ,MAAM0Z,SAAEA,GAAa0L,EACrB,MAAMC,EAAQ,CAAEC,MAAOC,GAAiB7L,IACxC8L,GAAiBH,EAAO,KAAM,KAAM3L,GACpC8L,GAAiBH,EAAO,QAAS,QAAS3L,GAC1C,MAAM+L,GAAQzlB,EAAK8kB,GAAc,OAAQpL,MAAe,MAAQ1Z,SAAY,OAAS,EAAIA,EAAG0U,QAAQ,QACpG,GAAI+Q,EAAM,CACNJ,EAAMK,KAAOD,CAC7B,CACY,MAAME,EAAcC,GAAM,UAAWlM,IAAakM,GAAM,UAAWlM,GACnE,GAAIiM,EAAa,CACbN,EAAMM,YAAcA,CACpC,CACY,MAAME,EAAUD,GAAM,UAAWlM,GACjC,GAAImM,EAAS,CACTR,EAAMQ,QAAU,IAAIC,KAAKD,EACzC,CACY,OAAOR,CAAK,KAGpBG,GAAiBN,EAAM,KAAM,KAAM/J,GACnCqK,GAAiBN,EAAM,QAAS,QAAS/J,GACzC,MAAMsK,GAAQzlB,EAAK8kB,GAAc,OAAQ3J,MAAa,MAAQnb,SAAY,OAAS,EAAIA,EAAG0U,QAAQ,QAClG,GAAI+Q,EAAM,CACNP,EAAKQ,KAAOD,CACpB,CACID,GAAiBN,EAAM,cAAe,WAAY/J,GAClD,MAAM4K,EAAUH,GAAM,UAAWzK,GACjC,GAAI4K,EAAS,CACTb,EAAKa,QAAU,IAAID,KAAKC,EAChC,CACIP,GAAiBN,EAAM,SAAU,QAAS/J,EAAQ,MAClD,OAAO+J,CACX,CAOA,SAASD,GAAWJ,GAChB,IAAI7kB,EAAIwH,EACR,MAAM2T,GAAU3T,GAAMxH,EAAK8kB,GAAc,UAAWD,EAASnL,aAAe,MAAQ1Z,SAAY,OAAS,EAAIA,EAAG0Z,YAAc,MAAQlS,SAAY,EAAIA,EAAK,GAC3J,MAAM0d,EAAO,CACTjN,KAAM4M,EAASpP,KAAKlP,OAAO,EAAG,GAC9Byc,GAAI,GACJmC,MAAOlC,GAAqB,OAAQ4B,EAASnL,UAAU9Z,KAAKwlB,IACxD,MAAM1L,SAAEA,GAAa0L,EACrB,MAAMC,EAAQ,CAAEC,MAAOC,GAAiB7L,IACxC8L,GAAiBH,EAAO,KAAM,OAAQ3L,GACtC8L,GAAiBH,EAAO,QAAS,QAAS3L,GAC1C8L,GAAiBH,EAAO,OAAQ,OAAQ3L,GACxC8L,GAAiBH,EAAO,cAAe,cAAe3L,GACtD,MAAMmM,EAAUD,GAAM,UAAWlM,IAAakM,GAAM,UAAWlM,GAC/D,GAAImM,EACAR,EAAMQ,QAAU,IAAIC,KAAKD,GAC7B,OAAOR,CAAK,KAGpBG,GAAiBN,EAAM,QAAS,QAAS/J,GACzCqK,GAAiBN,EAAM,OAAQ,OAAQ/J,GACvCqK,GAAiBN,EAAM,cAAe,cAAe/J,GACrD,MAAM4K,EAAUH,GAAM,gBAAiBzK,GACvC,GAAI4K,EAAS,CACTb,EAAKa,QAAU,IAAID,KAAKC,EAChC,CACIP,GAAiBN,EAAM,SAAU,iBAAkB/J,EAAQ,MAC3D,OAAO+J,CACX,CACA,MAAMc,GAAoB,CAAC,MAAO,OAAQ,QAC1C,MAAMC,GAAiB,CACnB,WACA,UACA,YACA,eACA,WACA,WACA,SACA,SAQJ,SAASV,GAAiBW,GACtB,OAAOjD,GAAqB,gBAAiBiD,GAAOtmB,KAAKoY,IACrD,MAAMtD,QAAEA,GAAYsD,EACpB,MAAMsN,EAAQ,CACVa,OAAQzR,EAAQ,UAChB0R,YAAa1R,EAAQ,cAEzB,IAAK,MAAM4N,KAAU0D,GAAmB,CACpC,GAAItR,EAAQ4N,GAAS,CACjBgD,EAAMhD,GAAU5N,EAAQ4N,EACxC,CACA,CACQ,IAAK,MAAMA,KAAU2D,GAAgB,CACjC,GAAIvR,EAAQ4N,GAAS,CACjBgD,EAAMhD,GAAUhc,SAASoO,EAAQ4N,GAAS,GAC1D,CACA,CACQ,GAAI5N,EAAQ,cAAe,CACvB4Q,EAAMe,WAAa3R,EAAQ,aACvC,CACQ,OAAO4Q,CAAK,GAEpB,CAQA,SAASR,GAAc9K,EAASK,GAC5B,OAAO4I,GAAqBjJ,EAASK,EAAM,KAAM,GAAG,EACxD,CASA,SAASuL,GAAM5L,EAASkM,EAAO7E,EAAU,OACrC,OAAOzB,GAAYqD,GAAqBjJ,EAASkM,EAAO7E,EAAS,IAAIiF,MACzE,CAUA,SAASd,GAAiBe,EAAKC,EAAMxM,EAASkM,EAAO7E,EAAU,OAC3D,MAAMjE,EAAMwI,GAAM5L,EAASkM,EAAO7E,GAClC,GAAIjE,EACAmJ,EAAIC,GAAQpJ,CACpB,CAOA,SAAS2H,GAAYtlB,GACjB,OAAOA,IAAU,OAASA,IAAU,QAAUA,IAAU,SAC5D,C,0pBCxKO,SAASgnB,GAAcnR,EAAMrB,GAChC,MAAMyS,EAAU,IAAIlL,GAAWpa,UAAW6S,GAC1C,IAAID,EAAO0S,EAASzS,GAAShO,IAAIqP,GACjC,OAAOoR,EAAQ9K,IACnB,CAWO,SAAS+K,GAASrR,EAAMrB,GAC3B,OAAOwS,GAAcnR,EAAMrB,GAASyF,QACxC,CAQO,SAASkN,GAAgBnL,EAAUxH,EAAS4S,GAC/C,MAAMH,EAAU,IAAIlL,GAAWC,EAAUxH,EAAS4S,GAClD,OAAO,IAAI7S,EAAO0S,EAASzS,EAC/B,CASA,MAAM6S,GAA0B,CAAEjc,QAAS,MAOpC,SAASkc,GAAU7B,EAAMjR,EAAU6S,IACtC,OAAOnC,GAAQgC,GAASzB,EAAMjR,GAClC,C,mNCzDA+S,GAAiBC,IAChB,UAAWA,IAAW,SAAU,CAC/B,MAAM,IAAIC,UAAU,oBACtB,CAIC,OAAOD,EACLzJ,QAAQ,sBAAuB,QAC/BA,QAAQ,KAAM,QAAQ;;;;;;GCJzB,SAAS2J,GAASnmB,GAChB,OAAO1B,OAAO0C,UAAU6a,SAAS3a,KAAKlB,KAAO,iBAC/C,CAEA,SAASomB,GAAcpmB,GACrB,IAAIqmB,EAAKC,EAET,GAAIH,GAASnmB,KAAO,MAAO,OAAO,MAGlCqmB,EAAOrmB,EAAE4J,YACT,GAAIyc,IAASjmB,UAAW,OAAO,KAG/BkmB,EAAOD,EAAKrlB,UACZ,GAAImlB,GAASG,KAAU,MAAO,OAAO,MAGrC,GAAIA,EAAKrlB,eAAe,mBAAqB,MAAO,CAClD,OAAO,KACX,CAGE,OAAO,IACT,C,yEC7BA,IAAIslB,GAAoB,SAASA,EAAkB9nB,GAClD,OAAO+nB,GAAgB/nB,KAClB4L,GAAU5L,EAChB,EAEA,SAAS+nB,GAAgB/nB,GACxB,QAASA,UAAgBA,IAAU,QACpC,CAEA,SAAS4L,GAAU5L,GAClB,IAAIgoB,EAAcnoB,OAAO0C,UAAU6a,SAAS3a,KAAKzC,GAEjD,OAAOgoB,IAAgB,mBACnBA,IAAgB,iBAChBC,GAAejoB,EACpB,CAGA,IAAIkoB,UAAsBC,SAAW,YAAcA,OAAOC,IAC1D,IAAIC,GAAqBH,GAAeC,OAAOC,IAAI,iBAAmB,MAEtE,SAASH,GAAejoB,GACvB,OAAOA,EAAMsoB,WAAaD,EAC3B,CAEA,SAASE,GAAY5K,GACpB,OAAOsC,MAAMC,QAAQvC,GAAO,GAAK,EAClC,CAEA,SAAS6K,GAA8BxoB,EAAOwU,GAC7C,OAAQA,EAAQ6G,QAAU,OAAS7G,EAAQsT,kBAAkB9nB,GAC1DyoB,GAAUF,GAAYvoB,GAAQA,EAAOwU,GACrCxU,CACJ,CAEA,SAAS0oB,GAAkBC,EAAQC,EAAQpU,GAC1C,OAAOmU,EAAOE,OAAOD,GAAQzoB,KAAI,SAASkW,GACzC,OAAOmS,GAA8BnS,EAAS7B,EAChD,GACA,CAEA,SAASsU,GAAiB1K,EAAK5J,GAC9B,IAAKA,EAAQuU,YAAa,CACzB,OAAON,EACT,CACC,IAAIM,EAAcvU,EAAQuU,YAAY3K,GACtC,cAAc2K,IAAgB,WAAaA,EAAcN,EAC1D,CAEA,SAASO,GAAgCL,GACxC,OAAO9oB,OAAOopB,sBACXppB,OAAOopB,sBAAsBN,GAAQjH,QAAO,SAASwH,GACtD,OAAOrpB,OAAOspB,qBAAqB1mB,KAAKkmB,EAAQO,EACnD,IACI,EACJ,CAEA,SAASE,GAAQT,GAChB,OAAO9oB,OAAO4a,KAAKkO,GAAQE,OAAOG,GAAgCL,GACnE,CAEA,SAASU,GAAmBC,EAAQC,GACnC,IACC,OAAOA,KAAYD,CACrB,CAAG,MAAME,GACP,OAAO,KACT,CACA,CAGA,SAASC,GAAiBd,EAAQvK,GACjC,OAAOiL,GAAmBV,EAAQvK,MAC5Bve,OAAO2C,eAAeC,KAAKkmB,EAAQvK,IACpCve,OAAOspB,qBAAqB1mB,KAAKkmB,EAAQvK,GAC/C,CAEA,SAASsL,GAAYf,EAAQC,EAAQpU,GACpC,IAAImV,EAAc,GAClB,GAAInV,EAAQsT,kBAAkBa,GAAS,CACtCS,GAAQT,GAAQrN,SAAQ,SAAS8C,GAChCuL,EAAYvL,GAAOoK,GAA8BG,EAAOvK,GAAM5J,EACjE,GACA,CACC4U,GAAQR,GAAQtN,SAAQ,SAAS8C,GAChC,GAAIqL,GAAiBd,EAAQvK,GAAM,CAClC,MACH,CAEE,GAAIiL,GAAmBV,EAAQvK,IAAQ5J,EAAQsT,kBAAkBc,EAAOxK,IAAO,CAC9EuL,EAAYvL,GAAO0K,GAAiB1K,EAAK5J,EAAtBsU,CAA+BH,EAAOvK,GAAMwK,EAAOxK,GAAM5J,EAC/E,KAAS,CACNmV,EAAYvL,GAAOoK,GAA8BI,EAAOxK,GAAM5J,EACjE,CACA,IACC,OAAOmV,CACR,CAEA,SAASlB,GAAUE,EAAQC,EAAQpU,GAClCA,EAAUA,GAAW,GACrBA,EAAQoV,WAAapV,EAAQoV,YAAclB,GAC3ClU,EAAQsT,kBAAoBtT,EAAQsT,mBAAqBA,GAGzDtT,EAAQgU,8BAAgCA,GAExC,IAAIqB,EAAgB5J,MAAMC,QAAQ0I,GAClC,IAAIkB,EAAgB7J,MAAMC,QAAQyI,GAClC,IAAIoB,EAA4BF,IAAkBC,EAElD,IAAKC,EAA2B,CAC/B,OAAOvB,GAA8BI,EAAQpU,EAC/C,MAAQ,GAAIqV,EAAe,CACzB,OAAOrV,EAAQoV,WAAWjB,EAAQC,EAAQpU,EAC5C,KAAQ,CACN,OAAOkV,GAAYf,EAAQC,EAAQpU,EACrC,CACA,CAEAiU,GAAUuB,IAAM,SAASC,EAAaC,EAAO1V,GAC5C,IAAKyL,MAAMC,QAAQgK,GAAQ,CAC1B,MAAM,IAAIhS,MAAM,oCAClB,CAEC,OAAOgS,EAAM/G,QAAO,SAAShK,EAAMC,GAClC,OAAOqP,GAAUtP,EAAMC,EAAM5E,EAC/B,GAAI,GACJ,EAEA,IAAI2V,GAAc1B,G,IAElB2B,GAAiBD,G,kCCpHhB,SAAUhO,EAAMkO,GAIT,GAAkCC,EAAO9pB,QAAS,CAIxD8pB,EAAA9pB,QAAiB6pB,GACnB,KAAQ,CAENlO,EAAKoO,YAAcF,GACrB,CACA,EAbA,CAaEhpB,GAAM,WAGP,OAAO,SAAUmpB,GAOhB,SAASC,EAAQrqB,GAChB,OAAQA,IAAM,KACdA,IAAM,MACNA,IAAM,MACNA,IAAM,MACNA,IAAM,IACT,CAEE,SAASsqB,EAAkBC,GAC1B,IAAIC,EACH3N,EAAQ0N,EAAMzN,KAAKsN,EAAMrN,UAAUvG,IACpC,GAAIqG,EAAO,CACV2N,EAAQ3N,EAAO,GACfrG,GAAOgU,EAAMxkB,OACb,OAAOwkB,CACX,CACA,CAEE,IAAIC,EAAcL,EAAMpkB,OAGvB0kB,EAAqB,oBACrBC,EAA6B,qBAC7BC,EAAwB,qBACxBC,EAAsB,QACtBC,EAA0B,QAO1BC,EAAqB,oDAErBC,EACAC,EACAC,EACAtmB,EACA5E,EAIAwW,EAAM,EAGN2U,EAAa,GAKd,MAAO,KAAM,CACZb,EAAkBK,GAGlB,GAAInU,GAAOiU,EAAa,CACvB,OAAOU,CACX,CAIGH,EAAMV,EAAkBM,GAGxBK,EAAc,GAKd,GAAID,EAAI9iB,OAAO,KAAO,IAAK,CAC1B8iB,EAAMA,EAAIrN,QAAQkN,EAAqB,IAEvCO,GAGJ,KAAU,CACNC,GACJ,CAGA,CAME,SAASA,IAGRf,EAAkBI,GAGlBQ,EAAoB,GAGpBtmB,EAAQ,gBAER,MAAO,KAAM,CAGZ5E,EAAIoqB,EAAMkB,OAAO9U,GAOjB,GAAI5R,IAAU,gBAAiB,CAO9B,GAAIylB,EAAQrqB,GAAI,CACf,GAAIkrB,EAAmB,CACtBD,EAAY9U,KAAK+U,GACjBA,EAAoB,GACpBtmB,EAAQ,kBACf,CAMA,MAAY,GAAI5E,IAAM,IAAK,CACrBwW,GAAO,EACP,GAAI0U,EAAmB,CACtBD,EAAY9U,KAAK+U,EACxB,CACME,IACA,MAIN,MAAY,GAAIprB,IAAM,IAAU,CAC1BkrB,EAAoBA,EAAoBlrB,EACxC4E,EAAQ,WAKd,MAAY,GAAI5E,IAAM,GAAI,CACpB,GAAIkrB,EAAmB,CACtBD,EAAY9U,KAAK+U,EACxB,CACME,IACA,MAIN,KAAY,CACNF,EAAoBA,EAAoBlrB,CAC9C,CAIA,MAAW,GAAI4E,IAAU,YAAa,CAIjC,GAAI5E,IAAM,IAAK,CACdkrB,EAAoBA,EAAoBlrB,EACxC4E,EAAQ,eAKd,MAAY,GAAI5E,IAAM,GAAI,CACpBirB,EAAY9U,KAAK+U,GACjBE,IACA,MAIN,KAAY,CACNF,EAAoBA,EAAoBlrB,CAC9C,CAGA,MAAW,GAAI4E,IAAU,mBAAoB,CAIxC,GAAIylB,EAAQrqB,SAGL,GAAIA,IAAM,GAAI,CACpBorB,IACA,MAIN,KAAY,CACNxmB,EAAQ,gBACR4R,GAAO,CAEb,CACA,CAGIA,GAAO,CAGX,CACA,CAOE,SAAS4U,IAGR,IAAIG,EAAS,MAKZC,EAAGC,EAAGC,EAAGnQ,EACToQ,EAAY,GACZnqB,EAAMoqB,EAAUhsB,EAAOisB,EAAQC,EAIhC,IAAKvQ,EAAI,EAAIA,EAAI0P,EAAYjlB,OAAQuV,IAAK,CACzC/Z,EAAOypB,EAAa1P,GAEpBqQ,EAAWpqB,EAAMA,EAAKwE,OAAS,GAC/BpG,EAAQ4B,EAAKub,UAAU,EAAGvb,EAAKwE,OAAS,GACxC6lB,EAASplB,SAAS7G,EAAO,IACzBksB,EAAWC,WAAWnsB,GAItB,GAAIkrB,EAAwBvJ,KAAK3hB,IAAWgsB,IAAa,IAAM,CAG9D,GAAIJ,GAAKC,EAAG,CAACF,EAAS,IAAK,CAK3B,GAAIM,IAAW,EAAG,CAACN,EAAS,IAAK,KAAO,CAACC,EAAIK,CAAO,CAIzD,MAAW,GAAId,EAAmBxJ,KAAK3hB,IAAWgsB,IAAa,IAAM,CAIhE,GAAIJ,GAAKC,GAAKC,EAAG,CAACH,EAAS,IAAK,CAKhC,GAAIO,EAAW,EAAG,CAACP,EAAS,IAAK,KAAO,CAACE,EAAIK,CAAS,CAI3D,MAAW,GAAIhB,EAAwBvJ,KAAK3hB,IAAWgsB,IAAa,IAAM,CAGrE,GAAIF,GAAKD,EAAG,CAACF,EAAS,IAAK,CAK3B,GAAIM,IAAW,EAAG,CAACN,EAAS,IAAK,KAAO,CAACG,EAAIG,CAAO,CAGzD,KAAW,CAACN,EAAS,IAAK,CAC1B,CAKG,IAAKA,EAAQ,CACZI,EAAUX,IAAMA,EAChB,GAAIQ,EAAG,CAAEG,EAAUH,EAAIA,CAAE,CACzB,GAAIC,EAAG,CAAEE,EAAUF,EAAIA,CAAE,CACzB,GAAIC,EAAG,CAAEC,EAAUD,EAAIA,CAAE,CACzBP,EAAWhV,KAAKwV,EACpB,MAAU,GAAIK,SAAWA,QAAQC,IAAK,CAClCD,QAAQC,IAAI,uCACX7B,EAAQ,SAAW5oB,EAAO,KAC/B,CACA,CAEA,CACA,G,WCxUA0qB,GAAiBC,EAAOD,Q,oBCDxB,IAAIE,GAAE3rB,OACN,IAAIS,GAAO,WAAY,MAAO,CAACmrB,iBAAiB,MAAMpgB,MAAMmgB,GAAEE,KAAKF,GAAEG,IAAIH,GAAEI,OAAOJ,GAAEK,UAAUL,GAAEM,QAAQN,GAAEO,OAAOP,GAAEQ,cAAcR,GAAES,MAAMT,GAAEU,IAAIV,GAAEW,MAAMX,GAAEY,OAAOZ,GAAEa,KAAKb,GAAEc,QAAQd,GAAEe,KAAKf,GAAEgB,MAAMhB,GAAEiB,KAAKjB,GAAEkB,QAAQlB,GAAEmB,MAAMnB,GAAEoB,QAAQpB,GAAEqB,SAASrB,GAAEsB,OAAOtB,GAAEuB,UAAUvB,GAAEwB,OAAOxB,GAAEyB,QAAQzB,GAAE,EACxR0B,WAAe5sB,K,wBACeA,G,+ECD9B,IAAI6sB,GAAO7qB,WAEX,IAAI8qB,GAAoB5qB,GAExB,MAAM6qB,WAAuBnW,MAC3B,WAAA/M,CAAYmjB,EAASC,EAAMC,EAAQ5F,EAAQ6F,EAAMC,GAC/C/U,MAAM2U,GACNjtB,KAAK2U,KAAO,iBACZ3U,KAAKstB,OAASL,EAEd,GAAIG,EAAM,CACRptB,KAAKotB,KAAOA,CAClB,CACI,GAAI7F,EAAQ,CACVvnB,KAAKunB,OAASA,CACpB,CACI,GAAI8F,EAAQ,CACVrtB,KAAKqtB,OAASA,CACpB,CACI,UAAWH,IAAS,oBAAsBC,IAAW,YAAa,CAChE,UAAWD,IAAS,SAAU,CAC5BltB,KAAKktB,KAAOA,EACZltB,KAAKmtB,OAASA,CACtB,KAAa,CACLntB,KAAKktB,KAAOA,EAAKA,KACjBltB,KAAKmtB,OAASD,EAAKC,OACnBntB,KAAKutB,QAAUJ,EAAOD,KACtBltB,KAAKwtB,UAAYL,EAAOA,MAChC,CACA,CAEIntB,KAAKytB,aAEL,GAAI5W,MAAM6W,kBAAmB,CAC3B7W,MAAM6W,kBAAkB1tB,KAAMgtB,GACpC,CACA,CAEE,UAAAS,GACEztB,KAAKitB,QAAUjtB,KAAKqtB,OAASrtB,KAAKqtB,OAAS,KAAO,GAClDrtB,KAAKitB,SAAWjtB,KAAKotB,KAAOptB,KAAKotB,KAAO,cACxC,UAAWptB,KAAKktB,OAAS,YAAa,CACpCltB,KAAKitB,SAAW,IAAMjtB,KAAKktB,KAAO,IAAMltB,KAAKmtB,MACnD,CACIntB,KAAKitB,SAAW,KAAOjtB,KAAKstB,MAChC,CAEE,cAAAK,CAAeC,GACb,IAAK5tB,KAAKunB,OAAQ,MAAO,GAEzB,IAAIsG,EAAM7tB,KAAKunB,OACf,GAAIqG,GAAS,KAAMA,EAAQd,GAAK1B,iBAChC,GAAI2B,GAAmB,CACrB,GAAIa,EAAOC,EAAMd,GAAkBc,EACzC,CAEI,IAAIC,EAAQD,EAAIhvB,MAAM,SACtB,IAAIqG,EAAQI,KAAKgB,IAAItG,KAAKktB,KAAO,EAAG,GACpC,IAAI/nB,EAAMG,KAAK0d,IAAIhjB,KAAKktB,KAAO,EAAGY,EAAM/oB,QAExC,IAAIgpB,EAAWvuB,OAAO2F,GAAKJ,OAE3B,IAAIipB,EAAMC,EACV,GAAIL,EAAO,CACT,IAAIvC,KAAEA,EAAIe,KAAEA,EAAIP,IAAEA,GAAQiB,GAAKoB,aAAa,MAC5CF,EAAO3S,GAAQgQ,EAAKQ,EAAIxQ,IACxB4S,EAAQ5S,GAAQ+Q,EAAK/Q,EAC3B,KAAW,CACL2S,EAAOC,EAAQ7pB,GAAOA,CAC5B,CAEI,OAAO0pB,EACJ7mB,MAAM/B,EAAOC,GACbrG,KAAI,CAACouB,EAAM7iB,KACV,IAAI8jB,EAASjpB,EAAQ,EAAImF,EACzB,IAAI+jB,EAAS,KAAO,IAAMD,GAAQlnB,OAAO8mB,GAAY,MACrD,GAAII,IAAWnuB,KAAKktB,KAAM,CACxB,IAAImB,EACFJ,EAAMG,EAAO1R,QAAQ,MAAO,MAC5BwQ,EAAKjmB,MAAM,EAAGjH,KAAKmtB,OAAS,GAAGzQ,QAAQ,SAAU,KACnD,OAAOsR,EAAK,KAAOC,EAAMG,GAAUlB,EAAO,MAAQmB,EAAUL,EAAK,IAC3E,CACQ,MAAO,IAAMC,EAAMG,GAAUlB,KAE9BjQ,KAAK,KACZ,CAEE,QAAAlB,GACE,IAAIrZ,EAAO1C,KAAK2tB,iBAChB,GAAIjrB,EAAM,CACRA,EAAO,OAASA,EAAO,IAC7B,CACI,OAAO1C,KAAK2U,KAAO,KAAO3U,KAAKitB,QAAUvqB,CAC7C,E,IAGA4rB,GAAiBtB,GACjBA,GAAeltB,QAAUktB,G,qBCjGAlG,OAAO,W,MAEZA,OAAO,MCF3B,MAAMyH,GAAc,CAClBC,MAAO,KACPC,YAAa,KACbC,cAAe,KACfC,WAAY,KACZC,WAAY,IACZC,WAAY,KACZC,MAAO,KACPC,YAAa,IACbC,aAAc,IACdC,UAAW,GACXC,OAAQ,OACRC,UAAW,OAGb,SAASC,GAAWhrB,GAClB,OAAOA,EAAI,GAAGirB,cAAgBjrB,EAAI6C,MAAM,EAC1C,CAEA,MAAMqoB,GACJ,WAAAxlB,CAAYylB,GACVvvB,KAAKuvB,QAAUA,CACnB,CAEE,MAAAC,CAAOjW,EAAM4V,GACX,IAAIxa,EAAO,IAAM4E,EAAK5E,KACtB,IAAI8a,EAASlW,EAAKkW,OAASzvB,KAAK0vB,SAASnW,EAAM,UAAY,GAE3D,UAAWA,EAAKoW,KAAKC,YAAc,YAAa,CAC9Cjb,GAAQ4E,EAAKoW,KAAKC,SACxB,MAAW,GAAIH,EAAQ,CACjB9a,GAAQ,GACd,CAEI,GAAI4E,EAAK6D,MAAO,CACdpd,KAAK6vB,MAAMtW,EAAM5E,EAAO8a,EAC9B,KAAW,CACL,IAAItqB,GAAOoU,EAAKoW,KAAKG,SAAW,KAAOX,EAAY,IAAM,IACzDnvB,KAAKuvB,QAAQ5a,EAAO8a,EAAStqB,EAAKoU,EACxC,CACA,CAEE,WAAAwW,CAAYxW,EAAMyW,GAChB,IAAIrxB,EACJ,GAAI4a,EAAKpC,OAAS,OAAQ,CACxBxY,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,aACnC,MAAW,GAAIA,EAAKpC,OAAS,UAAW,CAClCxY,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,gBACnC,MAAW,GAAIyW,IAAW,SAAU,CAC9BrxB,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,aACnC,KAAW,CACL5a,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,cACnC,CAEI,IAAI2W,EAAM3W,EAAK1B,OACf,IAAIsY,EAAQ,EACZ,MAAOD,GAAOA,EAAI/Y,OAAS,OAAQ,CACjCgZ,GAAS,EACTD,EAAMA,EAAIrY,MAChB,CAEI,GAAIlZ,EAAM6jB,SAAS,MAAO,CACxB,IAAI0M,EAASlvB,KAAKiwB,IAAI1W,EAAM,KAAM,UAClC,GAAI2V,EAAOnqB,OAAQ,CACjB,IAAK,IAAIqrB,EAAO,EAAGA,EAAOD,EAAOC,IAAQzxB,GAASuwB,CAC1D,CACA,CAEI,OAAOvwB,CACX,CAEE,KAAAkxB,CAAMtW,EAAMrU,GACV,IAAI4qB,EAAU9vB,KAAKiwB,IAAI1W,EAAM,UAAW,cACxCvZ,KAAKuvB,QAAQrqB,EAAQ4qB,EAAU,IAAKvW,EAAM,SAE1C,IAAIiV,EACJ,GAAIjV,EAAK6D,OAAS7D,EAAK6D,MAAMrY,OAAQ,CACnC/E,KAAKqwB,KAAK9W,GACViV,EAAQxuB,KAAKiwB,IAAI1W,EAAM,QAC7B,KAAW,CACLiV,EAAQxuB,KAAKiwB,IAAI1W,EAAM,QAAS,YACtC,CAEI,GAAIiV,EAAOxuB,KAAKuvB,QAAQf,GACxBxuB,KAAKuvB,QAAQ,IAAKhW,EAAM,MAC5B,CAEE,IAAA8W,CAAK9W,GACH,IAAI+W,EAAO/W,EAAK6D,MAAMrY,OAAS,EAC/B,MAAOurB,EAAO,EAAG,CACf,GAAI/W,EAAK6D,MAAMkT,GAAMnZ,OAAS,UAAW,MACzCmZ,GAAQ,CACd,CAEI,IAAInB,EAAYnvB,KAAKiwB,IAAI1W,EAAM,aAC/B,IAAK,IAAIe,EAAI,EAAGA,EAAIf,EAAK6D,MAAMrY,OAAQuV,IAAK,CAC1C,IAAIJ,EAAQX,EAAK6D,MAAM9C,GACvB,IAAIiW,EAASvwB,KAAKiwB,IAAI/V,EAAO,UAC7B,GAAIqW,EAAQvwB,KAAKuvB,QAAQgB,GACzBvwB,KAAKwwB,UAAUtW,EAAOoW,IAAShW,GAAK6U,EAC1C,CACA,CAEE,OAAAsB,CAAQlX,GACN,IAAImX,EAAO1wB,KAAKiwB,IAAI1W,EAAM,OAAQ,eAClC,IAAIoX,EAAQ3wB,KAAKiwB,IAAI1W,EAAM,QAAS,gBACpCvZ,KAAKuvB,QAAQ,KAAOmB,EAAOnX,EAAK8B,KAAOsV,EAAQ,KAAMpX,EACzD,CAEE,IAAAqX,CAAKrX,EAAM4V,GACT,IAAIW,EAAU9vB,KAAKiwB,IAAI1W,EAAM,UAAW,SACxC,IAAI4M,EAAS5M,EAAKmM,KAAOoK,EAAU9vB,KAAK0vB,SAASnW,EAAM,SAEvD,GAAIA,EAAKsX,UAAW,CAClB1K,GAAU5M,EAAKoW,KAAKkB,WAAa,aACvC,CAEI,GAAI1B,EAAWhJ,GAAU,IACzBnmB,KAAKuvB,QAAQpJ,EAAQ5M,EACzB,CAEE,QAAAuX,CAASvX,GACPvZ,KAAKqwB,KAAK9W,EACd,CAEE,GAAA0W,CAAI1W,EAAMwX,EAAKf,GACb,IAAIrxB,EACJ,IAAKqxB,EAAQA,EAASe,EAGtB,GAAIA,EAAK,CACPpyB,EAAQ4a,EAAKoW,KAAKoB,GAClB,UAAWpyB,IAAU,YAAa,OAAOA,CAC/C,CAEI,IAAIkZ,EAAS0B,EAAK1B,OAElB,GAAImY,IAAW,SAAU,CAEvB,IAAKnY,GAAWA,EAAOV,OAAS,QAAUU,EAAOmZ,QAAUzX,EAAO,CAChE,MAAO,EACf,CAGM,GAAI1B,GAAUA,EAAOV,OAAS,WAAY,CACxC,MAAO,EACf,CACA,CAGI,IAAKU,EAAQ,OAAO0W,GAAYyB,GAGhC,IAAIlV,EAAOvB,EAAKuB,OAChB,IAAKA,EAAKmW,SAAUnW,EAAKmW,SAAW,GACpC,UAAWnW,EAAKmW,SAASjB,KAAY,YAAa,CAChD,OAAOlV,EAAKmW,SAASjB,EAC3B,CAEI,GAAIA,IAAW,UAAYA,IAAW,QAAS,CAC7C,OAAOhwB,KAAK+vB,YAAYxW,EAAMyW,EACpC,KAAW,CACL,IAAIkB,EAAS,MAAQ9B,GAAWY,GAChC,GAAIhwB,KAAKkxB,GAAS,CAChBvyB,EAAQqB,KAAKkxB,GAAQpW,EAAMvB,EACnC,KAAa,CACLuB,EAAKqW,MAAK7W,IACR3b,EAAQ2b,EAAEqV,KAAKoB,GACf,UAAWpyB,IAAU,YAAa,OAAO,QAEnD,CACA,CAEI,UAAWA,IAAU,YAAaA,EAAQ4vB,GAAYyB,GAEtDlV,EAAKmW,SAASjB,GAAUrxB,EACxB,OAAOA,CACX,CAEE,cAAAyyB,CAAetW,GACb,IAAInc,EACJmc,EAAKqW,MAAK7W,IACR,GAAIA,EAAE8C,OAAS9C,EAAE8C,MAAMrY,OAAS,EAAG,CACjC,UAAWuV,EAAEqV,KAAKnB,QAAU,YAAa,CACvC7vB,EAAQ2b,EAAEqV,KAAKnB,MACf,GAAI7vB,EAAM6jB,SAAS,MAAO,CACxB7jB,EAAQA,EAAM+d,QAAQ,UAAW,GAC7C,CACU,OAAO,KACjB,CACA,KAEI,GAAI/d,EAAOA,EAAQA,EAAM+d,QAAQ,MAAO,IACxC,OAAO/d,CACX,CAEE,gBAAA0yB,CAAiBvW,EAAMvB,GACrB,IAAI5a,EACJmc,EAAKwW,cAAahX,IAChB,UAAWA,EAAEqV,KAAKY,SAAW,YAAa,CACxC5xB,EAAQ2b,EAAEqV,KAAKY,OACf,GAAI5xB,EAAM6jB,SAAS,MAAO,CACxB7jB,EAAQA,EAAM+d,QAAQ,UAAW,GAC3C,CACQ,OAAO,KACf,KAEI,UAAW/d,IAAU,YAAa,CAChCA,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,aACnC,MAAW,GAAI5a,EAAO,CAChBA,EAAQA,EAAM+d,QAAQ,MAAO,GACnC,CACI,OAAO/d,CACX,CAEE,aAAA4yB,CAAczW,EAAMvB,GAClB,IAAI5a,EACJmc,EAAK0W,WAAUlX,IACb,UAAWA,EAAEqV,KAAKY,SAAW,YAAa,CACxC5xB,EAAQ2b,EAAEqV,KAAKY,OACf,GAAI5xB,EAAM6jB,SAAS,MAAO,CACxB7jB,EAAQA,EAAM+d,QAAQ,UAAW,GAC3C,CACQ,OAAO,KACf,KAEI,UAAW/d,IAAU,YAAa,CAChCA,EAAQqB,KAAKiwB,IAAI1W,EAAM,KAAM,aACnC,MAAW,GAAI5a,EAAO,CAChBA,EAAQA,EAAM+d,QAAQ,MAAO,GACnC,CACI,OAAO/d,CACX,CAEE,aAAA8yB,CAAc3W,GACZ,IAAInc,EACJmc,EAAKqW,MAAK7W,IACR,GAAIA,EAAEnD,OAAS,OAAQ,CACrBxY,EAAQ2b,EAAEqV,KAAKG,QACf,UAAWnxB,IAAU,YAAa,OAAO,KACjD,KAEI,OAAOA,CACX,CAEE,aAAA+yB,CAAc5W,GACZ,IAAInc,EACJmc,EAAKqW,MAAK7W,IACR,GAAIA,EAAE8C,QAAU9C,EAAEzC,SAAWiD,GAAQA,EAAKkW,QAAU1W,GAAI,CACtD,UAAWA,EAAEqV,KAAKY,SAAW,YAAa,CACxC5xB,EAAQ2b,EAAEqV,KAAKY,OACf,GAAI5xB,EAAM6jB,SAAS,MAAO,CACxB7jB,EAAQA,EAAM+d,QAAQ,UAAW,GAC7C,CACU,OAAO,KACjB,CACA,KAEI,GAAI/d,EAAOA,EAAQA,EAAM+d,QAAQ,MAAO,IACxC,OAAO/d,CACX,CAEE,QAAAgzB,CAAS7W,GACP,IAAInc,EACJmc,EAAK0W,WAAUlX,IACb,UAAWA,EAAEqV,KAAKG,UAAY,YAAa,CACzCnxB,EAAQ2b,EAAEqV,KAAKG,QAAQpT,QAAQ,UAAW,IAC1C,OAAO,KACf,KAEI,OAAO/d,CACX,CAEE,YAAAizB,CAAa9W,GACX,IAAInc,EACJmc,EAAKqW,MAAK7W,IACR,GAAIA,EAAE8C,OAAS9C,EAAE8C,MAAMrY,SAAW,EAAG,CACnCpG,EAAQ2b,EAAEqV,KAAKnB,MACf,UAAW7vB,IAAU,YAAa,OAAO,KACjD,KAEI,OAAOA,CACX,CAEE,SAAAkzB,CAAU/W,GACR,GAAIA,EAAK6U,KAAKT,OAAQ,OAAOpU,EAAK6U,KAAKT,OACvC,IAAIvwB,EACJmc,EAAKqW,MAAK7W,IACR,IAAIwX,EAAIxX,EAAEzC,OACV,GAAIia,GAAKA,IAAMhX,GAAQgX,EAAEja,QAAUia,EAAEja,SAAWiD,EAAM,CACpD,UAAWR,EAAEqV,KAAKY,SAAW,YAAa,CACxC,IAAIwB,EAAQzX,EAAEqV,KAAKY,OAAO1xB,MAAM,MAChCF,EAAQozB,EAAMA,EAAMhtB,OAAS,GAC7BpG,EAAQA,EAAM+d,QAAQ,MAAO,IAC7B,OAAO,KACjB,CACA,KAEI,OAAO/d,CACX,CAEE,YAAAqzB,CAAalX,GACX,IAAInc,EACJmc,EAAKqW,MAAK7W,IACR,GAAIA,EAAE8C,OAAS9C,EAAE8C,MAAMrY,QAAUuV,EAAEgW,KAAKnZ,OAAS,OAAQ,CACvDxY,EAAQ2b,EAAEqV,KAAKR,UACf,UAAWxwB,IAAU,YAAa,OAAO,KACjD,KAEI,OAAOA,CACX,CAEE,QAAA+wB,CAASnW,EAAMmM,GACb,IAAI/mB,EAAQ4a,EAAKmM,GACjB,IAAIuK,EAAM1W,EAAKoW,KAAKjK,GACpB,GAAIuK,GAAOA,EAAItxB,QAAUA,EAAO,CAC9B,OAAOsxB,EAAIA,GACjB,CAEI,OAAOtxB,CACX,CAEE,IAAAmc,CAAKvB,GACHvZ,KAAKqwB,KAAK9W,GACV,GAAIA,EAAKoW,KAAKnB,MAAOxuB,KAAKuvB,QAAQhW,EAAKoW,KAAKnB,MAChD,CAEE,IAAAyD,CAAK1Y,GACHvZ,KAAK6vB,MAAMtW,EAAMvZ,KAAK0vB,SAASnW,EAAM,aACrC,GAAIA,EAAKoW,KAAKuC,aAAc,CAC1BlyB,KAAKuvB,QAAQhW,EAAKoW,KAAKuC,aAAc3Y,EAAM,MACjD,CACA,CAEE,SAAAiX,CAAUjX,EAAM4V,GAEd,IAAKnvB,KAAKuZ,EAAKpC,MAAO,CACpB,MAAM,IAAIN,MACR,yBACE0C,EAAKpC,KACL,KACA,gDAEV,CAEInX,KAAKuZ,EAAKpC,MAAMoC,EAAM4V,EAC1B,E,IAGAgD,GAAiB7C,GACjBA,GAAYxvB,QAAUwvB,GC9VtB,IAAIA,GAAcrtB,GAElB,SAASuuB,GAAUjX,EAAMgW,GACvB,IAAInrB,EAAM,IAAIkrB,GAAYC,GAC1BnrB,EAAIosB,UAAUjX,EAChB,C,IAEA6Y,GAAiB5B,GACjBA,GAAU1wB,QAAU0wB,GCRpB,IAAI6B,QAAEA,GAAOC,GAAEA,IAAOrwB,GACtB,IAAI+qB,GAAiB7qB,GACrB,IAAImtB,GAAcjtB,GAClB,IAAImuB,GAAY+B,GAEhB,SAASpa,GAAUsN,EAAK5N,GACtB,IAAI2a,EAAS,IAAI/M,EAAI3b,YAErB,IAAK,IAAIwQ,KAAKmL,EAAK,CACjB,IAAKjnB,OAAO0C,UAAUC,eAAeC,KAAKqkB,EAAKnL,GAAI,CAEjD,QACN,CACI,GAAIA,IAAM,aAAc,SACxB,IAAI3b,EAAQ8mB,EAAInL,GAChB,IAAInD,SAAcxY,EAElB,GAAI2b,IAAM,UAAYnD,IAAS,SAAU,CACvC,GAAIU,EAAQ2a,EAAOlY,GAAKzC,CAC9B,MAAW,GAAIyC,IAAM,SAAU,CACzBkY,EAAOlY,GAAK3b,CAClB,MAAW,GAAIigB,MAAMC,QAAQlgB,GAAQ,CAC/B6zB,EAAOlY,GAAK3b,EAAMG,KAAI2zB,GAAKta,GAAUsa,EAAGD,IAC9C,KAAW,CACL,GAAIrb,IAAS,UAAYxY,IAAU,KAAMA,EAAQwZ,GAAUxZ,GAC3D6zB,EAAOlY,GAAK3b,CAClB,CACA,CAEE,OAAO6zB,CACT,CAEA,MAAM5a,GACJ,WAAA9N,CAAY4oB,EAAW,IACrB1yB,KAAK2vB,KAAO,GACZ3vB,KAAKqyB,IAAW,MAChBryB,KAAKsyB,IAAM,KAEX,IAAK,IAAI3d,KAAQ+d,EAAU,CACzB,GAAI/d,IAAS,QAAS,CACpB3U,KAAKod,MAAQ,GACb,IAAK,IAAI7D,KAAQmZ,EAAS/d,GAAO,CAC/B,UAAW4E,EAAKS,QAAU,WAAY,CACpCha,KAAKigB,OAAO1G,EAAKS,QAC7B,KAAiB,CACLha,KAAKigB,OAAO1G,EACxB,CACA,CACA,KAAa,CACLvZ,KAAK2U,GAAQ+d,EAAS/d,EAC9B,CACA,CACA,CAEE,UAAAge,CAAWxX,GACTA,EAAMyX,YAAc5yB,KACpB,GAAImb,EAAMtH,OAAS7T,KAAKunB,QAAU,aAAajH,KAAKnF,EAAMtH,OAAQ,CAChE,IAAIgf,EAAI7yB,KAAKunB,OACbpM,EAAMtH,MAAQsH,EAAMtH,MAAM6I,QACxB,aACA,KAAKmW,EAAE1J,MAAM2J,QAAQD,EAAE3tB,MAAMgoB,QAAQ2F,EAAE3tB,MAAMioB,WAErD,CACI,OAAOhS,CACX,CAEE,KAAAqT,CAAMuE,GACJ/yB,KAAK6X,OAAOmb,YAAYhzB,KAAM+yB,GAC9B,OAAO/yB,IACX,CAEE,MAAAizB,CAAOC,EAAY,IACjB,IAAK,IAAIve,KAAQue,EAAW,CAC1BlzB,KAAK2U,GAAQue,EAAUve,EAC7B,CACI,OAAO3U,IACX,CAEE,MAAAuwB,CAAOwC,GACL/yB,KAAK6X,OAAOsb,aAAanzB,KAAM+yB,GAC/B,OAAO/yB,IACX,CAEE,SAAAozB,CAAUC,UACDrzB,KAAK2vB,KAAKY,cACVvwB,KAAK2vB,KAAKnB,MACjB,IAAK6E,SAAoBrzB,KAAK2vB,KAAKG,OACvC,CAEE,KAAA9V,CAAMkZ,EAAY,IAChB,IAAIV,EAASra,GAAUnY,MACvB,IAAK,IAAI2U,KAAQue,EAAW,CAC1BV,EAAO7d,GAAQue,EAAUve,EAC/B,CACI,OAAO6d,CACX,CAEE,UAAAc,CAAWJ,EAAY,IACrB,IAAIV,EAASxyB,KAAKga,MAAMkZ,GACxBlzB,KAAK6X,OAAOmb,YAAYhzB,KAAMwyB,GAC9B,OAAOA,CACX,CAEE,WAAAe,CAAYL,EAAY,IACtB,IAAIV,EAASxyB,KAAKga,MAAMkZ,GACxBlzB,KAAK6X,OAAOsb,aAAanzB,KAAMwyB,GAC/B,OAAOA,CACX,CAEE,KAAArX,CAAM8R,EAASrQ,EAAO,IACpB,GAAI5c,KAAKunB,OAAQ,CACf,IAAIpiB,IAAEA,EAAGD,MAAEA,GAAUlF,KAAKwzB,QAAQ5W,GAClC,OAAO5c,KAAKunB,OAAO4B,MAAMhO,MACvB8R,EACA,CAAEE,OAAQjoB,EAAMioB,OAAQD,KAAMhoB,EAAMgoB,MACpC,CAAEC,OAAQhoB,EAAIgoB,OAAQD,KAAM/nB,EAAI+nB,MAChCtQ,EAER,CACI,OAAO,IAAIoQ,GAAeC,EAC9B,CAEE,iBAAAwG,GACE,MAAO,CACL,GAAA7zB,CAAI2Z,EAAMmM,GACR,GAAIA,IAAS,UAAW,CACtB,OAAOnM,CACjB,MAAe,GAAImM,IAAS,OAAQ,CAC1B,MAAO,IAAMnM,EAAKuB,OAAO4Y,SACnC,KAAe,CACL,OAAOna,EAAKmM,EACtB,CACA,EAEM,GAAAiO,CAAIpa,EAAMmM,EAAM/mB,GACd,GAAI4a,EAAKmM,KAAU/mB,EAAO,OAAO,KACjC4a,EAAKmM,GAAQ/mB,EACb,GACE+mB,IAAS,QACTA,IAAS,SACTA,IAAS,QACTA,IAAS,UACTA,IAAS,aAETA,IAAS,OACT,CACAnM,EAAKqa,WACf,CACQ,OAAO,IACf,EAEA,CAEE,SAAAA,GACE,GAAI5zB,KAAKqyB,IAAU,CACjBryB,KAAKqyB,IAAW,MAChB,IAAIta,EAAO/X,KACX,MAAQ+X,EAAOA,EAAKF,OAAS,CAC3BE,EAAKsa,IAAW,KACxB,CACA,CACA,CAEE,IAAAta,GACE,IAAK/X,KAAK6X,OAAQ,OAAOvX,UACzB,IAAI+J,EAAQrK,KAAK6X,OAAOxN,MAAMrK,MAC9B,OAAOA,KAAK6X,OAAOuF,MAAM/S,EAAQ,EACrC,CAEE,UAAAwpB,CAAWjX,EAAMkX,GACf,IAAIve,EAAMvV,KAAKunB,OAAOriB,MACtB,GAAI0X,EAAKvS,MAAO,CACdkL,EAAMvV,KAAK+zB,eAAenX,EAAKvS,MAAOypB,EAC5C,MAAW,GAAIlX,EAAKoX,KAAM,CACpBF,EAAuB9zB,KAAK+b,WAC5B,IAAI1R,EAAQypB,EAAqB9sB,QAAQ4V,EAAKoX,MAC9C,GAAI3pB,KAAW,EAAGkL,EAAMvV,KAAK+zB,eAAe1pB,EAAOypB,EACzD,CACI,OAAOve,CACX,CAEE,cAAAwe,CAAe1pB,EAAOypB,GACpB,IAAI3N,EAAS2N,GAAwB9zB,KAAK+b,WAC1C,IAAIoR,EAASntB,KAAKunB,OAAOriB,MAAMioB,OAC/B,IAAID,EAAOltB,KAAKunB,OAAOriB,MAAMgoB,KAE7B,IAAK,IAAI5S,EAAI,EAAGA,EAAIjQ,EAAOiQ,IAAK,CAC9B,GAAI6L,EAAO7L,KAAO,KAAM,CACtB6S,EAAS,EACTD,GAAQ,CAChB,KAAa,CACLC,GAAU,CAClB,CACA,CAEI,MAAO,CAAEA,SAAQD,OACrB,CAEE,IAAApV,GACE,IAAK9X,KAAK6X,OAAQ,OAAOvX,UACzB,IAAI+J,EAAQrK,KAAK6X,OAAOxN,MAAMrK,MAC9B,OAAOA,KAAK6X,OAAOuF,MAAM/S,EAAQ,EACrC,CAEE,OAAAmpB,CAAQ5W,GACN,IAAI1X,EAAQ,CACVioB,OAAQntB,KAAKunB,OAAOriB,MAAMioB,OAC1BD,KAAMltB,KAAKunB,OAAOriB,MAAMgoB,MAE1B,IAAI/nB,EAAMnF,KAAKunB,OAAOpiB,IAClB,CACAgoB,OAAQntB,KAAKunB,OAAOpiB,IAAIgoB,OAAS,EACjCD,KAAMltB,KAAKunB,OAAOpiB,IAAI+nB,MAEtB,CACAC,OAAQjoB,EAAMioB,OAAS,EACvBD,KAAMhoB,EAAMgoB,MAGhB,GAAItQ,EAAKoX,KAAM,CACb,IAAIF,EAAuB9zB,KAAK+b,WAChC,IAAI1R,EAAQypB,EAAqB9sB,QAAQ4V,EAAKoX,MAC9C,GAAI3pB,KAAW,EAAG,CAChBnF,EAAQlF,KAAK+zB,eAAe1pB,EAAOypB,GACnC3uB,EAAMnF,KAAK+zB,eAAe1pB,EAAQuS,EAAKoX,KAAKjvB,OAAQ+uB,EAC5D,CACA,KAAW,CACL,GAAIlX,EAAK1X,MAAO,CACdA,EAAQ,CACNioB,OAAQvQ,EAAK1X,MAAMioB,OACnBD,KAAMtQ,EAAK1X,MAAMgoB,KAE3B,MAAa,GAAItQ,EAAKvS,MAAO,CACrBnF,EAAQlF,KAAK+zB,eAAenX,EAAKvS,MACzC,CAEM,GAAIuS,EAAKzX,IAAK,CACZA,EAAM,CACJgoB,OAAQvQ,EAAKzX,IAAIgoB,OACjBD,KAAMtQ,EAAKzX,IAAI+nB,KAEzB,MAAa,GAAItQ,EAAKzK,SAAU,CACxBhN,EAAMnF,KAAK+zB,eAAenX,EAAKzK,SACvC,MAAa,GAAIyK,EAAKvS,MAAO,CACrBlF,EAAMnF,KAAK+zB,eAAenX,EAAKvS,MAAQ,EAC/C,CACA,CAEI,GACElF,EAAI+nB,KAAOhoB,EAAMgoB,MAChB/nB,EAAI+nB,OAAShoB,EAAMgoB,MAAQ/nB,EAAIgoB,QAAUjoB,EAAMioB,OAChD,CACAhoB,EAAM,CAAEgoB,OAAQjoB,EAAMioB,OAAS,EAAGD,KAAMhoB,EAAMgoB,KACpD,CAEI,MAAO,CAAE/nB,MAAKD,QAClB,CAEE,GAAA+qB,CAAIvK,EAAMuO,GACR,IAAI7vB,EAAM,IAAIkrB,GACd,OAAOlrB,EAAI6rB,IAAIjwB,KAAM0lB,EAAMuO,EAC/B,CAEE,MAAAC,GACE,GAAIl0B,KAAK6X,OAAQ,CACf7X,KAAK6X,OAAOsc,YAAYn0B,KAC9B,CACIA,KAAK6X,OAASvX,UACd,OAAON,IACX,CAEE,WAAAo0B,IAAehX,GACb,GAAIpd,KAAK6X,OAAQ,CACf,IAAIwc,EAAWr0B,KACf,IAAIs0B,EAAY,MAChB,IAAK,IAAI/a,KAAQ6D,EAAO,CACtB,GAAI7D,IAASvZ,KAAM,CACjBs0B,EAAY,IACtB,MAAe,GAAIA,EAAW,CACpBt0B,KAAK6X,OAAOmb,YAAYqB,EAAU9a,GAClC8a,EAAW9a,CACrB,KAAe,CACLvZ,KAAK6X,OAAOsb,aAAakB,EAAU9a,EAC7C,CACA,CAEM,IAAK+a,EAAW,CACdt0B,KAAKk0B,QACb,CACA,CAEI,OAAOl0B,IACX,CAEE,IAAA8a,GACE,IAAI7Z,EAASjB,KACb,MAAOiB,EAAO4W,QAAU5W,EAAO4W,OAAOV,OAAS,WAAY,CACzDlW,EAASA,EAAO4W,MACtB,CACI,OAAO5W,CACX,CAEE,MAAAszB,CAAOpM,EAAGqM,GACR,IAAIC,EAAQ,GACZ,IAAIC,EAAaF,GAAU,KAC3BA,EAASA,GAAU,IAAIj1B,IACvB,IAAIo1B,EAAkB,EAEtB,IAAK,IAAIhgB,KAAQ3U,KAAM,CACrB,IAAKxB,OAAO0C,UAAUC,eAAeC,KAAKpB,KAAM2U,GAAO,CAErD,QACR,CACM,GAAIA,IAAS,UAAYA,IAAS,aAAc,SAChD,IAAIhW,EAAQqB,KAAK2U,GAEjB,GAAIiK,MAAMC,QAAQlgB,GAAQ,CACxB81B,EAAM9f,GAAQhW,EAAMG,KAAIwb,IACtB,UAAWA,IAAM,UAAYA,EAAEia,OAAQ,CACrC,OAAOja,EAAEia,OAAO,KAAMC,EAClC,KAAiB,CACL,OAAOla,CACnB,IAEA,MAAa,UAAW3b,IAAU,UAAYA,EAAM41B,OAAQ,CACpDE,EAAM9f,GAAQhW,EAAM41B,OAAO,KAAMC,EACzC,MAAa,GAAI7f,IAAS,SAAU,CAC5B,IAAIigB,EAAUJ,EAAO50B,IAAIjB,EAAMwqB,OAC/B,GAAIyL,GAAW,KAAM,CACnBA,EAAUD,EACVH,EAAOb,IAAIh1B,EAAMwqB,MAAOwL,GACxBA,GACV,CACQF,EAAM9f,GAAQ,CACZxP,IAAKxG,EAAMwG,IACXyvB,UACA1vB,MAAOvG,EAAMuG,MAEvB,KAAa,CACLuvB,EAAM9f,GAAQhW,CACtB,CACA,CAEI,GAAI+1B,EAAY,CACdD,EAAMD,OAAS,IAAIA,EAAOpb,QAAQta,KAAIqqB,GAASA,EAAMoL,UAC3D,CAEI,OAAOE,CACX,CAEE,OAAAf,GACE,IAAK1zB,KAAK60B,WAAY,CACpB70B,KAAK60B,WAAa,IAAIC,MAAM90B,KAAMA,KAAKyzB,oBAC7C,CACI,OAAOzzB,KAAK60B,UAChB,CAEE,QAAA9Y,CAASoW,EAAc3B,IACrB,GAAI2B,EAAY3B,UAAW2B,EAAcA,EAAY3B,UACrD,IAAIvvB,EAAS,GACbkxB,EAAYnyB,MAAMsa,IAChBrZ,GAAUqZ,CAAA,IAEZ,OAAOrZ,CACX,CAEE,IAAA8zB,CAAK9zB,EAAQoa,EAAMuB,GACjB,IAAIpI,EAAO,CAAE+E,KAAMvZ,MACnB,IAAK,IAAIsa,KAAKsC,EAAMpI,EAAK8F,GAAKsC,EAAKtC,GACnC,OAAOrZ,EAAO8zB,KAAK1Z,EAAM7G,EAC7B,CAEE,WAAIwgB,GACF,OAAOh1B,IACX,E,IAGAi1B,GAAiBrd,GACjBA,GAAK9X,QAAU8X,GC1Xf,IAAIA,GAAO3V,GAEX,MAAMizB,WAAoBtd,GACxB,WAAA9N,CAAY4oB,GACV,GACEA,UACOA,EAAS/zB,QAAU,oBACnB+zB,EAAS/zB,QAAU,SAC1B,CACA+zB,EAAW,IAAKA,EAAU/zB,MAAOa,OAAOkzB,EAAS/zB,OACvD,CACI2Z,MAAMoa,GACN1yB,KAAKmX,KAAO,MAChB,CAEE,YAAIge,GACF,OAAOn1B,KAAK0lB,KAAK0P,WAAW,OAASp1B,KAAK0lB,KAAK,KAAO,GAC1D,E,IAGA2P,GAAiBH,GACjBA,GAAYp1B,QAAUo1B,GCvBtB,MAAAI,UAAuBpK,SAAW,YAAcA,cACvCqK,OAAS,YAAcA,YACvBC,SAAW,YAAcA,OAAS,GCF3C,IAAIC,GAAS,GACb,IAAIC,GAAY,GAChB,IAAIC,UAAapsB,aAAe,YAAcA,WAAaqV,MAC3D,IAAIgX,GAAS,MACb,SAASC,KACPD,GAAS,KACT,IAAIlzB,EAAO,mEACX,IAAK,IAAI4X,EAAI,EAAGpT,EAAMxE,EAAKqC,OAAQuV,EAAIpT,IAAOoT,EAAG,CAC/Cmb,GAAOnb,GAAK5X,EAAK4X,GACjBob,GAAUhzB,EAAK1D,WAAWsb,IAAMA,CACpC,CAEEob,GAAU,IAAI12B,WAAW,IAAM,GAC/B02B,GAAU,IAAI12B,WAAW,IAAM,EACjC,CAEA,SAAS82B,GAAaC,GACpB,IAAKH,GAAQ,CACXC,IACJ,CACE,IAAIvb,EAAGmY,EAAGuD,EAAGC,EAAKC,EAAcxS,EAChC,IAAIxc,EAAM6uB,EAAIhxB,OAEd,GAAImC,EAAM,EAAI,EAAG,CACf,MAAM,IAAI2P,MAAM,iDACpB,CAOEqf,EAAeH,EAAI7uB,EAAM,KAAO,IAAM,EAAI6uB,EAAI7uB,EAAM,KAAO,IAAM,EAAI,EAGrEwc,EAAM,IAAIiS,GAAIzuB,EAAM,EAAI,EAAIgvB,GAG5BF,EAAIE,EAAe,EAAIhvB,EAAM,EAAIA,EAEjC,IAAIivB,EAAI,EAER,IAAK7b,EAAI,EAAGmY,EAAI,EAAGnY,EAAI0b,EAAG1b,GAAK,EAAGmY,GAAK,EAAG,CACxCwD,EAAOP,GAAUK,EAAI/2B,WAAWsb,KAAO,GAAOob,GAAUK,EAAI/2B,WAAWsb,EAAI,KAAO,GAAOob,GAAUK,EAAI/2B,WAAWsb,EAAI,KAAO,EAAKob,GAAUK,EAAI/2B,WAAWsb,EAAI,IAC/JoJ,EAAIyS,KAAQF,GAAO,GAAM,IACzBvS,EAAIyS,KAAQF,GAAO,EAAK,IACxBvS,EAAIyS,KAAOF,EAAM,GACrB,CAEE,GAAIC,IAAiB,EAAG,CACtBD,EAAOP,GAAUK,EAAI/2B,WAAWsb,KAAO,EAAMob,GAAUK,EAAI/2B,WAAWsb,EAAI,KAAO,EACjFoJ,EAAIyS,KAAOF,EAAM,GACrB,MAAS,GAAIC,IAAiB,EAAG,CAC7BD,EAAOP,GAAUK,EAAI/2B,WAAWsb,KAAO,GAAOob,GAAUK,EAAI/2B,WAAWsb,EAAI,KAAO,EAAMob,GAAUK,EAAI/2B,WAAWsb,EAAI,KAAO,EAC5HoJ,EAAIyS,KAAQF,GAAO,EAAK,IACxBvS,EAAIyS,KAAOF,EAAM,GACrB,CAEE,OAAOvS,CACT,CAEA,SAAS0S,GAAiBC,GACxB,OAAOZ,GAAOY,GAAO,GAAK,IAAQZ,GAAOY,GAAO,GAAK,IAAQZ,GAAOY,GAAO,EAAI,IAAQZ,GAAOY,EAAM,GACtG,CAEA,SAASC,GAAaC,EAAOrxB,EAAOC,GAClC,IAAI8wB,EACJ,IAAIv2B,EAAS,GACb,IAAK,IAAI4a,EAAIpV,EAAOoV,EAAInV,EAAKmV,GAAK,EAAG,CACnC2b,GAAOM,EAAMjc,IAAM,KAAOic,EAAMjc,EAAI,IAAM,GAAMic,EAAMjc,EAAI,GAC1D5a,EAAOwV,KAAKkhB,GAAgBH,GAChC,CACE,OAAOv2B,EAAOud,KAAK,GACrB,CAEA,SAASuZ,GAAeD,GACtB,IAAKX,GAAQ,CACXC,IACJ,CACE,IAAII,EACJ,IAAI/uB,EAAMqvB,EAAMxxB,OAChB,IAAI0xB,EAAavvB,EAAM,EACvB,IAAIxH,EAAS,GACb,IAAIqyB,EAAQ,GACZ,IAAI2E,EAAiB,MAGrB,IAAK,IAAIpc,EAAI,EAAGqc,EAAOzvB,EAAMuvB,EAAYnc,EAAIqc,EAAMrc,GAAKoc,EAAgB,CACtE3E,EAAM7c,KAAKohB,GAAYC,EAAOjc,EAAIA,EAAIoc,EAAkBC,EAAOA,EAAQrc,EAAIoc,GAC/E,CAGE,GAAID,IAAe,EAAG,CACpBR,EAAMM,EAAMrvB,EAAM,GAClBxH,GAAU+1B,GAAOQ,GAAO,GACxBv2B,GAAU+1B,GAAQQ,GAAO,EAAK,IAC9Bv2B,GAAU,IACd,MAAS,GAAI+2B,IAAe,EAAG,CAC3BR,GAAOM,EAAMrvB,EAAM,IAAM,GAAMqvB,EAAMrvB,EAAM,GAC3CxH,GAAU+1B,GAAOQ,GAAO,IACxBv2B,GAAU+1B,GAAQQ,GAAO,EAAK,IAC9Bv2B,GAAU+1B,GAAQQ,GAAO,EAAK,IAC9Bv2B,GAAU,GACd,CAEEqyB,EAAM7c,KAAKxV,GAEX,OAAOqyB,EAAM9U,KAAK,GACpB,CAEA,SAAS2Z,GAAMzsB,EAAQ9F,EAAQwyB,EAAMC,EAAMC,GACzC,IAAIC,EAAG72B,EACP,IAAI82B,EAAOF,EAAS,EAAID,EAAO,EAC/B,IAAII,GAAQ,GAAKD,GAAQ,EACzB,IAAIE,EAAQD,GAAQ,EACpB,IAAIE,GAAS,EACb,IAAI9c,EAAIuc,EAAQE,EAAS,EAAK,EAC9B,IAAIvM,EAAIqM,GAAQ,EAAI,EACpB,IAAIhE,EAAI1oB,EAAO9F,EAASiW,GAExBA,GAAKkQ,EAELwM,EAAInE,GAAM,IAAOuE,GAAU,EAC3BvE,KAAQuE,EACRA,GAASH,EACT,KAAOG,EAAQ,EAAGJ,EAAIA,EAAI,IAAM7sB,EAAO9F,EAASiW,GAAIA,GAAKkQ,EAAG4M,GAAS,EAAG,EAExEj3B,EAAI62B,GAAM,IAAOI,GAAU,EAC3BJ,KAAQI,EACRA,GAASN,EACT,KAAOM,EAAQ,EAAGj3B,EAAIA,EAAI,IAAMgK,EAAO9F,EAASiW,GAAIA,GAAKkQ,EAAG4M,GAAS,EAAG,EAExE,GAAIJ,IAAM,EAAG,CACXA,EAAI,EAAIG,CACZ,MAAS,GAAIH,IAAME,EAAM,CACrB,OAAO/2B,EAAIk3B,KAAQxE,GAAK,EAAI,GAAKpS,QACrC,KAAS,CACLtgB,EAAIA,EAAImF,KAAKC,IAAI,EAAGuxB,GACpBE,EAAIA,EAAIG,CACZ,CACE,OAAQtE,GAAK,EAAI,GAAK1yB,EAAImF,KAAKC,IAAI,EAAGyxB,EAAIF,EAC5C,CAEA,SAAS3yB,GAAOgG,EAAQxL,EAAO0F,EAAQwyB,EAAMC,EAAMC,GACjD,IAAIC,EAAG72B,EAAGpB,EACV,IAAIk4B,EAAOF,EAAS,EAAID,EAAO,EAC/B,IAAII,GAAQ,GAAKD,GAAQ,EACzB,IAAIE,EAAQD,GAAQ,EACpB,IAAII,EAAMR,IAAS,GAAKxxB,KAAKC,IAAI,GAAI,IAAMD,KAAKC,IAAI,GAAI,IAAM,EAC9D,IAAI+U,EAAIuc,EAAO,EAAKE,EAAS,EAC7B,IAAIvM,EAAIqM,EAAO,GAAK,EACpB,IAAIhE,EAAIl0B,EAAQ,GAAMA,IAAU,GAAK,EAAIA,EAAQ,EAAK,EAAI,EAE1DA,EAAQ2G,KAAKiyB,IAAI54B,GAEjB,GAAI64B,MAAM74B,IAAUA,IAAU8hB,SAAU,CACtCtgB,EAAIq3B,MAAM74B,GAAS,EAAI,EACvBq4B,EAAIE,CACR,KAAS,CACLF,EAAI1xB,KAAKmyB,MAAMnyB,KAAK0lB,IAAIrsB,GAAS2G,KAAKoyB,KACtC,GAAI/4B,GAASI,EAAIuG,KAAKC,IAAI,GAAIyxB,IAAM,EAAG,CACrCA,IACAj4B,GAAK,CACX,CACI,GAAIi4B,EAAIG,GAAS,EAAG,CAClBx4B,GAAS24B,EAAKv4B,CACpB,KAAW,CACLJ,GAAS24B,EAAKhyB,KAAKC,IAAI,EAAG,EAAI4xB,EACpC,CACI,GAAIx4B,EAAQI,GAAK,EAAG,CAClBi4B,IACAj4B,GAAK,CACX,CAEI,GAAIi4B,EAAIG,GAASD,EAAM,CACrB/2B,EAAI,EACJ62B,EAAIE,CACV,MAAW,GAAIF,EAAIG,GAAS,EAAG,CACzBh3B,GAAKxB,EAAQI,EAAI,GAAKuG,KAAKC,IAAI,EAAGuxB,GAClCE,EAAIA,EAAIG,CACd,KAAW,CACLh3B,EAAIxB,EAAQ2G,KAAKC,IAAI,EAAG4xB,EAAQ,GAAK7xB,KAAKC,IAAI,EAAGuxB,GACjDE,EAAI,CACV,CACA,CAEE,KAAOF,GAAQ,EAAG3sB,EAAO9F,EAASiW,GAAKna,EAAI,IAAMma,GAAKkQ,EAAGrqB,GAAK,IAAK22B,GAAQ,EAAG,EAE9EE,EAAKA,GAAKF,EAAQ32B,EAClB82B,GAAQH,EACR,KAAOG,EAAO,EAAG9sB,EAAO9F,EAASiW,GAAK0c,EAAI,IAAM1c,GAAKkQ,EAAGwM,GAAK,IAAKC,GAAQ,EAAG,EAE7E9sB,EAAO9F,EAASiW,EAAIkQ,IAAMqI,EAAI,GAChC,CAEA,IAAI9W,GAAW,GAAGA,SAElB,IAAI8C,GAAUD,MAAMC,SAAW,SAAU6E,GACvC,OAAO3H,GAAS3a,KAAKsiB,IAAQ,gBAC/B;;;;;;GASA,IAAIiU,GAAoB,GA0BxBC,GAAOC,oBAAsB3M,GAAO2M,sBAAwBv3B,UACxD4qB,GAAO2M,oBACP,KAOJ,SAASC,KACP,OAAOF,GAAOC,oBACV,WACA,UACN,CAEA,SAASE,GAAcC,EAAMjzB,GAC3B,GAAI+yB,KAAe/yB,EAAQ,CACzB,MAAM,IAAIkzB,WAAW,6BACzB,CACE,GAAIL,GAAOC,oBAAqB,CAE9BG,EAAO,IAAIzuB,WAAWxE,GACtBizB,EAAKE,UAAYN,GAAO12B,SAC5B,KAAS,CAEL,GAAI82B,IAAS,KAAM,CACjBA,EAAO,IAAIJ,GAAO7yB,EACxB,CACIizB,EAAKjzB,OAASA,CAClB,CAEE,OAAOizB,CACT,CAYA,SAASJ,GAAQO,EAAKC,EAAkBrzB,GACtC,IAAK6yB,GAAOC,uBAAyB73B,gBAAgB43B,IAAS,CAC5D,OAAO,IAAIA,GAAOO,EAAKC,EAAkBrzB,EAC7C,CAGE,UAAWozB,IAAQ,SAAU,CAC3B,UAAWC,IAAqB,SAAU,CACxC,MAAM,IAAIvhB,MACR,oEAER,CACI,OAAOwhB,GAAYr4B,KAAMm4B,EAC7B,CACE,OAAOrF,GAAK9yB,KAAMm4B,EAAKC,EAAkBrzB,EAC3C,CAEA6yB,GAAOU,SAAW,KAGlBV,GAAOW,SAAW,SAAU7U,GAC1BA,EAAIwU,UAAYN,GAAO12B,UACvB,OAAOwiB,CACT,EAEA,SAASoP,GAAMkF,EAAMr5B,EAAOy5B,EAAkBrzB,GAC5C,UAAWpG,IAAU,SAAU,CAC7B,MAAM,IAAIynB,UAAU,wCACxB,CAEE,UAAWoS,cAAgB,aAAe75B,aAAiB65B,YAAa,CACtE,OAAOC,GAAgBT,EAAMr5B,EAAOy5B,EAAkBrzB,EAC1D,CAEE,UAAWpG,IAAU,SAAU,CAC7B,OAAO+5B,GAAWV,EAAMr5B,EAAOy5B,EACnC,CAEE,OAAOO,GAAWX,EAAMr5B,EAC1B,CAUAi5B,GAAO9E,KAAO,SAAUn0B,EAAOy5B,EAAkBrzB,GAC/C,OAAO+tB,GAAK,KAAMn0B,EAAOy5B,EAAkBrzB,EAC7C,EAEA,GAAI6yB,GAAOC,oBAAqB,CAC9BD,GAAO12B,UAAUg3B,UAAY3uB,WAAWrI,UACxC02B,GAAOM,UAAY3uB,UACrB,CAEA,SAASqvB,GAAYC,GACnB,UAAWA,IAAS,SAAU,CAC5B,MAAM,IAAIzS,UAAU,mCACxB,MAAS,GAAIyS,EAAO,EAAG,CACnB,MAAM,IAAIZ,WAAW,uCACzB,CACA,CAEA,SAASa,GAAOd,EAAMa,EAAME,EAAMC,GAChCJ,GAAWC,GACX,GAAIA,GAAQ,EAAG,CACb,OAAOd,GAAaC,EAAMa,EAC9B,CACE,GAAIE,IAASz4B,UAAW,CAItB,cAAc04B,IAAa,SACvBjB,GAAaC,EAAMa,GAAME,KAAKA,EAAMC,GACpCjB,GAAaC,EAAMa,GAAME,KAAKA,EACtC,CACE,OAAOhB,GAAaC,EAAMa,EAC5B,CAMAjB,GAAOkB,MAAQ,SAAUD,EAAME,EAAMC,GACnC,OAAOF,GAAM,KAAMD,EAAME,EAAMC,EACjC,EAEA,SAASX,GAAaL,EAAMa,GAC1BD,GAAWC,GACXb,EAAOD,GAAaC,EAAMa,EAAO,EAAI,EAAI5X,GAAQ4X,GAAQ,GACzD,IAAKjB,GAAOC,oBAAqB,CAC/B,IAAK,IAAIvd,EAAI,EAAGA,EAAIue,IAAQve,EAAG,CAC7B0d,EAAK1d,GAAK,CAChB,CACA,CACE,OAAO0d,CACT,CAKAJ,GAAOS,YAAc,SAAUQ,GAC7B,OAAOR,GAAY,KAAMQ,EAC3B,EAIAjB,GAAOqB,gBAAkB,SAAUJ,GACjC,OAAOR,GAAY,KAAMQ,EAC3B,EAEA,SAASH,GAAYV,EAAM7R,EAAQ6S,GACjC,UAAWA,IAAa,UAAYA,IAAa,GAAI,CACnDA,EAAW,MACf,CAEE,IAAKpB,GAAOsB,WAAWF,GAAW,CAChC,MAAM,IAAI5S,UAAU,6CACxB,CAEE,IAAIrhB,EAASo0B,GAAWhT,EAAQ6S,GAAY,EAC5ChB,EAAOD,GAAaC,EAAMjzB,GAE1B,IAAIq0B,EAASpB,EAAK7zB,MAAMgiB,EAAQ6S,GAEhC,GAAII,IAAWr0B,EAAQ,CAIrBizB,EAAOA,EAAK/wB,MAAM,EAAGmyB,EACzB,CAEE,OAAOpB,CACT,CAEA,SAASqB,GAAerB,EAAMnP,GAC5B,IAAI9jB,EAAS8jB,EAAM9jB,OAAS,EAAI,EAAIkc,GAAQ4H,EAAM9jB,QAAU,EAC5DizB,EAAOD,GAAaC,EAAMjzB,GAC1B,IAAK,IAAIuV,EAAI,EAAGA,EAAIvV,EAAQuV,GAAK,EAAG,CAClC0d,EAAK1d,GAAKuO,EAAMvO,GAAK,GACzB,CACE,OAAO0d,CACT,CAEA,SAASS,GAAiBT,EAAMnP,EAAOyQ,EAAYv0B,GAGjD,GAAIu0B,EAAa,GAAKzQ,EAAMsQ,WAAaG,EAAY,CACnD,MAAM,IAAIrB,WAAW,4BACzB,CAEE,GAAIpP,EAAMsQ,WAAaG,GAAcv0B,GAAU,GAAI,CACjD,MAAM,IAAIkzB,WAAW,4BACzB,CAEE,GAAIqB,IAAeh5B,WAAayE,IAAWzE,UAAW,CACpDuoB,EAAQ,IAAItf,WAAWsf,EAC3B,MAAS,GAAI9jB,IAAWzE,UAAW,CAC/BuoB,EAAQ,IAAItf,WAAWsf,EAAOyQ,EAClC,KAAS,CACLzQ,EAAQ,IAAItf,WAAWsf,EAAOyQ,EAAYv0B,EAC9C,CAEE,GAAI6yB,GAAOC,oBAAqB,CAE9BG,EAAOnP,EACPmP,EAAKE,UAAYN,GAAO12B,SAC5B,KAAS,CAEL82B,EAAOqB,GAAcrB,EAAMnP,EAC/B,CACE,OAAOmP,CACT,CAEA,SAASW,GAAYX,EAAMvS,GACzB,GAAI8T,GAAiB9T,GAAM,CACzB,IAAIve,EAAM+Z,GAAQwE,EAAI1gB,QAAU,EAChCizB,EAAOD,GAAaC,EAAM9wB,GAE1B,GAAI8wB,EAAKjzB,SAAW,EAAG,CACrB,OAAOizB,CACb,CAEIvS,EAAI+T,KAAKxB,EAAM,EAAG,EAAG9wB,GACrB,OAAO8wB,CACX,CAEE,GAAIvS,EAAK,CACP,UAAY+S,cAAgB,aACxB/S,EAAItb,kBAAkBquB,aAAgB,WAAY/S,EAAK,CACzD,UAAWA,EAAI1gB,SAAW,UAAY00B,GAAMhU,EAAI1gB,QAAS,CACvD,OAAOgzB,GAAaC,EAAM,EAClC,CACM,OAAOqB,GAAcrB,EAAMvS,EACjC,CAEI,GAAIA,EAAItO,OAAS,UAAY0H,GAAQ4G,EAAIjR,MAAO,CAC9C,OAAO6kB,GAAcrB,EAAMvS,EAAIjR,KACrC,CACA,CAEE,MAAM,IAAI4R,UAAU,qFACtB,CAEA,SAASnF,GAASlc,GAGhB,GAAIA,GAAU+yB,KAAc,CAC1B,MAAM,IAAIG,WAAW,kDACA,WAAaH,KAAa/b,SAAS,IAAM,SAClE,CACE,OAAOhX,EAAS,CAClB,CAQA6yB,GAAO8B,SAAWA,GAClB,SAASH,GAAkB5X,GACzB,SAAUA,GAAK,MAAQA,EAAEgY,UAC3B,CAEA/B,GAAOgC,QAAU,SAASA,EAASlY,EAAGC,GACpC,IAAK4X,GAAiB7X,KAAO6X,GAAiB5X,GAAI,CAChD,MAAM,IAAIyE,UAAU,4BACxB,CAEE,GAAI1E,IAAMC,EAAG,OAAO,EAEpB,IAAIwJ,EAAIzJ,EAAE3c,OACV,IAAI80B,EAAIlY,EAAE5c,OAEV,IAAK,IAAIuV,EAAI,EAAGpT,EAAM5B,KAAK0d,IAAImI,EAAG0O,GAAIvf,EAAIpT,IAAOoT,EAAG,CAClD,GAAIoH,EAAEpH,KAAOqH,EAAErH,GAAI,CACjB6Q,EAAIzJ,EAAEpH,GACNuf,EAAIlY,EAAErH,GACN,KACN,CACA,CAEE,GAAI6Q,EAAI0O,EAAG,OAAQ,EACnB,GAAIA,EAAI1O,EAAG,OAAO,EAClB,OAAO,CACT,EAEAyM,GAAOsB,WAAa,SAASA,EAAYF,GACvC,OAAQx5B,OAAOw5B,GAAUnkB,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,KACT,QACE,OAAO,MAEb,EAEA+iB,GAAOpQ,OAAS,SAASA,EAAQsS,EAAM/0B,GACrC,IAAK8Z,GAAQib,GAAO,CAClB,MAAM,IAAI1T,UAAU,8CACxB,CAEE,GAAI0T,EAAK/0B,SAAW,EAAG,CACrB,OAAO6yB,GAAOkB,MAAM,EACxB,CAEE,IAAIxe,EACJ,GAAIvV,IAAWzE,UAAW,CACxByE,EAAS,EACT,IAAKuV,EAAI,EAAGA,EAAIwf,EAAK/0B,SAAUuV,EAAG,CAChCvV,GAAU+0B,EAAKxf,GAAGvV,MACxB,CACA,CAEE,IAAIoF,EAASytB,GAAOS,YAAYtzB,GAChC,IAAIwQ,EAAM,EACV,IAAK+E,EAAI,EAAGA,EAAIwf,EAAK/0B,SAAUuV,EAAG,CAChC,IAAI4V,EAAM4J,EAAKxf,GACf,IAAKif,GAAiBrJ,GAAM,CAC1B,MAAM,IAAI9J,UAAU,8CAC1B,CACI8J,EAAIsJ,KAAKrvB,EAAQoL,GACjBA,GAAO2a,EAAInrB,MACf,CACE,OAAOoF,CACT,EAEA,SAASgvB,GAAYhT,EAAQ6S,GAC3B,GAAIO,GAAiBpT,GAAS,CAC5B,OAAOA,EAAOphB,MAClB,CACE,UAAWyzB,cAAgB,oBAAsBA,YAAYuB,SAAW,aACnEvB,YAAYuB,OAAO5T,IAAWA,aAAkBqS,aAAc,CACjE,OAAOrS,EAAOgT,UAClB,CACE,UAAWhT,IAAW,SAAU,CAC9BA,EAAS,GAAKA,CAClB,CAEE,IAAIjf,EAAMif,EAAOphB,OACjB,GAAImC,IAAQ,EAAG,OAAO,EAGtB,IAAI8yB,EAAc,MAClB,OAAS,CACP,OAAQhB,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO9xB,EACT,IAAK,OACL,IAAK,QACL,KAAK5G,UACH,OAAO25B,GAAY9T,GAAQphB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOmC,EAAM,EACf,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOgzB,GAAc/T,GAAQphB,OAC/B,QACE,GAAIi1B,EAAa,OAAOC,GAAY9T,GAAQphB,OAC5Ci0B,GAAY,GAAKA,GAAUnkB,cAC3BmlB,EAAc,KAEtB,CACA,CACApC,GAAOuB,WAAaA,GAEpB,SAASgB,GAAcnB,EAAU9zB,EAAOC,GACtC,IAAI60B,EAAc,MASlB,GAAI90B,IAAU5E,WAAa4E,EAAQ,EAAG,CACpCA,EAAQ,CACZ,CAGE,GAAIA,EAAQlF,KAAK+E,OAAQ,CACvB,MAAO,EACX,CAEE,GAAII,IAAQ7E,WAAa6E,EAAMnF,KAAK+E,OAAQ,CAC1CI,EAAMnF,KAAK+E,MACf,CAEE,GAAII,GAAO,EAAG,CACZ,MAAO,EACX,CAGEA,KAAS,EACTD,KAAW,EAEX,GAAIC,GAAOD,EAAO,CAChB,MAAO,EACX,CAEE,IAAK8zB,EAAUA,EAAW,OAE1B,MAAO,KAAM,CACX,OAAQA,GACN,IAAK,MACH,OAAOoB,GAASp6B,KAAMkF,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOk1B,GAAUr6B,KAAMkF,EAAOC,GAEhC,IAAK,QACH,OAAOm1B,GAAWt6B,KAAMkF,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOo1B,GAAYv6B,KAAMkF,EAAOC,GAElC,IAAK,SACH,OAAOq1B,GAAYx6B,KAAMkF,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOs1B,GAAaz6B,KAAMkF,EAAOC,GAEnC,QACE,GAAI60B,EAAa,MAAM,IAAI5T,UAAU,qBAAuB4S,GAC5DA,GAAYA,EAAW,IAAInkB,cAC3BmlB,EAAc,KAEtB,CACA,CAIApC,GAAO12B,UAAUy4B,UAAY,KAE7B,SAASe,GAAM/Y,EAAGgZ,EAAGx6B,GACnB,IAAIma,EAAIqH,EAAEgZ,GACVhZ,EAAEgZ,GAAKhZ,EAAExhB,GACTwhB,EAAExhB,GAAKma,CACT,CAEAsd,GAAO12B,UAAU05B,OAAS,SAASA,IACjC,IAAI1zB,EAAMlH,KAAK+E,OACf,GAAImC,EAAM,IAAM,EAAG,CACjB,MAAM,IAAI+wB,WAAW,4CACzB,CACE,IAAK,IAAI3d,EAAI,EAAGA,EAAIpT,EAAKoT,GAAK,EAAG,CAC/BogB,GAAK16B,KAAMsa,EAAGA,EAAI,EACtB,CACE,OAAOta,IACT,EAEA43B,GAAO12B,UAAU25B,OAAS,SAASA,IACjC,IAAI3zB,EAAMlH,KAAK+E,OACf,GAAImC,EAAM,IAAM,EAAG,CACjB,MAAM,IAAI+wB,WAAW,4CACzB,CACE,IAAK,IAAI3d,EAAI,EAAGA,EAAIpT,EAAKoT,GAAK,EAAG,CAC/BogB,GAAK16B,KAAMsa,EAAGA,EAAI,GAClBogB,GAAK16B,KAAMsa,EAAI,EAAGA,EAAI,EAC1B,CACE,OAAOta,IACT,EAEA43B,GAAO12B,UAAU45B,OAAS,SAASA,IACjC,IAAI5zB,EAAMlH,KAAK+E,OACf,GAAImC,EAAM,IAAM,EAAG,CACjB,MAAM,IAAI+wB,WAAW,4CACzB,CACE,IAAK,IAAI3d,EAAI,EAAGA,EAAIpT,EAAKoT,GAAK,EAAG,CAC/BogB,GAAK16B,KAAMsa,EAAGA,EAAI,GAClBogB,GAAK16B,KAAMsa,EAAI,EAAGA,EAAI,GACtBogB,GAAK16B,KAAMsa,EAAI,EAAGA,EAAI,GACtBogB,GAAK16B,KAAMsa,EAAI,EAAGA,EAAI,EAC1B,CACE,OAAOta,IACT,EAEA43B,GAAO12B,UAAU6a,SAAW,SAASA,IACnC,IAAIhX,EAAS/E,KAAK+E,OAAS,EAC3B,GAAIA,IAAW,EAAG,MAAO,GACzB,GAAIyT,UAAUzT,SAAW,EAAG,OAAOs1B,GAAUr6B,KAAM,EAAG+E,GACtD,OAAOo1B,GAAaY,MAAM/6B,KAAMwY,UAClC,EAEAof,GAAO12B,UAAU85B,OAAS,SAASA,EAAQrZ,GACzC,IAAK4X,GAAiB5X,GAAI,MAAM,IAAIyE,UAAU,6BAC9C,GAAIpmB,OAAS2hB,EAAG,OAAO,KACvB,OAAOiW,GAAOgC,QAAQ55B,KAAM2hB,KAAO,CACrC,EAEAiW,GAAO12B,UAAU+5B,QAAU,SAASA,IAClC,IAAI72B,EAAM,GACV,IAAIkC,EAAMqxB,GACV,GAAI33B,KAAK+E,OAAS,EAAG,CACnBX,EAAMpE,KAAK+b,SAAS,MAAO,EAAGzV,GAAKsV,MAAM,SAASqB,KAAK,KACvD,GAAIjd,KAAK+E,OAASuB,EAAKlC,GAAO,OAClC,CACE,MAAO,WAAaA,EAAM,GAC5B,EAEAwzB,GAAO12B,UAAU04B,QAAU,SAASA,EAAStS,EAAQpiB,EAAOC,EAAK+1B,EAAWC,GAC1E,IAAK5B,GAAiBjS,GAAS,CAC7B,MAAM,IAAIlB,UAAU,4BACxB,CAEE,GAAIlhB,IAAU5E,UAAW,CACvB4E,EAAQ,CACZ,CACE,GAAIC,IAAQ7E,UAAW,CACrB6E,EAAMmiB,EAASA,EAAOviB,OAAS,CACnC,CACE,GAAIm2B,IAAc56B,UAAW,CAC3B46B,EAAY,CAChB,CACE,GAAIC,IAAY76B,UAAW,CACzB66B,EAAUn7B,KAAK+E,MACnB,CAEE,GAAIG,EAAQ,GAAKC,EAAMmiB,EAAOviB,QAAUm2B,EAAY,GAAKC,EAAUn7B,KAAK+E,OAAQ,CAC9E,MAAM,IAAIkzB,WAAW,qBACzB,CAEE,GAAIiD,GAAaC,GAAWj2B,GAASC,EAAK,CACxC,OAAO,CACX,CACE,GAAI+1B,GAAaC,EAAS,CACxB,OAAQ,CACZ,CACE,GAAIj2B,GAASC,EAAK,CAChB,OAAO,CACX,CAEED,KAAW,EACXC,KAAS,EACT+1B,KAAe,EACfC,KAAa,EAEb,GAAIn7B,OAASsnB,EAAQ,OAAO,EAE5B,IAAI6D,EAAIgQ,EAAUD,EAClB,IAAIrB,EAAI10B,EAAMD,EACd,IAAIgC,EAAM5B,KAAK0d,IAAImI,EAAG0O,GAEtB,IAAIuB,EAAWp7B,KAAKiH,MAAMi0B,EAAWC,GACrC,IAAIE,EAAa/T,EAAOrgB,MAAM/B,EAAOC,GAErC,IAAK,IAAImV,EAAI,EAAGA,EAAIpT,IAAOoT,EAAG,CAC5B,GAAI8gB,EAAS9gB,KAAO+gB,EAAW/gB,GAAI,CACjC6Q,EAAIiQ,EAAS9gB,GACbuf,EAAIwB,EAAW/gB,GACf,KACN,CACA,CAEE,GAAI6Q,EAAI0O,EAAG,OAAQ,EACnB,GAAIA,EAAI1O,EAAG,OAAO,EAClB,OAAO,CACT,EAWA,SAASmQ,GAAsBnxB,EAAQmS,EAAKgd,EAAYN,EAAUuC,GAEhE,GAAIpxB,EAAOpF,SAAW,EAAG,OAAQ,EAGjC,UAAWu0B,IAAe,SAAU,CAClCN,EAAWM,EACXA,EAAa,CACjB,MAAS,GAAIA,EAAa,WAAY,CAClCA,EAAa,UACjB,MAAS,GAAIA,GAAc,WAAY,CACnCA,GAAc,UAClB,CACEA,GAAcA,EACd,GAAI9B,MAAM8B,GAAa,CAErBA,EAAaiC,EAAM,EAAKpxB,EAAOpF,OAAS,CAC5C,CAGE,GAAIu0B,EAAa,EAAGA,EAAanvB,EAAOpF,OAASu0B,EACjD,GAAIA,GAAcnvB,EAAOpF,OAAQ,CAC/B,GAAIw2B,EAAK,OAAQ,OACZjC,EAAanvB,EAAOpF,OAAS,CACtC,MAAS,GAAIu0B,EAAa,EAAG,CACzB,GAAIiC,EAAKjC,EAAa,OACjB,OAAQ,CACjB,CAGE,UAAWhd,IAAQ,SAAU,CAC3BA,EAAMsb,GAAO9E,KAAKxW,EAAK0c,EAC3B,CAGE,GAAIO,GAAiBjd,GAAM,CAEzB,GAAIA,EAAIvX,SAAW,EAAG,CACpB,OAAQ,CACd,CACI,OAAOy2B,GAAarxB,EAAQmS,EAAKgd,EAAYN,EAAUuC,EAC3D,MAAS,UAAWjf,IAAQ,SAAU,CAClCA,EAAMA,EAAM,IACZ,GAAIsb,GAAOC,4BACAtuB,WAAWrI,UAAU8F,UAAY,WAAY,CACtD,GAAIu0B,EAAK,CACP,OAAOhyB,WAAWrI,UAAU8F,QAAQ5F,KAAK+I,EAAQmS,EAAKgd,EAC9D,KAAa,CACL,OAAO/vB,WAAWrI,UAAUsU,YAAYpU,KAAK+I,EAAQmS,EAAKgd,EAClE,CACA,CACI,OAAOkC,GAAarxB,EAAQ,CAAEmS,GAAOgd,EAAYN,EAAUuC,EAC/D,CAEE,MAAM,IAAInV,UAAU,uCACtB,CAEA,SAASoV,GAAc9X,EAAKpH,EAAKgd,EAAYN,EAAUuC,GACrD,IAAIE,EAAY,EAChB,IAAIC,EAAYhY,EAAI3e,OACpB,IAAI42B,EAAYrf,EAAIvX,OAEpB,GAAIi0B,IAAa14B,UAAW,CAC1B04B,EAAWx5B,OAAOw5B,GAAUnkB,cAC5B,GAAImkB,IAAa,QAAUA,IAAa,SACpCA,IAAa,WAAaA,IAAa,WAAY,CACrD,GAAItV,EAAI3e,OAAS,GAAKuX,EAAIvX,OAAS,EAAG,CACpC,OAAQ,CAChB,CACM02B,EAAY,EACZC,GAAa,EACbC,GAAa,EACbrC,GAAc,CACpB,CACA,CAEE,SAAS1C,EAAM1G,EAAK5V,GAClB,GAAImhB,IAAc,EAAG,CACnB,OAAOvL,EAAI5V,EACjB,KAAW,CACL,OAAO4V,EAAI0L,aAAathB,EAAImhB,EAClC,CACA,CAEE,IAAInhB,EACJ,GAAIihB,EAAK,CACP,IAAIM,GAAc,EAClB,IAAKvhB,EAAIgf,EAAYhf,EAAIohB,EAAWphB,IAAK,CACvC,GAAIsc,EAAKlT,EAAKpJ,KAAOsc,EAAKta,EAAKuf,KAAgB,EAAI,EAAIvhB,EAAIuhB,GAAa,CACtE,GAAIA,KAAgB,EAAGA,EAAavhB,EACpC,GAAIA,EAAIuhB,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,CAClE,KAAa,CACL,GAAII,KAAgB,EAAGvhB,GAAKA,EAAIuhB,EAChCA,GAAc,CACtB,CACA,CACA,KAAS,CACL,GAAIvC,EAAaqC,EAAYD,EAAWpC,EAAaoC,EAAYC,EACjE,IAAKrhB,EAAIgf,EAAYhf,GAAK,EAAGA,IAAK,CAChC,IAAIwhB,EAAQ,KACZ,IAAK,IAAIrJ,EAAI,EAAGA,EAAIkJ,EAAWlJ,IAAK,CAClC,GAAImE,EAAKlT,EAAKpJ,EAAImY,KAAOmE,EAAKta,EAAKmW,GAAI,CACrCqJ,EAAQ,MACR,KACV,CACA,CACM,GAAIA,EAAO,OAAOxhB,CACxB,CACA,CAEE,OAAQ,CACV,CAEAsd,GAAO12B,UAAUshB,SAAW,SAASA,EAAUlG,EAAKgd,EAAYN,GAC9D,OAAOh5B,KAAKgH,QAAQsV,EAAKgd,EAAYN,MAAe,CACtD,EAEApB,GAAO12B,UAAU8F,QAAU,SAASA,EAASsV,EAAKgd,EAAYN,GAC5D,OAAOsC,GAAqBt7B,KAAMsc,EAAKgd,EAAYN,EAAU,KAC/D,EAEApB,GAAO12B,UAAUsU,YAAc,SAASA,EAAa8G,EAAKgd,EAAYN,GACpE,OAAOsC,GAAqBt7B,KAAMsc,EAAKgd,EAAYN,EAAU,MAC/D,EAEA,SAAS+C,GAAU7L,EAAK/J,EAAQ9hB,EAAQU,GACtCV,EAASmI,OAAOnI,IAAW,EAC3B,IAAI23B,EAAY9L,EAAInrB,OAASV,EAC7B,IAAKU,EAAQ,CACXA,EAASi3B,CACb,KAAS,CACLj3B,EAASyH,OAAOzH,GAChB,GAAIA,EAASi3B,EAAW,CACtBj3B,EAASi3B,CACf,CACA,CAGE,IAAIC,EAAS9V,EAAOphB,OACpB,GAAIk3B,EAAS,IAAM,EAAG,MAAM,IAAI7V,UAAU,sBAE1C,GAAIrhB,EAASk3B,EAAS,EAAG,CACvBl3B,EAASk3B,EAAS,CACtB,CACE,IAAK,IAAI3hB,EAAI,EAAGA,EAAIvV,IAAUuV,EAAG,CAC/B,IAAI4hB,EAAS12B,SAAS2gB,EAAO1gB,OAAO6U,EAAI,EAAG,GAAI,IAC/C,GAAIkd,MAAM0E,GAAS,OAAO5hB,EAC1B4V,EAAI7rB,EAASiW,GAAK4hB,CACtB,CACE,OAAO5hB,CACT,CAEA,SAAS6hB,GAAWjM,EAAK/J,EAAQ9hB,EAAQU,GACvC,OAAOq3B,GAAWnC,GAAY9T,EAAQ+J,EAAInrB,OAASV,GAAS6rB,EAAK7rB,EAAQU,EAC3E,CAEA,SAASs3B,GAAYnM,EAAK/J,EAAQ9hB,EAAQU,GACxC,OAAOq3B,GAAWE,GAAanW,GAAS+J,EAAK7rB,EAAQU,EACvD,CAEA,SAASw3B,GAAarM,EAAK/J,EAAQ9hB,EAAQU,GACzC,OAAOs3B,GAAWnM,EAAK/J,EAAQ9hB,EAAQU,EACzC,CAEA,SAASy3B,GAAatM,EAAK/J,EAAQ9hB,EAAQU,GACzC,OAAOq3B,GAAWlC,GAAc/T,GAAS+J,EAAK7rB,EAAQU,EACxD,CAEA,SAAS03B,GAAWvM,EAAK/J,EAAQ9hB,EAAQU,GACvC,OAAOq3B,GAAWM,GAAevW,EAAQ+J,EAAInrB,OAASV,GAAS6rB,EAAK7rB,EAAQU,EAC9E,CAEA6yB,GAAO12B,UAAUiD,MAAQ,SAASA,EAAOgiB,EAAQ9hB,EAAQU,EAAQi0B,GAE/D,GAAI30B,IAAW/D,UAAW,CACxB04B,EAAW,OACXj0B,EAAS/E,KAAK+E,OACdV,EAAS,CAEb,MAAS,GAAIU,IAAWzE,kBAAoB+D,IAAW,SAAU,CAC7D20B,EAAW30B,EACXU,EAAS/E,KAAK+E,OACdV,EAAS,CAEb,MAAS,GAAIs4B,SAASt4B,GAAS,CAC3BA,EAASA,EAAS,EAClB,GAAIs4B,SAAS53B,GAAS,CACpBA,EAASA,EAAS,EAClB,GAAIi0B,IAAa14B,UAAW04B,EAAW,MAC7C,KAAW,CACLA,EAAWj0B,EACXA,EAASzE,SACf,CAEA,KAAS,CACL,MAAM,IAAIuW,MACR,0EAEN,CAEE,IAAImlB,EAAYh8B,KAAK+E,OAASV,EAC9B,GAAIU,IAAWzE,WAAayE,EAASi3B,EAAWj3B,EAASi3B,EAEzD,GAAK7V,EAAOphB,OAAS,IAAMA,EAAS,GAAKV,EAAS,IAAOA,EAASrE,KAAK+E,OAAQ,CAC7E,MAAM,IAAIkzB,WAAW,yCACzB,CAEE,IAAKe,EAAUA,EAAW,OAE1B,IAAIgB,EAAc,MAClB,OAAS,CACP,OAAQhB,GACN,IAAK,MACH,OAAO+C,GAAS/7B,KAAMmmB,EAAQ9hB,EAAQU,GAExC,IAAK,OACL,IAAK,QACH,OAAOo3B,GAAUn8B,KAAMmmB,EAAQ9hB,EAAQU,GAEzC,IAAK,QACH,OAAOs3B,GAAWr8B,KAAMmmB,EAAQ9hB,EAAQU,GAE1C,IAAK,SACL,IAAK,SACH,OAAOw3B,GAAYv8B,KAAMmmB,EAAQ9hB,EAAQU,GAE3C,IAAK,SAEH,OAAOy3B,GAAYx8B,KAAMmmB,EAAQ9hB,EAAQU,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO03B,GAAUz8B,KAAMmmB,EAAQ9hB,EAAQU,GAEzC,QACE,GAAIi1B,EAAa,MAAM,IAAI5T,UAAU,qBAAuB4S,GAC5DA,GAAY,GAAKA,GAAUnkB,cAC3BmlB,EAAc,KAEtB,CACA,EAEApC,GAAO12B,UAAUqzB,OAAS,SAASA,IACjC,MAAO,CACLpd,KAAM,SACN3C,KAAMoK,MAAM1d,UAAU+F,MAAM7F,KAAKpB,KAAK48B,MAAQ58B,KAAM,GAExD,EAEA,SAASw6B,GAAatK,EAAKhrB,EAAOC,GAChC,GAAID,IAAU,GAAKC,IAAQ+qB,EAAInrB,OAAQ,CACrC,OAAOyxB,GAActG,EACzB,KAAS,CACL,OAAOsG,GAActG,EAAIjpB,MAAM/B,EAAOC,GAC1C,CACA,CAEA,SAASk1B,GAAWnK,EAAKhrB,EAAOC,GAC9BA,EAAMG,KAAK0d,IAAIkN,EAAInrB,OAAQI,GAC3B,IAAI03B,EAAM,GAEV,IAAIviB,EAAIpV,EACR,MAAOoV,EAAInV,EAAK,CACd,IAAI23B,EAAY5M,EAAI5V,GACpB,IAAI7a,EAAY,KAChB,IAAIs9B,EAAoBD,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAIxiB,EAAIyiB,GAAoB53B,EAAK,CAC/B,IAAI63B,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,GACN,KAAK,EACH,GAAID,EAAY,IAAM,CACpBr9B,EAAYq9B,CACxB,CACU,MACF,KAAK,EACHE,EAAa9M,EAAI5V,EAAI,GACrB,IAAK0iB,EAAa,OAAU,IAAM,CAChCG,GAAiBL,EAAY,KAAS,EAAOE,EAAa,GAC1D,GAAIG,EAAgB,IAAM,CACxB19B,EAAY09B,CAC1B,CACA,CACU,MACF,KAAK,EACHH,EAAa9M,EAAI5V,EAAI,GACrB2iB,EAAY/M,EAAI5V,EAAI,GACpB,IAAK0iB,EAAa,OAAU,MAASC,EAAY,OAAU,IAAM,CAC/DE,GAAiBL,EAAY,KAAQ,IAAOE,EAAa,KAAS,EAAOC,EAAY,GACrF,GAAIE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,OAAS,CAC/E19B,EAAY09B,CAC1B,CACA,CACU,MACF,KAAK,EACHH,EAAa9M,EAAI5V,EAAI,GACrB2iB,EAAY/M,EAAI5V,EAAI,GACpB4iB,EAAahN,EAAI5V,EAAI,GACrB,IAAK0iB,EAAa,OAAU,MAASC,EAAY,OAAU,MAASC,EAAa,OAAU,IAAM,CAC/FC,GAAiBL,EAAY,KAAQ,IAAQE,EAAa,KAAS,IAAOC,EAAY,KAAS,EAAOC,EAAa,GACnH,GAAIC,EAAgB,OAAUA,EAAgB,QAAU,CACtD19B,EAAY09B,CAC1B,CACA,EAEA,CAEI,GAAI19B,IAAc,KAAM,CAGtBA,EAAY,MACZs9B,EAAmB,CACzB,MAAW,GAAIt9B,EAAY,MAAQ,CAE7BA,GAAa,MACbo9B,EAAI3nB,KAAKzV,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAASA,EAAY,IACvC,CAEIo9B,EAAI3nB,KAAKzV,GACT6a,GAAKyiB,CACT,CAEE,OAAOK,GAAsBP,EAC/B,CAKA,IAAIQ,GAAuB,KAE3B,SAASD,GAAuBE,GAC9B,IAAIp2B,EAAMo2B,EAAWv4B,OACrB,GAAImC,GAAOm2B,GAAsB,CAC/B,OAAO79B,OAAOG,aAAao7B,MAAMv7B,OAAQ89B,EAC7C,CAGE,IAAIT,EAAM,GACV,IAAIviB,EAAI,EACR,MAAOA,EAAIpT,EAAK,CACd21B,GAAOr9B,OAAOG,aAAao7B,MACzBv7B,OACA89B,EAAWr2B,MAAMqT,EAAGA,GAAK+iB,IAE/B,CACE,OAAOR,CACT,CAEA,SAASvC,GAAYpK,EAAKhrB,EAAOC,GAC/B,IAAIyB,EAAM,GACVzB,EAAMG,KAAK0d,IAAIkN,EAAInrB,OAAQI,GAE3B,IAAK,IAAImV,EAAIpV,EAAOoV,EAAInV,IAAOmV,EAAG,CAChC1T,GAAOpH,OAAOG,aAAauwB,EAAI5V,GAAK,IACxC,CACE,OAAO1T,CACT,CAEA,SAAS2zB,GAAarK,EAAKhrB,EAAOC,GAChC,IAAIyB,EAAM,GACVzB,EAAMG,KAAK0d,IAAIkN,EAAInrB,OAAQI,GAE3B,IAAK,IAAImV,EAAIpV,EAAOoV,EAAInV,IAAOmV,EAAG,CAChC1T,GAAOpH,OAAOG,aAAauwB,EAAI5V,GACnC,CACE,OAAO1T,CACT,CAEA,SAASwzB,GAAUlK,EAAKhrB,EAAOC,GAC7B,IAAI+B,EAAMgpB,EAAInrB,OAEd,IAAKG,GAASA,EAAQ,EAAGA,EAAQ,EACjC,IAAKC,GAAOA,EAAM,GAAKA,EAAM+B,EAAK/B,EAAM+B,EAExC,IAAIq2B,EAAM,GACV,IAAK,IAAIjjB,EAAIpV,EAAOoV,EAAInV,IAAOmV,EAAG,CAChCijB,GAAOC,GAAMtN,EAAI5V,GACrB,CACE,OAAOijB,CACT,CAEA,SAAS9C,GAAcvK,EAAKhrB,EAAOC,GACjC,IAAIs4B,EAAQvN,EAAIjpB,MAAM/B,EAAOC,GAC7B,IAAI03B,EAAM,GACV,IAAK,IAAIviB,EAAI,EAAGA,EAAImjB,EAAM14B,OAAQuV,GAAK,EAAG,CACxCuiB,GAAOr9B,OAAOG,aAAa89B,EAAMnjB,GAAKmjB,EAAMnjB,EAAI,GAAK,IACzD,CACE,OAAOuiB,CACT,CAEAjF,GAAO12B,UAAU+F,MAAQ,SAASA,EAAO/B,EAAOC,GAC9C,IAAI+B,EAAMlH,KAAK+E,OACfG,IAAUA,EACVC,EAAMA,IAAQ7E,UAAY4G,IAAQ/B,EAElC,GAAID,EAAQ,EAAG,CACbA,GAASgC,EACT,GAAIhC,EAAQ,EAAGA,EAAQ,CAC3B,MAAS,GAAIA,EAAQgC,EAAK,CACtBhC,EAAQgC,CACZ,CAEE,GAAI/B,EAAM,EAAG,CACXA,GAAO+B,EACP,GAAI/B,EAAM,EAAGA,EAAM,CACvB,MAAS,GAAIA,EAAM+B,EAAK,CACpB/B,EAAM+B,CACV,CAEE,GAAI/B,EAAMD,EAAOC,EAAMD,EAEvB,IAAIw4B,EACJ,GAAI9F,GAAOC,oBAAqB,CAC9B6F,EAAS19B,KAAK29B,SAASz4B,EAAOC,GAC9Bu4B,EAAOxF,UAAYN,GAAO12B,SAC9B,KAAS,CACL,IAAI08B,EAAWz4B,EAAMD,EACrBw4B,EAAS,IAAI9F,GAAOgG,EAAUt9B,WAC9B,IAAK,IAAIga,EAAI,EAAGA,EAAIsjB,IAAYtjB,EAAG,CACjCojB,EAAOpjB,GAAKta,KAAKsa,EAAIpV,EAC3B,CACA,CAEE,OAAOw4B,CACT,EAKA,SAASG,GAAax5B,EAAQy5B,EAAK/4B,GACjC,GAAKV,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI4zB,WAAW,sBAC3D,GAAI5zB,EAASy5B,EAAM/4B,EAAQ,MAAM,IAAIkzB,WAAW,wCAClD,CAEAL,GAAO12B,UAAU68B,WAAa,SAASA,EAAY15B,EAAQ80B,EAAY6E,GACrE35B,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAUH,GAAYx5B,EAAQ80B,EAAYn5B,KAAK+E,QAEpD,IAAIuX,EAAMtc,KAAKqE,GACf,IAAI45B,EAAM,EACV,IAAI3jB,EAAI,EACR,QAASA,EAAI6e,IAAe8E,GAAO,KAAQ,CACzC3hB,GAAOtc,KAAKqE,EAASiW,GAAK2jB,CAC9B,CAEE,OAAO3hB,CACT,EAEAsb,GAAO12B,UAAUg9B,WAAa,SAASA,EAAY75B,EAAQ80B,EAAY6E,GACrE35B,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAU,CACbH,GAAYx5B,EAAQ80B,EAAYn5B,KAAK+E,OACzC,CAEE,IAAIuX,EAAMtc,KAAKqE,IAAW80B,GAC1B,IAAI8E,EAAM,EACV,MAAO9E,EAAa,IAAM8E,GAAO,KAAQ,CACvC3hB,GAAOtc,KAAKqE,IAAW80B,GAAc8E,CACzC,CAEE,OAAO3hB,CACT,EAEAsb,GAAO12B,UAAUi9B,UAAY,SAASA,EAAW95B,EAAQ25B,GACvD,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO/E,KAAKqE,EACd,EAEAuzB,GAAO12B,UAAUk9B,aAAe,SAASA,EAAc/5B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO/E,KAAKqE,GAAWrE,KAAKqE,EAAS,IAAM,CAC7C,EAEAuzB,GAAO12B,UAAU06B,aAAe,SAASA,EAAcv3B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAQ/E,KAAKqE,IAAW,EAAKrE,KAAKqE,EAAS,EAC7C,EAEAuzB,GAAO12B,UAAUm9B,aAAe,SAASA,EAAch6B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAE3C,OAAS/E,KAAKqE,GACTrE,KAAKqE,EAAS,IAAM,EACpBrE,KAAKqE,EAAS,IAAM,IACpBrE,KAAKqE,EAAS,GAAK,QAC1B,EAEAuzB,GAAO12B,UAAUo9B,aAAe,SAASA,EAAcj6B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAE3C,OAAQ/E,KAAKqE,GAAU,UACnBrE,KAAKqE,EAAS,IAAM,GACrBrE,KAAKqE,EAAS,IAAM,EACrBrE,KAAKqE,EAAS,GAClB,EAEAuzB,GAAO12B,UAAUq9B,UAAY,SAASA,EAAWl6B,EAAQ80B,EAAY6E,GACnE35B,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAUH,GAAYx5B,EAAQ80B,EAAYn5B,KAAK+E,QAEpD,IAAIuX,EAAMtc,KAAKqE,GACf,IAAI45B,EAAM,EACV,IAAI3jB,EAAI,EACR,QAASA,EAAI6e,IAAe8E,GAAO,KAAQ,CACzC3hB,GAAOtc,KAAKqE,EAASiW,GAAK2jB,CAC9B,CACEA,GAAO,IAEP,GAAI3hB,GAAO2hB,EAAK3hB,GAAOhX,KAAKC,IAAI,EAAG,EAAI4zB,GAEvC,OAAO7c,CACT,EAEAsb,GAAO12B,UAAUs9B,UAAY,SAASA,EAAWn6B,EAAQ80B,EAAY6E,GACnE35B,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAUH,GAAYx5B,EAAQ80B,EAAYn5B,KAAK+E,QAEpD,IAAIuV,EAAI6e,EACR,IAAI8E,EAAM,EACV,IAAI3hB,EAAMtc,KAAKqE,IAAWiW,GAC1B,MAAOA,EAAI,IAAM2jB,GAAO,KAAQ,CAC9B3hB,GAAOtc,KAAKqE,IAAWiW,GAAK2jB,CAChC,CACEA,GAAO,IAEP,GAAI3hB,GAAO2hB,EAAK3hB,GAAOhX,KAAKC,IAAI,EAAG,EAAI4zB,GAEvC,OAAO7c,CACT,EAEAsb,GAAO12B,UAAUu9B,SAAW,SAASA,EAAUp6B,EAAQ25B,GACrD,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,KAAM/E,KAAKqE,GAAU,KAAO,OAAQrE,KAAKqE,GACzC,OAAS,IAAOrE,KAAKqE,GAAU,IAAM,CACvC,EAEAuzB,GAAO12B,UAAUw9B,YAAc,SAASA,EAAar6B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,IAAIuX,EAAMtc,KAAKqE,GAAWrE,KAAKqE,EAAS,IAAM,EAC9C,OAAQiY,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEAsb,GAAO12B,UAAUy9B,YAAc,SAASA,EAAat6B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,IAAIuX,EAAMtc,KAAKqE,EAAS,GAAMrE,KAAKqE,IAAW,EAC9C,OAAQiY,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEAsb,GAAO12B,UAAU09B,YAAc,SAASA,EAAav6B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAE3C,OAAQ/E,KAAKqE,GACVrE,KAAKqE,EAAS,IAAM,EACpBrE,KAAKqE,EAAS,IAAM,GACpBrE,KAAKqE,EAAS,IAAM,EACzB,EAEAuzB,GAAO12B,UAAU29B,YAAc,SAASA,EAAax6B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAE3C,OAAQ/E,KAAKqE,IAAW,GACrBrE,KAAKqE,EAAS,IAAM,GACpBrE,KAAKqE,EAAS,IAAM,EACpBrE,KAAKqE,EAAS,EACnB,EAEAuzB,GAAO12B,UAAU49B,YAAc,SAASA,EAAaz6B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO6xB,GAAK52B,KAAMqE,EAAQ,KAAM,GAAI,EACtC,EAEAuzB,GAAO12B,UAAU69B,YAAc,SAASA,EAAa16B,EAAQ25B,GAC3D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO6xB,GAAK52B,KAAMqE,EAAQ,MAAO,GAAI,EACvC,EAEAuzB,GAAO12B,UAAU89B,aAAe,SAASA,EAAc36B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO6xB,GAAK52B,KAAMqE,EAAQ,KAAM,GAAI,EACtC,EAEAuzB,GAAO12B,UAAU+9B,aAAe,SAASA,EAAc56B,EAAQ25B,GAC7D,IAAKA,EAAUH,GAAYx5B,EAAQ,EAAGrE,KAAK+E,QAC3C,OAAO6xB,GAAK52B,KAAMqE,EAAQ,MAAO,GAAI,EACvC,EAEA,SAAS66B,GAAUhP,EAAKvxB,EAAO0F,EAAQy5B,EAAKx3B,EAAK0c,GAC/C,IAAKuW,GAAiBrJ,GAAM,MAAM,IAAI9J,UAAU,+CAChD,GAAIznB,EAAQ2H,GAAO3H,EAAQqkB,EAAK,MAAM,IAAIiV,WAAW,qCACrD,GAAI5zB,EAASy5B,EAAM5N,EAAInrB,OAAQ,MAAM,IAAIkzB,WAAW,qBACtD,CAEAL,GAAO12B,UAAUi+B,YAAc,SAASA,EAAaxgC,EAAO0F,EAAQ80B,EAAY6E,GAC9Er/B,GAASA,EACT0F,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAU,CACb,IAAIoB,EAAW95B,KAAKC,IAAI,EAAG,EAAI4zB,GAAc,EAC7C+F,GAASl/B,KAAMrB,EAAO0F,EAAQ80B,EAAYiG,EAAU,EACxD,CAEE,IAAInB,EAAM,EACV,IAAI3jB,EAAI,EACRta,KAAKqE,GAAU1F,EAAQ,IACvB,QAAS2b,EAAI6e,IAAe8E,GAAO,KAAQ,CACzCj+B,KAAKqE,EAASiW,GAAM3b,EAAQs/B,EAAO,GACvC,CAEE,OAAO55B,EAAS80B,CAClB,EAEAvB,GAAO12B,UAAUm+B,YAAc,SAASA,EAAa1gC,EAAO0F,EAAQ80B,EAAY6E,GAC9Er/B,GAASA,EACT0F,EAASA,EAAS,EAClB80B,EAAaA,EAAa,EAC1B,IAAK6E,EAAU,CACb,IAAIoB,EAAW95B,KAAKC,IAAI,EAAG,EAAI4zB,GAAc,EAC7C+F,GAASl/B,KAAMrB,EAAO0F,EAAQ80B,EAAYiG,EAAU,EACxD,CAEE,IAAI9kB,EAAI6e,EAAa,EACrB,IAAI8E,EAAM,EACVj+B,KAAKqE,EAASiW,GAAK3b,EAAQ,IAC3B,QAAS2b,GAAK,IAAM2jB,GAAO,KAAQ,CACjCj+B,KAAKqE,EAASiW,GAAM3b,EAAQs/B,EAAO,GACvC,CAEE,OAAO55B,EAAS80B,CAClB,EAEAvB,GAAO12B,UAAUo+B,WAAa,SAASA,EAAY3gC,EAAO0F,EAAQ25B,GAChEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,IAAM,GACtD,IAAKuzB,GAAOC,oBAAqBl5B,EAAQ2G,KAAKmyB,MAAM94B,GACpDqB,KAAKqE,GAAW1F,EAAQ,IACxB,OAAO0F,EAAS,CAClB,EAEA,SAASk7B,GAAmBrP,EAAKvxB,EAAO0F,EAAQm7B,GAC9C,GAAI7gC,EAAQ,EAAGA,EAAQ,MAASA,EAAQ,EACxC,IAAK,IAAI2b,EAAI,EAAGmY,EAAIntB,KAAK0d,IAAIkN,EAAInrB,OAASV,EAAQ,GAAIiW,EAAImY,IAAKnY,EAAG,CAChE4V,EAAI7rB,EAASiW,IAAM3b,EAAS,KAAS,GAAK6gC,EAAellB,EAAI,EAAIA,OAC9DklB,EAAellB,EAAI,EAAIA,GAAK,CACnC,CACA,CAEAsd,GAAO12B,UAAUu+B,cAAgB,SAASA,EAAe9gC,EAAO0F,EAAQ25B,GACtEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,MAAQ,GACxD,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,EAAQ,IACxBqB,KAAKqE,EAAS,GAAM1F,IAAU,CAClC,KAAS,CACL4gC,GAAkBv/B,KAAMrB,EAAO0F,EAAQ,KAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAUw+B,cAAgB,SAASA,EAAe/gC,EAAO0F,EAAQ25B,GACtEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,MAAQ,GACxD,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,IAAU,EAC1BqB,KAAKqE,EAAS,GAAM1F,EAAQ,GAChC,KAAS,CACL4gC,GAAkBv/B,KAAMrB,EAAO0F,EAAQ,MAC3C,CACE,OAAOA,EAAS,CAClB,EAEA,SAASs7B,GAAmBzP,EAAKvxB,EAAO0F,EAAQm7B,GAC9C,GAAI7gC,EAAQ,EAAGA,EAAQ,WAAaA,EAAQ,EAC5C,IAAK,IAAI2b,EAAI,EAAGmY,EAAIntB,KAAK0d,IAAIkN,EAAInrB,OAASV,EAAQ,GAAIiW,EAAImY,IAAKnY,EAAG,CAChE4V,EAAI7rB,EAASiW,GAAM3b,KAAW6gC,EAAellB,EAAI,EAAIA,GAAK,EAAK,GACnE,CACA,CAEAsd,GAAO12B,UAAU0+B,cAAgB,SAASA,EAAejhC,EAAO0F,EAAQ25B,GACtEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,WAAY,GAC5D,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,EAAS,GAAM1F,IAAU,GAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,GAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,EAC9BqB,KAAKqE,GAAW1F,EAAQ,GAC5B,KAAS,CACLghC,GAAkB3/B,KAAMrB,EAAO0F,EAAQ,KAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAU2+B,cAAgB,SAASA,EAAelhC,EAAO0F,EAAQ25B,GACtEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,WAAY,GAC5D,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,IAAU,GAC1BqB,KAAKqE,EAAS,GAAM1F,IAAU,GAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,EAC9BqB,KAAKqE,EAAS,GAAM1F,EAAQ,GAChC,KAAS,CACLghC,GAAkB3/B,KAAMrB,EAAO0F,EAAQ,MAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAU4+B,WAAa,SAASA,EAAYnhC,EAAO0F,EAAQ80B,EAAY6E,GAC5Er/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAU,CACb,IAAIxd,EAAQlb,KAAKC,IAAI,EAAG,EAAI4zB,EAAa,GAEzC+F,GAASl/B,KAAMrB,EAAO0F,EAAQ80B,EAAY3Y,EAAQ,GAAIA,EAC1D,CAEE,IAAIlG,EAAI,EACR,IAAI2jB,EAAM,EACV,IAAI8B,EAAM,EACV//B,KAAKqE,GAAU1F,EAAQ,IACvB,QAAS2b,EAAI6e,IAAe8E,GAAO,KAAQ,CACzC,GAAIt/B,EAAQ,GAAKohC,IAAQ,GAAK//B,KAAKqE,EAASiW,EAAI,KAAO,EAAG,CACxDylB,EAAM,CACZ,CACI//B,KAAKqE,EAASiW,IAAO3b,EAAQs/B,GAAQ,GAAK8B,EAAM,GACpD,CAEE,OAAO17B,EAAS80B,CAClB,EAEAvB,GAAO12B,UAAU8+B,WAAa,SAASA,EAAYrhC,EAAO0F,EAAQ80B,EAAY6E,GAC5Er/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAU,CACb,IAAIxd,EAAQlb,KAAKC,IAAI,EAAG,EAAI4zB,EAAa,GAEzC+F,GAASl/B,KAAMrB,EAAO0F,EAAQ80B,EAAY3Y,EAAQ,GAAIA,EAC1D,CAEE,IAAIlG,EAAI6e,EAAa,EACrB,IAAI8E,EAAM,EACV,IAAI8B,EAAM,EACV//B,KAAKqE,EAASiW,GAAK3b,EAAQ,IAC3B,QAAS2b,GAAK,IAAM2jB,GAAO,KAAQ,CACjC,GAAIt/B,EAAQ,GAAKohC,IAAQ,GAAK//B,KAAKqE,EAASiW,EAAI,KAAO,EAAG,CACxDylB,EAAM,CACZ,CACI//B,KAAKqE,EAASiW,IAAO3b,EAAQs/B,GAAQ,GAAK8B,EAAM,GACpD,CAEE,OAAO17B,EAAS80B,CAClB,EAEAvB,GAAO12B,UAAU++B,UAAY,SAASA,EAAWthC,EAAO0F,EAAQ25B,GAC9Dr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,KAAO,KACvD,IAAKuzB,GAAOC,oBAAqBl5B,EAAQ2G,KAAKmyB,MAAM94B,GACpD,GAAIA,EAAQ,EAAGA,EAAQ,IAAOA,EAAQ,EACtCqB,KAAKqE,GAAW1F,EAAQ,IACxB,OAAO0F,EAAS,CAClB,EAEAuzB,GAAO12B,UAAUg/B,aAAe,SAASA,EAAcvhC,EAAO0F,EAAQ25B,GACpEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,OAAS,OACzD,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,EAAQ,IACxBqB,KAAKqE,EAAS,GAAM1F,IAAU,CAClC,KAAS,CACL4gC,GAAkBv/B,KAAMrB,EAAO0F,EAAQ,KAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAUi/B,aAAe,SAASA,EAAcxhC,EAAO0F,EAAQ25B,GACpEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,OAAS,OACzD,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,IAAU,EAC1BqB,KAAKqE,EAAS,GAAM1F,EAAQ,GAChC,KAAS,CACL4gC,GAAkBv/B,KAAMrB,EAAO0F,EAAQ,MAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAUk/B,aAAe,SAASA,EAAczhC,EAAO0F,EAAQ25B,GACpEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,YAAa,YAC7D,GAAIuzB,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,EAAQ,IACxBqB,KAAKqE,EAAS,GAAM1F,IAAU,EAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,GAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,EAClC,KAAS,CACLghC,GAAkB3/B,KAAMrB,EAAO0F,EAAQ,KAC3C,CACE,OAAOA,EAAS,CAClB,EAEAuzB,GAAO12B,UAAUm/B,aAAe,SAASA,EAAc1hC,EAAO0F,EAAQ25B,GACpEr/B,GAASA,EACT0F,EAASA,EAAS,EAClB,IAAK25B,EAAUkB,GAASl/B,KAAMrB,EAAO0F,EAAQ,EAAG,YAAa,YAC7D,GAAI1F,EAAQ,EAAGA,EAAQ,WAAaA,EAAQ,EAC5C,GAAIi5B,GAAOC,oBAAqB,CAC9B73B,KAAKqE,GAAW1F,IAAU,GAC1BqB,KAAKqE,EAAS,GAAM1F,IAAU,GAC9BqB,KAAKqE,EAAS,GAAM1F,IAAU,EAC9BqB,KAAKqE,EAAS,GAAM1F,EAAQ,GAChC,KAAS,CACLghC,GAAkB3/B,KAAMrB,EAAO0F,EAAQ,MAC3C,CACE,OAAOA,EAAS,CAClB,EAEA,SAASi8B,GAAcpQ,EAAKvxB,EAAO0F,EAAQy5B,EAAKx3B,EAAK0c,GACnD,GAAI3e,EAASy5B,EAAM5N,EAAInrB,OAAQ,MAAM,IAAIkzB,WAAW,sBACpD,GAAI5zB,EAAS,EAAG,MAAM,IAAI4zB,WAAW,qBACvC,CAEA,SAASsI,GAAYrQ,EAAKvxB,EAAO0F,EAAQm7B,EAAcxB,GACrD,IAAKA,EAAU,CACbsC,GAAapQ,EAAKvxB,EAAO0F,EAAQ,EACrC,CACEF,GAAM+rB,EAAKvxB,EAAO0F,EAAQm7B,EAAc,GAAI,GAC5C,OAAOn7B,EAAS,CAClB,CAEAuzB,GAAO12B,UAAUs/B,aAAe,SAASA,EAAc7hC,EAAO0F,EAAQ25B,GACpE,OAAOuC,GAAWvgC,KAAMrB,EAAO0F,EAAQ,KAAM25B,EAC/C,EAEApG,GAAO12B,UAAUu/B,aAAe,SAASA,EAAc9hC,EAAO0F,EAAQ25B,GACpE,OAAOuC,GAAWvgC,KAAMrB,EAAO0F,EAAQ,MAAO25B,EAChD,EAEA,SAAS0C,GAAaxQ,EAAKvxB,EAAO0F,EAAQm7B,EAAcxB,GACtD,IAAKA,EAAU,CACbsC,GAAapQ,EAAKvxB,EAAO0F,EAAQ,EACrC,CACEF,GAAM+rB,EAAKvxB,EAAO0F,EAAQm7B,EAAc,GAAI,GAC5C,OAAOn7B,EAAS,CAClB,CAEAuzB,GAAO12B,UAAUy/B,cAAgB,SAASA,EAAehiC,EAAO0F,EAAQ25B,GACtE,OAAO0C,GAAY1gC,KAAMrB,EAAO0F,EAAQ,KAAM25B,EAChD,EAEApG,GAAO12B,UAAU0/B,cAAgB,SAASA,EAAejiC,EAAO0F,EAAQ25B,GACtE,OAAO0C,GAAY1gC,KAAMrB,EAAO0F,EAAQ,MAAO25B,EACjD,EAGApG,GAAO12B,UAAUs4B,KAAO,SAASA,EAAMlS,EAAQuZ,EAAa37B,EAAOC,GACjE,IAAKD,EAAOA,EAAQ,EACpB,IAAKC,GAAOA,IAAQ,EAAGA,EAAMnF,KAAK+E,OAClC,GAAI87B,GAAevZ,EAAOviB,OAAQ87B,EAAcvZ,EAAOviB,OACvD,IAAK87B,EAAaA,EAAc,EAChC,GAAI17B,EAAM,GAAKA,EAAMD,EAAOC,EAAMD,EAGlC,GAAIC,IAAQD,EAAO,OAAO,EAC1B,GAAIoiB,EAAOviB,SAAW,GAAK/E,KAAK+E,SAAW,EAAG,OAAO,EAGrD,GAAI87B,EAAc,EAAG,CACnB,MAAM,IAAI5I,WAAW,4BACzB,CACE,GAAI/yB,EAAQ,GAAKA,GAASlF,KAAK+E,OAAQ,MAAM,IAAIkzB,WAAW,6BAC5D,GAAI9yB,EAAM,EAAG,MAAM,IAAI8yB,WAAW,2BAGlC,GAAI9yB,EAAMnF,KAAK+E,OAAQI,EAAMnF,KAAK+E,OAClC,GAAIuiB,EAAOviB,OAAS87B,EAAc17B,EAAMD,EAAO,CAC7CC,EAAMmiB,EAAOviB,OAAS87B,EAAc37B,CACxC,CAEE,IAAIgC,EAAM/B,EAAMD,EAChB,IAAIoV,EAEJ,GAAIta,OAASsnB,GAAUpiB,EAAQ27B,GAAeA,EAAc17B,EAAK,CAE/D,IAAKmV,EAAIpT,EAAM,EAAGoT,GAAK,IAAKA,EAAG,CAC7BgN,EAAOhN,EAAIumB,GAAe7gC,KAAKsa,EAAIpV,EACzC,CACA,MAAS,GAAIgC,EAAM,MAAS0wB,GAAOC,oBAAqB,CAEpD,IAAKvd,EAAI,EAAGA,EAAIpT,IAAOoT,EAAG,CACxBgN,EAAOhN,EAAIumB,GAAe7gC,KAAKsa,EAAIpV,EACzC,CACA,KAAS,CACLqE,WAAWrI,UAAUyyB,IAAIvyB,KACvBkmB,EACAtnB,KAAK29B,SAASz4B,EAAOA,EAAQgC,GAC7B25B,EAEN,CAEE,OAAO35B,CACT,EAMA0wB,GAAO12B,UAAU63B,KAAO,SAASA,EAAMzc,EAAKpX,EAAOC,EAAK6zB,GAEtD,UAAW1c,IAAQ,SAAU,CAC3B,UAAWpX,IAAU,SAAU,CAC7B8zB,EAAW9zB,EACXA,EAAQ,EACRC,EAAMnF,KAAK+E,MACjB,MAAW,UAAWI,IAAQ,SAAU,CAClC6zB,EAAW7zB,EACXA,EAAMnF,KAAK+E,MACjB,CACI,GAAIuX,EAAIvX,SAAW,EAAG,CACpB,IAAIrC,EAAO4Z,EAAItd,WAAW,GAC1B,GAAI0D,EAAO,IAAK,CACd4Z,EAAM5Z,CACd,CACA,CACI,GAAIs2B,IAAa14B,kBAAoB04B,IAAa,SAAU,CAC1D,MAAM,IAAI5S,UAAU,4BAC1B,CACI,UAAW4S,IAAa,WAAapB,GAAOsB,WAAWF,GAAW,CAChE,MAAM,IAAI5S,UAAU,qBAAuB4S,EACjD,CACA,MAAS,UAAW1c,IAAQ,SAAU,CAClCA,EAAMA,EAAM,GAChB,CAGE,GAAIpX,EAAQ,GAAKlF,KAAK+E,OAASG,GAASlF,KAAK+E,OAASI,EAAK,CACzD,MAAM,IAAI8yB,WAAW,qBACzB,CAEE,GAAI9yB,GAAOD,EAAO,CAChB,OAAOlF,IACX,CAEEkF,EAAQA,IAAU,EAClBC,EAAMA,IAAQ7E,UAAYN,KAAK+E,OAASI,IAAQ,EAEhD,IAAKmX,EAAKA,EAAM,EAEhB,IAAIhC,EACJ,UAAWgC,IAAQ,SAAU,CAC3B,IAAKhC,EAAIpV,EAAOoV,EAAInV,IAAOmV,EAAG,CAC5Bta,KAAKsa,GAAKgC,CAChB,CACA,KAAS,CACL,IAAImhB,EAAQlE,GAAiBjd,GACzBA,EACA2d,GAAY,IAAIrC,GAAOtb,EAAK0c,GAAUjd,YAC1C,IAAI7U,EAAMu2B,EAAM14B,OAChB,IAAKuV,EAAI,EAAGA,EAAInV,EAAMD,IAASoV,EAAG,CAChCta,KAAKsa,EAAIpV,GAASu4B,EAAMnjB,EAAIpT,EAClC,CACA,CAEE,OAAOlH,IACT,EAKA,IAAI8gC,GAAoB,qBAExB,SAASC,GAAa38B,GAEpBA,EAAM48B,GAAW58B,GAAKsY,QAAQokB,GAAmB,IAEjD,GAAI18B,EAAIW,OAAS,EAAG,MAAO,GAE3B,MAAOX,EAAIW,OAAS,IAAM,EAAG,CAC3BX,EAAMA,EAAM,GAChB,CACE,OAAOA,CACT,CAEA,SAAS48B,GAAY58B,GACnB,GAAIA,EAAIohB,KAAM,OAAOphB,EAAIohB,OACzB,OAAOphB,EAAIsY,QAAQ,aAAc,GACnC,CAEA,SAAS8gB,GAAO7C,GACd,GAAIA,EAAI,GAAI,MAAO,IAAMA,EAAE5e,SAAS,IACpC,OAAO4e,EAAE5e,SAAS,GACpB,CAEA,SAASke,GAAa9T,EAAQ8a,GAC5BA,EAAQA,GAASxgB,SACjB,IAAIhhB,EACJ,IAAIsF,EAASohB,EAAOphB,OACpB,IAAIm8B,EAAgB,KACpB,IAAIzD,EAAQ,GAEZ,IAAK,IAAInjB,EAAI,EAAGA,EAAIvV,IAAUuV,EAAG,CAC/B7a,EAAY0mB,EAAOnnB,WAAWsb,GAG9B,GAAI7a,EAAY,OAAUA,EAAY,MAAQ,CAE5C,IAAKyhC,EAAe,CAElB,GAAIzhC,EAAY,MAAQ,CAEtB,IAAKwhC,GAAS,IAAM,EAAGxD,EAAMvoB,KAAK,IAAM,IAAM,KAC9C,QACV,MAAe,GAAIoF,EAAI,IAAMvV,EAAQ,CAE3B,IAAKk8B,GAAS,IAAM,EAAGxD,EAAMvoB,KAAK,IAAM,IAAM,KAC9C,QACV,CAGQgsB,EAAgBzhC,EAEhB,QACR,CAGM,GAAIA,EAAY,MAAQ,CACtB,IAAKwhC,GAAS,IAAM,EAAGxD,EAAMvoB,KAAK,IAAM,IAAM,KAC9CgsB,EAAgBzhC,EAChB,QACR,CAGMA,GAAayhC,EAAgB,OAAU,GAAKzhC,EAAY,OAAU,KACxE,MAAW,GAAIyhC,EAAe,CAExB,IAAKD,GAAS,IAAM,EAAGxD,EAAMvoB,KAAK,IAAM,IAAM,IACpD,CAEIgsB,EAAgB,KAGhB,GAAIzhC,EAAY,IAAM,CACpB,IAAKwhC,GAAS,GAAK,EAAG,MACtBxD,EAAMvoB,KAAKzV,EACjB,MAAW,GAAIA,EAAY,KAAO,CAC5B,IAAKwhC,GAAS,GAAK,EAAG,MACtBxD,EAAMvoB,KACJzV,GAAa,EAAM,IACnBA,EAAY,GAAO,IAE3B,MAAW,GAAIA,EAAY,MAAS,CAC9B,IAAKwhC,GAAS,GAAK,EAAG,MACtBxD,EAAMvoB,KACJzV,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,IAE3B,MAAW,GAAIA,EAAY,QAAU,CAC/B,IAAKwhC,GAAS,GAAK,EAAG,MACtBxD,EAAMvoB,KACJzV,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,IAE3B,KAAW,CACL,MAAM,IAAIoX,MAAM,qBACtB,CACA,CAEE,OAAO4mB,CACT,CAEA,SAASnB,GAAcl4B,GACrB,IAAI+8B,EAAY,GAChB,IAAK,IAAI7mB,EAAI,EAAGA,EAAIlW,EAAIW,SAAUuV,EAAG,CAEnC6mB,EAAUjsB,KAAK9Q,EAAIpF,WAAWsb,GAAK,IACvC,CACE,OAAO6mB,CACT,CAEA,SAASzE,GAAgBt4B,EAAK68B,GAC5B,IAAIliC,EAAG0I,EAAID,EACX,IAAI25B,EAAY,GAChB,IAAK,IAAI7mB,EAAI,EAAGA,EAAIlW,EAAIW,SAAUuV,EAAG,CACnC,IAAK2mB,GAAS,GAAK,EAAG,MAEtBliC,EAAIqF,EAAIpF,WAAWsb,GACnB7S,EAAK1I,GAAK,EACVyI,EAAKzI,EAAI,IACToiC,EAAUjsB,KAAK1N,GACf25B,EAAUjsB,KAAKzN,EACnB,CAEE,OAAO05B,CACT,CAGA,SAASjH,GAAe91B,GACtB,OAAO0xB,GAAYiL,GAAY38B,GACjC,CAEA,SAASg4B,GAAYgF,EAAKC,EAAKh9B,EAAQU,GACrC,IAAK,IAAIuV,EAAI,EAAGA,EAAIvV,IAAUuV,EAAG,CAC/B,GAAKA,EAAIjW,GAAUg9B,EAAIt8B,QAAYuV,GAAK8mB,EAAIr8B,OAAS,MACrDs8B,EAAI/mB,EAAIjW,GAAU+8B,EAAI9mB,EAC1B,CACE,OAAOA,CACT,CAEA,SAASmf,GAAOnd,GACd,OAAOA,IAAQA,CACjB,CAMA,SAASod,GAASjU,GAChB,OAAOA,GAAO,SAAWA,EAAIkU,WAAa2H,GAAa7b,IAAQ8b,GAAa9b,GAC9E,CAEA,SAAS6b,GAAc7b,GACrB,QAASA,EAAI3b,oBAAsB2b,EAAI3b,YAAY4vB,WAAa,YAAcjU,EAAI3b,YAAY4vB,SAASjU,EACzG,CAGA,SAAS8b,GAAc9b,GACrB,cAAcA,EAAIqZ,cAAgB,mBAAqBrZ,EAAIxe,QAAU,YAAcq6B,GAAa7b,EAAIxe,MAAM,EAAG,GAC/G,CC17DA,IAAIu6B,GACF,mEACF,IAAIC,GAAiB,CAACC,EAAUC,EAAc,KACrC,CAAC9I,EAAO8I,KACb,IAAIzf,EAAK,GACT,IAAI5H,EAAIue,EACR,MAAOve,IAAK,CACV4H,GAAMwf,EAAUp8B,KAAKs8B,SAAWF,EAAS38B,OAAU,EACzD,CACI,OAAOmd,GAGX,IAAI2f,GAAS,CAAChJ,EAAO,MACnB,IAAI3W,EAAK,GACT,IAAI5H,EAAIue,EACR,MAAOve,IAAK,CACV4H,GAAMsf,GAAal8B,KAAKs8B,SAAW,GAAM,EAC7C,CACE,OAAO1f,G,oFChBT,IAAI4f,kBAAEA,GAAiBC,mBAAEA,IAAuB9/B,GAChD,IAAI+/B,WAAEA,GAAUC,aAAEA,IAAiB9/B,GACnC,IAAI+/B,QAAEA,GAAOjlB,KAAEA,IAAS5a,GAExB,SAAS8/B,GAAW/9B,GAClB,GAAIwzB,GAAQ,CACV,OAAOA,GAAO9E,KAAK1uB,EAAK,UAAU2X,UACtC,KAAS,CAEL,OAAOyZ,OAAO4M,KAAKh+B,EACvB,CACA,CAEA,MAAMi+B,GACJ,WAAAv4B,CAAY+jB,EAAKjR,GACf,GAAIA,EAAK9d,MAAQ,MAAO,OACxBkB,KAAKsiC,eAAezU,GACpB7tB,KAAKuiC,OAASviC,KAAKwiC,UAAUxiC,KAAKyiC,WAAY,SAE9C,IAAI3qB,EAAO8E,EAAK9d,IAAM8d,EAAK9d,IAAIgZ,KAAOxX,UACtC,IAAI+a,EAAOrb,KAAK0iC,QAAQ9lB,EAAKkW,KAAMhb,GACnC,IAAK9X,KAAK2iC,SAAW/lB,EAAKkW,KAAM,CAC9B9yB,KAAK2iC,QAAU/lB,EAAKkW,IAC1B,CACI,GAAI9yB,KAAK2iC,QAAS3iC,KAAK8a,KAAOonB,GAAQliC,KAAK2iC,SAC3C,GAAItnB,EAAMrb,KAAKqb,KAAOA,CAC1B,CAEE,QAAAunB,GACE,IAAK5iC,KAAK6iC,cAAe,CACvB7iC,KAAK6iC,cAAgB,IAAIf,GAAkB9hC,KAAKqb,KACtD,CACI,OAAOrb,KAAK6iC,aAChB,CAEE,YAAAC,CAAaznB,GACX,IAAI0nB,EAAiB,iDACrB,IAAIC,EAAU,kCACd,IAAIC,EAAa,0CACjB,IAAIC,EAAM,2BAEV,GAAID,EAAW3iB,KAAKjF,IAAS6nB,EAAI5iB,KAAKjF,GAAO,CAC3C,OAAO8nB,mBAAmB9nB,EAAK5V,OAAO29B,OAAOC,UAAUt+B,QAC7D,CAEI,GAAIg+B,EAAeziB,KAAKjF,IAAS2nB,EAAQ1iB,KAAKjF,GAAO,CACnD,OAAO8mB,GAAW9mB,EAAK5V,OAAO29B,OAAOC,UAAUt+B,QACrD,CAEI,IAAIi0B,EAAW3d,EAAKO,MAAM,mCAAmC,GAC7D,MAAM,IAAI/E,MAAM,mCAAqCmiB,EACzD,CAEE,gBAAAsK,CAAiBC,GACf,OAAOA,EAAgB7mB,QAAQ,8BAA+B,IAAI8I,MACtE,CAEE,KAAAge,CAAM1kC,GACJ,UAAWA,IAAQ,SAAU,OAAO,MACpC,cACSA,EAAI2kC,WAAa,iBACjB3kC,EAAI4kC,YAAc,UACzB9kB,MAAMC,QAAQ/f,EAAI6kC,SAExB,CAEE,cAAArB,CAAezU,GACb,IAAI+V,EAAW/V,EAAIjS,MAAM,gCACzB,IAAKgoB,EAAU,OAGf,IAAI1+B,EAAQ2oB,EAAIrY,YAAYouB,EAAS3uB,OACrC,IAAI9P,EAAM0oB,EAAI7mB,QAAQ,KAAM9B,GAE5B,GAAIA,GAAS,GAAKC,GAAO,EAAG,CAE1BnF,KAAKyiC,WAAaziC,KAAKsjC,iBAAiBzV,EAAI/R,UAAU5W,EAAOC,GACnE,CACA,CAEE,QAAA0+B,CAASC,GACP9jC,KAAK8a,KAAOonB,GAAQ4B,GACpB,GAAI9B,GAAW8B,GAAO,CACpB9jC,KAAK2iC,QAAUmB,EACf,OAAO7B,GAAa6B,EAAM,SAAS/nB,WAAWyJ,MACpD,CACA,CAEE,OAAAkd,CAAQtV,EAAMtV,GACZ,GAAIA,IAAS,MAAO,OAAO,MAE3B,GAAIA,EAAM,CACR,UAAWA,IAAS,SAAU,CAC5B,OAAOA,CACf,MAAa,UAAWA,IAAS,WAAY,CACrC,IAAIisB,EAAWjsB,EAAKsV,GACpB,GAAI2W,EAAU,CACZ,IAAIjlC,EAAMkB,KAAK6jC,SAASE,GACxB,IAAKjlC,EAAK,CACR,MAAM,IAAI+X,MACR,uCAAyCktB,EAAShoB,WAEhE,CACU,OAAOjd,CACjB,CACA,MAAa,GAAIgZ,aAAgBgqB,GAAmB,CAC5C,OAAOC,GAAmBiC,cAAclsB,GAAMiE,UACtD,MAAa,GAAIjE,aAAgBiqB,GAAoB,CAC7C,OAAOjqB,EAAKiE,UACpB,MAAa,GAAI/b,KAAKwjC,MAAM1rB,GAAO,CAC3B,OAAOmsB,KAAKzT,UAAU1Y,EAC9B,KAAa,CACL,MAAM,IAAIjB,MACR,2CAA6CiB,EAAKiE,WAE5D,CACA,MAAW,GAAI/b,KAAKuiC,OAAQ,CACtB,OAAOviC,KAAK8iC,aAAa9iC,KAAKyiC,WACpC,MAAW,GAAIziC,KAAKyiC,WAAY,CAC1B,IAAI3jC,EAAMkB,KAAKyiC,WACf,GAAIrV,EAAMtuB,EAAMme,GAAKilB,GAAQ9U,GAAOtuB,GACpC,OAAOkB,KAAK6jC,SAAS/kC,EAC3B,CACA,CAEE,SAAA0jC,CAAUrc,EAAQjhB,GAChB,IAAKihB,EAAQ,OAAO,MACpB,OAAOA,EAAO1gB,OAAO,EAAGP,EAAMH,UAAYG,CAC9C,CAEE,WAAAg/B,GACE,SACElkC,KAAK4iC,WAAWuB,gBAChBnkC,KAAK4iC,WAAWuB,eAAep/B,OAAS,EAE9C,E,IAGAq/B,GAAiB/B,GACjBA,GAAYviC,QAAUuiC,GC3ItB,IAAIP,kBAAEA,GAAiBC,mBAAEA,IAAuB9/B,GAChD,IAAIoiC,cAAEA,GAAaC,cAAEA,IAAkBniC,GACvC,IAAIoiC,WAAEA,GAAUC,QAAEA,IAAYniC,GAC9B,IAAIw/B,OAAEA,IAAWtP,GAEjB,IAAIxF,GAAoB0X,GACxB,IAAIzX,GAAiB0X,GACrB,IAAIrC,GAAcsC,GAElB,IAAIC,GAAkB9d,OAAO,mBAE7B,IAAI+d,GAAqBC,QAAQhD,IAAqBC,IACtD,IAAIgD,GAAgBD,QAAQN,IAAWD,IAEvC,MAAMS,GACJ,WAAAl7B,CAAY+jB,EAAKjR,EAAO,IACtB,GACEiR,IAAQ,aACDA,IAAQ,oBACPA,IAAQ,WAAaA,EAAI9R,SACjC,CACA,MAAM,IAAIlF,MAAM,oBAAoBgX,0BAC1C,CAEI7tB,KAAK6tB,IAAMA,EAAI9R,WAEf,GAAI/b,KAAK6tB,IAAI,KAAO,UAAY7tB,KAAK6tB,IAAI,KAAO,IAAU,CACxD7tB,KAAKilC,OAAS,KACdjlC,KAAK6tB,IAAM7tB,KAAK6tB,IAAI5mB,MAAM,EAChC,KAAW,CACLjH,KAAKilC,OAAS,KACpB,CAEI,GAAIroB,EAAKkW,KAAM,CACb,IACGiS,IACD,YAAYzkB,KAAK1D,EAAKkW,OACtByR,GAAW3nB,EAAKkW,MAChB,CACA9yB,KAAKotB,KAAOxQ,EAAKkW,IACzB,KAAa,CACL9yB,KAAKotB,KAAOoX,GAAQ5nB,EAAKkW,KACjC,CACA,CAEI,GAAIiS,IAAiBF,GAAoB,CACvC,IAAI/lC,EAAM,IAAIujC,GAAYriC,KAAK6tB,IAAKjR,GACpC,GAAI9d,EAAIuc,KAAM,CACZrb,KAAKlB,IAAMA,EACX,IAAIsuB,EAAOtuB,EAAI8jC,WAAWxV,KAC1B,IAAKptB,KAAKotB,MAAQA,EAAMptB,KAAKotB,KAAOptB,KAAKklC,WAAW9X,EAC5D,CACA,CAEI,IAAKptB,KAAKotB,KAAM,CACdptB,KAAKkiB,GAAK,cAAgB2f,GAAO,GAAK,GAC5C,CACI,GAAI7hC,KAAKlB,IAAKkB,KAAKlB,IAAIsuB,KAAOptB,KAAK8yB,IACvC,CAEE,KAAA3X,CAAM8R,EAASC,EAAMC,EAAQvQ,EAAO,IAClC,IAAI3b,EAAQssB,EAASC,EAErB,GAAIN,UAAeA,IAAS,SAAU,CACpC,IAAIhoB,EAAQgoB,EACZ,IAAI/nB,EAAMgoB,EACV,UAAWjoB,EAAMb,SAAW,SAAU,CACpC,IAAIkR,EAAMvV,KAAKmlC,WAAWjgC,EAAMb,QAChC6oB,EAAO3X,EAAI2X,KACXC,EAAS5X,EAAI6vB,GACrB,KAAa,CACLlY,EAAOhoB,EAAMgoB,KACbC,EAASjoB,EAAMioB,MACvB,CACM,UAAWhoB,EAAId,SAAW,SAAU,CAClC,IAAIkR,EAAMvV,KAAKmlC,WAAWhgC,EAAId,QAC9BkpB,EAAUhY,EAAI2X,KACdM,EAAYjY,EAAI6vB,GACxB,KAAa,CACL7X,EAAUpoB,EAAI+nB,KACdM,EAAYroB,EAAIgoB,MACxB,CACA,MAAW,IAAKA,EAAQ,CAClB,IAAI5X,EAAMvV,KAAKmlC,WAAWjY,GAC1BA,EAAO3X,EAAI2X,KACXC,EAAS5X,EAAI6vB,GACnB,CAEI,IAAIC,EAASrlC,KAAKqlC,OAAOnY,EAAMC,EAAQI,EAASC,GAChD,GAAI6X,EAAQ,CACVpkC,EAAS,IAAI+rB,GACXC,EACAoY,EAAO9X,UAAYjtB,UACf+kC,EAAOnY,KACP,CAAEC,OAAQkY,EAAOlY,OAAQD,KAAMmY,EAAOnY,MAC1CmY,EAAO9X,UAAYjtB,UACf+kC,EAAOlY,OACP,CAAEA,OAAQkY,EAAO7X,UAAWN,KAAMmY,EAAO9X,SAC7C8X,EAAO9d,OACP8d,EAAOjY,KACPxQ,EAAKyQ,OAEb,KAAW,CACLpsB,EAAS,IAAI+rB,GACXC,EACAM,IAAYjtB,UAAY4sB,EAAO,CAAEC,SAAQD,QACzCK,IAAYjtB,UAAY6sB,EAAS,CAAEA,OAAQK,EAAWN,KAAMK,GAC5DvtB,KAAK6tB,IACL7tB,KAAKotB,KACLxQ,EAAKyQ,OAEb,CAEIpsB,EAAOkoB,MAAQ,CAAEgE,SAAQK,YAAWD,UAASL,OAAM3F,OAAQvnB,KAAK6tB,KAChE,GAAI7tB,KAAKotB,KAAM,CACb,GAAIkX,GAAe,CACjBrjC,EAAOkoB,MAAMY,IAAMua,GAActkC,KAAKotB,MAAMrR,UACpD,CACM9a,EAAOkoB,MAAMiE,KAAOptB,KAAKotB,IAC/B,CAEI,OAAOnsB,CACX,CAEE,UAAAkkC,CAAW9gC,GACT,IAAIihC,EAAUC,EACd,IAAKvlC,KAAK4kC,IAAkB,CAC1B,IAAI9W,EAAQ9tB,KAAK6tB,IAAIhvB,MAAM,MAC3B0mC,EAAc,IAAI3mB,MAAMkP,EAAM/oB,QAC9B,IAAIygC,EAAY,EAEhB,IAAK,IAAIlrB,EAAI,EAAG0b,EAAIlI,EAAM/oB,OAAQuV,EAAI0b,EAAG1b,IAAK,CAC5CirB,EAAYjrB,GAAKkrB,EACjBA,GAAa1X,EAAMxT,GAAGvV,OAAS,CACvC,CAEM/E,KAAK4kC,IAAmBW,CAC9B,KAAW,CACLA,EAAcvlC,KAAK4kC,GACzB,CACIU,EAAWC,EAAYA,EAAYxgC,OAAS,GAE5C,IAAIie,EAAM,EACV,GAAI3e,GAAUihC,EAAU,CACtBtiB,EAAMuiB,EAAYxgC,OAAS,CACjC,KAAW,CACL,IAAIuB,EAAMi/B,EAAYxgC,OAAS,EAC/B,IAAI2C,EACJ,MAAOsb,EAAM1c,EAAK,CAChBoB,EAAMsb,GAAQ1c,EAAM0c,GAAQ,GAC5B,GAAI3e,EAASkhC,EAAY79B,GAAM,CAC7BpB,EAAMoB,EAAM,CACtB,MAAe,GAAIrD,GAAUkhC,EAAY79B,EAAM,GAAI,CACzCsb,EAAMtb,EAAM,CACtB,KAAe,CACLsb,EAAMtb,EACN,KACV,CACA,CACA,CACI,MAAO,CACL09B,IAAK/gC,EAASkhC,EAAYviB,GAAO,EACjCkK,KAAMlK,EAAM,EAElB,CAEE,UAAAkiB,CAAW9X,GACT,GAAI,YAAY9M,KAAK8M,GAAO,CAC1B,OAAOA,CACb,CACI,OAAOoX,GAAQxkC,KAAKlB,IAAI8jC,WAAW6C,YAAczlC,KAAKlB,IAAIgc,MAAQ,IAAKsS,EAC3E,CAEE,MAAAiY,CAAOnY,EAAMC,EAAQI,EAASC,GAC5B,IAAKxtB,KAAKlB,IAAK,OAAO,MACtB,IAAI8jC,EAAW5iC,KAAKlB,IAAI8jC,WAExB,IAAI9P,EAAO8P,EAAS8C,oBAAoB,CAAEvY,SAAQD,SAClD,IAAK4F,EAAKvL,OAAQ,OAAO,MAEzB,IAAIoe,EACJ,UAAWpY,IAAY,SAAU,CAC/BoY,EAAK/C,EAAS8C,oBAAoB,CAAEvY,OAAQK,EAAWN,KAAMK,GACnE,CAEI,IAAIqY,EAEJ,GAAIrB,GAAWzR,EAAKvL,QAAS,CAC3Bqe,EAAUtB,GAAcxR,EAAKvL,OACnC,KAAW,CACLqe,EAAU,IAAIC,IACZ/S,EAAKvL,OACLvnB,KAAKlB,IAAI8jC,WAAW6C,YAAcnB,GAActkC,KAAKlB,IAAI6jC,SAEjE,CAEI,IAAI1hC,EAAS,CACXksB,OAAQ2F,EAAK3F,OACbK,UAAWmY,GAAMA,EAAGxY,OACpBI,QAASoY,GAAMA,EAAGzY,KAClBA,KAAM4F,EAAK5F,KACXnD,IAAK6b,EAAQ7pB,YAGf,GAAI6pB,EAAQE,WAAa,QAAS,CAChC,GAAIzB,GAAe,CACjBpjC,EAAOmsB,KAAOiX,GAAcuB,EACpC,KAAa,CAEL,MAAM,IAAI/uB,MAAM,wDACxB,CACA,CAEI,IAAI0Q,EAASqb,EAASmD,iBAAiBjT,EAAKvL,QAC5C,GAAIA,EAAQtmB,EAAOsmB,OAASA,EAE5B,OAAOtmB,CACX,CAEE,MAAAszB,GACE,IAAIyR,EAAO,GACX,IAAK,IAAIrxB,IAAQ,CAAC,SAAU,MAAO,OAAQ,MAAO,CAChD,GAAI3U,KAAK2U,IAAS,KAAM,CACtBqxB,EAAKrxB,GAAQ3U,KAAK2U,EAC1B,CACA,CACI,GAAI3U,KAAKlB,IAAK,CACZknC,EAAKlnC,IAAM,IAAKkB,KAAKlB,KACrB,GAAIknC,EAAKlnC,IAAI+jC,cAAe,CAC1BmD,EAAKlnC,IAAI+jC,cAAgBviC,SACjC,CACA,CACI,OAAO0lC,CACX,CAEE,QAAIlT,GACF,OAAO9yB,KAAKotB,MAAQptB,KAAKkiB,EAC7B,E,IAGAiH,GAAiB6b,GACjBA,GAAMllC,QAAUklC,GAEhB,GAAIjY,IAAqBA,GAAkBkZ,cAAe,CACxDlZ,GAAkBkZ,cAAcjB,GAClC,CCrPA,IAAIlD,kBAAEA,GAAiBC,mBAAEA,IAAuB9/B,GAChD,IAAIigC,QAAEA,GAAOte,SAAEA,GAAQ4gB,QAAEA,GAAO0B,IAAEA,IAAQ/jC,GAC1C,IAAImiC,cAAEA,IAAkBjiC,GAExB,IAAI2iC,GAAQzS,GAEZ,IAAIsS,GAAqBC,QAAQhD,IAAqBC,IACtD,IAAIgD,GAAgBD,QAAQ5C,IAAWsC,IAAW5gB,IAAYsiB,IAE9D,MAAMC,GACJ,WAAAr8B,CAAY0mB,EAAW1V,EAAM8B,EAAMwpB,GACjCpmC,KAAKwwB,UAAYA,EACjBxwB,KAAKqmC,QAAUzpB,EAAK9d,KAAO,GAC3BkB,KAAK8a,KAAOA,EACZ9a,KAAK4c,KAAOA,EACZ5c,KAAK6tB,IAAMuY,EACXpmC,KAAKsmC,YAAcF,EACnBpmC,KAAKumC,cAAgBvmC,KAAKqmC,QAAQvT,MAAQ9yB,KAAKqmC,QAAQG,SAEvDxmC,KAAKymC,iBAAmB,IAAIlnC,IAC5BS,KAAK0mC,cAAgB,IAAInnC,IACzBS,KAAK2mC,aAAe,IAAIpnC,GAC5B,CAEE,aAAAqnC,GACE,IAAIC,EAEJ,GAAI7mC,KAAK8mC,WAAY,CACnBD,EACE,gCAAkC7mC,KAAK+mC,SAAS/mC,KAAKlB,IAAIid,WACjE,MAAW,UAAW/b,KAAKqmC,QAAQ5D,aAAe,SAAU,CACtDoE,EAAU7mC,KAAKqmC,QAAQ5D,UAC7B,MAAW,UAAWziC,KAAKqmC,QAAQ5D,aAAe,WAAY,CACxDoE,EAAU7mC,KAAKqmC,QAAQ5D,WAAWziC,KAAK4c,KAAK+oB,GAAI3lC,KAAK8a,KAC3D,KAAW,CACL+rB,EAAU7mC,KAAKgnC,aAAe,MACpC,CACI,IAAIC,EAAM,KACV,GAAIjnC,KAAK6tB,IAAIrL,SAAS,QAASykB,EAAM,OAErCjnC,KAAK6tB,KAAOoZ,EAAM,wBAA0BJ,EAAU,KAC1D,CAEE,aAAAK,GACE,IAAK,IAAIpvB,KAAQ9X,KAAKmnC,WAAY,CAChC,IAAIrU,EAAO9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAKhsB,EAAKsV,OACrC,IAAItS,EAAOhD,EAAKgD,MAAQonB,GAAQpqB,EAAKsV,MACrC,IAAItuB,EAEJ,GAAIkB,KAAKqmC,QAAQlC,iBAAmB,MAAO,CACzCrlC,EAAM,IAAIgjC,GAAkBhqB,EAAKuD,MACjC,GAAIvc,EAAIqlC,eAAgB,CACtBrlC,EAAIqlC,eAAiB,IAC/B,CACA,KAAa,CACLrlC,EAAMgZ,EAAK8qB,UACnB,CAEM5iC,KAAKlB,IAAIuoC,eAAevoC,EAAKg0B,EAAM9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAKhpB,IAC9D,CACA,CAEE,eAAAwsB,GACE,GAAItnC,KAAKqmC,QAAQ5D,aAAe,MAAO,OAEvC,GAAIziC,KAAK8a,KAAM,CACb,IAAIvB,EACJ,IAAK,IAAIe,EAAIta,KAAK8a,KAAKsC,MAAMrY,OAAS,EAAGuV,GAAK,EAAGA,IAAK,CACpDf,EAAOvZ,KAAK8a,KAAKsC,MAAM9C,GACvB,GAAIf,EAAKpC,OAAS,UAAW,SAC7B,GAAIoC,EAAK8B,KAAKrU,QAAQ,yBAA2B,EAAG,CAClDhH,KAAK8a,KAAKqZ,YAAY7Z,EAChC,CACA,CACA,MAAW,GAAIta,KAAK6tB,IAAK,CACnB7tB,KAAK6tB,IAAM7tB,KAAK6tB,IAAInR,QAAQ,2BAA4B,GAC9D,CACA,CAEE,QAAA6qB,GACEvnC,KAAKsnC,kBACL,GAAIvC,IAAiBF,IAAsB7kC,KAAKwjC,QAAS,CACvD,OAAOxjC,KAAKwnC,aAClB,KAAW,CACL,IAAIvmC,EAAS,GACbjB,KAAKwwB,UAAUxwB,KAAK8a,MAAMR,IACxBrZ,GAAUqZ,CAAA,IAEZ,MAAO,CAACrZ,EACd,CACA,CAEE,WAAAumC,GACE,GAAIxnC,KAAK8a,KAAM,CACb9a,KAAKynC,gBACX,MAAW,GAAIznC,KAAKmnC,WAAWpiC,SAAW,EAAG,CACvC,IAAI+S,EAAO9X,KAAKmnC,WAAW,GAAGvE,WAC9B9qB,EAAKsV,KAAOptB,KAAKgnC,aACjBhnC,KAAKlB,IAAMijC,GAAmBiC,cAAclsB,EAClD,KAAW,CACL9X,KAAKlB,IAAM,IAAIijC,GAAmB,CAAE3U,KAAMptB,KAAKgnC,eAC/ChnC,KAAKlB,IAAI4oC,WAAW,CAClBC,UAAW,CAAExa,OAAQ,EAAGD,KAAM,GAC9B0a,SAAU,CAAEza,OAAQ,EAAGD,KAAM,GAC7B3F,OAAQvnB,KAAK4c,KAAKkW,KACd9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAK9jC,KAAK4c,KAAKkW,OAC/B,eAEZ,CAEI,GAAI9yB,KAAK6nC,mBAAoB7nC,KAAK8nC,oBAClC,GAAI9nC,KAAK8a,MAAQ9a,KAAKmnC,WAAWpiC,OAAS,EAAG/E,KAAKknC,gBAClD,GAAIlnC,KAAK+nC,eAAgB/nC,KAAK4mC,gBAE9B,GAAI5mC,KAAK8mC,WAAY,CACnB,MAAO,CAAC9mC,KAAK6tB,IACnB,KAAW,CACL,MAAO,CAAC7tB,KAAK6tB,IAAK7tB,KAAKlB,IAC7B,CACA,CAEE,cAAA2oC,GACEznC,KAAK6tB,IAAM,GACX7tB,KAAKlB,IAAM,IAAIijC,GAAmB,CAAE3U,KAAMptB,KAAKgnC,eAE/C,IAAI9Z,EAAO,EACX,IAAIC,EAAS,EAEb,IAAI6a,EAAW,cACf,IAAIC,EAAU,CACZN,UAAW,CAAExa,OAAQ,EAAGD,KAAM,GAC9B0a,SAAU,CAAEza,OAAQ,EAAGD,KAAM,GAC7B3F,OAAQ,IAGV,IAAIuG,EAAOwC,EACXtwB,KAAKwwB,UAAUxwB,KAAK8a,MAAM,CAAC1W,EAAKmV,EAAMpC,KACpCnX,KAAK6tB,KAAOzpB,EAEZ,GAAImV,GAAQpC,IAAS,MAAO,CAC1B8wB,EAAQN,UAAUza,KAAOA,EACzB+a,EAAQN,UAAUxa,OAASA,EAAS,EACpC,GAAI5T,EAAKgO,QAAUhO,EAAKgO,OAAOriB,MAAO,CACpC+iC,EAAQ1gB,OAASvnB,KAAKkoC,WAAW3uB,GACjC0uB,EAAQL,SAAS1a,KAAO3T,EAAKgO,OAAOriB,MAAMgoB,KAC1C+a,EAAQL,SAASza,OAAS5T,EAAKgO,OAAOriB,MAAMioB,OAAS,EACrDntB,KAAKlB,IAAI4oC,WAAWO,EAC9B,KAAe,CACLA,EAAQ1gB,OAASygB,EACjBC,EAAQL,SAAS1a,KAAO,EACxB+a,EAAQL,SAASza,OAAS,EAC1BntB,KAAKlB,IAAI4oC,WAAWO,EAC9B,CACA,CAEMna,EAAQ1pB,EAAIwX,MAAM,OAClB,GAAIkS,EAAO,CACTZ,GAAQY,EAAM/oB,OACdurB,EAAOlsB,EAAIoR,YAAY,MACvB2X,EAAS/oB,EAAIW,OAASurB,CAC9B,KAAa,CACLnD,GAAU/oB,EAAIW,MACtB,CAEM,GAAIwU,GAAQpC,IAAS,QAAS,CAC5B,IAAI2a,EAAIvY,EAAK1B,QAAU,CAAE8X,KAAM,IAC/B,IAAIwY,EACF5uB,EAAKpC,OAAS,QAAWoC,EAAKpC,OAAS,WAAaoC,EAAK6D,MAC3D,IAAK+qB,GAAa5uB,IAASuY,EAAExB,MAAQwB,EAAEnC,KAAKR,UAAW,CACrD,GAAI5V,EAAKgO,QAAUhO,EAAKgO,OAAOpiB,IAAK,CAClC8iC,EAAQ1gB,OAASvnB,KAAKkoC,WAAW3uB,GACjC0uB,EAAQL,SAAS1a,KAAO3T,EAAKgO,OAAOpiB,IAAI+nB,KACxC+a,EAAQL,SAASza,OAAS5T,EAAKgO,OAAOpiB,IAAIgoB,OAAS,EACnD8a,EAAQN,UAAUza,KAAOA,EACzB+a,EAAQN,UAAUxa,OAASA,EAAS,EACpCntB,KAAKlB,IAAI4oC,WAAWO,EAChC,KAAiB,CACLA,EAAQ1gB,OAASygB,EACjBC,EAAQL,SAAS1a,KAAO,EACxB+a,EAAQL,SAASza,OAAS,EAC1B8a,EAAQN,UAAUza,KAAOA,EACzB+a,EAAQN,UAAUxa,OAASA,EAAS,EACpCntB,KAAKlB,IAAI4oC,WAAWO,EAChC,CACA,CACA,IAEA,CAEE,YAAAF,GACE,GAAI/nC,KAAK8mC,WAAY,CACnB,OAAO,IACb,CACI,UAAW9mC,KAAKqmC,QAAQ5D,aAAe,YAAa,CAClD,OAAOziC,KAAKqmC,QAAQ5D,UAC1B,CACI,GAAIziC,KAAKmnC,WAAWpiC,OAAQ,CAC1B,OAAO/E,KAAKmnC,WAAWnmB,MAAK1G,GAAKA,EAAEmoB,YACzC,CACI,OAAO,IACX,CAEE,QAAAqE,GACE,UAAW9mC,KAAKqmC,QAAQ9D,SAAW,YAAa,CAC9C,OAAOviC,KAAKqmC,QAAQ9D,MAC1B,CAEI,IAAIE,EAAaziC,KAAKqmC,QAAQ5D,WAC9B,UAAWA,IAAe,aAAeA,IAAe,KAAM,CAC5D,OAAO,KACb,CAEI,GAAIziC,KAAKmnC,WAAWpiC,OAAQ,CAC1B,OAAO/E,KAAKmnC,WAAWnmB,MAAK1G,GAAKA,EAAEioB,QACzC,CACI,OAAO,IACX,CAEE,KAAAiB,GACE,UAAWxjC,KAAK4c,KAAK9d,MAAQ,YAAa,CACxC,QAASkB,KAAK4c,KAAK9d,GACzB,CACI,OAAOkB,KAAKmnC,WAAWpiC,OAAS,CACpC,CAEE,gBAAA8iC,GACE,UAAW7nC,KAAKqmC,QAAQlC,iBAAmB,YAAa,CACtD,OAAOnkC,KAAKqmC,QAAQlC,cAC1B,CACI,GAAInkC,KAAKmnC,WAAWpiC,OAAQ,CAC1B,OAAO/E,KAAKmnC,WAAWnmB,MAAK1G,GAAKA,EAAE4pB,eACzC,CACI,OAAO,IACX,CAEE,UAAA8C,GACE,GAAIhnC,KAAK4c,KAAK+oB,GAAI,CAChB,OAAO3lC,KAAK8jC,KAAK9jC,KAAK4c,KAAK+oB,GACjC,MAAW,GAAI3lC,KAAK4c,KAAKkW,KAAM,CACzB,OAAO9yB,KAAK8jC,KAAK9jC,KAAK4c,KAAKkW,KACjC,KAAW,CACL,MAAO,QACb,CACA,CAEE,IAAAgR,CAAK1W,GACH,GAAIptB,KAAKqmC,QAAQG,SAAU,OAAOpZ,EAClC,GAAIA,EAAKpuB,WAAW,KAAO,GAAc,OAAOouB,EAChD,GAAI,YAAY9M,KAAK8M,GAAO,OAAOA,EACnC,IAAIgb,EAASpoC,KAAK0mC,cAAc9mC,IAAIwtB,GACpC,GAAIgb,EAAQ,OAAOA,EAEnB,IAAItV,EAAO9yB,KAAK4c,KAAK+oB,GAAKzD,GAAQliC,KAAK4c,KAAK+oB,IAAM,IAElD,UAAW3lC,KAAKqmC,QAAQ5D,aAAe,SAAU,CAC/C3P,EAAOoP,GAAQsC,GAAQ1R,EAAM9yB,KAAKqmC,QAAQ5D,YAChD,CAEI,IAAIqB,EAAOlgB,GAASkP,EAAM1F,GAC1BptB,KAAK0mC,cAAc/S,IAAIvG,EAAM0W,GAE7B,OAAOA,CACX,CAEE,QAAAqD,GACE,IAAKnnC,KAAKqoC,aAAc,CACtBroC,KAAKqoC,aAAe,GACpB,GAAIroC,KAAK8a,KAAM,CACb9a,KAAK8a,KAAKqW,MAAK5X,IACb,GAAIA,EAAKgO,QAAUhO,EAAKgO,OAAO4B,MAAMrqB,IAAK,CACxC,IAAIA,EAAMya,EAAKgO,OAAO4B,MAAMrqB,IAC5B,IAAKkB,KAAKqoC,aAAa7lB,SAAS1jB,GAAM,CACpCkB,KAAKqoC,aAAanzB,KAAKpW,EACrC,CACA,IAEA,KAAa,CACL,IAAIqqB,EAAQ,IAAI6b,GAAMhlC,KAAKsmC,YAAatmC,KAAK4c,MAC7C,GAAIuM,EAAMrqB,IAAKkB,KAAKqoC,aAAanzB,KAAKiU,EAAMrqB,IACpD,CACA,CAEI,OAAOkB,KAAKqoC,YAChB,CAEE,iBAAAP,GACE,IAAIQ,EAAU,GACd,GAAItoC,KAAK8a,KAAM,CACb9a,KAAK8a,KAAKqW,MAAK5X,IACb,GAAIA,EAAKgO,OAAQ,CACf,IAAIuL,EAAOvZ,EAAKgO,OAAO4B,MAAM2J,KAC7B,GAAIA,IAASwV,EAAQxV,GAAO,CAC1BwV,EAAQxV,GAAQ,KAChB,IAAI8S,EAAU5lC,KAAKumC,aACfvmC,KAAKuoC,UAAUzV,GACf9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAKhR,IACzB9yB,KAAKlB,IAAI0pC,iBAAiB5C,EAASrsB,EAAKgO,OAAO4B,MAAM0E,IACjE,CACA,IAEA,MAAW,GAAI7tB,KAAK6tB,IAAK,CACnB,IAAIiF,EAAO9yB,KAAK4c,KAAKkW,KACjB9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAK9jC,KAAK4c,KAAKkW,OAC/B,cACJ9yB,KAAKlB,IAAI0pC,iBAAiB1V,EAAM9yB,KAAK6tB,IAC3C,CACA,CAEE,UAAAqa,CAAW3uB,GACT,GAAIvZ,KAAKqmC,QAAQvT,KAAM,CACrB,OAAO9yB,KAAKonC,MAAMpnC,KAAKqmC,QAAQvT,KACrC,MAAW,GAAI9yB,KAAKumC,aAAc,CAC5B,OAAOvmC,KAAKuoC,UAAUhvB,EAAKgO,OAAO4B,MAAM2J,KAC9C,KAAW,CACL,OAAO9yB,KAAKonC,MAAMpnC,KAAK8jC,KAAKvqB,EAAKgO,OAAO4B,MAAM2J,MACpD,CACA,CAEE,QAAAiU,CAAS3iC,GACP,GAAIwzB,GAAQ,CACV,OAAOA,GAAO9E,KAAK1uB,GAAK2X,SAAS,SACvC,KAAW,CACL,OAAOyZ,OAAOiT,KAAKC,SAASC,mBAAmBvkC,IACrD,CACA,CAEE,SAAAmkC,CAAUzE,GACR,IAAIsE,EAASpoC,KAAKymC,iBAAiB7mC,IAAIkkC,GACvC,GAAIsE,EAAQ,OAAOA,EAEnB,GAAI9D,GAAe,CACjB,IAAIsE,EAAUtE,GAAcR,GAAM/nB,WAClC/b,KAAKymC,iBAAiB9S,IAAImQ,EAAM8E,GAEhC,OAAOA,CACb,KAAW,CACL,MAAM,IAAI/xB,MACR,+DAER,CACA,CAEE,KAAAuwB,CAAMtD,GACJ,IAAIsE,EAASpoC,KAAK2mC,aAAa/mC,IAAIkkC,GACnC,GAAIsE,EAAQ,OAAOA,EAEnB,GAAIlC,KAAQ,KAAM,CAChBpC,EAAOA,EAAKpnB,QAAQ,MAAO,IACjC,CAEI,IAAIqN,EAAM8e,UAAU/E,GAAMpnB,QAAQ,QAASisB,oBAC3C3oC,KAAK2mC,aAAahT,IAAImQ,EAAM/Z,GAE5B,OAAOA,CACX,E,IAGA+e,GAAiB3C,GCrWjB,IAAIvuB,GAAO3V,GAEX,MAAMwV,WAAgBG,GACpB,WAAA9N,CAAY4oB,GACVpa,MAAMoa,GACN1yB,KAAKmX,KAAO,SAChB,E,IAGAsZ,GAAiBhZ,GACjBA,GAAQ3X,QAAU2X,GCVlB,IAAI4a,QAAEA,GAAOC,GAAEA,IAAOrwB,GACtB,IAAIizB,GAAc/yB,GAClB,IAAIsV,GAAUpV,GACd,IAAIuV,GAAO2a,GAEX,IAAIrnB,GAAO69B,GAAMC,GAAQzxB,GAEzB,SAAS0xB,GAAY7rB,GACnB,OAAOA,EAAMte,KAAIwb,IACf,GAAIA,EAAE8C,MAAO9C,EAAE8C,MAAQ6rB,GAAY3uB,EAAE8C,cAC9B9C,EAAEiN,OACT,OAAOjN,IAEX,CAEA,SAAS4uB,GAAY3vB,GACnBA,EAAK8Y,IAAW,MAChB,GAAI9Y,EAAKyb,QAAQ5X,MAAO,CACtB,IAAK,IAAI9C,KAAKf,EAAKyb,QAAQ5X,MAAO,CAChC8rB,GAAY5uB,EAClB,CACA,CACA,CAEA,MAAM6uB,WAAkBvxB,GACtB,MAAAqI,IAAUrH,GACR,IAAK,IAAIsB,KAAStB,EAAU,CAC1B,IAAIwE,EAAQpd,KAAKopC,UAAUlvB,EAAOla,KAAKswB,MACvC,IAAK,IAAI/W,KAAQ6D,EAAOpd,KAAKg1B,QAAQ5X,MAAMlI,KAAKqE,EACtD,CAEIvZ,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,SAAAozB,CAAUC,GACR/a,MAAM8a,UAAUC,GAChB,GAAIrzB,KAAKod,MAAO,CACd,IAAK,IAAI7D,KAAQvZ,KAAKod,MAAO7D,EAAK6Z,UAAUC,EAClD,CACA,CAEE,IAAAgW,CAAK1uB,GACH,IAAK3a,KAAKg1B,QAAQ5X,MAAO,OAAO9c,UAChC,IAAIgpC,EAAWtpC,KAAKupC,cAEpB,IAAIl/B,EAAOpJ,EACX,MAAOjB,KAAKwpC,QAAQF,GAAYtpC,KAAKg1B,QAAQ5X,MAAMrY,OAAQ,CACzDsF,EAAQrK,KAAKwpC,QAAQF,GACrBroC,EAAS0Z,EAAS3a,KAAKg1B,QAAQ5X,MAAM/S,GAAQA,GAC7C,GAAIpJ,IAAW,MAAO,MAEtBjB,KAAKwpC,QAAQF,IAAa,CAChC,QAEWtpC,KAAKwpC,QAAQF,GACpB,OAAOroC,CACX,CAEE,KAAAwoC,CAAMC,GACJ,OAAO1pC,KAAKod,MAAMqsB,MAAMC,EAC5B,CAEE,WAAAH,GACE,IAAKvpC,KAAK2pC,SAAU3pC,KAAK2pC,SAAW,EACpC,IAAK3pC,KAAKwpC,QAASxpC,KAAKwpC,QAAU,GAElCxpC,KAAK2pC,UAAY,EACjB,IAAIL,EAAWtpC,KAAK2pC,SACpB3pC,KAAKwpC,QAAQF,GAAY,EAEzB,OAAOA,CACX,CAEE,iBAAA7V,GACE,MAAO,CACL,GAAA7zB,CAAI2Z,EAAMmM,GACR,GAAIA,IAAS,UAAW,CACtB,OAAOnM,CACjB,MAAe,IAAKA,EAAKmM,GAAO,CACtB,OAAOnM,EAAKmM,EACtB,MAAe,GACLA,IAAS,eACDA,IAAS,UAAYA,EAAK0P,WAAW,QAC7C,CACA,MAAO,IAAIwU,IACFrwB,EAAKmM,MACPkkB,EAAK9qC,KAAIwb,IACV,UAAWA,IAAM,WAAY,CAC3B,MAAO,CAACJ,EAAO7P,IAAUiQ,EAAEJ,EAAMwZ,UAAWrpB,EAC9D,KAAuB,CACL,OAAOiQ,CACzB,KAIA,MAAe,GAAIoL,IAAS,SAAWA,IAAS,OAAQ,CAC9C,OAAOmkB,GACEtwB,EAAKmM,IAAM,CAACxL,KAAU4vB,IAC3BD,EAAG3vB,EAAMwZ,aAAcoW,IAGrC,MAAe,GAAIpkB,IAAS,OAAQ,CAC1B,MAAO,IAAMnM,EAAKuB,OAAO4Y,SACnC,MAAe,GAAIhO,IAAS,QAAS,CAC3B,OAAOnM,EAAK6D,MAAMte,KAAIwb,GAAKA,EAAEoZ,WACvC,MAAe,GAAIhO,IAAS,SAAWA,IAAS,OAAQ,CAC9C,OAAOnM,EAAKmM,GAAMgO,SAC5B,KAAe,CACL,OAAOna,EAAKmM,EACtB,CACA,EAEM,GAAAiO,CAAIpa,EAAMmM,EAAM/mB,GACd,GAAI4a,EAAKmM,KAAU/mB,EAAO,OAAO,KACjC4a,EAAKmM,GAAQ/mB,EACb,GAAI+mB,IAAS,QAAUA,IAAS,UAAYA,IAAS,WAAY,CAC/DnM,EAAKqa,WACf,CACQ,OAAO,IACf,EAEA,CAEE,KAAAvpB,CAAM6P,GACJ,UAAWA,IAAU,SAAU,OAAOA,EACtC,GAAIA,EAAM8a,QAAS9a,EAAQA,EAAM8a,QACjC,OAAOh1B,KAAKg1B,QAAQ5X,MAAMpW,QAAQkT,EACtC,CAEE,WAAA8Y,CAAY+W,EAAOhX,GACjB,IAAIiX,EAAahqC,KAAKqK,MAAM0/B,GAC5B,IAAI3sB,EAAQpd,KAAKopC,UAAUrW,EAAK/yB,KAAKg1B,QAAQ5X,MAAM4sB,IAAaC,UAChED,EAAahqC,KAAKqK,MAAM0/B,GACxB,IAAK,IAAIxwB,KAAQ6D,EAAOpd,KAAKg1B,QAAQ5X,MAAMwC,OAAOoqB,EAAa,EAAG,EAAGzwB,GAErE,IAAIlP,EACJ,IAAK,IAAI6X,KAAMliB,KAAKwpC,QAAS,CAC3Bn/B,EAAQrK,KAAKwpC,QAAQtnB,GACrB,GAAI8nB,EAAa3/B,EAAO,CACtBrK,KAAKwpC,QAAQtnB,GAAM7X,EAAQ+S,EAAMrY,MACzC,CACA,CAEI/E,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,YAAAmzB,CAAa4W,EAAOhX,GAClB,IAAIiX,EAAahqC,KAAKqK,MAAM0/B,GAC5B,IAAI5yB,EAAO6yB,IAAe,EAAI,UAAY,MAC1C,IAAI5sB,EAAQpd,KAAKopC,UAAUrW,EAAK/yB,KAAKg1B,QAAQ5X,MAAM4sB,GAAa7yB,GAAM8yB,UACtED,EAAahqC,KAAKqK,MAAM0/B,GACxB,IAAK,IAAIxwB,KAAQ6D,EAAOpd,KAAKg1B,QAAQ5X,MAAMwC,OAAOoqB,EAAY,EAAGzwB,GAEjE,IAAIlP,EACJ,IAAK,IAAI6X,KAAMliB,KAAKwpC,QAAS,CAC3Bn/B,EAAQrK,KAAKwpC,QAAQtnB,GACrB,GAAI8nB,GAAc3/B,EAAO,CACvBrK,KAAKwpC,QAAQtnB,GAAM7X,EAAQ+S,EAAMrY,MACzC,CACA,CAEI/E,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,SAAAopC,CAAUhsB,EAAO8sB,GACf,UAAW9sB,IAAU,SAAU,CAC7BA,EAAQ6rB,GAAY/9B,GAAMkS,GAAOA,MACvC,MAAW,UAAWA,IAAU,YAAa,CACvCA,EAAQ,EACd,MAAW,GAAIwB,MAAMC,QAAQzB,GAAQ,CAC/BA,EAAQA,EAAMnW,MAAM,GACpB,IAAK,IAAIqT,KAAK8C,EAAO,CACnB,GAAI9C,EAAEzC,OAAQyC,EAAEzC,OAAOsc,YAAY7Z,EAAG,SAC9C,CACA,MAAW,GAAI8C,EAAMjG,OAAS,QAAUnX,KAAKmX,OAAS,WAAY,CAC5DiG,EAAQA,EAAMA,MAAMnW,MAAM,GAC1B,IAAK,IAAIqT,KAAK8C,EAAO,CACnB,GAAI9C,EAAEzC,OAAQyC,EAAEzC,OAAOsc,YAAY7Z,EAAG,SAC9C,CACA,MAAW,GAAI8C,EAAMjG,KAAM,CACrBiG,EAAQ,CAACA,EACf,MAAW,GAAIA,EAAMsI,KAAM,CACrB,UAAWtI,EAAMze,QAAU,YAAa,CACtC,MAAM,IAAIkY,MAAM,yCACxB,MAAa,UAAWuG,EAAMze,QAAU,SAAU,CAC1Cye,EAAMze,MAAQa,OAAO4d,EAAMze,MACnC,CACMye,EAAQ,CAAC,IAAI8X,GAAY9X,GAC/B,MAAW,GAAIA,EAAM+sB,SAAU,CACzB/sB,EAAQ,CAAC,IAAI2rB,GAAK3rB,GACxB,MAAW,GAAIA,EAAMzI,KAAM,CACrByI,EAAQ,CAAC,IAAI4rB,GAAO5rB,GAC1B,MAAW,GAAIA,EAAM/B,KAAM,CACrB+B,EAAQ,CAAC,IAAI3F,GAAQ2F,GAC3B,KAAW,CACL,MAAM,IAAIvG,MAAM,qCACtB,CAEI,IAAIuzB,EAAYhtB,EAAMte,KAAIwb,IAExB,IAAKA,EAAEgY,IAAK6W,GAAUkB,QAAQ/vB,GAC9BA,EAAIA,EAAE0a,QACN,GAAI1a,EAAEzC,OAAQyC,EAAEzC,OAAOsc,YAAY7Z,GACnC,GAAIA,EAAE+X,IAAU6W,GAAY5uB,GAC5B,UAAWA,EAAEqV,KAAKY,SAAW,YAAa,CACxC,GAAI2Z,UAAiBA,EAAOva,KAAKY,SAAW,YAAa,CACvDjW,EAAEqV,KAAKY,OAAS2Z,EAAOva,KAAKY,OAAO7T,QAAQ,MAAO,GAC5D,CACA,CACMpC,EAAEzC,OAAS7X,KAAKg1B,QAChB,OAAO1a,KAGT,OAAO8vB,CACX,CAEE,OAAAhqB,IAAWxH,GACTA,EAAWA,EAASqxB,UACpB,IAAK,IAAI/vB,KAAStB,EAAU,CAC1B,IAAIwE,EAAQpd,KAAKopC,UAAUlvB,EAAOla,KAAKgxB,MAAO,WAAWiZ,UACzD,IAAK,IAAI1wB,KAAQ6D,EAAOpd,KAAKg1B,QAAQ5X,MAAMgC,QAAQ7F,GACnD,IAAK,IAAI2I,KAAMliB,KAAKwpC,QAAS,CAC3BxpC,KAAKwpC,QAAQtnB,GAAMliB,KAAKwpC,QAAQtnB,GAAM9E,EAAMrY,MACpD,CACA,CAEI/E,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,IAAAkV,CAAKgF,GACHA,EAAMrC,OAAS7X,KACfA,KAAKg1B,QAAQ5X,MAAMlI,KAAKgF,GACxB,OAAOla,IACX,CAEE,SAAAsqC,GACE,IAAK,IAAI/wB,KAAQvZ,KAAKg1B,QAAQ5X,MAAO7D,EAAK1B,OAASvX,UACnDN,KAAKg1B,QAAQ5X,MAAQ,GAErBpd,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,WAAAm0B,CAAYja,GACVA,EAAQla,KAAKqK,MAAM6P,GACnBla,KAAKg1B,QAAQ5X,MAAMlD,GAAOrC,OAASvX,UACnCN,KAAKg1B,QAAQ5X,MAAMwC,OAAO1F,EAAO,GAEjC,IAAI7P,EACJ,IAAK,IAAI6X,KAAMliB,KAAKwpC,QAAS,CAC3Bn/B,EAAQrK,KAAKwpC,QAAQtnB,GACrB,GAAI7X,GAAS6P,EAAO,CAClBla,KAAKwpC,QAAQtnB,GAAM7X,EAAQ,CACnC,CACA,CAEIrK,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,aAAAuqC,CAAcC,EAAS5tB,EAAMjC,GAC3B,IAAKA,EAAU,CACbA,EAAWiC,EACXA,EAAO,EACb,CAEI5c,KAAKwxB,WAAUZ,IACb,GAAIhU,EAAK6tB,QAAU7tB,EAAK6tB,MAAMjoB,SAASoO,EAAKlL,MAAO,OACnD,GAAI9I,EAAK8tB,OAAS9Z,EAAKjyB,MAAM6jB,SAAS5F,EAAK8tB,MAAO,OAElD9Z,EAAKjyB,MAAQiyB,EAAKjyB,MAAM+d,QAAQ8tB,EAAS7vB,EAAQ,IAGnD3a,KAAK4zB,YAEL,OAAO5zB,IACX,CAEE,IAAAghB,CAAK0oB,GACH,OAAO1pC,KAAKod,MAAM4D,KAAK0oB,EAC3B,CAEE,IAAAvY,CAAKxW,GACH,OAAO3a,KAAKqpC,MAAK,CAACnvB,EAAOI,KACvB,IAAIrZ,EACJ,IACEA,EAAS0Z,EAAST,EAAOI,EACjC,CAAQ,MAAO0c,GACP,MAAM9c,EAAMyY,WAAWqE,EAC/B,CACM,GAAI/1B,IAAW,OAASiZ,EAAMiX,KAAM,CAClClwB,EAASiZ,EAAMiX,KAAKxW,EAC5B,CAEM,OAAO1Z,IAEb,CAEE,WAAA0pC,CAAYh2B,EAAMgG,GAChB,IAAKA,EAAU,CACbA,EAAWhG,EACX,OAAO3U,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,SAAU,CAC3B,OAAOwD,EAAST,EAAOI,EACjC,IAEA,CACI,GAAI3F,aAAgByuB,OAAQ,CAC1B,OAAOpjC,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,UAAYxC,EAAK2L,KAAKpG,EAAMvF,MAAO,CACpD,OAAOgG,EAAST,EAAOI,EACjC,IAEA,CACI,OAAOta,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,UAAY+C,EAAMvF,OAASA,EAAM,CAClD,OAAOgG,EAAST,EAAOI,EAC/B,IAEA,CAEE,YAAAgX,CAAa3W,GACX,OAAO3a,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,UAAW,CAC5B,OAAOwD,EAAST,EAAOI,EAC/B,IAEA,CAEE,SAAAkX,CAAU9L,EAAM/K,GACd,IAAKA,EAAU,CACbA,EAAW+K,EACX,OAAO1lB,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,OAAQ,CACzB,OAAOwD,EAAST,EAAOI,EACjC,IAEA,CACI,GAAIoL,aAAgB0d,OAAQ,CAC1B,OAAOpjC,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,QAAUuO,EAAKpF,KAAKpG,EAAMwL,MAAO,CAClD,OAAO/K,EAAST,EAAOI,EACjC,IAEA,CACI,OAAOta,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,QAAU+C,EAAMwL,OAASA,EAAM,CAChD,OAAO/K,EAAST,EAAOI,EAC/B,IAEA,CAEE,SAAAswB,CAAUT,EAAUxvB,GAClB,IAAKA,EAAU,CACbA,EAAWwvB,EAEX,OAAOnqC,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,OAAQ,CACzB,OAAOwD,EAAST,EAAOI,EACjC,IAEA,CACI,GAAI6vB,aAAoB/G,OAAQ,CAC9B,OAAOpjC,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,QAAUgzB,EAAS7pB,KAAKpG,EAAMiwB,UAAW,CAC1D,OAAOxvB,EAAST,EAAOI,EACjC,IAEA,CACI,OAAOta,KAAKmxB,MAAK,CAACjX,EAAOI,KACvB,GAAIJ,EAAM/C,OAAS,QAAU+C,EAAMiwB,WAAaA,EAAU,CACxD,OAAOxvB,EAAST,EAAOI,EAC/B,IAEA,CAEE,SAAI0W,GACF,IAAKhxB,KAAKg1B,QAAQ5X,MAAO,OAAO9c,UAChC,OAAON,KAAKg1B,QAAQ5X,MAAM,EAC9B,CAEE,QAAIkT,GACF,IAAKtwB,KAAKg1B,QAAQ5X,MAAO,OAAO9c,UAChC,OAAON,KAAKg1B,QAAQ5X,MAAMpd,KAAKg1B,QAAQ5X,MAAMrY,OAAS,EAC1D,EAGAokC,GAAU0B,cAAgBC,IACxB5/B,GAAQ4/B,CAAA,EAGV3B,GAAU4B,aAAeD,IACvB/B,GAAO+B,CAAA,EAGT3B,GAAU6B,eAAiBF,IACzB9B,GAAS8B,CAAA,EAGX3B,GAAU8B,aAAeH,IACvBvzB,GAAOuzB,CAAA,E,IAGTI,GAAiB/B,GACjBA,GAAUrpC,QAAUqpC,GAGpBA,GAAUkB,QAAU9wB,IAClB,GAAIA,EAAKpC,OAAS,SAAU,CAC1B3Y,OAAO2sC,eAAe5xB,EAAMyvB,GAAO9nC,UACvC,MAAS,GAAIqY,EAAKpC,OAAS,OAAQ,CAC/B3Y,OAAO2sC,eAAe5xB,EAAMwvB,GAAK7nC,UACrC,MAAS,GAAIqY,EAAKpC,OAAS,OAAQ,CAC/B3Y,OAAO2sC,eAAe5xB,EAAM2b,GAAYh0B,UAC5C,MAAS,GAAIqY,EAAKpC,OAAS,UAAW,CAClC3Y,OAAO2sC,eAAe5xB,EAAM9B,GAAQvW,UACxC,MAAS,GAAIqY,EAAKpC,OAAS,OAAQ,CAC/B3Y,OAAO2sC,eAAe5xB,EAAMhC,GAAKrW,UACrC,CAEEqY,EAAK+Y,IAAM,KAEX,GAAI/Y,EAAK6D,MAAO,CACd7D,EAAK6D,MAAMnD,SAAQC,IACjBivB,GAAUkB,QAAQnwB,EAAK,GAE7B,GCpbA,IAAIivB,GAAYlnC,GAEhB,IAAImpC,GAAYC,GAEhB,MAAMryB,WAAiBmwB,GACrB,WAAAr/B,CAAY4oB,GAEVpa,MAAM,CAAEnB,KAAM,cAAeub,IAE7B,IAAK1yB,KAAKod,MAAO,CACfpd,KAAKod,MAAQ,EACnB,CACA,CAEE,QAAAkuB,CAAS1uB,EAAO,IACd,IAAI2uB,EAAO,IAAIH,GAAW,IAAIC,GAAarrC,KAAM4c,GAEjD,OAAO2uB,EAAK/a,WAChB,EAGAxX,GAASwyB,mBAAqBV,IAC5BM,GAAaN,CAAA,EAGf9xB,GAASyyB,kBAAoBX,IAC3BO,GAAYP,CAAA,E,IAGdha,GAAiB9X,GACjBA,GAASlZ,QAAUkZ,GC9BnB,MAAM0yB,GACJ,WAAA5hC,CAAYuR,EAAMuB,EAAO,IACvB5c,KAAKmX,KAAO,UACZnX,KAAKqb,KAAOA,EAEZ,GAAIuB,EAAKrD,MAAQqD,EAAKrD,KAAKgO,OAAQ,CACjC,IAAIokB,EAAQ/uB,EAAKrD,KAAKia,QAAQ5W,GAC9B5c,KAAKktB,KAAOye,EAAMzmC,MAAMgoB,KACxBltB,KAAKmtB,OAASwe,EAAMzmC,MAAMioB,OAC1BntB,KAAKutB,QAAUoe,EAAMxmC,IAAI+nB,KACzBltB,KAAKwtB,UAAYme,EAAMxmC,IAAIgoB,MACjC,CAEI,IAAK,IAAIye,KAAOhvB,EAAM5c,KAAK4rC,GAAOhvB,EAAKgvB,EAC3C,CAEE,QAAA7vB,GACE,GAAI/b,KAAKuZ,KAAM,CACb,OAAOvZ,KAAKuZ,KAAK4B,MAAMnb,KAAKqb,KAAM,CAChChR,MAAOrK,KAAKqK,MACZgjB,OAAQrtB,KAAKqtB,OACb2G,KAAMh0B,KAAKg0B,OACV/G,OACT,CAEI,GAAIjtB,KAAKqtB,OAAQ,CACf,OAAOrtB,KAAKqtB,OAAS,KAAOrtB,KAAKqb,IACvC,CAEI,OAAOrb,KAAKqb,IAChB,E,IAGAwwB,GAAiBH,GACjBA,GAAQ5rC,QAAU4rC,GClClB,IAAIA,GAAUzpC,GAEd,MAAM6pC,GACJ,WAAAhiC,CAAYiiC,EAAWjxB,EAAM8B,GAC3B5c,KAAK+rC,UAAYA,EACjB/rC,KAAKgsC,SAAW,GAChBhsC,KAAK8a,KAAOA,EACZ9a,KAAK4c,KAAOA,EACZ5c,KAAK6tB,IAAMvtB,UACXN,KAAKlB,IAAMwB,SACf,CAEE,QAAAyb,GACE,OAAO/b,KAAK6tB,GAChB,CAEE,IAAAkH,CAAK1Z,EAAMuB,EAAO,IAChB,IAAKA,EAAKyQ,OAAQ,CAChB,GAAIrtB,KAAKisC,YAAcjsC,KAAKisC,WAAWC,cAAe,CACpDtvB,EAAKyQ,OAASrtB,KAAKisC,WAAWC,aACtC,CACA,CAEI,IAAIL,EAAU,IAAIH,GAAQrwB,EAAMuB,GAChC5c,KAAKgsC,SAAS92B,KAAK22B,GAEnB,OAAOA,CACX,CAEE,QAAAM,GACE,OAAOnsC,KAAKgsC,SAAS3rB,QAAO/F,GAAKA,EAAEnD,OAAS,WAChD,CAEE,WAAI0vB,GACF,OAAO7mC,KAAK6tB,GAChB,E,IAGA5sB,GAAiB6qC,GACjBA,GAAOhsC,QAAUgsC,GCvCjB,MAAMM,GAAe,IAAIptC,WAAW,GACpC,MAAMqtC,GAAe,IAAIrtC,WAAW,GACpC,MAAMstC,GAAY,KAAKttC,WAAW,GAClC,MAAMutC,GAAQ,IAAIvtC,WAAW,GAC7B,MAAMwtC,GAAU,KAAKxtC,WAAW,GAChC,MAAMytC,GAAQ,IAAIztC,WAAW,GAC7B,MAAM0tC,GAAO,KAAK1tC,WAAW,GAC7B,MAAM2tC,GAAM,KAAK3tC,WAAW,GAC5B,MAAM4tC,GAAK,KAAK5tC,WAAW,GAC3B,MAAM6tC,GAAc,IAAI7tC,WAAW,GACnC,MAAM8tC,GAAe,IAAI9tC,WAAW,GACpC,MAAM+tC,GAAmB,IAAI/tC,WAAW,GACxC,MAAMguC,GAAoB,IAAIhuC,WAAW,GACzC,MAAMiuC,GAAa,IAAIjuC,WAAW,GAClC,MAAMkuC,GAAc,IAAIluC,WAAW,GACnC,MAAMmuC,GAAY,IAAInuC,WAAW,GACjC,MAAMouC,GAAW,IAAIpuC,WAAW,GAChC,MAAMquC,GAAQ,IAAIruC,WAAW,GAC7B,MAAMsuC,GAAK,IAAItuC,WAAW,GAE1B,MAAMuuC,GAAY,6BAClB,MAAMC,GAAc,wCACpB,MAAMC,GAAiB,gBACvB,MAAMC,GAAgB,W,IAEtBtjB,GAAiB,SAAS9V,EAAU6U,EAAOhW,EAAU,IACnD,IAAI0a,EAAM1E,EAAM0E,IAAI8f,UACpB,IAAIC,EAASz6B,EAAQ06B,aAErB,IAAInrC,EAAMqV,EAAMpI,EAAOk3B,EAAS3qB,EAChC,IAAI4xB,EAASC,EAAWj2B,EAAM6iB,EAAGqT,EAEjC,IAAIjpC,EAAS8oB,EAAI9oB,OACjB,IAAIwQ,EAAM,EACV,IAAIpL,EAAS,GACb,IAAI8jC,EAAW,GAEf,SAASC,IACP,OAAO34B,CACX,CAEE,SAAS44B,EAASC,GAChB,MAAMjlB,EAAMhO,MAAM,YAAcizB,EAAM74B,EAC1C,CAEE,SAAS84B,IACP,OAAOJ,EAASlpC,SAAW,GAAKwQ,GAAOxQ,CAC3C,CAEE,SAASupC,EAAU1xB,GACjB,GAAIqxB,EAASlpC,OAAQ,OAAOkpC,EAASh5B,MACrC,GAAIM,GAAOxQ,EAAQ,OAEnB,IAAIwpC,EAAiB3xB,EAAOA,EAAK2xB,eAAiB,MAElD7rC,EAAOmrB,EAAI7uB,WAAWuW,GAEtB,OAAQ7S,GACN,KAAK8pC,GACL,KAAKC,GACL,KAAKE,GACL,KAAKC,GACL,KAAKF,GAAM,CACT30B,EAAOxC,EACP,EAAG,CACDwC,GAAQ,EACRrV,EAAOmrB,EAAI7uB,WAAW+Y,EAChC,OACUrV,IAAS+pC,IACT/pC,IAAS8pC,IACT9pC,IAASiqC,IACTjqC,IAASkqC,IACTlqC,IAASgqC,IAGXsB,EAAe,CAAC,QAASngB,EAAI5mB,MAAMsO,EAAKwC,IACxCxC,EAAMwC,EAAO,EACb,KACR,CAEM,KAAK80B,GACL,KAAKC,GACL,KAAKG,GACL,KAAKC,GACL,KAAKG,GACL,KAAKF,GACL,KAAKH,GAAmB,CACtB,IAAIwB,EAAchvC,OAAOG,aAAa+C,GACtCsrC,EAAe,CAACQ,EAAaA,EAAaj5B,GAC1C,KACR,CAEM,KAAKw3B,GAAkB,CACrBj1B,EAAO3N,EAAOpF,OAASoF,EAAO8K,MAAM,GAAK,GACzC0lB,EAAI9M,EAAI7uB,WAAWuW,EAAM,GACzB,GACEuC,IAAS,OACT6iB,IAAMyR,IACNzR,IAAM0R,IACN1R,IAAM8R,IACN9R,IAAM6R,IACN7R,IAAMgS,IACNhS,IAAM+R,IACN/R,IAAMiS,GACN,CACA70B,EAAOxC,EACP,EAAG,CACDu4B,EAAU,MACV/1B,EAAO8V,EAAI7mB,QAAQ,IAAK+Q,EAAO,GAC/B,GAAIA,KAAU,EAAG,CACf,GAAI61B,GAAUW,EAAgB,CAC5Bx2B,EAAOxC,EACP,KAChB,KAAqB,CACL44B,EAAS,UACzB,CACA,CACYJ,EAAYh2B,EACZ,MAAO8V,EAAI7uB,WAAW+uC,EAAY,KAAOzB,GAAW,CAClDyB,GAAa,EACbD,GAAWA,CACzB,CACA,OAAmBA,GAETE,EAAe,CAAC,WAAYngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GAE3DxC,EAAMwC,CAChB,KAAe,CACLA,EAAO8V,EAAI7mB,QAAQ,IAAKuO,EAAM,GAC9BsxB,EAAUhZ,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAEhC,GAAIA,KAAU,GAAK01B,GAAentB,KAAKumB,GAAU,CAC/CmH,EAAe,CAAC,IAAK,IAAKz4B,EACtC,KAAiB,CACLy4B,EAAe,CAAC,WAAYnH,EAAStxB,EAAKwC,GAC1CxC,EAAMwC,CAClB,CACA,CAEQ,KACR,CAEM,KAAKq0B,GACL,KAAKC,GAAc,CACjB18B,EAAQjN,IAAS0pC,GAAe,IAAM,IACtCr0B,EAAOxC,EACP,EAAG,CACDu4B,EAAU,MACV/1B,EAAO8V,EAAI7mB,QAAQ2I,EAAOoI,EAAO,GACjC,GAAIA,KAAU,EAAG,CACf,GAAI61B,GAAUW,EAAgB,CAC5Bx2B,EAAOxC,EAAM,EACb,KACd,KAAmB,CACL44B,EAAS,SACvB,CACA,CACUJ,EAAYh2B,EACZ,MAAO8V,EAAI7uB,WAAW+uC,EAAY,KAAOzB,GAAW,CAClDyB,GAAa,EACbD,GAAWA,CACvB,CACA,OAAiBA,GAETE,EAAe,CAAC,SAAUngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GACzDxC,EAAMwC,EACN,KACR,CAEM,KAAKu1B,GAAI,CACPC,GAAUxmC,UAAYwO,EAAM,EAC5Bg4B,GAAUjtB,KAAKuN,GACf,GAAI0f,GAAUxmC,YAAc,EAAG,CAC7BgR,EAAO8V,EAAI9oB,OAAS,CAC9B,KAAe,CACLgT,EAAOw1B,GAAUxmC,UAAY,CACvC,CAEQinC,EAAe,CAAC,UAAWngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GAE1DxC,EAAMwC,EACN,KACR,CAEM,KAAKu0B,GAAW,CACdv0B,EAAOxC,EACP2G,EAAS,KACT,MAAO2R,EAAI7uB,WAAW+Y,EAAO,KAAOu0B,GAAW,CAC7Cv0B,GAAQ,EACRmE,GAAUA,CACpB,CACQxZ,EAAOmrB,EAAI7uB,WAAW+Y,EAAO,GAC7B,GACEmE,GACAxZ,IAAS6pC,IACT7pC,IAAS+pC,IACT/pC,IAAS8pC,IACT9pC,IAASiqC,IACTjqC,IAASkqC,IACTlqC,IAASgqC,GACT,CACA30B,GAAQ,EACR,GAAI21B,GAAcptB,KAAKuN,EAAIxD,OAAOtS,IAAQ,CACxC,MAAO21B,GAAcptB,KAAKuN,EAAIxD,OAAOtS,EAAO,IAAK,CAC/CA,GAAQ,CACtB,CACY,GAAI8V,EAAI7uB,WAAW+Y,EAAO,KAAO00B,GAAO,CACtC10B,GAAQ,CACtB,CACA,CACA,CAEQi2B,EAAe,CAAC,OAAQngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GAEvDxC,EAAMwC,EACN,KACR,CAEM,QAAS,CACP,GAAIrV,IAAS6pC,IAAS1e,EAAI7uB,WAAWuW,EAAM,KAAO63B,GAAU,CAC1Dr1B,EAAO8V,EAAI7mB,QAAQ,KAAMuO,EAAM,GAAK,EACpC,GAAIwC,IAAS,EAAG,CACd,GAAI61B,GAAUW,EAAgB,CAC5Bx2B,EAAO8V,EAAI9oB,MACzB,KAAmB,CACLopC,EAAS,UACvB,CACA,CAEUH,EAAe,CAAC,UAAWngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GAC1DxC,EAAMwC,CAChB,KAAe,CACLy1B,GAAYzmC,UAAYwO,EAAM,EAC9Bi4B,GAAYltB,KAAKuN,GACjB,GAAI2f,GAAYzmC,YAAc,EAAG,CAC/BgR,EAAO8V,EAAI9oB,OAAS,CAChC,KAAiB,CACLgT,EAAOy1B,GAAYzmC,UAAY,CAC3C,CAEUinC,EAAe,CAAC,OAAQngB,EAAI5mB,MAAMsO,EAAKwC,EAAO,GAAIxC,EAAKwC,GACvD5N,EAAO+K,KAAK84B,GACZz4B,EAAMwC,CAChB,CAEQ,KACR,EAGIxC,IACA,OAAOy4B,CACX,CAEE,SAASS,EAAKC,GACZT,EAAS/4B,KAAKw5B,EAClB,CAEE,MAAO,CACLD,OACAJ,YACAC,YACAJ,WAEJ,ECvQA,IAAI/E,GAAYlnC,GAEhB,MAAM+mC,WAAeG,GACnB,WAAAr/B,CAAY4oB,GACVpa,MAAMoa,GACN1yB,KAAKmX,KAAO,QAChB,CAEE,MAAA8I,IAAUrH,GACR,IAAK5Y,KAAKg1B,QAAQ5X,MAAOpd,KAAKod,MAAQ,GACtC,OAAO9E,MAAM2H,UAAUrH,EAC3B,CAEE,OAAAwH,IAAWxH,GACT,IAAK5Y,KAAKg1B,QAAQ5X,MAAOpd,KAAKod,MAAQ,GACtC,OAAO9E,MAAM8H,WAAWxH,EAC5B,E,IAGA+1B,GAAiB3F,GACjBA,GAAOlpC,QAAUkpC,GAEjBG,GAAU6B,eAAehC,ICtBzB,IAAIG,GAAYlnC,GAEhB,IAAImpC,GAAYC,GAEhB,MAAM9zB,WAAa4xB,GACjB,WAAAr/B,CAAY4oB,GACVpa,MAAMoa,GACN1yB,KAAKmX,KAAO,OACZ,IAAKnX,KAAKod,MAAOpd,KAAKod,MAAQ,EAClC,CAEE,SAAAgsB,CAAUlvB,EAAOgwB,EAAQ/yB,GACvB,IAAIiG,EAAQ9E,MAAM8wB,UAAUlvB,GAE5B,GAAIgwB,EAAQ,CACV,GAAI/yB,IAAS,UAAW,CACtB,GAAInX,KAAKod,MAAMrY,OAAS,EAAG,CACzBmlC,EAAOva,KAAKY,OAASvwB,KAAKod,MAAM,GAAGuS,KAAKY,MAClD,KAAe,QACE2Z,EAAOva,KAAKY,MAC7B,CACA,MAAa,GAAIvwB,KAAKgxB,QAAUkZ,EAAQ,CAChC,IAAK,IAAI3wB,KAAQ6D,EAAO,CACtB7D,EAAKoW,KAAKY,OAAS2Z,EAAOva,KAAKY,MACzC,CACA,CACA,CAEI,OAAOnT,CACX,CAEE,WAAA+W,CAAYja,EAAO0zB,GACjB,IAAIvjC,EAAQrK,KAAKqK,MAAM6P,GAEvB,IAAK0zB,GAAUvjC,IAAU,GAAKrK,KAAKod,MAAMrY,OAAS,EAAG,CACnD/E,KAAKod,MAAM,GAAGuS,KAAKY,OAASvwB,KAAKod,MAAM/S,GAAOslB,KAAKY,MACzD,CAEI,OAAOjY,MAAM6b,YAAYja,EAC7B,CAEE,QAAAoxB,CAAS1uB,EAAO,IACd,IAAI2uB,EAAO,IAAIH,GAAW,IAAIC,GAAarrC,KAAM4c,GACjD,OAAO2uB,EAAK/a,WAChB,EAGAjZ,GAAKi0B,mBAAqBV,IACxBM,GAAaN,CAAA,EAGfvzB,GAAKk0B,kBAAoBX,IACvBO,GAAYP,CAAA,E,IAGdhwB,GAAiBvD,GACjBA,GAAKzX,QAAUyX,GAEf4xB,GAAU8B,aAAa1zB,IC1DvB,IAAIuiB,GAAO,CACT,KAAA8U,CAAMzoB,GACJ,OAAO2T,GAAKj7B,MAAMsnB,EAAQ,CAAC,KAAM,KACrC,EAEE,KAAA0oB,CAAM1oB,GACJ,IAAI2oB,EAAS,CAAC,IAAK,KAAM,MACzB,OAAOhV,GAAKj7B,MAAMsnB,EAAQ2oB,EAC9B,EAEE,KAAAjwC,CAAMsnB,EAAQ4oB,EAAYze,GACxB,IAAIzH,EAAQ,GACZ,IAAI1iB,EAAU,GACd,IAAItH,EAAQ,MAEZ,IAAImwC,EAAO,EACX,IAAIC,EAAU,MACd,IAAIC,EAAY,GAChB,IAAIhzB,EAAS,MAEb,IAAK,IAAIizB,KAAUhpB,EAAQ,CACzB,GAAIjK,EAAQ,CACVA,EAAS,KACjB,MAAa,GAAIizB,IAAW,KAAM,CAC1BjzB,EAAS,IACjB,MAAa,GAAI+yB,EAAS,CAClB,GAAIE,IAAWD,EAAW,CACxBD,EAAU,KACpB,CACA,MAAa,GAAIE,IAAW,KAAOA,IAAW,IAAK,CAC3CF,EAAU,KACVC,EAAYC,CACpB,MAAa,GAAIA,IAAW,IAAK,CACzBH,GAAQ,CAChB,MAAa,GAAIG,IAAW,IAAK,CACzB,GAAIH,EAAO,EAAGA,GAAQ,CAC9B,MAAa,GAAIA,IAAS,EAAG,CACrB,GAAID,EAAWvsB,SAAS2sB,GAAStwC,EAAQ,IACjD,CAEM,GAAIA,EAAO,CACT,GAAIsH,IAAY,GAAI0iB,EAAM3T,KAAK/O,EAAQqf,QACvCrf,EAAU,GACVtH,EAAQ,KAChB,KAAa,CACLsH,GAAWgpC,CACnB,CACA,CAEI,GAAI7e,GAAQnqB,IAAY,GAAI0iB,EAAM3T,KAAK/O,EAAQqf,QAC/C,OAAOqD,CACX,G,IAGAumB,GAAiBtV,GACjBA,GAAKh6B,QAAUg6B,GCvDf,IAAIqP,GAAYlnC,GAChB,IAAI63B,GAAO33B,GAEX,MAAM4mC,WAAaI,GACjB,WAAAr/B,CAAY4oB,GACVpa,MAAMoa,GACN1yB,KAAKmX,KAAO,OACZ,IAAKnX,KAAKod,MAAOpd,KAAKod,MAAQ,EAClC,CAEE,aAAIiyB,GACF,OAAOvV,GAAK8U,MAAM5uC,KAAKmqC,SAC3B,CAEE,aAAIkF,CAAUC,GACZ,IAAI1zB,EAAQ5b,KAAKmqC,SAAWnqC,KAAKmqC,SAASvuB,MAAM,QAAU,KAC1D,IAAIsqB,EAAMtqB,EAAQA,EAAM,GAAK,IAAM5b,KAAKiwB,IAAI,UAAW,cACvDjwB,KAAKmqC,SAAWmF,EAAOryB,KAAKipB,EAChC,E,IAGAjU,GAAiB8W,GACjBA,GAAKjpC,QAAUipC,GAEfI,GAAU4B,aAAahC,ICxBvB,IAAI7T,GAAcjzB,GAClB,IAAIqS,GAAYnS,GAChB,IAAIsV,GAAUpV,GACd,IAAI2mC,GAASzW,GACb,IAAIhb,GAAOktB,GACX,IAAIsE,GAAOrE,GAEX,MAAM6K,GAAwB,CAC5BC,MAAO,KACPX,MAAO,MAGT,SAASY,GAAqBC,GAC5B,IAAK,IAAIp1B,EAAIo1B,EAAO3qC,OAAS,EAAGuV,GAAK,EAAGA,IAAK,CAC3C,IAAIo0B,EAAQgB,EAAOp1B,GACnB,IAAI/E,EAAMm5B,EAAM,IAAMA,EAAM,GAC5B,GAAIn5B,EAAK,OAAOA,CACpB,CACA,CAEA,MAAMrC,GACJ,WAAApJ,CAAYqf,GACVnpB,KAAKmpB,MAAQA,EAEbnpB,KAAK8a,KAAO,IAAIvD,GAChBvX,KAAKmG,QAAUnG,KAAK8a,KACpB9a,KAAK8uC,OAAS,GACd9uC,KAAKmvB,UAAY,MAEjBnvB,KAAK2vC,kBACL3vC,KAAK8a,KAAKyM,OAAS,CAAE4B,QAAOjkB,MAAO,CAAEioB,OAAQ,EAAGD,KAAM,EAAG7oB,OAAQ,GACrE,CAEE,MAAAmrB,CAAOkf,GACL,IAAIn1B,EAAO,IAAIyvB,GACfzvB,EAAK5E,KAAO+5B,EAAM,GAAGznC,MAAM,GAC3B,GAAIsS,EAAK5E,OAAS,GAAI,CACpB3U,KAAK4vC,cAAcr2B,EAAMm1B,EAC/B,CACI1uC,KAAK61B,KAAKtc,EAAMm1B,EAAM,IAEtB,IAAIv3B,EACJ,IAAIW,EACJ,IAAInB,EACJ,IAAI2Z,EAAO,MACX,IAAIuf,EAAO,MACX,IAAIpgB,EAAS,GACb,IAAIqgB,EAAW,GAEf,OAAQ9vC,KAAKsU,UAAU+5B,YAAa,CAClCK,EAAQ1uC,KAAKsU,UAAUg6B,YACvBn3B,EAAOu3B,EAAM,GAEb,GAAIv3B,IAAS,KAAOA,IAAS,IAAK,CAChC24B,EAAS56B,KAAKiC,IAAS,IAAM,IAAM,IAC3C,MAAa,GAAIA,IAAS,KAAO24B,EAAS/qC,OAAS,EAAG,CAC9C+qC,EAAS56B,KAAK,IACtB,MAAa,GAAIiC,IAAS24B,EAASA,EAAS/qC,OAAS,GAAI,CACjD+qC,EAAS76B,KACjB,CAEM,GAAI66B,EAAS/qC,SAAW,EAAG,CACzB,GAAIoS,IAAS,IAAK,CAChBoC,EAAKgO,OAAOpiB,IAAMnF,KAAK+vC,YAAYrB,EAAM,IACzCn1B,EAAKgO,OAAOpiB,IAAId,SAChBrE,KAAKmvB,UAAY,KACjB,KACV,MAAe,GAAIhY,IAAS,IAAK,CACvB04B,EAAO,KACP,KACV,MAAe,GAAI14B,IAAS,IAAK,CACvB,GAAIsY,EAAO1qB,OAAS,EAAG,CACrB4R,EAAQ8Y,EAAO1qB,OAAS,EACxB+S,EAAO2X,EAAO9Y,GACd,MAAOmB,GAAQA,EAAK,KAAO,QAAS,CAClCA,EAAO2X,IAAS9Y,EAC9B,CACY,GAAImB,EAAM,CACRyB,EAAKgO,OAAOpiB,IAAMnF,KAAK+vC,YAAYj4B,EAAK,IAAMA,EAAK,IACnDyB,EAAKgO,OAAOpiB,IAAId,QAC9B,CACA,CACUrE,KAAKmF,IAAIupC,GACT,KACV,KAAe,CACLjf,EAAOva,KAAKw5B,EACtB,CACA,KAAa,CACLjf,EAAOva,KAAKw5B,EACpB,CAEM,GAAI1uC,KAAKsU,UAAU+5B,YAAa,CAC9B/d,EAAO,KACP,KACR,CACA,CAEI/W,EAAKoW,KAAKG,QAAU9vB,KAAKgwC,yBAAyBvgB,GAClD,GAAIA,EAAO1qB,OAAQ,CACjBwU,EAAKoW,KAAKC,UAAY5vB,KAAKiwC,2BAA2BxgB,GACtDzvB,KAAKiwB,IAAI1W,EAAM,SAAUkW,GACzB,GAAIa,EAAM,CACRoe,EAAQjf,EAAOA,EAAO1qB,OAAS,GAC/BwU,EAAKgO,OAAOpiB,IAAMnF,KAAK+vC,YAAYrB,EAAM,IAAMA,EAAM,IACrDn1B,EAAKgO,OAAOpiB,IAAId,SAChBrE,KAAK8uC,OAASv1B,EAAKoW,KAAKG,QACxBvW,EAAKoW,KAAKG,QAAU,EAC5B,CACA,KAAW,CACLvW,EAAKoW,KAAKC,UAAY,GACtBrW,EAAKkW,OAAS,EACpB,CAEI,GAAIogB,EAAM,CACRt2B,EAAK6D,MAAQ,GACbpd,KAAKmG,QAAUoT,CACrB,CACA,CAEE,oBAAA22B,CAAqBR,GACnB,IAAI5gB,EAAQ9uB,KAAK8uB,MAAM4gB,GACvB,GAAI5gB,IAAU,MAAO,OAErB,IAAIqhB,EAAU,EACd,IAAIzB,EACJ,IAAK,IAAIjc,EAAI3D,EAAQ,EAAG2D,GAAK,EAAGA,IAAK,CACnCic,EAAQgB,EAAOjd,GACf,GAAIic,EAAM,KAAO,QAAS,CACxByB,GAAW,EACX,GAAIA,IAAY,EAAG,KAC3B,CACA,CAII,MAAMnwC,KAAKmpB,MAAMhO,MACf,mBACAuzB,EAAM,KAAO,OAASA,EAAM,GAAK,EAAIA,EAAM,GAEjD,CAEE,KAAA5f,CAAM4gB,GACJ,IAAII,EAAW,EACf,IAAIpB,EAAOv3B,EAAMW,EACjB,IAAK,IAAKwC,EAAGtF,KAAY06B,EAAOU,UAAW,CACzC1B,EAAQ15B,EACRmC,EAAOu3B,EAAM,GAEb,GAAIv3B,IAAS,IAAK,CAChB24B,GAAY,CACpB,CACM,GAAI34B,IAAS,IAAK,CAChB24B,GAAY,CACpB,CACM,GAAIA,IAAa,GAAK34B,IAAS,IAAK,CAClC,IAAKW,EAAM,CACT9X,KAAKqwC,YAAY3B,EAC3B,MAAe,GAAI52B,EAAK,KAAO,QAAUA,EAAK,KAAO,SAAU,CACrD,QACV,KAAe,CACL,OAAOwC,CACjB,CACA,CAEMxC,EAAO42B,CACb,CACI,OAAO,KACX,CAEE,OAAAje,CAAQie,GACN,IAAIn1B,EAAO,IAAI9B,GACfzX,KAAK61B,KAAKtc,EAAMm1B,EAAM,IACtBn1B,EAAKgO,OAAOpiB,IAAMnF,KAAK+vC,YAAYrB,EAAM,IAAMA,EAAM,IACrDn1B,EAAKgO,OAAOpiB,IAAId,SAEhB,IAAIgX,EAAOqzB,EAAM,GAAGznC,MAAM,GAAI,GAC9B,GAAI,QAAQqZ,KAAKjF,GAAO,CACtB9B,EAAK8B,KAAO,GACZ9B,EAAKoW,KAAKe,KAAOrV,EACjB9B,EAAKoW,KAAKgB,MAAQ,EACxB,KAAW,CACL,IAAI/U,EAAQP,EAAKO,MAAM,wBACvBrC,EAAK8B,KAAOO,EAAM,GAClBrC,EAAKoW,KAAKe,KAAO9U,EAAM,GACvBrC,EAAKoW,KAAKgB,MAAQ/U,EAAM,EAC9B,CACA,CAEE,eAAA+zB,GACE3vC,KAAKsU,UAAYA,GAAUtU,KAAKmpB,MACpC,CAEE,IAAAyH,CAAK8e,EAAQY,GACX,IAAI/2B,EAAO,IAAI2b,GACfl1B,KAAK61B,KAAKtc,EAAMm2B,EAAO,GAAG,IAE1B,IAAIpf,EAAOof,EAAOA,EAAO3qC,OAAS,GAClC,GAAIurB,EAAK,KAAO,IAAK,CACnBtwB,KAAKmvB,UAAY,KACjBugB,EAAOz6B,KACb,CAEIsE,EAAKgO,OAAOpiB,IAAMnF,KAAK+vC,YACrBzf,EAAK,IAAMA,EAAK,IAAMmf,GAAqBC,IAE7Cn2B,EAAKgO,OAAOpiB,IAAId,SAEhB,MAAOqrC,EAAO,GAAG,KAAO,OAAQ,CAC9B,GAAIA,EAAO3qC,SAAW,EAAG/E,KAAKuwC,YAAYb,GAC1Cn2B,EAAKoW,KAAKY,QAAUmf,EAAO/4B,QAAQ,EACzC,CACI4C,EAAKgO,OAAOriB,MAAQlF,KAAK+vC,YAAYL,EAAO,GAAG,IAE/Cn2B,EAAKmM,KAAO,GACZ,MAAOgqB,EAAO3qC,OAAQ,CACpB,IAAIoS,EAAOu4B,EAAO,GAAG,GACrB,GAAIv4B,IAAS,KAAOA,IAAS,SAAWA,IAAS,UAAW,CAC1D,KACR,CACMoC,EAAKmM,MAAQgqB,EAAO/4B,QAAQ,EAClC,CAEI4C,EAAKoW,KAAKG,QAAU,GAEpB,IAAI4e,EACJ,MAAOgB,EAAO3qC,OAAQ,CACpB2pC,EAAQgB,EAAO/4B,QAEf,GAAI+3B,EAAM,KAAO,IAAK,CACpBn1B,EAAKoW,KAAKG,SAAW4e,EAAM,GAC3B,KACR,KAAa,CACL,GAAIA,EAAM,KAAO,QAAU,KAAKpuB,KAAKouB,EAAM,IAAK,CAC9C1uC,KAAKuwC,YAAY,CAAC7B,GAC5B,CACQn1B,EAAKoW,KAAKG,SAAW4e,EAAM,EACnC,CACA,CAEI,GAAIn1B,EAAKmM,KAAK,KAAO,KAAOnM,EAAKmM,KAAK,KAAO,IAAK,CAChDnM,EAAKoW,KAAKY,QAAUhX,EAAKmM,KAAK,GAC9BnM,EAAKmM,KAAOnM,EAAKmM,KAAKze,MAAM,EAClC,CAEI,IAAIupC,EAAc,GAClB,IAAIz4B,EACJ,MAAO23B,EAAO3qC,OAAQ,CACpBgT,EAAO23B,EAAO,GAAG,GACjB,GAAI33B,IAAS,SAAWA,IAAS,UAAW,MAC5Cy4B,EAAYt7B,KAAKw6B,EAAO/4B,QAC9B,CAEI3W,KAAKywC,wBAAwBf,GAE7B,IAAK,IAAIp1B,EAAIo1B,EAAO3qC,OAAS,EAAGuV,GAAK,EAAGA,IAAK,CAC3Co0B,EAAQgB,EAAOp1B,GACf,GAAIo0B,EAAM,GAAG75B,gBAAkB,aAAc,CAC3C0E,EAAKsX,UAAY,KACjB,IAAI1K,EAASnmB,KAAK0wC,WAAWhB,EAAQp1B,GACrC6L,EAASnmB,KAAK2wC,cAAcjB,GAAUvpB,EACtC,GAAIA,IAAW,cAAe5M,EAAKoW,KAAKkB,UAAY1K,EACpD,KACR,MAAa,GAAIuoB,EAAM,GAAG75B,gBAAkB,YAAa,CACjD,IAAI+7B,EAAQlB,EAAOzoC,MAAM,GACzB,IAAI7C,EAAM,GACV,IAAK,IAAIquB,EAAInY,EAAGmY,EAAI,EAAGA,IAAK,CAC1B,IAAItb,EAAOy5B,EAAMne,GAAG,GACpB,GAAIruB,EAAIohB,OAAOxe,QAAQ,OAAS,GAAKmQ,IAAS,QAAS,CACrD,KACZ,CACU/S,EAAMwsC,EAAM37B,MAAM,GAAK7Q,CACjC,CACQ,GAAIA,EAAIohB,OAAOxe,QAAQ,OAAS,EAAG,CACjCuS,EAAKsX,UAAY,KACjBtX,EAAKoW,KAAKkB,UAAYzsB,EACtBsrC,EAASkB,CACnB,CACA,CAEM,GAAIlC,EAAM,KAAO,SAAWA,EAAM,KAAO,UAAW,CAClD,KACR,CACA,CAEI,IAAImC,EAAUnB,EAAO1uB,MAAK1G,GAAKA,EAAE,KAAO,SAAWA,EAAE,KAAO,YAE5D,GAAIu2B,EAAS,CACXt3B,EAAKoW,KAAKG,SAAW0gB,EAAY1xC,KAAIwb,GAAKA,EAAE,KAAI2C,KAAK,IACrDuzB,EAAc,EACpB,CACIxwC,KAAKiwB,IAAI1W,EAAM,QAASi3B,EAAYhpB,OAAOkoB,GAASY,GAEpD,GAAI/2B,EAAK5a,MAAM6jB,SAAS,OAAS8tB,EAAgB,CAC/CtwC,KAAKkwC,qBAAqBR,EAChC,CACA,CAEE,WAAAW,CAAY3B,GACV,MAAM1uC,KAAKmpB,MAAMhO,MACf,eACA,CAAE9W,OAAQqqC,EAAM,IAChB,CAAErqC,OAAQqqC,EAAM,GAAKA,EAAM,GAAG3pC,QAEpC,CAEE,SAAA+rC,CAAUpC,GACR,IAAIn1B,EAAO,IAAIwvB,GACf/oC,KAAK61B,KAAKtc,EAAMm1B,EAAM,IACtBn1B,EAAK4wB,SAAW,GAChB5wB,EAAKoW,KAAKG,QAAU,GACpB9vB,KAAKmG,QAAUoT,CACnB,CAEE,GAAApU,CAAIupC,GACF,GAAI1uC,KAAKmG,QAAQiX,OAASpd,KAAKmG,QAAQiX,MAAMrY,OAAQ,CACnD/E,KAAKmG,QAAQwpB,KAAKR,UAAYnvB,KAAKmvB,SACzC,CACInvB,KAAKmvB,UAAY,MAEjBnvB,KAAKmG,QAAQwpB,KAAKnB,OAASxuB,KAAKmG,QAAQwpB,KAAKnB,OAAS,IAAMxuB,KAAK8uC,OACjE9uC,KAAK8uC,OAAS,GAEd,GAAI9uC,KAAKmG,QAAQ0R,OAAQ,CACvB7X,KAAKmG,QAAQohB,OAAOpiB,IAAMnF,KAAK+vC,YAAYrB,EAAM,IACjD1uC,KAAKmG,QAAQohB,OAAOpiB,IAAId,SACxBrE,KAAKmG,QAAUnG,KAAKmG,QAAQ0R,MAClC,KAAW,CACL7X,KAAK+wC,gBAAgBrC,EAC3B,CACA,CAEE,OAAAsC,GACE,GAAIhxC,KAAKmG,QAAQ0R,OAAQ7X,KAAKixC,gBAC9B,GAAIjxC,KAAKmG,QAAQiX,OAASpd,KAAKmG,QAAQiX,MAAMrY,OAAQ,CACnD/E,KAAKmG,QAAQwpB,KAAKR,UAAYnvB,KAAKmvB,SACzC,CACInvB,KAAKmG,QAAQwpB,KAAKnB,OAASxuB,KAAKmG,QAAQwpB,KAAKnB,OAAS,IAAMxuB,KAAK8uC,OACjE9uC,KAAK8a,KAAKyM,OAAOpiB,IAAMnF,KAAK+vC,YAAY/vC,KAAKsU,UAAU45B,WAC3D,CAEE,aAAAgD,CAAcxC,GACZ1uC,KAAK8uC,QAAUJ,EAAM,GACrB,GAAI1uC,KAAKmG,QAAQiX,MAAO,CACtB,IAAItF,EAAO9X,KAAKmG,QAAQiX,MAAMpd,KAAKmG,QAAQiX,MAAMrY,OAAS,GAC1D,GAAI+S,GAAQA,EAAKX,OAAS,SAAWW,EAAK6X,KAAKuC,aAAc,CAC3Dpa,EAAK6X,KAAKuC,aAAelyB,KAAK8uC,OAC9B9uC,KAAK8uC,OAAS,EACtB,CACA,CACA,CAIE,WAAAiB,CAAY1rC,GACV,IAAIkR,EAAMvV,KAAKmpB,MAAMgc,WAAW9gC,GAChC,MAAO,CACL8oB,OAAQ5X,EAAI6vB,IACZlY,KAAM3X,EAAI2X,KACV7oB,SAEN,CAEE,IAAAwxB,CAAKtc,EAAMlV,GACTrE,KAAKmG,QAAQ+O,KAAKqE,GAClBA,EAAKgO,OAAS,CACZ4B,MAAOnpB,KAAKmpB,MACZjkB,MAAOlF,KAAK+vC,YAAY1rC,IAE1BkV,EAAKoW,KAAKY,OAASvwB,KAAK8uC,OACxB9uC,KAAK8uC,OAAS,GACd,GAAIv1B,EAAKpC,OAAS,UAAWnX,KAAKmvB,UAAY,KAClD,CAEE,KAAA2a,CAAM5kC,GACJ,IAAIC,EAAM,MACV,IAAIgS,EAAO,KACX,IAAI2X,EAAQ,MACZ,IAAIqiB,EAAU,KACd,IAAIrB,EAAW,GACf,IAAIQ,EAAiBprC,EAAM,GAAGkwB,WAAW,MAEzC,IAAIsa,EAAS,GACb,IAAIhB,EAAQxpC,EACZ,MAAOwpC,EAAO,CACZv3B,EAAOu3B,EAAM,GACbgB,EAAOx6B,KAAKw5B,GAEZ,GAAIv3B,IAAS,KAAOA,IAAS,IAAK,CAChC,IAAKg6B,EAASA,EAAUzC,EACxBoB,EAAS56B,KAAKiC,IAAS,IAAM,IAAM,IAC3C,MAAa,GAAIm5B,GAAkBxhB,GAAS3X,IAAS,IAAK,CAClD,IAAKg6B,EAASA,EAAUzC,EACxBoB,EAAS56B,KAAK,IACtB,MAAa,GAAI46B,EAAS/qC,SAAW,EAAG,CAChC,GAAIoS,IAAS,IAAK,CAChB,GAAI2X,EAAO,CACT9uB,KAAK4wB,KAAK8e,EAAQY,GAClB,MACZ,KAAiB,CACL,KACZ,CACA,MAAe,GAAIn5B,IAAS,IAAK,CACvBnX,KAAKiyB,KAAKyd,GACV,MACV,MAAe,GAAIv4B,IAAS,IAAK,CACvBnX,KAAKsU,UAAUm6B,KAAKiB,EAAOz6B,OAC3B9P,EAAM,KACN,KACV,MAAe,GAAIgS,IAAS,IAAK,CACvB2X,EAAQ,IAClB,CACA,MAAa,GAAI3X,IAAS24B,EAASA,EAAS/qC,OAAS,GAAI,CACjD+qC,EAAS76B,MACT,GAAI66B,EAAS/qC,SAAW,EAAGosC,EAAU,IAC7C,CAEMzC,EAAQ1uC,KAAKsU,UAAUg6B,WAC7B,CAEI,GAAItuC,KAAKsU,UAAU+5B,YAAalpC,EAAM,KACtC,GAAI2qC,EAAS/qC,OAAS,EAAG/E,KAAKoxC,gBAAgBD,GAE9C,GAAIhsC,GAAO2pB,EAAO,CAChB,IAAKwhB,EAAgB,CACnB,MAAOZ,EAAO3qC,OAAQ,CACpB2pC,EAAQgB,EAAOA,EAAO3qC,OAAS,GAAG,GAClC,GAAI2pC,IAAU,SAAWA,IAAU,UAAW,MAC9C1uC,KAAKsU,UAAUm6B,KAAKiB,EAAOz6B,MACrC,CACA,CACMjV,KAAK4wB,KAAK8e,EAAQY,EACxB,KAAW,CACLtwC,KAAKuwC,YAAYb,EACvB,CACA,CAEE,KAAAxkC,GACE,IAAIwjC,EACJ,OAAQ1uC,KAAKsU,UAAU+5B,YAAa,CAClCK,EAAQ1uC,KAAKsU,UAAUg6B,YAEvB,OAAQI,EAAM,IACZ,IAAK,QACH1uC,KAAK8uC,QAAUJ,EAAM,GACrB,MAEF,IAAK,IACH1uC,KAAKkxC,cAAcxC,GACnB,MAEF,IAAK,IACH1uC,KAAKmF,IAAIupC,GACT,MAEF,IAAK,UACH1uC,KAAKywB,QAAQie,GACb,MAEF,IAAK,UACH1uC,KAAKwvB,OAAOkf,GACZ,MAEF,IAAK,IACH1uC,KAAK8wC,UAAUpC,GACf,MAEF,QACE1uC,KAAK8pC,MAAM4E,GACX,MAEV,CACI1uC,KAAKgxC,SACT,CAEE,uBAAAP,GAEF,CAEE,GAAAxgB,CAAI1W,EAAMmM,EAAMgqB,EAAQY,GACtB,IAAI5B,EAAOv3B,EACX,IAAIpS,EAAS2qC,EAAO3qC,OACpB,IAAIpG,EAAQ,GACZ,IAAI0yC,EAAQ,KACZ,IAAIt5B,EAAMD,EAEV,IAAK,IAAIwC,EAAI,EAAGA,EAAIvV,EAAQuV,GAAK,EAAG,CAClCo0B,EAAQgB,EAAOp1B,GACfnD,EAAOu3B,EAAM,GACb,GAAIv3B,IAAS,SAAWmD,IAAMvV,EAAS,IAAMurC,EAAgB,CAC3De,EAAQ,KAChB,MAAa,GAAIl6B,IAAS,UAAW,CAC7BW,EAAO43B,EAAOp1B,EAAI,GAAKo1B,EAAOp1B,EAAI,GAAG,GAAK,QAC1CvC,EAAO23B,EAAOp1B,EAAI,GAAKo1B,EAAOp1B,EAAI,GAAG,GAAK,QAC1C,IAAKi1B,GAAsBz3B,KAAUy3B,GAAsBx3B,GAAO,CAChE,GAAIpZ,EAAMsI,OAAO,KAAO,IAAK,CAC3BoqC,EAAQ,KACpB,KAAiB,CACL1yC,GAAS+vC,EAAM,EAC3B,CACA,KAAe,CACL2C,EAAQ,KAClB,CACA,KAAa,CACL1yC,GAAS+vC,EAAM,EACvB,CACA,CACI,IAAK2C,EAAO,CACV,IAAIphB,EAAMyf,EAAO5tB,QAAO,CAAC6G,EAAKrO,IAAMqO,EAAMrO,EAAE,IAAI,IAChDf,EAAKoW,KAAKjK,GAAQ,CAAEuK,MAAKtxB,QAC/B,CACI4a,EAAKmM,GAAQ/mB,CACjB,CAEE,IAAAszB,CAAKyd,GACHA,EAAOz6B,MAEP,IAAIsE,EAAO,IAAIwvB,GACf/oC,KAAK61B,KAAKtc,EAAMm2B,EAAO,GAAG,IAE1Bn2B,EAAKoW,KAAKG,QAAU9vB,KAAKgwC,yBAAyBN,GAClD1vC,KAAKiwB,IAAI1W,EAAM,WAAYm2B,GAC3B1vC,KAAKmG,QAAUoT,CACnB,CAEE,wBAAAy2B,CAAyBN,GACvB,IAAI4B,EACJ,IAAIxC,EAAS,GACb,MAAOY,EAAO3qC,OAAQ,CACpBusC,EAAgB5B,EAAOA,EAAO3qC,OAAS,GAAG,GAC1C,GAAIusC,IAAkB,SAAWA,IAAkB,UAAW,MAC9DxC,EAASY,EAAOz6B,MAAM,GAAK65B,CACjC,CACI,OAAOA,CACX,CAIE,0BAAAmB,CAA2BP,GACzB,IAAI33B,EACJ,IAAI+2B,EAAS,GACb,MAAOY,EAAO3qC,OAAQ,CACpBgT,EAAO23B,EAAO,GAAG,GACjB,GAAI33B,IAAS,SAAWA,IAAS,UAAW,MAC5C+2B,GAAUY,EAAO/4B,QAAQ,EAC/B,CACI,OAAOm4B,CACX,CAEE,aAAA6B,CAAcjB,GACZ,IAAI4B,EACJ,IAAIxC,EAAS,GACb,MAAOY,EAAO3qC,OAAQ,CACpBusC,EAAgB5B,EAAOA,EAAO3qC,OAAS,GAAG,GAC1C,GAAIusC,IAAkB,QAAS,MAC/BxC,EAASY,EAAOz6B,MAAM,GAAK65B,CACjC,CACI,OAAOA,CACX,CAEE,UAAA4B,CAAWhB,EAAQ5c,GACjB,IAAI7xB,EAAS,GACb,IAAK,IAAIqZ,EAAIwY,EAAMxY,EAAIo1B,EAAO3qC,OAAQuV,IAAK,CACzCrZ,GAAUyuC,EAAOp1B,GAAG,EAC1B,CACIo1B,EAAO9vB,OAAOkT,EAAM4c,EAAO3qC,OAAS+tB,GACpC,OAAO7xB,CACX,CAEE,aAAAgwC,GACE,IAAI17B,EAAMvV,KAAKmG,QAAQohB,OAAOriB,MAC9B,MAAMlF,KAAKmpB,MAAMhO,MAAM,iBAAkB5F,EAAI2X,KAAM3X,EAAI4X,OAC3D,CAEE,eAAAikB,CAAgBD,GACd,MAAMnxC,KAAKmpB,MAAMhO,MACf,mBACA,CAAE9W,OAAQ8sC,EAAQ,IAClB,CAAE9sC,OAAQ8sC,EAAQ,GAAK,GAE7B,CAEE,eAAAJ,CAAgBrC,GACd,MAAM1uC,KAAKmpB,MAAMhO,MACf,eACA,CAAE9W,OAAQqqC,EAAM,IAChB,CAAErqC,OAAQqqC,EAAM,GAAK,GAE3B,CAEE,WAAA6B,CAAYb,GACV,MAAM1vC,KAAKmpB,MAAMhO,MACf,eACA,CAAE9W,OAAQqrC,EAAO,GAAG,IACpB,CAAErrC,OAAQqrC,EAAO,GAAG,GAAKA,EAAO,GAAG,GAAG3qC,QAE5C,CAEE,aAAA6qC,CAAcr2B,EAAMm1B,GAClB,MAAM1uC,KAAKmpB,MAAMhO,MACf,uBACA,CAAE9W,OAAQqqC,EAAM,IAChB,CAAErqC,OAAQqqC,EAAM,GAAKA,EAAM,GAAG3pC,QAEpC,E,IAGAkW,GAAiB/H,GC9lBjB,IAAIi2B,GAAYlnC,GAChB,IAAIiR,GAAS/Q,GACb,IAAI6iC,GAAQ3iC,GAEZ,SAAS6I,GAAM2iB,EAAKjR,GAClB,IAAIuM,EAAQ,IAAI6b,GAAMnX,EAAKjR,GAC3B,IAAI3B,EAAS,IAAI/H,GAAOiW,GACxB,IACElO,EAAO/P,OACX,CAAI,MAAO8rB,GAqBP,MAAMA,CACV,CAEE,OAAO/b,EAAOH,IAChB,C,IAEAy2B,GAAiBrmC,GACjBA,GAAMpL,QAAUoL,GAEhBi+B,GAAU0B,cAAc3/B,ICvCxB,IAAImnB,QAAEA,GAAOC,GAAEA,IAAOrwB,GACtB,IAAIkkC,GAAehkC,GACnB,IAAIquB,GAAYnuB,GAChB,IAAI8mC,GAAY5W,GAChB,IAAIvZ,GAAWyrB,GAEf,IAAIqH,GAASnH,GACb,IAAIz5B,GAAQsmC,GACZ,IAAIj6B,GAAOk6B,GAEX,MAAMC,GAAqB,CACzBliB,OAAQ,SACRiB,QAAS,UACTG,KAAM,cACNE,SAAU,WACVhW,KAAM,OACNmX,KAAM,QAGR,MAAM0f,GAAe,CACnB3I,OAAQ,KACR4I,WAAY,KACZn6B,QAAS,KACTo6B,YAAa,KACb3c,YAAa,KACb4c,gBAAiB,KACjB94B,SAAU,KACV+4B,aAAc,KACdC,KAAM,KACNC,SAAU,KACV/F,cAAe,KACfgG,QAAS,KACT36B,KAAM,KACN46B,SAAU,KACVpJ,KAAM,KACNqJ,SAAU,MAGZ,MAAMC,GAAe,CACnBL,KAAM,KACN9F,cAAe,KACfgG,QAAS,MAGX,MAAMI,GAAW,EAEjB,SAASC,GAAU9sB,GACjB,cAAcA,IAAQ,iBAAmBA,EAAI+sB,OAAS,UACxD,CAEA,SAASC,GAAUl5B,GACjB,IAAIwD,EAAM,MACV,IAAI5F,EAAOu6B,GAAmBn4B,EAAKpC,MACnC,GAAIoC,EAAKpC,OAAS,OAAQ,CACxB4F,EAAMxD,EAAKmM,KAAK7Q,aACpB,MAAS,GAAI0E,EAAKpC,OAAS,SAAU,CACjC4F,EAAMxD,EAAK5E,KAAKE,aACpB,CAEE,GAAIkI,GAAOxD,EAAK0G,OAAQ,CACtB,MAAO,CACL9I,EACAA,EAAO,IAAM4F,EACbu1B,GACAn7B,EAAO,OACPA,EAAO,QAAU4F,EAEvB,MAAS,GAAIA,EAAK,CACd,MAAO,CAAC5F,EAAMA,EAAO,IAAM4F,EAAK5F,EAAO,OAAQA,EAAO,QAAU4F,EACpE,MAAS,GAAIxD,EAAK0G,OAAQ,CACtB,MAAO,CAAC9I,EAAMm7B,GAAUn7B,EAAO,OACnC,KAAS,CACL,MAAO,CAACA,EAAMA,EAAO,OACzB,CACA,CAEA,SAASu7B,GAAQn5B,GACf,IAAIo5B,EACJ,GAAIp5B,EAAKpC,OAAS,WAAY,CAC5Bw7B,EAAS,CAAC,WAAYL,GAAU,eACpC,MAAS,GAAI/4B,EAAKpC,OAAS,OAAQ,CAC/Bw7B,EAAS,CAAC,OAAQL,GAAU,WAChC,KAAS,CACLK,EAASF,GAAUl5B,EACvB,CAEE,MAAO,CACLq5B,WAAY,EACZD,SACArJ,SAAU,EACV/vB,OACAs5B,aAAc,EACdC,SAAU,GAEd,CAEA,SAASC,GAAWx5B,GAClBA,EAAK8Y,IAAW,MAChB,GAAI9Y,EAAK6D,MAAO7D,EAAK6D,MAAMnD,SAAQK,GAAKy4B,GAAWz4B,KACnD,OAAOf,CACT,CAEA,IAAIy5B,GAAU,GAEd,MAAM5H,GACJ,WAAAthC,CAAYiiC,EAAWle,EAAKjR,GAC1B5c,KAAKizC,YAAc,MACnBjzC,KAAKoqC,UAAY,MAEjB,IAAItvB,EACJ,UACS+S,IAAQ,UACfA,IAAQ,OACPA,EAAI1W,OAAS,QAAU0W,EAAI1W,OAAS,YACrC,CACA2D,EAAOi4B,GAAWllB,EACxB,MAAW,GAAIA,aAAeud,IAAcvd,aAAeie,GAAQ,CAC7DhxB,EAAOi4B,GAAWllB,EAAI/S,MACtB,GAAI+S,EAAI/uB,IAAK,CACX,UAAW8d,EAAK9d,MAAQ,YAAa8d,EAAK9d,IAAM,GAChD,IAAK8d,EAAK9d,IAAIyjC,OAAQ3lB,EAAK9d,IAAIyjC,OAAS,MACxC3lB,EAAK9d,IAAIgZ,KAAO+V,EAAI/uB,GAC5B,CACA,KAAW,CACL,IAAImc,EAAS/P,GACb,GAAI0R,EAAKs2B,OAAQj4B,EAAS2B,EAAKs2B,OAAOhoC,MACtC,GAAI0R,EAAK3B,OAAQA,EAAS2B,EAAK3B,OAC/B,GAAIA,EAAO/P,MAAO+P,EAASA,EAAO/P,MAElC,IACE4P,EAAOG,EAAO4S,EAAKjR,EAC3B,CAAQ,MAAOzB,GACPnb,KAAKoqC,UAAY,KACjBpqC,KAAKmb,MAAQA,CACrB,CAEM,GAAIL,IAASA,EAAKwX,IAAK,CAErB6W,GAAUkB,QAAQvvB,EAC1B,CACA,CAEI9a,KAAKiB,OAAS,IAAI6qC,GAAOC,EAAWjxB,EAAM8B,GAC1C5c,KAAKmzC,QAAU,IAAKH,GAAOA,QAAEA,GAAS/xC,OAAQjB,KAAKiB,QACnDjB,KAAKozC,QAAUpzC,KAAK+rC,UAAUqH,QAAQt0C,KAAIuuB,IACxC,UAAWA,IAAW,UAAYA,EAAO6kB,QAAS,CAChD,MAAO,IAAK7kB,KAAWA,EAAO6kB,QAAQlyC,KAAKiB,QACnD,KAAa,CACL,OAAOosB,CACf,IAEA,CAEE,KAAAgmB,GACE,GAAIrzC,KAAKmb,MAAO,OAAOm4B,QAAQC,OAAOvzC,KAAKmb,OAC3C,GAAInb,KAAKoqC,UAAW,OAAOkJ,QAAQ9O,QAAQxkC,KAAKiB,QAChD,IAAKjB,KAAKwzC,WAAY,CACpBxzC,KAAKwzC,WAAaxzC,KAAKyzC,UAC7B,CACI,OAAOzzC,KAAKwzC,UAChB,CAEE,MAAME,GACJ,OAAO1zC,KAAKqzC,QAAQM,MAAMD,EAC9B,CAEE,QAAQE,GACN,OAAO5zC,KAAKqzC,QAAQb,KAAKoB,EAAWA,EACxC,CAEE,aAAAC,GACE,MAAM,IAAIh9B,MAAM,uDACpB,CAEE,WAAAi9B,CAAY34B,EAAO5B,GACjB,IAAI8T,EAASrtB,KAAKiB,OAAOgrC,WACzB,IACE,GAAI1yB,EAAMA,EAAKoZ,WAAWxX,GAC1Bnb,KAAKmb,MAAQA,EACb,GAAIA,EAAMxG,OAAS,mBAAqBwG,EAAMkS,OAAQ,CACpDlS,EAAMkS,OAASA,EAAO6e,cACtB/wB,EAAMsS,YACd,CAuBA,CAAM,MAAOsmB,GAGP,GAAIhpB,SAAWA,QAAQ5P,MAAO4P,QAAQ5P,MAAM44B,EAClD,CACI,OAAO54B,CACX,CAEE,eAAA64B,GACEh0C,KAAKi0C,UAAY,GACjB,IAAIlhB,EAAM,CAAC1F,EAAQlW,EAAM0yB,KACvB,IAAK7pC,KAAKi0C,UAAU98B,GAAOnX,KAAKi0C,UAAU98B,GAAQ,GAClDnX,KAAKi0C,UAAU98B,GAAMjC,KAAK,CAACmY,EAAQwc,GAAG,EAExC,IAAK,IAAIxc,KAAUrtB,KAAKozC,QAAS,CAC/B,UAAW/lB,IAAW,SAAU,CAC9B,IAAK,IAAI6mB,KAAS7mB,EAAQ,CACxB,IAAKskB,GAAauC,IAAU,SAAS5zB,KAAK4zB,GAAQ,CAChD,MAAM,IAAIr9B,MACR,iBAAiBq9B,QAAY7mB,EAAO6e,kBAClC,0BAA0BlsC,KAAK+rC,UAAUoI,gBAEzD,CACU,IAAK9B,GAAa6B,GAAQ,CACxB,UAAW7mB,EAAO6mB,KAAW,SAAU,CACrC,IAAK,IAAI7zB,KAAUgN,EAAO6mB,GAAQ,CAChC,GAAI7zB,IAAW,IAAK,CAClB0S,EAAI1F,EAAQ6mB,EAAO7mB,EAAO6mB,GAAO7zB,GACnD,KAAuB,CACL0S,EACE1F,EACA6mB,EAAQ,IAAM7zB,EAAOxL,cACrBwY,EAAO6mB,GAAO7zB,GAElC,CACA,CACA,MAAmB,UAAWgN,EAAO6mB,KAAW,WAAY,CAC9CnhB,EAAI1F,EAAQ6mB,EAAO7mB,EAAO6mB,GACxC,CACA,CACA,CACA,CACA,CACIl0C,KAAKo0C,YAAc51C,OAAO4a,KAAKpZ,KAAKi0C,WAAWlvC,OAAS,CAC5D,CAEE,cAAM0uC,GACJzzC,KAAKqtB,OAAS,EACd,IAAK,IAAI/S,EAAI,EAAGA,EAAIta,KAAKozC,QAAQruC,OAAQuV,IAAK,CAC5C,IAAI+S,EAASrtB,KAAKozC,QAAQ94B,GAC1B,IAAI+5B,EAAUr0C,KAAKs0C,UAAUjnB,GAC7B,GAAIklB,GAAU8B,GAAU,CACtB,UACQA,CAChB,CAAU,MAAOl5B,GACP,MAAMnb,KAAK8zC,YAAY34B,EACjC,CACA,CACA,CAEInb,KAAKg0C,kBACL,GAAIh0C,KAAKo0C,YAAa,CACpB,IAAIt5B,EAAO9a,KAAKiB,OAAO6Z,KACvB,OAAQA,EAAKuX,IAAU,CACrBvX,EAAKuX,IAAW,KAChB,IAAIxe,EAAQ,CAAC6+B,GAAQ53B,IACrB,MAAOjH,EAAM9O,OAAS,EAAG,CACvB,IAAIsvC,EAAUr0C,KAAKu0C,UAAU1gC,GAC7B,GAAI0+B,GAAU8B,GAAU,CACtB,UACQA,CACpB,CAAc,MAAOrd,GACP,IAAIzd,EAAO1F,EAAMA,EAAM9O,OAAS,GAAGwU,KACnC,MAAMvZ,KAAK8zC,YAAY9c,EAAGzd,EACxC,CACA,CACA,CACA,CAEM,GAAIvZ,KAAKi0C,UAAUhC,SAAU,CAC3B,IAAK,IAAK5kB,EAAQmnB,KAAYx0C,KAAKi0C,UAAUhC,SAAU,CACrDjyC,KAAKiB,OAAOgrC,WAAa5e,EACzB,IACE,GAAIvS,EAAK3D,OAAS,WAAY,CAC5B,IAAIs9B,EAAQ35B,EAAKsC,MAAMte,KAAI41C,GACzBF,EAAQE,EAAS10C,KAAKmzC,iBAGlBG,QAAQ3qB,IAAI8rB,EAChC,KAAmB,OACCD,EAAQ15B,EAAM9a,KAAKmzC,QACvC,CACA,CAAY,MAAOnc,GACP,MAAMh3B,KAAK8zC,YAAY9c,EACnC,CACA,CACA,CACA,CAEIh3B,KAAKoqC,UAAY,KACjB,OAAOpqC,KAAKwwB,WAChB,CAEE,SAAA8jB,CAAUjnB,GACRrtB,KAAKiB,OAAOgrC,WAAa5e,EACzB,IACE,UAAWA,IAAW,UAAYA,EAAO2kB,KAAM,CAC7C,GAAIhyC,KAAKiB,OAAO6Z,KAAK3D,OAAS,WAAY,CACxC,IAAIs9B,EAAQz0C,KAAKiB,OAAO6Z,KAAKsC,MAAMte,KAAIgc,GACrCuS,EAAO2kB,KAAKl3B,EAAM9a,KAAKmzC,WAGzB,GAAIZ,GAAUkC,EAAM,IAAK,CACvB,OAAOnB,QAAQ3qB,IAAI8rB,EAC/B,CAEU,OAAOA,CACjB,CAEQ,OAAOpnB,EAAO2kB,KAAKhyC,KAAKiB,OAAO6Z,KAAM9a,KAAKmzC,QAClD,MAAa,UAAW9lB,IAAW,WAAY,CACvC,OAAOA,EAAOrtB,KAAKiB,OAAO6Z,KAAM9a,KAAKiB,OAC7C,CACA,CAAM,MAAOka,GACP,MAAMnb,KAAK8zC,YAAY34B,EAC7B,CACA,CAEE,SAAAqV,GACE,GAAIxwB,KAAKmb,MAAO,MAAMnb,KAAKmb,MAC3B,GAAInb,KAAKizC,YAAa,OAAOjzC,KAAKiB,OAClCjB,KAAKizC,YAAc,KAEnBjzC,KAAK20C,OAEL,IAAI/3B,EAAO5c,KAAKiB,OAAO2b,KACvB,IAAIxY,EAAMosB,GACV,GAAI5T,EAAKs2B,OAAQ9uC,EAAMwY,EAAKs2B,OAAO1iB,UACnC,GAAI5T,EAAKuV,YAAa/tB,EAAMwY,EAAKuV,YACjC,GAAI/tB,EAAIosB,UAAWpsB,EAAMA,EAAIosB,UAE7B,IAAI1xB,EAAM,IAAIqnC,GAAa/hC,EAAKpE,KAAKiB,OAAO6Z,KAAM9a,KAAKiB,OAAO2b,MAC9D,IAAIpI,EAAO1V,EAAIyoC,WACfvnC,KAAKiB,OAAO4sB,IAAMrZ,EAAK,GACvBxU,KAAKiB,OAAOnC,IAAM0V,EAAK,GAEvB,OAAOxU,KAAKiB,MAChB,CAEE,IAAA0zC,GACE,GAAI30C,KAAKmb,MAAO,MAAMnb,KAAKmb,MAC3B,GAAInb,KAAKoqC,UAAW,OAAOpqC,KAAKiB,OAChCjB,KAAKoqC,UAAY,KAEjB,GAAIpqC,KAAKwzC,WAAY,CACnB,MAAMxzC,KAAK6zC,eACjB,CAEI,IAAK,IAAIxmB,KAAUrtB,KAAKozC,QAAS,CAC/B,IAAIiB,EAAUr0C,KAAKs0C,UAAUjnB,GAC7B,GAAIklB,GAAU8B,GAAU,CACtB,MAAMr0C,KAAK6zC,eACnB,CACA,CAEI7zC,KAAKg0C,kBACL,GAAIh0C,KAAKo0C,YAAa,CACpB,IAAIt5B,EAAO9a,KAAKiB,OAAO6Z,KACvB,OAAQA,EAAKuX,IAAU,CACrBvX,EAAKuX,IAAW,KAChBryB,KAAK40C,SAAS95B,EACtB,CACM,GAAI9a,KAAKi0C,UAAUhC,SAAU,CAC3B,GAAIn3B,EAAK3D,OAAS,WAAY,CAC5B,IAAK,IAAIu9B,KAAW55B,EAAKsC,MAAO,CAC9Bpd,KAAK60C,UAAU70C,KAAKi0C,UAAUhC,SAAUyC,EACpD,CACA,KAAe,CACL10C,KAAK60C,UAAU70C,KAAKi0C,UAAUhC,SAAUn3B,EAClD,CACA,CACA,CAEI,OAAO9a,KAAKiB,MAChB,CAEE,IAAAuxC,CAAKsC,EAAapB,GAUhB,OAAO1zC,KAAKqzC,QAAQb,KAAKsC,EAAapB,EAC1C,CAEE,QAAA33B,GACE,OAAO/b,KAAK6tB,GAChB,CAEE,SAAAgnB,CAAU/B,EAAUv5B,GAClB,IAAK,IAAK8T,EAAQmnB,KAAY1B,EAAU,CACtC9yC,KAAKiB,OAAOgrC,WAAa5e,EACzB,IAAIgnB,EACJ,IACEA,EAAUG,EAAQj7B,EAAMvZ,KAAKmzC,QACrC,CAAQ,MAAOnc,GACP,MAAMh3B,KAAK8zC,YAAY9c,EAAGzd,EAAKyb,QACvC,CACM,GAAIzb,EAAKpC,OAAS,QAAUoC,EAAKpC,OAAS,aAAeoC,EAAK1B,OAAQ,CACpE,OAAO,IACf,CACM,GAAI06B,GAAU8B,GAAU,CACtB,MAAMr0C,KAAK6zC,eACnB,CACA,CACA,CAEE,SAAAU,CAAU1gC,GACR,IAAIkhC,EAAQlhC,EAAMA,EAAM9O,OAAS,GACjC,IAAIwU,KAAEA,EAAIu5B,SAAEA,GAAaiC,EAEzB,GAAIx7B,EAAKpC,OAAS,QAAUoC,EAAKpC,OAAS,aAAeoC,EAAK1B,OAAQ,CACpEhE,EAAMoB,MACN,MACN,CAEI,GAAI69B,EAAS/tC,OAAS,GAAKgwC,EAAMlC,aAAeC,EAAS/tC,OAAQ,CAC/D,IAAKsoB,EAAQmnB,GAAW1B,EAASiC,EAAMlC,cACvCkC,EAAMlC,cAAgB,EACtB,GAAIkC,EAAMlC,eAAiBC,EAAS/tC,OAAQ,CAC1CgwC,EAAMjC,SAAW,GACjBiC,EAAMlC,aAAe,CAC7B,CACM7yC,KAAKiB,OAAOgrC,WAAa5e,EACzB,IACE,OAAOmnB,EAAQj7B,EAAKma,UAAW1zB,KAAKmzC,QAC5C,CAAQ,MAAOnc,GACP,MAAMh3B,KAAK8zC,YAAY9c,EAAGzd,EAClC,CACA,CAEI,GAAIw7B,EAAMzL,WAAa,EAAG,CACxB,IAAIA,EAAWyL,EAAMzL,SACrB,IAAIpvB,EACJ,MAAQA,EAAQX,EAAK6D,MAAM7D,EAAKiwB,QAAQF,IAAa,CACnD/vB,EAAKiwB,QAAQF,IAAa,EAC1B,IAAKpvB,EAAMmY,IAAU,CACnBnY,EAAMmY,IAAW,KACjBxe,EAAMqB,KAAKw9B,GAAQx4B,IACnB,MACV,CACA,CACM66B,EAAMzL,SAAW,SACV/vB,EAAKiwB,QAAQF,EAC1B,CAEI,IAAIqJ,EAASoC,EAAMpC,OACnB,MAAOoC,EAAMnC,WAAaD,EAAO5tC,OAAQ,CACvC,IAAImvC,EAAQvB,EAAOoC,EAAMnC,YACzBmC,EAAMnC,YAAc,EACpB,GAAIsB,IAAU5B,GAAU,CACtB,GAAI/4B,EAAK6D,OAAS7D,EAAK6D,MAAMrY,OAAQ,CACnCwU,EAAK8Y,IAAW,KAChB0iB,EAAMzL,SAAW/vB,EAAKgwB,aAChC,CACQ,MACR,MAAa,GAAIvpC,KAAKi0C,UAAUC,GAAQ,CAChCa,EAAMjC,SAAW9yC,KAAKi0C,UAAUC,GAChC,MACR,CACA,CACIrgC,EAAMoB,KACV,CAEE,QAAA2/B,CAASr7B,GACPA,EAAK8Y,IAAW,KAChB,IAAIsgB,EAASF,GAAUl5B,GACvB,IAAK,IAAI26B,KAASvB,EAAQ,CACxB,GAAIuB,IAAU5B,GAAU,CACtB,GAAI/4B,EAAK6D,MAAO,CACd7D,EAAK8vB,MAAKnvB,IACR,IAAKA,EAAMmY,IAAUryB,KAAK40C,SAAS16B,EAAK,GAEpD,CACA,KAAa,CACL,IAAI44B,EAAW9yC,KAAKi0C,UAAUC,GAC9B,GAAIpB,EAAU,CACZ,GAAI9yC,KAAK60C,UAAU/B,EAAUv5B,EAAKma,WAAY,MACxD,CACA,CACA,CACA,CAEE,QAAAyY,GACE,OAAOnsC,KAAK20C,OAAOxI,UACvB,CAEE,WAAItF,GACF,OAAO7mC,KAAKwwB,YAAYqW,OAC5B,CAEE,OAAIhZ,GACF,OAAO7tB,KAAKwwB,YAAY3C,GAC5B,CAEE,OAAI/uB,GACF,OAAOkB,KAAKwwB,YAAY1xB,GAC5B,CAEE,YAAIktC,GACF,OAAOhsC,KAAK20C,OAAO3I,QACvB,CAEE,QAAIpvB,GACF,OAAO5c,KAAKiB,OAAO2b,IACvB,CAEE,aAAImvB,GACF,OAAO/rC,KAAKiB,OAAO8qC,SACvB,CAEE,QAAIjxB,GACF,OAAO9a,KAAK20C,OAAO75B,IACvB,CAEE,IAAKgM,OAAOkuB,eACV,MAAO,YACX,EAGA5J,GAAW6J,gBAAkBnK,IAC3BkI,GAAUlI,CAAA,E,IAGZoK,GAAiB9J,GACjBA,GAAWtrC,QAAUsrC,GAErB7zB,GAAKi0B,mBAAmBJ,IACxBpyB,GAASwyB,mBAAmBJ,ICniB5B,IAAIjF,GAAelkC,GACnB,IAAIuuB,GAAYruB,GAEhB,IAAI+I,GAAQqnB,GACZ,MAAMuZ,GAASrH,GAEf,MAAM0Q,GACJ,WAAArrC,CAAYiiC,EAAWle,EAAKjR,GAC1BiR,EAAMA,EAAI9R,WACV/b,KAAKizC,YAAc,MAEnBjzC,KAAKo1C,WAAarJ,EAClB/rC,KAAKq1C,KAAOxnB,EACZ7tB,KAAKs1C,MAAQ14B,EACb5c,KAAKu1C,KAAOj1C,UACZ,IAAIwa,EAEJ,IAAI1W,EAAMosB,GACVxwB,KAAKiB,OAAS,IAAI6qC,GAAO9rC,KAAKo1C,WAAYt6B,EAAM9a,KAAKs1C,OACrDt1C,KAAKiB,OAAO4sB,IAAMA,EAElB,IAAI0H,EAAOv1B,KACXxB,OAAOC,eAAeuB,KAAKiB,OAAQ,OAAQ,CACzC,GAAArB,GACE,OAAO21B,EAAKza,IACpB,IAGI,IAAIhc,EAAM,IAAIqnC,GAAa/hC,EAAK0W,EAAM9a,KAAKs1C,MAAOznB,GAClD,GAAI/uB,EAAI0kC,QAAS,CACf,IAAKgS,EAAcC,GAAgB32C,EAAIyoC,WACvC,GAAIiO,EAAc,CAChBx1C,KAAKiB,OAAO4sB,IAAM2nB,CAC1B,CACM,GAAIC,EAAc,CAChBz1C,KAAKiB,OAAOnC,IAAM22C,CAC1B,CACA,KAAW,CACL32C,EAAIwoC,kBACJtnC,KAAKiB,OAAO4sB,IAAM/uB,EAAI+uB,GAC5B,CACA,CAEE,KAAAwlB,GACE,GAAIrzC,KAAKmb,MAAO,OAAOm4B,QAAQC,OAAOvzC,KAAKmb,OAC3C,OAAOm4B,QAAQ9O,QAAQxkC,KAAKiB,OAChC,CAEE,MAAMyyC,GACJ,OAAO1zC,KAAKqzC,QAAQM,MAAMD,EAC9B,CAEE,QAAQE,GACN,OAAO5zC,KAAKqzC,QAAQb,KAAKoB,EAAWA,EACxC,CAEE,IAAAe,GACE,GAAI30C,KAAKmb,MAAO,MAAMnb,KAAKmb,MAC3B,OAAOnb,KAAKiB,MAChB,CAEE,IAAAuxC,CAAKsC,EAAapB,GAWhB,OAAO1zC,KAAKqzC,QAAQb,KAAKsC,EAAapB,EAC1C,CAEE,QAAA33B,GACE,OAAO/b,KAAKq1C,IAChB,CAEE,QAAAlJ,GACE,MAAO,EACX,CAEE,WAAItF,GACF,OAAO7mC,KAAKiB,OAAO4sB,GACvB,CAEE,OAAIA,GACF,OAAO7tB,KAAKiB,OAAO4sB,GACvB,CAEE,OAAI/uB,GACF,OAAOkB,KAAKiB,OAAOnC,GACvB,CAEE,YAAIktC,GACF,MAAO,EACX,CAEE,QAAIpvB,GACF,OAAO5c,KAAKiB,OAAO2b,IACvB,CAEE,aAAImvB,GACF,OAAO/rC,KAAKiB,OAAO8qC,SACvB,CAEE,QAAIjxB,GACF,GAAI9a,KAAK01C,MAAO,CACd,OAAO11C,KAAK01C,KAClB,CAEI,IAAI56B,EACJ,IAAIG,EAAS/P,GAEb,IACE4P,EAAOG,EAAOjb,KAAKq1C,KAAMr1C,KAAKs1C,MACpC,CAAM,MAAOn6B,GACPnb,KAAKmb,MAAQA,CACnB,CAEI,GAAInb,KAAKmb,MAAO,CACd,MAAMnb,KAAKmb,KACjB,KAAW,CACLnb,KAAK01C,MAAQ56B,EACb,OAAOA,CACb,CACA,CAEE,IAAKgM,OAAOkuB,eACV,MAAO,cACX,E,IAGAW,GAAiBR,GACjBA,GAAar1C,QAAUq1C,GCvIvB,IAAIA,GAAelzC,GACnB,IAAImpC,GAAajpC,GACjB,IAAI6W,GAAW3W,GACf,IAAIkV,GAAOgb,GAEX,MAAM8Y,GACJ,WAAAvhC,CAAYspC,EAAU,IACpBpzC,KAAKm0C,QAAU,SACfn0C,KAAKozC,QAAUpzC,KAAKopC,UAAUgK,EAClC,CAEE,SAAAhK,CAAUgK,GACR,IAAIwC,EAAa,GACjB,IAAK,IAAIt7B,KAAK84B,EAAS,CACrB,GAAI94B,EAAE04B,UAAY,KAAM,CACtB14B,EAAIA,GACZ,MAAa,GAAIA,EAAE04B,QAAS,CACpB14B,EAAIA,EAAE04B,OACd,CAEM,UAAW14B,IAAM,UAAYsE,MAAMC,QAAQvE,EAAE84B,SAAU,CACrDwC,EAAaA,EAAWpuB,OAAOlN,EAAE84B,QACzC,MAAa,UAAW94B,IAAM,UAAYA,EAAE4xB,cAAe,CACnD0J,EAAW1gC,KAAKoF,EACxB,MAAa,UAAWA,IAAM,WAAY,CAClCs7B,EAAW1gC,KAAKoF,EACxB,MAAa,UAAWA,IAAM,WAAaA,EAAEpP,OAASoP,EAAEkW,gBAQ3C,CACL,MAAM,IAAI3Z,MAAMyD,EAAI,2BAC5B,CACA,CACI,OAAOs7B,CACX,CAEE,OAAA3qB,CAAQ4C,EAAKjR,EAAO,IAClB,IACG5c,KAAKozC,QAAQruC,SACb6X,EAAK3B,SACL2B,EAAKuV,cACLvV,EAAKs2B,OACN,CACA,OAAO,IAAIiC,GAAan1C,KAAM6tB,EAAKjR,EACzC,KAAW,CACL,OAAO,IAAIwuB,GAAWprC,KAAM6tB,EAAKjR,EACvC,CACA,CAEE,GAAAi5B,CAAIxoB,GACFrtB,KAAKozC,QAAUpzC,KAAKozC,QAAQ5rB,OAAOxnB,KAAKopC,UAAU,CAAC/b,KACnD,OAAOrtB,IACX,E,IAGA+rC,GAAiBV,GACjBA,GAAUvrC,QAAUurC,GAEpB9zB,GAAKk0B,kBAAkBJ,IACvBryB,GAASyyB,kBAAkBJ,IChE3B,IAAInW,GAAcjzB,GAClB,IAAIogC,GAAclgC,GAClB,IAAIsV,GAAUpV,GACd,IAAI2mC,GAASzW,GACb,IAAIyS,GAAQP,GACZ,IAAIltB,GAAOmtB,GACX,IAAIqE,GAAOpE,GAEX,SAASmR,GAAS9P,EAAMxR,GACtB,GAAI5V,MAAMC,QAAQmnB,GAAO,OAAOA,EAAKlnC,KAAI67B,GAAKmb,GAASnb,KAEvD,IAAMnG,OAAQuhB,KAAcrjB,GAAasT,EACzC,GAAI+P,EAAW,CACbvhB,EAAS,GACT,IAAK,IAAIrL,KAAS4sB,EAAW,CAC3B,IAAIC,EAAgB,IAAK7sB,EAAO+O,UAAW8M,GAAM9jC,WACjD,GAAI80C,EAAcl3C,IAAK,CACrBk3C,EAAcl3C,IAAM,IACfk3C,EAAcl3C,IACjBo5B,UAAWmK,GAAYnhC,UAEjC,CACMszB,EAAOtf,KAAK8gC,EAClB,CACA,CACE,GAAItjB,EAAStV,MAAO,CAClBsV,EAAStV,MAAQ4oB,EAAK5oB,MAAMte,KAAI67B,GAAKmb,GAASnb,EAAGnG,IACrD,CACE,GAAI9B,EAASnL,OAAQ,CACnB,IAAIqN,QAAEA,KAAYrN,GAAWmL,EAASnL,OACtCmL,EAASnL,OAASA,EAClB,GAAIqN,GAAW,KAAM,CACnBlC,EAASnL,OAAO4B,MAAQqL,EAAOI,EACrC,CACA,CACE,GAAIlC,EAASvb,OAAS,OAAQ,CAC5B,OAAO,IAAII,GAAKmb,EACpB,MAAS,GAAIA,EAASvb,OAAS,OAAQ,CACnC,OAAO,IAAI+d,GAAYxC,EAC3B,MAAS,GAAIA,EAASvb,OAAS,OAAQ,CACnC,OAAO,IAAI4xB,GAAKrW,EACpB,MAAS,GAAIA,EAASvb,OAAS,UAAW,CACtC,OAAO,IAAIM,GAAQib,EACvB,MAAS,GAAIA,EAASvb,OAAS,SAAU,CACrC,OAAO,IAAI6xB,GAAOtW,EACtB,KAAS,CACL,MAAM,IAAI7b,MAAM,sBAAwBmvB,EAAK7uB,KACjD,CACA,C,IAEA8+B,GAAiBH,GACjBA,GAASh2C,QAAUg2C,GCnDnB,IAAI9oB,GAAiB/qB,GACrB,IAAIizB,GAAc/yB,GAClB,IAAIipC,GAAa/oC,GACjB,IAAI8mC,GAAY5W,GAChB,IAAI8Y,GAAY5G,GAChB,IAAIjU,GAAYkU,GAChB,IAAIoR,GAAWnR,GACf,IAAI3rB,GAAWw4B,GACf,IAAI9F,GAAU+F,GACd,IAAIh6B,GAAUy+B,GACd,IAAIlN,GAASmN,GACb,IAAIrK,GAASsK,GACb,IAAIpR,GAAQqR,GACZ,IAAInrC,GAAQorC,GACZ,IAAIxc,GAAOyc,GACX,IAAIxN,GAAOyN,GACX,IAAIj/B,GAAOk/B,GACX,IAAI7+B,GAAO8+B,GAEX,SAAS1D,MAAWI,GAClB,GAAIA,EAAQruC,SAAW,GAAK6Z,MAAMC,QAAQu0B,EAAQ,IAAK,CACrDA,EAAUA,EAAQ,EACtB,CACE,OAAO,IAAI/H,GAAU+H,EACvB,CAEAJ,GAAQ3lB,OAAS,SAASA,EAAO1Y,EAAMgiC,GACrC,IAAIC,EAAiB,MACrB,SAASC,KAAWjN,GAElB,GAAI7e,SAAWA,QAAQgK,OAAS6hB,EAAgB,CAC9CA,EAAiB,KAEjB7rB,QAAQgK,KACNpgB,EACE,sDACA,kEAEJ,GAAIsW,GAAQ6rB,IAAIC,MAAQ9rB,GAAQ6rB,IAAIC,KAAK3hB,WAAW,MAAO,CAGzDrK,QAAQgK,KACNpgB,EACE,mCACA,qCAEZ,CACA,CACI,IAAIqiC,EAAcL,KAAe/M,GACjCoN,EAAY9K,cAAgBv3B,EAC5BqiC,EAAYC,gBAAiB,IAAI5L,IAAY8I,QAC7C,OAAO6C,CACX,CAEE,IAAIpG,EACJpyC,OAAOC,eAAeo4C,EAAS,UAAW,CACxC,GAAAj3C,GACE,IAAKgxC,EAAOA,EAAQiG,IACpB,OAAOjG,CACb,IAGEiG,EAAQ5rB,QAAU,SAAU4C,EAAKqpB,EAAaC,GAC5C,OAAOnE,GAAQ,CAAC6D,EAAQM,KAAclsB,QAAQ4C,EAAKqpB,EACvD,EAEE,OAAOL,CACT,EAEA7D,GAAQxiB,UAAYA,GACpBwiB,GAAQ9nC,MAAQA,GAChB8nC,GAAQ8C,SAAWA,GACnB9C,GAAQlZ,KAAOA,GAEfkZ,GAAQviB,QAAUiC,GAAY,IAAIjb,GAAQib,GAC1CsgB,GAAQrE,OAASjc,GAAY,IAAIsW,GAAOtW,GACxCsgB,GAAQpiB,KAAO8B,GAAY,IAAIwC,GAAYxC,GAC3CsgB,GAAQ/gB,KAAOS,GAAY,IAAIqW,GAAKrW,GACpCsgB,GAAQl4B,KAAO4X,GAAY,IAAInb,GAAKmb,GACpCsgB,GAAQliB,SAAW4B,GAAY,IAAI1Z,GAAS0Z,GAE5CsgB,GAAQhmB,eAAiBA,GACzBgmB,GAAQ9d,YAAcA,GACtB8d,GAAQ7J,UAAYA,GACpB6J,GAAQ3H,UAAYA,GACpB2H,GAAQh6B,SAAWA,GACnBg6B,GAAQv7B,QAAUA,GAClBu7B,GAAQtH,QAAUA,GAClBsH,GAAQhK,OAASA,GACjBgK,GAAQlH,OAASA,GACjBkH,GAAQhO,MAAQA,GAChBgO,GAAQjK,KAAOA,GACfiK,GAAQz7B,KAAOA,GACfy7B,GAAQp7B,KAAOA,GAEfwzB,GAAW6J,gBAAgBjC,I,IAE3BoE,GAAiBpE,GACjBA,GAAQlzC,QAAUkzC,GCpGlB,MAAMqE,GAAap1C,GACnB,MAAMikB,GAAqB/jB,GAC3B,MAAMmkB,cAAEA,IAAkBjkB,GAC1B,MAAM+kB,GAAYmL,GAClB,MAAMrJ,GAAcub,WACpB,MAAQv5B,MAAOosC,IAAiB5S,GAEhC,MAAM6S,GAAY,CAChB,MAAO,QAAS,QAAS,UAAW,MACpC,SAAU,MAAO,SAAU,SAG7B,MAAMC,GAAiB,CAAE,SAAU,SAEnC,SAASnO,GAAK5jB,EAAKokB,GACjB,GAAIpkB,EAAK,CACPjnB,OAAO4a,KAAKqM,GAAKxL,SAAQ,SAAU8C,GACjC8sB,EAAGpkB,EAAI1I,GAAMA,EACnB,GACA,CACA,CAGA,SAASnI,GAAI6Q,EAAK1I,GAChB,MAAO,CAAG,EAAE5b,eAAeC,KAAKqkB,EAAK1I,EACvC,CAGA,SAASsD,GAAOqB,EAAGmoB,GACjB,MAAMlP,EAAI,GACV0O,GAAK3nB,GAAG,SAAS5gB,GACf,GAAI+oC,EAAG/oC,GAAI,CACT65B,EAAEzlB,KAAKpU,EACb,CACA,IACE,OAAO65B,CACT,CAEA,SAAS8c,GAAchyB,GACrB,IAAK,MAAM1I,KAAO0I,EAAK,CACrB,GAAI7Q,GAAI6Q,EAAK1I,GAAM,CACjB,OAAO,KACb,CACA,CACE,OAAO,IACT,CAEA,SAAS26B,GAAgBC,GACvB,OAAOA,EAAa74C,KAAI,SAAS84C,GAC/B,IAAKA,EAAK7tB,IAAK,CACb,MAAM,IAAIlT,MAAM,cACtB,CAEI,OACE+gC,EAAK7tB,KACJ6tB,EAAKrtB,EAAI,IAAIqtB,EAAKrtB,KAAO,KACzBqtB,EAAKntB,EAAI,IAAImtB,EAAKntB,KAAO,KACzBmtB,EAAKptB,EAAI,IAAIotB,EAAKptB,KAAO,GAEhC,IAAKvN,KAAK,KACV,C,IAEA46B,GAAiBC,GAajB,MAAMC,GAA4B,wBAMlC,SAASD,GAAaE,EAAM7kC,EAAS8kC,GACnC,GAAID,GAAQ,KAAM,CAChB,MAAO,EACX,CACE,UAAWA,IAAS,SAAU,CAC5BA,EAAOA,EAAKj8B,UAChB,CAEE,IAAI9a,EAAS,GAEb,IAAIi3C,EAAa,GAEjB,SAASC,EAAM75B,EAAK1K,GAClB,MAAMokB,EAAOh4B,KACbA,KAAKse,IAAMA,EACXte,KAAK4T,QAAUA,GAAW,GAC1B5T,KAAKo4C,YAAcn3C,EAAO8D,OAC1B/E,KAAKqb,KAAO,GACZrb,KAAKq4C,cAAgB,GAErBr4C,KAAKs4C,qBAAuB,WAC1B,GAAIzkC,EAAM9O,OAAQ,CAChB,MAAMwzC,EAAc1kC,EAAMA,EAAM9O,OAAS,GACzCwzC,EAAYl9B,MAAQ2c,EAAK3c,IACjC,CACA,EAEIrb,KAAKw4C,8BAAgC,WACnC,GAAI3kC,EAAM9O,QAAUwyC,GAAU/0B,SAASxiB,KAAKse,KAAM,CAChD,MAAMi6B,EAAc1kC,EAAMA,EAAM9O,OAAS,GACzCwzC,EAAYF,cAAcnjC,KAAKlV,KAAKse,IAC5C,CACA,CACA,CAEEnL,EAAU3U,OAAOy0B,OAAO,GAAI6kB,GAAaplB,SAAUvf,GACnDA,EAAQ8H,OAASzc,OAAOy0B,OAAO,GAAIwlB,GAAoBtlC,EAAQ8H,QAE/D,MAAMy9B,EAAa,SAAU/jC,GAC3B,OAAOxB,EAAQwlC,cAAgB,QAAUxlC,EAAQwlC,aAAe,IAAI3xC,QAAQ2N,IAAS,CACzF,EAGE6iC,GAAev9B,SAAQ,SAAUqE,GAC/B,GAAIo6B,EAAWp6B,KAASnL,EAAQylC,oBAAqB,CACnD7tB,QAAQgK,KAAK,kDAAkDzW,qNACrE,CACA,IAME,MAAMu6B,EAAmB1lC,EAAQ2lC,aAAe,CAC9C,SACA,QACA,WACA,UAEF,IAAIC,EACJ,IAAIC,EACJ,GAAI7lC,EAAQ8lC,kBAAmB,CAC7BF,EAAuB,GACvBC,EAA2B,GAC3B3P,GAAKl2B,EAAQ8lC,mBAAmB,SAAS9/B,EAAYmF,GACnDy6B,EAAqBz6B,GAAO,GAC5B,MAAM46B,EAAY,GAClB//B,EAAWc,SAAQ,SAASwL,GAC1B,UAAWA,IAAQ,UAAYA,EAAIze,QAAQ,MAAQ,EAAG,CACpDkyC,EAAUhkC,KAAKgR,GAAmBT,GAAK/I,QAAQ,QAAS,MAClE,KAAe,CACLq8B,EAAqBz6B,GAAKpJ,KAAKuQ,EACzC,CACA,IACM,GAAIyzB,EAAUn0C,OAAQ,CACpBi0C,EAAyB16B,GAAO,IAAI8kB,OAAO,KAAO8V,EAAUj8B,KAAK,KAAO,KAChF,CACA,GACA,CACE,MAAMk8B,EAAoB,GAC1B,MAAMC,EAAwB,GAC9B,MAAMC,EAAyB,GAC/BhQ,GAAKl2B,EAAQmmC,gBAAgB,SAASC,EAASj7B,GAE7C,GAAIy6B,EAAsB,CACxB,IAAKnkC,GAAImkC,EAAsBz6B,GAAM,CACnCy6B,EAAqBz6B,GAAO,EACpC,CACMy6B,EAAqBz6B,GAAKpJ,KAAK,QACrC,CAEIikC,EAAkB76B,GAAOi7B,EAEzB,GAAI36B,MAAMC,QAAQ06B,GAAU,CAC1B,MAAML,EAAY,GAClBC,EAAkB76B,GAAO,GACzB+6B,EAAuB/6B,GAAO,GAC9Bi7B,EAAQt/B,SAAQ,SAASwL,GACvB,UAAWA,IAAQ,UAAYA,EAAIze,QAAQ,MAAQ,EAAG,CACpDkyC,EAAUhkC,KAAKgR,GAAmBT,GAAK/I,QAAQ,QAAS,MAClE,MAAe,GAAI+I,aAAe2d,OAAQ,CAChCiW,EAAuB/6B,GAAKpJ,KAAKuQ,EAC3C,KAAe,CACL0zB,EAAkB76B,GAAKpJ,KAAKuQ,EACtC,CACA,IACM,GAAIyzB,EAAUn0C,OAAQ,CACpBq0C,EAAsB96B,GAAO,IAAI8kB,OAAO,KAAO8V,EAAUj8B,KAAK,KAAO,KAC7E,CACA,CACA,IAEE,MAAMu8B,EAAmB,GACzB,IAAIC,EACJpQ,GAAKl2B,EAAQumC,eAAe,SAASC,EAAWr7B,GAC9C,IAAIs7B,EACJ,UAAWD,IAAc,WAAY,CACnCC,EAAWD,CACjB,MAAW,UAAWA,IAAc,SAAU,CACxCC,EAAW9B,GAAa+B,gBAAgBF,EAC9C,CACI,GAAIr7B,IAAQ,IAAK,CACfm7B,EAAmBG,CACzB,KAAW,CACLJ,EAAiBl7B,GAAOs7B,CAC9B,CACA,IAEE,IAAIzpB,EACJ,IAAItc,EACJ,IAAIimC,EACJ,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EACJ,IAAIC,EAAY,MAEhBC,IAEA,MAAMl/B,EAAS,IAAIo8B,GAAWnkC,OAAO,CACnCiC,UAAW,SAASR,EAAMf,GAGxB,GAAIT,EAAQinC,qBAAuBzlC,IAAS,OAAQ,CAClDwlC,GACR,CAEM,GAAIH,EAAU,CACZC,IACA,MACR,CACM,MAAMI,EAAQ,IAAIlC,EAAMxjC,EAAMf,GAC9BC,EAAMqB,KAAKmlC,GAEX,IAAIC,EAAO,MACX,MAAMC,IAAYF,EAAMh/B,KACxB,IAAIm/B,EACJ,GAAI5lC,GAAI4kC,EAAkB7kC,GAAO,CAC/B6lC,EAAiBhB,EAAiB7kC,GAAMA,EAAMf,GAE9CymC,EAAMzmC,QAAUA,EAAU4mC,EAAe5mC,QAEzC,GAAI4mC,EAAen/B,OAAS/a,UAAW,CACrC+5C,EAAMt7B,UAAYy7B,EAAen/B,IAC3C,CAEQ,GAAI1G,IAAS6lC,EAAethC,QAAS,CACnCmhC,EAAM1lC,KAAOA,EAAO6lC,EAAethC,QACnC6gC,EAAa5pB,GAASqqB,EAAethC,OAC/C,CACA,CACM,GAAIugC,EAAkB,CACpBe,EAAiBf,EAAiB9kC,EAAMf,GAExCymC,EAAMzmC,QAAUA,EAAU4mC,EAAe5mC,QACzC,GAAIe,IAAS6lC,EAAethC,QAAS,CACnCmhC,EAAM1lC,KAAOA,EAAO6lC,EAAethC,QACnC6gC,EAAa5pB,GAASqqB,EAAethC,OAC/C,CACA,CAEM,IAAKw/B,EAAW/jC,IAAUxB,EAAQsnC,qBAAuB,oBAAsBhD,GAAcqC,IAAc3mC,EAAQunC,cAAgB,MAAQvqB,GAAShd,EAAQunC,aAAe,CACzKJ,EAAO,KACPR,EAAQ3pB,GAAS,KACjB,GAAIhd,EAAQsnC,qBAAuB,UAAW,CAC5C,GAAI5B,EAAiB7xC,QAAQ2N,MAAW,EAAG,CACzCqlC,EAAW,KACXC,EAAgB,CAC5B,CACA,CACQH,EAAQ3pB,GAAS,IACzB,CACMA,IACA,GAAImqB,EAAM,CACR,GAAInnC,EAAQsnC,qBAAuB,UAAW,CAE5C,MACV,CACQvC,EAAaj3C,EACbA,EAAS,EACjB,CACMA,GAAU,IAAM0T,EAEhB,GAAIA,IAAS,SAAU,CACrB,GAAIxB,EAAQwnC,wBAA0BxnC,EAAQynC,qBAAsB,CAClEP,EAAMt7B,UAAY,EAC5B,CACA,CAEM,IAAKg6B,GAAwBnkC,GAAImkC,EAAsBpkC,IAASokC,EAAqB,KAAM,CACzF1P,GAAKz1B,GAAS,SAASjV,EAAO+iB,GAC5B,IAAKq2B,GAA0Bz3B,KAAKoB,GAAI,QAG/B24B,EAAMzmC,QAAQ8N,GACrB,MACZ,CAGU,GAAI/iB,IAAU,KAAOwU,EAAQ0nC,qBAAqBr4B,SAASd,IAAMvO,EAAQ0nC,qBAAqBr4B,SAAS,MAAO,QACrG63B,EAAMzmC,QAAQ8N,GACrB,MACZ,CAGU,IAAIo5B,EAAkC,MACtC,IAAK/B,GACFnkC,GAAImkC,EAAsBpkC,IAASokC,EAAqBpkC,GAAM3N,QAAQ0a,MAAQ,GAC9Eq3B,EAAqB,MAAQA,EAAqB,KAAK/xC,QAAQ0a,MAAQ,GACvE9M,GAAIokC,EAA0BrkC,IAASqkC,EAAyBrkC,GAAM2L,KAAKoB,IAC3Es3B,EAAyB,MAAQA,EAAyB,KAAK14B,KAAKoB,GAAK,CAC1Eo5B,EAAkC,IAC9C,MAAiB,GAAI/B,GAAwBA,EAAqBpkC,GAAO,CAC7D,IAAK,MAAMzU,KAAK64C,EAAqBpkC,GAAO,CAC1C,GAAI2R,GAAcpmB,IAAMA,EAAEyU,MAASzU,EAAEyU,OAAS+M,EAAI,CAChDo5B,EAAkC,KAClC,IAAIC,EAAW,GACf,GAAI76C,EAAE86C,WAAa,KAAM,CAEvB,MAAMC,EAAgBt8C,EAAME,MAAM,KAClC,IAAK,MAAMg0B,KAAKooB,EAAe,CAC7B,GAAI/6C,EAAEovC,OAAOtoC,QAAQ6rB,MAAQ,EAAG,CAC9B,GAAIkoB,IAAa,GAAI,CACnBA,EAAWloB,CACnC,KAA6B,CACLkoB,GAAY,IAAMloB,CAC1C,CACA,CACA,CACA,MAAuB,GAAI3yB,EAAEovC,OAAOtoC,QAAQrI,IAAU,EAAG,CAEvCo8C,EAAWp8C,CAC7B,CACgBA,EAAQo8C,CACxB,CACA,CACA,CACU,GAAID,EAAiC,CACnC,GAAI3nC,EAAQ+nC,kCAAkCl0C,QAAQ0a,MAAQ,EAAG,CAC/D,GAAIy5B,EAAYxmC,EAAMhW,GAAQ,QACrB07C,EAAMzmC,QAAQ8N,GACrB,MAChB,CACA,CAEY,GAAI/M,IAAS,UAAY+M,IAAM,MAAO,CAEpC,IAAI05B,EAAU,KAEd,IACE,MAAMlf,EAASmf,EAAS18C,GAExB,GAAIwU,EAAQwnC,wBAA0BxnC,EAAQynC,qBAAsB,CAClE,MAAMU,GAAmBnoC,EAAQwnC,wBAA0B,IAAIj6B,MAAK,SAAU66B,GAC5E,OAAOA,IAAarf,EAAOnS,IAAIwxB,QACnD,IACkB,MAAMC,GAAiBroC,EAAQynC,sBAAwB,IAAIl6B,MAAK,SAAS+6B,GACvE,OAAOvf,EAAOnS,IAAIwxB,WAAaE,GAAUvf,EAAOnS,IAAIwxB,SAASG,SAAS,IAAID,IAC9F,IACkBL,EAAUE,GAAmBE,CAC/C,CACA,CAAgB,MAAOxkB,GACPokB,EAAU,KAC1B,CAEc,IAAKA,EAAS,QACLf,EAAMzmC,QAAQ8N,GACrB,MAChB,CACA,CAEY,GAAI/M,IAAS,UAAY+M,IAAM,MAAO,CACpC,IAAI05B,EAAU,KACd,IACE,MAAMlf,EAASmf,EAAS18C,GAExB,GAAIu9B,EAAOyf,cAAe,CAGxBP,EAAUxmC,GAAIzB,EAAS,2BACnBA,EAAQyoC,yBACNzoC,EAAQ0oC,yBAA2B1oC,EAAQ2oC,oBACnE,MAAuB,GAAI3oC,EAAQ0oC,wBAA0B1oC,EAAQ2oC,qBAAsB,CACzE,MAAMR,GAAmBnoC,EAAQ0oC,wBAA0B,IAAIn7B,MAAK,SAAU66B,GAC5E,OAAOA,IAAarf,EAAOnS,IAAIwxB,QACnD,IACkB,MAAMC,GAAiBroC,EAAQ2oC,sBAAwB,IAAIp7B,MAAK,SAAS+6B,GACvE,OAAOvf,EAAOnS,IAAIwxB,WAAaE,GAAUvf,EAAOnS,IAAIwxB,SAASG,SAAS,IAAID,IAC9F,IACkBL,EAAUE,GAAmBE,CAC/C,CACA,CAAgB,MAAOxkB,GAEPokB,EAAU,KAC1B,CACc,IAAKA,EAAS,QACLf,EAAMzmC,QAAQ8N,GACrB,MAChB,CACA,CACY,GAAIA,IAAM,SAAU,CAClB,IACE,IAAIwa,EAAShT,GAAYvqB,GACzBu9B,EAAOjiB,SAAQ,SAAStb,GACtB,GAAIw8C,EAAY,SAAUx8C,EAAMorB,KAAM,CACpCprB,EAAMo9C,KAAO,IACjC,CACA,IACgB7f,EAAS7b,GAAO6b,GAAQ,SAASp7B,GAC/B,OAAQA,EAAEi7C,IAC5B,IACgB,IAAK7f,EAAOn3B,OAAQ,QACXs1C,EAAMzmC,QAAQ8N,GACrB,MAClB,KAAuB,CACL/iB,EAAQ+4C,GAAgBr3B,GAAO6b,GAAQ,SAASp7B,GAC9C,OAAQA,EAAEi7C,IAC9B,KACkB1B,EAAMzmC,QAAQ8N,GAAK/iB,CACrC,CACA,CAAgB,MAAOq4B,UAEAqjB,EAAMzmC,QAAQ8N,GACrB,MAChB,CACA,CACY,GAAIA,IAAM,QAAS,CACjB,MAAMs6B,EAAyB7C,EAAkBxkC,GACjD,MAAMsnC,EAAyB9C,EAAkB,KACjD,MAAM+C,EAA6B9C,EAAsBzkC,GACzD,MAAMwnC,EAA8B9C,EAAuB1kC,GAC3D,MAAMynC,EAA6BhD,EAAsB,KACzD,MAAMiD,EAAsB,CAC1BH,EACAE,GAEC50B,OAAO20B,GACP97B,QAAO,SAAUi8B,GAChB,OAAOA,CACzB,IACc,GAAIN,GAA0BC,EAAwB,CACpDt9C,EAAQ49C,EAAc59C,EAAOyoB,GAAU40B,EAAwBC,GAAyBI,EACxG,KAAqB,CACL19C,EAAQ49C,EAAc59C,EAAOq9C,GAA0BC,EAAwBI,EAC/F,CACc,IAAK19C,EAAMoG,OAAQ,QACVs1C,EAAMzmC,QAAQ8N,GACrB,MAChB,CACA,CACY,GAAIA,IAAM,QAAS,CACjB,GAAIvO,EAAQqpC,qBAAsB,CAChC,IACE,MAAMC,EAAqBnF,GAAa3iC,EAAO,KAAOhW,EAAQ,KAC9D,MAAM+9C,EAAcC,EAAUF,EAAoBtpC,EAAQypC,eAE1Dj+C,EAAQk+C,EAAyBH,GAEjC,GAAI/9C,EAAMoG,SAAW,EAAG,QACfs1C,EAAMzmC,QAAQ8N,GACrB,MACpB,CACA,CAAkB,MAAOsV,GACP,UAAWxB,SAAW,YAAa,CACjCzK,QAAQgK,KAAK,oBAAsBpgB,EAAO,KAAOhW,EAAQ,IAAM,qQACnF,QACyB07C,EAAMzmC,QAAQ8N,GACrB,MAClB,CACA,MAAqB,GAAIvO,EAAQypC,cAAe,CAChC,MAAM,IAAI/lC,MAAM,iFAChC,CACA,CACY5V,GAAU,IAAMygB,EAChB,GAAI/iB,GAASA,EAAMoG,OAAQ,CACzB9D,GAAU,KAAO67C,EAAWn+C,EAAO,MAAQ,GACzD,CACA,KAAiB,QACE07C,EAAMzmC,QAAQ8N,EACjC,CACA,GACA,CACM,GAAIvO,EAAQ4pC,YAAY/1C,QAAQ2N,MAAW,EAAG,CAC5C1T,GAAU,KAClB,KAAa,CACLA,GAAU,IACV,GAAIo5C,EAAMt7B,YAAcw7B,IAAYpnC,EAAQ6pC,WAAY,CACtD/7C,GAAU67C,EAAWzC,EAAMt7B,WAC3Bm7B,EAAY,IACtB,CACA,CACM,GAAII,EAAM,CACRr5C,EAASi3C,EAAa4E,EAAW77C,GACjCi3C,EAAa,EACrB,CACA,EACIvsC,OAAQ,SAAS0P,GACf,GAAI2+B,EAAU,CACZ,MACR,CACM,MAAMiD,EAAYppC,EAAMA,EAAM9O,OAAS,GACvC,IAAIuZ,EAEJ,GAAI2+B,EAAW,CACb3+B,EAAM2+B,EAAU3+B,IAEhBjD,EAAO4hC,EAAUl+B,YAAcze,UAAY28C,EAAUl+B,UAAY1D,CACzE,CAEM,GAAIlI,EAAQsnC,qBAAuB,YAAen8B,IAAQ,UAAcA,IAAQ,SAAW,CAKzFrd,GAAUoa,CAClB,KAAa,CACL,MAAMyyB,EAAUgP,EAAWzhC,EAAM,OACjC,GAAIlI,EAAQ6pC,aAAe9C,EAAW,CACpCj5C,GAAUkS,EAAQ6pC,WAAWlP,EAASxvB,EAChD,MAAe,IAAK47B,EAAW,CACrBj5C,GAAU6sC,CACpB,CACA,CACM,GAAIj6B,EAAM9O,OAAQ,CAChB,MAAMs1C,EAAQxmC,EAAMA,EAAM9O,OAAS,GACnCs1C,EAAMh/B,MAAQA,CACtB,CACA,EACInN,WAAY,SAASyG,EAAMU,GAEzB,GAAI2kC,EAAU,CACZC,IACA,IAAKA,EAAe,CAClBD,EAAW,KACrB,KAAe,CACL,MACV,CACA,CAEM,MAAMK,EAAQxmC,EAAMoB,MACpB,IAAKolC,EAAO,CAEV,MACR,CAEM,GAAIA,EAAM/7B,MAAQ3J,EAAM,CAGtBd,EAAMqB,KAAKmlC,GACX,MACR,CAEML,EAAW7mC,EAAQinC,oBAAsBzlC,IAAS,OAAS,MAC3Dwb,IACA,MAAMmqB,EAAOR,EAAQ3pB,GACrB,GAAImqB,EAAM,QACDR,EAAQ3pB,GACf,GAAIhd,EAAQsnC,qBAAuB,UAAW,CAC5CJ,EAAM/B,uBACN,MACV,CACQJ,EAAaj3C,EACbA,EAAS,EACjB,CAEM,GAAI84C,EAAa5pB,GAAQ,CACvBxb,EAAOolC,EAAa5pB,UACb4pB,EAAa5pB,EAC5B,CAEM,GAAIhd,EAAQ+pC,iBAAmB/pC,EAAQ+pC,gBAAgB7C,GAAQ,CAC7Dp5C,EAASA,EAAOwE,OAAO,EAAG40C,EAAMjC,aAChC,MACR,CAEMiC,EAAM7B,gCACN6B,EAAM/B,uBAEN,GAEEnlC,EAAQ4pC,YAAY/1C,QAAQ2N,MAAW,GAEtCU,IAAcqjC,EAAW/jC,IAAS,CAAE,SAAU,mBAAoB3N,QAAQmM,EAAQsnC,qBAAuB,EAC1G,CACA,GAAIH,EAAM,CACRr5C,EAASi3C,EACTA,EAAa,EACvB,CACQ,MACR,CAEMj3C,GAAU,KAAO0T,EAAO,IACxB,GAAI2lC,EAAM,CACRr5C,EAASi3C,EAAa4E,EAAW77C,GACjCi3C,EAAa,EACrB,CACMgC,EAAY,KAClB,GACK/mC,EAAQ8H,QACXA,EAAO9W,MAAM6zC,GACb/8B,EAAO9V,MAEP,OAAOlE,EAEP,SAASk5C,IACPl5C,EAAS,GACTkvB,EAAQ,EACRtc,EAAQ,GACRimC,EAAU,GACVC,EAAe,GACfC,EAAW,MACXC,EAAgB,CACpB,CAEE,SAAS6C,EAAWjqB,EAAGljB,GACrB,UAAI,IAAe,SAAU,CAC3BkjB,EAAIA,EAAI,EACd,CACI,GAAI1f,EAAQ8H,OAAOjR,eAAgB,CACjC6oB,EAAIA,EAAEnW,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QACjE,GAAI/M,EAAO,CACTkjB,EAAIA,EAAEnW,QAAQ,KAAM,SAC5B,CACA,CAMImW,EAAIA,EAAEnW,QAAQ,4BAA6B,SACxCA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACjB,GAAI/M,EAAO,CACTkjB,EAAIA,EAAEnW,QAAQ,KAAM,SAC1B,CACI,OAAOmW,CACX,CAEE,SAASsoB,EAAYxmC,EAAMgQ,GAKzBA,EAAOA,EAAKjI,QAAQ,gBAAiB,IAIrC,MAAO,KAAM,CACX,MAAMygC,EAAax4B,EAAK3d,QAAQ,WAChC,GAAIm2C,KAAgB,EAAG,CACrB,KACR,CACM,MAAMp2C,EAAY4d,EAAK3d,QAAQ,SAAOm2C,EAAa,GACnD,GAAIp2C,KAAe,EAAG,CACpB,KACR,CACM4d,EAAOA,EAAK7I,UAAU,EAAGqhC,GAAcx4B,EAAK7I,UAAU/U,EAAY,EACxE,CAII,MAAMq2C,EAAUz4B,EAAK/I,MAAM,gCAC3B,IAAKwhC,EAAS,CAEZ,GAAIz4B,EAAK/I,MAAM,aAAc,CAC3B,OAAQzI,EAAQkqC,qBACxB,CAGM,OAAO,KACb,CACI,MAAMC,EAASF,EAAQ,GAAGvoC,cAE1B,GAAID,GAAIzB,EAAQoqC,oBAAqB5oC,GAAO,CAC1C,OAAOxB,EAAQoqC,oBAAoB5oC,GAAM3N,QAAQs2C,MAAa,CACpE,CAEI,OAAQnqC,EAAQqqC,gBAAkBrqC,EAAQqqC,eAAex2C,QAAQs2C,MAAa,CAClF,CAEE,SAASjC,EAAS18C,GAChBA,EAAQA,EAAM+d,QAAQ,2BAA4B,QAClD,GAAI/d,EAAMy2B,WAAW,aAAc,CAIjC,MAAM,IAAIve,MAAM,4BACtB,CAOI,IAAIzR,EAAO,2BACX,IAAK,IAAIkV,EAAI,EAAIA,EAAI,IAAMA,IAAK,CAC9BlV,GAAQ,IAAIkV,GAClB,CAEI,MAAM4hB,EAAS,IAAI2J,IAAIlnC,EAAOyG,GAE9B,MAAMu2C,EAAgBzf,GAAUA,EAAOqf,WAAa,iBAAmBrf,EAAO4J,WAAa,YAC3F,MAAO,CACL6V,gBACA5xB,IAAKmS,EAEX,CAUE,SAASygB,EAAUF,EAAoBG,GACrC,IAAKA,EAAe,CAClB,OAAOH,CACb,CAEI,MAAMgB,EAAWhB,EAAmBr/B,MAAM,GAC1C,IAAIsgC,EAGJ,GAAId,EAAca,EAAStT,WAAayS,EAAc,KAAM,CAC1Dc,EAAet2B,GACbw1B,EAAca,EAAStT,UACvByS,EAAc,KAEtB,KAAW,CACLc,EAAed,EAAca,EAAStT,WAAayS,EAAc,IACvE,CAEI,GAAIc,EAAc,CAChBjB,EAAmBr/B,MAAM,GAAGA,MAAQqgC,EAASrgC,MAAM0E,OAAO67B,EAAmBD,GAAe,GAClG,CAEI,OAAOjB,CACX,CASE,SAASI,EAAyBH,GAChC,OAAOA,EAAYt/B,MAAM,GAAGA,MACzB0E,QAAO,SAAS87B,EAAqBC,GACpCD,EAAoB1oC,KAClB,GAAG2oC,EAAWn4B,QAAQm4B,EAAWl/C,QAAQk/C,EAAWhtB,UAAY,cAAgB,MAElF,OAAO+sB,CACf,GAAS,IACF3gC,KAAK,IACZ,CAcE,SAAS0gC,EAAmBD,GAC1B,OAAO,SAAUI,EAAyBC,GAExC,GAAInpC,GAAI8oC,EAAcK,EAAgBr4B,MAAO,CAC3C,MAAMs4B,EAAeN,EAAaK,EAAgBr4B,MAAM1E,MAAK,SAASi9B,GACpE,OAAOA,EAAkB39B,KAAKy9B,EAAgBp/C,MACxD,IAEQ,GAAIq/C,EAAc,CAChBF,EAAwB5oC,KAAK6oC,EACvC,CACA,CACM,OAAOD,CACb,CACA,CAEE,SAASvB,EAAchD,EAAS6B,EAAS8C,GACvC,IAAK9C,EAAS,CAEZ,OAAO7B,CACb,CACIA,EAAUA,EAAQ16C,MAAM,OACxB,OAAO06C,EAAQl5B,QAAO,SAAS89B,GAC7B,OAAO/C,EAAQp0C,QAAQm3C,MAAW,GAAKD,EAAal9B,MAAK,SAASo9B,GAChE,OAAOA,EAAK99B,KAAK69B,EACzB,GACA,IAAOlhC,KAAK,IACZ,CACA,CAKA,MAAMw7B,GAAqB,CACzBzuC,eAAgB,MAElB8tC,GAAaplB,SAAW,CACtBimB,YAAa,CAKX,UAAW,UAAW,QAAS,SAAU,SACzC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SACpC,OAAQ,MAAO,UAEf,aAAc,KAAM,MAAO,KAAM,KAAM,aAAc,SACrD,KAAM,KAAM,OAAQ,KAAM,IAAK,MAAO,KAEtC,IAAK,OAAQ,IAAK,MAAO,MAAO,KAAM,OAAQ,OAAQ,OAAQ,MAC9D,KAAM,IAAK,MAAO,OAAQ,IAC1B,KAAM,KAAM,KAAM,MAAO,OACzB,IAAK,OAAQ,QAAS,OAAQ,SAAU,MAAO,MAAO,OAAQ,IAAK,MAAO,MAE1E,UAAW,MAAO,WAAY,QAAS,QAAS,KAAM,QAAS,KAC/D,QAAS,MAGXkC,qBAAsB,CACpB,OAAQ,SAAU,iBAAkB,YAAa,SACjD,QAAS,MAAO,KAAM,iBAAkB,eACxC,WAAY,UAAW,OAAQ,QAAS,QAAS,OACjD,UAAW,UAAW,kBAAmB,SAAU,cACnD,OAAQ,WAAY,WAAY,MAAO,UAAW,WAClD,YAAa,UAAW,eAAgB,gBAAiB,MACzD,OAAQ,aAAc,cAAe,aAAc,aACnD,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAC/C,aAAc,KAAM,aAAc,cAAe,YACjD,YAAa,KAAM,SAAU,WAAY,UAAW,WACpD,OAAQ,QAAS,OAAQ,OAAQ,UAAW,MAAO,MACnD,YAAa,QAAS,SAAU,MAAO,YAAa,OACpD,QAAS,UAAW,UAAW,OAAQ,cAAe,UACtD,gBAAiB,sBAAuB,SAAU,UAClD,iBAAkB,MAAO,OAAQ,UAAW,UAAW,QACvD,QAAS,OAAQ,QAAS,OAAQ,OAAQ,aAAc,MACxD,SAAU,UAAW,SAAU,QAAS,OAAQ,QAChD,WAAY,SAAU,QAAS,YAAa,OAAQ,SACpD,QAAS,QAAS,OAElB,aAAc,eAAgB,gBAAiB,gBAC/C,iBAAkB,iBAAkB,SAAU,WAC9C,YAAa,mBAAoB,WAAY,UAAW,UACxD,gBAAiB,gBAAiB,oBAAqB,SACvD,cAAe,QAAS,aAAc,SAAU,YAChD,cAAe,cAAe,aAAc,cAC5C,SAAU,mBAAoB,YAAa,UAC3C,UAAW,UAAW,aAAc,eAAgB,UACpD,YAAa,YAAa,aAAc,UACxC,mBAAoB,SAAU,eAAgB,mBAC9C,cAAe,YAAa,iBAAkB,cAC9C,eAAgB,eAAgB,cAAe,aAC/C,cAAe,YAAa,YAAa,WAAY,aACrD,aAAc,UAAW,UAAW,SAAU,YAC9C,aAAc,aAAc,eAAgB,UAAW,WACvD,qBAAsB,WAAY,cAClC,4BAA6B,WAAY,YAAa,WACtD,eAAgB,YAAa,YAAa,WAAY,YACtD,eAAgB,WAAY,uBAAwB,WACpD,iBAAkB,YAAa,WAEjCJ,mBAAoB,UACpBxB,kBAAmB,CACjBv3B,EAAG,CAAE,OAAQ,OAAQ,UAGrB28B,IAAK,CAAE,MAAO,SAAU,MAAO,QAAS,QAAS,SAAU,YAG7DtB,YAAa,CAAE,MAAO,KAAM,KAAM,OAAQ,OAAQ,WAAY,QAAS,OAAQ,QAE/ES,eAAgB,CAAE,OAAQ,QAAS,MAAO,SAAU,OACpDD,oBAAqB,GACrBrC,kCAAmC,CAAE,OAAQ,MAAO,QACpDmC,sBAAuB,KACvBjD,oBAAqB,MACrBoC,qBAAsB,MAGxB1E,GAAa+B,gBAAkB,SAASyE,EAAYC,EAAYC,GAC9DA,EAASA,IAAUl+C,UAAa,KAAOk+C,EACvCD,EAAaA,GAAc,GAE3B,OAAO,SAASrlC,EAAStF,GACvB,IAAI4N,EACJ,GAAIg9B,EAAO,CACT,IAAKh9B,KAAU+8B,EAAY,CACzB3qC,EAAQ4N,GAAU+8B,EAAW/8B,EACrC,CACA,KAAW,CACL5N,EAAU2qC,CAChB,CAEI,MAAO,CACLrlC,QAASolC,EACT1qC,QAASA,EAEf,CACA,E"}