{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/domhandler/lib/esm/node.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/domhandler/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/stringify.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/traversal.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/manipulation.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/querying.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/legacy.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/helpers.ts","webpack:///https://raw.githubusercontent.com/fb55/domutils/96c989e159c98218958f375ea04210f2d1b43c0c/src/feeds.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/boolbase/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/domelementtype/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/options.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/static.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/utils.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/attributes.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-what/lib/es/types.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-what/lib/es/parse.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domelementtype/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domhandler/lib/esm/node.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domhandler/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/decode_codepoint.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/decode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/generated/encode-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/escape.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/entities/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/dom-serializer/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/stringify.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/traversal.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/manipulation.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/querying.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/legacy.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/helpers.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/node_modules/domutils/lib/esm/feeds.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/sort.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/attributes.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/nth-check/lib/esm/parse.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/nth-check/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/nth-check/lib/esm/compile.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/pseudo-selectors/filters.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/pseudo-selectors/aliases.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/pseudo-selectors/subselects.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/general.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/pseudo-selectors/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/compile.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/css-select/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/domelementtype/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/domhandler/lib/esm/node.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/domhandler/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/decode_codepoint.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/decode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/generated/encode-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/escape.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/entities/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio-select/node_modules/dom-serializer/lib/esm/index.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/positionals.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/helpers.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio-select/ef063a6ca4c3f0d02d2fc3505e750b6fb81c448d/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/traversing.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/manipulation.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/css.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/api/forms.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/cheerio.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/unicode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/error-codes.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/tokenizer/preprocessor.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/token.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/tokenizer/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/parser/open-element-stack.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/parser/formatting-element-list.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/tree-adapters/default.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/doctype.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/common/foreign-content.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/parser/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/serializer/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/unicode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/error-codes.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/tokenizer/preprocessor.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/token.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/tokenizer/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/parser/open-element-stack.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/parser/formatting-element-list.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/tree-adapters/default.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/doctype.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/common/foreign-content.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/parser/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5/dist/serializer/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/domelementtype/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/domhandler/lib/esm/node.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/dist/index.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/parsers/parse5-adapter.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/parse5/dist/index.js","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Tokenizer.ts","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/Parser.ts","webpack:///https://raw.githubusercontent.com/fb55/htmlparser2/c123610e003a1eaebc61febed01cabb6e41eb658/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/index.ts","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/load.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/truncate-html/dist/truncate.es.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/decode.js","webpack:///https://raw.githubusercontent.com/cheeriojs/cheerio/d1cbc66d53392ce8bf6cd0068f675836372d2bf3/src/parse.ts","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/decode_codepoint.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities/lib/decode_codepoint.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/decode_codepoint.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/generated/decode-data-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/decode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/generated/encode-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/escape.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/dom-serializer/lib/esm/foreignNames.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/dom-serializer/lib/esm/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/base64-js/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/ieee754/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/isarray/index.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/generated/decode-data-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/generated/decode-data-xml.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/cheerio/node_modules/entities/lib/escape.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities/lib/decode.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities/lib/generated/decode-data-html.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities/lib/generated/decode-data-xml.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/parse5-htmlparser2-tree-adapter/node_modules/entities/lib/escape.js"],"names":["Node","[object Object]","this","parent","prev","next","startIndex","endIndex","parentNode","previousSibling","nextSibling","recursive","cloneNode","DataNode","data","super","nodeValue","node_Text","arguments","type","esm","Text","nodeType","node_Comment","Comment","node_ProcessingInstruction","name","Directive","NodeWithChildren","children","firstChild","_a","lastChild","length","childNodes","node_CDATA","CDATA","node_Document","Root","node_Element","attribs","Script","Style","Tag","tagName","attributes","Object","keys","map","_b","value","namespace","prefix","isTag","node","isCDATA","isText","isComment","isDocument","hasChildren","prototype","hasOwnProperty","call","result","cloneChildren","clone","forEach","child","isDirective","Error","instruction","sourceCodeLocation","childs","i","defaultOpts","withStartIndices","withEndIndices","xmlMode","esm_DomHandler","callback","options","elementCB","dom","root","done","tagStack","lastNode","parser","undefined","handleCallback","error","elem","pop","element","addNode","push","text","textContent","Array","isArray","join","innerText","ElementType","getChildren","getSiblings","getParent","siblings","unshift","nextElementSibling","prevElementSibling","removeElement","childsIndex","lastIndexOf","splice","filter","test","recurse","limit","Infinity","nodes","nodeStack","indexStack","shift","find","DocumentPosition","Checks","tag_name","tag_type","tag_contains","getElementsByTagName","uniqueSort","arr","includes","sort","a","b","relative","nodeA","nodeB","aParents","bParents","current","maxIdx","Math","min","idx","DISCONNECTED","sharedParent","aSibling","bSibling","indexOf","FOLLOWING","CONTAINED_BY","PRECEDING","CONTAINS","compareDocumentPosition","getFeed","doc","feedRoot","getOneElement","isValidFeed","feed","items","item","entry","media","getMediaElements","addConditionally","href","link","description","fetch","pubDate","Date","updated","getAtomFeed","substr","id","getRssFeed","MEDIA_KEYS_STRING","MEDIA_KEYS_INT","where","_step","medium","isDefault","_iterator","_createForOfIteratorHelper","s","n","attrib","err","e","f","_step2","_iterator2","parseInt","expression","trim","obj","prop","val","module","exports","trueFunc","falseFunc","__webpack_require__","d","__webpack_exports__","Doctype","xml","decodeEntities","xmlModeDefault","_useHtmlParser2","flatten","_objectSpread","render","that","_root","toString","html","_typeof","isOptions","defaultOptions","_options","flattenOptions","elements","elems","ret","parseHTML","context","keepScripts","parsed","load","remove","slice","contains","container","contained","merge","arr1","arr2","isArrayLike","newLength","len","CharacterCodes","isCheerio","maybeCheerio","cheerio","domEach","array","fn","cloneDom","el","Document","isHtml","str","tagStart","tagChar","charCodeAt","LowerA","LowerZ","UpperA","UpperZ","Exclamation","SelectorType","hasOwn","rspace","dataAttrPrefix","primitives","null","true","false","rboolean","rbrace","getAttr","setAttr","removeAttribute","concat","attr","objName","objValue","getProp","setProp","_this","property","css","p","toUpperCase","URL","baseURI","wrap","key","setData","assign","readData","domNames","jsNames","attrName","startsWith","domName","replace","_","x","toLowerCase","jsName","String","Number","JSON","parse","dataEl","querying","option","removeAttr","values","toArray","splitNames","names","split","_this2","attrNames","_loop","hasClass","className","some","clazz","end","addClass","classNames","numElements","setClass","j","appendClass","removeClass","classes","numClasses","removeAll","elClasses","changed","index","toggleClass","stateVal","state","elementClasses","AttributeAction","reName","reEscape","actionTypes","Map","Element","Start","End","Any","Not","Hyphen","unpackPseudos","Set","isTraversal","selector","Adjacent","Child","Descendant","Parent","Sibling","ColumnCombinator","stripQuotesFromPseudos","funescape","escaped","escapedWhitespace","high","fromCharCode","unescapeCSS","isQuote","c","isWhitespace","parse_parse","subselects","parseSelector","selectorIndex","tokens","getName","offset","match","stripWhitespace","readValueWithParenthesis","start","counter","isEscaped","pos","slashCount","ensureNotTraversal","addTraversal","addSpecialAttribute","action","Attribute","ignoreCase","finalizeSubselector","loop","firstChar","Equals","Exists","possibleAction","get","quote","sectionEnd","valueStart","forceIgnore","attributeSelector","PseudoElement","has","quot","Pseudo","Universal","esm_Text","esm_Comment","esm_CDATA","node_isTag","node_isDocument","decode_codepoint_a","decode_data_html","Uint16Array","decode_data_xml","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","EntityDecoderState","DecodingMode","isNumber","code","ZERO","NINE","isEntityInAttributeInvalidEnd","EQUALS","UPPER_A","UPPER_Z","LOWER_A","LOWER_Z","isAsciiAlphaNumeric","decode_EntityDecoder","decodeTree","emitCodePoint","errors","EntityStart","consumed","treeIndex","excess","decodeMode","Strict","NUM","NumericStart","stateNumericStart","NamedEntity","stateNamedEntity","NumericDecimal","stateNumericDecimal","NumericHex","stateNumericHex","LOWER_X","base","digitCount","pow","startIdx","char","UPPER_F","LOWER_F","addToNumericResult","emitNumericEntity","lastCp","expectedLength","absenceOfDigitsInNumericCharacterReference","SEMI","missingSemicolonAfterCharacterReference","validateNumericCharacterReference","valueLength","VALUE_LENGTH","determineBranch","max","emitNotTerminatedNamedEntity","emitNamedEntityData","getDecoder","decoder","lastIndex","startEntity","write","nodeIdx","branchCount","BRANCH_LENGTH","jumpOffset","JUMP_TABLE","lo","hi","mid","midVal","restoreDiff","v","o","xmlReplacer","xmlCodeMap","getCodePoint","codePointAt","encodeXML","lastIdx","exec","substring","getEscaper","regex","escapeAttribute","escapeText","EntityLevel","EncodingMode","elementNames","attributeNames","unencodedElements","replaceQuotes","singleTag","esm_render","renderNode","dom_serializer_lib_esm","renderComment","renderCdata","opts","foreignModeIntegrationPoints","foreignElements","tag","encode","encodeEntities","emptyAttrs","formatAttributes","selfClosingTags","renderTag","renderText","getOuterHTML","getInnerHTML","getText","getAttributeValue","hasAttrib","traversal_getName","replaceElement","replacement","appendChild","sibling","append","currNext","prependChild","prepend","querying_filter","findOneChild","findOne","existsOne","checked","findAll","getAttribCheck","combineFuncs","compileTest","funcs","reduce","testElement","getElements","getElementById","getElementsByTagType","removeSubsets","ancestor","procedure","sort_isTraversal","token","sort_attributes","sortByProcedure","procs","getProcedure","procNew","proc","reChars","escapeRegex","caseInsensitiveAttributes","shouldIgnoreCase","quirksMode","attributeRules","adapter","charAt","boolbase_default","RegExp","exists","endsWith","whitespace","esm_parse_parse","formula","sign","readSign","number","readNumber","skipWhitespace","nthCheck","absA","abs","bMod","compile","getChildFunc","filters","itext","rule","equals","func","currentSibling","_rule","hover","dynamicStatePseudo","visited","active","pseudos","empty","elemName","every","only-child","verifyPseudoArgs","subselect","argIndex","aliases","any-link","disabled","enabled","required","optional","selected","checkbox","file","password","radio","reset","image","submit","header","button","input","PLACEHOLDER_ELEMENT","ensureIsTag","getNextSiblings","elemIndex","copyOptions","lowerCaseAttributeNames","lowerCaseTags","cacheResults","is","compileToken","subselects_subselects","matches","_context","relativeSelector","compiled","hasElement","shouldTestNextSiblings","nextElements","getElementParent","compileGeneralSelector","userPseudo","stringPseudo","alias","pseudo","compilePseudoSelector","WeakSet","isFalseCache","add","previous","lastElement","compile_compile","compileUnsafe","compile_compileToken","includesScopePseudo","t","DESCENDANT_TOKEN","FLEXIBLE_DESCENDANT_TOKEN","SCOPE_TOKEN","isArrayContext","finalContext","hasContext","absolutize","query","rules","first","second","rootFunc","compileRules","reduceRules","defaultEquals","domutils_lib_esm_namespaceObject","convertOptionFormats","_c","_d","wrapCompile","_compileToken","getSelectorFunc","searchFunc","filteredElements","prepareContext","elemsLength","nextSiblings","appendNextSiblings","esm_node_isTag","node_isCDATA","esm_ElementType","node_isText","node_isComment","esm_node_isDocument","node_hasChildren","esm_decode_codepoint_a","generated_decode_data_html","generated_decode_data_xml","decode_codepoint_decodeMap","decode_codepoint_fromCodePoint","decode_codepoint_replaceCodePoint","decode_CharCodes","decode_TO_LOWER_BIT","decode_BinTrieFlags","decode_EntityDecoderState","decode_DecodingMode","decode_isNumber","decode_isEntityInAttributeInvalidEnd","decode_isAsciiAlphaNumeric","esm_decode_EntityDecoder","decode_determineBranch","decode_getDecoder","encode_html_restoreDiff","escape_xmlReplacer","escape_xmlCodeMap","escape_getCodePoint","escape_encodeXML","escape_getEscaper","escape_escapeAttribute","escape_escapeText","esm_EntityLevel","esm_EncodingMode","foreignNames_elementNames","foreignNames_attributeNames","esm_unencodedElements","esm_replaceQuotes","esm_singleTag","lib_esm_render","esm_renderNode","node_modules_dom_serializer_lib_esm","esm_Root","esm_Doctype","esm_Directive","lib_esm_Comment","esm_renderComment","lib_esm_CDATA","esm_renderCdata","esm_Script","esm_Style","esm_Tag","esm_foreignModeIntegrationPoints","esm_foreignElements","esm_formatAttributes","esm_renderTag","lib_esm_Text","esm_renderText","renderHTML","filterNames","isFilter","groupSelectors","selectors","filteredSelectors","plainSelectors","UNIVERSAL_SELECTOR","SCOPE_PSEUDO","_groupSelectors2","_slicedToArray","plain","filtered","sel","filterBySelector","filterParsed","found","_groupSelectors4","filterElements","size","filteredSelector","DomUtils","getDocumentRoot","findFilterElements","queryForSelector","totalLimit","filterIndex","findIndex","sub","partLimit","num","NaN","isFinite","getLimit","findElements","filterByPosition","remainingSelector","remainingHasTraversal","boolbase","els","reSiblingSelector","selectorOrHaystack","_make","haystack","_groupSelectors6","results","_toConsumableArray","select","_getMatcher","matchMap","_len","postFns","_key","matched","filterArray","_matcher","_Array","apply","_singleMatcher","_matchUntil","nextElem","_len2","_key2","innerMatcher","filterSelector","getFilterFn","_removeDuplicates","from","_ref","parents","reverse","parentsUntil","_ref2","closest","set","selectOpts","selectFn","nextAll","nextUntil","prevAll","prevUntil","contents","newElems","each","not","filterFn","last","eq","selectorOrNeedle","$haystack","needle","prevObject","other","selection","addBack","_makeDomArray","_parse","_insert","concatenator","domSrc","_render","uniqueSplice","spliceIdx","spliceCount","spliceArgs","oldParent","prevIdx","appendTo","target","prependTo","_wrap","insert","wrapper","lastParent","wrapperDom","elInsertLocation","updateDOM","wrapInner","unwrap","_this3","replaceWith","wrapAll","insertBefore","after","_this4","insertAfter","_this5","clones","clonedSelf","before","_this6","_len3","_key3","_this7","targetArr","content","_this8","cont","_this9","_this10","staticText","textNode","setCss","styles","getCss","k","trimmed","trimEnd","newStyles","submittableSelector","r20","rCRLF","serialize","serializeArray","encodeURIComponent","$elem","Cheerio","_createClass","_classCallCheck","Symbol","iterator","Attributes","Traversing","Manipulation","Css","Forms","CODE_POINTS","UNDEFINED_CODE_POINTS","REPLACEMENT_CHARACTER","ERR","SEQUENCES","isSurrogate","cp","isControlCodePoint","isUndefinedCodePoint","TokenType","DEFAULT_BUFFER_WATERLINE","Preprocessor","handler","lastGapPos","gapStack","skipNextNewLine","lastChunkWritten","endOfChunkHit","bufferWaterline","isEol","lineStartPos","droppedBufferSize","line","lastErrOffset","col","startLine","endLine","startCol","endCol","startOffset","endOffset","onParseError","getError","nextCp","isSurrogatePair","_addGap","$","EOF","_err","surrogateInInputStream","willDropParsedChunk","chunk","isLastChunk","pattern","caseSensitive","CARRIAGE_RETURN","LINE_FEED","advance","_processSurrogate","_checkForProblematicCharacters","controlCharacterInInputStream","noncharacterInInputStream","count","getTokenAttr","attrs","NS","ATTRS","DOCUMENT_MODE","TAG_NAMES","TAG_ID","TAG_NAME_TO_ID","A","ADDRESS","ANNOTATION_XML","APPLET","AREA","ARTICLE","ASIDE","B","BASE","BASEFONT","BGSOUND","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CAPTION","CENTER","CODE","COL","COLGROUP","DD","DESC","DETAILS","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FOREIGN_OBJECT","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","I","IMG","IMAGE","INPUT","IFRAME","KEYGEN","LABEL","LI","LINK","LISTING","MAIN","MALIGNMARK","MARQUEE","MATH","MENU","META","MGLYPH","MI","MO","MN","MS","MTEXT","NAV","NOBR","NOFRAMES","NOEMBED","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","P","PARAM","PLAINTEXT","PRE","RB","RP","RT","RTC","RUBY","S","SCRIPT","SECTION","SELECT","SOURCE","SMALL","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","TABLE","TBODY","TEMPLATE","TEXTAREA","TFOOT","TD","TH","THEAD","TITLE","TR","TRACK","TT","U","UL","SVG","VAR","WBR","XMP","getTagID","UNKNOWN","SPECIAL_ELEMENTS","_defineProperty","MATHML","XLINK","XML","XMLNS","isNumberedHeader","tn","UNESCAPED_TEXT","State","C1_CONTROLS_REFERENCE_REPLACEMENTS","TokenizerMode","DATA","RCDATA","RAWTEXT","SCRIPT_DATA","CDATA_SECTION","isAsciiDigit","DIGIT_0","DIGIT_9","isAsciiUpper","LATIN_CAPITAL_A","LATIN_CAPITAL_Z","isAsciiLetter","LATIN_SMALL_A","LATIN_SMALL_Z","isAsciiLower","isAsciiUpperHexDigit","LATIN_CAPITAL_F","isAsciiLowerHexDigit","LATIN_SMALL_F","toAsciiLower","SPACE","TABULATION","FORM_FEED","isScriptDataDoubleEscapeSequenceEnd","SOLIDUS","GREATER_THAN_SIGN","Tokenizer","paused","inLoop","inForeignNode","lastStartTagName","returnState","charRefCode","consumedAfterSnapshot","currentCharacterToken","currentToken","currentAttr","preprocessor","currentLocation","getCurrentLocation","sourceCodeLocationInfo","_consume","_ensureHibernation","_callState","writeCallback","_runParsingLoop","insertHtmlAtCurrentPos","_unconsume","retreat","_advanceBy","START_TAG","tagID","selfClosing","ackSelfClosing","location","END_TAG","COMMENT","initialName","DOCTYPE","forceQuirks","publicId","systemId","chars","attrNameFirstCh","create","_leaveAttrValue","duplicateAttribute","ct","_emitCurrentCharacterToken","prepareToken","onStartTag","endTagWithAttributes","endTagWithTrailingSolidus","onEndTag","dropParsedChunk","onComment","onDoctype","nextLocation","CHARACTER","onCharacter","NULL_CHARACTER","onNullCharacter","WHITESPACE_CHARACTER","onWhitespaceCharacter","onEof","ch","_createCharacterToken","NULL","_appendCharToCurrentCharacterToken","withoutSemicolon","htmlDecodeTree","masked","SEMICOLON","_isCharacterReferenceInAttribute","peek","EQUALS_SIGN","AMPERSAND","ATTRIBUTE_VALUE_DOUBLE_QUOTED","ATTRIBUTE_VALUE_SINGLE_QUOTED","ATTRIBUTE_VALUE_UNQUOTED","_emitCodePoint","_stateData","_stateRcdata","_stateRawtext","_stateScriptData","_statePlaintext","TAG_OPEN","_stateTagOpen","END_TAG_OPEN","_stateEndTagOpen","TAG_NAME","_stateTagName","RCDATA_LESS_THAN_SIGN","_stateRcdataLessThanSign","RCDATA_END_TAG_OPEN","_stateRcdataEndTagOpen","RCDATA_END_TAG_NAME","_stateRcdataEndTagName","RAWTEXT_LESS_THAN_SIGN","_stateRawtextLessThanSign","RAWTEXT_END_TAG_OPEN","_stateRawtextEndTagOpen","RAWTEXT_END_TAG_NAME","_stateRawtextEndTagName","SCRIPT_DATA_LESS_THAN_SIGN","_stateScriptDataLessThanSign","SCRIPT_DATA_END_TAG_OPEN","_stateScriptDataEndTagOpen","SCRIPT_DATA_END_TAG_NAME","_stateScriptDataEndTagName","SCRIPT_DATA_ESCAPE_START","_stateScriptDataEscapeStart","SCRIPT_DATA_ESCAPE_START_DASH","_stateScriptDataEscapeStartDash","SCRIPT_DATA_ESCAPED","_stateScriptDataEscaped","SCRIPT_DATA_ESCAPED_DASH","_stateScriptDataEscapedDash","SCRIPT_DATA_ESCAPED_DASH_DASH","_stateScriptDataEscapedDashDash","SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN","_stateScriptDataEscapedLessThanSign","SCRIPT_DATA_ESCAPED_END_TAG_OPEN","_stateScriptDataEscapedEndTagOpen","SCRIPT_DATA_ESCAPED_END_TAG_NAME","_stateScriptDataEscapedEndTagName","SCRIPT_DATA_DOUBLE_ESCAPE_START","_stateScriptDataDoubleEscapeStart","SCRIPT_DATA_DOUBLE_ESCAPED","_stateScriptDataDoubleEscaped","SCRIPT_DATA_DOUBLE_ESCAPED_DASH","_stateScriptDataDoubleEscapedDash","SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH","_stateScriptDataDoubleEscapedDashDash","SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN","_stateScriptDataDoubleEscapedLessThanSign","SCRIPT_DATA_DOUBLE_ESCAPE_END","_stateScriptDataDoubleEscapeEnd","BEFORE_ATTRIBUTE_NAME","_stateBeforeAttributeName","ATTRIBUTE_NAME","_stateAttributeName","AFTER_ATTRIBUTE_NAME","_stateAfterAttributeName","BEFORE_ATTRIBUTE_VALUE","_stateBeforeAttributeValue","_stateAttributeValueDoubleQuoted","_stateAttributeValueSingleQuoted","_stateAttributeValueUnquoted","AFTER_ATTRIBUTE_VALUE_QUOTED","_stateAfterAttributeValueQuoted","SELF_CLOSING_START_TAG","_stateSelfClosingStartTag","BOGUS_COMMENT","_stateBogusComment","MARKUP_DECLARATION_OPEN","_stateMarkupDeclarationOpen","COMMENT_START","_stateCommentStart","COMMENT_START_DASH","_stateCommentStartDash","_stateComment","COMMENT_LESS_THAN_SIGN","_stateCommentLessThanSign","COMMENT_LESS_THAN_SIGN_BANG","_stateCommentLessThanSignBang","COMMENT_LESS_THAN_SIGN_BANG_DASH","_stateCommentLessThanSignBangDash","COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH","_stateCommentLessThanSignBangDashDash","COMMENT_END_DASH","_stateCommentEndDash","COMMENT_END","_stateCommentEnd","COMMENT_END_BANG","_stateCommentEndBang","_stateDoctype","BEFORE_DOCTYPE_NAME","_stateBeforeDoctypeName","DOCTYPE_NAME","_stateDoctypeName","AFTER_DOCTYPE_NAME","_stateAfterDoctypeName","AFTER_DOCTYPE_PUBLIC_KEYWORD","_stateAfterDoctypePublicKeyword","BEFORE_DOCTYPE_PUBLIC_IDENTIFIER","_stateBeforeDoctypePublicIdentifier","DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED","_stateDoctypePublicIdentifierDoubleQuoted","DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED","_stateDoctypePublicIdentifierSingleQuoted","AFTER_DOCTYPE_PUBLIC_IDENTIFIER","_stateAfterDoctypePublicIdentifier","BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS","_stateBetweenDoctypePublicAndSystemIdentifiers","AFTER_DOCTYPE_SYSTEM_KEYWORD","_stateAfterDoctypeSystemKeyword","BEFORE_DOCTYPE_SYSTEM_IDENTIFIER","_stateBeforeDoctypeSystemIdentifier","DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED","_stateDoctypeSystemIdentifierDoubleQuoted","DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED","_stateDoctypeSystemIdentifierSingleQuoted","AFTER_DOCTYPE_SYSTEM_IDENTIFIER","_stateAfterDoctypeSystemIdentifier","BOGUS_DOCTYPE","_stateBogusDoctype","_stateCdataSection","CDATA_SECTION_BRACKET","_stateCdataSectionBracket","CDATA_SECTION_END","_stateCdataSectionEnd","CHARACTER_REFERENCE","_stateCharacterReference","NAMED_CHARACTER_REFERENCE","_stateNamedCharacterReference","AMBIGUOUS_AMPERSAND","_stateAmbiguousAmpersand","NUMERIC_CHARACTER_REFERENCE","_stateNumericCharacterReference","HEXADEMICAL_CHARACTER_REFERENCE_START","_stateHexademicalCharacterReferenceStart","HEXADEMICAL_CHARACTER_REFERENCE","_stateHexademicalCharacterReference","DECIMAL_CHARACTER_REFERENCE","_stateDecimalCharacterReference","NUMERIC_CHARACTER_REFERENCE_END","_stateNumericCharacterReferenceEnd","LESS_THAN_SIGN","unexpectedNullCharacter","_emitEOFToken","_emitChars","_createStartTagToken","EXCLAMATION_MARK","QUESTION_MARK","unexpectedQuestionMarkInsteadOfTagName","_createCommentToken","eofBeforeTagName","invalidFirstCharacterOfTagName","_createEndTagToken","missingEndTagName","emitCurrentTagToken","eofInTag","_cp","handleSpecialEndTag","HYPHEN_MINUS","eofInScriptHtmlCommentLikeText","$$","unexpectedEqualsSignBeforeAttributeName","_createAttr","_leaveAttrName","QUOTATION_MARK","APOSTROPHE","unexpectedCharacterInAttributeName","missingAttributeValue","GRAVE_ACCENT","unexpectedCharacterInUnquotedAttributeValue","missingWhitespaceBetweenAttributes","unexpectedSolidusInTag","emitCurrentComment","_consumeSequenceIfMatch","cdataInHtmlContent","incorrectlyOpenedComment","abruptClosingOfEmptyComment","eofInComment","nestedComment","incorrectlyClosedComment","eofInDoctype","_createDoctypeToken","emitCurrentDoctype","missingWhitespaceBeforeDoctypeName","missingDoctypeName","invalidCharacterSequenceAfterDoctypeName","missingWhitespaceAfterDoctypePublicKeyword","missingDoctypePublicIdentifier","missingQuoteBeforeDoctypePublicIdentifier","abruptDoctypePublicIdentifier","missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers","missingQuoteBeforeDoctypeSystemIdentifier","missingWhitespaceAfterDoctypeSystemKeyword","missingDoctypeSystemIdentifier","abruptDoctypeSystemIdentifier","unexpectedCharacterAfterDoctypeSystemIdentifier","RIGHT_SQUARE_BRACKET","eofInCdata","NUMBER_SIGN","_flushCodePointConsumedAsCharacterReference","_reconsumeInState","matchResult","_matchNamedCharacterReference","unknownNamedCharacterReference","LATIN_SMALL_X","LATIN_CAPITAL_X","isAsciiHexDigit","nullCharacterReference","characterReferenceOutsideUnicodeRange","surrogateCharacterReference","noncharacterCharacterReference","controlCharacterReference","IMPLICIT_END_TAG_REQUIRED","IMPLICIT_END_TAG_REQUIRED_THOROUGHLY","SCOPING_ELEMENT_NS","NAMED_HEADERS","TABLE_ROW_CONTEXT","TABLE_BODY_CONTEXT","TABLE_CONTEXT","TABLE_CELLS","OpenElementStack","document","treeAdapter","tagIDs","stackTop","tmplCount","currentTagId","_isInTemplate","getTemplateContent","getNamespaceURI","onItemPush","popped","_updateCurrentElement","onItemPop","oldElement","newElement","_indexOf","referenceElement","newElementID","insertionIdx","targetIdx","shortenToLength","tagNames","targetNS","_indexOfTagNames","popUntilPopped","clearBackTo","elementIdx","ns","exclusionId","EntryType","MARKER","Marker","FormattingElementList","entries","bookmark","neAttrs","candidates","neAttrsLength","neTagName","getTagName","neNamespaceURI","elementAttrs","getAttrList","_getNoahArkConditionCandidates","neAttrsMap","neAttr","validCandidates","candidate","cAttr","_ensureNoahArkCondition","bookmarkIdx","entryIndex","markerIdx","createTextNode","nodeName","defaultTreeAdapter","createDocument","mode","NO_QUIRKS","createDocumentFragment","createElement","namespaceURI","createCommentNode","newNode","referenceNode","setTemplateContent","templateElement","contentElement","setDocumentType","doctypeNode","setDocumentMode","getDocumentMode","detachNode","insertText","prevNode","isTextNode","insertTextBefore","adoptAttributes","recipient","recipientAttrsMap","getFirstChild","getChildNodes","getParentNode","getTextNodeContent","getCommentNodeContent","commentNode","getDocumentTypeNodeName","getDocumentTypeNodePublicId","getDocumentTypeNodeSystemId","isCommentNode","isDocumentTypeNode","isElementNode","setNodeSourceCodeLocation","getNodeSourceCodeLocation","updateNodeSourceCodeLocation","endLocation","VALID_DOCTYPE_NAME","VALID_SYSTEM_ID","QUIRKS_MODE_SYSTEM_ID","QUIRKS_MODE_PUBLIC_ID_PREFIXES","QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES","QUIRKS_MODE_PUBLIC_IDS","LIMITED_QUIRKS_PUBLIC_ID_PREFIXES","LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES","hasPrefix","prefixes","MIME_TYPES","TEXT_HTML","APPLICATION_XML","DEFINITION_URL_ATTR","ADJUSTED_DEFINITION_URL_ATTR","SVG_ATTRS_ADJUSTMENT_MAP","XML_ATTRS_ADJUSTMENT_MAP","SVG_TAG_NAMES_ADJUSTMENT_MAP","EXITS_FOREIGN_CONTENT","adjustTokenMathMLAttrs","adjustTokenSVGAttrs","adjustedAttrName","adjustTokenXMLAttrs","adjustedAttrEntry","isIntegrationPoint","foreignNS","ENCODING","isHtmlIntegrationPoint","isMathMLTextIntegrationPoint","InsertionMode","HIDDEN_INPUT_TYPE","AA_OUTER_LOOP_ITER","AA_INNER_LOOP_ITER","BASE_LOC","TABLE_STRUCTURE_TAGS","defaultParserOptions","scriptingEnabled","Parser","fragmentContext","scriptHandler","stopped","insertionMode","INITIAL","originalInsertionMode","headElement","formElement","currentNotInHTML","tmplInsertionModeStack","pendingCharacterTokens","hasNonWhitespacePendingCharacterToken","framesetOk","fosterParentingEnabled","tokenizer","activeFormattingElements","fragmentContextID","_setContextModes","openElements","TN","IN_TEMPLATE","_initTokenizerForFragmentParsing","_insertFakeRootElement","_resetInsertionMode","_findFormInFragmentContext","rootElement","fragment","_adoptNodes","beforeToken","loc","tid","isTop","_setEndLocation","_this$openElements","isHTML","_isIntegrationPoint","nextTokenizerState","_insertElement","TEXT","IN_BODY","docTypeNode","startTag","_shouldFosterParentOnInsertion","_fosterParentElement","currentTmplContentOrNode","_attachElementToTree","tmpl","beforeElement","_this$_findFosterPare","_findFosterParentingLocation","_token$location","donor","closingToken","ctLoc","endLoc","endTag","_this$openElements2","_processStartTag","foreignContent","listLength","generateImpliedEndTags","popUntilTableCellPopped","clearToLastMarker","IN_ROW","generateImpliedEndTagsWithExclusion","popUntilTagNamePopped","IN_TABLE_BODY","IN_CAPTION","IN_COLUMN_GROUP","IN_TABLE","IN_FRAMESET","_resetInsertionModeForSelect","AFTER_HEAD","BEFORE_HEAD","IN_CELL","IN_HEAD","selectIdx","IN_SELECT_IN_TABLE","IN_SELECT","_isElementCausesFosterParenting","openElement","_insertCharacters","characterInForeignContent","tokenInInitialMode","BEFORE_HTML","tokenBeforeHtml","tokenBeforeHead","tokenInHead","IN_HEAD_NO_SCRIPT","tokenInHeadNoScript","tokenAfterHead","characterInBody","characterInTable","IN_TABLE_TEXT","characterInTableText","tokenInColumnGroup","AFTER_BODY","tokenAfterBody","AFTER_AFTER_BODY","tokenAfterAfterBody","unicode","nullCharacterInForeignContent","appendComment","AFTER_FRAMESET","tokenInTableText","_appendCommentNode","appendCommentToRootHtmlElement","AFTER_AFTER_FRAMESET","appendCommentToDocument","_setDocumentType","QUIRKS","LIMITED_QUIRKS","doctype","nonConformingDoctype","doctypeInInitialMode","misplacedDoctype","nonVoidHtmlElementStartTagWithTrailingSolidus","shouldProcessStartTagTokenInForeignContent","startTagToken","COLOR","SIZE","FACE","popUntilHtmlOrIntegrationPoint","_startTagOutsideForeignContent","_getAdjustedCurrentElement","currentNs","adjustedTagName","_appendElement","startTagInForeignContent","startTagBeforeHtml","startTagInBody","startTagBeforeHead","startTagInHead","nestedNoscriptInHead","startTagInHeadNoScript","abandonedHeadElementChild","misplacedStartTagForHeadElement","startTagAfterHead","startTagInTable","TABLE_VOID_ELEMENTS","hasInTableScope","startTagInCaption","startTagInColumnGroup","startTagInTableBody","startTagInRow","_closeTableCell","startTagInCell","startTagInSelect","startTagInSelectInTable","startTagInTemplate","startTagAfterBody","startTagInFrameset","startTagAfterFrameset","startTagAfterAfterBody","startTagAfterAfterFrameset","_endTagOutsideForeignContent","endTagInForeignContent","endTagBeforeHtml","endTagWithoutMatchingOpenElement","endTagBeforeHead","templateEndTagInHead","endTagInHead","endTagInHeadNoScript","endTagAfterHead","endTagInBody","endTagInText","endTagInTable","endTagInCaption","endTagInColumnGroup","endTagInTableBody","endTagInRow","endTagInCell","endTagInSelect","endTagInSelectInTable","endTagInTemplate","endTagAfterBody","isRootHtmlElementCurrent","endTagInFrameset","endTagAfterFrameset","eofInBody","eofInElementThatCanContainOnlyText","eofInText","eofInTemplate","stopParsing","whitespaceCharacterInBody","whitespaceCharacterInTableText","aaObtainFormattingElementEntry","formattingElementEntry","getElementEntryInScopeWithTagName","hasInScope","removeEntry","genericEndTagInBody","aaObtainFurthestBlock","furthestBlock","_isSpecialElement","aaInnerLoop","formattingElement","nextElement","getCommonAncestor","elementEntry","getElementEntry","counterOverflow","aaRecreateElementFromEntry","aaInsertLastNodeInCommonAncestor","commonAncestor","aaReplaceFormattingElement","insertElementAfterBookmark","callAdoptionAgency","htmlElement","htmlLocation","bodyElement","bodyLocation","missingDoctype","_processToken","_insertFakeElement","_switchToTextParsing","_insertTemplate","insertMarker","generateImpliedEndTagsThoroughly","closingOfElementWithOpenChildElements","errCode","openElementsLeftAfterEof","disallowedContentInNoscriptInHead","modeInBody","_reconstructActiveFormattingElements","areaStartTagInBody","isHiddenInput","inputType","TYPE","noembedStartTagInBody","genericStartTagInBody","pushElement","bStartTagInBody","activeElementEntry","aStartTagInBody","hasInButtonScope","_closePElement","numberedHeaderStartTagInBody","addressStartTagInBody","elementId","listItemStartTagInBody","hrStartTagInBody","rbStartTagInBody","rtStartTagInBody","preStartTagInBody","xmpStartTagInBody","svgStartTagInBody","htmlStartTagInBody","tryPeekProperlyNestedBodyElement","bodyStartTagInBody","inTemplate","formStartTagInBody","nobrStartTagInBody","mathStartTagInBody","tableStartTagInBody","inputStartTagInBody","paramStartTagInBody","imageStartTagInBody","buttonStartTagInBody","appletStartTagInBody","iframeStartTagInBody","selectStartTagInBody","optgroupStartTagInBody","popAllUpToHtmlElement","framesetStartTagInBody","textareaStartTagInBody","plaintextStartTagInBody","pEndTagInBody","addressEndTagInBody","hasInListItemScope","liEndTagInBody","ddEndTagInBody","hasNumberedHeaderInScope","popUntilNumberedHeaderPopped","numberedHeaderEndTagInBody","brEndTagInBody","bodyEndTagInBody","htmlEndTagInBody","formEndTagInBody","appletEndTagInBody","tokenInTable","clearBackToTableContext","tdStartTagInTable","colStartTagInTable","formStartTagInTable","tableStartTagInTable","tbodyStartTagInTable","inputStartTagInTable","captionStartTagInTable","colgroupStartTagInTable","savedFosterParentingState","clearBackToTableBodyContext","hasTableBodyContextInTableScope","clearBackToTableRowContext","hasInSelectScope","VOID_ELEMENTS","isVoidElement","serializeOuter","serializeNode","serializeChildNodes","serializeAttributes","serializeElement","parentTn","serializeTextNode","serializeCommentNode","_ref3","serializeDocumentTypeNode","hasUnescapedText","esm_node_Node","esm_node_cloneNode","esm_node_DataNode","lib_esm_node_Text","lib_esm_ElementType","lib_esm_node_Comment","lib_esm_node_ProcessingInstruction","esm_node_NodeWithChildren","lib_esm_node_CDATA","lib_esm_node_Document","lib_esm_node_Element","lib_esm_node_isTag","esm_node_isText","esm_node_isComment","esm_node_isDirective","esm_node_cloneChildren","esm_node_isCDATA","lib_esm_node_isDocument","enquoteDoctypeId","attribsNamespace","attribsPrefix","serializeDoctypeContent","ProcessingInstruction","parseWithParse5","htmlparser2Adapter","parseDocument","getFragmentParser","getFragment","parseFragment","renderOpts","QuoteType","Space","NewLine","Tab","FormFeed","CarriageReturn","isEndOfTagSection","Slash","Gt","Zero","Nine","Sequences","Cdata","Uint8Array","CdataEnd","CommentEnd","ScriptEnd","StyleEnd","TitleEnd","cbs","_ref$xmlMode","_ref$decodeEntities","buffer","sectionStart","baseState","isSpecial","running","currentSequence","sequenceIndex","trieIndex","trieCurrent","entityResult","entityExcess","entityTrie","xmlDecodeTree","finish","Lt","fastForwardTo","ontext","BeforeTagName","Amp","BeforeEntity","isEnd","InTagName","stateInTagName","endOfText","actualIndex","stateInClosingTagName","InCommentLike","InDeclaration","stateInDeclaration","oncdata","oncomment","isASCIIAlpha","sequence","SpecialStartSequence","ExclamationMark","BeforeDeclaration","Questionmark","InProcessingInstruction","isTagStartChar","lower","BeforeSpecialS","startSpecial","BeforeClosingTagName","stateText","onopentagname","BeforeAttributeName","stateBeforeAttributeName","InClosingTagName","InSpecialComment","onclosetag","AfterClosingTagName","stateAfterClosingTagName","onopentagend","InSpecialTag","InSelfClosingTag","InAttributeName","onselfclosingtag","Eq","onattribname","AfterAttributeName","stateAfterAttributeName","BeforeAttributeValue","onattribend","NoValue","DoubleQuote","InAttributeValueDq","SingleQuote","InAttributeValueSq","InAttributeValueNq","stateInAttributeValueNoQuotes","onattribdata","Double","Single","handleInAttributeValue","Unquoted","OpeningSquareBracket","CDATASequence","Dash","BeforeComment","ondeclaration","onprocessinginstruction","BeforeNumericEntity","InNamedEntity","stateInNamedEntity","emitNamedEntity","allowLegacyEntity","Semi","entityStart","emitPartial","LowerX","InHexEntity","InNumericEntity","stateInNumericEntity","strict","UpperF","LowerF","isHexDigit","shouldContinue","stateSpecialStartSequence","stateInSpecialTag","stateCDATASequence","stateInAttributeValueDoubleQuotes","stateInAttributeName","stateInCommentLike","stateInSpecialComment","stateBeforeTagName","stateInAttributeValueSingleQuotes","stateBeforeAttributeValue","stateBeforeClosingTagName","stateBeforeSpecialS","stateInSelfClosingTag","stateBeforeDeclaration","stateBeforeComment","stateInProcessingInstruction","stateBeforeEntity","stateInHexEntity","stateBeforeNumericEntity","cleanup","handleTrailingData","onend","onattribentity","ontextentity","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","openTagStart","tagname","attribname","attribvalue","stack","foreignContext","buffers","bufferOffset","writeIndex","ended","lowerCaseTagNames","_e","onparserinit","getSlice","getSectionStart","emitOpenTag","impliesClose","onopentag","isImplied","endOpenTag","_f","closeCurrentTag","recognizeSelfClosing","isOpenImplied","onattribute","search","getInstructionName","oncommentend","recognizeCDATA","oncdatastart","oncdataend","_h","_g","_k","_j","onreset","shiftBuffer","onerror","pause","resume","DomHandler","getParse","parseWithHtmlparser2","renderWithHtmlparser2","_Array$prototype$spli","renderWithParse5","internalOpts","initialRoot","LoadedCheerio","_Cheerio","_callSuper","_inherits","initialize","r","rootInstance","instance","searchContext","staticMethods","$13b04019e035f7c9$exports","$13b04019e035f7c9$var$defaultOptions","stripTags","ellipsis","byWords","excludes","reserveLastWord","trimTheOnlyWord","keepWhitespaces","$13b04019e035f7c9$var$astralRange","$13b04019e035f7c9$var$helper","setup","fullOptions","extend","dft","isBlank","truncate","isLastNode","astralSafeCharacterArray","strLen","prevIsBlank","curIsBlank","cutted","boundary","maxExceeded","mtc","$13b04019e035f7c9$var$truncate","isNaN","$html","$e9N8g$cheerio","travelChildren","$ele","isParentLastNode","__createBinding","m","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","defineProperty","__setModuleDefault","__importStar","mod","__importDefault","default","decodeXML","decodeHTMLStrict","decodeHTMLAttribute","decodeHTML","EntityDecoder","decodeCodePoint","decode_data_html_js_1","decode_data_xml_js_1","decode_codepoint_js_1","decode_codepoint_js_2","htmlDecoder","xmlDecoder","Legacy","Buffer","update","domutils__WEBPACK_IMPORTED_MODULE_0__","domhandler__WEBPACK_IMPORTED_MODULE_1__","isBuffer","checkIsDocument","newChilds","global","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","TypeError","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","fromString","copy","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","read","buf","readUInt16BE","foundIndex","hexWrite","remaining","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","compare","y","list","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","inspect","thisStart","thisEnd","thisCopy","targetCopy","toJSON","_arr","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","log","LN2","escapeUTF8","escape"],"mappings":"6aAKOA,EACPC,cAEAC,KAAAC,OAAA,KAEAD,KAAAE,KAAA,KAEAF,KAAAG,KAAA,KAEAH,KAAAI,WAAA,KAEAJ,KAAAK,SAAA,KAOAC,iBACA,OAAAN,KAAAC,OAEAK,eAAAL,GACAD,KAAAC,SAMAM,sBACA,OAAAP,KAAAE,KAEAK,oBAAAL,GACAF,KAAAE,OAMAM,kBACA,OAAAR,KAAAG,KAEAK,gBAAAL,GACAH,KAAAG,OAQAJ,UAAAU,GAAA,GACA,OAAAC,EAAAV,KAAAS,UAMOE,UAAAb,EAIPC,YAAAa,GACAC,QACAb,KAAAY,OAMAE,gBACA,OAAAd,KAAAY,KAEAE,cAAAF,GACAZ,KAAAY,cAMaG,UAAIJ,EACjBZ,cACAc,SAAAG,WACAhB,KAAAiB,KAAoBC,EAAA,EAAWC,KAE/BC,eACA,gBAMaC,UAAOV,EACpBZ,cACAc,SAAAG,WACAhB,KAAAiB,KAAoBC,EAAA,EAAWI,QAE/BF,eACA,gBAMaG,UAAqBZ,EAClCZ,YAAAyB,EAAAZ,GACAC,MAAAD,GACAZ,KAAAwB,OACAxB,KAAAiB,KAAoBC,EAAA,EAAWO,UAE/BL,eACA,gBAMOM,UAAA5B,EAIPC,YAAA4B,GACAd,QACAb,KAAA2B,WAIAC,iBACA,IAAAC,EACA,eAAAA,EAAA7B,KAAA2B,SAAA,cAAAE,IAAA,KAGAC,gBACA,OAAA9B,KAAA2B,SAAAI,OAAA,EACA/B,KAAA2B,SAAA3B,KAAA2B,SAAAI,OAAA,GACA,KAMAC,iBACA,OAAAhC,KAAA2B,SAEAK,eAAAL,GACA3B,KAAA2B,kBAGaM,UAAKP,EAClB3B,cACAc,SAAAG,WACAhB,KAAAiB,KAAoBC,EAAA,EAAWgB,MAE/Bd,eACA,gBAMae,UAAQT,EACrB3B,cACAc,SAAAG,WACAhB,KAAAiB,KAAoBC,EAAA,EAAWkB,KAE/BhB,eACA,gBAMaiB,UAAOX,EAMpB3B,YAAAyB,EAAAc,EAAAX,KAAAV,GAAA,WAAAO,EACUN,EAAA,EAAWqB,OACrB,UAAAf,EACcN,EAAA,EAAWsB,MACXtB,EAAA,EAAWuB,MACzB5B,MAAAc,GACA3B,KAAAwB,OACAxB,KAAAsC,UACAtC,KAAAiB,OAEAG,eACA,SAOAsB,cACA,OAAA1C,KAAAwB,KAEAkB,YAAAlB,GACAxB,KAAAwB,OAEAmB,iBACA,OAAAC,OAAAC,KAAA7C,KAAAsC,SAAAQ,IAAAtB,IACA,IAAAK,EAAAkB,EACA,OACAvB,OACAwB,MAAAhD,KAAAsC,QAAAd,GACAyB,UAAA,QAAApB,EAAA7B,KAAA,iCAAA6B,OAAA,EAAAA,EAAAL,GACA0B,OAAA,QAAAH,EAAA/C,KAAA,8BAAA+C,OAAA,EAAAA,EAAAvB,OASO,SAAA2B,EAAAC,GACP,OAAWR,OAAA1B,EAAA,EAAA0B,CAAQQ,GAMZ,SAAAC,EAAAD,GACP,OAAAA,EAAAnC,OAAyBC,EAAA,EAAWgB,MAM7B,SAAAoB,EAAAF,GACP,OAAAA,EAAAnC,OAAyBC,EAAA,EAAWC,KAM7B,SAAAoC,EAAAH,GACP,OAAAA,EAAAnC,OAAyBC,EAAA,EAAWI,QAa7B,SAAAkC,EAAAJ,GACP,OAAAA,EAAAnC,OAAyBC,EAAA,EAAWkB,KAM7B,SAAAqB,EAAAL,GACP,OAAAR,OAAAc,UAAAC,eAAAC,KAAAR,EAAA,YAQO,SAAA1C,EAAA0C,EAAA3C,GAAA,GACP,IAAAoD,EACA,GAAAP,EAAAF,GACAS,EAAA,IAAqB9C,EAAIqC,EAAAxC,WAEzB,GAAA2C,EAAAH,GACAS,EAAA,IAAqBxC,EAAO+B,EAAAxC,WAE5B,GAAAuC,EAAAC,GAAA,CACA,MAAAzB,EAAAlB,EAAAqD,EAAAV,EAAAzB,aACAoC,EAAA,IAA0B1B,EAAOe,EAAA5B,SAAa4B,EAAAd,SAAkBX,GAChEA,EAAAqC,QAAAC,KAAAhE,OAAA8D,GACA,MAAAX,EAAAH,YACAc,EAAAd,UAAAG,EAAAH,WAEAG,EAAA,wBACAW,EAAA,0BAA2CX,EAAA,wBAE3CA,EAAA,qBACAW,EAAA,uBAAwCX,EAAA,qBAExCS,EAAAE,OAEA,GAAAV,EAAAD,GAAA,CACA,MAAAzB,EAAAlB,EAAAqD,EAAAV,EAAAzB,aACAoC,EAAA,IAA0B9B,EAAKN,GAC/BA,EAAAqC,QAAAC,KAAAhE,OAAA8D,GACAF,EAAAE,OAEA,GAAAP,EAAAJ,GAAA,CACA,MAAAzB,EAAAlB,EAAAqD,EAAAV,EAAAzB,aACAoC,EAAA,IAA0B5B,EAAQR,GAClCA,EAAAqC,QAAAC,KAAAhE,OAAA8D,GACAX,EAAA,YACAW,EAAA,UAAAX,EAAA,WAEAS,EAAAE,MAEA,KA7DO,SAAAX,GACP,OAAAA,EAAAnC,OAAyBC,EAAA,EAAWO,UA4DpCyC,CAAAd,GAUA,UAAAe,8BAAgDf,EAAAnC,QAVhD,CACA,MAAAmD,EAAA,IAAgC7C,EAAqB6B,EAAA5B,KAAA4B,EAAAxC,MACrD,MAAAwC,EAAA,YACAgB,EAAA,UAAAhB,EAAA,UACAgB,EAAA,cAAAhB,EAAA,cACAgB,EAAA,cAAAhB,EAAA,eAEAS,EAAAO,GAUA,OALAP,EAAAzD,WAAAgD,EAAAhD,WACAyD,EAAAxD,SAAA+C,EAAA/C,SACA,MAAA+C,EAAAiB,qBACAR,EAAAQ,mBAAAjB,EAAAiB,oBAEAR,EAEA,SAAAC,EAAAQ,GACA,MAAA3C,EAAA2C,EAAAxB,IAAAmB,GAAAvD,EAAAuD,GAAA,IACA,QAAAM,EAAA,EAAmBA,EAAA5C,EAAAI,OAAqBwC,IACxC5C,EAAA4C,GAAArE,KAAAyB,EAAA4C,EAAA,GACA5C,EAAA4C,EAAA,GAAApE,KAAAwB,EAAA4C,GAEA,OAAA5C,EC5UA,MAAA6C,GACAC,kBAAA,EACAC,gBAAA,EACAC,SAAA,SAEaC,EAMb7E,YAAA8E,EAAAC,EAAAC,GAEA/E,KAAAgF,OAEAhF,KAAAiF,KAAA,IAAwB9C,EAAQnC,KAAAgF,KAEhChF,KAAAkF,MAAA,EAEAlF,KAAAmF,UAAAnF,KAAAiF,MAEAjF,KAAAoF,SAAA,KAEApF,KAAAqF,OAAA,KAEA,mBAAAP,IACAC,EAAAD,EACAA,EAAAN,GAEA,iBAAAK,IACAC,EAAAD,EACAA,OAAAS,GAEAtF,KAAA6E,SAAA,OAAAA,QAAA,IAAAA,IAAA,KACA7E,KAAA8E,QAAA,OAAAA,QAAA,IAAAA,IAAAN,EACAxE,KAAA+E,UAAA,OAAAA,QAAA,IAAAA,IAAA,KAEAhF,aAAAsF,GACArF,KAAAqF,SAGAtF,UACAC,KAAAgF,OACAhF,KAAAiF,KAAA,IAAwB9C,EAAQnC,KAAAgF,KAChChF,KAAAkF,MAAA,EACAlF,KAAAmF,UAAAnF,KAAAiF,MACAjF,KAAAoF,SAAA,KACApF,KAAAqF,OAAA,KAGAtF,QACAC,KAAAkF,OAEAlF,KAAAkF,MAAA,EACAlF,KAAAqF,OAAA,KACArF,KAAAuF,eAAA,OAEAxF,QAAAyF,GACAxF,KAAAuF,eAAAC,GAEAzF,aACAC,KAAAoF,SAAA,KACA,MAAAK,EAAAzF,KAAAmF,SAAAO,MACA1F,KAAA8E,QAAAJ,iBACAe,EAAApF,SAAAL,KAAAqF,OAAAhF,UAEAL,KAAA+E,WACA/E,KAAA+E,UAAAU,GAEA1F,UAAAyB,EAAAc,GACA,MAAArB,EAAAjB,KAAA8E,QAAAH,QAA4CzD,EAAA,EAAWuB,SAAA6C,EACvDK,EAAA,IAA4BtD,EAAOb,EAAAc,OAAAgD,EAAArE,GACnCjB,KAAA4F,QAAAD,GACA3F,KAAAmF,SAAAU,KAAAF,GAEA5F,OAAAa,GACA,MAAAwE,SAAeA,GAAWpF,KAC1B,GAAAoF,KAAAnE,OAA0CC,EAAA,EAAWC,KACrDiE,EAAAxE,QACAZ,KAAA8E,QAAAJ,iBACAU,EAAA/E,SAAAL,KAAAqF,OAAAhF,cAGA,CACA,MAAA+C,EAAA,IAA6BrC,EAAIH,GACjCZ,KAAA4F,QAAAxC,GACApD,KAAAoF,SAAAhC,GAGArD,UAAAa,GACA,GAAAZ,KAAAoF,UAAApF,KAAAoF,SAAAnE,OAAoDC,EAAA,EAAWI,QAE/D,YADAtB,KAAAoF,SAAAxE,SAGA,MAAAwC,EAAA,IAAyB/B,EAAOT,GAChCZ,KAAA4F,QAAAxC,GACApD,KAAAoF,SAAAhC,EAEArD,eACAC,KAAAoF,SAAA,KAEArF,eACA,MAAA+F,EAAA,IAAyB/E,EAAI,IAC7BqC,EAAA,IAAyBnB,GAAK6D,IAC9B9F,KAAA4F,QAAAxC,GACA0C,EAAA7F,OAAAmD,EACApD,KAAAoF,SAAAU,EAEA/F,aACAC,KAAAoF,SAAA,KAEArF,wBAAAyB,EAAAZ,GACA,MAAAwC,EAAA,IAAyB7B,EAAqBC,EAAAZ,GAC9CZ,KAAA4F,QAAAxC,GAEArD,eAAAyF,GACA,sBAAAxF,KAAA6E,SACA7E,KAAA6E,SAAAW,EAAAxF,KAAAgF,UAEA,GAAAQ,EACA,MAAAA,EAGAzF,QAAAqD,GACA,MAAAnD,EAAAD,KAAAmF,SAAAnF,KAAAmF,SAAApD,OAAA,GACAxB,EAAAN,EAAA0B,SAAA1B,EAAA0B,SAAAI,OAAA,GACA/B,KAAA8E,QAAAL,mBACArB,EAAAhD,WAAAJ,KAAAqF,OAAAjF,YAEAJ,KAAA8E,QAAAJ,iBACAtB,EAAA/C,SAAAL,KAAAqF,OAAAhF,UAEAJ,EAAA0B,SAAAkE,KAAAzC,GACA7C,IACA6C,EAAAlD,KAAAK,EACAA,EAAAJ,KAAAiD,GAEAA,EAAAnD,SACAD,KAAAoF,SAAA,wWC7EM,SAAUW,EAAY3C,GACxB,OAAI4C,MAAMC,QAAQ7C,GAAcA,EAAKN,IAAIiD,GAAaG,KAAK,IACvDzC,YAAYL,KAAUG,YAAUH,GACzB2C,EAAY3C,EAAKzB,UAExB2B,YAAOF,GAAcA,EAAKxC,KACvB,GAWL,SAAUuF,EAAU/C,GACtB,OAAI4C,MAAMC,QAAQ7C,GAAcA,EAAKN,IAAIqD,GAAWD,KAAK,IACrDzC,YAAYL,KAAUA,EAAKnC,OAASmF,IAAY3D,KAAOY,YAAQD,IACxD+C,EAAU/C,EAAKzB,UAEtB2B,YAAOF,GAAcA,EAAKxC,KACvB,GCxEL,SAAUyF,EAAYZ,GACxB,OAAOhC,YAAYgC,GAAQA,EAAK9D,YA0B9B,SAAU2E,EAAYb,GACxB,IAAMxF,EAhBJ,SAAoBwF,GACtB,OAAOA,EAAKxF,QAAU,KAePsG,CAAUd,GACzB,GAAc,MAAVxF,EAAgB,OAAOoG,EAAYpG,GAIvC,IAFA,IAAMuG,GAAYf,GACZvF,EAAeuF,EAAfvF,KAAMC,EAASsF,EAATtF,KACG,MAARD,GAAc,CACjBsG,EAASC,QAAQvG,GACdA,EAASA,EAATA,KAEP,KAAe,MAARC,GAAc,CACjBqG,EAASX,KAAK1F,GACXA,EAASA,EAATA,KAEP,OAAOqG,EAqDL,SAAUE,EAAmBjB,GAE/B,IADA,IAAMtF,EAASsF,EAATtF,KACU,OAATA,IAAkBgD,YAAMhD,IAAK,CAAKA,EAASA,EAATA,KACzC,OAAOA,EAWL,SAAUwG,EAAmBlB,GAE/B,IADA,IAAMvF,EAASuF,EAATvF,KACU,OAATA,IAAkBiD,YAAMjD,IAAK,CAAKA,EAASA,EAATA,KACzC,OAAOA,ECvHL,SAAU0G,EAAcnB,GAI1B,GAHIA,EAAKvF,OAAMuF,EAAKvF,KAAKC,KAAOsF,EAAKtF,MACjCsF,EAAKtF,OAAMsF,EAAKtF,KAAKD,KAAOuF,EAAKvF,MAEjCuF,EAAKxF,OAAQ,CACb,IAAMqE,EAASmB,EAAKxF,OAAO0B,SACrBkF,EAAcvC,EAAOwC,YAAYrB,GACnCoB,GAAe,GACfvC,EAAOyC,OAAOF,EAAa,GAGnCpB,EAAKtF,KAAO,KACZsF,EAAKvF,KAAO,KACZuF,EAAKxF,OAAS,KCTZ,SAAU+G,EACZC,EACA7D,GAEgB,IADhB8D,IAAOlG,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,KAAAA,UAAA,GACPmG,EAAKnG,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,GAAAA,UAAA,GAAGoG,IAER,OAaE,SACFH,EACAI,EACAH,EACAC,GAQA,IANA,IAAMtD,KAEAyD,GAAaD,GAEbE,GAAc,KAIhB,GAAIA,EAAW,IAAMD,EAAU,GAAGvF,OAAlC,CAEI,GAA0B,IAAtBwF,EAAWxF,OACX,OAAO8B,EAIXyD,EAAUE,QACVD,EAAWC,YARf,CAcA,IAAM/B,EAAO6B,EAAU,GAAGC,EAAW,MAErC,GAAIN,EAAKxB,KACL5B,EAAOgC,KAAKJ,KACN0B,GAAS,GAAG,OAAOtD,EAGzBqD,GAAWzD,YAAYgC,IAASA,EAAK9D,SAASI,OAAS,IAKvDwF,EAAWd,QAAQ,GACnBa,EAAUb,QAAQhB,EAAK9D,YAtDxB8F,CAAKR,EAAMjB,MAAMC,QAAQ7C,GAAQA,GAAQA,GAAO8D,EAASC,GCQpE,ICkBkBO,EDlBZC,GAIFC,SAAQ,SAACpG,GACL,MAAoB,mBAATA,EACA,SAACiE,GAAa,OAAKtC,YAAMsC,IAASjE,EAAKiE,EAAKjE,OACnC,MAATA,EACA2B,IAEJ,SAACsC,GAAa,OAAKtC,YAAMsC,IAASA,EAAKjE,OAASA,IAE3DqG,SAAQ,SAAC5G,GACL,MAAoB,mBAATA,EACA,SAACwE,GAAa,OAAKxE,EAAKwE,EAAKxE,OAEjC,SAACwE,GAAa,OAAKA,EAAKxE,OAASA,IAE5C6G,aAAY,SAAClH,GACT,MAAoB,mBAATA,EACA,SAAC6E,GAAa,OAAKnC,YAAOmC,IAAS7E,EAAK6E,EAAK7E,OAEjD,SAAC6E,GAAa,OAAKnC,YAAOmC,IAASA,EAAK7E,OAASA,KAoH1D,SAAUmH,EACZrF,EACA2E,GAEgB,IADhBH,IAAOlG,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,KAAAA,UAAA,GACPmG,EAAKnG,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,GAAAA,UAAA,GAAGoG,IAER,OAAOJ,EACHW,EAAiB,SAAEjF,GACnB2E,EACAH,EACAC,GCtCF,SAAUa,EAA8BX,GAa1C,OAZAA,EAAQA,EAAML,OAAO,SAAC5D,EAAMmB,EAAG0D,GAAG,OAAMA,EAAIC,SAAS9E,EAAMmB,EAAI,MAEzD4D,KAAK,SAACC,EAAGC,GACX,IAAMC,EA9DR,SACFC,EACAC,GAEA,IAAMC,KACAC,KAEN,GAAIH,IAAUC,EACV,OAAO,EAIX,IADA,IAAIG,EAAUlF,YAAY8E,GAASA,EAAQA,EAAMtI,OAC1C0I,GACHF,EAAShC,QAAQkC,GACjBA,EAAUA,EAAQ1I,OAGtB,IADA0I,EAAUlF,YAAY+E,GAASA,EAAQA,EAAMvI,OACtC0I,GACHD,EAASjC,QAAQkC,GACjBA,EAAUA,EAAQ1I,OAKtB,IAFA,IAAM2I,EAASC,KAAKC,IAAIL,EAAS1G,OAAQ2G,EAAS3G,QAC9CgH,EAAM,EACHA,EAAMH,GAAUH,EAASM,KAASL,EAASK,IAC9CA,IAGJ,GAAY,IAARA,EACA,OAAOrB,EAAiBsB,aAG5B,IAAMC,EAAeR,EAASM,EAAM,GAC9BvC,EAAsByC,EAAatH,SACnCuH,EAAWT,EAASM,GACpBI,EAAWT,EAASK,GAE1B,OAAIvC,EAAS4C,QAAQF,GAAY1C,EAAS4C,QAAQD,GAC1CF,IAAiBT,EACVd,EAAiB2B,UAAY3B,EAAiB4B,aAElD5B,EAAiB2B,UAExBJ,IAAiBV,EACVb,EAAiB6B,UAAY7B,EAAiB8B,SAElD9B,EAAiB6B,UAgBHE,CAAwBrB,EAAGC,GAC5C,OAAIC,EAAWZ,EAAiB6B,WACpB,EACDjB,EAAWZ,EAAiB2B,UAC5B,EAEJ,IAGJhC,u/BCnEL,SAAUqC,EAAQC,GACpB,IAAMC,EAAWC,EAAcC,EAAaH,GAE5C,OAAQC,EAEgB,SAAlBA,EAASpI,KAWnB,SAAqBoI,SACXtF,EAASsF,EAASjI,SAElBoI,GACF9I,KAAM,OACN+I,MAAOjC,EAAqB,QAASzD,GAAQxB,IAAI,SAACmH,SACtCtI,EAAasI,EAAbtI,SACFuI,GAAoBC,MAAOC,EAAiBzI,IAElD0I,EAAiBH,EAAO,KAAM,KAAMvI,GACpC0I,EAAiBH,EAAO,QAAS,QAASvI,GAE1C,IAAM2I,EAAsC,QAA/BzI,EAAAgI,EAAc,OAAQlI,UAAS,IAAAE,OAAA,EAAAA,EAAES,QAAc,KACxDgI,IACAJ,EAAMK,KAAOD,GAGjB,IAAME,EACFC,EAAM,UAAW9I,IAAa8I,EAAM,UAAW9I,GAC/C6I,IACAN,EAAMM,YAAcA,GAGxB,IAAME,EAAUD,EAAM,UAAW9I,GAKjC,OAJI+I,IACAR,EAAMQ,QAAU,IAAIC,KAAKD,IAGtBR,KAIfG,EAAiBN,EAAM,KAAM,KAAMzF,GACnC+F,EAAiBN,EAAM,QAAS,QAASzF,GACzC,IAAMgG,EAAoC,QAA7BzI,EAAAgI,EAAc,OAAQvF,UAAO,IAAAzC,OAAA,EAAAA,EAAES,QAAc,KACtDgI,IACAP,EAAKQ,KAAOD,GAEhBD,EAAiBN,EAAM,cAAe,WAAYzF,GAElD,IAAMsG,EAAUH,EAAM,UAAWnG,GAC7BsG,IACAb,EAAKa,QAAU,IAAID,KAAKC,IAK5B,OAFAP,EAAiBN,EAAM,SAAU,QAASzF,GAAQ,GAE3CyF,EAzDDc,CAAYjB,GAkEtB,SAAoBA,WACVtF,EAA8D,QAArDvB,EAA2C,QAA3ClB,EAAAgI,EAAc,UAAWD,EAASjI,iBAAS,IAAAE,OAAA,EAAAA,EAAEF,gBAAQ,IAAAoB,OAE9DgH,GACF9I,KAAM2I,EAASpI,KAAKsJ,OAAO,EAAG,GAC9BC,GAAI,GACJf,MAAOjC,EAAqB,OAAQ6B,EAASjI,UAAUmB,IACnD,SAACmH,GACG,IAAQtI,EAAasI,EAAbtI,SACFuI,GAAoBC,MAAOC,EAAiBzI,IAClD0I,EAAiBH,EAAO,KAAM,OAAQvI,GACtC0I,EAAiBH,EAAO,QAAS,QAASvI,GAC1C0I,EAAiBH,EAAO,OAAQ,OAAQvI,GACxC0I,EAAiBH,EAAO,cAAe,cAAevI,GACtD,IAAM+I,EACFD,EAAM,UAAW9I,IAAa8I,EAAM,UAAW9I,GAGnD,OAFI+I,IAASR,EAAMQ,QAAU,IAAIC,KAAKD,IAE/BR,KAKnBG,EAAiBN,EAAM,QAAS,QAASzF,GACzC+F,EAAiBN,EAAM,OAAQ,OAAQzF,GACvC+F,EAAiBN,EAAM,cAAe,cAAezF,GAErD,IAAMsG,EAAUH,EAAM,gBAAiBnG,GACnCsG,IACAb,EAAKa,QAAU,IAAID,KAAKC,IAK5B,OAFAP,EAAiBN,EAAM,SAAU,iBAAkBzF,GAAQ,GAEpDyF,EAnGDiB,CAAWpB,GAHX,MD1CV,SAAkBlC,GACdA,IAAA,+BACAA,IAAA,yBACAA,IAAA,yBACAA,IAAA,uBACAA,IAAA,gCALJ,CAAkBA,WCmJlB,IAAMuD,GAAqB,MAAO,OAAQ,QACpCC,GACF,WACA,UACA,YACA,eACA,WACA,WACA,SACA,SASJ,SAASd,EAAiBe,GACtB,OAAOpD,EAAqB,gBAAiBoD,GAAOrI,IAAI,SAAC2C,GACrD,IASsC2F,EAT9B9I,EAAYmD,EAAZnD,QAEF6H,GACFkB,OAAQ/I,EAAgB,OAGxBgJ,YAAahJ,EAAmB,WAClCiJ,EAAAC,EAEmBP,GAAiB,IAAtC,IAAAM,EAAAE,MAAAL,EAAAG,EAAAG,KAAAxG,MAAwC,KAA7ByG,EAAMP,EAAApI,MACTV,EAAQqJ,KACRxB,EAAMwB,GAAUrJ,EAAQqJ,KAE/B,MAAAC,GAAAL,EAAAM,EAAAD,GAAA,QAAAL,EAAAO,IAAA,IAEkCC,EAFlCC,EAAAR,EAEoBN,GAAc,IAAnC,IAAAc,EAAAP,MAAAM,EAAAC,EAAAN,KAAAxG,MAAqC,KAA1ByG,EAAMI,EAAA/I,MACTV,EAAQqJ,KACRxB,EAAMwB,GAAUM,SAAS3J,EAAQqJ,GAAS,MAEjD,MAAAC,GAAAI,EAAAH,EAAAD,GAAA,QAAAI,EAAAF,IAQD,OANIxJ,EAAoB,aACpB6H,EAAM+B,WAAa5J,EACH,YAIb6H,IAWf,SAASN,EACLnH,EACAU,GAEA,OAAO2E,EAAqBrF,EAASU,GAAM,EAAM,GAAG,GAWxD,SAASqH,EACL/H,EACAyI,GAGA,OAAOpF,EAAYgC,EAAqBrF,EAASyI,EAF1CnK,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,IAAAA,UAAA,GAE0D,IAAImL,OAYzE,SAAS9B,EACL+B,EACAC,EACA3J,EACAyI,GACe,IAETmB,EAAM7B,EAAM/H,EAASyI,EAFpBnK,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,IAAAA,UAAA,IAGHsL,IAAKF,EAAIC,GAAQC,GASzB,SAASxC,EAAY9G,GACjB,MAAiB,QAAVA,GAA6B,SAAVA,GAA8B,YAAVA,4BC3SlDuJ,EAAAC,SACAC,SAAA,WACA,UAEAC,UAAA,WACA,6CCJO,IAAItG,EA0BJ,SAASjD,EAAMsC,GAClB,OAAQA,EAAKxE,OAASmF,EAAY3D,KAC9BgD,EAAKxE,OAASmF,EAAY7D,QAC1BkD,EAAKxE,OAASmF,EAAY5D,MA9BlCmK,EAAAC,EAAAC,EAAA,sBAAAzG,IAAAuG,EAAAC,EAAAC,EAAA,sBAAA1J,IAAAwJ,EAAAC,EAAAC,EAAA,sBAAAzK,IAAAuK,EAAAC,EAAAC,EAAA,sBAAA1L,IAAAwL,EAAAC,EAAAC,EAAA,sBAAApL,IAAAkL,EAAAC,EAAAC,EAAA,sBAAAvL,IAAAqL,EAAAC,EAAAC,EAAA,sBAAAtK,IAAAoK,EAAAC,EAAAC,EAAA,sBAAArK,IAAAmK,EAAAC,EAAAC,EAAA,sBAAApK,IAAAkK,EAAAC,EAAAC,EAAA,sBAAA3K,IAAAyK,EAAAC,EAAAC,EAAA,sBAAAC,IAEA,SAAW1G,GAEPA,EAAkB,KAAI,OAEtBA,EAAkB,KAAI,OAEtBA,EAAuB,UAAI,YAE3BA,EAAqB,QAAI,UAEzBA,EAAoB,OAAI,SAExBA,EAAmB,MAAI,QAEvBA,EAAiB,IAAI,MAErBA,EAAmB,MAAI,QAEvBA,EAAqB,QAAI,UAlB7B,CAmBGA,IAAgBA,OAaZ,IAAMhE,EAAOgE,EAAYhE,KAEnBjB,EAAOiF,EAAYjF,KAEnBM,EAAY2E,EAAY3E,UAExBH,EAAU8E,EAAY9E,QAEtBiB,EAAS6D,EAAY7D,OAErBC,EAAQ4D,EAAY5D,MAEpBC,EAAM2D,EAAY3D,IAElBP,EAAQkE,EAAYlE,MAEpB4K,EAAU1G,EAAY0G,83PC+BnC,IAMetI,GALbuI,KAAK,EACLC,gBAAgB,GAMZC,GACJC,iBAAiB,EACjBvI,SAAS,GAWL,SAAUwI,EACdrI,GAEA,OAAc,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAASiI,KACW,kBAAhBjI,EAAQiI,IACbE,EAAcG,OACTH,GAAmBnI,EAAQiI,KAC3B,OAAPjI,QAAO,IAAPA,SAAWQ,wvCC1FjB,SAAS+H,EACPC,EACAtI,EACAF,GAEA,OAAKwI,EAEEA,EAAQ,OAAHtI,QAAG,IAAHA,IAAOsI,EAAKC,MAAM5L,SAAU,UAAM2D,EAAWR,GAAS0I,WAFhD,GA2Cd,SAAUC,EAEdzI,EACAF,GAoBA,OAAOuI,EAAOrN,KAvDhB,SACEgF,EACAF,GAEA,QACGA,GACc,WAAf4I,EAAO1I,IACA,MAAPA,GACE,WAAYA,GACZ,SAAUA,GAkCG2I,CAAU3I,QAASF,EAAUE,GAAmBA,EAMvDoI,SACLQ,GACI,OAAJ5N,WAAI,IAAJA,UAAI,EAAJA,KAAM6N,UACNC,EAAsB,OAAPhJ,QAAO,IAAPA,UAYhB,SAAUiI,EAEd/H,GAIA,OAAOqI,EAAOrN,KAAMgF,EAFPoI,OAAQpN,KAAK6N,cAAUlJ,SAAS,KAezC,SAAUmB,EAEdiI,GAMA,IAJA,IAAMC,EAAQD,IAAsB/N,KAAOA,KAAKiF,WAE5CgJ,EAAM,GAED1J,EAAI,EAAGA,EAAIyJ,EAAMjM,OAAQwC,IAChC0J,GAAOlI,YAAYiI,EAAMzJ,IAG3B,OAAO0J,EAsBH,SAAUC,EAEdtN,EACAuN,GAC4D,IAA5DC,EAAWpN,UAAAe,OAAA,QAAAuD,IAAAtE,UAAA,GAAAA,UAAA,GAAsB,kBAAZmN,GAAwBA,EAE7C,IAAKvN,GAAwB,iBAATA,EAClB,OAAO,KAGc,kBAAZuN,IACTC,EAAcD,GAGhB,IAAME,EAASrO,KAAKsO,KAAK1N,EAAMgN,GAAgB,GAY/C,OAXKQ,GACHC,EAAO,UAAUE,SAUZF,EAAOpJ,OAAO,GAAGtD,SAAS6M,QAiB7B,SAAUvJ,IACd,OAAOjF,KAAKA,KAAKuN,OAab,SAAUkB,EAASC,EAAoBC,GAE3C,GAAIA,IAAcD,EAChB,OAAO,EAQT,IADA,IAAIvO,EAAuBwO,EACpBxO,GAAQA,IAASA,EAAKF,QAE3B,IADAE,EAAOA,EAAKF,UACCyO,EACX,OAAO,EAIX,OAAO,EAiBH,SAAUE,EACdC,EACAC,GAEA,GAAKC,EAAYF,IAAUE,EAAYD,GAAvC,CAMA,IAHA,IAAIE,EAAYH,EAAK9M,OACfkN,GAAOH,EAAK/M,OAETwC,EAAI,EAAGA,EAAI0K,EAAK1K,IACvBsK,EAAKG,KAAeF,EAAKvK,GAG3B,OADAsK,EAAK9M,OAASiN,EACPH,GAST,SAASE,EAAY9E,GACnB,GAAIjE,MAAMC,QAAQgE,GAChB,OAAO,EAGT,GACkB,WAAhByD,EAAOzD,KACNrH,OAAOc,UAAUC,eAAeC,KAAKqG,EAAM,WACrB,iBAAhBA,EAAKlI,QACZkI,EAAKlI,OAAS,EAEd,OAAO,EAGT,IAAK,IAAIwC,EAAI,EAAGA,EAAI0F,EAAKlI,OAAQwC,IAC/B,KAAMA,KAAK0F,GACT,OAAO,EAGX,OAAO,MC/LEiF,WAzEL,SAAUC,EAAaC,GAC3B,OAA+B,MAAxBA,EAAaC,QAuChB,SAAUC,EAGdC,EAAYC,GAEZ,IADA,IAAMP,EAAMM,EAAMxN,OACTwC,EAAI,EAAGA,EAAI0K,EAAK1K,IAAKiL,EAAGD,EAAMhL,GAAIA,GAC3C,OAAOgL,EAYH,SAAUE,EAA4BzK,GAC1C,IAAMjB,EACJ,WAAYiB,EACPgB,MAAMtC,UAAUZ,IAAIc,KAAKoB,EAAK,SAAC0K,GAAE,OAAKhP,YAAUgP,GAAI,MACpDhP,YAAUsE,GAAK,IAGhBC,EAAO,IAAI0K,IAAS5L,GAK1B,OAJAA,EAAMC,QAAQ,SAACZ,GACbA,EAAKnD,OAASgF,IAGTlB,EAsBH,SAAU6L,EAAOC,GACrB,IAAMC,EAAWD,EAAIzG,QAAQ,KAE7B,GAAI0G,EAAW,GAAKA,EAAWD,EAAI9N,OAAS,EAAG,OAAO,EAEtD,IAAMgO,EAAUF,EAAIG,WAAWF,EAAW,GAE1C,OACIC,GAAWb,EAAee,QAAUF,GAAWb,EAAegB,QAC7DH,GAAWb,EAAeiB,QAAUJ,GAAWb,EAAekB,QAC/DL,IAAYb,EAAemB,cAC7BR,EAAI3H,SAAS,IAAK4H,EAAW,mQA9BjC,SAAWZ,GACTA,IAAA,oBACAA,IAAA,qBACAA,IAAA,oBACAA,IAAA,oBACAA,IAAA,8BALF,CAAWA,WCpFX,ICXOoB,EDWDC,EAAS3N,OAAOc,UAAUC,eAC1B6M,EAAS,MACTC,EAAiB,QAKjBC,GACJC,KAAM,KACNC,MAAM,EACNC,OAAO,GAGHC,EACJ,8HAEIC,EAAS,qBAwBf,SAASC,EACPvL,EACAjE,EACAmD,SAEA,GAAKc,GAAStC,YAAMsC,GAKpB,OAHY,QAAZ5D,EAAA4D,EAAKnD,eAAO,IAAAT,IAAZ4D,EAAKnD,YAGAd,EAID+O,EAAO3M,KAAK6B,EAAKnD,QAASd,IAEpBmD,GAAWmM,EAAS7J,KAAKzF,GAAQA,EAAOiE,EAAKnD,QAAQd,GAI7C,WAAdiE,EAAKjE,MAA8B,UAATA,EACrBsE,EAAKL,EAAK9D,UAKH,UAAd8D,EAAKjE,MACqB,UAAzBiE,EAAKnD,QAAc,MAA0C,aAAzBmD,EAAKnD,QAAc,MAC/C,UAATd,OAHF,EAKS,KAnBAiE,EAAKnD,QAiChB,SAAS2O,EAAQvB,EAAalO,EAAcwB,GAC5B,OAAVA,EACFkO,GAAgBxB,EAAIlO,GAEpBkO,EAAGpN,QAAQd,GAAK,GAAA2P,OAAMnO,GAyFpB,SAAUoO,EAEd5P,EACAwB,GAMA,GAAoB,WAAhB0K,EAAOlM,SAA+B8D,IAAVtC,EAAqB,CACnD,GAAqB,mBAAVA,EAAsB,CAC/B,GAAoB,iBAATxB,EAEP,MAAM,IAAI2C,MAAM,iCAGpB,OAAOmL,EAAQtP,KAAM,SAAC0P,EAAInL,GACpBpB,YAAMuM,IAAKuB,EAAQvB,EAAIlO,EAAMwB,EAAMY,KAAK8L,EAAInL,EAAGmL,EAAGpN,QAAQd,OAGlE,OAAO8N,EAAQtP,KAAM,SAAC0P,GACfvM,YAAMuM,KAES,WAAhBhC,EAAOlM,GACToB,OAAOC,KAAKrB,GAAMwC,QAAQ,SAACqN,GACzB,IAAMC,EAAW9P,EAAK6P,GACtBJ,EAAQvB,EAAI2B,EAASC,KAGvBL,EAAQvB,EAAIlO,EAAgBwB,MAKlC,OAAOhC,UAAUe,OAAS,EACtB/B,KACAgR,EAAQhR,KAAK,GAAIwB,EAAgBxB,KAAK8E,QAAQH,SAYpD,SAAS4M,EACP7B,EACAlO,EACAmD,GAEA,OAAOnD,KAAQkO,EAEXA,EAAGlO,IACFmD,GAAWmM,EAAS7J,KAAKzF,QACG8D,IAA7B0L,EAAQtB,EAAIlO,GAAM,GAClBwP,EAAQtB,EAAIlO,EAAMmD,GAWxB,SAAS6M,EAAQ9B,EAAalO,EAAcwB,EAAgB2B,GACtDnD,KAAQkO,EAEVA,EAAGlO,GAAQwB,EAEXiO,EACEvB,EACAlO,GACCmD,GAAWmM,EAAS7J,KAAKzF,GAASwB,EAAQ,GAAK,KAAI,GAAAmO,OAAOnO,IAsF3D,SAAUqJ,EAEd7K,EACAwB,GAMW,MAAAyO,EAAAzR,KAEX,GAAoB,iBAATwB,QAA+B8D,IAAVtC,EAAqB,CACnD,IAAM0M,EAAK1P,KAAK,GAEhB,IAAK0P,IAAOvM,YAAMuM,GAAK,OAEvB,OAAQlO,GACN,IAAK,QACH,IAAMkQ,EAAW1R,KAAK2R,MAChB9O,EAAOD,OAAOC,KAAK6O,GAOzB,OANA7O,EAAKmB,QAAQ,SAAC4N,EAAGrN,GACfmN,EAASnN,GAAKqN,IAGhBF,EAAS3P,OAASc,EAAKd,OAEhB2P,EAET,IAAK,UACL,IAAK,WACH,OAAOhC,EAAGlO,KAAKqQ,cAGjB,IAAK,OACL,IAAK,MACH,IAAMxF,EAAiB,QAAVxK,EAAA6N,EAAGpN,eAAO,IAAAT,OAAA,EAAAA,EAAGL,GAG1B,MACiB,oBAARsQ,MACI,SAATtQ,GAAmC,MAAfkO,EAAGhN,SAA+B,SAAZgN,EAAGlO,QACnC,QAATA,GACiB,QAAfkO,EAAGhN,SACa,WAAfgN,EAAGhN,SACY,UAAfgN,EAAGhN,SACY,UAAfgN,EAAGhN,SACY,WAAfgN,EAAGhN,eACA4C,IAAT+G,IACArM,KAAK8E,QAAQiN,QAMR1F,EAJE,IAAIyF,IAAIzF,EAAMrM,KAAK8E,QAAQiN,SAASzH,KAO/C,IAAK,YACH,OAAOnE,YAAUuJ,GAGnB,IAAK,cACH,OAAO3J,YAAY2J,GAGrB,IAAK,YACH,OAAO1P,KAAK+D,QAAQiO,KAAK,iBAAiB/R,SAASwN,OAErD,IAAK,YACH,OAAOzN,KAAKyN,OAEd,QACE,OAAO8D,EAAQ7B,EAAIlO,EAAMxB,KAAK8E,QAAQH,UAI5C,GAAoB,WAAhB+I,EAAOlM,SAA+B8D,IAAVtC,EAAqB,CACnD,GAAqB,mBAAVA,EAAsB,CAC/B,GAAoB,WAAhB0K,EAAOlM,GACT,MAAM,IAAI2C,MAAM,iCAElB,OAAOmL,EAAQtP,KAAM,SAAC0P,EAAInL,GACpBpB,YAAMuM,IACR8B,EACE9B,EACAlO,EACAwB,EAAMY,KAAK8L,EAAInL,EAAGgN,EAAQ7B,EAAIlO,EAAMiQ,EAAK3M,QAAQH,UACjD8M,EAAK3M,QAAQH,WAMrB,OAAO2K,EAAQtP,KAAM,SAAC0P,GACfvM,YAAMuM,KAES,WAAhBhC,EAAOlM,GACToB,OAAOC,KAAKrB,GAAMwC,QAAQ,SAACiO,GACzB,IAAM3F,EAAM9K,EAAKyQ,GACjBT,EAAQ9B,EAAIuC,EAAK3F,EAAKmF,EAAK3M,QAAQH,WAGrC6M,EAAQ9B,EAAIlO,EAAMwB,EAAOyO,EAAK3M,QAAQH,aA0B9C,SAASuN,GACPxC,EACAlO,EACAwB,SAEMyC,EAAoBiK,EAEjB,QAAT7N,EAAA4D,EAAK7E,YAAI,IAAAiB,IAAT4D,EAAK7E,SAEe,WAAhB8M,EAAOlM,GAAmBoB,OAAOuP,OAAO1M,EAAK7E,KAAMY,GAC9B,iBAATA,QAA+B8D,IAAVtC,IACnCyC,EAAK7E,KAAKY,GAAQwB,GAetB,SAASoP,GAAS1C,EAAiBlO,GACjC,IAAI6Q,EACAC,EACAtP,ED7ckB6M,EC+cV,MAARrO,EAIF8Q,GAHAD,EAAWzP,OAAOC,KAAK6M,EAAGpN,SAAS0E,OAAO,SAACuL,GAAQ,OACjDA,EAASC,WAAW/B,MAEH3N,IAAI,SAAC2P,GAAO,OACnBA,EAAQjE,MAAMiC,EAAe1O,QDhehC2Q,QAAQ,eAAgB,SAACC,EAAGC,GAAC,OAAKA,EAAEf,mBCme7CQ,GAAY5B,GDvdQZ,ECudiBrO,EDtdhCqO,EAAI6C,QAAQ,SAAU,OAAOG,gBCudlCP,GAAW9Q,IAGb,IAAK,IAAIuH,EAAM,EAAGA,EAAMsJ,EAAStQ,SAAUgH,EAAK,CAC9C,IAAM0J,EAAUJ,EAAStJ,GACnB+J,EAASR,EAAQvJ,GACvB,GACEwH,EAAO3M,KAAK8L,EAAGpN,QAASmQ,KACvBlC,EAAO3M,KAAM8L,EAAmB9O,KAAMkS,GACvC,CAGA,GAFA9P,EAAQ0M,EAAGpN,QAAQmQ,GAEflC,EAAO3M,KAAK8M,EAAY1N,GAC1BA,EAAQ0N,EAAW1N,QACd,GAAIA,IAAU+P,OAAOC,OAAOhQ,IACjCA,EAAQgQ,OAAOhQ,QACV,GAAI+N,EAAO9J,KAAKjE,GACrB,IACEA,EAAQiQ,KAAKC,MAAMlQ,GACnB,MAAO6I,IAKV6D,EAAG9O,KAAiCkS,GAAU9P,GAInD,OAAe,MAARxB,EAAekO,EAAG9O,KAAOoC,EAqF5B,SAAUpC,GAEdY,EACAwB,SAEMyC,EAAOzF,KAAK,GAElB,GAAKyF,GAAStC,YAAMsC,GAApB,CAEA,IAAM0N,EAAsB1N,EAI5B,OAHW,QAAX5D,EAAAsR,EAAOvS,YAAI,IAAAiB,IAAXsR,EAAOvS,SAGFY,EAKe,WAAhBkM,EAAOlM,SAA+B8D,IAAVtC,GAC9BsM,EAAQtP,KAAM,SAAC0P,GACTvM,YAAMuM,KACY,WAAhBhC,EAAOlM,GAAmB0Q,GAAQxC,EAAIlO,GACrC0Q,GAAQxC,EAAIlO,EAAMwB,MAGpBhD,MAELuQ,EAAO3M,KAAKuP,EAAOvS,KAAMY,GACpB2R,EAAOvS,KAAKY,GAGd4Q,GAASe,EAAQ3R,GAjBf4Q,GAASe,IA0Dd,SAAU7G,GAEdtJ,GAEA,IAAMoQ,EAAgC,IAArBpS,UAAUe,OACrB4D,EAAU3F,KAAK,GAErB,IAAK2F,IAAYxC,YAAMwC,GAAU,OAAOyN,OAAW9N,EAAYtF,KAE/D,OAAQ2F,EAAQnE,MACd,IAAK,WACH,OAAOxB,KAAK8F,KAAK9C,GACnB,IAAK,SACH,IAAMqQ,EAASrT,KAAKyH,KAAK,mBACzB,IAAK2L,EAAU,CACb,GAA6B,MAAzBpT,KAAKoR,KAAK,aAAwC,WAAjB1D,EAAO1K,GAC1C,OAAOhD,KAGTA,KAAKyH,KAAK,UAAU6L,WAAW,YAG/B,IADA,IAAMC,EAA0B,WAAjB7F,EAAO1K,IAAsBA,GAASA,EAC5CuB,EAAI,EAAGA,EAAIgP,EAAOxR,OAAQwC,IACjCvE,KAAKyH,KAAI,iBAAA0J,OAAkBoC,EAAOhP,GAAE,OAAM6M,KAAK,WAAY,IAG7D,OAAOpR,KAGT,OAAOA,KAAKoR,KAAK,YACbiC,EAAOG,UAAU1Q,IAAI,SAAC4M,GAAE,OAAK5J,EAAK4J,EAAG/N,YACrC0R,EAAOjC,KAAK,SAElB,IAAK,QACL,IAAK,SACH,OAAOgC,EACHpT,KAAKoR,KAAK,SACVpR,KAAKoR,KAAK,QAASpO,IAa7B,SAASkO,GAAgBzL,EAAejE,GACjCiE,EAAKnD,SAAYiO,EAAO3M,KAAK6B,EAAKnD,QAASd,WAEzCiE,EAAKnD,QAAQd,GAUtB,SAASiS,GAAWC,GAClB,OAAOA,EAAQA,EAAMvH,OAAOwH,MAAMnD,MAsB9B,SAAU8C,GAEd9R,GAIA,IAJY,IAAAoS,EAAA5T,KAEN6T,EAAYJ,GAAWjS,GAAMsS,EAAA,SAAAvP,GAGjC+K,EAAQsE,EAAM,SAACnO,GACTtC,YAAMsC,IAAOyL,GAAgBzL,EAAMoO,EAAUtP,OAF5CA,EAAI,EAAGA,EAAIsP,EAAU9R,OAAQwC,IAAGuP,EAAAvP,GAMzC,OAAOvE,KAwBH,SAAU+T,GAEdC,GAEA,OAAOhU,KAAKwT,UAAUS,KAAK,SAACxO,GAC1B,IAAMyO,EAAQ/Q,YAAMsC,IAASA,EAAKnD,QAAe,MAC7CyG,GAAO,EAEX,GAAImL,GAASF,EAAUjS,OACrB,MAAQgH,EAAMmL,EAAM9K,QAAQ4K,EAAWjL,EAAM,KAAO,GAAG,CACrD,IAAMoL,EAAMpL,EAAMiL,EAAUjS,OAE5B,IACW,IAARgH,GAAayH,EAAOvJ,KAAKiN,EAAMnL,EAAM,OACrCoL,IAAQD,EAAMnS,QAAUyO,EAAOvJ,KAAKiN,EAAMC,KAE3C,OAAO,EAKb,OAAO,IAsBL,SAAUC,GAEdpR,GAKA,GAAqB,mBAAVA,EACT,OAAOsM,EAAQtP,KAAM,SAAC0P,EAAInL,GACxB,GAAIpB,YAAMuM,GAAK,CACb,IAAMsE,EAAYtE,EAAGpN,QAAe,OAAK,GACzC8R,GAASxQ,MAAM8L,GAAK1M,EAAMY,KAAK8L,EAAInL,EAAGyP,OAM5C,IAAKhR,GAA0B,iBAAVA,EAAoB,OAAOhD,KAKhD,IAHA,IAAMqU,EAAarR,EAAM2Q,MAAMnD,GACzB8D,EAActU,KAAK+B,OAEhBwC,EAAI,EAAGA,EAAI+P,EAAa/P,IAAK,CACpC,IAAMmL,EAAK1P,KAAKuE,GAEhB,GAAKpB,YAAMuM,GAAX,CAGA,IAAMsE,EAAYhD,EAAQtB,EAAI,SAAS,GAEvC,GAAKsE,EAEE,CAIL,IAHA,IAAIO,EAAQ,IAAApD,OAAO6C,EAAS,KAGnBQ,EAAI,EAAGA,EAAIH,EAAWtS,OAAQyS,IAAK,CAC1C,IAAMC,EAAW,GAAAtD,OAAMkD,EAAWG,GAAE,KAC/BD,EAASrM,SAAQ,IAAAiJ,OAAKsD,MAAgBF,GAAYE,GAGzDxD,EAAQvB,EAAI,QAAS6E,EAASpI,aAV9B8E,EAAQvB,EAAI,QAAS2E,EAAWnO,KAAK,KAAKiG,SAc9C,OAAOnM,KAsBH,SAAU0U,GAEdlT,GAKA,GAAoB,mBAATA,EACT,OAAO8N,EAAQtP,KAAM,SAAC0P,EAAInL,GACpBpB,YAAMuM,IACRgF,GAAY9Q,MAAM8L,GAAKlO,EAAKoC,KAAK8L,EAAInL,EAAGmL,EAAGpN,QAAe,OAAK,OAKrE,IAAMqS,EAAUlB,GAAWjS,GACrBoT,EAAaD,EAAQ5S,OACrB8S,EAAiC,IAArB7T,UAAUe,OAE5B,OAAOuN,EAAQtP,KAAM,SAAC0P,GACpB,GAAKvM,YAAMuM,GAEX,GAAImF,EAEFnF,EAAGpN,QAAe,MAAI,OACjB,CAIL,IAHA,IAAMwS,EAAYrB,GAAW/D,EAAGpN,QAAe,OAC3CyS,GAAU,EAELP,EAAI,EAAGA,EAAII,EAAYJ,IAAK,CACnC,IAAMQ,EAAQF,EAAU1L,QAAQuL,EAAQH,IAEpCQ,GAAS,IACXF,EAAU/N,OAAOiO,EAAO,GACxBD,GAAU,EAMVP,KAGAO,IACFrF,EAAGpN,QAAe,MAAIwS,EAAU5O,KAAK,SA0BvC,SAAU+O,GAEdjS,EAQAkS,GAGA,GAAqB,mBAAVlS,EACT,OAAOsM,EAAQtP,KAAM,SAAC0P,EAAInL,GACpBpB,YAAMuM,IACRuF,GAAYrR,MACT8L,GACD1M,EAAMY,KAAK8L,EAAInL,EAAGmL,EAAGpN,QAAe,OAAK,GAAI4S,GAC7CA,KAOR,IAAKlS,GAA0B,iBAAVA,EAAoB,OAAOhD,KAOhD,IALA,IAAMqU,EAAarR,EAAM2Q,MAAMnD,GACzBoE,EAAaP,EAAWtS,OACxBoT,EAA4B,kBAAbD,EAA0BA,EAAW,GAAK,EAAK,EAC9DZ,EAActU,KAAK+B,OAEhBwC,EAAI,EAAGA,EAAI+P,EAAa/P,IAAK,CACpC,IAAMmL,EAAK1P,KAAKuE,GAEhB,GAAKpB,YAAMuM,GAAX,CAKA,IAHA,IAAM0F,EAAiB3B,GAAW/D,EAAGpN,QAAe,OAG3CkS,EAAI,EAAGA,EAAII,EAAYJ,IAAK,CAEnC,IAAMQ,EAAQI,EAAehM,QAAQiL,EAAWG,IAG5CW,GAAS,GAAKH,EAAQ,EACxBI,EAAevP,KAAKwO,EAAWG,IACtBW,GAAS,GAAKH,GAAS,GAEhCI,EAAerO,OAAOiO,EAAO,GAIjCtF,EAAGpN,QAAe,MAAI8S,EAAelP,KAAK,MAG5C,OAAOlG,MCtiCT,SAAAsQ,GACAA,EAAA,sBACAA,EAAA,gBACAA,EAAA,+BACAA,EAAA,UACAA,EAAA,sBAEAA,EAAA,oBACAA,EAAA,cACAA,EAAA,wBACAA,EAAA,gBACAA,EAAA,kBACAA,EAAA,qCAZA,CAaCA,WAcM,IAAA+E,IACP,SAAAA,GACAA,EAAA,UACAA,EAAA,kBACAA,EAAA,UACAA,EAAA,gBACAA,EAAA,gBACAA,EAAA,gBACAA,EAAA,UACAA,EAAA,cARA,CASCA,aCrCD,MAAAC,GAAA,2DACAC,GAAA,+BACAC,GAAA,IAAAC,MACA,IAAsBJ,GAAeK,UACrC,GAA0BL,GAAeM,QACzC,GAAsBN,GAAeO,MACrC,GAAwBP,GAAeQ,MACvC,GAA+BR,GAAeS,MAC9C,IAAqBT,GAAeU,UAGpCC,GAAA,IAAAC,KACA,MACA,MACA,UACA,KACA,QACA,OACA,iBASO,SAAAC,GAAAC,GACP,OAAAA,EAAAlV,MACA,KAAaqP,EAAY8F,SACzB,KAAa9F,EAAY+F,MACzB,KAAa/F,EAAYgG,WACzB,KAAahG,EAAYiG,OACzB,KAAajG,EAAYkG,QACzB,KAAalG,EAAYmG,iBACzB,SACA,QACA,UAGA,MAAAC,GAAA,IAAAT,KAAA,yBAEA,SAAAU,GAAAhE,EAAAiE,EAAAC,GACA,MAAAC,EAAA7K,SAAA2K,EAAA,UAEA,OAAAE,MAAAD,EACAD,EACAE,EAAA,EAEA/D,OAAAgE,aAAAD,EAAA,OAEA/D,OAAAgE,aAAAD,GAAA,cAAAA,EAAA,OAEA,SAAAE,GAAAnH,GACA,OAAAA,EAAA6C,QAAA6C,GAAAoB,IAEA,SAAAM,GAAAC,GACA,YAAAA,GAAA,KAAAA,EAEA,SAAAC,GAAAD,GACA,YAAAA,GACA,IAAAA,GACA,KAAAA,GACA,KAAAA,GACA,KAAAA,EAWO,SAASE,GAAKjB,GACrB,MAAAkB,KACAhX,EAMA,SAAAiX,EAAAD,EAAAlB,EAAAoB,GACA,IAAAC,KACA,SAAAC,EAAAC,GACA,MAAAC,EAAAxB,EAAA3H,MAAA+I,EAAAG,GAAAC,MAAArC,IACA,IAAAqC,EACA,UAAAxT,8BAAoDgS,EAAA3H,MAAA+I,MAEpD,MAAA/V,GAAAmW,EAEA,OADAJ,GAAAG,EAAAlW,EAAAO,OACAiV,GAAAxV,GAEA,SAAAoW,EAAAF,GAEA,IADAH,GAAAG,EACAH,EAAApB,EAAApU,QACAoV,GAAAhB,EAAAnG,WAAAuH,KACAA,IAGA,SAAAM,IAEA,MAAAC,EADAP,GAAA,EAEA,IAAAQ,EAAA,EACA,KAAcA,EAAA,GAAAR,EAAApB,EAAApU,OAAgDwV,IAE9D,KADApB,EAAAnG,WAAAuH,IAEAS,EAAAT,GAIA,KADApB,EAAAnG,WAAAuH,IAEAS,EAAAT,IACAQ,IALAA,IAQA,GAAAA,EACA,UAAA5T,MAAA,2BAEA,OAAA6S,GAAAb,EAAA3H,MAAAsJ,EAAAP,EAAA,IAEA,SAAAS,EAAAC,GACA,IAAAC,EAAA,EACA,UAAA/B,EAAAnG,aAAAiI,IACAC,IACA,aAAAA,GAEA,SAAAC,IACA,GAAAX,EAAAzV,OAAA,GAAAmU,GAAAsB,IAAAzV,OAAA,IACA,UAAAoC,MAAA,yCAGA,SAAAiU,EAAAnX,GACAuW,EAAAzV,OAAA,GACAyV,IAAAzV,OAAA,GAAAd,OAA+CqP,EAAYgG,WAC3DkB,IAAAzV,OAAA,GAAAd,QAGAkX,IACAX,EAAA3R,MAAqB5E,UAErB,SAAAoX,EAAA7W,EAAA8W,GACAd,EAAA3R,MACA5E,KAAkBqP,EAAYiI,UAC9B/W,OACA8W,SACAtV,MAAAyU,EAAA,GACAxU,UAAA,KACAuV,WAAA,WAUA,SAAAC,IAKA,GAJAjB,EAAAzV,QACAyV,IAAAzV,OAAA,GAAAd,OAA+CqP,EAAYgG,YAC3DkB,EAAA9R,MAEA,IAAA8R,EAAAzV,OACA,UAAAoC,MAAA,sBAEAkT,EAAAxR,KAAA2R,GAEAI,EAAA,GACA,GAAAzB,EAAApU,SAAAwV,EACA,OAAAA,EAEAmB,EAAA,KAAAnB,EAAApB,EAAApU,QAAA,CACA,MAAA4W,EAAAxC,EAAAnG,WAAAuH,GACA,OAAAoB,GAEA,QACA,OACA,QACA,QACA,QACA,IAAAnB,EAAAzV,QACAyV,EAAA,GAAAvW,OAAuCqP,EAAYgG,aACnD6B,IACAX,EAAA3R,MAAiC5E,KAAOqP,EAAYgG,cAEpDsB,EAAA,GACA,MAGA,QACAQ,EAA6B9H,EAAY+F,OACzCuB,EAAA,GACA,MAEA,QACAQ,EAA6B9H,EAAYiG,QACzCqB,EAAA,GACA,MAEA,SACAQ,EAA6B9H,EAAYkG,SACzCoB,EAAA,GACA,MAEA,QACAQ,EAA6B9H,EAAY8F,UACzCwB,EAAA,GACA,MAGA,QACAS,EAAA,QAA6ChD,GAAeK,SAC5D,MAEA,QACA2C,EAAA,KAA0ChD,GAAeuD,QACzD,MAEA,SAGA,IAAApX,EAFAoW,EAAA,GAGA,IAAA3U,EAAA,KACA,MAAAkT,EAAAnG,WAAAuH,GAEA/V,EAAAiW,EAAA,GAEAtB,EAAA3D,WAAA,KAAA+E,IACAtU,EAAA,IACAzB,EAAAiW,EAAA,KAGAjW,EAAAiW,EAAA,GACA,MAAAtB,EAAAnG,WAAAuH,IAEA,KADApB,EAAAnG,WAAAuH,EAAA,KAEAtU,EAAAzB,EACAA,EAAAiW,EAAA,KAGAG,EAAA,GAEA,IAAAU,EAA6BjD,GAAewD,OAC5C,MAAAC,EAAAtD,GAAAuD,IAAA5C,EAAAnG,WAAAuH,IACA,GAAAuB,EAAA,CAEA,GADAR,EAAAQ,EAEA,KADA3C,EAAAnG,WAAAuH,EAAA,GAEA,UAAApT,MAAA,gBAEAyT,EAAA,QAEA,KAAAzB,EAAAnG,WAAAuH,KACAe,EAA6BjD,GAAeuD,OAC5ChB,EAAA,IAGA,IAAA5U,EAAA,GACAwV,EAAA,KACA,cAAAF,EAAA,CACA,GAAArB,GAAAd,EAAAnG,WAAAuH,IAAA,CACA,MAAAyB,EAAA7C,EAAAnG,WAAAuH,GACA,IAAA0B,EAAA1B,EAAA,EACA,KAAA0B,EAAA9C,EAAApU,SACAoU,EAAAnG,WAAAiJ,KAAAD,GACAhB,EAAAiB,KACAA,GAAA,EAEA,GAAA9C,EAAAnG,WAAAiJ,KAAAD,EACA,UAAA7U,MAAA,8BAEAnB,EAAAgU,GAAAb,EAAA3H,MAAA+I,EAAA,EAAA0B,IACA1B,EAAA0B,EAAA,MAEA,CACA,MAAAC,EAAA3B,EACA,KAAAA,EAAApB,EAAApU,UACAoV,GAAAhB,EAAAnG,WAAAuH,KAEA,KADApB,EAAAnG,WAAAuH,IAEAS,EAAAT,KACAA,GAAA,EAEAvU,EAAAgU,GAAAb,EAAA3H,MAAA0K,EAAA3B,IAEAK,EAAA,GAEA,MAAAuB,EAAA,GAAAhD,EAAAnG,WAAAuH,GAEA,MAAA4B,GACAX,GAAA,EACAZ,EAAA,IAEA,MAAAuB,IACAX,GAAA,EACAZ,EAAA,IAGA,GACA,KADAzB,EAAAnG,WAAAuH,GAEA,UAAApT,MAAA,uCAEAoT,GAAA,EACA,MAAA6B,GACAnY,KAA0BqP,EAAYiI,UACtC/W,OACA8W,SACAtV,QACAC,YACAuV,cAEAhB,EAAA3R,KAAAuT,GACA,MAEA,SACA,QAAAjD,EAAAnG,WAAAuH,EAAA,IACAC,EAAA3R,MACA5E,KAA8BqP,EAAY+I,cAC1C7X,KAAAiW,EAAA,GAAA5E,cACAjS,KACA,KADAuV,EAAAnG,WAAAuH,GAEAM,IACA,OAEA,SAEA,MAAArW,EAAAiW,EAAA,GAAA5E,cACA,IAAAjS,EAAA,KACA,GACA,KADAuV,EAAAnG,WAAAuH,GAEA,GAAAvB,GAAAsD,IAAA9X,GAAA,CACA,GAAAyV,GAAAd,EAAAnG,WAAAuH,EAAA,IACA,UAAApT,yBAA+D3C,sBAI/D,GADA+V,EAAAD,EADA1W,KACAuV,EAAAoB,EAAA,GAEA,KADApB,EAAAnG,WAAAuH,GAEA,UAAApT,yCAA+E3C,MAAS2U,MAExFoB,GAAA,MAEA,CAEA,GADA3W,EAAAiX,IACAnB,GAAA4C,IAAA9X,GAAA,CACA,MAAA+X,EAAA3Y,EAAAoP,WAAA,GACAuJ,IAAA3Y,EAAAoP,WAAApP,EAAAmB,OAAA,IACAkV,GAAAsC,KACA3Y,IAAA4N,MAAA,OAGA5N,EAAAoW,GAAApW,GAGA4W,EAAA3R,MAA6B5E,KAAOqP,EAAYkJ,OAAAhY,OAAAZ,SAChD,MAEA,QACA6X,IACAjB,KACAI,EAAA,GACA,MAEA,SACA,GAAAzB,EAAA3D,WAAA,KAAA+E,GAAA,CACA,MAAAlX,EAAA8V,EAAA/M,QAAA,KAAAmO,EAAA,GACA,GAAAlX,EAAA,EACA,UAAA8D,MAAA,8BAEAoT,EAAAlX,EAAA,EAEA,IAAAmX,EAAAzV,QACA6V,EAAA,GAEA,MAEA,IACApW,EADAyB,EAAA,KAEA,QAAA0V,EACApB,GAAA,EACA/V,EAAA,SAEA,SAAAmX,GAEA,GADAnX,EAAA,GACA,MAAA2U,EAAAnG,WAAAuH,EAAA,IACAa,EAAqC9H,EAAYmG,kBACjDmB,EAAA,GACA,WAGA,KAAAtC,GAAArO,KAAAkP,EAAA3H,MAAA+I,IAIA,MAAAmB,EAHAlX,EAAAiW,EAAA,GAKA,MAAAtB,EAAAnG,WAAAuH,IACA,MAAApB,EAAAnG,WAAAuH,EAAA,KACAtU,EAAAzB,EAEA,KADA2U,EAAAnG,WAAAuH,EAAA,IAEA/V,EAAA,IACA+V,GAAA,GAGA/V,EAAAiW,EAAA,IAGAD,EAAA3R,KAAA,MAAArE,GACuBP,KAAOqP,EAAYmJ,UAAAxW,cACnBhC,KAAOqP,EAAY7N,IAAAjB,OAAAyB,gBAI1CwV,IACA,OAAAlB,EApVAD,CAAAD,KAAkDlB,IAAS,GAC3D,GAAA9V,EAAA8V,EAAApU,OACA,UAAAoC,6BAA+CgS,EAAA3H,MAAAnO,MAE/C,OAAAgX,ECjFO,IAAAjR,IACP,SAAAA,GAEAA,EAAA,YAEAA,EAAA,YAEAA,EAAA,sBAEAA,EAAA,kBAEAA,EAAA,gBAEAA,EAAA,cAEAA,EAAA,UAEAA,EAAA,cAEAA,EAAA,kBAlBA,CAmBCA,aAaM,MAAAhE,GAAAgE,GAAAhE,KAEMsX,GAAItT,GAAAjF,KAEVM,GAAA2E,GAAA3E,UAEMkY,GAAOvT,GAAA9E,QAEbiB,GAAA6D,GAAA7D,OAEAC,GAAA4D,GAAA5D,MAEAC,GAAA2D,GAAA3D,IAEMmX,GAAKxT,GAAAlE,MAEX4K,GAAA1G,GAAA0G,QC4KA,SAAS+M,GAAKzW,GACrB,ODpMOqC,ECoMYrC,GDnMnBnC,OAAAmF,GAAA3D,KACAgD,EAAAxE,OAAAmF,GAAA7D,QACAkD,EAAAxE,OAAAmF,GAAA5D,MAHO,IAAAiD,EC0MA,SAAApC,GAAAD,GACP,OAAAA,EAAAnC,OAAyBmF,GAAWlE,MAM7B,SAAAoB,GAAAF,GACP,OAAAA,EAAAnC,OAAyBmF,GAAWjF,KAM7B,SAAAoC,GAAAH,GACP,OAAAA,EAAAnC,OAAyBmF,GAAW9E,QAa7B,SAASwY,GAAU1W,GAC1B,OAAAA,EAAAnC,OAAyBmF,GAAWhE,KAM7B,SAAAqB,GAAAL,GACP,OAAAR,OAAAc,UAAAC,eAAAC,KAAAR,EAAA,YCxHe,IChJX2W,GCAWC,GAAA,IAAAC,YAEf,2keACAtG,MAAA,IACA7Q,IAAAoU,KAAAlH,WAAA,KCJekK,GAAA,IAAAD,YAEf,sCACAtG,MAAA,IACA7Q,IAAAoU,KAAAlH,WAAA,KFHA,MAAAmK,GAAA,IAAA1E,MACA,UAEA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,WAKO2E,GAEJ,QAAFL,GAAEhH,OAAAqH,qBAAuC,IAAFL,GAAgBA,GAAE,SAAAM,GAC1D,IAAAC,EAAA,GAOA,OANAD,EAAA,QACAA,GAAA,MACAC,GAAAvH,OAAAgE,aAAAsD,IAAA,eACAA,EAAA,WAAAA,GAEAC,GAAAvH,OAAAgE,aAAAsD,IAQO,SAAAE,GAAAF,GACP,IAAAxY,EACA,OAAAwY,GAAA,OAAAA,GAAA,OAAAA,EAAA,QACA,MAEA,QAAAxY,EAAAsY,GAAApB,IAAAsB,UAAA,IAAAxY,IAAAwY,EGpDA,IAAAG,IACA,SAAAA,GACAA,IAAA,cACAA,IAAA,gBACAA,IAAA,oBACAA,IAAA,gBACAA,IAAA,gBACAA,IAAA,sBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,uBACAA,IAAA,sBACAA,IAAA,sBACAA,IAAA,sBAZA,CAaCA,aAED,MAAAC,GAAA,GACO,IAAAC,GA2BPC,GAQOC,GA7BP,SAAAC,GAAAC,GACA,OAAAA,GAAAN,GAAAO,MAAAD,GAAAN,GAAAQ,KAiBA,SAAAC,GAAAH,GACA,OAAAA,IAAAN,GAAAU,QAZA,SAAAJ,GACA,OAAAA,GAAAN,GAAAW,SAAAL,GAAAN,GAAAY,SACAN,GAAAN,GAAAa,SAAAP,GAAAN,GAAAc,SACAT,GAAAC,GASAS,CAAAT,IAxBA,SAAAJ,GACAA,IAAA,mCACAA,IAAA,qCACAA,IAAA,6BAHA,CAICA,aAuBD,SAAAC,GACAA,IAAA,6BACAA,IAAA,+BACAA,IAAA,mCACAA,IAAA,2BACAA,IAAA,6BALA,CAMCA,aAED,SAAAC,GAEAA,IAAA,mBAEAA,IAAA,mBAEAA,IAAA,yBANA,CAOCA,mBAIYY,GACbzb,YAEA0b,EAUAC,EAEAC,GACA3b,KAAAyb,aACAzb,KAAA0b,gBACA1b,KAAA2b,SAEA3b,KAAAmV,MAAAwF,GAAAiB,YAEA5b,KAAA6b,SAAA,EAOA7b,KAAA6D,OAAA,EAEA7D,KAAA8b,UAAA,EAEA9b,KAAA+b,OAAA,EAEA/b,KAAAgc,WAAApB,GAAAqB,OAGAlc,YAAAic,GACAhc,KAAAgc,aACAhc,KAAAmV,MAAAwF,GAAAiB,YACA5b,KAAA6D,OAAA,EACA7D,KAAA8b,UAAA,EACA9b,KAAA+b,OAAA,EACA/b,KAAA6b,SAAA,EAaA9b,MAAA8P,EAAA6H,GACA,OAAA1X,KAAAmV,OACA,KAAAwF,GAAAiB,YACA,OAAA/L,EAAAG,WAAA0H,KAAA8C,GAAA0B,KACAlc,KAAAmV,MAAAwF,GAAAwB,aACAnc,KAAA6b,UAAA,EACA7b,KAAAoc,kBAAAvM,EAAA6H,EAAA,KAEA1X,KAAAmV,MAAAwF,GAAA0B,YACArc,KAAAsc,iBAAAzM,EAAA6H,IAEA,KAAAiD,GAAAwB,aACA,OAAAnc,KAAAoc,kBAAAvM,EAAA6H,GAEA,KAAAiD,GAAA4B,eACA,OAAAvc,KAAAwc,oBAAA3M,EAAA6H,GAEA,KAAAiD,GAAA8B,WACA,OAAAzc,KAAA0c,gBAAA7M,EAAA6H,GAEA,KAAAiD,GAAA0B,YACA,OAAArc,KAAAsc,iBAAAzM,EAAA6H,IAaA3X,kBAAA8P,EAAA6H,GACA,OAAAA,GAAA7H,EAAA9N,QACA,GAEA8N,EAAAG,WAAA0H,GAAA+C,MAAAD,GAAAmC,SACA3c,KAAAmV,MAAAwF,GAAA8B,WACAzc,KAAA6b,UAAA,EACA7b,KAAA0c,gBAAA7M,EAAA6H,EAAA,KAEA1X,KAAAmV,MAAAwF,GAAA4B,eACAvc,KAAAwc,oBAAA3M,EAAA6H,IAEA3X,mBAAA8P,EAAAiI,EAAA3D,EAAAyI,GACA,GAAA9E,IAAA3D,EAAA,CACA,MAAA0I,EAAA1I,EAAA2D,EACA9X,KAAA6D,OACA7D,KAAA6D,OAAAgF,KAAAiU,IAAAF,EAAAC,GACA5Q,SAAA4D,EAAA/E,OAAAgN,EAAA+E,GAAAD,GACA5c,KAAA6b,UAAAgB,GAYA9c,gBAAA8P,EAAA6H,GACA,MAAAqF,EAAArF,EACA,KAAAA,EAAA7H,EAAA9N,QAAA,CACA,MAAAib,EAAAnN,EAAAG,WAAA0H,GACA,KAAAmD,GAAAmC,KAnKAlC,EAmKAkC,EAlKAlC,GAAAN,GAAAW,SAAAL,GAAAN,GAAAyC,SACAnC,GAAAN,GAAAa,SAAAP,GAAAN,GAAA0C,UAsKA,OADAld,KAAAmd,mBAAAtN,EAAAkN,EAAArF,EAAA,IACA1X,KAAAod,kBAAAJ,EAAA,GAJAtF,GAAA,EApKA,IAAAoD,EA4KA,OADA9a,KAAAmd,mBAAAtN,EAAAkN,EAAArF,EAAA,KACA,EAWA3X,oBAAA8P,EAAA6H,GACA,MAAAqF,EAAArF,EACA,KAAAA,EAAA7H,EAAA9N,QAAA,CACA,MAAAib,EAAAnN,EAAAG,WAAA0H,GACA,IAAAmD,GAAAmC,GAKA,OADAhd,KAAAmd,mBAAAtN,EAAAkN,EAAArF,EAAA,IACA1X,KAAAod,kBAAAJ,EAAA,GAJAtF,GAAA,EAQA,OADA1X,KAAAmd,mBAAAtN,EAAAkN,EAAArF,EAAA,KACA,EAeA3X,kBAAAsd,EAAAC,GACA,IAAAzb,EAEA,GAAA7B,KAAA6b,UAAAyB,EAEA,OADA,QAAAzb,EAAA7B,KAAA2b,cAAA,IAAA9Z,KAAA0b,2CAAAvd,KAAA6b,UACA,EAGA,GAAAwB,IAAA7C,GAAAgD,KACAxd,KAAA6b,UAAA,OAEA,GAAA7b,KAAAgc,aAAApB,GAAAqB,OACA,SASA,OAPAjc,KAAA0b,cAA2BnB,GAAgBva,KAAA6D,QAAA7D,KAAA6b,UAC3C7b,KAAA2b,SACA0B,IAAA7C,GAAAgD,MACAxd,KAAA2b,OAAA8B,0CAEAzd,KAAA2b,OAAA+B,kCAAA1d,KAAA6D,SAEA7D,KAAA6b,SAWA9b,iBAAA8P,EAAA6H,GACA,MAAA+D,WAAeA,GAAazb,KAC5B,IAAA2I,EAAA8S,EAAAzb,KAAA8b,WAEA6B,GAAAhV,EAAA+R,GAAAkD,eAAA,GACA,KAAclG,EAAA7H,EAAA9N,OAAqB2V,IAAA1X,KAAA+b,SAAA,CACnC,MAAAiB,EAAAnN,EAAAG,WAAA0H,GAEA,GADA1X,KAAA8b,UAAA+B,GAAApC,EAAA9S,EAAA3I,KAAA8b,UAAAjT,KAAAiV,IAAA,EAAAH,GAAAX,GACAhd,KAAA8b,UAAA,EACA,WAAA9b,KAAA6D,QAEA7D,KAAAgc,aAAApB,GAAArC,YAEA,IAAAoF,GAEA1C,GAAA+B,IACA,EACAhd,KAAA+d,+BAKA,QAFAJ,IADAhV,EAAA8S,EAAAzb,KAAA8b,YACApB,GAAAkD,eAAA,IAEA,CAEA,GAAAZ,IAAAxC,GAAAgD,KACA,OAAAxd,KAAAge,oBAAAhe,KAAA8b,UAAA6B,EAAA3d,KAAA6b,SAAA7b,KAAA+b,QAGA/b,KAAAgc,aAAApB,GAAAqB,SACAjc,KAAA6D,OAAA7D,KAAA8b,UACA9b,KAAA6b,UAAA7b,KAAA+b,OACA/b,KAAA+b,OAAA,IAIA,SAOAhc,+BACA,IAAA8B,EACA,MAAAgC,OAAeA,EAAA4X,cAAqBzb,KACpC2d,GAAAlC,EAAA5X,GAAA6W,GAAAkD,eAAA,GAGA,OAFA5d,KAAAge,oBAAAna,EAAA8Z,EAAA3d,KAAA6b,UACA,QAAAha,EAAA7B,KAAA2b,cAAA,IAAA9Z,KAAA4b,0CACAzd,KAAA6b,SAWA9b,oBAAA8D,EAAA8Z,EAAA9B,GACA,MAAAJ,WAAeA,GAAazb,KAQ5B,OAPAA,KAAA0b,cAAA,IAAAiC,EACAlC,EAAA5X,IAAA6W,GAAAkD,aACAnC,EAAA5X,EAAA,GAAAgY,GACA,IAAA8B,GAEA3d,KAAA0b,cAAAD,EAAA5X,EAAA,GAAAgY,GAEAA,EASA9b,MACA,IAAA8B,EACA,OAAA7B,KAAAmV,OACA,KAAAwF,GAAA0B,YAEA,WAAArc,KAAA6D,QACA7D,KAAAgc,aAAApB,GAAArC,WACAvY,KAAA6D,SAAA7D,KAAA8b,UAEA,EADA9b,KAAA+d,+BAIA,KAAApD,GAAA4B,eACA,OAAAvc,KAAAod,kBAAA,KAEA,KAAAzC,GAAA8B,WACA,OAAAzc,KAAAod,kBAAA,KAEA,KAAAzC,GAAAwB,aAEA,OADA,QAAAta,EAAA7B,KAAA2b,cAAA,IAAA9Z,KAAA0b,2CAAAvd,KAAA6b,UACA,EAEA,KAAAlB,GAAAiB,YAEA,WAWA,SAAAqC,GAAAxC,GACA,IAAAxN,EAAA,GACA,MAAAiQ,EAAA,IAAwB1C,GAAaC,EAAA5L,GAAA5B,GAA8BmM,GAAavK,IAChF,gBAAAA,EAAAmM,GACA,IAAAmC,EAAA,EACAzG,EAAA,EACA,MAAAA,EAAA7H,EAAAzG,QAAA,IAAAsO,KAAA,IACAzJ,GAAA4B,EAAArB,MAAA2P,EAAAzG,GACAwG,EAAAE,YAAApC,GACA,MAAA/M,EAAAiP,EAAAG,MAAAxO,EAEA6H,EAAA,GACA,GAAAzI,EAAA,GACAkP,EAAAzG,EAAAwG,EAAA/J,MACA,MAEAgK,EAAAzG,EAAAzI,EAEAyI,EAAA,IAAAzI,EAAAkP,EAAA,EAAAA,EAEA,MAAAta,EAAAoK,EAAA4B,EAAArB,MAAA2P,GAGA,OADAlQ,EAAA,GACApK,GAaO,SAAAga,GAAApC,EAAA9S,EAAA2V,EAAAtB,GACP,MAAAuB,GAAA5V,EAAA+R,GAAA8D,gBAAA,EACAC,EAAA9V,EAAA+R,GAAAgE,WAEA,OAAAH,EACA,WAAAE,GAAAzB,IAAAyB,EAAAH,GAAA,EAGA,GAAAG,EAAA,CACA,MAAAzb,EAAAga,EAAAyB,EACA,OAAAzb,EAAA,GAAAA,GAAAub,GACA,EACA9C,EAAA6C,EAAAtb,GAAA,EAIA,IAAA2b,EAAAL,EACAM,EAAAD,EAAAJ,EAAA,EACA,KAAAI,GAAAC,GAAA,CACA,MAAAC,EAAAF,EAAAC,IAAA,EACAE,EAAArD,EAAAoD,GACA,GAAAC,EAAA9B,EACA2B,EAAAE,EAAA,MAEA,MAAAC,EAAA9B,GAIA,OAAAvB,EAAAoD,EAAAN,GAHAK,EAAAC,EAAA,GAMA,SAEAZ,GAA+BjE,IAC/BiE,GAA8B/D,ICxc9B,SAAA6E,GAAA9W,GACA,QAAA1D,EAAA,EAAmBA,EAAA0D,EAAAlG,OAAgBwC,IACnC0D,EAAA1D,GAAA,IAAA0D,EAAA1D,EAAA,QAEA,OAAA0D,EAGe,IAAAwN,IAAAsJ,KAAA,YAA+C,gBAAkB,cAAgB,aAAe,YAAc,eAAiB,eAAiB,YAAc,aAAe,aAAe,aAAe,YAAc,aAAe,cAAgB,eAAiB,YAAc,eAAiB,aAAe,GAASC,EAAA,OAAStT,EAAA,KAAAuT,EAAA,YAAyB,GAAQD,EAAA,WAAatT,EAAA,KAAAuT,EAAA,WAAwB,GAAQD,EAAA,OAAStT,EAAA,KAAAuT,EAAA,YAAyB,cAAe,eAAiB,gBAAkB,aAAe,eAAiB,YAAc,eAAiB,yBAA2B,GAASvT,EAAA,IAAAuT,EAAA,aAAuB,gBAAiB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,cAAgB,eAAiB,YAAc,eAAiB,aAAe,YAAc,aAAe,aAAe,cAAgB,YAAc,YAAc,iBAAmB,aAAe,YAAc,kBAAoB,aAAe,aAAe,cAAgB,cAAgB,aAAe,kBAAoB,cAAgB,aAAe,aAAe,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,eAAiB,cAAgB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,eAAiB,cAAgB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,cAAgB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,aAAe,aAAe,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,YAAc,YAAc,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,eAAiB,eAAiB,aAAe,aAAe,eAAiB,eAAiB,cAAgB,eAAiB,gBAAkB,eAAiB,eAAiB,cAAgB,eAAiB,uBAAyB,aAAe,aAAe,yBAA2B,cAAgB,mBAAqB,gBAAkB,aAAe,cAAgB,cAAgB,gBAAkB,aAAe,YAAc,cAAgB,aAAe,cAAgB,eAAiB,WAAa,WAAa,WAAa,gBAAkB,WAAa,YAAc,cAAgB,YAAc,gBAAkB,YAAc,YAAc,YAAc,YAAc,cAAgB,aAAe,cAAgB,cAAgB,aAAe,aAAe,YAAc,cAAgB,aAAe,cAAgB,eAAiB,WAAa,WAAa,WAAa,gBAAkB,WAAa,YAAc,eAAiB,cAAgB,YAAc,aAAe,YAAc,YAAc,YAAc,cAAgB,iBAAmB,aAAe,aAAe,YAAc,eAAiB,gBAAkB,gBAAkB,aAAe,cAAgB,oBAAsB,cAAgB,aAAe,aAAe,cAAgB,aAAe,cAAgB,aAAe,eAAiB,aAAe,aAAe,cAAgB,aAAe,cAAgB,aAAe,YAAc,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,aAAe,aAAe,eAAiB,eAAiB,YAAc,eAAiB,YAAc,aAAe,aAAe,YAAc,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,aAAe,aAAe,eAAiB,eAAiB,YAAc,eAAiB,YAAc,aAAe,aAAe,aAAe,aAAe,aAAe,cAAgB,aAAe,cAAgB,aAAe,eAAiB,aAAe,aAAe,cAAgB,aAAe,cAAgB,aAAe,gBAAkB,aAAe,eAAiB,eAAiB,cAAgB,eAAiB,kBAAoB,eAAiB,4BAA8B,aAAe,YAAc,YAAc,YAAc,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,wBAA0B,eAAiB,cAAgB,8BAAgC,cAAgB,eAAiB,eAAiB,aAAe,aAAe,eAAiB,eAAiB,gBAAkB,cAAgB,cAAgB,eAAiB,kBAAoB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,cAAgB,eAAiB,eAAiB,GAASD,EAAA,gBAAkBtT,EAAA,KAAAuT,EAAA,kBAA+B,gBAAiB,WAAa,uBAAyB,WAAa,cAAgB,cAAgB,eAAiB,mBAAqB,eAAiB,aAAe,eAAiB,YAAc,aAAe,gBAAkB,aAAe,iBAAmB,YAAc,eAAiB,YAAc,iBAAmB,eAAiB,eAAiB,eAAiB,aAAe,aAAe,gBAAkB,aAAe,cAAgB,WAAa,cAAgB,iBAAmB,YAAc,eAAiB,cAAgB,eAAiB,gBAAkB,aAAe,aAAe,mBAAqB,kBAAoB,cAAgB,gBAAkB,aAAe,cAAgB,eAAiB,8BAAgC,WAAa,WAAa,WAAa,gBAAkB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,qBAAuB,aAAe,aAAe,aAAe,oBAAsB,cAAgB,cAAgB,wBAA0B,uBAAyB,cAAgB,cAAgB,GAASD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,cAA0B,aAAc,aAAe,aAAe,aAAe,eAAiB,eAAiB,qBAAuB,iBAAmB,YAAc,qBAAuB,sBAAwB,uBAAyB,eAAiB,uBAAyB,cAAgB,cAAgB,YAAc,YAAc,aAAe,aAAe,cAAgB,eAAiB,eAAiB,wBAA0B,yBAA2B,sBAAwB,uBAAyB,sBAAwB,qBAAuB,cAAgB,wBAA0B,cAAgB,cAAgB,4BAA8B,cAAgB,4BAA8B,uBAAyB,mBAAqB,yBAA2B,cAAgB,0BAA4B,oBAAsB,cAAgB,cAAgB,cAAgB,wBAA0B,sBAAwB,yBAA2B,aAAe,6BAA+B,0BAA4B,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,gBAAkB,cAAgB,cAAgB,0BAA4B,cAAgB,cAAgB,cAAgB,eAAiB,aAAe,GAASD,EAAA,SAAWtT,EAAA,IAAAuT,EAAA,aAAyB,cAAe,eAAiB,cAAgB,YAAc,gBAAkB,mBAAqB,WAAa,cAAgB,aAAe,eAAiB,YAAc,cAAgB,kBAAoB,gBAAkB,kBAAoB,eAAiB,eAAiB,cAAgB,aAAe,cAAgB,cAAgB,GAASD,EAAA,QAAUtT,EAAA,KAAAuT,EAAA,YAAyB,eAAgB,eAAiB,YAAc,aAAe,0BAA4B,6BAA+B,YAAc,WAAa,GAASD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,YAA0B,GAAQD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,YAA0B,YAAa,YAAc,cAAgB,eAAiB,eAAiB,gBAAkB,cAAgB,iCAAmC,iBAAmB,eAAiB,eAAiB,cAAgB,cAAgB,iBAAmB,cAAgB,eAAiB,GAASD,EAAA,QAAUtT,EAAA,KAAAuT,EAAA,aAA0B,GAAQD,EAAA,YAActT,EAAA,IAAAuT,EAAA,YAAwB,GAAQD,EAAA,OAAStT,EAAA,IAAAuT,EAAA,WAAuB,YAAa,sBAAwB,iBAAmB,GAASD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,aAAyB,aAAc,sBAAwB,aAAe,cAAgB,cAAgB,WAAa,YAAc,YAAc,GAASD,EAAA,SAAWtT,EAAA,IAAAuT,EAAA,aAAyB,iBAAkB,GAASD,EAAA,YAActT,EAAA,KAAAuT,EAAA,YAAyB,GAAQD,EAAA,SAAWtT,EAAA,IAAAuT,EAAA,aAAyB,GAAQD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,cAA0B,GAAQD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,aAAyB,iBAAkB,cAAgB,cAAgB,eAAiB,eAAiB,aAAe,eAAiB,eAAiB,cAAgB,kBAAoB,eAAiB,WAAa,GAASD,EAAA,cAAgBtT,EAAA,KAAAuT,EAAA,eAA4B,eAAgB,GAASD,EAAA,OAAStT,EAAA,KAAAuT,EAAA,YAAyB,GAAQD,EAAA,OAAStT,EAAA,KAAAuT,EAAA,YAAyB,GAAQD,EAAA,OAAStT,EAAA,IAAAuT,EAAA,WAAuB,GAAQD,EAAA,OAAStT,EAAA,IAAAuT,EAAA,WAAuB,GAAQD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,iBAA+B,GAAQD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,iBAA+B,GAAQD,EAAA,OAAStT,EAAA,IAAA+J,IAAAsJ,KAAA,eAAwD,oBAAwB,GAAQC,EAAA,OAAStT,EAAA,IAAA+J,IAAAsJ,KAAA,eAAwD,oBAAwB,gBAAiB,kBAAoB,cAAgB,YAAc,YAAc,YAAc,gBAAkB,qBAAuB,cAAgB,cAAgB,oBAAsB,WAAa,uBAAyB,uBAAyB,WAAa,WAAa,cAAgB,cAAgB,sBAAwB,GAASC,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,wBAAoC,oBAAqB,oBAAsB,GAASD,EAAA,QAAUtT,EAAA,KAAAuT,EAAA,iBAA8B,GAAQD,EAAA,QAAUtT,EAAA,KAAAuT,EAAA,mBAAgC,aAAc,aAAe,aAAe,aAAe,uBAAyB,yBAA2B,GAASD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,oBAAkC,GAAQD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,oBAAkC,eAAgB,kBAAoB,GAASD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,uBAAmC,GAAQD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,yBAAqC,eAAgB,eAAiB,GAASD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,cAA4B,GAAQD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,cAA4B,mBAAoB,oBAAsB,oBAAsB,aAAe,kBAAoB,oBAAsB,mBAAqB,oBAAsB,gBAAkB,iBAAmB,iBAAmB,kBAAoB,iBAAmB,cAAgB,gBAAkB,YAAc,eAAiB,uBAAyB,cAAgB,eAAiB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,qBAAuB,sBAAwB,GAASD,EAAA,sBAAwBtT,EAAA,KAAAuT,EAAA,eAA4B,GAAQD,EAAA,uBAAyBtT,EAAA,KAAAuT,EAAA,eAA4B,eAAgB,aAAe,iBAAmB,eAAiB,eAAiB,eAAiB,eAAiB,gBAAkB,cAAgB,iBAAmB,eAAiB,eAAiB,eAAiB,aAAe,aAAe,eAAiB,sBAAwB,eAAiB,eAAiB,eAAiB,uBAAyB,wBAA0B,kBAAoB,iBAAmB,mBAAqB,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,gBAAkB,cAAgB,GAASD,EAAA,OAAStT,EAAA,IAAAuT,EAAA,WAAuB,GAAQD,EAAA,OAAStT,EAAA,IAAAuT,EAAA,WAAuB,GAAQD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,YAA0B,GAAQD,EAAA,QAAUtT,EAAA,MAAAuT,EAAA,YAA0B,cAAe,cAAgB,8BAAgC,8BAAgC,6BAA+B,+BAAiC,cAAgB,cAAgB,iBAAmB,eAAiB,cAAgB,yBAA2B,eAAiB,8BAAgC,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,eAAiB,cAAgB,GAASD,EAAA,YAActT,EAAA,IAAAuT,EAAA,gBAA4B,gBAAiB,gBAAkB,GAASD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,cAA0B,aAAc,aAAe,YAAc,gBAAkB,gBAAkB,eAAiB,eAAiB,cAAgB,cAAgB,kBAAoB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,aAAe,iBAAmB,iBAAmB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,iBAAmB,eAAiB,cAAgB,eAAiB,iBAAmB,oBAAsB,mBAAqB,oBAAsB,aAAe,iBAAmB,yBAA2B,yBAA2B,kBAAoB,mBAAqB,iBAAmB,iBAAmB,eAAiB,mBAAqB,cAAgB,aAAe,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,gBAAkB,oBAAsB,6BAA+B,aAAe,eAAiB,cAAgB,sBAAwB,sBAAwB,iBAAmB,2BAA6B,aAAe,wBAA0B,0BAA4B,aAAe,0BAA4B,aAAe,YAAc,YAAc,gBAAkB,gBAAkB,cAAgB,cAAgB,cAAgB,yBAA2B,0BAA4B,gBAAkB,aAAe,cAAgB,gBAAkB,aAAe,gBAAkB,cAAgB,eAAiB,oBAAsB,aAAe,aAAe,gBAAkB,cAAgB,gBAAkB,cAAgB,aAAe,cAAgB,2BAA6B,eAAiB,cAAgB,kBAAoB,gBAAkB,2BAA6B,2BAA6B,aAAe,aAAe,aAAe,aAAe,cAAgB,cAAgB,sBAAwB,uBAAyB,2BAA6B,4BAA8B,6BAA+B,iCAAmC,mBAAqB,iBAAmB,iBAAmB,eAAiB,eAAiB,YAAc,cAAgB,eAAiB,cAAgB,gBAAkB,iBAAmB,iBAAmB,mBAAqB,qBAAuB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,gBAAkB,gBAAkB,eAAiB,eAAiB,iBAAmB,iBAAmB,eAAiB,eAAiB,eAAiB,eAAiB,GAASD,EAAA,UAAYtT,EAAA,IAAAuT,EAAA,cAA0B,gBAAiB,aAAe,aAAe,gBAAkB,eAAiB,gBAAkB,gBAAkB,eAAiB,gBAAkB,iBAAmB,iBAAmB,iBAAmB,wBAA0B,0BAA4B,4BAA8B,yBAA2B,sBAAwB,uBAAyB,yBAA2B,2BAA6B,0BAA4B,2BAA6B,wBAA0B,0BAA4B,sBAAwB,uBAAyB,yBAA2B,2BAA6B,0BAA4B,2BAA6B,wBAA0B,0BAA4B,aAAe,aAAe,aAAe,aAAe,gBAAkB,gBAAkB,gBAAkB,gBAAkB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,qBAAuB,cAAgB,gBAAkB,gBAAkB,gBAAkB,eAAiB,eAAiB,eAAiB,gBAAkB,gBAAkB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,gBAAkB,gBAAkB,gBAAkB,gBAAkB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,gBAAkB,eAAiB,iBAAmB,aAAe,cAAgB,gBAAkB,gBAAkB,iBAAmB,iBAAmB,iBAAmB,iBAAmB,iBAAmB,iBAAmB,iBAAmB,iBAAmB,gBAAkB,gBAAkB,gBAAkB,iBAAmB,iBAAmB,cAAgB,aAAe,aAAe,cAAgB,gBAAkB,eAAiB,cAAgB,cAAgB,YAAc,YAAc,gBAAkB,aAAe,aAAe,cAAgB,eAAiB,cAAgB,iBAAmB,GAASD,EAAA,oBAAsBtT,EAAA,IAAAuT,EAAA,0BAAsC,GAAQD,EAAA,qBAAuBtT,EAAA,IAAAuT,EAAA,2BAAuC,gBAAiB,iBAAmB,gBAAkB,eAAiB,iBAAmB,iBAAmB,qBAAuB,oBAAsB,aAAe,gBAAkB,iBAAmB,kBAAoB,iBAAmB,iBAAmB,eAAiB,iBAAmB,iBAAmB,cAAgB,iBAAmB,iBAAmB,gBAAkB,iBAAmB,gBAAkB,iBAAmB,iBAAmB,iBAAmB,gBAAkB,eAAiB,gBAAkB,gBAAkB,eAAiB,gBAAkB,eAAiB,eAAiB,cAAgB,eAAiB,iBAAmB,eAAiB,gBAAkB,gBAAkB,iBAAmB,eAAiB,aAAe,gBAAkB,iBAAmB,gBAAkB,gBAAkB,cAAgB,eAAiB,aAAe,aAAe,eAAiB,cAAgB,eAAiB,eAAiB,iBAAmB,iBAAmB,eAAiB,eAAiB,cAAgB,cAAgB,gBAAkB,YAAc,WAAa,eAAiB,aAAe,gBAAkB,iBAAmB,aAAe,YAAc,aAAe,YAAc,eAAiB,cAAgB,eAAiB,GAASD,EAAA,YAActT,EAAA,IAAAuT,EAAA,gBAA4B,eAAgB,eAAiB,GAASD,EAAA,QAAUtT,EAAA,IAAAuT,EAAA,YAAwB,cAAe,cAAgB,aAAe,eAAiB,cAAgB,gBAAkB,gBAAkB,cAAgB,cAAgB,gBAAkB,gBAAkB,GAASD,EAAA,aAAetT,EAAA,IAAAuT,EAAA,iBAA6B,GAAQD,EAAA,aAAetT,EAAA,IAAAuT,EAAA,iBAA6B,eAAgB,eAAiB,gBAAkB,gBAAkB,iBAAmB,iBAAmB,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,YAAc,YAAc,cAAgB,cAAgB,cAAgB,cAAgB,YAAc,YAAc,eAAiB,eAAiB,YAAc,YAAc,eAAiB,eAAiB,WAAa,WAAa,aAAe,aAAe,cAAgB,cAAgB,GAASD,EAAA,aAAetT,EAAA,IAAAuT,EAAA,yBAAqC,GAAQD,EAAA,mBAAqBtT,EAAA,IAAAuT,EAAA,+BAA2C,YAAa,YAAc,aAAe,aAAe,cAAgB,cAAgB,YAAc,YAAc,GAASD,EAAA,SAAWtT,EAAA,MAAAuT,EAAA,aAA2B,GAAQD,EAAA,SAAWtT,EAAA,MAAAuT,EAAA,aAA2B,cAAe,GAASD,EAAA,kBAAoBtT,EAAA,IAAAuT,EAAA,wBAAoC,GAAQD,EAAA,QAAUtT,EAAA,IAAAuT,EAAA,wBAAoC,YAAa,YAAc,iBAAmB,aAAe,aAAe,aAAe,oBAAsB,cAAgB,WAAa,WAAa,eAAiB,eAAiB,gBAAkB,gBAAkB,gBAAkB,gBAAkB,gBAAkB,gBAAkB,GAASD,EAAA,SAAWtT,EAAA,IAAAuT,EAAA,aAAyB,GAAQD,EAAA,SAAWtT,EAAA,IAAAuT,EAAA,aAAyB,eAAgB,eAAiB,GAASD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,qBAAmC,GAAQD,EAAA,UAAYtT,EAAA,MAAAuT,EAAA,qBAAmC,aAAc,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,gBAAkB,gBAAkB,cAAgB,gBAAkB,aAAe,cAAgB,eAAiB,aAAe,aAAe,cAAgB,aAAe,YAAc,aAAe,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,GAASD,EAAA,UAAYtT,EAAA,KAAAuT,EAAA,cAA2B,OAAYvT,EAAA,IAAA+J,IAAAsJ,KAAA,iBAAwD,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,YAAc,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,aAAe,kBAAsB,iBAAkB,cAAgB,cAAgB,eAAiB,iBCRhp0B,MAAAG,GAAA,uBACPC,GAAA,IAAA1J,MACA,cACA,aACA,cACA,YACA,aAGO2J,GAEP,MAAArM,OAAArP,UAAA2b,YACA,CAAAxP,EAAAmF,IAAAnF,EAAAwP,YAAArK,GAEA,CAAAkC,EAAAlC,IAAA,cAAAkC,EAAAlH,WAAAgF,IACA,MAAAkC,EAAAlH,WAAAgF,GAAA,OACAkC,EAAAlH,WAAAgF,EAAA,GACA,MACA,MACAkC,EAAAlH,WAAAgF,GAQO,SAAAsK,GAAAzP,GACP,IAEA8H,EAFA1J,EAAA,GACAsR,EAAA,EAEA,aAAA5H,EAAAuH,GAAAM,KAAA3P,KAAA,CACA,MAAAtL,EAAAoT,EAAA3C,MACAgI,EAAAnN,EAAAG,WAAAzL,GACApE,EAAAgf,GAAApG,IAAAiE,QACA1X,IAAAnF,GACA8N,GAAA4B,EAAA4P,UAAAF,EAAAhb,GAAApE,EACAof,EAAAhb,EAAA,IAGA0J,MAAsB4B,EAAA4P,UAAAF,EAAAhb,QAA+B6a,GAAAvP,EAAAtL,GAAAiJ,SAAA,OAErD+R,EAAAL,GAAAf,WAAAnL,OAAA,cAAAgK,KAGA,OAAA/O,EAAA4B,EAAA/E,OAAAyU,GAsBA,SAAAG,GAAAC,EAAA7c,GACA,gBAAAlC,GACA,IAAA+W,EACA4H,EAAA,EACA1b,EAAA,GACA,KAAA8T,EAAAgI,EAAAH,KAAA5e,IACA2e,IAAA5H,EAAA3C,QACAnR,GAAAjD,EAAA6e,UAAAF,EAAA5H,EAAA3C,QAGAnR,GAAAf,EAAAiW,IAAApB,EAAA,GAAA3H,WAAA,IAEAuP,EAAA5H,EAAA3C,MAAA,EAEA,OAAAnR,EAAAjD,EAAA6e,UAAAF,IAUOG,GAAA,WAAAP,IAAA,MAOAS,GAAAF,GAAA,kBAAAjK,MACP,cACA,aACA,iBAQOoK,GAAAH,GAAA,mBAAAjK,MACP,aACA,YACA,YACA,iBC7GO,IAAAqK,GAOAC,IANP,SAAAD,GAEAA,IAAA,aAEAA,IAAA,eAJA,CAKCA,aAED,SAAAC,GAKAA,IAAA,eAMAA,IAAA,iBAKAA,IAAA,yBAKAA,IAAA,yBAKAA,IAAA,eA1BA,CA2BCA,aCvCM,MAAAC,GAAA,IAAAvK,KACP,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,YACA3S,IAAAwJ,MAAAuG,cAAAvG,KACO2T,GAAA,IAAAxK,KACP,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,cACA3S,IAAAwJ,MAAAuG,cAAAvG,KCvFA4T,GAAA,IAAAjK,KACA,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aAEA,SAAAkK,GAAAnd,GACA,OAAAA,EAAA0P,QAAA,eAgCA,MAAA0N,GAAA,IAAAnK,KACA,OACA,OACA,WACA,KACA,MACA,UACA,QACA,QACA,KACA,MACA,QACA,UACA,SACA,OACA,OACA,QACA,SACA,QACA,QAUO,SAASoK,GAAMjd,EAAA0B,MACtB,MAAAuC,EAAA,WAAAjE,QACA,IAAAkX,EAAA,GACA,QAAA/V,EAAA,EAAmBA,EAAA8C,EAAAtF,OAAkBwC,IACrC+V,GAAAgG,GAAAjZ,EAAA9C,GAAAO,GAEA,OAAAwV,EAEe,IAAAiG,GAAA,GACf,SAAAD,GAAAld,EAAA0B,GACA,OAAA1B,EAAAnC,MACA,KAAamB,GACb,OAAmBie,GAAMjd,EAAAzB,SAAAmD,GAEzB,KAAagI,GACb,KAAarL,GACb,UAAA2B,EAmEexC,QAlEf,KAAa+Y,GACb,OAqFA,SAAAlU,GACA,gBAAkBA,EAAA7E,aAtFlB4f,CAAApd,GACA,KAAawW,GACb,OAgFA,SAAAnU,GACA,kBAAuBA,EAAA9D,SAAA,GAAAf,UAjFvB6f,CAAArd,GACA,KAAab,GACb,KAAaC,GACb,KAAaC,GACb,OAiBA,SAAAgD,EAAAib,GACA,IAAA7e,EAEA,YAAA6e,EAAA/b,UAEAc,EAAAjE,KAAsC,QAAtCK,EAA0Bme,GAAYjH,IAAAtT,EAAAjE,aAAA,IAAAK,IAAA4D,EAAA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Ac,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,eAAiB,cAAgB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,cAAgB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,aAAe,aAAe,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,YAAc,YAAc,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,eAAiB,eAAiB,aAAe,aAAe,eAAiB,eAAiB,cAAgB,eAAiB,gBAAkB,eAAiB,eAAiB,cAAgB,eAAiB,uBAAyB,aAAe,aAAe,yBAA2B,cAAgB,mBAAqB,gBAAkB,aAAe,cAAgB,cAAgB,gBAAkB,aAAe,YAAc,cAAgB,aAAe,cAAgB,eAAiB,WAAa,WAAa,WAAa,gBAAkB,WAAa,YAAc,cAAgB,YAAc,gBAAkB,YAAc,YAAc,YAAc,YAAc,cAA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Ky6C,UAEhBmC,cAAa,SAAC58C,GACV,MAAyB,aAAlBA,EAAKy6C,UAEhBoC,mBAAkB,SAAC78C,GACf,MAAyB,kBAAlBA,EAAKy6C,UAEhBqC,cAAa,SAAC98C,GACV,OAAOR,OAAOc,UAAUC,eAAeC,KAAKR,EAAM,YAGtD+8C,0BAAyB,SAAC/8C,EAAMimC,GAC5BjmC,EAAKiB,mBAAqBglC,GAE9B+W,0BAAyB,SAACh9C,GACtB,OAAOA,EAAKiB,oBAEhBg8C,6BAA4B,SAACj9C,EAAMk9C,GAC/Bl9C,EAAKiB,mBAAkB+I,SAAQhK,EAAKiB,oBAAuBi8C,KCxK7DC,GAAqB,OACrBC,GAAkB,sBAClBC,GAAwB,6DACxBC,IACF,6CACA,6CACA,uDACA,kCACA,kCACA,yCACA,yCACA,iCACA,0BACA,2BACA,0BACA,gCACA,0BACA,wBACA,8BACA,8BACA,8BACA,8BACA,qCACA,qCACA,qCACA,qCACA,6BACA,sBACA,2CACA,wDACA,iDACA,mDACA,wDACA,iDACA,mDACA,sCACA,6CACA,6CACA,sDACA,8DACA,8CACA,iFACA,wEACA,uCACA,gDACA,uDACA,kCACA,+BACA,+BACA,yBACA,gCACA,kCACA,sCACA,2CACA,yCACA,wBACA,4BACA,sCACA,mCAEEC,MAA2CxvC,OAC1CuvC,IACH,mCACA,yCAEEE,GAAyB,IAAI3qC,KAC/B,uCACA,qCACA,SAEE4qC,IAAqC,mCAAoC,wCACzEC,MAAgD3vC,OAC/C0vC,IACH,mCACA,yCAGJ,SAASE,GAAUpX,EAAUqX,GACzB,OAAOA,EAAS/sC,KAAK,SAAC/Q,GAAM,OAAKymC,EAASn3B,WAAWtP,KC9EzD,IAAM+9C,IACFC,UAAW,YACXC,gBAAiB,yBAGfC,GAAsB,gBACtBC,GAA+B,gBAC/BC,GAA2B,IAAI7rC,KACjC,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,YA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,GAAEwI,MAAOxI,GAAEmI,SAAUnI,GAAE2E,KAC9C3E,GAAEiI,MAAOjI,GAAEmI,SAAUnI,GAAE2E,KACzB3E,GAAEsI,GAAItI,GAAEuI,GCrC7B,IACW+X,IACX,SAAWA,GACPA,EAAUA,EAAkB,OAAI,GAAK,SACrCA,EAAUA,EAAmB,QAAI,GAAK,UAF1C,CAGGA,GAAYA,KAAcA,QACNA,GAAUE,OCC1B,ICHDoE,IACF,6CACA,6CACA,uDACA,kCACA,kCACA,yCACA,yCACA,iCACA,0BACA,2BACA,0BACA,gCACA,0BACA,wBACA,8BACA,8BACA,8BACA,8BACA,qCACA,qCACA,qCACA,qCACA,6BACA,sBACA,2CACA,wDACA,iDACA,mDACA,wDACA,iDACA,mDACA,sCACA,6CACA,6CACA,sDACA,8DACA,8CACA,iFACA,wEACA,uCACA,gDACA,uDACA,kCACA,+BACA,+BACA,yBACA,gCACA,kCACA,sCACA,2CACA,yCACA,wBACA,4BACA,sCACA,mCAYEG,OAV2C1vC,OAC1CuvC,IACH,mCACA,yCAE2B,IAAIzqC,KAC/B,uCACA,qCACA,UAEuC,mCAAoC,4CACzB9E,OAC/C0vC,IACH,mCACA,yCCnE6B,IAAIprC,KACjC,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,cACF3S,IAAI,SAACsO,GAAI,OAAMA,EAAKyB,cAAezB,MACJ,IAAIqE,MAChC,iBAAmBvS,OAAQ,QAAS1B,KAAM,UAAWyB,UAAWg6B,GAAGqI,SACnE,iBAAmBpiC,OAAQ,QAAS1B,KAAM,UAAWyB,UAAWg6B,GAAGqI,SACnE,cAAgBpiC,OAAQ,QAAS1B,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e,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,eAAiB,cAAgB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,eAAiB,aAAe,YAAc,eAAiB,eAAiB,eAAiB,cAAgB,aAAe,eAAiB,cAAgB,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,aAAe,aAAe,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,aAAe,aAAe,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,YAAc,YAAc,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,eAAiB,eAAiB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,cAAgB,aAAe,eAAiB,eAAiB,aAAe,aAAe,eAAiB,eAAiB,cAAgB,eAAiB,gBAAkB,eAAiB,eAAiB,cAAgB,eAAiB,uBAAyB,aAAe,aAAe,yBAA2B,cAAgB,mBAAqB,gBAAkB,aAAe,cAAgB,cAAgB,gBAAkB,aAAe,YAAc,cAAgB,aAAe,cAAgB,eAAiB,WAAa,WAAa,WAAa,gBAAkB,WAAa,YAAc,cAAgB,YAAc,gBAAkB,YAAc,YAAc,YAAc,YAAc,cAAgB,aAAe,cAAgB,cAAgB,aAAe,aAAe,YAAc,cAAgB,aAAe,cAAgB,eAAiB,WAAa,WAAa,WAAa,gBAAkB,WAAa,YAAc,eAAiB,cAAgB,YAAc,aAAe,YAAc,Y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BAAAlC,GACA,IAAA+W,EACA4H,EAAA,EACA1b,EAAA,GACA,KAAA8T,EAAAgI,EAAAH,KAAA5e,IACA2e,IAAA5H,EAAA3C,QACAnR,GAAAjD,EAAA6e,UAAAF,EAAA5H,EAAA3C,QAGAnR,GAAAf,EAAAiW,IAAApB,EAAA,GAAA3H,WAAA,IAEAuP,EAAA5H,EAAA3C,MAAA,EAEA,OAAAnR,EAAAjD,EAAA6e,UAAAF,IAUOG,EAAA,WAAAP,GAAA,MAOAS,EAAAF,EAAA,kBAAAjK,MACP,cACA,aACA,iBAQOoK,EAAAH,EAAA,mBAAAjK,MACP,aACA,YACA,YACA,iBC7GO,IAAAqK,EAOAC,GANP,SAAAD,GAEAA,IAAA,aAEAA,IAAA,eAJA,CAKCA,WAED,SAAAC,GAKAA,IAAA,eAMAA,IAAA,iBAKAA,IAAA,yBAKAA,IAAA,yBAKAA,IAAA,eA1BA,CA2BCA,WCvCM,MAAAC,EAAA,IAAAvK,KACP,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,YACA3S,IAAAwJ,MAAAuG,cAAAvG,KACO2T,EAAA,IAAAxK,KACP,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,cACA3S,IAAAwJ,MAAAuG,cAAAvG,KCvFA4T,EAAA,IAAAjK,KACA,QACA,SACA,MACA,SACA,UACA,WACA,YACA,aAEA,SAAAkK,EAAAnd,GACA,OAAAA,E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","file":"vendors~block-51~block-52~block-57~page-14~widget-5~widget-7.d7818a52e4dc7554a6bb.js","sourcesContent":["import { ElementType, isTag as isTagRaw } from \"domelementtype\";\n/**\n * This object will be used as the prototype for Nodes when creating a\n * DOM-Level-1-compliant structure.\n */\nexport class Node {\n constructor() {\n /** Parent of the node */\n this.parent = null;\n /** Previous sibling */\n this.prev = null;\n /** Next sibling */\n this.next = null;\n /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */\n this.startIndex = null;\n /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */\n this.endIndex = null;\n }\n // Read-write aliases for properties\n /**\n * Same as {@link parent}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get parentNode() {\n return this.parent;\n }\n set parentNode(parent) {\n this.parent = parent;\n }\n /**\n * Same as {@link prev}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get previousSibling() {\n return this.prev;\n }\n set previousSibling(prev) {\n this.prev = prev;\n }\n /**\n * Same as {@link next}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nextSibling() {\n return this.next;\n }\n set nextSibling(next) {\n this.next = next;\n }\n /**\n * Clone this node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\n cloneNode(recursive = false) {\n return cloneNode(this, recursive);\n }\n}\n/**\n * A node that contains some data.\n */\nexport class DataNode extends Node {\n /**\n * @param data The content of the data node\n */\n constructor(data) {\n super();\n this.data = data;\n }\n /**\n * Same as {@link data}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get nodeValue() {\n return this.data;\n }\n set nodeValue(data) {\n this.data = data;\n }\n}\n/**\n * Text within the document.\n */\nexport class Text extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Text;\n }\n get nodeType() {\n return 3;\n }\n}\n/**\n * Comments within the document.\n */\nexport class Comment extends DataNode {\n constructor() {\n super(...arguments);\n this.type = ElementType.Comment;\n }\n get nodeType() {\n return 8;\n }\n}\n/**\n * Processing instructions, including doc types.\n */\nexport class ProcessingInstruction extends DataNode {\n constructor(name, data) {\n super(data);\n this.name = name;\n this.type = ElementType.Directive;\n }\n get nodeType() {\n return 1;\n }\n}\n/**\n * A `Node` that can have children.\n */\nexport class NodeWithChildren extends Node {\n /**\n * @param children Children of the node. Only certain node types can have children.\n */\n constructor(children) {\n super();\n this.children = children;\n }\n // Aliases\n /** First child of the node. */\n get firstChild() {\n var _a;\n return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null;\n }\n /** Last child of the node. */\n get lastChild() {\n return this.children.length > 0\n ? this.children[this.children.length - 1]\n : null;\n }\n /**\n * Same as {@link children}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get childNodes() {\n return this.children;\n }\n set childNodes(children) {\n this.children = children;\n }\n}\nexport class CDATA extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.CDATA;\n }\n get nodeType() {\n return 4;\n }\n}\n/**\n * The root node of the document.\n */\nexport class Document extends NodeWithChildren {\n constructor() {\n super(...arguments);\n this.type = ElementType.Root;\n }\n get nodeType() {\n return 9;\n }\n}\n/**\n * An element within the DOM.\n */\nexport class Element extends NodeWithChildren {\n /**\n * @param name Name of the tag, eg. `div`, `span`.\n * @param attribs Object mapping attribute names to attribute values.\n * @param children Children of the node.\n */\n constructor(name, attribs, children = [], type = name === \"script\"\n ? ElementType.Script\n : name === \"style\"\n ? ElementType.Style\n : ElementType.Tag) {\n super(children);\n this.name = name;\n this.attribs = attribs;\n this.type = type;\n }\n get nodeType() {\n return 1;\n }\n // DOM Level 1 aliases\n /**\n * Same as {@link name}.\n * [DOM spec](https://dom.spec.whatwg.org)-compatible alias.\n */\n get tagName() {\n return this.name;\n }\n set tagName(name) {\n this.name = name;\n }\n get attributes() {\n return Object.keys(this.attribs).map((name) => {\n var _a, _b;\n return ({\n name,\n value: this.attribs[name],\n namespace: (_a = this[\"x-attribsNamespace\"]) === null || _a === void 0 ? void 0 : _a[name],\n prefix: (_b = this[\"x-attribsPrefix\"]) === null || _b === void 0 ? void 0 : _b[name],\n });\n });\n }\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node is a `Element`, `false` otherwise.\n */\nexport function isTag(node) {\n return isTagRaw(node);\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `CDATA`, `false` otherwise.\n */\nexport function isCDATA(node) {\n return node.type === ElementType.CDATA;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Text`, `false` otherwise.\n */\nexport function isText(node) {\n return node.type === ElementType.Text;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `Comment`, `false` otherwise.\n */\nexport function isComment(node) {\n return node.type === ElementType.Comment;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDirective(node) {\n return node.type === ElementType.Directive;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise.\n */\nexport function isDocument(node) {\n return node.type === ElementType.Root;\n}\n/**\n * @param node Node to check.\n * @returns `true` if the node has children, `false` otherwise.\n */\nexport function hasChildren(node) {\n return Object.prototype.hasOwnProperty.call(node, \"children\");\n}\n/**\n * Clone a node, and optionally its children.\n *\n * @param recursive Clone child nodes as well.\n * @returns A clone of the node.\n */\nexport function cloneNode(node, recursive = false) {\n let result;\n if (isText(node)) {\n result = new Text(node.data);\n }\n else if (isComment(node)) {\n result = new Comment(node.data);\n }\n else if (isTag(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Element(node.name, { ...node.attribs }, children);\n children.forEach((child) => (child.parent = clone));\n if (node.namespace != null) {\n clone.namespace = node.namespace;\n }\n if (node[\"x-attribsNamespace\"]) {\n clone[\"x-attribsNamespace\"] = { ...node[\"x-attribsNamespace\"] };\n }\n if (node[\"x-attribsPrefix\"]) {\n clone[\"x-attribsPrefix\"] = { ...node[\"x-attribsPrefix\"] };\n }\n result = clone;\n }\n else if (isCDATA(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new CDATA(children);\n children.forEach((child) => (child.parent = clone));\n result = clone;\n }\n else if (isDocument(node)) {\n const children = recursive ? cloneChildren(node.children) : [];\n const clone = new Document(children);\n children.forEach((child) => (child.parent = clone));\n if (node[\"x-mode\"]) {\n clone[\"x-mode\"] = node[\"x-mode\"];\n }\n result = clone;\n }\n else if (isDirective(node)) {\n const instruction = new ProcessingInstruction(node.name, node.data);\n if (node[\"x-name\"] != null) {\n instruction[\"x-name\"] = node[\"x-name\"];\n instruction[\"x-publicId\"] = node[\"x-publicId\"];\n instruction[\"x-systemId\"] = node[\"x-systemId\"];\n }\n result = instruction;\n }\n else {\n throw new Error(`Not implemented yet: ${node.type}`);\n }\n result.startIndex = node.startIndex;\n result.endIndex = node.endIndex;\n if (node.sourceCodeLocation != null) {\n result.sourceCodeLocation = node.sourceCodeLocation;\n }\n return result;\n}\nfunction cloneChildren(childs) {\n const children = childs.map((child) => cloneNode(child, true));\n for (let i = 1; i < children.length; i++) {\n children[i].prev = children[i - 1];\n children[i - 1].next = children[i];\n }\n return children;\n}\n","import { ElementType } from \"domelementtype\";\nimport { Element, Text, Comment, CDATA, Document, ProcessingInstruction, } from \"./node.js\";\nexport * from \"./node.js\";\n// Default options\nconst defaultOpts = {\n withStartIndices: false,\n withEndIndices: false,\n xmlMode: false,\n};\nexport class DomHandler {\n /**\n * @param callback Called once parsing has completed.\n * @param options Settings for the handler.\n * @param elementCB Callback whenever a tag is closed.\n */\n constructor(callback, options, elementCB) {\n /** The elements of the DOM */\n this.dom = [];\n /** The root element for the DOM */\n this.root = new Document(this.dom);\n /** Indicated whether parsing has been completed. */\n this.done = false;\n /** Stack of open tags. */\n this.tagStack = [this.root];\n /** A data node that is still being written to. */\n this.lastNode = null;\n /** Reference to the parser instance. Used for location information. */\n this.parser = null;\n // Make it possible to skip arguments, for backwards-compatibility\n if (typeof options === \"function\") {\n elementCB = options;\n options = defaultOpts;\n }\n if (typeof callback === \"object\") {\n options = callback;\n callback = undefined;\n }\n this.callback = callback !== null && callback !== void 0 ? callback : null;\n this.options = options !== null && options !== void 0 ? options : defaultOpts;\n this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;\n }\n onparserinit(parser) {\n this.parser = parser;\n }\n // Resets the handler back to starting state\n onreset() {\n this.dom = [];\n this.root = new Document(this.dom);\n this.done = false;\n this.tagStack = [this.root];\n this.lastNode = null;\n this.parser = null;\n }\n // Signals the handler that parsing is done\n onend() {\n if (this.done)\n return;\n this.done = true;\n this.parser = null;\n this.handleCallback(null);\n }\n onerror(error) {\n this.handleCallback(error);\n }\n onclosetag() {\n this.lastNode = null;\n const elem = this.tagStack.pop();\n if (this.options.withEndIndices) {\n elem.endIndex = this.parser.endIndex;\n }\n if (this.elementCB)\n this.elementCB(elem);\n }\n onopentag(name, attribs) {\n const type = this.options.xmlMode ? ElementType.Tag : undefined;\n const element = new Element(name, attribs, undefined, type);\n this.addNode(element);\n this.tagStack.push(element);\n }\n ontext(data) {\n const { lastNode } = this;\n if (lastNode && lastNode.type === ElementType.Text) {\n lastNode.data += data;\n if (this.options.withEndIndices) {\n lastNode.endIndex = this.parser.endIndex;\n }\n }\n else {\n const node = new Text(data);\n this.addNode(node);\n this.lastNode = node;\n }\n }\n oncomment(data) {\n if (this.lastNode && this.lastNode.type === ElementType.Comment) {\n this.lastNode.data += data;\n return;\n }\n const node = new Comment(data);\n this.addNode(node);\n this.lastNode = node;\n }\n oncommentend() {\n this.lastNode = null;\n }\n oncdatastart() {\n const text = new Text(\"\");\n const node = new CDATA([text]);\n this.addNode(node);\n text.parent = node;\n this.lastNode = text;\n }\n oncdataend() {\n this.lastNode = null;\n }\n onprocessinginstruction(name, data) {\n const node = new ProcessingInstruction(name, data);\n this.addNode(node);\n }\n handleCallback(error) {\n if (typeof this.callback === \"function\") {\n this.callback(error, this.dom);\n }\n else if (error) {\n throw error;\n }\n }\n addNode(node) {\n const parent = this.tagStack[this.tagStack.length - 1];\n const previousSibling = parent.children[parent.children.length - 1];\n if (this.options.withStartIndices) {\n node.startIndex = this.parser.startIndex;\n }\n if (this.options.withEndIndices) {\n node.endIndex = this.parser.endIndex;\n }\n parent.children.push(node);\n if (previousSibling) {\n node.prev = previousSibling;\n previousSibling.next = node;\n }\n node.parent = parent;\n this.lastNode = null;\n }\n}\nexport default DomHandler;\n",null,null,null,null,null,null,null,"module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};","/** 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",null,null,null,null,"export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"Attribute\"] = \"attribute\";\n SelectorType[\"Pseudo\"] = \"pseudo\";\n SelectorType[\"PseudoElement\"] = \"pseudo-element\";\n SelectorType[\"Tag\"] = \"tag\";\n SelectorType[\"Universal\"] = \"universal\";\n // Traversals\n SelectorType[\"Adjacent\"] = \"adjacent\";\n SelectorType[\"Child\"] = \"child\";\n SelectorType[\"Descendant\"] = \"descendant\";\n SelectorType[\"Parent\"] = \"parent\";\n SelectorType[\"Sibling\"] = \"sibling\";\n SelectorType[\"ColumnCombinator\"] = \"column-combinator\";\n})(SelectorType || (SelectorType = {}));\n/**\n * Modes for ignore case.\n *\n * This could be updated to an enum, and the object is\n * the current stand-in that will allow code to be updated\n * without big changes.\n */\nexport const IgnoreCaseMode = {\n Unknown: null,\n QuirksMode: \"quirks\",\n IgnoreCase: true,\n CaseSensitive: false,\n};\nexport var AttributeAction;\n(function (AttributeAction) {\n AttributeAction[\"Any\"] = \"any\";\n AttributeAction[\"Element\"] = \"element\";\n AttributeAction[\"End\"] = \"end\";\n AttributeAction[\"Equals\"] = \"equals\";\n AttributeAction[\"Exists\"] = \"exists\";\n AttributeAction[\"Hyphen\"] = \"hyphen\";\n AttributeAction[\"Not\"] = \"not\";\n AttributeAction[\"Start\"] = \"start\";\n})(AttributeAction || (AttributeAction = {}));\n","import { SelectorType, AttributeAction, } from \"./types\";\nconst reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nconst reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nconst actionTypes = new Map([\n [126 /* Tilde */, AttributeAction.Element],\n [94 /* Circumflex */, AttributeAction.Start],\n [36 /* Dollar */, AttributeAction.End],\n [42 /* Asterisk */, AttributeAction.Any],\n [33 /* ExclamationMark */, AttributeAction.Not],\n [124 /* Pipe */, AttributeAction.Hyphen],\n]);\n// Pseudos, whose data property is parsed as well.\nconst unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nexport function isTraversal(selector) {\n switch (selector.type) {\n case SelectorType.Adjacent:\n case SelectorType.Child:\n case SelectorType.Descendant:\n case SelectorType.Parent:\n case SelectorType.Sibling:\n case SelectorType.ColumnCombinator:\n return true;\n default:\n return false;\n }\n}\nconst stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n const high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isQuote(c) {\n return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */;\n}\nfunction isWhitespace(c) {\n return (c === 32 /* Space */ ||\n c === 9 /* Tab */ ||\n c === 10 /* NewLine */ ||\n c === 12 /* FormFeed */ ||\n c === 13 /* CarriageReturn */);\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nexport function parse(selector) {\n const subselects = [];\n const endIndex = parseSelector(subselects, `${selector}`, 0);\n if (endIndex < selector.length) {\n throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`);\n }\n return subselects;\n}\nfunction parseSelector(subselects, selector, selectorIndex) {\n let tokens = [];\n function getName(offset) {\n const match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`);\n }\n const [name] = match;\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n selectorIndex += offset;\n while (selectorIndex < selector.length &&\n isWhitespace(selector.charCodeAt(selectorIndex))) {\n selectorIndex++;\n }\n }\n function readValueWithParenthesis() {\n selectorIndex += 1;\n const start = selectorIndex;\n let counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charCodeAt(selectorIndex) ===\n 41 /* RightParenthesis */ &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n return unescapeCSS(selector.slice(start, selectorIndex - 1));\n }\n function isEscaped(pos) {\n let slashCount = 0;\n while (selector.charCodeAt(--pos) === 92 /* BackSlash */)\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n function addTraversal(type) {\n if (tokens.length > 0 &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens[tokens.length - 1].type = type;\n return;\n }\n ensureNotTraversal();\n tokens.push({ type });\n }\n function addSpecialAttribute(name, action) {\n tokens.push({\n type: SelectorType.Attribute,\n name,\n action,\n value: getName(1),\n namespace: null,\n ignoreCase: \"quirks\",\n });\n }\n /**\n * We have finished parsing the current part of the selector.\n *\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n function finalizeSubselector() {\n if (tokens.length &&\n tokens[tokens.length - 1].type === SelectorType.Descendant) {\n tokens.pop();\n }\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n }\n stripWhitespace(0);\n if (selector.length === selectorIndex) {\n return selectorIndex;\n }\n loop: while (selectorIndex < selector.length) {\n const firstChar = selector.charCodeAt(selectorIndex);\n switch (firstChar) {\n // Whitespace\n case 32 /* Space */:\n case 9 /* Tab */:\n case 10 /* NewLine */:\n case 12 /* FormFeed */:\n case 13 /* CarriageReturn */: {\n if (tokens.length === 0 ||\n tokens[0].type !== SelectorType.Descendant) {\n ensureNotTraversal();\n tokens.push({ type: SelectorType.Descendant });\n }\n stripWhitespace(1);\n break;\n }\n // Traversals\n case 62 /* GreaterThan */: {\n addTraversal(SelectorType.Child);\n stripWhitespace(1);\n break;\n }\n case 60 /* LessThan */: {\n addTraversal(SelectorType.Parent);\n stripWhitespace(1);\n break;\n }\n case 126 /* Tilde */: {\n addTraversal(SelectorType.Sibling);\n stripWhitespace(1);\n break;\n }\n case 43 /* Plus */: {\n addTraversal(SelectorType.Adjacent);\n stripWhitespace(1);\n break;\n }\n // Special attribute selectors: .class, #id\n case 46 /* Period */: {\n addSpecialAttribute(\"class\", AttributeAction.Element);\n break;\n }\n case 35 /* Hash */: {\n addSpecialAttribute(\"id\", AttributeAction.Equals);\n break;\n }\n case 91 /* LeftSquareBracket */: {\n stripWhitespace(1);\n // Determine attribute name and namespace\n let name;\n let namespace = null;\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) {\n // Equivalent to no namespace\n name = getName(1);\n }\n else if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n name = getName(2);\n }\n else {\n name = getName(0);\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n namespace = name;\n name = getName(1);\n }\n }\n stripWhitespace(0);\n // Determine comparison operation\n let action = AttributeAction.Exists;\n const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charCodeAt(selectorIndex + 1) !==\n 61 /* Equal */) {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) {\n action = AttributeAction.Equals;\n stripWhitespace(1);\n }\n // Determine value\n let value = \"\";\n let ignoreCase = null;\n if (action !== \"exists\") {\n if (isQuote(selector.charCodeAt(selectorIndex))) {\n const quote = selector.charCodeAt(selectorIndex);\n let sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charCodeAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charCodeAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n const valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charCodeAt(selectorIndex)) &&\n selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20;\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === 115 /* LowerS */) {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === 105 /* LowerI */) {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n if (selector.charCodeAt(selectorIndex) !==\n 93 /* RightSquareBracket */) {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n const attributeSelector = {\n type: SelectorType.Attribute,\n name,\n action,\n value,\n namespace,\n ignoreCase,\n };\n tokens.push(attributeSelector);\n break;\n }\n case 58 /* Colon */: {\n if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) {\n tokens.push({\n type: SelectorType.PseudoElement,\n name: getName(2).toLowerCase(),\n data: selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */\n ? readValueWithParenthesis()\n : null,\n });\n continue;\n }\n const name = getName(1).toLowerCase();\n let data = null;\n if (selector.charCodeAt(selectorIndex) ===\n 40 /* LeftParenthesis */) {\n if (unpackPseudos.has(name)) {\n if (isQuote(selector.charCodeAt(selectorIndex + 1))) {\n throw new Error(`Pseudo-selector ${name} cannot be quoted`);\n }\n data = [];\n selectorIndex = parseSelector(data, selector, selectorIndex + 1);\n if (selector.charCodeAt(selectorIndex) !==\n 41 /* RightParenthesis */) {\n throw new Error(`Missing closing parenthesis in :${name} (${selector})`);\n }\n selectorIndex += 1;\n }\n else {\n data = readValueWithParenthesis();\n if (stripQuotesFromPseudos.has(name)) {\n const quot = data.charCodeAt(0);\n if (quot === data.charCodeAt(data.length - 1) &&\n isQuote(quot)) {\n data = data.slice(1, -1);\n }\n }\n data = unescapeCSS(data);\n }\n }\n tokens.push({ type: SelectorType.Pseudo, name, data });\n break;\n }\n case 44 /* Comma */: {\n finalizeSubselector();\n tokens = [];\n stripWhitespace(1);\n break;\n }\n default: {\n if (selector.startsWith(\"/*\", selectorIndex)) {\n const endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n // Remove leading whitespace\n if (tokens.length === 0) {\n stripWhitespace(0);\n }\n break;\n }\n let namespace = null;\n let name;\n if (firstChar === 42 /* Asterisk */) {\n selectorIndex += 1;\n name = \"*\";\n }\n else if (firstChar === 124 /* Pipe */) {\n name = \"\";\n if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) {\n addTraversal(SelectorType.ColumnCombinator);\n stripWhitespace(2);\n break;\n }\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n name = getName(0);\n }\n else {\n break loop;\n }\n if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ &&\n selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) {\n namespace = name;\n if (selector.charCodeAt(selectorIndex + 1) ===\n 42 /* Asterisk */) {\n name = \"*\";\n selectorIndex += 2;\n }\n else {\n name = getName(1);\n }\n }\n tokens.push(name === \"*\"\n ? { type: SelectorType.Universal, namespace }\n : { type: SelectorType.Tag, name, namespace });\n }\n }\n }\n finalizeSubselector();\n return selectorIndex;\n}\n","/** 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","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst 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 */\nexport const 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 let 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 */\nexport function 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}\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 */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\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 */\nconst TO_LOWER_BIT = 0b100000;\nexport var 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 || (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 = {}));\nexport var 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 || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\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 startEntity(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 write(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 stateNumericStart(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 addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const 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 stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 emitNumericEntity(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(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 stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const 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 emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const 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 emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\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 end() {\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}\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 let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const 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 const 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 */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const 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 const 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 let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const 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}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\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 */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\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 */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\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 */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \"	\"], [0, \"
\"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","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","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.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 { AttributeAction, SelectorType } from \"css-what\";\nconst procedure = new Map([\n [SelectorType.Universal, 50],\n [SelectorType.Tag, 30],\n [SelectorType.Attribute, 1],\n [SelectorType.Pseudo, 0],\n]);\nexport function isTraversal(token) {\n return !procedure.has(token.type);\n}\nconst attributes = new Map([\n [AttributeAction.Exists, 10],\n [AttributeAction.Equals, 8],\n [AttributeAction.Not, 7],\n [AttributeAction.Start, 6],\n [AttributeAction.End, 6],\n [AttributeAction.Any, 5],\n]);\n/**\n * Sort the parts of the passed selector,\n * as there is potential for optimization\n * (some types of selectors are faster than others)\n *\n * @param arr Selector to sort\n */\nexport default function sortByProcedure(arr) {\n const procs = arr.map(getProcedure);\n for (let i = 1; i < arr.length; i++) {\n const procNew = procs[i];\n if (procNew < 0)\n continue;\n for (let j = i - 1; j >= 0 && procNew < procs[j]; j--) {\n const token = arr[j + 1];\n arr[j + 1] = arr[j];\n arr[j] = token;\n procs[j + 1] = procs[j];\n procs[j] = procNew;\n }\n }\n}\nfunction getProcedure(token) {\n var _a, _b;\n let proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1;\n if (token.type === SelectorType.Attribute) {\n proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4;\n if (token.action === AttributeAction.Equals && token.name === \"id\") {\n // Prefer ID selectors (eg. #ID)\n proc = 9;\n }\n if (token.ignoreCase) {\n /*\n * IgnoreCase adds some overhead, prefer \"normal\" token\n * this is a binary operation, to ensure it's still an int\n */\n proc >>= 1;\n }\n }\n else if (token.type === SelectorType.Pseudo) {\n if (!token.data) {\n proc = 3;\n }\n else if (token.name === \"has\" || token.name === \"contains\") {\n proc = 0; // Expensive in any case\n }\n else if (Array.isArray(token.data)) {\n // Eg. :matches, :not\n proc = Math.min(...token.data.map((d) => Math.min(...d.map(getProcedure))));\n // If we have traversals, try to avoid executing this selector\n if (proc < 0) {\n proc = 0;\n }\n }\n else {\n proc = 2;\n }\n }\n return proc;\n}\n//# sourceMappingURL=sort.js.map","import boolbase from \"boolbase\";\n/**\n * All reserved characters in a regex, used for escaping.\n *\n * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license\n * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794\n */\nconst reChars = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\nfunction escapeRegex(value) {\n return value.replace(reChars, \"\\\\$&\");\n}\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nconst caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\nfunction shouldIgnoreCase(selector, options) {\n return typeof selector.ignoreCase === \"boolean\"\n ? selector.ignoreCase\n : selector.ignoreCase === \"quirks\"\n ? !!options.quirksMode\n : !options.xmlMode && caseInsensitiveAttributes.has(selector.name);\n}\n/**\n * Attribute selectors\n */\nexport const attributeRules = {\n equals(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length === value.length &&\n attr.toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) === value && next(elem);\n },\n hyphen(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return function hyphenIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return function hyphen(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n (attr.length === len || attr.charAt(len) === \"-\") &&\n attr.substr(0, len) === value &&\n next(elem));\n };\n },\n element(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (/\\s/.test(value)) {\n return boolbase.falseFunc;\n }\n const regex = new RegExp(`(?:^|\\\\s)${escapeRegex(value)}(?:$|\\\\s)`, shouldIgnoreCase(data, options) ? \"i\" : \"\");\n return function element(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n },\n exists(next, { name }, { adapter }) {\n return (elem) => adapter.hasAttrib(elem, name) && next(elem);\n },\n start(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= len &&\n attr.substr(0, len).toLowerCase() === value &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) &&\n next(elem);\n };\n },\n end(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n const len = -value.length;\n if (len === 0) {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n var _a;\n return ((_a = adapter\n .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem);\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) &&\n next(elem);\n };\n },\n any(next, data, options) {\n const { adapter } = options;\n const { name, value } = data;\n if (value === \"\") {\n return boolbase.falseFunc;\n }\n if (shouldIgnoreCase(data, options)) {\n const regex = new RegExp(escapeRegex(value), \"i\");\n return function anyIC(elem) {\n const attr = adapter.getAttributeValue(elem, name);\n return (attr != null &&\n attr.length >= value.length &&\n regex.test(attr) &&\n next(elem));\n };\n }\n return (elem) => {\n var _a;\n return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) &&\n next(elem);\n };\n },\n not(next, data, options) {\n const { adapter } = options;\n const { name } = data;\n let { value } = data;\n if (value === \"\") {\n return (elem) => !!adapter.getAttributeValue(elem, name) && next(elem);\n }\n else if (shouldIgnoreCase(data, options)) {\n value = value.toLowerCase();\n return (elem) => {\n const attr = adapter.getAttributeValue(elem, name);\n return ((attr == null ||\n attr.length !== value.length ||\n attr.toLowerCase() !== value) &&\n next(elem));\n };\n }\n return (elem) => adapter.getAttributeValue(elem, name) !== value && next(elem);\n },\n};\n//# sourceMappingURL=attributes.js.map","// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo\n// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is \" \\t\\r\\n\\f\"\nconst whitespace = new Set([9, 10, 12, 13, 32]);\nconst ZERO = \"0\".charCodeAt(0);\nconst NINE = \"9\".charCodeAt(0);\n/**\n * Parses an expression.\n *\n * @throws An `Error` if parsing fails.\n * @returns An array containing the integer step size and the integer offset of the nth rule.\n * @example nthCheck.parse(\"2n+3\"); // returns [2, 3]\n */\nexport function parse(formula) {\n formula = formula.trim().toLowerCase();\n if (formula === \"even\") {\n return [2, 0];\n }\n else if (formula === \"odd\") {\n return [2, 1];\n }\n // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]?\n let idx = 0;\n let a = 0;\n let sign = readSign();\n let number = readNumber();\n if (idx < formula.length && formula.charAt(idx) === \"n\") {\n idx++;\n a = sign * (number !== null && number !== void 0 ? number : 1);\n skipWhitespace();\n if (idx < formula.length) {\n sign = readSign();\n skipWhitespace();\n number = readNumber();\n }\n else {\n sign = number = 0;\n }\n }\n // Throw if there is anything else\n if (number === null || idx < formula.length) {\n throw new Error(`n-th rule couldn't be parsed ('${formula}')`);\n }\n return [a, sign * number];\n function readSign() {\n if (formula.charAt(idx) === \"-\") {\n idx++;\n return -1;\n }\n if (formula.charAt(idx) === \"+\") {\n idx++;\n }\n return 1;\n }\n function readNumber() {\n const start = idx;\n let value = 0;\n while (idx < formula.length &&\n formula.charCodeAt(idx) >= ZERO &&\n formula.charCodeAt(idx) <= NINE) {\n value = value * 10 + (formula.charCodeAt(idx) - ZERO);\n idx++;\n }\n // Return `null` if we didn't read anything.\n return idx === start ? null : value;\n }\n function skipWhitespace() {\n while (idx < formula.length &&\n whitespace.has(formula.charCodeAt(idx))) {\n idx++;\n }\n }\n}\n//# sourceMappingURL=parse.js.map","import { parse } from \"./parse.js\";\nimport { compile, generate } from \"./compile.js\";\nexport { parse, compile, generate };\n/**\n * Parses and compiles a formula to a highly optimized function.\n * Combination of {@link parse} and {@link compile}.\n *\n * If the formula doesn't match any elements,\n * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`.\n * Otherwise, a function accepting an _index_ is returned, which returns\n * whether or not the passed _index_ matches the formula.\n *\n * Note: The nth-rule starts counting at `1`, the returned function at `0`.\n *\n * @param formula The formula to compile.\n * @example\n * const check = nthCheck(\"2n+3\");\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n */\nexport default function nthCheck(formula) {\n return compile(parse(formula));\n}\n/**\n * Parses and compiles a formula to a generator that produces a sequence of indices.\n * Combination of {@link parse} and {@link generate}.\n *\n * @param formula The formula to compile.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing</caption>\n *\n * ```js\n * const gen = nthCheck.sequence('2n+3')\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value</caption>\n *\n * ```js\n *\n * const gen = nthCheck.sequence('-2n+5');\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function sequence(formula) {\n return generate(parse(formula));\n}\n//# sourceMappingURL=index.js.map","import boolbase from \"boolbase\";\n/**\n * Returns a function that checks if an elements index matches the given rule\n * highly optimized to return the fastest solution.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A highly optimized function that returns whether an index matches the nth-check.\n * @example\n *\n * ```js\n * const check = nthCheck.compile([2, 3]);\n *\n * check(0); // `false`\n * check(1); // `false`\n * check(2); // `true`\n * check(3); // `false`\n * check(4); // `true`\n * check(5); // `false`\n * check(6); // `true`\n * ```\n */\nexport function compile(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n const b = parsed[1] - 1;\n /*\n * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`.\n * Besides, the specification states that no elements are\n * matched when `a` and `b` are 0.\n *\n * `b < 0` here as we subtracted 1 from `b` above.\n */\n if (b < 0 && a <= 0)\n return boolbase.falseFunc;\n // When `a` is in the range -1..1, it matches any element (so only `b` is checked).\n if (a === -1)\n return (index) => index <= b;\n if (a === 0)\n return (index) => index === b;\n // When `b <= 0` and `a === 1`, they match any element.\n if (a === 1)\n return b < 0 ? boolbase.trueFunc : (index) => index >= b;\n /*\n * Otherwise, modulo can be used to check if there is a match.\n *\n * Modulo doesn't care about the sign, so let's use `a`s absolute value.\n */\n const absA = Math.abs(a);\n // Get `b mod a`, + a if this is negative.\n const bMod = ((b % absA) + absA) % absA;\n return a > 1\n ? (index) => index >= b && index % absA === bMod\n : (index) => index <= b && index % absA === bMod;\n}\n/**\n * Returns a function that produces a monotonously increasing sequence of indices.\n *\n * If the sequence has an end, the returned function will return `null` after\n * the last index in the sequence.\n *\n * @param parsed A tuple [a, b], as returned by `parse`.\n * @returns A function that produces a sequence of indices.\n * @example <caption>Always increasing (2n+3)</caption>\n *\n * ```js\n * const gen = nthCheck.generate([2, 3])\n *\n * gen() // `1`\n * gen() // `3`\n * gen() // `5`\n * gen() // `8`\n * gen() // `11`\n * ```\n *\n * @example <caption>With end value (-2n+10)</caption>\n *\n * ```js\n *\n * const gen = nthCheck.generate([-2, 5]);\n *\n * gen() // 0\n * gen() // 2\n * gen() // 4\n * gen() // null\n * ```\n */\nexport function generate(parsed) {\n const a = parsed[0];\n // Subtract 1 from `b`, to convert from one- to zero-indexed.\n let b = parsed[1] - 1;\n let n = 0;\n // Make sure to always return an increasing sequence\n if (a < 0) {\n const aPos = -a;\n // Get `b mod a`\n const minValue = ((b % aPos) + aPos) % aPos;\n return () => {\n const val = minValue + aPos * n++;\n return val > b ? null : val;\n };\n }\n if (a === 0)\n return b < 0\n ? // There are no result — always return `null`\n () => null\n : // Return `b` exactly once\n () => (n++ === 0 ? b : null);\n if (b < 0) {\n b += a * Math.ceil(-b / a);\n }\n return () => a * n++ + b;\n}\n//# sourceMappingURL=compile.js.map","import getNCheck from \"nth-check\";\nimport boolbase from \"boolbase\";\nfunction getChildFunc(next, adapter) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(elem);\n };\n}\nexport const filters = {\n contains(next, text, { adapter }) {\n return function contains(elem) {\n return next(elem) && adapter.getText(elem).includes(text);\n };\n },\n icontains(next, text, { adapter }) {\n const itext = text.toLowerCase();\n return function icontains(elem) {\n return (next(elem) &&\n adapter.getText(elem).toLowerCase().includes(itext));\n };\n },\n // Location specific methods\n \"nth-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-child\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastChild(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n break;\n if (adapter.isTag(siblings[i])) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n \"nth-last-of-type\"(next, rule, { adapter, equals }) {\n const func = getNCheck(rule);\n if (func === boolbase.falseFunc)\n return boolbase.falseFunc;\n if (func === boolbase.trueFunc)\n return getChildFunc(next, adapter);\n return function nthLastOfType(elem) {\n const siblings = adapter.getSiblings(elem);\n let pos = 0;\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === adapter.getName(elem)) {\n pos++;\n }\n }\n return func(pos) && next(elem);\n };\n },\n // TODO determine the actual root element\n root(next, _rule, { adapter }) {\n return (elem) => {\n const parent = adapter.getParent(elem);\n return (parent == null || !adapter.isTag(parent)) && next(elem);\n };\n },\n scope(next, rule, options, context) {\n const { equals } = options;\n if (!context || context.length === 0) {\n // Equivalent to :root\n return filters[\"root\"](next, rule, options);\n }\n if (context.length === 1) {\n // NOTE: can't be unpacked, as :has uses this for side-effects\n return (elem) => equals(context[0], elem) && next(elem);\n }\n return (elem) => context.includes(elem) && next(elem);\n },\n hover: dynamicStatePseudo(\"isHovered\"),\n visited: dynamicStatePseudo(\"isVisited\"),\n active: dynamicStatePseudo(\"isActive\"),\n};\n/**\n * Dynamic state pseudos. These depend on optional Adapter methods.\n *\n * @param name The name of the adapter method to call.\n * @returns Pseudo for the `filters` object.\n */\nfunction dynamicStatePseudo(name) {\n return function dynamicPseudo(next, _rule, { adapter }) {\n const func = adapter[name];\n if (typeof func !== \"function\") {\n return boolbase.falseFunc;\n }\n return function active(elem) {\n return func(elem) && next(elem);\n };\n };\n}\n//# sourceMappingURL=filters.js.map","// While filters are precompiled, pseudos get called when they are needed\nexport const pseudos = {\n empty(elem, { adapter }) {\n return !adapter.getChildren(elem).some((elem) => \n // FIXME: `getText` call is potentially expensive.\n adapter.isTag(elem) || adapter.getText(elem) !== \"\");\n },\n \"first-child\"(elem, { adapter, equals }) {\n if (adapter.prevElementSibling) {\n return adapter.prevElementSibling(elem) == null;\n }\n const firstChild = adapter\n .getSiblings(elem)\n .find((elem) => adapter.isTag(elem));\n return firstChild != null && equals(elem, firstChild);\n },\n \"last-child\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n if (equals(elem, siblings[i]))\n return true;\n if (adapter.isTag(siblings[i]))\n break;\n }\n return false;\n },\n \"first-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"last-of-type\"(elem, { adapter, equals }) {\n const siblings = adapter.getSiblings(elem);\n const elemName = adapter.getName(elem);\n for (let i = siblings.length - 1; i >= 0; i--) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n return true;\n if (adapter.isTag(currentSibling) &&\n adapter.getName(currentSibling) === elemName) {\n break;\n }\n }\n return false;\n },\n \"only-of-type\"(elem, { adapter, equals }) {\n const elemName = adapter.getName(elem);\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) ||\n !adapter.isTag(sibling) ||\n adapter.getName(sibling) !== elemName);\n },\n \"only-child\"(elem, { adapter, equals }) {\n return adapter\n .getSiblings(elem)\n .every((sibling) => equals(elem, sibling) || !adapter.isTag(sibling));\n },\n};\nexport function verifyPseudoArgs(func, name, subselect, argIndex) {\n if (subselect === null) {\n if (func.length > argIndex) {\n throw new Error(`Pseudo-class :${name} requires an argument`);\n }\n }\n else if (func.length === argIndex) {\n throw new Error(`Pseudo-class :${name} doesn't have any arguments`);\n }\n}\n//# sourceMappingURL=pseudos.js.map","/**\n * Aliases are pseudos that are expressed as selectors.\n */\nexport const aliases = {\n // Links\n \"any-link\": \":is(a, area, link)[href]\",\n link: \":any-link:not(:visited)\",\n // Forms\n // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements\n disabled: `:is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )`,\n enabled: \":not(:disabled)\",\n checked: \":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)\",\n required: \":is(input, select, textarea)[required]\",\n optional: \":is(input, select, textarea):not([required])\",\n // JQuery extensions\n // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness\n selected: \"option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)\",\n checkbox: \"[type=checkbox]\",\n file: \"[type=file]\",\n password: \"[type=password]\",\n radio: \"[type=radio]\",\n reset: \"[type=reset]\",\n image: \"[type=image]\",\n submit: \"[type=submit]\",\n parent: \":not(:empty)\",\n header: \":is(h1, h2, h3, h4, h5, h6)\",\n button: \":is(button, input[type=button])\",\n input: \":is(input, textarea, select, button)\",\n text: \"input:is(:not([type!='']), [type=text])\",\n};\n//# sourceMappingURL=aliases.js.map","import boolbase from \"boolbase\";\nimport { isTraversal } from \"../sort.js\";\n/** Used as a placeholder for :has. Will be replaced with the actual element. */\nexport const PLACEHOLDER_ELEMENT = {};\nexport function ensureIsTag(next, adapter) {\n if (next === boolbase.falseFunc)\n return boolbase.falseFunc;\n return (elem) => adapter.isTag(elem) && next(elem);\n}\nexport function getNextSiblings(elem, adapter) {\n const siblings = adapter.getSiblings(elem);\n if (siblings.length <= 1)\n return [];\n const elemIndex = siblings.indexOf(elem);\n if (elemIndex < 0 || elemIndex === siblings.length - 1)\n return [];\n return siblings.slice(elemIndex + 1).filter(adapter.isTag);\n}\nfunction copyOptions(options) {\n // Not copied: context, rootFunc\n return {\n xmlMode: !!options.xmlMode,\n lowerCaseAttributeNames: !!options.lowerCaseAttributeNames,\n lowerCaseTags: !!options.lowerCaseTags,\n quirksMode: !!options.quirksMode,\n cacheResults: !!options.cacheResults,\n pseudos: options.pseudos,\n adapter: options.adapter,\n equals: options.equals,\n };\n}\nconst is = (next, token, options, context, compileToken) => {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.trueFunc\n ? next\n : func === boolbase.falseFunc\n ? boolbase.falseFunc\n : (elem) => func(elem) && next(elem);\n};\n/*\n * :not, :has, :is, :matches and :where have to compile selectors\n * doing this in src/pseudos.ts would lead to circular dependencies,\n * so we add them here\n */\nexport const subselects = {\n is,\n /**\n * `:matches` and `:where` are aliases for `:is`.\n */\n matches: is,\n where: is,\n not(next, token, options, context, compileToken) {\n const func = compileToken(token, copyOptions(options), context);\n return func === boolbase.falseFunc\n ? next\n : func === boolbase.trueFunc\n ? boolbase.falseFunc\n : (elem) => !func(elem) && next(elem);\n },\n has(next, subselect, options, _context, compileToken) {\n const { adapter } = options;\n const opts = copyOptions(options);\n opts.relativeSelector = true;\n const context = subselect.some((s) => s.some(isTraversal))\n ? // Used as a placeholder. Will be replaced with the actual element.\n [PLACEHOLDER_ELEMENT]\n : undefined;\n const compiled = compileToken(subselect, opts, context);\n if (compiled === boolbase.falseFunc)\n return boolbase.falseFunc;\n const hasElement = ensureIsTag(compiled, adapter);\n // If `compiled` is `trueFunc`, we can skip this.\n if (context && compiled !== boolbase.trueFunc) {\n /*\n * `shouldTestNextSiblings` will only be true if the query starts with\n * a traversal (sibling or adjacent). That means we will always have a context.\n */\n const { shouldTestNextSiblings = false } = compiled;\n return (elem) => {\n if (!next(elem))\n return false;\n context[0] = elem;\n const childs = adapter.getChildren(elem);\n const nextElements = shouldTestNextSiblings\n ? [...childs, ...getNextSiblings(elem, adapter)]\n : childs;\n return adapter.existsOne(hasElement, nextElements);\n };\n }\n return (elem) => next(elem) &&\n adapter.existsOne(hasElement, adapter.getChildren(elem));\n },\n};\n//# sourceMappingURL=subselects.js.map","import { attributeRules } from \"./attributes.js\";\nimport { compilePseudoSelector } from \"./pseudo-selectors/index.js\";\nimport { SelectorType } from \"css-what\";\nfunction getElementParent(node, adapter) {\n const parent = adapter.getParent(node);\n if (parent && adapter.isTag(parent)) {\n return parent;\n }\n return null;\n}\n/*\n * All available rules\n */\nexport function compileGeneralSelector(next, selector, options, context, compileToken) {\n const { adapter, equals } = options;\n switch (selector.type) {\n case SelectorType.PseudoElement: {\n throw new Error(\"Pseudo-elements are not supported by css-select\");\n }\n case SelectorType.ColumnCombinator: {\n throw new Error(\"Column combinators are not yet supported by css-select\");\n }\n case SelectorType.Attribute: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced attributes are not yet supported by css-select\");\n }\n if (!options.xmlMode || options.lowerCaseAttributeNames) {\n selector.name = selector.name.toLowerCase();\n }\n return attributeRules[selector.action](next, selector, options);\n }\n case SelectorType.Pseudo: {\n return compilePseudoSelector(next, selector, options, context, compileToken);\n }\n // Tags\n case SelectorType.Tag: {\n if (selector.namespace != null) {\n throw new Error(\"Namespaced tag names are not yet supported by css-select\");\n }\n let { name } = selector;\n if (!options.xmlMode || options.lowerCaseTags) {\n name = name.toLowerCase();\n }\n return function tag(elem) {\n return adapter.getName(elem) === name && next(elem);\n };\n }\n // Traversal\n case SelectorType.Descendant: {\n if (options.cacheResults === false ||\n typeof WeakSet === \"undefined\") {\n return function descendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (next(current)) {\n return true;\n }\n }\n return false;\n };\n }\n // @ts-expect-error `ElementNode` is not extending object\n const isFalseCache = new WeakSet();\n return function cachedDescendant(elem) {\n let current = elem;\n while ((current = getElementParent(current, adapter))) {\n if (!isFalseCache.has(current)) {\n if (adapter.isTag(current) && next(current)) {\n return true;\n }\n isFalseCache.add(current);\n }\n }\n return false;\n };\n }\n case \"_flexibleDescendant\": {\n // Include element itself, only used while querying an array\n return function flexibleDescendant(elem) {\n let current = elem;\n do {\n if (next(current))\n return true;\n } while ((current = getElementParent(current, adapter)));\n return false;\n };\n }\n case SelectorType.Parent: {\n return function parent(elem) {\n return adapter\n .getChildren(elem)\n .some((elem) => adapter.isTag(elem) && next(elem));\n };\n }\n case SelectorType.Child: {\n return function child(elem) {\n const parent = adapter.getParent(elem);\n return parent != null && adapter.isTag(parent) && next(parent);\n };\n }\n case SelectorType.Sibling: {\n return function sibling(elem) {\n const siblings = adapter.getSiblings(elem);\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling) && next(currentSibling)) {\n return true;\n }\n }\n return false;\n };\n }\n case SelectorType.Adjacent: {\n if (adapter.prevElementSibling) {\n return function adjacent(elem) {\n const previous = adapter.prevElementSibling(elem);\n return previous != null && next(previous);\n };\n }\n return function adjacent(elem) {\n const siblings = adapter.getSiblings(elem);\n let lastElement;\n for (let i = 0; i < siblings.length; i++) {\n const currentSibling = siblings[i];\n if (equals(elem, currentSibling))\n break;\n if (adapter.isTag(currentSibling)) {\n lastElement = currentSibling;\n }\n }\n return !!lastElement && next(lastElement);\n };\n }\n case SelectorType.Universal: {\n if (selector.namespace != null && selector.namespace !== \"*\") {\n throw new Error(\"Namespaced universal selectors are not yet supported by css-select\");\n }\n return next;\n }\n }\n}\n//# sourceMappingURL=general.js.map","import { parse } from \"css-what\";\nimport { filters } from \"./filters.js\";\nimport { pseudos, verifyPseudoArgs } from \"./pseudos.js\";\nimport { aliases } from \"./aliases.js\";\nimport { subselects } from \"./subselects.js\";\nexport { filters, pseudos, aliases };\nexport function compilePseudoSelector(next, selector, options, context, compileToken) {\n var _a;\n const { name, data } = selector;\n if (Array.isArray(data)) {\n if (!(name in subselects)) {\n throw new Error(`Unknown pseudo-class :${name}(${data})`);\n }\n return subselects[name](next, data, options, context, compileToken);\n }\n const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name];\n const stringPseudo = typeof userPseudo === \"string\" ? userPseudo : aliases[name];\n if (typeof stringPseudo === \"string\") {\n if (data != null) {\n throw new Error(`Pseudo ${name} doesn't have any arguments`);\n }\n // The alias has to be parsed here, to make sure options are respected.\n const alias = parse(stringPseudo);\n return subselects[\"is\"](next, alias, options, context, compileToken);\n }\n if (typeof userPseudo === \"function\") {\n verifyPseudoArgs(userPseudo, name, data, 1);\n return (elem) => userPseudo(elem, data) && next(elem);\n }\n if (name in filters) {\n return filters[name](next, data, options, context);\n }\n if (name in pseudos) {\n const pseudo = pseudos[name];\n verifyPseudoArgs(pseudo, name, data, 2);\n return (elem) => pseudo(elem, options, data) && next(elem);\n }\n throw new Error(`Unknown pseudo-class :${name}`);\n}\n//# sourceMappingURL=index.js.map","import { parse, SelectorType } from \"css-what\";\nimport boolbase from \"boolbase\";\nimport sortRules, { isTraversal } from \"./sort.js\";\nimport { compileGeneralSelector } from \"./general.js\";\nimport { ensureIsTag, PLACEHOLDER_ELEMENT, } from \"./pseudo-selectors/subselects.js\";\n/**\n * Compiles a selector to an executable function.\n *\n * @param selector Selector to compile.\n * @param options Compilation options.\n * @param context Optional context for the selector.\n */\nexport function compile(selector, options, context) {\n const next = compileUnsafe(selector, options, context);\n return ensureIsTag(next, options.adapter);\n}\nexport function compileUnsafe(selector, options, context) {\n const token = typeof selector === \"string\" ? parse(selector) : selector;\n return compileToken(token, options, context);\n}\nfunction includesScopePseudo(t) {\n return (t.type === SelectorType.Pseudo &&\n (t.name === \"scope\" ||\n (Array.isArray(t.data) &&\n t.data.some((data) => data.some(includesScopePseudo)))));\n}\nconst DESCENDANT_TOKEN = { type: SelectorType.Descendant };\nconst FLEXIBLE_DESCENDANT_TOKEN = {\n type: \"_flexibleDescendant\",\n};\nconst SCOPE_TOKEN = {\n type: SelectorType.Pseudo,\n name: \"scope\",\n data: null,\n};\n/*\n * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector\n * http://www.w3.org/TR/selectors4/#absolutizing\n */\nfunction absolutize(token, { adapter }, context) {\n // TODO Use better check if the context is a document\n const hasContext = !!(context === null || context === void 0 ? void 0 : context.every((e) => {\n const parent = adapter.isTag(e) && adapter.getParent(e);\n return e === PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent));\n }));\n for (const t of token) {\n if (t.length > 0 &&\n isTraversal(t[0]) &&\n t[0].type !== SelectorType.Descendant) {\n // Don't continue in else branch\n }\n else if (hasContext && !t.some(includesScopePseudo)) {\n t.unshift(DESCENDANT_TOKEN);\n }\n else {\n continue;\n }\n t.unshift(SCOPE_TOKEN);\n }\n}\nexport function compileToken(token, options, context) {\n var _a;\n token.forEach(sortRules);\n context = (_a = options.context) !== null && _a !== void 0 ? _a : context;\n const isArrayContext = Array.isArray(context);\n const finalContext = context && (Array.isArray(context) ? context : [context]);\n // Check if the selector is relative\n if (options.relativeSelector !== false) {\n absolutize(token, options, finalContext);\n }\n else if (token.some((t) => t.length > 0 && isTraversal(t[0]))) {\n throw new Error(\"Relative selectors are not allowed when the `relativeSelector` option is disabled\");\n }\n let shouldTestNextSiblings = false;\n const query = token\n .map((rules) => {\n if (rules.length >= 2) {\n const [first, second] = rules;\n if (first.type !== SelectorType.Pseudo ||\n first.name !== \"scope\") {\n // Ignore\n }\n else if (isArrayContext &&\n second.type === SelectorType.Descendant) {\n rules[1] = FLEXIBLE_DESCENDANT_TOKEN;\n }\n else if (second.type === SelectorType.Adjacent ||\n second.type === SelectorType.Sibling) {\n shouldTestNextSiblings = true;\n }\n }\n return compileRules(rules, options, finalContext);\n })\n .reduce(reduceRules, boolbase.falseFunc);\n query.shouldTestNextSiblings = shouldTestNextSiblings;\n return query;\n}\nfunction compileRules(rules, options, context) {\n var _a;\n return rules.reduce((previous, rule) => previous === boolbase.falseFunc\n ? boolbase.falseFunc\n : compileGeneralSelector(previous, rule, options, context, compileToken), (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase.trueFunc);\n}\nfunction reduceRules(a, b) {\n if (b === boolbase.falseFunc || a === boolbase.trueFunc) {\n return a;\n }\n if (a === boolbase.falseFunc || b === boolbase.trueFunc) {\n return b;\n }\n return function combine(elem) {\n return a(elem) || b(elem);\n };\n}\n//# sourceMappingURL=compile.js.map","import * as DomUtils from \"domutils\";\nimport boolbase from \"boolbase\";\nimport { compile as compileRaw, compileUnsafe, compileToken, } from \"./compile.js\";\nimport { getNextSiblings } from \"./pseudo-selectors/subselects.js\";\nconst defaultEquals = (a, b) => a === b;\nconst defaultOptions = {\n adapter: DomUtils,\n equals: defaultEquals,\n};\nfunction convertOptionFormats(options) {\n var _a, _b, _c, _d;\n /*\n * We force one format of options to the other one.\n */\n // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`.\n const opts = options !== null && options !== void 0 ? options : defaultOptions;\n // @ts-expect-error Same as above.\n (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils);\n // @ts-expect-error `equals` does not exist on `Options`\n (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals);\n return opts;\n}\nfunction wrapCompile(func) {\n return function addAdapter(selector, options, context) {\n const opts = convertOptionFormats(options);\n return func(selector, opts, context);\n };\n}\n/**\n * Compiles the query, returns a function.\n */\nexport const compile = wrapCompile(compileRaw);\nexport const _compileUnsafe = wrapCompile(compileUnsafe);\nexport const _compileToken = wrapCompile(compileToken);\nfunction getSelectorFunc(searchFunc) {\n return function select(query, elements, options) {\n const opts = convertOptionFormats(options);\n if (typeof query !== \"function\") {\n query = compileUnsafe(query, opts, elements);\n }\n const filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings);\n return searchFunc(query, filteredElements, opts);\n };\n}\nexport function prepareContext(elems, adapter, shouldTestNextSiblings = false) {\n /*\n * Add siblings if the query requires them.\n * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692\n */\n if (shouldTestNextSiblings) {\n elems = appendNextSiblings(elems, adapter);\n }\n return Array.isArray(elems)\n ? adapter.removeSubsets(elems)\n : adapter.getChildren(elems);\n}\nfunction appendNextSiblings(elem, adapter) {\n // Order matters because jQuery seems to check the children before the siblings\n const elems = Array.isArray(elem) ? elem.slice(0) : [elem];\n const elemsLength = elems.length;\n for (let i = 0; i < elemsLength; i++) {\n const nextSiblings = getNextSiblings(elems[i], adapter);\n elems.push(...nextSiblings);\n }\n return elems;\n}\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns All matching elements.\n *\n */\nexport const selectAll = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? []\n : options.adapter.findAll(query, elems));\n/**\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elems Elements to query. If it is an element, its children will be queried..\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns the first match, or null if there was no match.\n */\nexport const selectOne = getSelectorFunc((query, elems, options) => query === boolbase.falseFunc || !elems || elems.length === 0\n ? null\n : options.adapter.findOne(query, elems));\n/**\n * Tests whether or not an element is matched by query.\n *\n * @template Node The generic Node type for the DOM adapter being used.\n * @template ElementNode The Node type for elements for the DOM adapter being used.\n * @param elem The element to test if it matches the query.\n * @param query can be either a CSS selector string or a compiled query function.\n * @param [options] options for querying the document.\n * @see compile for supported selector queries.\n * @returns\n */\nexport function is(elem, query, options) {\n const opts = convertOptionFormats(options);\n return (typeof query === \"function\" ? query : compileRaw(query, opts))(elem);\n}\n/**\n * Alias for selectAll(query, elems, options).\n * @see [compile] for supported selector queries.\n */\nexport default selectAll;\n// Export filters, pseudos and aliases to allow users to supply their own.\n/** @deprecated Use the `pseudos` option instead. */\nexport { filters, pseudos, aliases } from \"./pseudo-selectors/index.js\";\n//# sourceMappingURL=index.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","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst 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 */\nexport const 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 let 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 */\nexport function 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}\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 */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\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 */\nconst TO_LOWER_BIT = 0b100000;\nexport var 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 || (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 = {}));\nexport var 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 || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\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 startEntity(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 write(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 stateNumericStart(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 addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const 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 stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 emitNumericEntity(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(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 stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const 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 emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const 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 emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\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 end() {\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}\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 let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const 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 const 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 */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const 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 const 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 let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const 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}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\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 */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\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 */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\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 */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \"	\"], [0, \"
\"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","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","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.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",null,null,null,null,null,null,null,null,"const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map","export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code) {\n const { line, col, offset } = this;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol: col,\n endCol: col,\n startOffset: offset,\n endOffset: offset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n//# sourceMappingURL=preprocessor.js.map","export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n//# sourceMappingURL=token.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n [0x80, 8364],\n [0x82, 8218],\n [0x83, 402],\n [0x84, 8222],\n [0x85, 8230],\n [0x86, 8224],\n [0x87, 8225],\n [0x88, 710],\n [0x89, 8240],\n [0x8a, 352],\n [0x8b, 8249],\n [0x8c, 338],\n [0x8e, 381],\n [0x91, 8216],\n [0x92, 8217],\n [0x93, 8220],\n [0x94, 8221],\n [0x95, 8226],\n [0x96, 8211],\n [0x97, 8212],\n [0x98, 732],\n [0x99, 8482],\n [0x9a, 353],\n [0x9b, 8250],\n [0x9c, 339],\n [0x9e, 382],\n [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.charRefCode = -1;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n }\n //Errors\n _err(code) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this._unconsume(this.consumedAfterSnapshot);\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume(count) {\n this.consumedAfterSnapshot -= count;\n this.preprocessor.retreat(count);\n }\n _reconsumeInState(state, cp) {\n this.state = state;\n this._callState(cp);\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type !== type) {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n else {\n this.currentCharacterToken.chars += ch;\n return;\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(cp) {\n let result = null;\n let excess = 0;\n let withoutSemicolon = false;\n for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n if (i < 0)\n break;\n excess += 1;\n current = htmlDecodeTree[i];\n const masked = current & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n if (cp !== $.SEMICOLON &&\n this._isCharacterReferenceInAttribute() &&\n isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n result = [$.AMPERSAND];\n // Skip over the value.\n i += valueLength;\n }\n else {\n // If this is a surrogate pair, consume the next two bytes.\n result =\n valueLength === 0\n ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n : valueLength === 1\n ? [htmlDecodeTree[++i]]\n : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n excess = 0;\n withoutSemicolon = cp !== $.SEMICOLON;\n }\n if (valueLength === 0) {\n // If the value is zero-length, we're done.\n this._consume();\n break;\n }\n }\n }\n this._unconsume(excess);\n if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n }\n // We want to emit the error above on the code point after the entity.\n // We always consume one code point too many in the loop, and we wait to\n // unconsume it until after the error is emitted.\n this._unconsume(1);\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference(cp);\n break;\n }\n case State.NAMED_CHARACTER_REFERENCE: {\n this._stateNamedCharacterReference(cp);\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE: {\n this._stateNumericCharacterReference(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n this._stateHexademicalCharacterReferenceStart(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n this._stateHexademicalCharacterReference(cp);\n break;\n }\n case State.DECIMAL_CHARACTER_REFERENCE: {\n this._stateDecimalCharacterReference(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE_END: {\n this._stateNumericCharacterReferenceEnd(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.DATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this.returnState = State.RCDATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference(cp) {\n if (cp === $.NUMBER_SIGN) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE;\n }\n else if (isAsciiAlphaNumeric(cp)) {\n this.state = State.NAMED_CHARACTER_REFERENCE;\n this._stateNamedCharacterReference(cp);\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n _stateNamedCharacterReference(cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n //NOTE: Matching can be abrupted by hibernation. In that case, match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n // Stay in the state, try again.\n }\n else if (matchResult) {\n for (let i = 0; i < matchResult.length; i++) {\n this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n }\n this.state = this.returnState;\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state = State.AMBIGUOUS_AMPERSAND;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n _stateNumericCharacterReference(cp) {\n this.charRefCode = 0;\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n }\n // Inlined decimal character reference start state\n else if (isAsciiDigit(cp)) {\n this.state = State.DECIMAL_CHARACTER_REFERENCE;\n this._stateDecimalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReferenceStart(cp) {\n if (isAsciiHexDigit(cp)) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n this._stateHexademicalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._unconsume(2);\n this.state = this.returnState;\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReference(cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n }\n else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n }\n else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n _stateDecimalCharacterReference(cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n _stateNumericCharacterReferenceEnd(cp) {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (this.charRefCode > 1114111) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n }\n else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n if (replacement !== undefined) {\n this.charRefCode = replacement;\n }\n }\n this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n this._reconsumeInState(this.returnState, cp);\n }\n}\n//# sourceMappingURL=index.js.map","import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n [$.APPLET, NS.HTML],\n [$.CAPTION, NS.HTML],\n [$.HTML, NS.HTML],\n [$.MARQUEE, NS.HTML],\n [$.OBJECT, NS.HTML],\n [$.TABLE, NS.HTML],\n [$.TD, NS.HTML],\n [$.TEMPLATE, NS.HTML],\n [$.TH, NS.HTML],\n [$.ANNOTATION_XML, NS.MATHML],\n [$.MI, NS.MATHML],\n [$.MN, NS.MATHML],\n [$.MO, NS.MATHML],\n [$.MS, NS.MATHML],\n [$.MTEXT, NS.MATHML],\n [$.DESC, NS.SVG],\n [$.FOREIGN_OBJECT, NS.SVG],\n [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (isNumberedHeader(tn) && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n//# sourceMappingURL=open-element-stack.js.map","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n//# sourceMappingURL=formatting-element-list.js.map","import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n}\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n//# sourceMappingURL=default.js.map","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceMappingURL=doctype.js.map","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, fragmentContext = null, scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n this.insertionMode = InsertionMode.INITIAL;\n this.originalInsertionMode = InsertionMode.INITIAL;\n this.headElement = null;\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n */\n this.tmplInsertionModeStack = [];\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (isNumberedHeader(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED: {\n noembedStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (!attr.namespace) {\n html += attr.name;\n }\n else\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceMappingURL=index.js.map","const UNDEFINED_CODE_POINTS = new Set([\n 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n 1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n DASH_DASH: '--',\n CDATA_START: '[CDATA[',\n DOCTYPE: 'doctype',\n SCRIPT: 'script',\n PUBLIC: 'public',\n SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map","export var ERR;\n(function (ERR) {\n ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n ERR[\"eofInTag\"] = \"eof-in-tag\";\n ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n ERR[\"nestedComment\"] = \"nested-comment\";\n ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n ERR[\"eofInComment\"] = \"eof-in-comment\";\n ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n ERR[\"missingDoctype\"] = \"missing-doctype\";\n ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map","import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n constructor(handler) {\n this.handler = handler;\n this.html = '';\n this.pos = -1;\n // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n this.lastGapPos = -2;\n this.gapStack = [];\n this.skipNextNewLine = false;\n this.lastChunkWritten = false;\n this.endOfChunkHit = false;\n this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n this.isEol = false;\n this.lineStartPos = 0;\n this.droppedBufferSize = 0;\n this.line = 1;\n //NOTE: avoid reporting errors twice on advance/retreat\n this.lastErrOffset = -1;\n }\n /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n get col() {\n return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n }\n get offset() {\n return this.droppedBufferSize + this.pos;\n }\n getError(code) {\n const { line, col, offset } = this;\n return {\n code,\n startLine: line,\n endLine: line,\n startCol: col,\n endCol: col,\n startOffset: offset,\n endOffset: offset,\n };\n }\n _err(code) {\n if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n this.lastErrOffset = this.offset;\n this.handler.onParseError(this.getError(code));\n }\n }\n _addGap() {\n this.gapStack.push(this.lastGapPos);\n this.lastGapPos = this.pos;\n }\n _processSurrogate(cp) {\n //NOTE: try to peek a surrogate pair\n if (this.pos !== this.html.length - 1) {\n const nextCp = this.html.charCodeAt(this.pos + 1);\n if (isSurrogatePair(nextCp)) {\n //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n this.pos++;\n //NOTE: add a gap that should be avoided during retreat\n this._addGap();\n return getSurrogatePairCodePoint(cp, nextCp);\n }\n }\n //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n else if (!this.lastChunkWritten) {\n this.endOfChunkHit = true;\n return $.EOF;\n }\n //NOTE: isolated surrogate\n this._err(ERR.surrogateInInputStream);\n return cp;\n }\n willDropParsedChunk() {\n return this.pos > this.bufferWaterline;\n }\n dropParsedChunk() {\n if (this.willDropParsedChunk()) {\n this.html = this.html.substring(this.pos);\n this.lineStartPos -= this.pos;\n this.droppedBufferSize += this.pos;\n this.pos = 0;\n this.lastGapPos = -2;\n this.gapStack.length = 0;\n }\n }\n write(chunk, isLastChunk) {\n if (this.html.length > 0) {\n this.html += chunk;\n }\n else {\n this.html = chunk;\n }\n this.endOfChunkHit = false;\n this.lastChunkWritten = isLastChunk;\n }\n insertHtmlAtCurrentPos(chunk) {\n this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n this.endOfChunkHit = false;\n }\n startsWith(pattern, caseSensitive) {\n // Check if our buffer has enough characters\n if (this.pos + pattern.length > this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return false;\n }\n if (caseSensitive) {\n return this.html.startsWith(pattern, this.pos);\n }\n for (let i = 0; i < pattern.length; i++) {\n const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n if (cp !== pattern.charCodeAt(i)) {\n return false;\n }\n }\n return true;\n }\n peek(offset) {\n const pos = this.pos + offset;\n if (pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n const code = this.html.charCodeAt(pos);\n return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n }\n advance() {\n this.pos++;\n //NOTE: LF should be in the last column of the line\n if (this.isEol) {\n this.isEol = false;\n this.line++;\n this.lineStartPos = this.pos;\n }\n if (this.pos >= this.html.length) {\n this.endOfChunkHit = !this.lastChunkWritten;\n return $.EOF;\n }\n let cp = this.html.charCodeAt(this.pos);\n //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n if (cp === $.CARRIAGE_RETURN) {\n this.isEol = true;\n this.skipNextNewLine = true;\n return $.LINE_FEED;\n }\n //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n //must be ignored.\n if (cp === $.LINE_FEED) {\n this.isEol = true;\n if (this.skipNextNewLine) {\n // `line` will be bumped again in the recursive call.\n this.line--;\n this.skipNextNewLine = false;\n this._addGap();\n return this.advance();\n }\n }\n this.skipNextNewLine = false;\n if (isSurrogate(cp)) {\n cp = this._processSurrogate(cp);\n }\n //OPTIMIZATION: first check if code point is in the common allowed\n //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n //before going into detailed performance cost validation.\n const isCommonValidRange = this.handler.onParseError === null ||\n (cp > 0x1f && cp < 0x7f) ||\n cp === $.LINE_FEED ||\n cp === $.CARRIAGE_RETURN ||\n (cp > 0x9f && cp < 64976);\n if (!isCommonValidRange) {\n this._checkForProblematicCharacters(cp);\n }\n return cp;\n }\n _checkForProblematicCharacters(cp) {\n if (isControlCodePoint(cp)) {\n this._err(ERR.controlCharacterInInputStream);\n }\n else if (isUndefinedCodePoint(cp)) {\n this._err(ERR.noncharacterInInputStream);\n }\n }\n retreat(count) {\n this.pos -= count;\n while (this.pos < this.lastGapPos) {\n this.lastGapPos = this.gapStack.pop();\n this.pos--;\n }\n this.isEol = false;\n }\n}\n//# sourceMappingURL=preprocessor.js.map","export var TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n for (let i = token.attrs.length - 1; i >= 0; i--) {\n if (token.attrs[i].name === attrName) {\n return token.attrs[i].value;\n }\n }\n return null;\n}\n//# sourceMappingURL=token.js.map","/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n ATTRS[\"TYPE\"] = \"type\";\n ATTRS[\"ACTION\"] = \"action\";\n ATTRS[\"ENCODING\"] = \"encoding\";\n ATTRS[\"PROMPT\"] = \"prompt\";\n ATTRS[\"NAME\"] = \"name\";\n ATTRS[\"COLOR\"] = \"color\";\n ATTRS[\"FACE\"] = \"face\";\n ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n TAG_NAMES[\"A\"] = \"a\";\n TAG_NAMES[\"ADDRESS\"] = \"address\";\n TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n TAG_NAMES[\"APPLET\"] = \"applet\";\n TAG_NAMES[\"AREA\"] = \"area\";\n TAG_NAMES[\"ARTICLE\"] = \"article\";\n TAG_NAMES[\"ASIDE\"] = \"aside\";\n TAG_NAMES[\"B\"] = \"b\";\n TAG_NAMES[\"BASE\"] = \"base\";\n TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n TAG_NAMES[\"BIG\"] = \"big\";\n TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n TAG_NAMES[\"BODY\"] = \"body\";\n TAG_NAMES[\"BR\"] = \"br\";\n TAG_NAMES[\"BUTTON\"] = \"button\";\n TAG_NAMES[\"CAPTION\"] = \"caption\";\n TAG_NAMES[\"CENTER\"] = \"center\";\n TAG_NAMES[\"CODE\"] = \"code\";\n TAG_NAMES[\"COL\"] = \"col\";\n TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n TAG_NAMES[\"DD\"] = \"dd\";\n TAG_NAMES[\"DESC\"] = \"desc\";\n TAG_NAMES[\"DETAILS\"] = \"details\";\n TAG_NAMES[\"DIALOG\"] = \"dialog\";\n TAG_NAMES[\"DIR\"] = \"dir\";\n TAG_NAMES[\"DIV\"] = \"div\";\n TAG_NAMES[\"DL\"] = \"dl\";\n TAG_NAMES[\"DT\"] = \"dt\";\n TAG_NAMES[\"EM\"] = \"em\";\n TAG_NAMES[\"EMBED\"] = \"embed\";\n TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n TAG_NAMES[\"FIGURE\"] = \"figure\";\n TAG_NAMES[\"FONT\"] = \"font\";\n TAG_NAMES[\"FOOTER\"] = \"footer\";\n TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n TAG_NAMES[\"FORM\"] = \"form\";\n TAG_NAMES[\"FRAME\"] = \"frame\";\n TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n TAG_NAMES[\"H1\"] = \"h1\";\n TAG_NAMES[\"H2\"] = \"h2\";\n TAG_NAMES[\"H3\"] = \"h3\";\n TAG_NAMES[\"H4\"] = \"h4\";\n TAG_NAMES[\"H5\"] = \"h5\";\n TAG_NAMES[\"H6\"] = \"h6\";\n TAG_NAMES[\"HEAD\"] = \"head\";\n TAG_NAMES[\"HEADER\"] = \"header\";\n TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n TAG_NAMES[\"HR\"] = \"hr\";\n TAG_NAMES[\"HTML\"] = \"html\";\n TAG_NAMES[\"I\"] = \"i\";\n TAG_NAMES[\"IMG\"] = \"img\";\n TAG_NAMES[\"IMAGE\"] = \"image\";\n TAG_NAMES[\"INPUT\"] = \"input\";\n TAG_NAMES[\"IFRAME\"] = \"iframe\";\n TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n TAG_NAMES[\"LABEL\"] = \"label\";\n TAG_NAMES[\"LI\"] = \"li\";\n TAG_NAMES[\"LINK\"] = \"link\";\n TAG_NAMES[\"LISTING\"] = \"listing\";\n TAG_NAMES[\"MAIN\"] = \"main\";\n TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n TAG_NAMES[\"MATH\"] = \"math\";\n TAG_NAMES[\"MENU\"] = \"menu\";\n TAG_NAMES[\"META\"] = \"meta\";\n TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n TAG_NAMES[\"MI\"] = \"mi\";\n TAG_NAMES[\"MO\"] = \"mo\";\n TAG_NAMES[\"MN\"] = \"mn\";\n TAG_NAMES[\"MS\"] = \"ms\";\n TAG_NAMES[\"MTEXT\"] = \"mtext\";\n TAG_NAMES[\"NAV\"] = \"nav\";\n TAG_NAMES[\"NOBR\"] = \"nobr\";\n TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n TAG_NAMES[\"OBJECT\"] = \"object\";\n TAG_NAMES[\"OL\"] = \"ol\";\n TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n TAG_NAMES[\"OPTION\"] = \"option\";\n TAG_NAMES[\"P\"] = \"p\";\n TAG_NAMES[\"PARAM\"] = \"param\";\n TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n TAG_NAMES[\"PRE\"] = \"pre\";\n TAG_NAMES[\"RB\"] = \"rb\";\n TAG_NAMES[\"RP\"] = \"rp\";\n TAG_NAMES[\"RT\"] = \"rt\";\n TAG_NAMES[\"RTC\"] = \"rtc\";\n TAG_NAMES[\"RUBY\"] = \"ruby\";\n TAG_NAMES[\"S\"] = \"s\";\n TAG_NAMES[\"SCRIPT\"] = \"script\";\n TAG_NAMES[\"SECTION\"] = \"section\";\n TAG_NAMES[\"SELECT\"] = \"select\";\n TAG_NAMES[\"SOURCE\"] = \"source\";\n TAG_NAMES[\"SMALL\"] = \"small\";\n TAG_NAMES[\"SPAN\"] = \"span\";\n TAG_NAMES[\"STRIKE\"] = \"strike\";\n TAG_NAMES[\"STRONG\"] = \"strong\";\n TAG_NAMES[\"STYLE\"] = \"style\";\n TAG_NAMES[\"SUB\"] = \"sub\";\n TAG_NAMES[\"SUMMARY\"] = \"summary\";\n TAG_NAMES[\"SUP\"] = \"sup\";\n TAG_NAMES[\"TABLE\"] = \"table\";\n TAG_NAMES[\"TBODY\"] = \"tbody\";\n TAG_NAMES[\"TEMPLATE\"] = \"template\";\n TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n TAG_NAMES[\"TD\"] = \"td\";\n TAG_NAMES[\"TH\"] = \"th\";\n TAG_NAMES[\"THEAD\"] = \"thead\";\n TAG_NAMES[\"TITLE\"] = \"title\";\n TAG_NAMES[\"TR\"] = \"tr\";\n TAG_NAMES[\"TRACK\"] = \"track\";\n TAG_NAMES[\"TT\"] = \"tt\";\n TAG_NAMES[\"U\"] = \"u\";\n TAG_NAMES[\"UL\"] = \"ul\";\n TAG_NAMES[\"SVG\"] = \"svg\";\n TAG_NAMES[\"VAR\"] = \"var\";\n TAG_NAMES[\"WBR\"] = \"wbr\";\n TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n [TAG_NAMES.A, TAG_ID.A],\n [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n [TAG_NAMES.APPLET, TAG_ID.APPLET],\n [TAG_NAMES.AREA, TAG_ID.AREA],\n [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n [TAG_NAMES.B, TAG_ID.B],\n [TAG_NAMES.BASE, TAG_ID.BASE],\n [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n [TAG_NAMES.BIG, TAG_ID.BIG],\n [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n [TAG_NAMES.BODY, TAG_ID.BODY],\n [TAG_NAMES.BR, TAG_ID.BR],\n [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n [TAG_NAMES.CENTER, TAG_ID.CENTER],\n [TAG_NAMES.CODE, TAG_ID.CODE],\n [TAG_NAMES.COL, TAG_ID.COL],\n [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n [TAG_NAMES.DD, TAG_ID.DD],\n [TAG_NAMES.DESC, TAG_ID.DESC],\n [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n [TAG_NAMES.DIR, TAG_ID.DIR],\n [TAG_NAMES.DIV, TAG_ID.DIV],\n [TAG_NAMES.DL, TAG_ID.DL],\n [TAG_NAMES.DT, TAG_ID.DT],\n [TAG_NAMES.EM, TAG_ID.EM],\n [TAG_NAMES.EMBED, TAG_ID.EMBED],\n [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n [TAG_NAMES.FONT, TAG_ID.FONT],\n [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n [TAG_NAMES.FORM, TAG_ID.FORM],\n [TAG_NAMES.FRAME, TAG_ID.FRAME],\n [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n [TAG_NAMES.H1, TAG_ID.H1],\n [TAG_NAMES.H2, TAG_ID.H2],\n [TAG_NAMES.H3, TAG_ID.H3],\n [TAG_NAMES.H4, TAG_ID.H4],\n [TAG_NAMES.H5, TAG_ID.H5],\n [TAG_NAMES.H6, TAG_ID.H6],\n [TAG_NAMES.HEAD, TAG_ID.HEAD],\n [TAG_NAMES.HEADER, TAG_ID.HEADER],\n [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n [TAG_NAMES.HR, TAG_ID.HR],\n [TAG_NAMES.HTML, TAG_ID.HTML],\n [TAG_NAMES.I, TAG_ID.I],\n [TAG_NAMES.IMG, TAG_ID.IMG],\n [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n [TAG_NAMES.INPUT, TAG_ID.INPUT],\n [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n [TAG_NAMES.LABEL, TAG_ID.LABEL],\n [TAG_NAMES.LI, TAG_ID.LI],\n [TAG_NAMES.LINK, TAG_ID.LINK],\n [TAG_NAMES.LISTING, TAG_ID.LISTING],\n [TAG_NAMES.MAIN, TAG_ID.MAIN],\n [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n [TAG_NAMES.MATH, TAG_ID.MATH],\n [TAG_NAMES.MENU, TAG_ID.MENU],\n [TAG_NAMES.META, TAG_ID.META],\n [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n [TAG_NAMES.MI, TAG_ID.MI],\n [TAG_NAMES.MO, TAG_ID.MO],\n [TAG_NAMES.MN, TAG_ID.MN],\n [TAG_NAMES.MS, TAG_ID.MS],\n [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n [TAG_NAMES.NAV, TAG_ID.NAV],\n [TAG_NAMES.NOBR, TAG_ID.NOBR],\n [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n [TAG_NAMES.OL, TAG_ID.OL],\n [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n [TAG_NAMES.OPTION, TAG_ID.OPTION],\n [TAG_NAMES.P, TAG_ID.P],\n [TAG_NAMES.PARAM, TAG_ID.PARAM],\n [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n [TAG_NAMES.PRE, TAG_ID.PRE],\n [TAG_NAMES.RB, TAG_ID.RB],\n [TAG_NAMES.RP, TAG_ID.RP],\n [TAG_NAMES.RT, TAG_ID.RT],\n [TAG_NAMES.RTC, TAG_ID.RTC],\n [TAG_NAMES.RUBY, TAG_ID.RUBY],\n [TAG_NAMES.S, TAG_ID.S],\n [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n [TAG_NAMES.SECTION, TAG_ID.SECTION],\n [TAG_NAMES.SELECT, TAG_ID.SELECT],\n [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n [TAG_NAMES.SMALL, TAG_ID.SMALL],\n [TAG_NAMES.SPAN, TAG_ID.SPAN],\n [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n [TAG_NAMES.STRONG, TAG_ID.STRONG],\n [TAG_NAMES.STYLE, TAG_ID.STYLE],\n [TAG_NAMES.SUB, TAG_ID.SUB],\n [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n [TAG_NAMES.SUP, TAG_ID.SUP],\n [TAG_NAMES.TABLE, TAG_ID.TABLE],\n [TAG_NAMES.TBODY, TAG_ID.TBODY],\n [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n [TAG_NAMES.TD, TAG_ID.TD],\n [TAG_NAMES.TH, TAG_ID.TH],\n [TAG_NAMES.THEAD, TAG_ID.THEAD],\n [TAG_NAMES.TITLE, TAG_ID.TITLE],\n [TAG_NAMES.TR, TAG_ID.TR],\n [TAG_NAMES.TRACK, TAG_ID.TRACK],\n [TAG_NAMES.TT, TAG_ID.TT],\n [TAG_NAMES.U, TAG_ID.U],\n [TAG_NAMES.UL, TAG_ID.UL],\n [TAG_NAMES.SVG, TAG_ID.SVG],\n [TAG_NAMES.VAR, TAG_ID.VAR],\n [TAG_NAMES.WBR, TAG_ID.WBR],\n [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n var _a;\n return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n [NS.HTML]: new Set([\n $.ADDRESS,\n $.APPLET,\n $.AREA,\n $.ARTICLE,\n $.ASIDE,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.BUTTON,\n $.CAPTION,\n $.CENTER,\n $.COL,\n $.COLGROUP,\n $.DD,\n $.DETAILS,\n $.DIR,\n $.DIV,\n $.DL,\n $.DT,\n $.EMBED,\n $.FIELDSET,\n $.FIGCAPTION,\n $.FIGURE,\n $.FOOTER,\n $.FORM,\n $.FRAME,\n $.FRAMESET,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HEADER,\n $.HGROUP,\n $.HR,\n $.HTML,\n $.IFRAME,\n $.IMG,\n $.INPUT,\n $.LI,\n $.LINK,\n $.LISTING,\n $.MAIN,\n $.MARQUEE,\n $.MENU,\n $.META,\n $.NAV,\n $.NOEMBED,\n $.NOFRAMES,\n $.NOSCRIPT,\n $.OBJECT,\n $.OL,\n $.P,\n $.PARAM,\n $.PLAINTEXT,\n $.PRE,\n $.SCRIPT,\n $.SECTION,\n $.SELECT,\n $.SOURCE,\n $.STYLE,\n $.SUMMARY,\n $.TABLE,\n $.TBODY,\n $.TD,\n $.TEMPLATE,\n $.TEXTAREA,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TITLE,\n $.TR,\n $.TRACK,\n $.UL,\n $.WBR,\n $.XMP,\n ]),\n [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n [NS.XLINK]: new Set(),\n [NS.XML]: new Set(),\n [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n TAG_NAMES.STYLE,\n TAG_NAMES.SCRIPT,\n TAG_NAMES.XMP,\n TAG_NAMES.IFRAME,\n TAG_NAMES.NOEMBED,\n TAG_NAMES.NOFRAMES,\n TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map","import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n [0x80, 8364],\n [0x82, 8218],\n [0x83, 402],\n [0x84, 8222],\n [0x85, 8230],\n [0x86, 8224],\n [0x87, 8225],\n [0x88, 710],\n [0x89, 8240],\n [0x8a, 352],\n [0x8b, 8249],\n [0x8c, 338],\n [0x8e, 381],\n [0x91, 8216],\n [0x92, 8217],\n [0x93, 8220],\n [0x94, 8221],\n [0x95, 8226],\n [0x96, 8211],\n [0x97, 8212],\n [0x98, 732],\n [0x99, 8482],\n [0x9a, 353],\n [0x9b, 8250],\n [0x9c, 339],\n [0x9e, 382],\n [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n State[State[\"DATA\"] = 0] = \"DATA\";\n State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n DATA: State.DATA,\n RCDATA: State.RCDATA,\n RAWTEXT: State.RAWTEXT,\n SCRIPT_DATA: State.SCRIPT_DATA,\n PLAINTEXT: State.PLAINTEXT,\n CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n return cp + 32;\n}\nfunction isWhitespace(cp) {\n return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n constructor(options, handler) {\n this.options = options;\n this.handler = handler;\n this.paused = false;\n /** Ensures that the parsing loop isn't run multiple times at once. */\n this.inLoop = false;\n /**\n * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n * and that it is not an integration point for either MathML or HTML.\n *\n * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n */\n this.inForeignNode = false;\n this.lastStartTagName = '';\n this.active = false;\n this.state = State.DATA;\n this.returnState = State.DATA;\n this.charRefCode = -1;\n this.consumedAfterSnapshot = -1;\n this.currentCharacterToken = null;\n this.currentToken = null;\n this.currentAttr = { name: '', value: '' };\n this.preprocessor = new Preprocessor(handler);\n this.currentLocation = this.getCurrentLocation(-1);\n }\n //Errors\n _err(code) {\n var _a, _b;\n (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n }\n // NOTE: `offset` may never run across line boundaries.\n getCurrentLocation(offset) {\n if (!this.options.sourceCodeLocationInfo) {\n return null;\n }\n return {\n startLine: this.preprocessor.line,\n startCol: this.preprocessor.col - offset,\n startOffset: this.preprocessor.offset - offset,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n };\n }\n _runParsingLoop() {\n if (this.inLoop)\n return;\n this.inLoop = true;\n while (this.active && !this.paused) {\n this.consumedAfterSnapshot = 0;\n const cp = this._consume();\n if (!this._ensureHibernation()) {\n this._callState(cp);\n }\n }\n this.inLoop = false;\n }\n //API\n pause() {\n this.paused = true;\n }\n resume(writeCallback) {\n if (!this.paused) {\n throw new Error('Parser was already resumed');\n }\n this.paused = false;\n // Necessary for synchronous resume.\n if (this.inLoop)\n return;\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n write(chunk, isLastChunk, writeCallback) {\n this.active = true;\n this.preprocessor.write(chunk, isLastChunk);\n this._runParsingLoop();\n if (!this.paused) {\n writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n }\n }\n insertHtmlAtCurrentPos(chunk) {\n this.active = true;\n this.preprocessor.insertHtmlAtCurrentPos(chunk);\n this._runParsingLoop();\n }\n //Hibernation\n _ensureHibernation() {\n if (this.preprocessor.endOfChunkHit) {\n this._unconsume(this.consumedAfterSnapshot);\n this.active = false;\n return true;\n }\n return false;\n }\n //Consumption\n _consume() {\n this.consumedAfterSnapshot++;\n return this.preprocessor.advance();\n }\n _unconsume(count) {\n this.consumedAfterSnapshot -= count;\n this.preprocessor.retreat(count);\n }\n _reconsumeInState(state, cp) {\n this.state = state;\n this._callState(cp);\n }\n _advanceBy(count) {\n this.consumedAfterSnapshot += count;\n for (let i = 0; i < count; i++) {\n this.preprocessor.advance();\n }\n }\n _consumeSequenceIfMatch(pattern, caseSensitive) {\n if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n // We will already have consumed one character before calling this method.\n this._advanceBy(pattern.length - 1);\n return true;\n }\n return false;\n }\n //Token creation\n _createStartTagToken() {\n this.currentToken = {\n type: TokenType.START_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(1),\n };\n }\n _createEndTagToken() {\n this.currentToken = {\n type: TokenType.END_TAG,\n tagName: '',\n tagID: TAG_ID.UNKNOWN,\n selfClosing: false,\n ackSelfClosing: false,\n attrs: [],\n location: this.getCurrentLocation(2),\n };\n }\n _createCommentToken(offset) {\n this.currentToken = {\n type: TokenType.COMMENT,\n data: '',\n location: this.getCurrentLocation(offset),\n };\n }\n _createDoctypeToken(initialName) {\n this.currentToken = {\n type: TokenType.DOCTYPE,\n name: initialName,\n forceQuirks: false,\n publicId: null,\n systemId: null,\n location: this.currentLocation,\n };\n }\n _createCharacterToken(type, chars) {\n this.currentCharacterToken = {\n type,\n chars,\n location: this.currentLocation,\n };\n }\n //Tag attributes\n _createAttr(attrNameFirstCh) {\n this.currentAttr = {\n name: attrNameFirstCh,\n value: '',\n };\n this.currentLocation = this.getCurrentLocation(0);\n }\n _leaveAttrName() {\n var _a;\n var _b;\n const token = this.currentToken;\n if (getTokenAttr(token, this.currentAttr.name) === null) {\n token.attrs.push(this.currentAttr);\n if (token.location && this.currentLocation) {\n const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n attrLocations[this.currentAttr.name] = this.currentLocation;\n // Set end location\n this._leaveAttrValue();\n }\n }\n else {\n this._err(ERR.duplicateAttribute);\n }\n }\n _leaveAttrValue() {\n if (this.currentLocation) {\n this.currentLocation.endLine = this.preprocessor.line;\n this.currentLocation.endCol = this.preprocessor.col;\n this.currentLocation.endOffset = this.preprocessor.offset;\n }\n }\n //Token emission\n prepareToken(ct) {\n this._emitCurrentCharacterToken(ct.location);\n this.currentToken = null;\n if (ct.location) {\n ct.location.endLine = this.preprocessor.line;\n ct.location.endCol = this.preprocessor.col + 1;\n ct.location.endOffset = this.preprocessor.offset + 1;\n }\n this.currentLocation = this.getCurrentLocation(-1);\n }\n emitCurrentTagToken() {\n const ct = this.currentToken;\n this.prepareToken(ct);\n ct.tagID = getTagID(ct.tagName);\n if (ct.type === TokenType.START_TAG) {\n this.lastStartTagName = ct.tagName;\n this.handler.onStartTag(ct);\n }\n else {\n if (ct.attrs.length > 0) {\n this._err(ERR.endTagWithAttributes);\n }\n if (ct.selfClosing) {\n this._err(ERR.endTagWithTrailingSolidus);\n }\n this.handler.onEndTag(ct);\n }\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentComment(ct) {\n this.prepareToken(ct);\n this.handler.onComment(ct);\n this.preprocessor.dropParsedChunk();\n }\n emitCurrentDoctype(ct) {\n this.prepareToken(ct);\n this.handler.onDoctype(ct);\n this.preprocessor.dropParsedChunk();\n }\n _emitCurrentCharacterToken(nextLocation) {\n if (this.currentCharacterToken) {\n //NOTE: if we have a pending character token, make it's end location equal to the\n //current token's start location.\n if (nextLocation && this.currentCharacterToken.location) {\n this.currentCharacterToken.location.endLine = nextLocation.startLine;\n this.currentCharacterToken.location.endCol = nextLocation.startCol;\n this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n }\n switch (this.currentCharacterToken.type) {\n case TokenType.CHARACTER: {\n this.handler.onCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.handler.onNullCharacter(this.currentCharacterToken);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n break;\n }\n }\n this.currentCharacterToken = null;\n }\n }\n _emitEOFToken() {\n const location = this.getCurrentLocation(0);\n if (location) {\n location.endLine = location.startLine;\n location.endCol = location.startCol;\n location.endOffset = location.startOffset;\n }\n this._emitCurrentCharacterToken(location);\n this.handler.onEof({ type: TokenType.EOF, location });\n this.active = false;\n }\n //Characters emission\n //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n //If we have a sequence of characters that belong to the same group, the parser can process it\n //as a single solid character token.\n //So, there are 3 types of character tokens in parse5:\n //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n \\r\\t \\f')\n //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n _appendCharToCurrentCharacterToken(type, ch) {\n if (this.currentCharacterToken) {\n if (this.currentCharacterToken.type !== type) {\n this.currentLocation = this.getCurrentLocation(0);\n this._emitCurrentCharacterToken(this.currentLocation);\n this.preprocessor.dropParsedChunk();\n }\n else {\n this.currentCharacterToken.chars += ch;\n return;\n }\n }\n this._createCharacterToken(type, ch);\n }\n _emitCodePoint(cp) {\n const type = isWhitespace(cp)\n ? TokenType.WHITESPACE_CHARACTER\n : cp === $.NULL\n ? TokenType.NULL_CHARACTER\n : TokenType.CHARACTER;\n this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n }\n //NOTE: used when we emit characters explicitly.\n //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n _emitChars(ch) {\n this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n }\n // Character reference helpers\n _matchNamedCharacterReference(cp) {\n let result = null;\n let excess = 0;\n let withoutSemicolon = false;\n for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n if (i < 0)\n break;\n excess += 1;\n current = htmlDecodeTree[i];\n const masked = current & BinTrieFlags.VALUE_LENGTH;\n // If the branch is a value, store it and continue\n if (masked) {\n // The mask is the number of bytes of the value, including the current byte.\n const valueLength = (masked >> 14) - 1;\n // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n if (cp !== $.SEMICOLON &&\n this._isCharacterReferenceInAttribute() &&\n isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n result = [$.AMPERSAND];\n // Skip over the value.\n i += valueLength;\n }\n else {\n // If this is a surrogate pair, consume the next two bytes.\n result =\n valueLength === 0\n ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n : valueLength === 1\n ? [htmlDecodeTree[++i]]\n : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n excess = 0;\n withoutSemicolon = cp !== $.SEMICOLON;\n }\n if (valueLength === 0) {\n // If the value is zero-length, we're done.\n this._consume();\n break;\n }\n }\n }\n this._unconsume(excess);\n if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n }\n // We want to emit the error above on the code point after the entity.\n // We always consume one code point too many in the loop, and we wait to\n // unconsume it until after the error is emitted.\n this._unconsume(1);\n return result;\n }\n _isCharacterReferenceInAttribute() {\n return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n }\n _flushCodePointConsumedAsCharacterReference(cp) {\n if (this._isCharacterReferenceInAttribute()) {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n else {\n this._emitCodePoint(cp);\n }\n }\n // Calling states this way turns out to be much faster than any other approach.\n _callState(cp) {\n switch (this.state) {\n case State.DATA: {\n this._stateData(cp);\n break;\n }\n case State.RCDATA: {\n this._stateRcdata(cp);\n break;\n }\n case State.RAWTEXT: {\n this._stateRawtext(cp);\n break;\n }\n case State.SCRIPT_DATA: {\n this._stateScriptData(cp);\n break;\n }\n case State.PLAINTEXT: {\n this._statePlaintext(cp);\n break;\n }\n case State.TAG_OPEN: {\n this._stateTagOpen(cp);\n break;\n }\n case State.END_TAG_OPEN: {\n this._stateEndTagOpen(cp);\n break;\n }\n case State.TAG_NAME: {\n this._stateTagName(cp);\n break;\n }\n case State.RCDATA_LESS_THAN_SIGN: {\n this._stateRcdataLessThanSign(cp);\n break;\n }\n case State.RCDATA_END_TAG_OPEN: {\n this._stateRcdataEndTagOpen(cp);\n break;\n }\n case State.RCDATA_END_TAG_NAME: {\n this._stateRcdataEndTagName(cp);\n break;\n }\n case State.RAWTEXT_LESS_THAN_SIGN: {\n this._stateRawtextLessThanSign(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_OPEN: {\n this._stateRawtextEndTagOpen(cp);\n break;\n }\n case State.RAWTEXT_END_TAG_NAME: {\n this._stateRawtextEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n this._stateScriptDataLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_OPEN: {\n this._stateScriptDataEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_END_TAG_NAME: {\n this._stateScriptDataEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START: {\n this._stateScriptDataEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n this._stateScriptDataEscapeStartDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED: {\n this._stateScriptDataEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH: {\n this._stateScriptDataEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n this._stateScriptDataEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n this._stateScriptDataEscapedEndTagOpen(cp);\n break;\n }\n case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n this._stateScriptDataEscapedEndTagName(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n this._stateScriptDataDoubleEscapeStart(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n this._stateScriptDataDoubleEscaped(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n this._stateScriptDataDoubleEscapedDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n this._stateScriptDataDoubleEscapedDashDash(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n this._stateScriptDataDoubleEscapedLessThanSign(cp);\n break;\n }\n case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n this._stateScriptDataDoubleEscapeEnd(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_NAME: {\n this._stateBeforeAttributeName(cp);\n break;\n }\n case State.ATTRIBUTE_NAME: {\n this._stateAttributeName(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_NAME: {\n this._stateAfterAttributeName(cp);\n break;\n }\n case State.BEFORE_ATTRIBUTE_VALUE: {\n this._stateBeforeAttributeValue(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n this._stateAttributeValueDoubleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n this._stateAttributeValueSingleQuoted(cp);\n break;\n }\n case State.ATTRIBUTE_VALUE_UNQUOTED: {\n this._stateAttributeValueUnquoted(cp);\n break;\n }\n case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n this._stateAfterAttributeValueQuoted(cp);\n break;\n }\n case State.SELF_CLOSING_START_TAG: {\n this._stateSelfClosingStartTag(cp);\n break;\n }\n case State.BOGUS_COMMENT: {\n this._stateBogusComment(cp);\n break;\n }\n case State.MARKUP_DECLARATION_OPEN: {\n this._stateMarkupDeclarationOpen(cp);\n break;\n }\n case State.COMMENT_START: {\n this._stateCommentStart(cp);\n break;\n }\n case State.COMMENT_START_DASH: {\n this._stateCommentStartDash(cp);\n break;\n }\n case State.COMMENT: {\n this._stateComment(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN: {\n this._stateCommentLessThanSign(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG: {\n this._stateCommentLessThanSignBang(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n this._stateCommentLessThanSignBangDash(cp);\n break;\n }\n case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n this._stateCommentLessThanSignBangDashDash(cp);\n break;\n }\n case State.COMMENT_END_DASH: {\n this._stateCommentEndDash(cp);\n break;\n }\n case State.COMMENT_END: {\n this._stateCommentEnd(cp);\n break;\n }\n case State.COMMENT_END_BANG: {\n this._stateCommentEndBang(cp);\n break;\n }\n case State.DOCTYPE: {\n this._stateDoctype(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_NAME: {\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case State.DOCTYPE_NAME: {\n this._stateDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_NAME: {\n this._stateAfterDoctypeName(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n this._stateAfterDoctypePublicKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateBeforeDoctypePublicIdentifier(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypePublicIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n this._stateAfterDoctypePublicIdentifier(cp);\n break;\n }\n case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n this._stateAfterDoctypeSystemKeyword(cp);\n break;\n }\n case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateBeforeDoctypeSystemIdentifier(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n break;\n }\n case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n break;\n }\n case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n this._stateAfterDoctypeSystemIdentifier(cp);\n break;\n }\n case State.BOGUS_DOCTYPE: {\n this._stateBogusDoctype(cp);\n break;\n }\n case State.CDATA_SECTION: {\n this._stateCdataSection(cp);\n break;\n }\n case State.CDATA_SECTION_BRACKET: {\n this._stateCdataSectionBracket(cp);\n break;\n }\n case State.CDATA_SECTION_END: {\n this._stateCdataSectionEnd(cp);\n break;\n }\n case State.CHARACTER_REFERENCE: {\n this._stateCharacterReference(cp);\n break;\n }\n case State.NAMED_CHARACTER_REFERENCE: {\n this._stateNamedCharacterReference(cp);\n break;\n }\n case State.AMBIGUOUS_AMPERSAND: {\n this._stateAmbiguousAmpersand(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE: {\n this._stateNumericCharacterReference(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n this._stateHexademicalCharacterReferenceStart(cp);\n break;\n }\n case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n this._stateHexademicalCharacterReference(cp);\n break;\n }\n case State.DECIMAL_CHARACTER_REFERENCE: {\n this._stateDecimalCharacterReference(cp);\n break;\n }\n case State.NUMERIC_CHARACTER_REFERENCE_END: {\n this._stateNumericCharacterReferenceEnd(cp);\n break;\n }\n default: {\n throw new Error('Unknown state');\n }\n }\n }\n // State machine\n // Data state\n //------------------------------------------------------------------\n _stateData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.TAG_OPEN;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.DATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RCDATA state\n //------------------------------------------------------------------\n _stateRcdata(cp) {\n switch (cp) {\n case $.AMPERSAND: {\n this.returnState = State.RCDATA;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.RCDATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // RAWTEXT state\n //------------------------------------------------------------------\n _stateRawtext(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.RAWTEXT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data state\n //------------------------------------------------------------------\n _stateScriptData(cp) {\n switch (cp) {\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // PLAINTEXT state\n //------------------------------------------------------------------\n _statePlaintext(cp) {\n switch (cp) {\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Tag open state\n //------------------------------------------------------------------\n _stateTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createStartTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n this.state = State.MARKUP_DECLARATION_OPEN;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.END_TAG_OPEN;\n break;\n }\n case $.QUESTION_MARK: {\n this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n this._createCommentToken(1);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('<');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._emitChars('<');\n this.state = State.DATA;\n this._stateData(cp);\n }\n }\n }\n // End tag open state\n //------------------------------------------------------------------\n _stateEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this._createEndTagToken();\n this.state = State.TAG_NAME;\n this._stateTagName(cp);\n }\n else\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingEndTagName);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofBeforeTagName);\n this._emitChars('</');\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.invalidFirstCharacterOfTagName);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n }\n // Tag name state\n //------------------------------------------------------------------\n _stateTagName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.tagName += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // RCDATA less-than sign state\n //------------------------------------------------------------------\n _stateRcdataLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RCDATA_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RCDATA end tag open state\n //------------------------------------------------------------------\n _stateRcdataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RCDATA_END_TAG_NAME;\n this._stateRcdataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n handleSpecialEndTag(_cp) {\n if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n return !this._ensureHibernation();\n }\n this._createEndTagToken();\n const token = this.currentToken;\n token.tagName = this.lastStartTagName;\n const cp = this.preprocessor.peek(this.lastStartTagName.length);\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n return false;\n }\n case $.SOLIDUS: {\n this._advanceBy(this.lastStartTagName.length);\n this.state = State.SELF_CLOSING_START_TAG;\n return false;\n }\n case $.GREATER_THAN_SIGN: {\n this._advanceBy(this.lastStartTagName.length);\n this.emitCurrentTagToken();\n this.state = State.DATA;\n return false;\n }\n default: {\n return !this._ensureHibernation();\n }\n }\n }\n // RCDATA end tag name state\n //------------------------------------------------------------------\n _stateRcdataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RCDATA;\n this._stateRcdata(cp);\n }\n }\n // RAWTEXT less-than sign state\n //------------------------------------------------------------------\n _stateRawtextLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.RAWTEXT_END_TAG_OPEN;\n }\n else {\n this._emitChars('<');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag open state\n //------------------------------------------------------------------\n _stateRawtextEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.RAWTEXT_END_TAG_NAME;\n this._stateRawtextEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // RAWTEXT end tag name state\n //------------------------------------------------------------------\n _stateRawtextEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.RAWTEXT;\n this._stateRawtext(cp);\n }\n }\n // Script data less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataLessThanSign(cp) {\n switch (cp) {\n case $.SOLIDUS: {\n this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.SCRIPT_DATA_ESCAPE_START;\n this._emitChars('<!');\n break;\n }\n default: {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n }\n // Script data end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_END_TAG_NAME;\n this._stateScriptDataEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStart(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escape start dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapeStartDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n }\n else {\n this.state = State.SCRIPT_DATA;\n this._stateScriptData(cp);\n }\n }\n // Script data escaped state\n //------------------------------------------------------------------\n _stateScriptDataEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n }\n else if (isAsciiLetter(cp)) {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n this._stateScriptDataDoubleEscapeStart(cp);\n }\n else {\n this._emitChars('<');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag open state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagOpen(cp) {\n if (isAsciiLetter(cp)) {\n this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n this._stateScriptDataEscapedEndTagName(cp);\n }\n else {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data escaped end tag name state\n //------------------------------------------------------------------\n _stateScriptDataEscapedEndTagName(cp) {\n if (this.handleSpecialEndTag(cp)) {\n this._emitChars('</');\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escape start state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeStart(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_ESCAPED;\n this._stateScriptDataEscaped(cp);\n }\n }\n // Script data double escaped state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscaped(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped dash dash state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedDashDash(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this._emitChars('-');\n break;\n }\n case $.LESS_THAN_SIGN: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n this._emitChars('<');\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.SCRIPT_DATA;\n this._emitChars('>');\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitChars(REPLACEMENT_CHARACTER);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInScriptHtmlCommentLikeText);\n this._emitEOFToken();\n break;\n }\n default: {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._emitCodePoint(cp);\n }\n }\n }\n // Script data double escaped less-than sign state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapedLessThanSign(cp) {\n if (cp === $.SOLIDUS) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n this._emitChars('/');\n }\n else {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Script data double escape end state\n //------------------------------------------------------------------\n _stateScriptDataDoubleEscapeEnd(cp) {\n if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n this._emitCodePoint(cp);\n for (let i = 0; i < $$.SCRIPT.length; i++) {\n this._emitCodePoint(this._consume());\n }\n this.state = State.SCRIPT_DATA_ESCAPED;\n }\n else if (!this._ensureHibernation()) {\n this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n this._stateScriptDataDoubleEscaped(cp);\n }\n }\n // Before attribute name state\n //------------------------------------------------------------------\n _stateBeforeAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n this._createAttr('=');\n this.state = State.ATTRIBUTE_NAME;\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Attribute name state\n //------------------------------------------------------------------\n _stateAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED:\n case $.SOLIDUS:\n case $.GREATER_THAN_SIGN:\n case $.EOF: {\n this._leaveAttrName();\n this.state = State.AFTER_ATTRIBUTE_NAME;\n this._stateAfterAttributeName(cp);\n break;\n }\n case $.EQUALS_SIGN: {\n this._leaveAttrName();\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN: {\n this._err(ERR.unexpectedCharacterInAttributeName);\n this.currentAttr.name += String.fromCodePoint(cp);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.name += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After attribute name state\n //------------------------------------------------------------------\n _stateAfterAttributeName(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.SOLIDUS: {\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.EQUALS_SIGN: {\n this.state = State.BEFORE_ATTRIBUTE_VALUE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createAttr('');\n this.state = State.ATTRIBUTE_NAME;\n this._stateAttributeName(cp);\n }\n }\n }\n // Before attribute value state\n //------------------------------------------------------------------\n _stateBeforeAttributeValue(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingAttributeValue);\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n default: {\n this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n this._stateAttributeValueUnquoted(cp);\n }\n }\n }\n // Attribute value (double-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueDoubleQuoted(cp) {\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (single-quoted) state\n //------------------------------------------------------------------\n _stateAttributeValueSingleQuoted(cp) {\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // Attribute value (unquoted) state\n //------------------------------------------------------------------\n _stateAttributeValueUnquoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.AMPERSAND: {\n this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n this.state = State.CHARACTER_REFERENCE;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this.currentAttr.value += REPLACEMENT_CHARACTER;\n break;\n }\n case $.QUOTATION_MARK:\n case $.APOSTROPHE:\n case $.LESS_THAN_SIGN:\n case $.EQUALS_SIGN:\n case $.GRAVE_ACCENT: {\n this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n this.currentAttr.value += String.fromCodePoint(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this.currentAttr.value += String.fromCodePoint(cp);\n }\n }\n }\n // After attribute value (quoted) state\n //------------------------------------------------------------------\n _stateAfterAttributeValueQuoted(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this._leaveAttrValue();\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n break;\n }\n case $.SOLIDUS: {\n this._leaveAttrValue();\n this.state = State.SELF_CLOSING_START_TAG;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._leaveAttrValue();\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBetweenAttributes);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Self-closing start tag state\n //------------------------------------------------------------------\n _stateSelfClosingStartTag(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n const token = this.currentToken;\n token.selfClosing = true;\n this.state = State.DATA;\n this.emitCurrentTagToken();\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInTag);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedSolidusInTag);\n this.state = State.BEFORE_ATTRIBUTE_NAME;\n this._stateBeforeAttributeName(cp);\n }\n }\n }\n // Bogus comment state\n //------------------------------------------------------------------\n _stateBogusComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Markup declaration open state\n //------------------------------------------------------------------\n _stateMarkupDeclarationOpen(cp) {\n if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n this._createCommentToken($$.DASH_DASH.length + 1);\n this.state = State.COMMENT_START;\n }\n else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n this.state = State.DOCTYPE;\n }\n else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n if (this.inForeignNode) {\n this.state = State.CDATA_SECTION;\n }\n else {\n this._err(ERR.cdataInHtmlContent);\n this._createCommentToken($$.CDATA_START.length + 1);\n this.currentToken.data = '[CDATA[';\n this.state = State.BOGUS_COMMENT;\n }\n }\n //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.incorrectlyOpenedComment);\n this._createCommentToken(2);\n this.state = State.BOGUS_COMMENT;\n this._stateBogusComment(cp);\n }\n }\n // Comment start state\n //------------------------------------------------------------------\n _stateCommentStart(cp) {\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_START_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n const token = this.currentToken;\n this.emitCurrentComment(token);\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment start dash state\n //------------------------------------------------------------------\n _stateCommentStartDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptClosingOfEmptyComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment state\n //------------------------------------------------------------------\n _stateComment(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n this.state = State.COMMENT_LESS_THAN_SIGN;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.data += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += String.fromCodePoint(cp);\n }\n }\n }\n // Comment less-than sign state\n //------------------------------------------------------------------\n _stateCommentLessThanSign(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.EXCLAMATION_MARK: {\n token.data += '!';\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n break;\n }\n case $.LESS_THAN_SIGN: {\n token.data += '<';\n break;\n }\n default: {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment less-than sign bang state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBang(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n }\n else {\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n // Comment less-than sign bang dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDash(cp) {\n if (cp === $.HYPHEN_MINUS) {\n this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n }\n else {\n this.state = State.COMMENT_END_DASH;\n this._stateCommentEndDash(cp);\n }\n }\n // Comment less-than sign bang dash dash state\n //------------------------------------------------------------------\n _stateCommentLessThanSignBangDashDash(cp) {\n if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n this._err(ERR.nestedComment);\n }\n this.state = State.COMMENT_END;\n this._stateCommentEnd(cp);\n }\n // Comment end dash state\n //------------------------------------------------------------------\n _stateCommentEndDash(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n this.state = State.COMMENT_END;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '-';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end state\n //------------------------------------------------------------------\n _stateCommentEnd(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EXCLAMATION_MARK: {\n this.state = State.COMMENT_END_BANG;\n break;\n }\n case $.HYPHEN_MINUS: {\n token.data += '-';\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // Comment end bang state\n //------------------------------------------------------------------\n _stateCommentEndBang(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.HYPHEN_MINUS: {\n token.data += '--!';\n this.state = State.COMMENT_END_DASH;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.incorrectlyClosedComment);\n this.state = State.DATA;\n this.emitCurrentComment(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInComment);\n this.emitCurrentComment(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.data += '--!';\n this.state = State.COMMENT;\n this._stateComment(cp);\n }\n }\n }\n // DOCTYPE state\n //------------------------------------------------------------------\n _stateDoctype(cp) {\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingWhitespaceBeforeDoctypeName);\n this.state = State.BEFORE_DOCTYPE_NAME;\n this._stateBeforeDoctypeName(cp);\n }\n }\n }\n // Before DOCTYPE name state\n //------------------------------------------------------------------\n _stateBeforeDoctypeName(cp) {\n if (isAsciiUpper(cp)) {\n this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n this.state = State.DOCTYPE_NAME;\n }\n else\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n this._createDoctypeToken(REPLACEMENT_CHARACTER);\n this.state = State.DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeName);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n this._createDoctypeToken(null);\n const token = this.currentToken;\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._createDoctypeToken(String.fromCodePoint(cp));\n this.state = State.DOCTYPE_NAME;\n }\n }\n }\n // DOCTYPE name state\n //------------------------------------------------------------------\n _stateDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.AFTER_DOCTYPE_NAME;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.name += REPLACEMENT_CHARACTER;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n }\n }\n }\n // After DOCTYPE name state\n //------------------------------------------------------------------\n _stateAfterDoctypeName(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n }\n else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n }\n //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n //results are no longer valid and we will need to start over.\n else if (!this._ensureHibernation()) {\n this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n }\n // After DOCTYPE public keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.publicId = '';\n this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE public identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE public identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypePublicIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.publicId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypePublicIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.publicId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE public identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypePublicIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Between DOCTYPE public and system identifiers state\n //------------------------------------------------------------------\n _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // After DOCTYPE system keyword state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemKeyword(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.QUOTATION_MARK: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Before DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateBeforeDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.QUOTATION_MARK: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n break;\n }\n case $.APOSTROPHE: {\n token.systemId = '';\n this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.missingDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.DATA;\n this.emitCurrentDoctype(token);\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // DOCTYPE system identifier (double-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.QUOTATION_MARK: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // DOCTYPE system identifier (single-quoted) state\n //------------------------------------------------------------------\n _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.APOSTROPHE: {\n this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n token.systemId += REPLACEMENT_CHARACTER;\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this._err(ERR.abruptDoctypeSystemIdentifier);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n token.systemId += String.fromCodePoint(cp);\n }\n }\n }\n // After DOCTYPE system identifier state\n //------------------------------------------------------------------\n _stateAfterDoctypeSystemIdentifier(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.SPACE:\n case $.LINE_FEED:\n case $.TABULATION:\n case $.FORM_FEED: {\n // Ignore whitespace\n break;\n }\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInDoctype);\n token.forceQuirks = true;\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default: {\n this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n this.state = State.BOGUS_DOCTYPE;\n this._stateBogusDoctype(cp);\n }\n }\n }\n // Bogus DOCTYPE state\n //------------------------------------------------------------------\n _stateBogusDoctype(cp) {\n const token = this.currentToken;\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.emitCurrentDoctype(token);\n this.state = State.DATA;\n break;\n }\n case $.NULL: {\n this._err(ERR.unexpectedNullCharacter);\n break;\n }\n case $.EOF: {\n this.emitCurrentDoctype(token);\n this._emitEOFToken();\n break;\n }\n default:\n // Do nothing\n }\n }\n // CDATA section state\n //------------------------------------------------------------------\n _stateCdataSection(cp) {\n switch (cp) {\n case $.RIGHT_SQUARE_BRACKET: {\n this.state = State.CDATA_SECTION_BRACKET;\n break;\n }\n case $.EOF: {\n this._err(ERR.eofInCdata);\n this._emitEOFToken();\n break;\n }\n default: {\n this._emitCodePoint(cp);\n }\n }\n }\n // CDATA section bracket state\n //------------------------------------------------------------------\n _stateCdataSectionBracket(cp) {\n if (cp === $.RIGHT_SQUARE_BRACKET) {\n this.state = State.CDATA_SECTION_END;\n }\n else {\n this._emitChars(']');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n // CDATA section end state\n //------------------------------------------------------------------\n _stateCdataSectionEnd(cp) {\n switch (cp) {\n case $.GREATER_THAN_SIGN: {\n this.state = State.DATA;\n break;\n }\n case $.RIGHT_SQUARE_BRACKET: {\n this._emitChars(']');\n break;\n }\n default: {\n this._emitChars(']]');\n this.state = State.CDATA_SECTION;\n this._stateCdataSection(cp);\n }\n }\n }\n // Character reference state\n //------------------------------------------------------------------\n _stateCharacterReference(cp) {\n if (cp === $.NUMBER_SIGN) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE;\n }\n else if (isAsciiAlphaNumeric(cp)) {\n this.state = State.NAMED_CHARACTER_REFERENCE;\n this._stateNamedCharacterReference(cp);\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Named character reference state\n //------------------------------------------------------------------\n _stateNamedCharacterReference(cp) {\n const matchResult = this._matchNamedCharacterReference(cp);\n //NOTE: Matching can be abrupted by hibernation. In that case, match\n //results are no longer valid and we will need to start over.\n if (this._ensureHibernation()) {\n // Stay in the state, try again.\n }\n else if (matchResult) {\n for (let i = 0; i < matchResult.length; i++) {\n this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n }\n this.state = this.returnState;\n }\n else {\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this.state = State.AMBIGUOUS_AMPERSAND;\n }\n }\n // Ambiguos ampersand state\n //------------------------------------------------------------------\n _stateAmbiguousAmpersand(cp) {\n if (isAsciiAlphaNumeric(cp)) {\n this._flushCodePointConsumedAsCharacterReference(cp);\n }\n else {\n if (cp === $.SEMICOLON) {\n this._err(ERR.unknownNamedCharacterReference);\n }\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Numeric character reference state\n //------------------------------------------------------------------\n _stateNumericCharacterReference(cp) {\n this.charRefCode = 0;\n if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n }\n // Inlined decimal character reference start state\n else if (isAsciiDigit(cp)) {\n this.state = State.DECIMAL_CHARACTER_REFERENCE;\n this._stateDecimalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._reconsumeInState(this.returnState, cp);\n }\n }\n // Hexademical character reference start state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReferenceStart(cp) {\n if (isAsciiHexDigit(cp)) {\n this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n this._stateHexademicalCharacterReference(cp);\n }\n else {\n this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n this._unconsume(2);\n this.state = this.returnState;\n }\n }\n // Hexademical character reference state\n //------------------------------------------------------------------\n _stateHexademicalCharacterReference(cp) {\n if (isAsciiUpperHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n }\n else if (isAsciiLowerHexDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n }\n else if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Decimal character reference state\n //------------------------------------------------------------------\n _stateDecimalCharacterReference(cp) {\n if (isAsciiDigit(cp)) {\n this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n }\n else if (cp === $.SEMICOLON) {\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n }\n else {\n this._err(ERR.missingSemicolonAfterCharacterReference);\n this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n this._stateNumericCharacterReferenceEnd(cp);\n }\n }\n // Numeric character reference end state\n //------------------------------------------------------------------\n _stateNumericCharacterReferenceEnd(cp) {\n if (this.charRefCode === $.NULL) {\n this._err(ERR.nullCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (this.charRefCode > 1114111) {\n this._err(ERR.characterReferenceOutsideUnicodeRange);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isSurrogate(this.charRefCode)) {\n this._err(ERR.surrogateCharacterReference);\n this.charRefCode = $.REPLACEMENT_CHARACTER;\n }\n else if (isUndefinedCodePoint(this.charRefCode)) {\n this._err(ERR.noncharacterCharacterReference);\n }\n else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n this._err(ERR.controlCharacterReference);\n const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n if (replacement !== undefined) {\n this.charRefCode = replacement;\n }\n }\n this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n this._reconsumeInState(this.returnState, cp);\n }\n}\n//# sourceMappingURL=index.js.map","import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n ...IMPLICIT_END_TAG_REQUIRED,\n $.CAPTION,\n $.COLGROUP,\n $.TBODY,\n $.TD,\n $.TFOOT,\n $.TH,\n $.THEAD,\n $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n [$.APPLET, NS.HTML],\n [$.CAPTION, NS.HTML],\n [$.HTML, NS.HTML],\n [$.MARQUEE, NS.HTML],\n [$.OBJECT, NS.HTML],\n [$.TABLE, NS.HTML],\n [$.TD, NS.HTML],\n [$.TEMPLATE, NS.HTML],\n [$.TH, NS.HTML],\n [$.ANNOTATION_XML, NS.MATHML],\n [$.MI, NS.MATHML],\n [$.MN, NS.MATHML],\n [$.MO, NS.MATHML],\n [$.MS, NS.MATHML],\n [$.MTEXT, NS.MATHML],\n [$.DESC, NS.SVG],\n [$.FOREIGN_OBJECT, NS.SVG],\n [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n get currentTmplContentOrNode() {\n return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n }\n constructor(document, treeAdapter, handler) {\n this.treeAdapter = treeAdapter;\n this.handler = handler;\n this.items = [];\n this.tagIDs = [];\n this.stackTop = -1;\n this.tmplCount = 0;\n this.currentTagId = $.UNKNOWN;\n this.current = document;\n }\n //Index of element\n _indexOf(element) {\n return this.items.lastIndexOf(element, this.stackTop);\n }\n //Update current element\n _isInTemplate() {\n return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n }\n _updateCurrentElement() {\n this.current = this.items[this.stackTop];\n this.currentTagId = this.tagIDs[this.stackTop];\n }\n //Mutations\n push(element, tagID) {\n this.stackTop++;\n this.items[this.stackTop] = element;\n this.current = element;\n this.tagIDs[this.stackTop] = tagID;\n this.currentTagId = tagID;\n if (this._isInTemplate()) {\n this.tmplCount++;\n }\n this.handler.onItemPush(element, tagID, true);\n }\n pop() {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount--;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, true);\n }\n replace(oldElement, newElement) {\n const idx = this._indexOf(oldElement);\n this.items[idx] = newElement;\n if (idx === this.stackTop) {\n this.current = newElement;\n }\n }\n insertAfter(referenceElement, newElement, newElementID) {\n const insertionIdx = this._indexOf(referenceElement) + 1;\n this.items.splice(insertionIdx, 0, newElement);\n this.tagIDs.splice(insertionIdx, 0, newElementID);\n this.stackTop++;\n if (insertionIdx === this.stackTop) {\n this._updateCurrentElement();\n }\n this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n }\n popUntilTagNamePopped(tagName) {\n let targetIdx = this.stackTop + 1;\n do {\n targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n }\n shortenToLength(idx) {\n while (this.stackTop >= idx) {\n const popped = this.current;\n if (this.tmplCount > 0 && this._isInTemplate()) {\n this.tmplCount -= 1;\n }\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(popped, this.stackTop < idx);\n }\n }\n popUntilElementPopped(element) {\n const idx = this._indexOf(element);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilPopped(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx < 0 ? 0 : idx);\n }\n popUntilNumberedHeaderPopped() {\n this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n }\n popUntilTableCellPopped() {\n this.popUntilPopped(TABLE_CELLS, NS.HTML);\n }\n popAllUpToHtmlElement() {\n //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n //we perform this fast stack clean up.\n this.tmplCount = 0;\n this.shortenToLength(1);\n }\n _indexOfTagNames(tagNames, namespace) {\n for (let i = this.stackTop; i >= 0; i--) {\n if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n return i;\n }\n }\n return -1;\n }\n clearBackTo(tagNames, targetNS) {\n const idx = this._indexOfTagNames(tagNames, targetNS);\n this.shortenToLength(idx + 1);\n }\n clearBackToTableContext() {\n this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n }\n clearBackToTableBodyContext() {\n this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n }\n clearBackToTableRowContext() {\n this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n }\n remove(element) {\n const idx = this._indexOf(element);\n if (idx >= 0) {\n if (idx === this.stackTop) {\n this.pop();\n }\n else {\n this.items.splice(idx, 1);\n this.tagIDs.splice(idx, 1);\n this.stackTop--;\n this._updateCurrentElement();\n this.handler.onItemPop(element, false);\n }\n }\n }\n //Search\n tryPeekProperlyNestedBodyElement() {\n //Properly nested <body> element (should be second element in stack).\n return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n }\n contains(element) {\n return this._indexOf(element) > -1;\n }\n getCommonAncestor(element) {\n const elementIdx = this._indexOf(element) - 1;\n return elementIdx >= 0 ? this.items[elementIdx] : null;\n }\n isRootHtmlElementCurrent() {\n return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n }\n //Element in scope\n hasInScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasNumberedHeaderInScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (isNumberedHeader(tn) && ns === NS.HTML) {\n return true;\n }\n if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInListItemScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInButtonScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (tn === tagName && ns === NS.HTML) {\n return true;\n }\n if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n return false;\n }\n }\n return true;\n }\n hasInTableScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasTableBodyContextInTableScope() {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n return true;\n }\n if (tn === $.TABLE || tn === $.HTML) {\n return false;\n }\n }\n return true;\n }\n hasInSelectScope(tagName) {\n for (let i = this.stackTop; i >= 0; i--) {\n const tn = this.tagIDs[i];\n const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n if (ns !== NS.HTML) {\n continue;\n }\n if (tn === tagName) {\n return true;\n }\n if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n return false;\n }\n }\n return true;\n }\n //Implied end tags\n generateImpliedEndTags() {\n while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsThoroughly() {\n while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n generateImpliedEndTagsWithExclusion(exclusionId) {\n while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n this.pop();\n }\n }\n}\n//# sourceMappingURL=open-element-stack.js.map","//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n constructor(treeAdapter) {\n this.treeAdapter = treeAdapter;\n this.entries = [];\n this.bookmark = null;\n }\n //Noah Ark's condition\n //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n //lightweight heuristics without thorough attributes check.\n _getNoahArkConditionCandidates(newElement, neAttrs) {\n const candidates = [];\n const neAttrsLength = neAttrs.length;\n const neTagName = this.treeAdapter.getTagName(newElement);\n const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n for (let i = 0; i < this.entries.length; i++) {\n const entry = this.entries[i];\n if (entry.type === EntryType.Marker) {\n break;\n }\n const { element } = entry;\n if (this.treeAdapter.getTagName(element) === neTagName &&\n this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n const elementAttrs = this.treeAdapter.getAttrList(element);\n if (elementAttrs.length === neAttrsLength) {\n candidates.push({ idx: i, attrs: elementAttrs });\n }\n }\n }\n return candidates;\n }\n _ensureNoahArkCondition(newElement) {\n if (this.entries.length < NOAH_ARK_CAPACITY)\n return;\n const neAttrs = this.treeAdapter.getAttrList(newElement);\n const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n if (candidates.length < NOAH_ARK_CAPACITY)\n return;\n //NOTE: build attrs map for the new element, so we can perform fast lookups\n const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n let validCandidates = 0;\n //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n for (let i = 0; i < candidates.length; i++) {\n const candidate = candidates[i];\n // We know that `candidate.attrs.length === neAttrs.length`\n if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n validCandidates += 1;\n if (validCandidates >= NOAH_ARK_CAPACITY) {\n this.entries.splice(candidate.idx, 1);\n }\n }\n }\n }\n //Mutations\n insertMarker() {\n this.entries.unshift(MARKER);\n }\n pushElement(element, token) {\n this._ensureNoahArkCondition(element);\n this.entries.unshift({\n type: EntryType.Element,\n element,\n token,\n });\n }\n insertElementAfterBookmark(element, token) {\n const bookmarkIdx = this.entries.indexOf(this.bookmark);\n this.entries.splice(bookmarkIdx, 0, {\n type: EntryType.Element,\n element,\n token,\n });\n }\n removeEntry(entry) {\n const entryIndex = this.entries.indexOf(entry);\n if (entryIndex >= 0) {\n this.entries.splice(entryIndex, 1);\n }\n }\n /**\n * Clears the list of formatting elements up to the last marker.\n *\n * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n */\n clearToLastMarker() {\n const markerIdx = this.entries.indexOf(MARKER);\n if (markerIdx >= 0) {\n this.entries.splice(0, markerIdx + 1);\n }\n else {\n this.entries.length = 0;\n }\n }\n //Search\n getElementEntryInScopeWithTagName(tagName) {\n const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n return entry && entry.type === EntryType.Element ? entry : null;\n }\n getElementEntry(element) {\n return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n }\n}\n//# sourceMappingURL=formatting-element-list.js.map","import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n return {\n nodeName: '#text',\n value,\n parentNode: null,\n };\n}\nexport const defaultTreeAdapter = {\n //Node construction\n createDocument() {\n return {\n nodeName: '#document',\n mode: DOCUMENT_MODE.NO_QUIRKS,\n childNodes: [],\n };\n },\n createDocumentFragment() {\n return {\n nodeName: '#document-fragment',\n childNodes: [],\n };\n },\n createElement(tagName, namespaceURI, attrs) {\n return {\n nodeName: tagName,\n tagName,\n attrs,\n namespaceURI,\n childNodes: [],\n parentNode: null,\n };\n },\n createCommentNode(data) {\n return {\n nodeName: '#comment',\n data,\n parentNode: null,\n };\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n parentNode.childNodes.push(newNode);\n newNode.parentNode = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n parentNode.childNodes.splice(insertionIdx, 0, newNode);\n newNode.parentNode = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n templateElement.content = contentElement;\n },\n getTemplateContent(templateElement) {\n return templateElement.content;\n },\n setDocumentType(document, name, publicId, systemId) {\n const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n if (doctypeNode) {\n doctypeNode.name = name;\n doctypeNode.publicId = publicId;\n doctypeNode.systemId = systemId;\n }\n else {\n const node = {\n nodeName: '#documentType',\n name,\n publicId,\n systemId,\n parentNode: null,\n };\n defaultTreeAdapter.appendChild(document, node);\n }\n },\n setDocumentMode(document, mode) {\n document.mode = mode;\n },\n getDocumentMode(document) {\n return document.mode;\n },\n detachNode(node) {\n if (node.parentNode) {\n const idx = node.parentNode.childNodes.indexOf(node);\n node.parentNode.childNodes.splice(idx, 1);\n node.parentNode = null;\n }\n },\n insertText(parentNode, text) {\n if (parentNode.childNodes.length > 0) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n if (defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n return;\n }\n }\n defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n prevNode.value += text;\n }\n else {\n defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n for (let j = 0; j < attrs.length; j++) {\n if (!recipientAttrsMap.has(attrs[j].name)) {\n recipient.attrs.push(attrs[j]);\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.childNodes[0];\n },\n getChildNodes(node) {\n return node.childNodes;\n },\n getParentNode(node) {\n return node.parentNode;\n },\n getAttrList(element) {\n return element.attrs;\n },\n //Node data\n getTagName(element) {\n return element.tagName;\n },\n getNamespaceURI(element) {\n return element.namespaceURI;\n },\n getTextNodeContent(textNode) {\n return textNode.value;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n return doctypeNode.name;\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n return doctypeNode.publicId;\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n return doctypeNode.systemId;\n },\n //Node types\n isTextNode(node) {\n return node.nodeName === '#text';\n },\n isCommentNode(node) {\n return node.nodeName === '#comment';\n },\n isDocumentTypeNode(node) {\n return node.nodeName === '#documentType';\n },\n isElementNode(node) {\n return Object.prototype.hasOwnProperty.call(node, 'tagName');\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n },\n};\n//# sourceMappingURL=default.js.map","import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n '+//silmaril//dtd html pro v0r11 19970101//',\n '-//as//dtd html 3.0 aswedit + extensions//',\n '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n '-//ietf//dtd html 2.0 level 1//',\n '-//ietf//dtd html 2.0 level 2//',\n '-//ietf//dtd html 2.0 strict level 1//',\n '-//ietf//dtd html 2.0 strict level 2//',\n '-//ietf//dtd html 2.0 strict//',\n '-//ietf//dtd html 2.0//',\n '-//ietf//dtd html 2.1e//',\n '-//ietf//dtd html 3.0//',\n '-//ietf//dtd html 3.2 final//',\n '-//ietf//dtd html 3.2//',\n '-//ietf//dtd html 3//',\n '-//ietf//dtd html level 0//',\n '-//ietf//dtd html level 1//',\n '-//ietf//dtd html level 2//',\n '-//ietf//dtd html level 3//',\n '-//ietf//dtd html strict level 0//',\n '-//ietf//dtd html strict level 1//',\n '-//ietf//dtd html strict level 2//',\n '-//ietf//dtd html strict level 3//',\n '-//ietf//dtd html strict//',\n '-//ietf//dtd html//',\n '-//metrius//dtd metrius presentational//',\n '-//microsoft//dtd internet explorer 2.0 html strict//',\n '-//microsoft//dtd internet explorer 2.0 html//',\n '-//microsoft//dtd internet explorer 2.0 tables//',\n '-//microsoft//dtd internet explorer 3.0 html strict//',\n '-//microsoft//dtd internet explorer 3.0 html//',\n '-//microsoft//dtd internet explorer 3.0 tables//',\n '-//netscape comm. corp.//dtd html//',\n '-//netscape comm. corp.//dtd strict html//',\n \"-//o'reilly and associates//dtd html 2.0//\",\n \"-//o'reilly and associates//dtd html extended 1.0//\",\n \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n '-//sq//dtd html 2.0 hotmetal + extensions//',\n '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n '-//spyglass//dtd html 2.0 extended//',\n '-//sun microsystems corp.//dtd hotjava html//',\n '-//sun microsystems corp.//dtd hotjava strict html//',\n '-//w3c//dtd html 3 1995-03-24//',\n '-//w3c//dtd html 3.2 draft//',\n '-//w3c//dtd html 3.2 final//',\n '-//w3c//dtd html 3.2//',\n '-//w3c//dtd html 3.2s draft//',\n '-//w3c//dtd html 4.0 frameset//',\n '-//w3c//dtd html 4.0 transitional//',\n '-//w3c//dtd html experimental 19960712//',\n '-//w3c//dtd html experimental 970421//',\n '-//w3c//dtd w3 html//',\n '-//w3o//dtd w3 html 3.0//',\n '-//webtechs//dtd mozilla html 2.0//',\n '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n '-//w3o//dtd w3 html strict 3.0//en//',\n '-/w3c/dtd html 4.0 transitional/en',\n 'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n '-//w3c//dtd html 4.01 frameset//',\n '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n return (token.name === VALID_DOCTYPE_NAME &&\n token.publicId === null &&\n (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n if (token.name !== VALID_DOCTYPE_NAME) {\n return DOCUMENT_MODE.QUIRKS;\n }\n const { systemId } = token;\n if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let { publicId } = token;\n if (publicId !== null) {\n publicId = publicId.toLowerCase();\n if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.QUIRKS;\n }\n prefixes =\n systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n if (hasPrefix(publicId, prefixes)) {\n return DOCUMENT_MODE.LIMITED_QUIRKS;\n }\n }\n return DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceMappingURL=doctype.js.map","import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n TEXT_HTML: 'text/html',\n APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n 'attributeName',\n 'attributeType',\n 'baseFrequency',\n 'baseProfile',\n 'calcMode',\n 'clipPathUnits',\n 'diffuseConstant',\n 'edgeMode',\n 'filterUnits',\n 'glyphRef',\n 'gradientTransform',\n 'gradientUnits',\n 'kernelMatrix',\n 'kernelUnitLength',\n 'keyPoints',\n 'keySplines',\n 'keyTimes',\n 'lengthAdjust',\n 'limitingConeAngle',\n 'markerHeight',\n 'markerUnits',\n 'markerWidth',\n 'maskContentUnits',\n 'maskUnits',\n 'numOctaves',\n 'pathLength',\n 'patternContentUnits',\n 'patternTransform',\n 'patternUnits',\n 'pointsAtX',\n 'pointsAtY',\n 'pointsAtZ',\n 'preserveAlpha',\n 'preserveAspectRatio',\n 'primitiveUnits',\n 'refX',\n 'refY',\n 'repeatCount',\n 'repeatDur',\n 'requiredExtensions',\n 'requiredFeatures',\n 'specularConstant',\n 'specularExponent',\n 'spreadMethod',\n 'startOffset',\n 'stdDeviation',\n 'stitchTiles',\n 'surfaceScale',\n 'systemLanguage',\n 'tableValues',\n 'targetX',\n 'targetY',\n 'textLength',\n 'viewBox',\n 'viewTarget',\n 'xChannelSelector',\n 'yChannelSelector',\n 'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n 'altGlyph',\n 'altGlyphDef',\n 'altGlyphItem',\n 'animateColor',\n 'animateMotion',\n 'animateTransform',\n 'clipPath',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n 'foreignObject',\n 'glyphRef',\n 'linearGradient',\n 'radialGradient',\n 'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n $.B,\n $.BIG,\n $.BLOCKQUOTE,\n $.BODY,\n $.BR,\n $.CENTER,\n $.CODE,\n $.DD,\n $.DIV,\n $.DL,\n $.DT,\n $.EM,\n $.EMBED,\n $.H1,\n $.H2,\n $.H3,\n $.H4,\n $.H5,\n $.H6,\n $.HEAD,\n $.HR,\n $.I,\n $.IMG,\n $.LI,\n $.LISTING,\n $.MENU,\n $.META,\n $.NOBR,\n $.OL,\n $.P,\n $.PRE,\n $.RUBY,\n $.S,\n $.SMALL,\n $.SPAN,\n $.STRONG,\n $.STRIKE,\n $.SUB,\n $.SUP,\n $.TABLE,\n $.TT,\n $.U,\n $.UL,\n $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n const tn = startTagToken.tagID;\n const isFontWithAttrs = tn === $.FONT &&\n startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n break;\n }\n }\n}\nexport function adjustTokenSVGAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrName != null) {\n token.attrs[i].name = adjustedAttrName;\n }\n }\n}\nexport function adjustTokenXMLAttrs(token) {\n for (let i = 0; i < token.attrs.length; i++) {\n const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n if (adjustedAttrEntry) {\n token.attrs[i].prefix = adjustedAttrEntry.prefix;\n token.attrs[i].name = adjustedAttrEntry.name;\n token.attrs[i].namespace = adjustedAttrEntry.namespace;\n }\n }\n}\nexport function adjustTokenSVGTagName(token) {\n const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n if (adjustedTagName != null) {\n token.tagName = adjustedTagName;\n token.tagID = getTagID(token.tagName);\n }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n for (let i = 0; i < attrs.length; i++) {\n if (attrs[i].name === ATTRS.ENCODING) {\n const value = attrs[i].value.toLowerCase();\n return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n }\n }\n }\n return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map","import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n startLine: -1,\n startCol: -1,\n startOffset: -1,\n endLine: -1,\n endCol: -1,\n endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n scriptingEnabled: true,\n sourceCodeLocationInfo: false,\n treeAdapter: defaultTreeAdapter,\n onParseError: null,\n};\n//Parser\nexport class Parser {\n constructor(options, document, fragmentContext = null, scriptHandler = null) {\n this.fragmentContext = fragmentContext;\n this.scriptHandler = scriptHandler;\n this.currentToken = null;\n this.stopped = false;\n this.insertionMode = InsertionMode.INITIAL;\n this.originalInsertionMode = InsertionMode.INITIAL;\n this.headElement = null;\n this.formElement = null;\n /** Indicates that the current node is not an element in the HTML namespace */\n this.currentNotInHTML = false;\n /**\n * The template insertion mode stack is maintained from the left.\n * Ie. the topmost element will always have index 0.\n */\n this.tmplInsertionModeStack = [];\n this.pendingCharacterTokens = [];\n this.hasNonWhitespacePendingCharacterToken = false;\n this.framesetOk = true;\n this.skipNextNewLine = false;\n this.fosterParentingEnabled = false;\n this.options = {\n ...defaultParserOptions,\n ...options,\n };\n this.treeAdapter = this.options.treeAdapter;\n this.onParseError = this.options.onParseError;\n // Always enable location info if we report parse errors.\n if (this.onParseError) {\n this.options.sourceCodeLocationInfo = true;\n }\n this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n this.tokenizer = new Tokenizer(this.options, this);\n this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n }\n // API\n static parse(html, options) {\n const parser = new this(options);\n parser.tokenizer.write(html, true);\n return parser.document;\n }\n static getFragmentParser(fragmentContext, options) {\n const opts = {\n ...defaultParserOptions,\n ...options,\n };\n //NOTE: use a <template> element as the fragment context if no context element was provided,\n //so we will parse in a \"forgiving\" manner\n fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n //This is important for jsdom, where a new `document` cannot be created. This led to\n //fragment parsing messing with the main `document`.\n const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n const parser = new this(opts, documentMock, fragmentContext);\n if (parser.fragmentContextID === $.TEMPLATE) {\n parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n }\n parser._initTokenizerForFragmentParsing();\n parser._insertFakeRootElement();\n parser._resetInsertionMode();\n parser._findFormInFragmentContext();\n return parser;\n }\n getFragment() {\n const rootElement = this.treeAdapter.getFirstChild(this.document);\n const fragment = this.treeAdapter.createDocumentFragment();\n this._adoptNodes(rootElement, fragment);\n return fragment;\n }\n //Errors\n _err(token, code, beforeToken) {\n var _a;\n if (!this.onParseError)\n return;\n const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n const err = {\n code,\n startLine: loc.startLine,\n startCol: loc.startCol,\n startOffset: loc.startOffset,\n endLine: beforeToken ? loc.startLine : loc.endLine,\n endCol: beforeToken ? loc.startCol : loc.endCol,\n endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n };\n this.onParseError(err);\n }\n //Stack events\n onItemPush(node, tid, isTop) {\n var _a, _b;\n (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n if (isTop && this.openElements.stackTop > 0)\n this._setContextModes(node, tid);\n }\n onItemPop(node, isTop) {\n var _a, _b;\n if (this.options.sourceCodeLocationInfo) {\n this._setEndLocation(node, this.currentToken);\n }\n (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n if (isTop) {\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n this._setContextModes(current, currentTagId);\n }\n }\n _setContextModes(current, tid) {\n const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n this.currentNotInHTML = !isHTML;\n this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n }\n _switchToTextParsing(currentToken, nextTokenizerState) {\n this._insertElement(currentToken, NS.HTML);\n this.tokenizer.state = nextTokenizerState;\n this.originalInsertionMode = this.insertionMode;\n this.insertionMode = InsertionMode.TEXT;\n }\n switchToPlaintextParsing() {\n this.insertionMode = InsertionMode.TEXT;\n this.originalInsertionMode = InsertionMode.IN_BODY;\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n }\n //Fragment parsing\n _getAdjustedCurrentElement() {\n return this.openElements.stackTop === 0 && this.fragmentContext\n ? this.fragmentContext\n : this.openElements.current;\n }\n _findFormInFragmentContext() {\n let node = this.fragmentContext;\n while (node) {\n if (this.treeAdapter.getTagName(node) === TN.FORM) {\n this.formElement = node;\n break;\n }\n node = this.treeAdapter.getParentNode(node);\n }\n }\n _initTokenizerForFragmentParsing() {\n if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n return;\n }\n switch (this.fragmentContextID) {\n case $.TITLE:\n case $.TEXTAREA: {\n this.tokenizer.state = TokenizerMode.RCDATA;\n break;\n }\n case $.STYLE:\n case $.XMP:\n case $.IFRAME:\n case $.NOEMBED:\n case $.NOFRAMES:\n case $.NOSCRIPT: {\n this.tokenizer.state = TokenizerMode.RAWTEXT;\n break;\n }\n case $.SCRIPT: {\n this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n break;\n }\n case $.PLAINTEXT: {\n this.tokenizer.state = TokenizerMode.PLAINTEXT;\n break;\n }\n default:\n // Do nothing\n }\n }\n //Tree mutation\n _setDocumentType(token) {\n const name = token.name || '';\n const publicId = token.publicId || '';\n const systemId = token.systemId || '';\n this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n if (token.location) {\n const documentChildren = this.treeAdapter.getChildNodes(this.document);\n const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n if (docTypeNode) {\n this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n }\n }\n }\n _attachElementToTree(element, location) {\n if (this.options.sourceCodeLocationInfo) {\n const loc = location && {\n ...location,\n startTag: location,\n };\n this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n }\n if (this._shouldFosterParentOnInsertion()) {\n this._fosterParentElement(element);\n }\n else {\n const parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.appendChild(parent, element);\n }\n }\n _appendElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n }\n _insertElement(token, namespaceURI) {\n const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n this._attachElementToTree(element, token.location);\n this.openElements.push(element, token.tagID);\n }\n _insertFakeElement(tagName, tagID) {\n const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n this._attachElementToTree(element, null);\n this.openElements.push(element, tagID);\n }\n _insertTemplate(token) {\n const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n const content = this.treeAdapter.createDocumentFragment();\n this.treeAdapter.setTemplateContent(tmpl, content);\n this._attachElementToTree(tmpl, token.location);\n this.openElements.push(tmpl, token.tagID);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(content, null);\n }\n _insertFakeRootElement() {\n const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n if (this.options.sourceCodeLocationInfo)\n this.treeAdapter.setNodeSourceCodeLocation(element, null);\n this.treeAdapter.appendChild(this.openElements.current, element);\n this.openElements.push(element, $.HTML);\n }\n _appendCommentNode(token, parent) {\n const commentNode = this.treeAdapter.createCommentNode(token.data);\n this.treeAdapter.appendChild(parent, commentNode);\n if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n }\n }\n _insertCharacters(token) {\n let parent;\n let beforeElement;\n if (this._shouldFosterParentOnInsertion()) {\n ({ parent, beforeElement } = this._findFosterParentingLocation());\n if (beforeElement) {\n this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n }\n else {\n this.treeAdapter.insertText(parent, token.chars);\n }\n }\n else {\n parent = this.openElements.currentTmplContentOrNode;\n this.treeAdapter.insertText(parent, token.chars);\n }\n if (!token.location)\n return;\n const siblings = this.treeAdapter.getChildNodes(parent);\n const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n const textNode = siblings[textNodeIdx - 1];\n //NOTE: if we have a location assigned by another token, then just update the end position\n const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n if (tnLoc) {\n const { endLine, endCol, endOffset } = token.location;\n this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n }\n else if (this.options.sourceCodeLocationInfo) {\n this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n }\n }\n _adoptNodes(donor, recipient) {\n for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n this.treeAdapter.detachNode(child);\n this.treeAdapter.appendChild(recipient, child);\n }\n }\n _setEndLocation(element, closingToken) {\n if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n const ctLoc = closingToken.location;\n const tn = this.treeAdapter.getTagName(element);\n const endLoc = \n // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n ? {\n endTag: { ...ctLoc },\n endLine: ctLoc.endLine,\n endCol: ctLoc.endCol,\n endOffset: ctLoc.endOffset,\n }\n : {\n endLine: ctLoc.startLine,\n endCol: ctLoc.startCol,\n endOffset: ctLoc.startOffset,\n };\n this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n }\n }\n //Token processing\n shouldProcessStartTagTokenInForeignContent(token) {\n // Check that neither current === document, or ns === NS.HTML\n if (!this.currentNotInHTML)\n return false;\n let current;\n let currentTagId;\n if (this.openElements.stackTop === 0 && this.fragmentContext) {\n current = this.fragmentContext;\n currentTagId = this.fragmentContextID;\n }\n else {\n ({ current, currentTagId } = this.openElements);\n }\n if (token.tagID === $.SVG &&\n this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n return false;\n }\n return (\n // Check that `current` is not an integration point for HTML or MathML elements.\n this.tokenizer.inForeignNode ||\n // If it _is_ an integration point, then we might have to check that it is not an HTML\n // integration point.\n ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n }\n _processToken(token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n this.onCharacter(token);\n break;\n }\n case TokenType.NULL_CHARACTER: {\n this.onNullCharacter(token);\n break;\n }\n case TokenType.COMMENT: {\n this.onComment(token);\n break;\n }\n case TokenType.DOCTYPE: {\n this.onDoctype(token);\n break;\n }\n case TokenType.START_TAG: {\n this._processStartTag(token);\n break;\n }\n case TokenType.END_TAG: {\n this.onEndTag(token);\n break;\n }\n case TokenType.EOF: {\n this.onEof(token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n this.onWhitespaceCharacter(token);\n break;\n }\n }\n }\n //Integration points\n _isIntegrationPoint(tid, element, foreignNS) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n const attrs = this.treeAdapter.getAttrList(element);\n return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n }\n //Active formatting elements reconstruction\n _reconstructActiveFormattingElements() {\n const listLength = this.activeFormattingElements.entries.length;\n if (listLength) {\n const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n for (let i = unopenIdx; i >= 0; i--) {\n const entry = this.activeFormattingElements.entries[i];\n this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n entry.element = this.openElements.current;\n }\n }\n }\n //Close elements\n _closeTableCell() {\n this.openElements.generateImpliedEndTags();\n this.openElements.popUntilTableCellPopped();\n this.activeFormattingElements.clearToLastMarker();\n this.insertionMode = InsertionMode.IN_ROW;\n }\n _closePElement() {\n this.openElements.generateImpliedEndTagsWithExclusion($.P);\n this.openElements.popUntilTagNamePopped($.P);\n }\n //Insertion modes\n _resetInsertionMode() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n //Insertion mode reset map\n switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n case $.TR: {\n this.insertionMode = InsertionMode.IN_ROW;\n return;\n }\n case $.TBODY:\n case $.THEAD:\n case $.TFOOT: {\n this.insertionMode = InsertionMode.IN_TABLE_BODY;\n return;\n }\n case $.CAPTION: {\n this.insertionMode = InsertionMode.IN_CAPTION;\n return;\n }\n case $.COLGROUP: {\n this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n return;\n }\n case $.TABLE: {\n this.insertionMode = InsertionMode.IN_TABLE;\n return;\n }\n case $.BODY: {\n this.insertionMode = InsertionMode.IN_BODY;\n return;\n }\n case $.FRAMESET: {\n this.insertionMode = InsertionMode.IN_FRAMESET;\n return;\n }\n case $.SELECT: {\n this._resetInsertionModeForSelect(i);\n return;\n }\n case $.TEMPLATE: {\n this.insertionMode = this.tmplInsertionModeStack[0];\n return;\n }\n case $.HTML: {\n this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n return;\n }\n case $.TD:\n case $.TH: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_CELL;\n return;\n }\n break;\n }\n case $.HEAD: {\n if (i > 0) {\n this.insertionMode = InsertionMode.IN_HEAD;\n return;\n }\n break;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_BODY;\n }\n _resetInsertionModeForSelect(selectIdx) {\n if (selectIdx > 0) {\n for (let i = selectIdx - 1; i > 0; i--) {\n const tn = this.openElements.tagIDs[i];\n if (tn === $.TEMPLATE) {\n break;\n }\n else if (tn === $.TABLE) {\n this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n return;\n }\n }\n }\n this.insertionMode = InsertionMode.IN_SELECT;\n }\n //Foster parenting\n _isElementCausesFosterParenting(tn) {\n return TABLE_STRUCTURE_TAGS.has(tn);\n }\n _shouldFosterParentOnInsertion() {\n return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n }\n _findFosterParentingLocation() {\n for (let i = this.openElements.stackTop; i >= 0; i--) {\n const openElement = this.openElements.items[i];\n switch (this.openElements.tagIDs[i]) {\n case $.TEMPLATE: {\n if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n }\n break;\n }\n case $.TABLE: {\n const parent = this.treeAdapter.getParentNode(openElement);\n if (parent) {\n return { parent, beforeElement: openElement };\n }\n return { parent: this.openElements.items[i - 1], beforeElement: null };\n }\n default:\n // Do nothing\n }\n }\n return { parent: this.openElements.items[0], beforeElement: null };\n }\n _fosterParentElement(element) {\n const location = this._findFosterParentingLocation();\n if (location.beforeElement) {\n this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n }\n else {\n this.treeAdapter.appendChild(location.parent, element);\n }\n }\n //Special elements\n _isSpecialElement(element, id) {\n const ns = this.treeAdapter.getNamespaceURI(element);\n return SPECIAL_ELEMENTS[ns].has(id);\n }\n onCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n characterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE: {\n characterInBody(this, token);\n break;\n }\n case InsertionMode.TEXT:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n characterInTableText(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onNullCharacter(token) {\n this.skipNextNewLine = false;\n if (this.tokenizer.inForeignNode) {\n nullCharacterInForeignContent(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n tokenInColumnGroup(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n tokenAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onComment(token) {\n this.skipNextNewLine = false;\n if (this.currentNotInHTML) {\n appendComment(this, token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.INITIAL:\n case InsertionMode.BEFORE_HTML:\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n appendComment(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n appendCommentToRootHtmlElement(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n appendCommentToDocument(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onDoctype(token) {\n this.skipNextNewLine = false;\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n doctypeInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD:\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD: {\n this._err(token, ERR.misplacedDoctype);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onStartTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n this._processStartTag(token);\n if (token.selfClosing && !token.ackSelfClosing) {\n this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n }\n }\n /**\n * Processes a given start tag.\n *\n * `onStartTag` checks if a self-closing tag was recognized. When a token\n * is moved inbetween multiple insertion modes, this check for self-closing\n * could lead to false positives. To avoid this, `_processStartTag` is used\n * for nested calls.\n *\n * @param token The token to process.\n */\n _processStartTag(token) {\n if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n startTagInForeignContent(this, token);\n }\n else {\n this._startTagOutsideForeignContent(token);\n }\n }\n _startTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n startTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n startTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n startTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n startTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n startTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n startTagInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n startTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n startTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n startTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n startTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n startTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n startTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n startTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n startTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n startTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n startTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n startTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n startTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n startTagAfterAfterBody(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n startTagAfterAfterFrameset(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEndTag(token) {\n this.skipNextNewLine = false;\n this.currentToken = token;\n if (this.currentNotInHTML) {\n endTagInForeignContent(this, token);\n }\n else {\n this._endTagOutsideForeignContent(token);\n }\n }\n _endTagOutsideForeignContent(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n endTagBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n endTagBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n endTagInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n endTagInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n endTagAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY: {\n endTagInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n endTagInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE: {\n endTagInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_CAPTION: {\n endTagInCaption(this, token);\n break;\n }\n case InsertionMode.IN_COLUMN_GROUP: {\n endTagInColumnGroup(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_BODY: {\n endTagInTableBody(this, token);\n break;\n }\n case InsertionMode.IN_ROW: {\n endTagInRow(this, token);\n break;\n }\n case InsertionMode.IN_CELL: {\n endTagInCell(this, token);\n break;\n }\n case InsertionMode.IN_SELECT: {\n endTagInSelect(this, token);\n break;\n }\n case InsertionMode.IN_SELECT_IN_TABLE: {\n endTagInSelectInTable(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n endTagInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY: {\n endTagAfterBody(this, token);\n break;\n }\n case InsertionMode.IN_FRAMESET: {\n endTagInFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_FRAMESET: {\n endTagAfterFrameset(this, token);\n break;\n }\n case InsertionMode.AFTER_AFTER_BODY: {\n tokenAfterAfterBody(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onEof(token) {\n switch (this.insertionMode) {\n case InsertionMode.INITIAL: {\n tokenInInitialMode(this, token);\n break;\n }\n case InsertionMode.BEFORE_HTML: {\n tokenBeforeHtml(this, token);\n break;\n }\n case InsertionMode.BEFORE_HEAD: {\n tokenBeforeHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD: {\n tokenInHead(this, token);\n break;\n }\n case InsertionMode.IN_HEAD_NO_SCRIPT: {\n tokenInHeadNoScript(this, token);\n break;\n }\n case InsertionMode.AFTER_HEAD: {\n tokenAfterHead(this, token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE: {\n eofInBody(this, token);\n break;\n }\n case InsertionMode.TEXT: {\n eofInText(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n tokenInTableText(this, token);\n break;\n }\n case InsertionMode.IN_TEMPLATE: {\n eofInTemplate(this, token);\n break;\n }\n case InsertionMode.AFTER_BODY:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n stopParsing(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n onWhitespaceCharacter(token) {\n if (this.skipNextNewLine) {\n this.skipNextNewLine = false;\n if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n if (token.chars.length === 1) {\n return;\n }\n token.chars = token.chars.substr(1);\n }\n }\n if (this.tokenizer.inForeignNode) {\n this._insertCharacters(token);\n return;\n }\n switch (this.insertionMode) {\n case InsertionMode.IN_HEAD:\n case InsertionMode.IN_HEAD_NO_SCRIPT:\n case InsertionMode.AFTER_HEAD:\n case InsertionMode.TEXT:\n case InsertionMode.IN_COLUMN_GROUP:\n case InsertionMode.IN_SELECT:\n case InsertionMode.IN_SELECT_IN_TABLE:\n case InsertionMode.IN_FRAMESET:\n case InsertionMode.AFTER_FRAMESET: {\n this._insertCharacters(token);\n break;\n }\n case InsertionMode.IN_BODY:\n case InsertionMode.IN_CAPTION:\n case InsertionMode.IN_CELL:\n case InsertionMode.IN_TEMPLATE:\n case InsertionMode.AFTER_BODY:\n case InsertionMode.AFTER_AFTER_BODY:\n case InsertionMode.AFTER_AFTER_FRAMESET: {\n whitespaceCharacterInBody(this, token);\n break;\n }\n case InsertionMode.IN_TABLE:\n case InsertionMode.IN_TABLE_BODY:\n case InsertionMode.IN_ROW: {\n characterInTable(this, token);\n break;\n }\n case InsertionMode.IN_TABLE_TEXT: {\n whitespaceCharacterInTableText(this, token);\n break;\n }\n default:\n // Do nothing\n }\n }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n if (formattingElementEntry) {\n if (!p.openElements.contains(formattingElementEntry.element)) {\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n formattingElementEntry = null;\n }\n else if (!p.openElements.hasInScope(token.tagID)) {\n formattingElementEntry = null;\n }\n }\n else {\n genericEndTagInBody(p, token);\n }\n return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n let furthestBlock = null;\n let idx = p.openElements.stackTop;\n for (; idx >= 0; idx--) {\n const element = p.openElements.items[idx];\n if (element === formattingElementEntry.element) {\n break;\n }\n if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n furthestBlock = element;\n }\n }\n if (!furthestBlock) {\n p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n }\n return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n let lastElement = furthestBlock;\n let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n nextElement = p.openElements.getCommonAncestor(element);\n const elementEntry = p.activeFormattingElements.getElementEntry(element);\n const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n if (shouldRemoveFromOpenElements) {\n if (counterOverflow) {\n p.activeFormattingElements.removeEntry(elementEntry);\n }\n p.openElements.remove(element);\n }\n else {\n element = aaRecreateElementFromEntry(p, elementEntry);\n if (lastElement === furthestBlock) {\n p.activeFormattingElements.bookmark = elementEntry;\n }\n p.treeAdapter.detachNode(lastElement);\n p.treeAdapter.appendChild(element, lastElement);\n lastElement = element;\n }\n }\n return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n p.openElements.replace(elementEntry.element, newElement);\n elementEntry.element = newElement;\n return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n const tn = p.treeAdapter.getTagName(commonAncestor);\n const tid = getTagID(tn);\n if (p._isElementCausesFosterParenting(tid)) {\n p._fosterParentElement(lastElement);\n }\n else {\n const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n if (tid === $.TEMPLATE && ns === NS.HTML) {\n commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n }\n p.treeAdapter.appendChild(commonAncestor, lastElement);\n }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n const { token } = formattingElementEntry;\n const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n p._adoptNodes(furthestBlock, newElement);\n p.treeAdapter.appendChild(furthestBlock, newElement);\n p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n p.activeFormattingElements.removeEntry(formattingElementEntry);\n p.openElements.remove(formattingElementEntry.element);\n p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n if (!formattingElementEntry) {\n break;\n }\n const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n if (!furthestBlock) {\n break;\n }\n p.activeFormattingElements.bookmark = formattingElementEntry;\n const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n p.treeAdapter.detachNode(lastElement);\n if (commonAncestor)\n aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n p.stopped = true;\n // NOTE: Set end locations for elements that remain on the open element stack.\n if (token.location) {\n // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n // This is a problem, as we might overwrite their end position here.\n const target = p.fragmentContext ? 0 : 2;\n for (let i = p.openElements.stackTop; i >= target; i--) {\n p._setEndLocation(p.openElements.items[i], token);\n }\n // Handle `html` and `body`\n if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n const htmlElement = p.openElements.items[0];\n const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n if (htmlLocation && !htmlLocation.endTag) {\n p._setEndLocation(htmlElement, token);\n if (p.openElements.stackTop >= 1) {\n const bodyElement = p.openElements.items[1];\n const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n if (bodyLocation && !bodyLocation.endTag) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n }\n }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n p._setDocumentType(token);\n const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n if (!doctype.isConforming(token)) {\n p._err(token, ERR.nonConformingDoctype);\n }\n p.treeAdapter.setDocumentMode(p.document, mode);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n p._err(token, ERR.missingDoctype, true);\n p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n p.insertionMode = InsertionMode.BEFORE_HTML;\n p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n if (token.tagID === $.HTML) {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n }\n else {\n tokenBeforeHtml(p, token);\n }\n}\nfunction endTagBeforeHtml(p, token) {\n const tn = token.tagID;\n if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n tokenBeforeHtml(p, token);\n }\n}\nfunction tokenBeforeHtml(p, token) {\n p._insertFakeRootElement();\n p.insertionMode = InsertionMode.BEFORE_HEAD;\n p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.HEAD: {\n p._insertElement(token, NS.HTML);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n default: {\n tokenBeforeHead(p, token);\n }\n }\n}\nfunction endTagBeforeHead(p, token) {\n const tn = token.tagID;\n if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n tokenBeforeHead(p, token);\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenBeforeHead(p, token) {\n p._insertFakeElement(TN.HEAD, $.HEAD);\n p.headElement = p.openElements.current;\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TITLE: {\n p._switchToTextParsing(token, TokenizerMode.RCDATA);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n }\n else {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n }\n break;\n }\n case $.NOFRAMES:\n case $.STYLE: {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n break;\n }\n case $.SCRIPT: {\n p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n break;\n }\n case $.TEMPLATE: {\n p._insertTemplate(token);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TEMPLATE;\n p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenInHead(p, token);\n }\n }\n}\nfunction endTagInHead(p, token) {\n switch (token.tagID) {\n case $.HEAD: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n break;\n }\n case $.BODY:\n case $.BR:\n case $.HTML: {\n tokenInHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction templateEndTagInHead(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.generateImpliedEndTagsThoroughly();\n if (p.openElements.currentTagId !== $.TEMPLATE) {\n p._err(token, ERR.closingOfElementWithOpenChildElements);\n }\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n }\n else {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n}\nfunction tokenInHead(p, token) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.AFTER_HEAD;\n p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BASEFONT:\n case $.BGSOUND:\n case $.HEAD:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.STYLE: {\n startTagInHead(p, token);\n break;\n }\n case $.NOSCRIPT: {\n p._err(token, ERR.nestedNoscriptInHead);\n break;\n }\n default: {\n tokenInHeadNoScript(p, token);\n }\n }\n}\nfunction endTagInHeadNoScript(p, token) {\n switch (token.tagID) {\n case $.NOSCRIPT: {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n break;\n }\n case $.BR: {\n tokenInHeadNoScript(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenInHeadNoScript(p, token) {\n const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n p._err(token, errCode);\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_HEAD;\n p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.BODY: {\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_BODY;\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n break;\n }\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n p._err(token, ERR.abandonedHeadElementChild);\n p.openElements.push(p.headElement, $.HEAD);\n startTagInHead(p, token);\n p.openElements.remove(p.headElement);\n break;\n }\n case $.HEAD: {\n p._err(token, ERR.misplacedStartTagForHeadElement);\n break;\n }\n default: {\n tokenAfterHead(p, token);\n }\n }\n}\nfunction endTagAfterHead(p, token) {\n switch (token.tagID) {\n case $.BODY:\n case $.HTML:\n case $.BR: {\n tokenAfterHead(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n p._err(token, ERR.endTagWithoutMatchingOpenElement);\n }\n }\n}\nfunction tokenAfterHead(p, token) {\n p._insertFakeElement(TN.BODY, $.BODY);\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInBody(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInBody(p, token);\n break;\n }\n case TokenType.COMMENT: {\n appendComment(p, token);\n break;\n }\n case TokenType.START_TAG: {\n startTagInBody(p, token);\n break;\n }\n case TokenType.END_TAG: {\n endTagInBody(p, token);\n break;\n }\n case TokenType.EOF: {\n eofInBody(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction whitespaceCharacterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n if (p.openElements.tmplCount === 0) {\n p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n }\n}\nfunction bodyStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement && p.openElements.tmplCount === 0) {\n p.framesetOk = false;\n p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n }\n}\nfunction framesetStartTagInBody(p, token) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (p.framesetOk && bodyElement) {\n p.treeAdapter.detachNode(bodyElement);\n p.openElements.popAllUpToHtmlElement();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_FRAMESET;\n }\n}\nfunction addressStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n if (isNumberedHeader(p.openElements.currentTagId)) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n const inTemplate = p.openElements.tmplCount > 0;\n if (!p.formElement || inTemplate) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n if (!inTemplate) {\n p.formElement = p.openElements.current;\n }\n }\n}\nfunction listItemStartTagInBody(p, token) {\n p.framesetOk = false;\n const tn = token.tagID;\n for (let i = p.openElements.stackTop; i >= 0; i--) {\n const elementId = p.openElements.tagIDs[i];\n if ((tn === $.LI && elementId === $.LI) ||\n ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n p.openElements.popUntilTagNamePopped(elementId);\n break;\n }\n if (elementId !== $.ADDRESS &&\n elementId !== $.DIV &&\n elementId !== $.P &&\n p._isSpecialElement(p.openElements.items[i], elementId)) {\n break;\n }\n }\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.BUTTON)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.BUTTON);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n if (activeElementEntry) {\n callAdoptionAgency(p, token);\n p.openElements.remove(activeElementEntry.element);\n p.activeFormattingElements.removeEntry(activeElementEntry);\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n if (p.openElements.hasInScope($.NOBR)) {\n callAdoptionAgency(p, token);\n p._reconstructActiveFormattingElements();\n }\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.activeFormattingElements.insertMarker();\n p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n const inputType = getTokenAttr(token, ATTRS.TYPE);\n return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._appendElement(token, NS.HTML);\n if (!isHiddenInput(token)) {\n p.framesetOk = false;\n }\n token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._appendElement(token, NS.HTML);\n p.framesetOk = false;\n token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n token.tagName = TN.IMG;\n token.tagID = $.IMG;\n areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n p._insertElement(token, NS.HTML);\n //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n p.skipNextNewLine = true;\n p.tokenizer.state = TokenizerMode.RCDATA;\n p.originalInsertionMode = p.insertionMode;\n p.framesetOk = false;\n p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n if (p.openElements.hasInButtonScope($.P)) {\n p._closePElement();\n }\n p._reconstructActiveFormattingElements();\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n p.framesetOk = false;\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n p.framesetOk = false;\n p.insertionMode =\n p.insertionMode === InsertionMode.IN_TABLE ||\n p.insertionMode === InsertionMode.IN_CAPTION ||\n p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n p.insertionMode === InsertionMode.IN_ROW ||\n p.insertionMode === InsertionMode.IN_CELL\n ? InsertionMode.IN_SELECT_IN_TABLE\n : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTags();\n }\n p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n if (p.openElements.hasInScope($.RUBY)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n }\n p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenMathMLAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.MATHML);\n }\n else {\n p._insertElement(token, NS.MATHML);\n }\n token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n foreignContent.adjustTokenSVGAttrs(token);\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, NS.SVG);\n }\n else {\n p._insertElement(token, NS.SVG);\n }\n token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n p._reconstructActiveFormattingElements();\n p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n switch (token.tagID) {\n case $.I:\n case $.S:\n case $.B:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n bStartTagInBody(p, token);\n break;\n }\n case $.A: {\n aStartTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderStartTagInBody(p, token);\n break;\n }\n case $.P:\n case $.DL:\n case $.OL:\n case $.UL:\n case $.DIV:\n case $.DIR:\n case $.NAV:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.DETAILS:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.SECTION:\n case $.SUMMARY:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressStartTagInBody(p, token);\n break;\n }\n case $.LI:\n case $.DD:\n case $.DT: {\n listItemStartTagInBody(p, token);\n break;\n }\n case $.BR:\n case $.IMG:\n case $.WBR:\n case $.AREA:\n case $.EMBED:\n case $.KEYGEN: {\n areaStartTagInBody(p, token);\n break;\n }\n case $.HR: {\n hrStartTagInBody(p, token);\n break;\n }\n case $.RB:\n case $.RTC: {\n rbStartTagInBody(p, token);\n break;\n }\n case $.RT:\n case $.RP: {\n rtStartTagInBody(p, token);\n break;\n }\n case $.PRE:\n case $.LISTING: {\n preStartTagInBody(p, token);\n break;\n }\n case $.XMP: {\n xmpStartTagInBody(p, token);\n break;\n }\n case $.SVG: {\n svgStartTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlStartTagInBody(p, token);\n break;\n }\n case $.BASE:\n case $.LINK:\n case $.META:\n case $.STYLE:\n case $.TITLE:\n case $.SCRIPT:\n case $.BGSOUND:\n case $.BASEFONT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.BODY: {\n bodyStartTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInBody(p, token);\n break;\n }\n case $.NOBR: {\n nobrStartTagInBody(p, token);\n break;\n }\n case $.MATH: {\n mathStartTagInBody(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInBody(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInBody(p, token);\n break;\n }\n case $.PARAM:\n case $.TRACK:\n case $.SOURCE: {\n paramStartTagInBody(p, token);\n break;\n }\n case $.IMAGE: {\n imageStartTagInBody(p, token);\n break;\n }\n case $.BUTTON: {\n buttonStartTagInBody(p, token);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletStartTagInBody(p, token);\n break;\n }\n case $.IFRAME: {\n iframeStartTagInBody(p, token);\n break;\n }\n case $.SELECT: {\n selectStartTagInBody(p, token);\n break;\n }\n case $.OPTION:\n case $.OPTGROUP: {\n optgroupStartTagInBody(p, token);\n break;\n }\n case $.NOEMBED: {\n noembedStartTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n framesetStartTagInBody(p, token);\n break;\n }\n case $.TEXTAREA: {\n textareaStartTagInBody(p, token);\n break;\n }\n case $.NOSCRIPT: {\n if (p.options.scriptingEnabled) {\n noembedStartTagInBody(p, token);\n }\n else {\n genericStartTagInBody(p, token);\n }\n break;\n }\n case $.PLAINTEXT: {\n plaintextStartTagInBody(p, token);\n break;\n }\n case $.COL:\n case $.TH:\n case $.TD:\n case $.TR:\n case $.HEAD:\n case $.FRAME:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.CAPTION:\n case $.COLGROUP: {\n // Ignore token\n break;\n }\n default: {\n genericStartTagInBody(p, token);\n }\n }\n}\nfunction bodyEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n //NOTE: <body> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo) {\n const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n if (bodyElement) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n}\nfunction htmlEndTagInBody(p, token) {\n if (p.openElements.hasInScope($.BODY)) {\n p.insertionMode = InsertionMode.AFTER_BODY;\n endTagAfterBody(p, token);\n }\n}\nfunction addressEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction formEndTagInBody(p) {\n const inTemplate = p.openElements.tmplCount > 0;\n const { formElement } = p;\n if (!inTemplate) {\n p.formElement = null;\n }\n if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n p.openElements.generateImpliedEndTags();\n if (inTemplate) {\n p.openElements.popUntilTagNamePopped($.FORM);\n }\n else if (formElement) {\n p.openElements.remove(formElement);\n }\n }\n}\nfunction pEndTagInBody(p) {\n if (!p.openElements.hasInButtonScope($.P)) {\n p._insertFakeElement(TN.P, $.P);\n }\n p._closePElement();\n}\nfunction liEndTagInBody(p) {\n if (p.openElements.hasInListItemScope($.LI)) {\n p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n p.openElements.popUntilTagNamePopped($.LI);\n }\n}\nfunction ddEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tn);\n p.openElements.popUntilTagNamePopped(tn);\n }\n}\nfunction numberedHeaderEndTagInBody(p) {\n if (p.openElements.hasNumberedHeaderInScope()) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilNumberedHeaderPopped();\n }\n}\nfunction appletEndTagInBody(p, token) {\n const tn = token.tagID;\n if (p.openElements.hasInScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n }\n}\nfunction brEndTagInBody(p) {\n p._reconstructActiveFormattingElements();\n p._insertFakeElement(TN.BR, $.BR);\n p.openElements.pop();\n p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n const tn = token.tagName;\n const tid = token.tagID;\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n const elementId = p.openElements.tagIDs[i];\n // Compare the tag name here, as the tag might not be a known tag with an ID.\n if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n p.openElements.generateImpliedEndTagsWithExclusion(tid);\n if (p.openElements.stackTop >= i)\n p.openElements.shortenToLength(i);\n break;\n }\n if (p._isSpecialElement(element, elementId)) {\n break;\n }\n }\n}\nfunction endTagInBody(p, token) {\n switch (token.tagID) {\n case $.A:\n case $.B:\n case $.I:\n case $.S:\n case $.U:\n case $.EM:\n case $.TT:\n case $.BIG:\n case $.CODE:\n case $.FONT:\n case $.NOBR:\n case $.SMALL:\n case $.STRIKE:\n case $.STRONG: {\n callAdoptionAgency(p, token);\n break;\n }\n case $.P: {\n pEndTagInBody(p);\n break;\n }\n case $.DL:\n case $.UL:\n case $.OL:\n case $.DIR:\n case $.DIV:\n case $.NAV:\n case $.PRE:\n case $.MAIN:\n case $.MENU:\n case $.ASIDE:\n case $.BUTTON:\n case $.CENTER:\n case $.FIGURE:\n case $.FOOTER:\n case $.HEADER:\n case $.HGROUP:\n case $.DIALOG:\n case $.ADDRESS:\n case $.ARTICLE:\n case $.DETAILS:\n case $.SECTION:\n case $.SUMMARY:\n case $.LISTING:\n case $.FIELDSET:\n case $.BLOCKQUOTE:\n case $.FIGCAPTION: {\n addressEndTagInBody(p, token);\n break;\n }\n case $.LI: {\n liEndTagInBody(p);\n break;\n }\n case $.DD:\n case $.DT: {\n ddEndTagInBody(p, token);\n break;\n }\n case $.H1:\n case $.H2:\n case $.H3:\n case $.H4:\n case $.H5:\n case $.H6: {\n numberedHeaderEndTagInBody(p);\n break;\n }\n case $.BR: {\n brEndTagInBody(p);\n break;\n }\n case $.BODY: {\n bodyEndTagInBody(p, token);\n break;\n }\n case $.HTML: {\n htmlEndTagInBody(p, token);\n break;\n }\n case $.FORM: {\n formEndTagInBody(p);\n break;\n }\n case $.APPLET:\n case $.OBJECT:\n case $.MARQUEE: {\n appletEndTagInBody(p, token);\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default: {\n genericEndTagInBody(p, token);\n }\n }\n}\nfunction eofInBody(p, token) {\n if (p.tmplInsertionModeStack.length > 0) {\n eofInTemplate(p, token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n var _a;\n if (token.tagID === $.SCRIPT) {\n (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n }\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n p._err(token, ERR.eofInElementThatCanContainOnlyText);\n p.openElements.pop();\n p.insertionMode = p.originalInsertionMode;\n p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n p.pendingCharacterTokens.length = 0;\n p.hasNonWhitespacePendingCharacterToken = false;\n p.originalInsertionMode = p.insertionMode;\n p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n switch (token.type) {\n case TokenType.CHARACTER: {\n characterInTableText(p, token);\n break;\n }\n case TokenType.WHITESPACE_CHARACTER: {\n whitespaceCharacterInTableText(p, token);\n break;\n }\n // Ignore null\n }\n }\n else {\n tokenInTable(p, token);\n }\n}\nfunction captionStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p.activeFormattingElements.insertMarker();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n p.openElements.clearBackToTableContext();\n p._insertFakeElement(TN.TBODY, $.TBODY);\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n}\nfunction inputStartTagInTable(p, token) {\n if (isHiddenInput(token)) {\n p._appendElement(token, NS.HTML);\n }\n else {\n tokenInTable(p, token);\n }\n token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n if (!p.formElement && p.openElements.tmplCount === 0) {\n p._insertElement(token, NS.HTML);\n p.formElement = p.openElements.current;\n p.openElements.pop();\n }\n}\nfunction startTagInTable(p, token) {\n switch (token.tagID) {\n case $.TD:\n case $.TH:\n case $.TR: {\n tdStartTagInTable(p, token);\n break;\n }\n case $.STYLE:\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n case $.COL: {\n colStartTagInTable(p, token);\n break;\n }\n case $.FORM: {\n formStartTagInTable(p, token);\n break;\n }\n case $.TABLE: {\n tableStartTagInTable(p, token);\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n tbodyStartTagInTable(p, token);\n break;\n }\n case $.INPUT: {\n inputStartTagInTable(p, token);\n break;\n }\n case $.CAPTION: {\n captionStartTagInTable(p, token);\n break;\n }\n case $.COLGROUP: {\n colgroupStartTagInTable(p, token);\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction endTagInTable(p, token) {\n switch (token.tagID) {\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TABLE)) {\n p.openElements.popUntilTagNamePopped($.TABLE);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n tokenInTable(p, token);\n }\n }\n}\nfunction tokenInTable(p, token) {\n const savedFosterParentingState = p.fosterParentingEnabled;\n p.fosterParentingEnabled = true;\n // Process token in `In Body` mode\n modeInBody(p, token);\n p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n p.pendingCharacterTokens.push(token);\n p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n let i = 0;\n if (p.hasNonWhitespacePendingCharacterToken) {\n for (; i < p.pendingCharacterTokens.length; i++) {\n tokenInTable(p, p.pendingCharacterTokens[i]);\n }\n }\n else {\n for (; i < p.pendingCharacterTokens.length; i++) {\n p._insertCharacters(p.pendingCharacterTokens[i]);\n }\n }\n p.insertionMode = p.originalInsertionMode;\n p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCaption(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.CAPTION:\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.CAPTION)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped($.CAPTION);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_TABLE;\n if (tn === $.TABLE) {\n endTagInTable(p, token);\n }\n }\n break;\n }\n case $.BODY:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TBODY:\n case $.TD:\n case $.TFOOT:\n case $.TH:\n case $.THEAD:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.COL: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction endTagInColumnGroup(p, token) {\n switch (token.tagID) {\n case $.COLGROUP: {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n case $.COL: {\n // Ignore token\n break;\n }\n default: {\n tokenInColumnGroup(p, token);\n }\n }\n}\nfunction tokenInColumnGroup(p, token) {\n if (p.openElements.currentTagId === $.COLGROUP) {\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n p._processToken(token);\n }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n switch (token.tagID) {\n case $.TR: {\n p.openElements.clearBackToTableBodyContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_ROW;\n break;\n }\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableBodyContext();\n p._insertFakeElement(TN.TR, $.TR);\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInTableBody(p, token) {\n const tn = token.tagID;\n switch (token.tagID) {\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasTableBodyContextInTableScope()) {\n p.openElements.clearBackToTableBodyContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE;\n endTagInTable(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH:\n case $.TR: {\n // Ignore token\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n switch (token.tagID) {\n case $.TH:\n case $.TD: {\n p.openElements.clearBackToTableRowContext();\n p._insertElement(token, NS.HTML);\n p.insertionMode = InsertionMode.IN_CELL;\n p.activeFormattingElements.insertMarker();\n break;\n }\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n }\n break;\n }\n default: {\n startTagInTable(p, token);\n }\n }\n}\nfunction endTagInRow(p, token) {\n switch (token.tagID) {\n case $.TR: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n }\n break;\n }\n case $.TABLE: {\n if (p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n p.openElements.clearBackToTableRowContext();\n p.openElements.pop();\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n endTagInTableBody(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML:\n case $.TD:\n case $.TH: {\n // Ignore end tag\n break;\n }\n default: {\n endTagInTable(p, token);\n }\n }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n const tn = token.tagID;\n if (TABLE_VOID_ELEMENTS.has(tn)) {\n if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n p._closeTableCell();\n startTagInRow(p, token);\n }\n }\n else {\n startTagInBody(p, token);\n }\n}\nfunction endTagInCell(p, token) {\n const tn = token.tagID;\n switch (tn) {\n case $.TD:\n case $.TH: {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.generateImpliedEndTags();\n p.openElements.popUntilTagNamePopped(tn);\n p.activeFormattingElements.clearToLastMarker();\n p.insertionMode = InsertionMode.IN_ROW;\n }\n break;\n }\n case $.TABLE:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD:\n case $.TR: {\n if (p.openElements.hasInTableScope(tn)) {\n p._closeTableCell();\n endTagInRow(p, token);\n }\n break;\n }\n case $.BODY:\n case $.CAPTION:\n case $.COL:\n case $.COLGROUP:\n case $.HTML: {\n // Ignore token\n break;\n }\n default: {\n endTagInBody(p, token);\n }\n }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.OPTGROUP: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.INPUT:\n case $.KEYGEN:\n case $.TEXTAREA:\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n if (token.tagID !== $.SELECT) {\n p._processStartTag(token);\n }\n }\n break;\n }\n case $.SCRIPT:\n case $.TEMPLATE: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInSelect(p, token) {\n switch (token.tagID) {\n case $.OPTGROUP: {\n if (p.openElements.stackTop > 0 &&\n p.openElements.currentTagId === $.OPTION &&\n p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n p.openElements.pop();\n }\n if (p.openElements.currentTagId === $.OPTGROUP) {\n p.openElements.pop();\n }\n break;\n }\n case $.OPTION: {\n if (p.openElements.currentTagId === $.OPTION) {\n p.openElements.pop();\n }\n break;\n }\n case $.SELECT: {\n if (p.openElements.hasInSelectScope($.SELECT)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n }\n break;\n }\n case $.TEMPLATE: {\n templateEndTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p._processStartTag(token);\n }\n else {\n startTagInSelect(p, token);\n }\n}\nfunction endTagInSelectInTable(p, token) {\n const tn = token.tagID;\n if (tn === $.CAPTION ||\n tn === $.TABLE ||\n tn === $.TBODY ||\n tn === $.TFOOT ||\n tn === $.THEAD ||\n tn === $.TR ||\n tn === $.TD ||\n tn === $.TH) {\n if (p.openElements.hasInTableScope(tn)) {\n p.openElements.popUntilTagNamePopped($.SELECT);\n p._resetInsertionMode();\n p.onEndTag(token);\n }\n }\n else {\n endTagInSelect(p, token);\n }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n switch (token.tagID) {\n // First, handle tags that can start without a mode change\n case $.BASE:\n case $.BASEFONT:\n case $.BGSOUND:\n case $.LINK:\n case $.META:\n case $.NOFRAMES:\n case $.SCRIPT:\n case $.STYLE:\n case $.TEMPLATE:\n case $.TITLE: {\n startTagInHead(p, token);\n break;\n }\n // Re-process the token in the appropriate mode\n case $.CAPTION:\n case $.COLGROUP:\n case $.TBODY:\n case $.TFOOT:\n case $.THEAD: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n p.insertionMode = InsertionMode.IN_TABLE;\n startTagInTable(p, token);\n break;\n }\n case $.COL: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n startTagInColumnGroup(p, token);\n break;\n }\n case $.TR: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n p.insertionMode = InsertionMode.IN_TABLE_BODY;\n startTagInTableBody(p, token);\n break;\n }\n case $.TD:\n case $.TH: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n p.insertionMode = InsertionMode.IN_ROW;\n startTagInRow(p, token);\n break;\n }\n default: {\n p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n p.insertionMode = InsertionMode.IN_BODY;\n startTagInBody(p, token);\n }\n }\n}\nfunction endTagInTemplate(p, token) {\n if (token.tagID === $.TEMPLATE) {\n templateEndTagInHead(p, token);\n }\n}\nfunction eofInTemplate(p, token) {\n if (p.openElements.tmplCount > 0) {\n p.openElements.popUntilTagNamePopped($.TEMPLATE);\n p.activeFormattingElements.clearToLastMarker();\n p.tmplInsertionModeStack.shift();\n p._resetInsertionMode();\n p.onEof(token);\n }\n else {\n stopParsing(p, token);\n }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction endTagAfterBody(p, token) {\n var _a;\n if (token.tagID === $.HTML) {\n if (!p.fragmentContext) {\n p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n }\n //NOTE: <html> is never popped from the stack, so we need to updated\n //the end location explicitly.\n if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n p._setEndLocation(p.openElements.items[0], token);\n // Update the body element, if it doesn't have an end tag\n const bodyElement = p.openElements.items[1];\n if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n p._setEndLocation(bodyElement, token);\n }\n }\n }\n else {\n tokenAfterBody(p, token);\n }\n}\nfunction tokenAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.FRAMESET: {\n p._insertElement(token, NS.HTML);\n break;\n }\n case $.FRAME: {\n p._appendElement(token, NS.HTML);\n token.ackSelfClosing = true;\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagInFrameset(p, token) {\n if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n p.openElements.pop();\n if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n p.insertionMode = InsertionMode.AFTER_FRAMESET;\n }\n }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\nfunction endTagAfterFrameset(p, token) {\n if (token.tagID === $.HTML) {\n p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n if (token.tagID === $.HTML) {\n startTagInBody(p, token);\n }\n else {\n tokenAfterAfterBody(p, token);\n }\n}\nfunction tokenAfterAfterBody(p, token) {\n p.insertionMode = InsertionMode.IN_BODY;\n modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n switch (token.tagID) {\n case $.HTML: {\n startTagInBody(p, token);\n break;\n }\n case $.NOFRAMES: {\n startTagInHead(p, token);\n break;\n }\n default:\n // Do nothing\n }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n token.chars = unicode.REPLACEMENT_CHARACTER;\n p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n p._insertCharacters(token);\n p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n p.openElements.pop();\n }\n}\nfunction startTagInForeignContent(p, token) {\n if (foreignContent.causesExit(token)) {\n popUntilHtmlOrIntegrationPoint(p);\n p._startTagOutsideForeignContent(token);\n }\n else {\n const current = p._getAdjustedCurrentElement();\n const currentNs = p.treeAdapter.getNamespaceURI(current);\n if (currentNs === NS.MATHML) {\n foreignContent.adjustTokenMathMLAttrs(token);\n }\n else if (currentNs === NS.SVG) {\n foreignContent.adjustTokenSVGTagName(token);\n foreignContent.adjustTokenSVGAttrs(token);\n }\n foreignContent.adjustTokenXMLAttrs(token);\n if (token.selfClosing) {\n p._appendElement(token, currentNs);\n }\n else {\n p._insertElement(token, currentNs);\n }\n token.ackSelfClosing = true;\n }\n}\nfunction endTagInForeignContent(p, token) {\n if (token.tagID === $.P || token.tagID === $.BR) {\n popUntilHtmlOrIntegrationPoint(p);\n p._endTagOutsideForeignContent(token);\n return;\n }\n for (let i = p.openElements.stackTop; i > 0; i--) {\n const element = p.openElements.items[i];\n if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n p._endTagOutsideForeignContent(token);\n break;\n }\n const tagName = p.treeAdapter.getTagName(element);\n if (tagName.toLowerCase() === token.tagName) {\n //NOTE: update the token tag name for `_setEndLocation`.\n token.tagName = tagName;\n p.openElements.shortenToLength(i);\n break;\n }\n }\n}\n//# sourceMappingURL=index.js.map","import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n $.AREA,\n $.BASE,\n $.BASEFONT,\n $.BGSOUND,\n $.BR,\n $.COL,\n $.EMBED,\n $.FRAME,\n $.HR,\n $.IMG,\n $.INPUT,\n $.KEYGEN,\n $.LINK,\n $.META,\n $.PARAM,\n $.SOURCE,\n $.TRACK,\n $.WBR,\n]);\nfunction isVoidElement(node, options) {\n return (options.treeAdapter.isElementNode(node) &&\n options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n const opts = { ...defaultOpts, ...options };\n if (isVoidElement(node, opts)) {\n return '';\n }\n return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n const opts = { ...defaultOpts, ...options };\n return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n let html = '';\n // Get container of the child nodes\n const container = options.treeAdapter.isElementNode(parentNode) &&\n options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n ? options.treeAdapter.getTemplateContent(parentNode)\n : parentNode;\n const childNodes = options.treeAdapter.getChildNodes(container);\n if (childNodes) {\n for (const currentNode of childNodes) {\n html += serializeNode(currentNode, options);\n }\n }\n return html;\n}\nfunction serializeNode(node, options) {\n if (options.treeAdapter.isElementNode(node)) {\n return serializeElement(node, options);\n }\n if (options.treeAdapter.isTextNode(node)) {\n return serializeTextNode(node, options);\n }\n if (options.treeAdapter.isCommentNode(node)) {\n return serializeCommentNode(node, options);\n }\n if (options.treeAdapter.isDocumentTypeNode(node)) {\n return serializeDocumentTypeNode(node, options);\n }\n // Return an empty string for unknown nodes\n return '';\n}\nfunction serializeElement(node, options) {\n const tn = options.treeAdapter.getTagName(node);\n return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n let html = '';\n for (const attr of treeAdapter.getAttrList(node)) {\n html += ' ';\n if (!attr.namespace) {\n html += attr.name;\n }\n else\n switch (attr.namespace) {\n case NS.XML: {\n html += `xml:${attr.name}`;\n break;\n }\n case NS.XMLNS: {\n if (attr.name !== 'xmlns') {\n html += 'xmlns:';\n }\n html += attr.name;\n break;\n }\n case NS.XLINK: {\n html += `xlink:${attr.name}`;\n break;\n }\n default: {\n html += `${attr.prefix}:${attr.name}`;\n }\n }\n html += `=\"${escapeAttribute(attr.value)}\"`;\n }\n return html;\n}\nfunction serializeTextNode(node, options) {\n const { treeAdapter } = options;\n const content = treeAdapter.getTextNodeContent(node);\n const parent = treeAdapter.getParentNode(node);\n const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n return parentTn &&\n treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n hasUnescapedText(parentTn, options.scriptingEnabled)\n ? content\n : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceMappingURL=index.js.map","/** 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 { html } from 'parse5';\nimport { Element, Document, ProcessingInstruction, Comment, Text, isDirective, isText, isComment, isTag, } from 'domhandler';\nfunction createTextNode(value) {\n return new Text(value);\n}\nfunction enquoteDoctypeId(id) {\n const quote = id.includes('\"') ? \"'\" : '\"';\n return quote + id + quote;\n}\n/** @internal */\nexport function serializeDoctypeContent(name, publicId, systemId) {\n let str = '!DOCTYPE ';\n if (name) {\n str += name;\n }\n if (publicId) {\n str += ` PUBLIC ${enquoteDoctypeId(publicId)}`;\n }\n else if (systemId) {\n str += ' SYSTEM';\n }\n if (systemId) {\n str += ` ${enquoteDoctypeId(systemId)}`;\n }\n return str;\n}\nexport const adapter = {\n // Re-exports from domhandler\n isCommentNode: isComment,\n isElementNode: isTag,\n isTextNode: isText,\n //Node construction\n createDocument() {\n const node = new Document([]);\n node['x-mode'] = html.DOCUMENT_MODE.NO_QUIRKS;\n return node;\n },\n createDocumentFragment() {\n return new Document([]);\n },\n createElement(tagName, namespaceURI, attrs) {\n const attribs = Object.create(null);\n const attribsNamespace = Object.create(null);\n const attribsPrefix = Object.create(null);\n for (let i = 0; i < attrs.length; i++) {\n const attrName = attrs[i].name;\n attribs[attrName] = attrs[i].value;\n attribsNamespace[attrName] = attrs[i].namespace;\n attribsPrefix[attrName] = attrs[i].prefix;\n }\n const node = new Element(tagName, attribs, []);\n node.namespace = namespaceURI;\n node['x-attribsNamespace'] = attribsNamespace;\n node['x-attribsPrefix'] = attribsPrefix;\n return node;\n },\n createCommentNode(data) {\n return new Comment(data);\n },\n //Tree mutation\n appendChild(parentNode, newNode) {\n const prev = parentNode.children[parentNode.children.length - 1];\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n parentNode.children.push(newNode);\n newNode.parent = parentNode;\n },\n insertBefore(parentNode, newNode, referenceNode) {\n const insertionIdx = parentNode.children.indexOf(referenceNode);\n const { prev } = referenceNode;\n if (prev) {\n prev.next = newNode;\n newNode.prev = prev;\n }\n referenceNode.prev = newNode;\n newNode.next = referenceNode;\n parentNode.children.splice(insertionIdx, 0, newNode);\n newNode.parent = parentNode;\n },\n setTemplateContent(templateElement, contentElement) {\n adapter.appendChild(templateElement, contentElement);\n },\n getTemplateContent(templateElement) {\n return templateElement.children[0];\n },\n setDocumentType(document, name, publicId, systemId) {\n const data = serializeDoctypeContent(name, publicId, systemId);\n let doctypeNode = document.children.find((node) => isDirective(node) && node.name === '!doctype');\n if (doctypeNode) {\n doctypeNode.data = data !== null && data !== void 0 ? data : null;\n }\n else {\n doctypeNode = new ProcessingInstruction('!doctype', data);\n adapter.appendChild(document, doctypeNode);\n }\n doctypeNode['x-name'] = name !== null && name !== void 0 ? name : undefined;\n doctypeNode['x-publicId'] = publicId !== null && publicId !== void 0 ? publicId : undefined;\n doctypeNode['x-systemId'] = systemId !== null && systemId !== void 0 ? systemId : undefined;\n },\n setDocumentMode(document, mode) {\n document['x-mode'] = mode;\n },\n getDocumentMode(document) {\n return document['x-mode'];\n },\n detachNode(node) {\n if (node.parent) {\n const idx = node.parent.children.indexOf(node);\n const { prev, next } = node;\n node.prev = null;\n node.next = null;\n if (prev) {\n prev.next = next;\n }\n if (next) {\n next.prev = prev;\n }\n node.parent.children.splice(idx, 1);\n node.parent = null;\n }\n },\n insertText(parentNode, text) {\n const lastChild = parentNode.children[parentNode.children.length - 1];\n if (lastChild && isText(lastChild)) {\n lastChild.data += text;\n }\n else {\n adapter.appendChild(parentNode, createTextNode(text));\n }\n },\n insertTextBefore(parentNode, text, referenceNode) {\n const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1];\n if (prevNode && isText(prevNode)) {\n prevNode.data += text;\n }\n else {\n adapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n }\n },\n adoptAttributes(recipient, attrs) {\n for (let i = 0; i < attrs.length; i++) {\n const attrName = attrs[i].name;\n if (typeof recipient.attribs[attrName] === 'undefined') {\n recipient.attribs[attrName] = attrs[i].value;\n recipient['x-attribsNamespace'][attrName] = attrs[i].namespace;\n recipient['x-attribsPrefix'][attrName] = attrs[i].prefix;\n }\n }\n },\n //Tree traversing\n getFirstChild(node) {\n return node.children[0];\n },\n getChildNodes(node) {\n return node.children;\n },\n getParentNode(node) {\n return node.parent;\n },\n getAttrList(element) {\n return element.attributes;\n },\n //Node data\n getTagName(element) {\n return element.name;\n },\n getNamespaceURI(element) {\n return element.namespace;\n },\n getTextNodeContent(textNode) {\n return textNode.data;\n },\n getCommentNodeContent(commentNode) {\n return commentNode.data;\n },\n getDocumentTypeNodeName(doctypeNode) {\n var _a;\n return (_a = doctypeNode['x-name']) !== null && _a !== void 0 ? _a : '';\n },\n getDocumentTypeNodePublicId(doctypeNode) {\n var _a;\n return (_a = doctypeNode['x-publicId']) !== null && _a !== void 0 ? _a : '';\n },\n getDocumentTypeNodeSystemId(doctypeNode) {\n var _a;\n return (_a = doctypeNode['x-systemId']) !== null && _a !== void 0 ? _a : '';\n },\n //Node types\n isDocumentTypeNode(node) {\n return isDirective(node) && node.name === '!doctype';\n },\n // Source code location\n setNodeSourceCodeLocation(node, location) {\n if (location) {\n node.startIndex = location.startOffset;\n node.endIndex = location.endOffset;\n }\n node.sourceCodeLocation = location;\n },\n getNodeSourceCodeLocation(node) {\n return node.sourceCodeLocation;\n },\n updateNodeSourceCodeLocation(node, endLocation) {\n if (endLocation.endOffset != null)\n node.endIndex = endLocation.endOffset;\n node.sourceCodeLocation = {\n ...node.sourceCodeLocation,\n ...endLocation,\n };\n },\n};\n//# sourceMappingURL=index.js.map",null,"import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\n/** @internal */\nexport * as html from './common/html.js';\n/** @internal */\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n if (typeof fragmentContext === 'string') {\n options = html;\n html = fragmentContext;\n fragmentContext = null;\n }\n const parser = Parser.getFragmentParser(fragmentContext, options);\n parser.tokenizer.write(html, true);\n return parser.getFragment();\n}\n//# sourceMappingURL=index.js.map",null,null,null,null,null,"import $e9N8g$cheerio from \"cheerio\";\n\nvar $13b04019e035f7c9$exports = {};\n\n// default options\nconst $13b04019e035f7c9$var$defaultOptions = {\n // remove all tags\n stripTags: false,\n // postfix of the string\n ellipsis: \"...\",\n // decode html entities\n decodeEntities: false,\n // whether truncate by words\n byWords: false,\n // // truncate by words, set to true keep words\n // // set to number then truncate by word count\n // length: 0\n excludes: \"\",\n reserveLastWord: false,\n trimTheOnlyWord: false,\n keepWhitespaces: false // even if set true, continuous whitespace will count as one\n};\nconst $13b04019e035f7c9$var$astralRange = /\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g;\n// helper method\nconst $13b04019e035f7c9$var$helper = {\n setup (length, options) {\n switch(typeof length){\n case \"object\":\n options = length;\n break;\n case \"number\":\n if (typeof options === \"object\") options.length = length;\n else options = {\n length: length\n };\n }\n const fullOptions = this.extend(options, $13b04019e035f7c9$var$defaultOptions);\n // if (typeof fullOptions.length !== 'number') throw new TypeError('truncate-html: options.length should be a number')\n if (fullOptions.excludes) {\n if (!Array.isArray(fullOptions.excludes)) fullOptions.excludes = [\n fullOptions.excludes\n ];\n fullOptions.excludes = fullOptions.excludes.join(\",\");\n }\n this.options = fullOptions;\n this.limit = fullOptions.length;\n this.ellipsis = fullOptions.ellipsis;\n this.keepWhitespaces = fullOptions.keepWhitespaces;\n this.reserveLastWord = fullOptions.reserveLastWord;\n this.trimTheOnlyWord = fullOptions.trimTheOnlyWord;\n },\n // extend obj with dft\n extend (obj, dft) {\n if (obj == null) obj = {};\n for(const k in dft){\n const v = dft[k];\n if (obj[k] != null) continue;\n obj[k] = v;\n }\n return obj;\n },\n // test a char whether a whitespace char\n isBlank (char) {\n return char === \" \" || char === \"\\f\" || char === \"\\n\" || char === \"\\r\" || char === \"\t\" || char === \"\\v\" || char === \"\\xa0\" || char === \"\\u2028\" || char === \"\\u2029\";\n },\n /**\n * truncate text\n * @param {String} text text to truncate\n * @param {Boolean} isLastNode is last dom node, help to decide whether add ellipsis\n * @return {String}\n */ truncate (text, isLastNode) {\n if (!this.keepWhitespaces) text = text.replace(/\\s+/g, \" \");\n const byWords = this.options.byWords;\n const match = text.match($13b04019e035f7c9$var$astralRange);\n const astralSafeCharacterArray = match === null ? [] : match;\n const strLen = match === null ? 0 : astralSafeCharacterArray.length;\n let idx = 0;\n let count = 0;\n let prevIsBlank = byWords;\n let curIsBlank = false;\n while(idx < strLen){\n curIsBlank = this.isBlank(astralSafeCharacterArray[idx++]);\n // keep same then continue\n if (byWords && prevIsBlank === curIsBlank) continue;\n if (count === this.limit) {\n // reserve trailing whitespace, only when prev is blank too\n if (prevIsBlank && curIsBlank) {\n prevIsBlank = curIsBlank;\n continue;\n }\n // fix idx because current char belong to next words which exceed the limit\n --idx;\n break;\n }\n if (byWords) curIsBlank || ++count;\n else curIsBlank && prevIsBlank || ++count;\n prevIsBlank = curIsBlank;\n }\n this.limit -= count;\n if (this.limit) return text;\n else {\n let str;\n if (byWords) str = text.substr(0, idx);\n else str = this.substr(astralSafeCharacterArray, idx);\n if (str === text) // if is lat node, no need of ellipsis, or add it\n return isLastNode ? text : text + this.ellipsis;\n else return str + this.ellipsis;\n }\n },\n // deal with cut string in the middle of a word\n substr (astralSafeCharacterArray, len) {\n // var boundary, cutted, result\n const cutted = astralSafeCharacterArray.slice(0, len).join(\"\");\n if (!this.reserveLastWord || astralSafeCharacterArray.length === len) return cutted;\n const boundary = astralSafeCharacterArray.slice(len - 1, len + 1).join(\"\");\n // if truncate at word boundary, just return\n if (/\\W/.test(boundary)) return cutted;\n if (typeof this.reserveLastWord === \"number\" && this.reserveLastWord < 0) {\n const result = cutted.replace(/\\w+$/, \"\");\n // if the cutted is not the first and the only word\n // then return result, or return the whole word\n if (!(result.length === 0 && cutted.length === this.options.length)) return result;\n if (this.trimTheOnlyWord) return cutted;\n }\n // set max exceeded to 10 if this.reserveLastWord is true or < 0\n const maxExceeded = this.reserveLastWord !== true && this.reserveLastWord > 0 ? this.reserveLastWord : 10;\n const mtc = astralSafeCharacterArray.slice(len).join(\"\").match(/(\\w+)/);\n const exceeded = mtc ? mtc[1] : \"\";\n return cutted + exceeded.substr(0, maxExceeded);\n }\n};\n/** return true if elem is CheerioStatic */ function $13b04019e035f7c9$var$isCheerioInstance(elem) {\n return elem && elem.contains && elem.html && elem.parseHTML && true;\n}\n/**\n * truncate html\n * @method truncate(html, [length], [options])\n * @param {String} html html string to truncate\n * @param {Object|number} length how many letters(words if `byWords` is true) you want reserve\n * @param {Object|null} options\n * @return {String}\n */ const $13b04019e035f7c9$var$truncate = function(html, length, options) {\n $13b04019e035f7c9$var$helper.setup(length, options);\n if (!html || isNaN($13b04019e035f7c9$var$helper.limit) || $13b04019e035f7c9$var$helper.limit <= 0 || $13b04019e035f7c9$var$helper.limit === Infinity) return html;\n // if (helper.limit)\n let $;\n // support provied cheerio\n if ($13b04019e035f7c9$var$isCheerioInstance(html)) $ = html;\n else // Add a wrapper for text node without tag like:\n // <p>Lorem ipsum <p>dolor sit => <div><p>Lorem ipsum <p>dolor sit</div>\n $ = (0, $e9N8g$cheerio).load(`${html}`, {\n decodeEntities: $13b04019e035f7c9$var$helper.options.decodeEntities\n }, false);\n const $html = $.root();\n // remove excludes elements\n $13b04019e035f7c9$var$helper.options.excludes && $html.find($13b04019e035f7c9$var$helper.options.excludes).remove();\n // strip tags and get pure text\n if ($13b04019e035f7c9$var$helper.options.stripTags) return $13b04019e035f7c9$var$helper.truncate($html.text());\n const travelChildren = function($ele, isParentLastNode = true) {\n const contents = $ele.contents();\n const lastIdx = contents.length - 1;\n return contents.each(function(idx) {\n switch(this.type){\n case \"text\":\n if (!$13b04019e035f7c9$var$helper.limit) {\n $(this).remove();\n return;\n }\n this.data = $13b04019e035f7c9$var$helper.truncate($(this).text(), isParentLastNode && idx === lastIdx);\n break;\n case \"tag\":\n if (!$13b04019e035f7c9$var$helper.limit) $(this).remove();\n else return travelChildren($(this), isParentLastNode && idx === lastIdx);\n break;\n default:\n // for comments\n return $(this).remove();\n }\n });\n };\n travelChildren($html);\n return $html.html();\n};\n$13b04019e035f7c9$var$truncate.setup = (options = {})=>{\n return Object.assign($13b04019e035f7c9$var$defaultOptions, options);\n};\n// fix parcel exporting issue\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n$13b04019e035f7c9$exports = $13b04019e035f7c9$var$truncate;\n\n\nexport {$13b04019e035f7c9$exports as default};\n","\"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",null,"\"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\";\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","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst 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 */\nexport const 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 let 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 */\nexport function 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}\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 */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport 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((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\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 */\nconst TO_LOWER_BIT = 0b100000;\nexport var 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 || (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 = {}));\nexport var 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 || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\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 startEntity(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 write(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 stateNumericStart(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 addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const 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 stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const 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 emitNumericEntity(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(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 stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const 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 emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const 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 emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\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 end() {\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}\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 let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const 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 const 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 */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const 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 const 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 let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const 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}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\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 */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\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 */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\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 */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Generated using scripts/write-encode-map.ts\nfunction restoreDiff(arr) {\n for (let i = 1; i < arr.length; i++) {\n arr[i][0] += arr[i - 1][0] + 1;\n }\n return arr;\n}\n// prettier-ignore\nexport default new Map(/* #__PURE__ */ restoreDiff([[9, \"	\"], [0, \"
\"], [22, \"!\"], [0, \""\"], [0, \"#\"], [0, \"$\"], [0, \"%\"], [0, \"&\"], [0, \"'\"], [0, \"(\"], [0, \")\"], [0, \"*\"], [0, \"+\"], [0, \",\"], [1, \".\"], [0, \"/\"], [10, \":\"], [0, \";\"], [0, { v: \"<\", n: 8402, o: \"<⃒\" }], [0, { v: \"=\", n: 8421, o: \"=⃥\" }], [0, { v: \">\", n: 8402, o: \">⃒\" }], [0, \"?\"], [0, \"@\"], [26, \"[\"], [0, \"\\"], [0, \"]\"], [0, \"^\"], [0, \"_\"], [0, \"`\"], [5, { n: 106, o: \"fj\" }], [20, \"{\"], [0, \"|\"], [0, \"}\"], [34, \" \"], [0, \"¡\"], [0, \"¢\"], [0, \"£\"], [0, \"¤\"], [0, \"¥\"], [0, \"¦\"], [0, \"§\"], [0, \"¨\"], [0, \"©\"], [0, \"ª\"], [0, \"«\"], [0, \"¬\"], [0, \"­\"], [0, \"®\"], [0, \"¯\"], [0, \"°\"], [0, \"±\"], [0, \"²\"], [0, \"³\"], [0, \"´\"], [0, \"µ\"], [0, \"¶\"], [0, \"·\"], [0, \"¸\"], [0, \"¹\"], [0, \"º\"], [0, \"»\"], [0, \"¼\"], [0, \"½\"], [0, \"¾\"], [0, \"¿\"], [0, \"À\"], [0, \"Á\"], [0, \"Â\"], [0, \"Ã\"], [0, \"Ä\"], [0, \"Å\"], [0, \"Æ\"], [0, \"Ç\"], [0, \"È\"], [0, \"É\"], [0, \"Ê\"], [0, \"Ë\"], [0, \"Ì\"], [0, \"Í\"], [0, \"Î\"], [0, \"Ï\"], [0, \"Ð\"], [0, \"Ñ\"], [0, \"Ò\"], [0, \"Ó\"], [0, \"Ô\"], [0, \"Õ\"], [0, \"Ö\"], [0, \"×\"], [0, \"Ø\"], [0, \"Ù\"], [0, \"Ú\"], [0, \"Û\"], [0, \"Ü\"], [0, \"Ý\"], [0, \"Þ\"], [0, \"ß\"], [0, \"à\"], [0, \"á\"], [0, \"â\"], [0, \"ã\"], [0, \"ä\"], [0, \"å\"], [0, \"æ\"], [0, \"ç\"], [0, \"è\"], [0, \"é\"], [0, \"ê\"], [0, \"ë\"], [0, \"ì\"], [0, \"í\"], [0, \"î\"], [0, \"ï\"], [0, \"ð\"], [0, \"ñ\"], [0, \"ò\"], [0, \"ó\"], [0, \"ô\"], [0, \"õ\"], [0, \"ö\"], [0, \"÷\"], [0, \"ø\"], [0, \"ù\"], [0, \"ú\"], [0, \"û\"], [0, \"ü\"], [0, \"ý\"], [0, \"þ\"], [0, \"ÿ\"], [0, \"Ā\"], [0, \"ā\"], [0, \"Ă\"], [0, \"ă\"], [0, \"Ą\"], [0, \"ą\"], [0, \"Ć\"], [0, \"ć\"], [0, \"Ĉ\"], [0, \"ĉ\"], [0, \"Ċ\"], [0, \"ċ\"], [0, \"Č\"], [0, \"č\"], [0, \"Ď\"], [0, \"ď\"], [0, \"Đ\"], [0, \"đ\"], [0, \"Ē\"], [0, \"ē\"], [2, \"Ė\"], [0, \"ė\"], [0, \"Ę\"], [0, \"ę\"], [0, \"Ě\"], [0, \"ě\"], [0, \"Ĝ\"], [0, \"ĝ\"], [0, \"Ğ\"], [0, \"ğ\"], [0, \"Ġ\"], [0, \"ġ\"], [0, \"Ģ\"], [1, \"Ĥ\"], [0, \"ĥ\"], [0, \"Ħ\"], [0, \"ħ\"], [0, \"Ĩ\"], [0, \"ĩ\"], [0, \"Ī\"], [0, \"ī\"], [2, \"Į\"], [0, \"į\"], [0, \"İ\"], [0, \"ı\"], [0, \"IJ\"], [0, \"ij\"], [0, \"Ĵ\"], [0, \"ĵ\"], [0, \"Ķ\"], [0, \"ķ\"], [0, \"ĸ\"], [0, \"Ĺ\"], [0, \"ĺ\"], [0, \"Ļ\"], [0, \"ļ\"], [0, \"Ľ\"], [0, \"ľ\"], [0, \"Ŀ\"], [0, \"ŀ\"], [0, \"Ł\"], [0, \"ł\"], [0, \"Ń\"], [0, \"ń\"], [0, \"Ņ\"], [0, \"ņ\"], [0, \"Ň\"], [0, \"ň\"], [0, \"ʼn\"], [0, \"Ŋ\"], [0, \"ŋ\"], [0, \"Ō\"], [0, \"ō\"], [2, \"Ő\"], [0, \"ő\"], [0, \"Œ\"], [0, \"œ\"], [0, \"Ŕ\"], [0, \"ŕ\"], [0, \"Ŗ\"], [0, \"ŗ\"], [0, \"Ř\"], [0, \"ř\"], [0, \"Ś\"], [0, \"ś\"], [0, \"Ŝ\"], [0, \"ŝ\"], [0, \"Ş\"], [0, \"ş\"], [0, \"Š\"], [0, \"š\"], [0, \"Ţ\"], [0, \"ţ\"], [0, \"Ť\"], [0, \"ť\"], [0, \"Ŧ\"], [0, \"ŧ\"], [0, \"Ũ\"], [0, \"ũ\"], [0, \"Ū\"], [0, \"ū\"], [0, \"Ŭ\"], [0, \"ŭ\"], [0, \"Ů\"], [0, \"ů\"], [0, \"Ű\"], [0, \"ű\"], [0, \"Ų\"], [0, \"ų\"], [0, \"Ŵ\"], [0, \"ŵ\"], [0, \"Ŷ\"], [0, \"ŷ\"], [0, \"Ÿ\"], [0, \"Ź\"], [0, \"ź\"], [0, \"Ż\"], [0, \"ż\"], [0, \"Ž\"], [0, \"ž\"], [19, \"ƒ\"], [34, \"Ƶ\"], [63, \"ǵ\"], [65, \"ȷ\"], [142, \"ˆ\"], [0, \"ˇ\"], [16, \"˘\"], [0, \"˙\"], [0, \"˚\"], [0, \"˛\"], [0, \"˜\"], [0, \"˝\"], [51, \"̑\"], [127, \"Α\"], [0, \"Β\"], [0, \"Γ\"], [0, \"Δ\"], [0, \"Ε\"], [0, \"Ζ\"], [0, \"Η\"], [0, \"Θ\"], [0, \"Ι\"], [0, \"Κ\"], [0, \"Λ\"], [0, \"Μ\"], [0, \"Ν\"], [0, \"Ξ\"], [0, \"Ο\"], [0, \"Π\"], [0, \"Ρ\"], [1, \"Σ\"], [0, \"Τ\"], [0, \"Υ\"], [0, \"Φ\"], [0, \"Χ\"], [0, \"Ψ\"], [0, \"Ω\"], [7, \"α\"], [0, \"β\"], [0, \"γ\"], [0, \"δ\"], [0, \"ε\"], [0, \"ζ\"], [0, \"η\"], [0, \"θ\"], [0, \"ι\"], [0, \"κ\"], [0, \"λ\"], [0, \"μ\"], [0, \"ν\"], [0, \"ξ\"], [0, \"ο\"], [0, \"π\"], [0, \"ρ\"], [0, \"ς\"], [0, \"σ\"], [0, \"τ\"], [0, \"υ\"], [0, \"φ\"], [0, \"χ\"], [0, \"ψ\"], [0, \"ω\"], [7, \"ϑ\"], [0, \"ϒ\"], [2, \"ϕ\"], [0, \"ϖ\"], [5, \"Ϝ\"], [0, \"ϝ\"], [18, \"ϰ\"], [0, \"ϱ\"], [3, \"ϵ\"], [0, \"϶\"], [10, \"Ё\"], [0, \"Ђ\"], [0, \"Ѓ\"], [0, \"Є\"], [0, \"Ѕ\"], [0, \"І\"], [0, \"Ї\"], [0, \"Ј\"], [0, \"Љ\"], [0, \"Њ\"], [0, \"Ћ\"], [0, \"Ќ\"], [1, \"Ў\"], [0, \"Џ\"], [0, \"А\"], [0, \"Б\"], [0, \"В\"], [0, \"Г\"], [0, \"Д\"], [0, \"Е\"], [0, \"Ж\"], [0, \"З\"], [0, \"И\"], [0, \"Й\"], [0, \"К\"], [0, \"Л\"], [0, \"М\"], [0, \"Н\"], [0, \"О\"], [0, \"П\"], [0, \"Р\"], [0, \"С\"], [0, \"Т\"], [0, \"У\"], [0, \"Ф\"], [0, \"Х\"], [0, \"Ц\"], [0, \"Ч\"], [0, \"Ш\"], [0, \"Щ\"], [0, \"Ъ\"], [0, \"Ы\"], [0, \"Ь\"], [0, \"Э\"], [0, \"Ю\"], [0, \"Я\"], [0, \"а\"], [0, \"б\"], [0, \"в\"], [0, \"г\"], [0, \"д\"], [0, \"е\"], [0, \"ж\"], [0, \"з\"], [0, \"и\"], [0, \"й\"], [0, \"к\"], [0, \"л\"], [0, \"м\"], [0, \"н\"], [0, \"о\"], [0, \"п\"], [0, \"р\"], [0, \"с\"], [0, \"т\"], [0, \"у\"], [0, \"ф\"], [0, \"х\"], [0, \"ц\"], [0, \"ч\"], [0, \"ш\"], [0, \"щ\"], [0, \"ъ\"], [0, \"ы\"], [0, \"ь\"], [0, \"э\"], [0, \"ю\"], [0, \"я\"], [1, \"ё\"], [0, \"ђ\"], [0, \"ѓ\"], [0, \"є\"], [0, \"ѕ\"], [0, \"і\"], [0, \"ї\"], [0, \"ј\"], [0, \"љ\"], [0, \"њ\"], [0, \"ћ\"], [0, \"ќ\"], [1, \"ў\"], [0, \"џ\"], [7074, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [1, \" \"], [0, \" \"], [0, \" \"], [0, \" \"], [0, \"​\"], [0, \"‌\"], [0, \"‍\"], [0, \"‎\"], [0, \"‏\"], [0, \"‐\"], [2, \"–\"], [0, \"—\"], [0, \"―\"], [0, \"‖\"], [1, \"‘\"], [0, \"’\"], [0, \"‚\"], [1, \"“\"], [0, \"”\"], [0, \"„\"], [1, \"†\"], [0, \"‡\"], [0, \"•\"], [2, \"‥\"], [0, \"…\"], [9, \"‰\"], [0, \"‱\"], [0, \"′\"], [0, \"″\"], [0, \"‴\"], [0, \"‵\"], [3, \"‹\"], [0, \"›\"], [3, \"‾\"], [2, \"⁁\"], [1, \"⁃\"], [0, \"⁄\"], [10, \"⁏\"], [7, \"⁗\"], [7, { v: \" \", n: 8202, o: \"  \" }], [0, \"⁠\"], [0, \"⁡\"], [0, \"⁢\"], [0, \"⁣\"], [72, \"€\"], [46, \"⃛\"], [0, \"⃜\"], [37, \"ℂ\"], [2, \"℅\"], [4, \"ℊ\"], [0, \"ℋ\"], [0, \"ℌ\"], [0, \"ℍ\"], [0, \"ℎ\"], [0, \"ℏ\"], [0, \"ℐ\"], [0, \"ℑ\"], [0, \"ℒ\"], [0, \"ℓ\"], [1, \"ℕ\"], [0, \"№\"], [0, \"℗\"], [0, \"℘\"], [0, \"ℙ\"], [0, \"ℚ\"], [0, \"ℛ\"], [0, \"ℜ\"], [0, \"ℝ\"], [0, \"℞\"], [3, \"™\"], [1, \"ℤ\"], [2, \"℧\"], [0, \"ℨ\"], [0, \"℩\"], [2, \"ℬ\"], [0, \"ℭ\"], [1, \"ℯ\"], [0, \"ℰ\"], [0, \"ℱ\"], [1, \"ℳ\"], [0, \"ℴ\"], [0, \"ℵ\"], [0, \"ℶ\"], [0, \"ℷ\"], [0, \"ℸ\"], [12, \"ⅅ\"], [0, \"ⅆ\"], [0, \"ⅇ\"], [0, \"ⅈ\"], [10, \"⅓\"], [0, \"⅔\"], [0, \"⅕\"], [0, \"⅖\"], [0, \"⅗\"], [0, \"⅘\"], [0, \"⅙\"], [0, \"⅚\"], [0, \"⅛\"], [0, \"⅜\"], [0, \"⅝\"], [0, \"⅞\"], [49, \"←\"], [0, \"↑\"], [0, \"→\"], [0, \"↓\"], [0, \"↔\"], [0, \"↕\"], [0, \"↖\"], [0, \"↗\"], [0, \"↘\"], [0, \"↙\"], [0, \"↚\"], [0, \"↛\"], [1, { v: \"↝\", n: 824, o: \"↝̸\" }], [0, \"↞\"], [0, \"↟\"], [0, \"↠\"], [0, \"↡\"], [0, \"↢\"], [0, \"↣\"], [0, \"↤\"], [0, \"↥\"], [0, \"↦\"], [0, \"↧\"], [1, \"↩\"], [0, \"↪\"], [0, \"↫\"], [0, \"↬\"], [0, \"↭\"], [0, \"↮\"], [1, \"↰\"], [0, \"↱\"], [0, \"↲\"], [0, \"↳\"], [1, \"↵\"], [0, \"↶\"], [0, \"↷\"], [2, \"↺\"], [0, \"↻\"], [0, \"↼\"], [0, \"↽\"], [0, \"↾\"], [0, \"↿\"], [0, \"⇀\"], [0, \"⇁\"], [0, \"⇂\"], [0, \"⇃\"], [0, \"⇄\"], [0, \"⇅\"], [0, \"⇆\"], [0, \"⇇\"], [0, \"⇈\"], [0, \"⇉\"], [0, \"⇊\"], [0, \"⇋\"], [0, \"⇌\"], [0, \"⇍\"], [0, \"⇎\"], [0, \"⇏\"], [0, \"⇐\"], [0, \"⇑\"], [0, \"⇒\"], [0, \"⇓\"], [0, \"⇔\"], [0, \"⇕\"], [0, \"⇖\"], [0, \"⇗\"], [0, \"⇘\"], [0, \"⇙\"], [0, \"⇚\"], [0, \"⇛\"], [1, \"⇝\"], [6, \"⇤\"], [0, \"⇥\"], [15, \"⇵\"], [7, \"⇽\"], [0, \"⇾\"], [0, \"⇿\"], [0, \"∀\"], [0, \"∁\"], [0, { v: \"∂\", n: 824, o: \"∂̸\" }], [0, \"∃\"], [0, \"∄\"], [0, \"∅\"], [1, \"∇\"], [0, \"∈\"], [0, \"∉\"], [1, \"∋\"], [0, \"∌\"], [2, \"∏\"], [0, \"∐\"], [0, \"∑\"], [0, \"−\"], [0, \"∓\"], [0, \"∔\"], [1, \"∖\"], [0, \"∗\"], [0, \"∘\"], [1, \"√\"], [2, \"∝\"], [0, \"∞\"], [0, \"∟\"], [0, { v: \"∠\", n: 8402, o: \"∠⃒\" }], [0, \"∡\"], [0, \"∢\"], [0, \"∣\"], [0, \"∤\"], [0, \"∥\"], [0, \"∦\"], [0, \"∧\"], [0, \"∨\"], [0, { v: \"∩\", n: 65024, o: \"∩︀\" }], [0, { v: \"∪\", n: 65024, o: \"∪︀\" }], [0, \"∫\"], [0, \"∬\"], [0, \"∭\"], [0, \"∮\"], [0, \"∯\"], [0, \"∰\"], [0, \"∱\"], [0, \"∲\"], [0, \"∳\"], [0, \"∴\"], [0, \"∵\"], [0, \"∶\"], [0, \"∷\"], [0, \"∸\"], [1, \"∺\"], [0, \"∻\"], [0, { v: \"∼\", n: 8402, o: \"∼⃒\" }], [0, { v: \"∽\", n: 817, o: \"∽̱\" }], [0, { v: \"∾\", n: 819, o: \"∾̳\" }], [0, \"∿\"], [0, \"≀\"], [0, \"≁\"], [0, { v: \"≂\", n: 824, o: \"≂̸\" }], [0, \"≃\"], [0, \"≄\"], [0, \"≅\"], [0, \"≆\"], [0, \"≇\"], [0, \"≈\"], [0, \"≉\"], [0, \"≊\"], [0, { v: \"≋\", n: 824, o: \"≋̸\" }], [0, \"≌\"], [0, { v: \"≍\", n: 8402, o: \"≍⃒\" }], [0, { v: \"≎\", n: 824, o: \"≎̸\" }], [0, { v: \"≏\", n: 824, o: \"≏̸\" }], [0, { v: \"≐\", n: 824, o: \"≐̸\" }], [0, \"≑\"], [0, \"≒\"], [0, \"≓\"], [0, \"≔\"], [0, \"≕\"], [0, \"≖\"], [0, \"≗\"], [1, \"≙\"], [0, \"≚\"], [1, \"≜\"], [2, \"≟\"], [0, \"≠\"], [0, { v: \"≡\", n: 8421, o: \"≡⃥\" }], [0, \"≢\"], [1, { v: \"≤\", n: 8402, o: \"≤⃒\" }], [0, { v: \"≥\", n: 8402, o: \"≥⃒\" }], [0, { v: \"≦\", n: 824, o: \"≦̸\" }], [0, { v: \"≧\", n: 824, o: \"≧̸\" }], [0, { v: \"≨\", n: 65024, o: \"≨︀\" }], [0, { v: \"≩\", n: 65024, o: \"≩︀\" }], [0, { v: \"≪\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≪̸\"], [7577, \"≪⃒\"]])) }], [0, { v: \"≫\", n: new Map(/* #__PURE__ */ restoreDiff([[824, \"≫̸\"], [7577, \"≫⃒\"]])) }], [0, \"≬\"], [0, \"≭\"], [0, \"≮\"], [0, \"≯\"], [0, \"≰\"], [0, \"≱\"], [0, \"≲\"], [0, \"≳\"], [0, \"≴\"], [0, \"≵\"], [0, \"≶\"], [0, \"≷\"], [0, \"≸\"], [0, \"≹\"], [0, \"≺\"], [0, \"≻\"], [0, \"≼\"], [0, \"≽\"], [0, \"≾\"], [0, { v: \"≿\", n: 824, o: \"≿̸\" }], [0, \"⊀\"], [0, \"⊁\"], [0, { v: \"⊂\", n: 8402, o: \"⊂⃒\" }], [0, { v: \"⊃\", n: 8402, o: \"⊃⃒\" }], [0, \"⊄\"], [0, \"⊅\"], [0, \"⊆\"], [0, \"⊇\"], [0, \"⊈\"], [0, \"⊉\"], [0, { v: \"⊊\", n: 65024, o: \"⊊︀\" }], [0, { v: \"⊋\", n: 65024, o: \"⊋︀\" }], [1, \"⊍\"], [0, \"⊎\"], [0, { v: \"⊏\", n: 824, o: \"⊏̸\" }], [0, { v: \"⊐\", n: 824, o: \"⊐̸\" }], [0, \"⊑\"], [0, \"⊒\"], [0, { v: \"⊓\", n: 65024, o: \"⊓︀\" }], [0, { v: \"⊔\", n: 65024, o: \"⊔︀\" }], [0, \"⊕\"], [0, \"⊖\"], [0, \"⊗\"], [0, \"⊘\"], [0, \"⊙\"], [0, \"⊚\"], [0, \"⊛\"], [1, \"⊝\"], [0, \"⊞\"], [0, \"⊟\"], [0, \"⊠\"], [0, \"⊡\"], [0, \"⊢\"], [0, \"⊣\"], [0, \"⊤\"], [0, \"⊥\"], [1, \"⊧\"], [0, \"⊨\"], [0, \"⊩\"], [0, \"⊪\"], [0, \"⊫\"], [0, \"⊬\"], [0, \"⊭\"], [0, \"⊮\"], [0, \"⊯\"], [0, \"⊰\"], [1, \"⊲\"], [0, \"⊳\"], [0, { v: \"⊴\", n: 8402, o: \"⊴⃒\" }], [0, { v: \"⊵\", n: 8402, o: \"⊵⃒\" }], [0, \"⊶\"], [0, \"⊷\"], [0, \"⊸\"], [0, \"⊹\"], [0, \"⊺\"], [0, \"⊻\"], [1, \"⊽\"], [0, \"⊾\"], [0, \"⊿\"], [0, \"⋀\"], [0, \"⋁\"], [0, \"⋂\"], [0, \"⋃\"], [0, \"⋄\"], [0, \"⋅\"], [0, \"⋆\"], [0, \"⋇\"], [0, \"⋈\"], [0, \"⋉\"], [0, \"⋊\"], [0, \"⋋\"], [0, \"⋌\"], [0, \"⋍\"], [0, \"⋎\"], [0, \"⋏\"], [0, \"⋐\"], [0, \"⋑\"], [0, \"⋒\"], [0, \"⋓\"], [0, \"⋔\"], [0, \"⋕\"], [0, \"⋖\"], [0, \"⋗\"], [0, { v: \"⋘\", n: 824, o: \"⋘̸\" }], [0, { v: \"⋙\", n: 824, o: \"⋙̸\" }], [0, { v: \"⋚\", n: 65024, o: \"⋚︀\" }], [0, { v: \"⋛\", n: 65024, o: \"⋛︀\" }], [2, \"⋞\"], [0, \"⋟\"], [0, \"⋠\"], [0, \"⋡\"], [0, \"⋢\"], [0, \"⋣\"], [2, \"⋦\"], [0, \"⋧\"], [0, \"⋨\"], [0, \"⋩\"], [0, \"⋪\"], [0, \"⋫\"], [0, \"⋬\"], [0, \"⋭\"], [0, \"⋮\"], [0, \"⋯\"], [0, \"⋰\"], [0, \"⋱\"], [0, \"⋲\"], [0, \"⋳\"], [0, \"⋴\"], [0, { v: \"⋵\", n: 824, o: \"⋵̸\" }], [0, \"⋶\"], [0, \"⋷\"], [1, { v: \"⋹\", n: 824, o: \"⋹̸\" }], [0, \"⋺\"], [0, \"⋻\"], [0, \"⋼\"], [0, \"⋽\"], [0, \"⋾\"], [6, \"⌅\"], [0, \"⌆\"], [1, \"⌈\"], [0, \"⌉\"], [0, \"⌊\"], [0, \"⌋\"], [0, \"⌌\"], [0, \"⌍\"], [0, \"⌎\"], [0, \"⌏\"], [0, \"⌐\"], [1, \"⌒\"], [0, \"⌓\"], [1, \"⌕\"], [0, \"⌖\"], [5, \"⌜\"], [0, \"⌝\"], [0, \"⌞\"], [0, \"⌟\"], [2, \"⌢\"], [0, \"⌣\"], [9, \"⌭\"], [0, \"⌮\"], [7, \"⌶\"], [6, \"⌽\"], [1, \"⌿\"], [60, \"⍼\"], [51, \"⎰\"], [0, \"⎱\"], [2, \"⎴\"], [0, \"⎵\"], [0, \"⎶\"], [37, \"⏜\"], [0, \"⏝\"], [0, \"⏞\"], [0, \"⏟\"], [2, \"⏢\"], [4, \"⏧\"], [59, \"␣\"], [164, \"Ⓢ\"], [55, \"─\"], [1, \"│\"], [9, \"┌\"], [3, \"┐\"], [3, \"└\"], [3, \"┘\"], [3, \"├\"], [7, \"┤\"], [7, \"┬\"], [7, \"┴\"], [7, \"┼\"], [19, \"═\"], [0, \"║\"], [0, \"╒\"], [0, \"╓\"], [0, \"╔\"], [0, \"╕\"], [0, \"╖\"], [0, \"╗\"], [0, \"╘\"], [0, \"╙\"], [0, \"╚\"], [0, \"╛\"], [0, \"╜\"], [0, \"╝\"], [0, \"╞\"], [0, \"╟\"], [0, \"╠\"], [0, \"╡\"], [0, \"╢\"], [0, \"╣\"], [0, \"╤\"], [0, \"╥\"], [0, \"╦\"], [0, \"╧\"], [0, \"╨\"], [0, \"╩\"], [0, \"╪\"], [0, \"╫\"], [0, \"╬\"], [19, \"▀\"], [3, \"▄\"], [3, \"█\"], [8, \"░\"], [0, \"▒\"], [0, \"▓\"], [13, \"□\"], [8, \"▪\"], [0, \"▫\"], [1, \"▭\"], [0, \"▮\"], [2, \"▱\"], [1, \"△\"], [0, \"▴\"], [0, \"▵\"], [2, \"▸\"], [0, \"▹\"], [3, \"▽\"], [0, \"▾\"], [0, \"▿\"], [2, \"◂\"], [0, \"◃\"], [6, \"◊\"], [0, \"○\"], [32, \"◬\"], [2, \"◯\"], [8, \"◸\"], [0, \"◹\"], [0, \"◺\"], [0, \"◻\"], [0, \"◼\"], [8, \"★\"], [0, \"☆\"], [7, \"☎\"], [49, \"♀\"], [1, \"♂\"], [29, \"♠\"], [2, \"♣\"], [1, \"♥\"], [0, \"♦\"], [3, \"♪\"], [2, \"♭\"], [0, \"♮\"], [0, \"♯\"], [163, \"✓\"], [3, \"✗\"], [8, \"✠\"], [21, \"✶\"], [33, \"❘\"], [25, \"❲\"], [0, \"❳\"], [84, \"⟈\"], [0, \"⟉\"], [28, \"⟦\"], [0, \"⟧\"], [0, \"⟨\"], [0, \"⟩\"], [0, \"⟪\"], [0, \"⟫\"], [0, \"⟬\"], [0, \"⟭\"], [7, \"⟵\"], [0, \"⟶\"], [0, \"⟷\"], [0, \"⟸\"], [0, \"⟹\"], [0, \"⟺\"], [1, \"⟼\"], [2, \"⟿\"], [258, \"⤂\"], [0, \"⤃\"], [0, \"⤄\"], [0, \"⤅\"], [6, \"⤌\"], [0, \"⤍\"], [0, \"⤎\"], [0, \"⤏\"], [0, \"⤐\"], [0, \"⤑\"], [0, \"⤒\"], [0, \"⤓\"], [2, \"⤖\"], [2, \"⤙\"], [0, \"⤚\"], [0, \"⤛\"], [0, \"⤜\"], [0, \"⤝\"], [0, \"⤞\"], [0, \"⤟\"], [0, \"⤠\"], [2, \"⤣\"], [0, \"⤤\"], [0, \"⤥\"], [0, \"⤦\"], [0, \"⤧\"], [0, \"⤨\"], [0, \"⤩\"], [0, \"⤪\"], [8, { v: \"⤳\", n: 824, o: \"⤳̸\" }], [1, \"⤵\"], [0, \"⤶\"], [0, \"⤷\"], [0, \"⤸\"], [0, \"⤹\"], [2, \"⤼\"], [0, \"⤽\"], [7, \"⥅\"], [2, \"⥈\"], [0, \"⥉\"], [0, \"⥊\"], [0, \"⥋\"], [2, \"⥎\"], [0, \"⥏\"], [0, \"⥐\"], [0, \"⥑\"], [0, \"⥒\"], [0, \"⥓\"], [0, \"⥔\"], [0, \"⥕\"], [0, \"⥖\"], [0, \"⥗\"], [0, \"⥘\"], [0, \"⥙\"], [0, \"⥚\"], [0, \"⥛\"], [0, \"⥜\"], [0, \"⥝\"], [0, \"⥞\"], [0, \"⥟\"], [0, \"⥠\"], [0, \"⥡\"], [0, \"⥢\"], [0, \"⥣\"], [0, \"⥤\"], [0, \"⥥\"], [0, \"⥦\"], [0, \"⥧\"], [0, \"⥨\"], [0, \"⥩\"], [0, \"⥪\"], [0, \"⥫\"], [0, \"⥬\"], [0, \"⥭\"], [0, \"⥮\"], [0, \"⥯\"], [0, \"⥰\"], [0, \"⥱\"], [0, \"⥲\"], [0, \"⥳\"], [0, \"⥴\"], [0, \"⥵\"], [0, \"⥶\"], [1, \"⥸\"], [0, \"⥹\"], [1, \"⥻\"], [0, \"⥼\"], [0, \"⥽\"], [0, \"⥾\"], [0, \"⥿\"], [5, \"⦅\"], [0, \"⦆\"], [4, \"⦋\"], [0, \"⦌\"], [0, \"⦍\"], [0, \"⦎\"], [0, \"⦏\"], [0, \"⦐\"], [0, \"⦑\"], [0, \"⦒\"], [0, \"⦓\"], [0, \"⦔\"], [0, \"⦕\"], [0, \"⦖\"], [3, \"⦚\"], [1, \"⦜\"], [0, \"⦝\"], [6, \"⦤\"], [0, \"⦥\"], [0, \"⦦\"], [0, \"⦧\"], [0, \"⦨\"], [0, \"⦩\"], [0, \"⦪\"], [0, \"⦫\"], [0, \"⦬\"], [0, \"⦭\"], [0, \"⦮\"], [0, \"⦯\"], [0, \"⦰\"], [0, \"⦱\"], [0, \"⦲\"], [0, \"⦳\"], [0, \"⦴\"], [0, \"⦵\"], [0, \"⦶\"], [0, \"⦷\"], [1, \"⦹\"], [1, \"⦻\"], [0, \"⦼\"], [1, \"⦾\"], [0, \"⦿\"], [0, \"⧀\"], [0, \"⧁\"], [0, \"⧂\"], [0, \"⧃\"], [0, \"⧄\"], [0, \"⧅\"], [3, \"⧉\"], [3, \"⧍\"], [0, \"⧎\"], [0, { v: \"⧏\", n: 824, o: \"⧏̸\" }], [0, { v: \"⧐\", n: 824, o: \"⧐̸\" }], [11, \"⧜\"], [0, \"⧝\"], [0, \"⧞\"], [4, \"⧣\"], [0, \"⧤\"], [0, \"⧥\"], [5, \"⧫\"], [8, \"⧴\"], [1, \"⧶\"], [9, \"⨀\"], [0, \"⨁\"], [0, \"⨂\"], [1, \"⨄\"], [1, \"⨆\"], [5, \"⨌\"], [0, \"⨍\"], [2, \"⨐\"], [0, \"⨑\"], [0, \"⨒\"], [0, \"⨓\"], [0, \"⨔\"], [0, \"⨕\"], [0, \"⨖\"], [0, \"⨗\"], [10, \"⨢\"], [0, \"⨣\"], [0, \"⨤\"], [0, \"⨥\"], [0, \"⨦\"], [0, \"⨧\"], [1, \"⨩\"], [0, \"⨪\"], [2, \"⨭\"], [0, \"⨮\"], [0, \"⨯\"], [0, \"⨰\"], [0, \"⨱\"], [1, \"⨳\"], [0, \"⨴\"], [0, \"⨵\"], [0, \"⨶\"], [0, \"⨷\"], [0, \"⨸\"], [0, \"⨹\"], [0, \"⨺\"], [0, \"⨻\"], [0, \"⨼\"], [2, \"⨿\"], [0, \"⩀\"], [1, \"⩂\"], [0, \"⩃\"], [0, \"⩄\"], [0, \"⩅\"], [0, \"⩆\"], [0, \"⩇\"], [0, \"⩈\"], [0, \"⩉\"], [0, \"⩊\"], [0, \"⩋\"], [0, \"⩌\"], [0, \"⩍\"], [2, \"⩐\"], [2, \"⩓\"], [0, \"⩔\"], [0, \"⩕\"], [0, \"⩖\"], [0, \"⩗\"], [0, \"⩘\"], [1, \"⩚\"], [0, \"⩛\"], [0, \"⩜\"], [0, \"⩝\"], [1, \"⩟\"], [6, \"⩦\"], [3, \"⩪\"], [2, { v: \"⩭\", n: 824, o: \"⩭̸\" }], [0, \"⩮\"], [0, \"⩯\"], [0, { v: \"⩰\", n: 824, o: \"⩰̸\" }], [0, \"⩱\"], [0, \"⩲\"], [0, \"⩳\"], [0, \"⩴\"], [0, \"⩵\"], [1, \"⩷\"], [0, \"⩸\"], [0, \"⩹\"], [0, \"⩺\"], [0, \"⩻\"], [0, \"⩼\"], [0, { v: \"⩽\", n: 824, o: \"⩽̸\" }], [0, { v: \"⩾\", n: 824, o: \"⩾̸\" }], [0, \"⩿\"], [0, \"⪀\"], [0, \"⪁\"], [0, \"⪂\"], [0, \"⪃\"], [0, \"⪄\"], [0, \"⪅\"], [0, \"⪆\"], [0, \"⪇\"], [0, \"⪈\"], [0, \"⪉\"], [0, \"⪊\"], [0, \"⪋\"], [0, \"⪌\"], [0, \"⪍\"], [0, \"⪎\"], [0, \"⪏\"], [0, \"⪐\"], [0, \"⪑\"], [0, \"⪒\"], [0, \"⪓\"], [0, \"⪔\"], [0, \"⪕\"], [0, \"⪖\"], [0, \"⪗\"], [0, \"⪘\"], [0, \"⪙\"], [0, \"⪚\"], [2, \"⪝\"], [0, \"⪞\"], [0, \"⪟\"], [0, \"⪠\"], [0, { v: \"⪡\", n: 824, o: \"⪡̸\" }], [0, { v: \"⪢\", n: 824, o: \"⪢̸\" }], [1, \"⪤\"], [0, \"⪥\"], [0, \"⪦\"], [0, \"⪧\"], [0, \"⪨\"], [0, \"⪩\"], [0, \"⪪\"], [0, \"⪫\"], [0, { v: \"⪬\", n: 65024, o: \"⪬︀\" }], [0, { v: \"⪭\", n: 65024, o: \"⪭︀\" }], [0, \"⪮\"], [0, { v: \"⪯\", n: 824, o: \"⪯̸\" }], [0, { v: \"⪰\", n: 824, o: \"⪰̸\" }], [2, \"⪳\"], [0, \"⪴\"], [0, \"⪵\"], [0, \"⪶\"], [0, \"⪷\"], [0, \"⪸\"], [0, \"⪹\"], [0, \"⪺\"], [0, \"⪻\"], [0, \"⪼\"], [0, \"⪽\"], [0, \"⪾\"], [0, \"⪿\"], [0, \"⫀\"], [0, \"⫁\"], [0, \"⫂\"], [0, \"⫃\"], [0, \"⫄\"], [0, { v: \"⫅\", n: 824, o: \"⫅̸\" }], [0, { v: \"⫆\", n: 824, o: \"⫆̸\" }], [0, \"⫇\"], [0, \"⫈\"], [2, { v: \"⫋\", n: 65024, o: \"⫋︀\" }], [0, { v: \"⫌\", n: 65024, o: \"⫌︀\" }], [2, \"⫏\"], [0, \"⫐\"], [0, \"⫑\"], [0, \"⫒\"], [0, \"⫓\"], [0, \"⫔\"], [0, \"⫕\"], [0, \"⫖\"], [0, \"⫗\"], [0, \"⫘\"], [0, \"⫙\"], [0, \"⫚\"], [0, \"⫛\"], [8, \"⫤\"], [1, \"⫦\"], [0, \"⫧\"], [0, \"⫨\"], [0, \"⫩\"], [1, \"⫫\"], [0, \"⫬\"], [0, \"⫭\"], [0, \"⫮\"], [0, \"⫯\"], [0, \"⫰\"], [0, \"⫱\"], [0, \"⫲\"], [0, \"⫳\"], [9, { v: \"⫽\", n: 8421, o: \"⫽⃥\" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, \"𝒜\"], [1, \"𝒞\"], [0, \"𝒟\"], [2, \"𝒢\"], [2, \"𝒥\"], [0, \"𝒦\"], [2, \"𝒩\"], [0, \"𝒪\"], [0, \"𝒫\"], [0, \"𝒬\"], [1, \"𝒮\"], [0, \"𝒯\"], [0, \"𝒰\"], [0, \"𝒱\"], [0, \"𝒲\"], [0, \"𝒳\"], [0, \"𝒴\"], [0, \"𝒵\"], [0, \"𝒶\"], [0, \"𝒷\"], [0, \"𝒸\"], [0, \"𝒹\"], [1, \"𝒻\"], [1, \"𝒽\"], [0, \"𝒾\"], [0, \"𝒿\"], [0, \"𝓀\"], [0, \"𝓁\"], [0, \"𝓂\"], [0, \"𝓃\"], [1, \"𝓅\"], [0, \"𝓆\"], [0, \"𝓇\"], [0, \"𝓈\"], [0, \"𝓉\"], [0, \"𝓊\"], [0, \"𝓋\"], [0, \"𝓌\"], [0, \"𝓍\"], [0, \"𝓎\"], [0, \"𝓏\"], [52, \"𝔄\"], [0, \"𝔅\"], [1, \"𝔇\"], [0, \"𝔈\"], [0, \"𝔉\"], [0, \"𝔊\"], [2, \"𝔍\"], [0, \"𝔎\"], [0, \"𝔏\"], [0, \"𝔐\"], [0, \"𝔑\"], [0, \"𝔒\"], [0, \"𝔓\"], [0, \"𝔔\"], [1, \"𝔖\"], [0, \"𝔗\"], [0, \"𝔘\"], [0, \"𝔙\"], [0, \"𝔚\"], [0, \"𝔛\"], [0, \"𝔜\"], [1, \"𝔞\"], [0, \"𝔟\"], [0, \"𝔠\"], [0, \"𝔡\"], [0, \"𝔢\"], [0, \"𝔣\"], [0, \"𝔤\"], [0, \"𝔥\"], [0, \"𝔦\"], [0, \"𝔧\"], [0, \"𝔨\"], [0, \"𝔩\"], [0, \"𝔪\"], [0, \"𝔫\"], [0, \"𝔬\"], [0, \"𝔭\"], [0, \"𝔮\"], [0, \"𝔯\"], [0, \"𝔰\"], [0, \"𝔱\"], [0, \"𝔲\"], [0, \"𝔳\"], [0, \"𝔴\"], [0, \"𝔵\"], [0, \"𝔶\"], [0, \"𝔷\"], [0, \"𝔸\"], [0, \"𝔹\"], [1, \"𝔻\"], [0, \"𝔼\"], [0, \"𝔽\"], [0, \"𝔾\"], [1, \"𝕀\"], [0, \"𝕁\"], [0, \"𝕂\"], [0, \"𝕃\"], [0, \"𝕄\"], [1, \"𝕆\"], [3, \"𝕊\"], [0, \"𝕋\"], [0, \"𝕌\"], [0, \"𝕍\"], [0, \"𝕎\"], [0, \"𝕏\"], [0, \"𝕐\"], [1, \"𝕒\"], [0, \"𝕓\"], [0, \"𝕔\"], [0, \"𝕕\"], [0, \"𝕖\"], [0, \"𝕗\"], [0, \"𝕘\"], [0, \"𝕙\"], [0, \"𝕚\"], [0, \"𝕛\"], [0, \"𝕜\"], [0, \"𝕝\"], [0, \"𝕞\"], [0, \"𝕟\"], [0, \"𝕠\"], [0, \"𝕡\"], [0, \"𝕢\"], [0, \"𝕣\"], [0, \"𝕤\"], [0, \"𝕥\"], [0, \"𝕦\"], [0, \"𝕧\"], [0, \"𝕨\"], [0, \"𝕩\"], [0, \"𝕪\"], [0, \"𝕫\"]])) }], [8906, \"ff\"], [0, \"fi\"], [0, \"fl\"], [0, \"ffi\"], [0, \"ffl\"]]));\n//# sourceMappingURL=encode-html.js.map","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","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n */\nexport function decode(data, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(data, mode);\n }\n return decodeXML(data);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(data, options = EntityLevel.XML) {\n var _a;\n const opts = typeof options === \"number\" ? { level: options } : options;\n (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = DecodingMode.Strict);\n return decode(data, opts);\n}\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param options Encoding options.\n */\nexport function encode(data, options = EntityLevel.XML) {\n const opts = typeof options === \"number\" ? { level: options } : options;\n // Mode `UTF8` just escapes XML entities\n if (opts.mode === EncodingMode.UTF8)\n return escapeUTF8(data);\n if (opts.mode === EncodingMode.Attribute)\n return escapeAttribute(data);\n if (opts.mode === EncodingMode.Text)\n return escapeText(data);\n if (opts.level === EntityLevel.HTML) {\n if (opts.mode === EncodingMode.ASCII) {\n return encodeNonAsciiHTML(data);\n }\n return encodeHTML(data);\n }\n // ASCII and Extensive are equivalent\n return encodeXML(data);\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\"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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\nexports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nvar xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexports.getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? function (str, index) { return str.codePointAt(index); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c, index) {\n return (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/**\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 */\nfunction encodeXML(str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = exports.xmlReplacer.exec(str)) !== null) {\n var i = match.index;\n var char = str.charCodeAt(i);\n var next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nexports.encodeXML = encodeXML;\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 */\nexports.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 var match;\n var lastIdx = 0;\n var 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 */\nexports.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 */\nexports.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 */\nexports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.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","\"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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0;\nexports.xmlReplacer = /[\"&'<>$\\x80-\\uFFFF]/g;\nvar xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexports.getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? function (str, index) { return str.codePointAt(index); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c, index) {\n return (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/**\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 */\nfunction encodeXML(str) {\n var ret = \"\";\n var lastIdx = 0;\n var match;\n while ((match = exports.xmlReplacer.exec(str)) !== null) {\n var i = match.index;\n var char = str.charCodeAt(i);\n var next = xmlCodeMap.get(char);\n if (next !== undefined) {\n ret += str.substring(lastIdx, i) + next;\n lastIdx = i + 1;\n }\n else {\n ret += \"\".concat(str.substring(lastIdx, i), \"&#x\").concat((0, exports.getCodePoint)(str, i).toString(16), \";\");\n // Increase by 1 if we have a surrogate pair\n lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);\n }\n }\n return ret + str.substr(lastIdx);\n}\nexports.encodeXML = encodeXML;\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 */\nexports.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 var match;\n var lastIdx = 0;\n var 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 */\nexports.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 */\nexports.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 */\nexports.escapeText = getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map"],"sourceRoot":""}