{"version":3,"sources":["../node_modules/defuddle/src/utils.ts","../node_modules/defuddle/src/metadata.ts","../node_modules/defuddle/src/extractors/_base.ts","../node_modules/defuddle/src/utils/dom.ts","../node_modules/defuddle/src/utils/comments.ts","../node_modules/defuddle/src/extractors/reddit.ts","../node_modules/defuddle/src/extractors/twitter.ts","../node_modules/defuddle/src/extractors/x-article.ts","../node_modules/defuddle/src/utils/transcript.ts","../node_modules/defuddle/src/extractors/youtube.ts","../node_modules/defuddle/src/extractors/bilibili.ts","../node_modules/defuddle/src/extractors/hackernews.ts","../node_modules/defuddle/src/extractors/_conversation.ts","../node_modules/defuddle/src/extractors/chatgpt.ts","../node_modules/defuddle/src/extractors/claude.ts","../node_modules/defuddle/src/extractors/grok.ts","../node_modules/defuddle/src/extractors/gemini.ts","../node_modules/defuddle/src/extractors/github.ts","../node_modules/defuddle/src/extractors/x-oembed.ts","../node_modules/defuddle/src/utils/bbcode.ts","../node_modules/defuddle/src/extractors/bbcode-data.ts","../node_modules/defuddle/src/extractors/c2-wiki.ts","../node_modules/defuddle/src/extractors/substack.ts","../node_modules/defuddle/src/extractors/nytimes.ts","../node_modules/defuddle/src/extractors/wikipedia.ts","../node_modules/defuddle/src/extractors/linkedin.ts","../node_modules/defuddle/src/extractors/threads.ts","../node_modules/defuddle/src/extractors/bluesky.ts","../node_modules/defuddle/src/extractors/discourse.ts","../node_modules/defuddle/src/extractors/medium.ts","../node_modules/defuddle/src/extractors/leetcode.ts","../node_modules/defuddle/src/extractors/lwn.ts","../node_modules/defuddle/src/extractors/mastodon.ts","../node_modules/defuddle/src/extractor-registry.ts","../node_modules/defuddle/src/constants.ts","../node_modules/@xmldom/xmldom/lib/conventions.js","../node_modules/@xmldom/xmldom/lib/errors.js","../node_modules/@xmldom/xmldom/lib/grammar.js","../node_modules/@xmldom/xmldom/lib/dom.js","../node_modules/@xmldom/xmldom/lib/entities.js","../node_modules/@xmldom/xmldom/lib/sax.js","../node_modules/@xmldom/xmldom/lib/dom-parser.js","../node_modules/@xmldom/xmldom/lib/index.js","../node_modules/mathml-to-latex/dist/index.mjs","../node_modules/defuddle/src/elements/math.base.ts","../node_modules/temml/dist/temml.cjs","../node_modules/defuddle/src/elements/math.full.ts","../node_modules/defuddle/src/elements/math.ts","../node_modules/defuddle/src/elements/code.ts","../node_modules/defuddle/src/elements/headings.ts","../node_modules/defuddle/src/elements/images.ts","../node_modules/defuddle/src/standardize.ts","../node_modules/defuddle/src/elements/footnotes.ts","../node_modules/defuddle/src/elements/callouts.ts","../node_modules/defuddle/src/removals/scoring.ts","../node_modules/defuddle/src/removals/small-images.ts","../node_modules/defuddle/src/removals/hidden.ts","../node_modules/defuddle/src/removals/selectors.ts","../node_modules/defuddle/src/content-boundary.ts","../node_modules/defuddle/src/removals/content-patterns.ts","../node_modules/defuddle/src/removals/metadata-block.ts","../node_modules/defuddle/src/defuddle.ts","../node_modules/@mixmark-io/domino/lib/Event.js","../node_modules/@mixmark-io/domino/lib/UIEvent.js","../node_modules/@mixmark-io/domino/lib/MouseEvent.js","../node_modules/@mixmark-io/domino/lib/DOMException.js","../node_modules/@mixmark-io/domino/lib/config.js","../node_modules/@mixmark-io/domino/lib/utils.js","../node_modules/@mixmark-io/domino/lib/EventTarget.js","../node_modules/@mixmark-io/domino/lib/LinkedList.js","../node_modules/@mixmark-io/domino/lib/NodeUtils.js","../node_modules/@mixmark-io/domino/lib/Node.js","../node_modules/@mixmark-io/domino/lib/NodeList.es6.js","../node_modules/@mixmark-io/domino/lib/NodeList.es5.js","../node_modules/@mixmark-io/domino/lib/NodeList.js","../node_modules/@mixmark-io/domino/lib/ContainerNode.js","../node_modules/@mixmark-io/domino/lib/xmlnames.js","../node_modules/@mixmark-io/domino/lib/attributes.js","../node_modules/@mixmark-io/domino/lib/FilteredElementList.js","../node_modules/@mixmark-io/domino/lib/DOMTokenList.js","../node_modules/@mixmark-io/domino/lib/select.js","../node_modules/@mixmark-io/domino/lib/ChildNode.js","../node_modules/@mixmark-io/domino/lib/NonDocumentTypeChildNode.js","../node_modules/@mixmark-io/domino/lib/NamedNodeMap.js","../node_modules/@mixmark-io/domino/lib/Element.js","../node_modules/@mixmark-io/domino/lib/Leaf.js","../node_modules/@mixmark-io/domino/lib/CharacterData.js","../node_modules/@mixmark-io/domino/lib/Text.js","../node_modules/@mixmark-io/domino/lib/Comment.js","../node_modules/@mixmark-io/domino/lib/DocumentFragment.js","../node_modules/@mixmark-io/domino/lib/ProcessingInstruction.js","../node_modules/@mixmark-io/domino/lib/NodeFilter.js","../node_modules/@mixmark-io/domino/lib/NodeTraversal.js","../node_modules/@mixmark-io/domino/lib/TreeWalker.js","../node_modules/@mixmark-io/domino/lib/NodeIterator.js","../node_modules/@mixmark-io/domino/lib/URL.js","../node_modules/@mixmark-io/domino/lib/CustomEvent.js","../node_modules/@mixmark-io/domino/lib/events.js","../node_modules/@mixmark-io/domino/lib/style_parser.js","../node_modules/@mixmark-io/domino/lib/CSSStyleDeclaration.js","../node_modules/@mixmark-io/domino/lib/URLUtils.js","../node_modules/@mixmark-io/domino/lib/defineElement.js","../node_modules/@mixmark-io/domino/lib/htmlelts.js","../node_modules/@mixmark-io/domino/lib/svg.js","../node_modules/@mixmark-io/domino/lib/MutationConstants.js","../node_modules/@mixmark-io/domino/lib/Document.js","../node_modules/@mixmark-io/domino/lib/DocumentType.js","../node_modules/@mixmark-io/domino/lib/HTMLParser.js","../node_modules/@mixmark-io/domino/lib/DOMImplementation.js","../node_modules/@mixmark-io/domino/lib/Location.js","../node_modules/@mixmark-io/domino/lib/NavigatorID.js","../node_modules/@mixmark-io/domino/lib/WindowTimers.js","../node_modules/@mixmark-io/domino/lib/impl.js","../node_modules/@mixmark-io/domino/lib/Window.js","../node_modules/@mixmark-io/domino/lib/index.js","../node_modules/turndown/lib/turndown.es.js","../node_modules/defuddle/src/markdown.ts","../node_modules/defuddle/src/utils/linkedom-compat.ts","../node_modules/defuddle/src/node.ts","../src/tap/types.ts","../src/version.ts","../src/tap/fetch.ts","../src/tap/discover.ts","../src/tap/extract.ts","../src/tap/hash.ts","../src/tap/plan.ts","../src/kernel/errors.ts","../src/api/knowledge.ts","../src/tap/tap.ts"],"names":["countWords","e","baseUrl","currentProp","document","parseHTML","root","match","text","next","html","el","DOMException","require_dom","Node","remove","node","a","end","value","p","errorHandler","DOMParser","sax","Math","TagTypes","isBlock","mathmlBuilder","math","scriptLevel","delimiters","input","macros","textord","phantom","inner","toNode","tok","args","mi","accentNode","offset","close","primes","isBlank","accent","postProcess","temml","code","childNodes","items","footnoteCount","extract","blockElements","Defuddle","url","endTime","cells","require_utils","event","i","n","window","rules","find","compile","URL","HTMLElement","HTMLUnknownElement","HTMLAnchorElement","HTMLFormElement","SVGElement","HTMLParser","insertToken","doc","require_lib","isVoid","process","content","element","MathMLToLaTeX","urls","createHash"],"mappings":"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A,EAAK,kBAAA;AAAA,MACL,QAAA,EAAK,kBAAA;AAAA,MACL,QAAA,EAAK,kBAAA;AAAA,MACL,QAAA,EAAK,kBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,QAAA,EAAK,mBAAA;AAAA,MACL,MAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK;AAAA,KACT;AAKA,IAAM,yBAAN,MAA6B;AAAA,MACzB,QAAQ,IAAA,EAAM;AACV,QAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA;AAC7C,QAAA,IAAI,cAAA,EAAgB;AAChB,UAAA,OAAO,IAAA;AAAA,QACX;AACA,QAAA,MAAM,UAAA,GAAa,kBAAkB,IAAI,CAAA;AACzC,QAAA,IAAI,UAAA,EAAY;AACZ,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,sBAAA,CAAuB,UAAU,CAAA;AACrD,UAAA,IAAI,MAAA,EAAQ;AACR,YAAA,OAAO,MAAA;AAAA,UACX;AACA,UAAA,OAAO,IAAA;AAAA,QACX;AACA,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,uBAAA,CAAwB,IAAI,CAAA;AACrD,QAAA,IAAI,WAAA,EAAa;AACb,UAAA,OAAO,WAAA;AAAA,QACX;AACA,QAAA,OAAO,IAAA;AAAA,MACX;AAAA,MACA,uBAAuB,IAAA,EAAM;AACzB,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAO,MAAA,EAAO,GAAI,IAAA;AAChC,QAAA,MAAM,GAAA,GAAM,eAAe,MAAM,CAAA;AACjC,QAAA,IAAI,CAAC,GAAA,EAAK;AACN,UAAA,OAAO,IAAA;AAAA,QACX;AACA,QAAA,OAAO,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAA;AAAA,MAC5B;AAAA,MACA,wBAAwB,IAAA,EAAM;AAC1B,QAAA,MAAM,eAAA,GAAkB,iBAAiB,IAAI,CAAA;AAC7C,QAAA,IAAI,CAAC,eAAA,EAAiB;AAClB,UAAA,OAAO,IAAA;AAAA,QACX;AACA,QAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,eAAA;AAC5B,QAAA,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,CAAA;AAAA,MACjC;AAAA,KACJ;AACA,IAAM,iBAAA,GAAoB;AAAA,MACtB,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,MAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,GAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA,EAAI;AAAA,MAC5B,MAAA,EAAG,EAAE,IAAA,EAAM,GAAA,EAAK,QAAQ,QAAA;AAAI,KAChC;AACA,IAAM,cAAA,GAAiB;AAAA,MACnB,MAAA,EAAK,OAAA;AAAA,MACL,GAAA,EAAK,OAAA;AAAA,MACL,GAAA,EAAK,KAAA;AAAA,MACL,GAAA,EAAK,OAAA;AAAA,MACL,MAAA,EAAK,MAAA;AAAA,MACL,QAAA,EAAK,UAAA;AAAA,MACL,QAAA,EAAK,OAAA;AAAA,MACL,QAAA,EAAG,OAAA;AAAA,MACH,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,KAAA;AAAA,MACL,GAAA,EAAK,KAAA;AAAA,MACL,QAAA,EAAG,KAAA;AAAA,MACH,QAAA,EAAK;AAAA,KACT;AACA,IAAM,gBAAA,GAAmB;AAAA;AAAA,MAErB,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA;AAAA,MAEvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA;AAAA,MAErC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACvC,WAAA,EAAM,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA;AAAA,MAEvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,QAAA,EAAK,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,SAAA,EAAU;AAAA;AAAA,MAEtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACtC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA,MACvC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,UAAA,EAAW;AAAA;AAAA,MAEtC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,QAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,MAAA,EAAG,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACpC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA;AAAA,MAErC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,SAAS,QAAA,EAAS;AAAA,MAC3C,WAAA,EAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,SAAS,QAAA,EAAS;AAAA,MAC3C,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,SAAS,QAAA,EAAS;AAAA,MAC3C,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,UAAA,EAAY,SAAS,QAAA,EAAS;AAAA,MAC5C,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,MACxC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,MAAA,EAAQ,SAAS,QAAA,EAAS;AAAA,MACxC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAA,EAAS;AAAA,MACzC,WAAA,EAAI,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAS,QAAA,EAAS;AAAA,MACrC,WAAA,EAAI,EAAE,MAAA,EAAQ,OAAA,EAAS,SAAS,QAAA,EAAS;AAAA,MACzC,WAAA,EAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,SAAS,QAAA;AAAS,KAC/C;AAMA,IAAM,iBAAN,MAAqB;AAAA,MACjB,WAAA,CAAY,MAAM,KAAA,EAAO;AACrB,QAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,GAAW,IAAA,CAAK,iBAAA,CAAkB,IAAI,CAAA;AACnD,QAAA,IAAA,CAAK,MAAA,GAAS,SAAA,GAAY,IAAA,CAAK,iBAAA,CAAkB,KAAK,CAAA;AAAA,MAC1D;AAAA;AAAA,MAEA,KAAK,GAAA,EAAK;AACN,QAAA,OAAO,IAAI,QAAQ,IAAA,CAAK,KAAA,EAAO,KAAK,MAAM,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,MACxD;AAAA;AAAA,MAEA,kBAAkB,SAAA,EAAW;AACzB,QAAA,IAAI,EAAA;AACJ,QAAA,OAAA,CAAQ,EAAA,GAAK,uBAAuB,GAAA,CAAI,SAAS,OAAO,IAAA,IAAQ,EAAA,KAAO,SAAS,EAAA,GAAK,SAAA;AAAA,MACzF;AAAA,KACJ;AAQA,IAAM,sBAAA,GAAyB,IAAI,GAAA,CAAI;AAAA,MACnC,CAAC,KAAK,KAAK,CAAA;AAAA,MACX,CAAC,KAAK,KAAK,CAAA;AAAA,MACX,GAAG,CAAC,GAAG,oBAAoB,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,KAAU,CAAC,KAAA,EAAO,KAAK,CAAC;AAAA,KAC7D,CAAA;AAQD,IAAM,sBAAA,GAAN,MAAM,uBAAA,CAAuB;AAAA,MACzB,YAAY,UAAA,EAAY;AACpB,QAAA,IAAA,CAAK,WAAA,GAAc,UAAA;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,OAAO,IAAA,CAAK,GAAA,EAAK,UAAA,EAAY,mBAAmB,EAAA,EAAI;AAChD,QAAA,MAAM,mBAAA,GAAsB,UAAA,CAAW,MAAA,GAAS,CAAA,GAAI,UAAA,GAAa,qBAAqB,MAAA,GAAY,CAAC,gBAAgB,CAAA,GAAI,EAAC;AACxH,QAAA,OAAO,IAAI,uBAAA,CAAuB,mBAAmB,CAAA,CAAE,MAAM,GAAG,CAAA;AAAA,MACpE;AAAA,MACA,MAAM,GAAA,EAAK;AACP,QAAA,OAAO,IAAI,MAAA,CAAO,CAAC,SAAA,EAAW,UAAA,EAAY,cAAc,MAAA,KAAW;AAC/D,UAAA,MAAM,SAAA,GAAY,iBAAiB,MAAA,CAAO,MAAA,GAAS,IAAI,EAAA,GAAK,IAAA,CAAK,KAAK,YAAY,CAAA;AAClF,UAAA,OAAO,YAAY,UAAA,GAAa,SAAA;AAAA,QACpC,GAAG,EAAE,CAAA;AAAA,MACT;AAAA,MACA,KAAK,KAAA,EAAO;AACR,QAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA;AACvB,UAAA,OAAO,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,WAAA,CAAY,SAAS,CAAC,CAAA;AACvD,QAAA,OAAO,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,MACjC;AAAA,KACJ;AAaA,IAAM,SAAA,GAAY,CAAC,KAAA,EAAO,GAAA,KAAQ,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,KAAA,EAAO,GAAG,CAAA,GAAI,KAAA,CAAM,GAAG,CAAA,GAAI,MAAA;AAGlG,IAAM,SAAA,GAAN,MAAM,UAAA,CAAU;AAAA,MACZ,YAAY,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AAAA,MAClB;AAAA,MACA,OAAO,MAAM,KAAA,EAAO;AAChB,QAAA,OAAO,IAAI,UAAA,CAAU,KAAK,CAAA,CAAE,MAAA,EAAO;AAAA,MACvC;AAAA,MACA,MAAA,GAAS;AACL,QAAA,IAAI,IAAI,EAAA,EAAI,EAAA;AAGZ,QAAA,OAAA,CAAS,EAAA,GAAA,CAAM,EAAA,GAAA,CAAM,EAAA,GAAK,IAAA,CAAK,gBAAA,EAAiB,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAA,CAAK,YAAA,EAAa,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAA,CAAK,aAAA,EAAc,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAI,sBAAA,EAAuB,CAAE,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MACrP;AAAA,MACA,gBAAA,GAAmB;AACf,QAAA,OAAO,SAAA,CAAU,oBAAA,EAAsB,IAAA,CAAK,MAAM,CAAA;AAAA,MACtD;AAAA,MACA,YAAA,GAAe;AACX,QAAA,OAAO,SAAA,CAAU,qBAAA,EAAuB,IAAA,CAAK,MAAM,CAAA;AAAA,MACvD;AAAA,MACA,aAAA,GAAgB;AACZ,QAAA,OAAO,SAAA,CAAU,iBAAA,EAAmB,IAAA,CAAK,MAAM,CAAA;AAAA,MACnD;AAAA,KACJ;AAWA,IAAM,KAAN,MAAS;AAAA,MACL,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAI,sBAAA,EAAuB;AAChD,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,eAAA,GAAkB,oBAAA,CAAqB,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA;AACtE,QAAA,IAAI,eAAA,KAAoB,GAAA;AACpB,UAAA,OAAO,SAAA,CAAU,MAAM,eAAe,CAAA;AAC1C,QAAA,MAAM,YAAA,GAAe,gBAAgB,IAAA,EAAK;AAC1C,QAAA,MAAM,aAAA,GAAgB,SAAA,CAAU,KAAA,CAAM,YAAY,CAAA;AAClD,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,aAAA,CAAc,OAAA,CAAQ,aAAa,CAAA;AAC3D,QAAA,IAAI,UAAA,KAAe,aAAA;AACf,UAAA,OAAO,UAAA;AACX,QAAA,OAAO,IAAA,CAAK,kBAAkB,aAAA,EAAe,IAAA,CAAK,eAAe,IAAA,CAAK,cAAA,CAAe,UAAU,CAAC,CAAA;AAAA,MACpG;AAAA;AAAA,MAEA,eAAe,UAAA,EAAY;AACvB,QAAA,IAAI,CAAC,UAAA,IAAc,CAAC,UAAA,CAAW,WAAA;AAC3B,UAAA,OAAO,MAAA;AACX,QAAA,OAAO,UAAA,CAAW,WAAA;AAAA,MACtB;AAAA;AAAA,MAEA,iBAAA,CAAkB,OAAO,WAAA,EAAa;AAClC,QAAA,QAAQ,WAAA;AAAa,UACjB,KAAK,MAAA;AACD,YAAA,OAAO,YAAY,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5B,KAAK,QAAA;AACD,YAAA,OAAO,YAAY,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5B,KAAK,aAAA;AACD,YAAA,OAAO,qBAAqB,KAAK,CAAA,EAAA,CAAA;AAAA,UACrC,KAAK,eAAA;AACD,YAAA,OAAO,YAAY,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5B,KAAK,cAAA;AACD,YAAA,OAAO,uBAAuB,KAAK,CAAA,EAAA,CAAA;AAAA,UACvC,KAAK,QAAA;AACD,YAAA,OAAO,aAAa,KAAK,CAAA,CAAA,CAAA;AAAA,UAC7B,KAAK,aAAA;AACD,YAAA,OAAO,sBAAsB,KAAK,CAAA,EAAA,CAAA;AAAA,UACtC,KAAK,SAAA;AACD,YAAA,OAAO,cAAc,KAAK,CAAA,CAAA,CAAA;AAAA,UAC9B,KAAK,YAAA;AACD,YAAA,OAAO,YAAY,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5B,KAAK,iBAAA;AACD,YAAA,OAAO,qBAAqB,KAAK,CAAA,EAAA,CAAA;AAAA,UACrC,KAAK,mBAAA;AACD,YAAA,OAAO,qBAAqB,KAAK,CAAA,EAAA,CAAA;AAAA,UACrC,KAAK,wBAAA;AACD,YAAA,OAAO,8BAA8B,KAAK,CAAA,GAAA,CAAA;AAAA,UAC9C,KAAK,WAAA;AACD,YAAA,OAAO,YAAY,KAAK,CAAA,CAAA,CAAA;AAAA,UAC5B;AACI,YAAA,OAAO,KAAA;AAAA;AACf,MACJ;AAAA,KACJ;AAGA,IAAM,QAAA,GAAN,MAAM,SAAA,CAAS;AAAA,MACX,YAAY,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AAAA,MAClB;AAAA,MACA,OAAO,QAAQ,KAAA,EAAO;AAClB,QAAA,OAAO,IAAI,SAAA,CAAS,KAAK,CAAA,CAAE,QAAA,EAAS;AAAA,MACxC;AAAA,MACA,QAAA,GAAW;AACP,QAAA,IAAI,IAAI,EAAA,EAAI,EAAA;AAGZ,QAAA,OAAA,CAAS,EAAA,GAAA,CAAM,EAAA,GAAA,CAAM,EAAA,GAAK,IAAA,CAAK,gBAAA,EAAiB,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAA,CAAK,YAAA,EAAa,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAA,CAAK,aAAA,EAAc,MAAO,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,IAAI,sBAAA,EAAuB,CAAE,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MACrP;AAAA,MACA,gBAAA,GAAmB;AACf,QAAA,OAAO,SAAA,CAAU,sBAAA,EAAwB,IAAA,CAAK,MAAM,CAAA;AAAA,MACxD;AAAA,MACA,YAAA,GAAe;AACX,QAAA,OAAO,SAAA,CAAU,uBAAA,EAAyB,IAAA,CAAK,MAAM,CAAA;AAAA,MACzD;AAAA,MACA,aAAA,GAAgB;AACZ,QAAA,OAAO,SAAA,CAAU,iBAAA,EAAmB,IAAA,CAAK,MAAM,CAAA;AAAA,MACnD;AAAA,KACJ;AAWA,IAAM,KAAN,MAAS;AAAA,MACL,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,eAAA,GAAkB,oBAAA,CAAqB,IAAA,CAAK,cAAA,CAAe,KAAK,CAAA;AACtE,QAAA,MAAM,YAAA,GAAe,gBAAgB,IAAA,EAAK;AAC1C,QAAA,OAAO,QAAA,CAAS,QAAQ,YAAY,CAAA;AAAA,MACxC;AAAA,KACJ;AAWA,IAAM,KAAN,MAAS;AAAA,MACL,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,kBAAkB,oBAAA,CAAqB,IAAA,CAAK,cAAA,CAAe,KAAK,EAAE,IAAA,EAAK;AAC7E,QAAA,MAAM,cAAA,GAAiB,SAAA,CAAU,iBAAA,EAAmB,eAAe,CAAA;AACnE,QAAA,OAAO,cAAA,IAAkB,eAAA;AAAA,MAC7B;AAAA,KACJ;AAWA,IAAM,QAAN,MAAY;AAAA,MACR,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,sBAAsB,IAAA,CAAK,cAAA,CAAe,SAC3C,GAAA,CAAI,CAAC,UAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,GAAG,CAAA;AACb,QAAA,OAAO,UAAU,mBAAmB,CAAA,CAAA,CAAA;AAAA,MACxC;AAAA,KACJ;AAGA,IAAM,SAAN,MAAa;AAAA,MACT,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,gBAAA,EAAkB;AACnD,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA;AACxB,QAAA,IAAA,CAAK,OAAO,IAAA,IAAQ,GAAA;AACpB,QAAA,IAAA,CAAK,QAAQ,KAAA,IAAS,GAAA;AAAA,MAC1B;AAAA,MACA,MAAM,aAAA,EAAe;AACjB,QAAA,MAAM,wBAAwB,sBAAA,CAAuB,IAAA,CAAK,eAAe,IAAA,CAAK,UAAA,EAAY,KAAK,gBAAgB,CAAA;AAC/G,QAAA,OAAO,IAAI,eAAe,IAAA,CAAK,IAAA,EAAM,KAAK,KAAK,CAAA,CAAE,KAAK,qBAAqB,CAAA;AAAA,MAC/E;AAAA,KACJ;AAGA,IAAM,aAAN,MAAiB;AAAA,MACb,WAAA,CAAY,MAAM,KAAA,EAAO;AACrB,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACjB;AAAA,MACA,KAAK,GAAA,EAAK;AACN,QAAA,OAAO,IAAI,eAAe,IAAA,CAAK,IAAA,EAAM,KAAK,KAAK,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,MAC7D;AAAA,MACA,cAAA,GAAiB;AACb,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,GAAG,CAAA;AAAA,MACjC;AAAA,MACA,iBAAA,GAAoB;AAChB,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,GAAG,CAAA;AAAA,MACjC;AAAA,MACA,WAAA,GAAc;AACV,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,GAAG,CAAA;AAAA,MACjC;AAAA,MACA,UAAA,GAAa;AACT,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,EAAK,GAAG,CAAA;AAAA,MACjC;AAAA,MACA,YAAA,GAAe;AACX,QAAA,OAAO,KAAK,IAAA,KAAS,IAAA,CAAK,SAAS,oBAAA,CAAqB,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,MACzE;AAAA,MACA,WAAA,GAAc;AACV,QAAA,OAAO,IAAA,CAAK,SAAS,IAAA,CAAK,KAAA;AAAA,MAC9B;AAAA,MACA,QAAA,CAAS,eAAe,cAAA,EAAgB;AACpC,QAAA,OAAO,IAAA,CAAK,IAAA,KAAS,aAAA,IAAiB,IAAA,CAAK,KAAA,KAAU,cAAA;AAAA,MACzD;AAAA,KACJ;AAGA,IAAM,SAAN,MAAa;AAAA,MACT,WAAA,CAAY,MAAM,KAAA,EAAO;AACrB,QAAA,IAAA,CAAK,eAAA,GAAkB,QAAA;AACvB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAI,UAAA,CAAW,IAAA,EAAM,KAAK,CAAA;AAAA,MAChD;AAAA,MACA,MAAM,aAAA,EAAe;AACjB,QAAA,MAAM,UAAU,IAAA,CAAK,QAAA;AACrB,QAAA,MAAM,MAAA,GAAS,WAAW,OAAO,CAAA;AAAA,EAAM,aAAA,CAAc,IAAA,CAAK,EAAE,CAAC;AAAA,MAAA,EAAW,OAAO,CAAA,CAAA,CAAA;AAC/E,QAAA,OAAO,YAAY,IAAA,CAAK,eAAA,GAAkB,KAAK,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA,GAAI,MAAA;AAAA,MAC7E;AAAA,MACA,IAAI,QAAA,GAAW;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,cAAA,EAAe;AAC/B,UAAA,OAAO,SAAA;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,iBAAA,EAAkB;AAClC,UAAA,OAAO,SAAA;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,WAAA,EAAY;AAC5B,UAAA,OAAO,SAAA;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,UAAA,EAAW;AAC3B,UAAA,OAAO,SAAA;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,YAAA,EAAa;AAC7B,UAAA,OAAO,SAAA;AACX,QAAA,IAAI,IAAA,CAAK,WAAW,WAAA,EAAY;AAC5B,UAAA,OAAO,IAAA,CAAK,eAAA;AAChB,QAAA,OAAO,SAAA;AAAA,MACX;AAAA,KACJ;AAYA,IAAM,UAAN,MAAc;AAAA,MACV,YAAY,aAAA,EAAe;AACvB,QAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AACtB,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,cAAA,CAAe,UAAA,CAAW,IAAA,IAAQ,EAAA;AACnD,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,cAAA,CAAe,UAAA,CAAW,KAAA,IAAS,EAAA;AAAA,MACzD;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,gBAAgB,IAAA,CAAK,cAAA,CAAe,QAAA,CACrC,GAAA,CAAI,CAAC,KAAA,KAAU,6BAAA,CAA8B,KAAK,CAAC,EACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA;AAC3C,QAAA,IAAI,IAAA,CAAK,sBAAA,CAAuB,IAAA,CAAK,cAAA,CAAe,UAAU,QAAQ,CAAA;AAClE,UAAA,OAAO,IAAI,OAAO,IAAA,CAAK,IAAA,EAAM,KAAK,KAAK,CAAA,CAAE,MAAM,aAAa,CAAA;AAChE,QAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,UAAA,CAAW,UAAA;AACtD,QAAA,MAAM,yBAAyB,cAAA,KAAmB,MAAA;AAClD,QAAA,MAAM,kBAAkB,cAAA,GAAiB,KAAA,CAAM,IAAA,CAAK,cAAc,IAAI,EAAC;AAEvE,QAAA,MAAM,gBAAA,GAAmB,CAAC,sBAAA,GAAyB,GAAA,GAAM,EAAA;AACzD,QAAA,OAAO,IAAI,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,eAAA,EAAiB,gBAAgB,CAAA,CAAE,KAAA,CAAM,aAAa,CAAA;AAAA,MACnG;AAAA;AAAA,MAEA,sBAAA,CAAuB,gBAAgB,WAAA,EAAa;AAChD,QAAA,IAAI,EAAA;AAGJ,QAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,cAAc,CAAA;AAChC,QAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,OAAA,GAAU,MAAM,GAAA,EAAI;AAC1B,UAAA,IAAI,QAAQ,IAAA,KAAS,WAAA;AACjB,YAAA,OAAO,IAAA;AACX,UAAA,KAAA,CAAM,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,OAAA,CAAQ,QAAA,MAAc,QAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAG,CAAA;AAAA,QAC/E;AACA,QAAA,OAAO,KAAA;AAAA,MACX;AAAA,KACJ;AAMA,IAAM,4BAAA,GAAN,cAA2C,KAAA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO7C,WAAA,CAAY,OAAA,EAAS,qBAAA,EAAuB,oBAAA,EAAsB,aAAa,SAAA,EAAW;AACtF,QAAA,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,eAAA,EAAkB,UAAU,IAAI,qBAAqB,CAAA,yBAAA,EAA4B,oBAAoB,CAAA,CAAE,CAAA;AACvH,QAAA,IAAA,CAAK,IAAA,GAAO,8BAAA;AAAA,MAChB;AAAA,KACJ;AAmBA,IAAM,gBAAN,MAAoB;AAAA,MAChB,YAAY,GAAA,EAAK;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,IAAI,CAAC,IAAA,CAAK,IAAA;AACN,UAAA,OAAO,IAAA;AACX,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,IAAA,GAAO,WAAA,EAAY;AAE3C,QAAA,IAAI,KAAA,KAAU,QAAA;AACV,UAAA,OAAO,IAAA;AACX,QAAA,IAAI,KAAA,KAAU,MAAA;AACV,UAAA,OAAO,YAAA,CAAa,4BAA4B,GAAG,CAAA;AACvD,QAAA,IAAI,KAAA,KAAU,OAAA;AACV,UAAA,OAAO,YAAA,CAAa,4BAA4B,CAAC,CAAA;AACrD,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,6BAA6B,CAAA;AACvD,QAAA,IAAI,CAAC,KAAA;AACD,UAAA,OAAO,IAAA;AACX,QAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAClC,QAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,QAAA,IAAI,MAAA,KAAW,CAAA;AACX,UAAA,OAAO,KAAA;AAEX,QAAA,IAAI,IAAA,KAAS,EAAA;AACT,UAAA,OAAO,MAAA,KAAW,CAAA,GAAI,IAAA,GAAO,YAAA,CAAa,SAAS,yBAAyB,CAAA;AAEhF,QAAA,IAAI,IAAA,KAAS,IAAA;AACT,UAAA,OAAO,YAAA,CAAa,SAAS,SAAS,CAAA;AAE1C,QAAA,IAAI,IAAA,KAAS,GAAA;AACT,UAAA,OAAO,YAAA,CAAc,MAAA,GAAS,GAAA,GAAO,yBAAyB,CAAA;AAElE,QAAA,IAAI,gBAAA,CAAiB,SAAS,IAAI,CAAA;AAC9B,UAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,IAAI,CAAA,CAAA;AAE3B,QAAA,OAAO,IAAA;AAAA,MACX;AAAA,KACJ;AAEA,IAAM,yBAAA,GAA4B,GAAA;AAElC,IAAM,SAAA,GAAY,IAAA;AAElB,IAAM,gBAAA,GAAmB,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AA8BpF,IAAM,QAAN,MAAY;AAAA,MACR,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,QAAA,EAAU,IAAA,EAAK,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,MAAM,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AAC/D,QAAA,MAAM,MAAM,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AAC/D,QAAA,IAAI,KAAK,WAAA,EAAY;AACjB,UAAA,OAAO,CAAA,EAAG,KAAK,sBAAA,CAAuB,GAAG,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,sBAAA,CAAuB,GAAG,CAAC,CAAA,CAAA;AAClF,QAAA,MAAM,SAAA,GAAY,IAAI,aAAA,CAAc,IAAA,CAAK,eAAe,UAAA,CAAW,aAAa,EAAE,OAAA,EAAQ;AAC1F,QAAA,IAAI,SAAA,KAAc,IAAA;AACd,UAAA,OAAO,CAAA,cAAA,EAAiB,SAAS,CAAA,IAAA,EAAO,GAAG,KAAK,GAAG,CAAA,CAAA,CAAA;AACvD,QAAA,OAAO,CAAA,OAAA,EAAU,GAAG,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAA;AAAA,MAChC;AAAA;AAAA,MAEA,uBAAuB,GAAA,EAAK;AACxB,QAAA,OAAO,IAAI,kBAAA,EAAmB,CAAE,qBAAA,CAAsB,GAAG,CAAA;AAAA,MAC7D;AAAA;AAAA,MAEA,WAAA,GAAc;AACV,QAAA,OAAO,CAAC,CAAC,IAAA,CAAK,cAAA,CAAe,UAAA,CAAW,QAAA;AAAA,MAC5C;AAAA,KACJ;AAWA,IAAM,QAAN,MAAY;AAAA,MACR,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,UAAU,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AACnE,QAAA,MAAM,YAAY,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AACrE,QAAA,OAAO,CAAA,OAAA,EAAU,SAAS,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,CAAA;AAAA,MAC1C;AAAA,KACJ;AAWA,IAAM,UAAN,MAAc;AAAA,MACV,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAC1B,QAAA,IAAI,KAAK,SAAA,EAAU;AACf,UAAA,OAAO,SACF,GAAA,CAAI,CAAC,KAAA,KAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,cAAc,SAAA,CAAU,OAAA,EAAS,CAAA,CACtC,KAAK,oBAAoB,CAAA;AAClC,QAAA,OAAO,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AAAA,MAC9D;AAAA;AAAA,MAEA,SAAA,GAAY;AACR,QAAA,MAAM,EAAE,UAAA,EAAW,GAAI,IAAA,CAAK,cAAA,CAAe,UAAA;AAC3C,QAAA,OAAO,UAAA,KAAe,YAAY,CAAC,UAAA;AAAA,MACvC;AAAA,KACJ;AAYA,IAAM,WAAN,MAAe;AAAA,MACX,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,sBAAsB,IAAA,CAAK,cAAA,CAAe,SAC3C,GAAA,CAAI,CAAC,UAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,GAAG,CAAA;AACb,QAAA,IAAI,KAAK,SAAA,KAAc,WAAA;AACnB,UAAA,OAAO,qBAAqB,mBAAmB,CAAA,SAAA,CAAA;AACnD,QAAA,IAAI,KAAK,SAAA,KAAc,SAAA;AACnB,UAAA,OAAO,UAAU,mBAAmB,CAAA,CAAA,CAAA;AACxC,QAAA,IAAI,CAAC,KAAA,EAAO,YAAA,EAAc,QAAQ,CAAA,CAAE,QAAA,CAAS,KAAK,SAAS,CAAA;AACvD,UAAA,OAAO,WAAW,mBAAmB,CAAA,CAAA,CAAA;AACzC,QAAA,IAAI,KAAK,SAAA,KAAc,MAAA;AACnB,UAAA,OAAO,UAAU,mBAAmB,CAAA,CAAA;AACxC,QAAA,IAAI,KAAK,SAAA,KAAc,OAAA;AACnB,UAAA,OAAO,GAAG,mBAAmB,CAAA,QAAA,CAAA;AACjC,QAAA,IAAI,KAAK,SAAA,KAAc,KAAA;AACnB,UAAA,OAAO,cAAc,mBAAmB,CAAA,CAAA,CAAA;AAC5C,QAAA,IAAI,KAAK,SAAA,KAAc,QAAA;AACnB,UAAA,OAAO,eAAe,mBAAmB,CAAA,CAAA,CAAA;AAC7C,QAAA,IAAI,KAAK,SAAA,KAAc,kBAAA;AACnB,UAAA,OAAO,YAAY,mBAAmB,CAAA,CAAA,CAAA;AAC1C,QAAA,IAAI,KAAK,SAAA,KAAc,oBAAA;AACnB,UAAA,OAAO,aAAa,mBAAmB,CAAA,CAAA,CAAA;AAC3C,QAAA,IAAI,KAAK,SAAA,KAAc,iBAAA;AACnB,UAAA,OAAO,gBAAgB,mBAAmB,CAAA,CAAA,CAAA;AAC9C,QAAA,IAAI,CAAC,gBAAA,EAAkB,kBAAkB,CAAA,CAAE,QAAA,CAAS,KAAK,SAAS,CAAA;AAC9D,UAAA,OAAO,aAAa,mBAAmB,CAAA,CAAA,CAAA;AAC3C,QAAA,IAAI,KAAK,SAAA,KAAc,SAAA;AACnB,UAAA,OAAO,eAAe,mBAAmB,CAAA,SAAA,CAAA;AAC7C,QAAA,IAAI,KAAK,SAAA,KAAc,aAAA;AACnB,UAAA,OAAO,wBAAwB,mBAAmB,CAAA,EAAA,CAAA;AACtD,QAAA,OAAO,6BAA6B,mBAAmB,CAAA,CAAA,CAAA;AAAA,MAC3D;AAAA;AAAA,MAEA,IAAI,SAAA,GAAY;AACZ,QAAA,OAAO,IAAA,CAAK,cAAA,CAAe,UAAA,CAAW,QAAA,IAAY,SAAA;AAAA,MACtD;AAAA,KACJ;AAWA,IAAM,SAAN,MAAa;AAAA,MACT,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,sBAAsB,IAAA,CAAK,cAAA,CAAe,SAC3C,GAAA,CAAI,CAAC,UAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,GAAG,CAAA;AACb,QAAA,OAAO,gBAAgB,mBAAmB,CAAA,CAAA,CAAA;AAAA,MAC9C;AAAA,KACJ;AAWA,IAAM,WAAN,MAAe;AAAA,MACX,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,OAAO,EAAA;AAAA,MACX;AAAA,KACJ;AAYA,IAAM,OAAN,MAAW;AAAA,MACP,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,SAAA,GAAY,SAAS,CAAC,CAAA;AAC5B,QAAA,MAAM,aAAA,GAAgB,SAAS,CAAC,CAAA;AAChC,QAAA,OAAO,CAAA,EAAG,KAAK,gBAAA,CAAiB,SAAS,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,oBAAA,CAAqB,aAAa,CAAC,CAAA,CAAA;AAAA,MAC1F;AAAA;AAAA,MAEA,iBAAiB,IAAA,EAAM;AACnB,QAAA,MAAM,eAAe,IAAA,CAAK,QAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,6BAAA,CAA8B,IAAI,CAAA,CAAE,OAAA,EAAQ;AAC5D,QAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG;AAC1B,UAAA,OAAO,OAAA;AAAA,QACX;AACA,QAAA,OAAO,IAAI,kBAAA,EAAmB,CAAE,qBAAA,CAAsB,OAAO,CAAA;AAAA,MACjE;AAAA;AAAA,MAEA,qBAAqB,QAAA,EAAU;AAC3B,QAAA,MAAM,WAAA,GAAc,6BAAA,CAA8B,QAAQ,CAAA,CAAE,OAAA,EAAQ;AACpE,QAAA,OAAO,IAAI,cAAA,EAAe,CAAE,IAAA,CAAK,WAAW,CAAA;AAAA,MAChD;AAAA,KACJ;AAYA,IAAM,OAAN,MAAW;AAAA,MACP,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,SAAA,GAAY,SAAS,CAAC,CAAA;AAC5B,QAAA,MAAM,cAAA,GAAiB,SAAS,CAAC,CAAA;AACjC,QAAA,OAAO,CAAA,EAAG,KAAK,gBAAA,CAAiB,SAAS,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,qBAAA,CAAsB,cAAc,CAAC,CAAA,CAAA;AAAA,MAC5F;AAAA;AAAA,MAEA,iBAAiB,IAAA,EAAM;AACnB,QAAA,MAAM,eAAe,IAAA,CAAK,QAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,6BAAA,CAA8B,IAAI,CAAA,CAAE,OAAA,EAAQ;AAC5D,QAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG;AAC1B,UAAA,OAAO,OAAA;AAAA,QACX;AACA,QAAA,OAAO,IAAI,kBAAA,EAAmB,CAAE,qBAAA,CAAsB,OAAO,CAAA;AAAA,MACjE;AAAA;AAAA,MAEA,sBAAsB,SAAA,EAAW;AAC7B,QAAA,MAAM,YAAA,GAAe,6BAAA,CAA8B,SAAS,CAAA,CAAE,OAAA,EAAQ;AACtE,QAAA,OAAO,IAAI,cAAA,EAAe,CAAE,IAAA,CAAK,YAAY,CAAA;AAAA,MACjD;AAAA,KACJ;AAYA,IAAM,UAAN,MAAc;AAAA,MACV,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,SAAA,GAAY,SAAS,CAAC,CAAA;AAC5B,QAAA,MAAM,cAAA,GAAiB,SAAS,CAAC,CAAA;AACjC,QAAA,MAAM,gBAAA,GAAmB,SAAS,CAAC,CAAA;AACnC,QAAA,OAAO,CAAA,EAAG,IAAA,CAAK,gBAAA,CAAiB,SAAS,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,qBAAA,CAAsB,cAAc,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,uBAAA,CAAwB,gBAAgB,CAAC,CAAA,CAAA;AAAA,MAC9I;AAAA;AAAA,MAEA,iBAAiB,IAAA,EAAM;AACnB,QAAA,MAAM,eAAe,IAAA,CAAK,QAAA;AAC1B,QAAA,MAAM,OAAA,GAAU,6BAAA,CAA8B,IAAI,CAAA,CAAE,OAAA,EAAQ;AAC5D,QAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG;AAC1B,UAAA,OAAO,OAAA;AAAA,QACX;AACA,QAAA,OAAO,IAAI,kBAAA,EAAmB,CAAE,qBAAA,CAAsB,OAAO,CAAA;AAAA,MACjE;AAAA;AAAA,MAEA,sBAAsB,SAAA,EAAW;AAC7B,QAAA,MAAM,YAAA,GAAe,6BAAA,CAA8B,SAAS,CAAA,CAAE,OAAA,EAAQ;AACtE,QAAA,OAAO,IAAI,cAAA,EAAe,CAAE,IAAA,CAAK,YAAY,CAAA;AAAA,MACjD;AAAA;AAAA,MAEA,wBAAwB,WAAA,EAAa;AACjC,QAAA,MAAM,cAAA,GAAiB,6BAAA,CAA8B,WAAW,CAAA,CAAE,OAAA,EAAQ;AAC1E,QAAA,OAAO,IAAI,cAAA,EAAe,CAAE,IAAA,CAAK,cAAc,CAAA;AAAA,MACnD;AAAA,KACJ;AAkBA,IAAM,gBAAN,MAAoB;AAAA,MAChB,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,IAAI,SAAS,MAAA,KAAW,CAAA;AACpB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,GAAG,UAAU,CAAA;AACjE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA;AACxC,QAAA,MAAM,EAAE,YAAY,WAAA,EAAY,GAAI,KAAK,aAAA,CAAc,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAA;AACxE,QAAA,OAAO,IAAA,CAAK,YAAY,UAAA,EAAY,IAAI,IAAI,IAAA,GAAO,IAAA,CAAK,WAAA,CAAY,WAAA,EAAa,KAAK,CAAA;AAAA,MAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,IAAA,EAAM;AACb,QAAA,MAAM,KAAA,GAAQ,6BAAA,CAA8B,IAAI,CAAA,CAAE,OAAA,EAAQ;AAC1D,QAAA,IAAI,KAAA,KAAU,EAAA;AACV,UAAA,OAAO,IAAA;AACX,QAAA,OAAO,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,KAAA,GAAQ,IAAI,KAAK,CAAA,CAAA,CAAA;AAAA,MACjD;AAAA;AAAA,MAEA,cAAc,OAAA,EAAS;AACnB,QAAA,MAAM,cAAc,OAAA,CAAQ,SAAA,CAAU,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,aAAa,CAAA;AAC7E,QAAA,MAAM,cAAc,WAAA,KAAgB,EAAA,GAAK,UAAU,OAAA,CAAQ,KAAA,CAAM,GAAG,WAAW,CAAA;AAC/E,QAAA,MAAM,UAAA,GAAa,gBAAgB,EAAA,GAAK,KAAK,OAAA,CAAQ,KAAA,CAAM,cAAc,CAAC,CAAA;AAC1E,QAAA,OAAO,EAAE,UAAA,EAAY,IAAA,CAAK,QAAA,CAAS,UAAU,GAAG,WAAA,EAAa,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAE;AAAA,MAC5F;AAAA,MACA,SAAS,QAAA,EAAU;AACf,QAAA,MAAM,QAAQ,EAAC;AACf,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA,EAAG;AACzC,UAAA,KAAA,CAAM,KAAK,EAAE,GAAA,EAAK,IAAA,CAAK,YAAA,CAAa,SAAS,CAAC,CAAC,CAAA,EAAG,GAAA,EAAK,KAAK,YAAA,CAAa,QAAA,CAAS,IAAI,CAAC,CAAC,GAAG,CAAA;AAAA,QAC/F;AACA,QAAA,OAAO,KAAA;AAAA,MACX;AAAA;AAAA,MAEA,aAAa,OAAA,EAAS;AAClB,QAAA,IAAI,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,IAAA,KAAS,MAAA;AAC1C,UAAA,OAAO,EAAA;AACX,QAAA,OAAO,6BAAA,CAA8B,OAAO,CAAA,CAAE,OAAA,EAAQ;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAA,CAAY,OAAO,WAAA,EAAa;AAC5B,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,IAAI,iBAAiB,CAAC,WAAA;AACtB,QAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,UAAA,MAAM,OAAA,GAAA,CAAW,IAAA,CAAK,GAAA,GAAM,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,EAAA,KAAO,IAAA,CAAK,GAAA,GAAM,CAAA,EAAA,EAAK,IAAA,CAAK,GAAG,CAAA,CAAA,CAAA,GAAM,EAAA,CAAA;AACpF,UAAA,IAAI,OAAA,KAAY,EAAA;AACZ,YAAA;AACJ,UAAA,KAAA,IAAA,CAAU,cAAA,GAAiB,KAAK,IAAA,IAAQ,OAAA;AACxC,UAAA,cAAA,GAAiB,KAAA;AAAA,QACrB;AACA,QAAA,OAAO,KAAA;AAAA,MACX;AAAA,KACJ;AAGA,IAAM,cAAN,MAAkB;AAAA,MACd,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,eAAe,WAAA,IAAe,QAAA;AAAA,MACvC;AAAA,MACA,MAAM,KAAA,EAAO;AACT,QAAA,OAAO,KAAK,SAAA,CAAU,MAAA,CAAO,CAAC,GAAA,EAAK,SAAS,KAAA,KAAU;AAClD,UAAA,IAAI,KAAA,KAAU,CAAA;AACV,YAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAA;AAC9B,UAAA,OAAO,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAA;AAAA,QAC5B,GAAG,EAAE,CAAA;AAAA,MACT;AAAA,MACA,IAAI,SAAA,GAAY;AACZ,QAAA,QAAQ,KAAK,YAAA;AAAc,UACvB,KAAK,MAAA;AACD,YAAA,OAAO,CAAC,UAAU,CAAA;AAAA,UACtB,KAAK,QAAA;AACD,YAAA,OAAO,CAAC,UAAU,CAAA;AAAA,UACtB,KAAK,aAAA;AACD,YAAA,OAAO,CAAC,YAAY,UAAU,CAAA;AAAA,UAClC,KAAK,eAAA;AACD,YAAA,OAAO,CAAC,UAAU,CAAA;AAAA,UACtB,KAAK,WAAA;AACD,YAAA,OAAO,CAAC,UAAU,CAAA;AAAA,UACtB,KAAK,cAAA;AAAA,UACL,KAAK,SAAA;AACD,YAAA,OAAO,CAAC,YAAY,CAAA;AAAA,UACxB;AACI,YAAA,OAAO,CAAC,QAAQ,CAAA;AAAA;AACxB,MACJ;AAAA,KACJ;AAYA,IAAM,QAAN,MAAY;AAAA,MACR,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,UAAA,EAAY,KAAA,EAAM,GAAI,IAAA,CAAK,cAAA;AACnC,QAAA,OAAO,CAAC,GAAG,KAAK,CAAA,CACX,GAAA,CAAI,CAAC,IAAA,KAAS;AAEf,UAAA,IAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA,IAAK,IAAA,KAAS,GAAA;AACvC,YAAA,OAAO;AAAA,cACH,KAAA,EAAO,IAAA;AAAA,cACP,cAAA,EAAgB;AAAA,aACpB;AAEJ,UAAA,OAAO;AAAA,YACH,KAAA,EAAO,IAAA;AAAA,YACP,cAAA,EAAgB;AAAA,WACpB;AAAA,QACJ,CAAC,CAAA,CACI,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS;AAEvB,UAAA,IAAI,KAAK,cAAA,EAAgB;AACrB,YAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA;AACnC,YAAA,IAAI,QAAA,IAAY,SAAS,cAAA,EAAgB;AACrC,cAAA,QAAA,CAAS,SAAS,IAAA,CAAK,KAAA;AACvB,cAAA,OAAO,GAAA;AAAA,YACX;AAAA,UACJ;AACA,UAAA,OAAO,CAAC,GAAG,GAAA,EAAK,IAAI,CAAA;AAAA,QACxB,GAAG,EAAE,CAAA,CACA,GAAA,CAAI,CAAC,IAAA,KAAS;AACf,UAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACtB,YAAA,OAAO,IAAI,EAAA,CAAG;AAAA,cACV,IAAA,EAAM,IAAA;AAAA,cACN,YAAY,EAAC;AAAA,cACb,UAAU,EAAC;AAAA,cACX,OAAO,IAAA,CAAK;AAAA,aACf,EAAE,OAAA,EAAQ;AAAA,UACf;AACA,UAAA,OAAO,IAAI,WAAA,CAAY,UAAA,CAAW,WAAW,CAAA,CAAE,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,QACnE,CAAC,CAAA,CACI,IAAA,CAAK,EAAE,CAAA;AAAA,MAChB;AAAA,KACJ;AAWA,IAAM,aAAN,MAAiB;AAAA,MACb,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,OAAO,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AAChE,QAAA,MAAM,eAAe,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AACxE,QAAA,MAAM,cAAc,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AACvE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,YAAY,MAAM,WAAW,CAAA,CAAA,CAAA;AAAA,MACpD;AAAA,KACJ;AAgBA,IAAM,iBAAA,GAAN,MAAM,kBAAA,CAAkB;AAAA,MACpB,YAAY,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AAAA,MAClB;AAAA;AAAA,MAEA,OAAO,QAAQ,KAAA,EAAO;AAClB,QAAA,OAAO,IAAI,kBAAA,CAAkB,KAAK,CAAA,CAAE,QAAA,EAAS;AAAA,MACjD;AAAA,MACA,QAAA,GAAW;AACP,QAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,IAAA,CAAK,oBAAoB,CAAA;AAChD,QAAA,OAAO,OAAO,GAAA,CAAI,OAAO,CAAA,IAAK,MAAA,CAAO,IAAI,MAAM,CAAA;AAAA,MACnD;AAAA,MACA,kBAAA,GAAqB;AACjB,QAAA,MAAM,IAAA,GAAO,KAAK,KAAA,EAAM;AACxB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG,EAAE,CAAA;AACxE,QAAA,OAAO,CAAC,IAAA,CAAK,MAAA,EAAQ,GAAG,IAAA,EAAM,GAAG,KAAK,CAAA,CACjC,GAAA,CAAI,CAAC,YAAY,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,CAC/C,OAAO,CAAC,KAAA,KAAU,CAAC,CAAC,KAAK,CAAA,CACzB,MAAA,CAAO,CAAC,GAAA,EAAK,UAAU,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,IAAA,GAAO,KAAA,CAAM,KAAK,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,MACzE;AAAA,MACA,KAAA,GAAQ;AACJ,QAAA,OAAO,IAAA,CAAK,OAAO,QAAA,CAAS,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,MACtE;AAAA,MACA,OAAO,GAAA,EAAK;AACR,QAAA,OAAO,IAAI,QAAA,CAAS,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,MAC9D;AAAA,KACJ;AAeA,IAAM,SAAN,MAAa;AAAA,MACT,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,eAAe,IAAA,CAAK,cAAA,CAAe,SACpC,GAAA,CAAI,CAAC,UAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,SAAS,CAAA;AAEnB,QAAA,IAAI,IAAA,CAAK,SAAS,YAAY,CAAA;AAC1B,UAAA,OAAO,IAAA,CAAK,KAAA,CAAM,YAAA,EAAc,QAAQ,CAAA;AAC5C,QAAA,IAAI,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAC5B,UAAA,OAAO,IAAA,CAAK,MAAM,YAAA,EAAc,iBAAA,CAAkB,QAAQ,IAAA,CAAK,cAAc,CAAA,GAAI,SAAA,GAAY,QAAQ,CAAA;AAAA,QACzG;AACA,QAAA,OAAO,YAAA;AAAA,MACX;AAAA;AAAA,MAEA,KAAA,CAAM,OAAO,WAAA,EAAa;AACtB,QAAA,OAAO,CAAA,QAAA,EAAW,WAAW,CAAA,CAAA,EAAI,KAAK,SAAS,WAAW,CAAA,CAAA,CAAA;AAAA,MAC9D;AAAA;AAAA,MAEA,SAAS,IAAA,EAAM;AACX,QAAA,OAAO,CAAC,CAAC,IAAA,CAAK,cAAA,CAAe,WAAW,IAAI,CAAA;AAAA,MAChD;AAAA,KACJ;AAcA,IAAM,MAAN,MAAU;AAAA,MACN,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,MAAM,IAAA,CAAK,cAAA,CAAe,SAC3B,GAAA,CAAI,CAAC,UAAU,6BAAA,CAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,KAAK,CAAA;AAEf,QAAA,OAAO,KAAK,cAAA,CAAe,UAAA,CAAW,SAAS,CAAA,GAAI,CAAA,eAAA,EAAkB,GAAG,CAAA,aAAA,CAAA,GAAkB,GAAA;AAAA,MAC9F;AAAA,KACJ;AAYA,IAAM,wBAAN,MAA4B;AAAA,MACxB,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,OAAO,KAAK,cAAA,CAAe,QAAA,CACtB,IAAI,CAAC,KAAA,KAAU,8BAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,KACJ;AAGA,IAAM,kBAAN,MAAsB;AAAA,MAClB,YAAY,IAAA,EAAM;AACd,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,MACjB;AAAA,MACA,KAAA,CAAM,SAAS,MAAA,EAAQ;AACnB,QAAA,OAAO,YAAA,CAAa,QAAA,CAAS,MAAM,CAAA,GAAI,GAAG,MAAM,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,CAAA,GAAM,GAAG,IAAA,CAAK,eAAe,CAAA,CAAA,EAAI,MAAM,KAAK,OAAO,CAAA,CAAA,CAAA;AAAA,MAClH;AAAA,MACA,IAAI,eAAA,GAAkB;AAClB,QAAA,IAAI,IAAA,CAAK,UAAU,QAAA,CAAS,KAAA;AACxB,UAAA,OAAO,YAAA;AACX,QAAA,OAAO,WAAA;AAAA,MACX;AAAA,KACJ;AAEA,IAAA,CAAC,SAAUC,SAAAA,EAAU;AACjB,MAAAA,SAAAA,CAASA,SAAAA,CAAS,OAAO,CAAA,GAAI,CAAC,CAAA,GAAI,OAAA;AAClC,MAAAA,SAAAA,CAASA,SAAAA,CAAS,MAAM,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA;AAAA,IACrC,CAAA,EAAG,QAAA,KAAa,QAAA,GAAW,EAAC,CAAE,CAAA;AAY9B,IAAM,mBAAN,MAAuB;AAAA,MACnB,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,IAAA,CAAK,cAAA;AAChC,QAAA,MAAM,iBAAiB,QAAA,CAAS,MAAA;AAChC,QAAA,IAAI,cAAA,KAAmB,CAAA;AACnB,UAAA,MAAM,IAAI,4BAAA,CAA6B,IAAA,EAAM,CAAA,EAAG,cAAc,CAAA;AAClE,QAAA,MAAM,UAAU,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AACnE,QAAA,MAAM,SAAS,6BAAA,CAA8B,QAAA,CAAS,CAAC,CAAC,EAAE,OAAA,EAAQ;AAClE,QAAA,OAAO,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,MAAM,CAAA;AAAA,MAC7C;AAAA;AAAA,MAEA,aAAA,CAAc,SAAS,MAAA,EAAQ;AAC3B,QAAA,MAAM,IAAA,GAAO,KAAK,cAAA,CAAe,IAAA,CAAK,MAAM,OAAO,CAAA,GAAI,QAAA,CAAS,KAAA,GAAQ,QAAA,CAAS,IAAA;AACjF,QAAA,OAAO,IAAI,eAAA,CAAgB,IAAI,CAAA,CAAE,KAAA,CAAM,SAAS,MAAM,CAAA;AAAA,MAC1D;AAAA,KACJ;AASA,IAAM,mBAAA,GAAN,MAAM,oBAAA,CAAoB;AAAA,MACtB,YAAY,OAAA,EAAS;AACjB,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAAA,MACpB;AAAA;AAAA,MAEA,OAAO,QAAQ,OAAA,EAAS;AACpB,QAAA,OAAO,IAAI,oBAAA,CAAoB,OAAO,CAAA,CAAE,QAAA,EAAS;AAAA,MACrD;AAAA,MACA,QAAA,GAAW;AACP,QAAA,IAAI,EAAA;AACJ,QAAA,IAAI,IAAA,CAAK,SAAS,IAAA,KAAS,MAAA;AACvB,UAAA,OAAO,KAAA;AACX,QAAA,MAAM,QAAA,GAAA,CAAY,KAAK,IAAA,CAAK,QAAA,CAAS,cAAc,IAAA,IAAQ,EAAA,KAAO,MAAA,GAAS,EAAA,GAAK,EAAC;AACjF,QAAA,IAAI,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,MAAA,KAAW,CAAA;AAC7C,UAAA,OAAO,KAAA;AACX,QAAA,OAAO,KAAK,eAAA,CAAgB,QAAA,CAAS,CAAC,CAAC,KAAK,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,CAAC,CAAC,CAAA,IAAK,IAAA,CAAK,eAAA,CAAgB,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,MAC9G;AAAA,MACA,gBAAgB,KAAA,EAAO;AACnB,QAAA,OAAO,MAAM,IAAA,KAAS,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,MAAK,KAAM,GAAA;AAAA,MACzD;AAAA,MACA,SAAS,KAAA,EAAO;AACZ,QAAA,OAAO,MAAM,IAAA,KAAS,QAAA;AAAA,MAC1B;AAAA,MACA,gBAAgB,KAAA,EAAO;AACnB,QAAA,OAAO,KAAA,KAAU,UAAc,KAAA,CAAM,IAAA,KAAS,QAAQ,KAAA,CAAM,KAAA,CAAM,MAAK,KAAM,EAAA;AAAA,MACjF;AAAA,KACJ;AAeA,IAAM,OAAN,MAAW;AAAA,MACP,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AAEN,QAAA,IAAI,mBAAA,CAAoB,OAAA,CAAQ,IAAA,CAAK,cAAc,CAAA,EAAG;AAClD,UAAA,OAAO,KAAK,sBAAA,EAAuB;AAAA,QACvC;AACA,QAAA,OAAO,KAAK,cAAA,CAAe,QAAA,CACtB,IAAI,CAAC,KAAA,KAAU,8BAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA;AAAA,MAEA,sBAAA,GAAyB;AACrB,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,cAAA,CAAe,QAAA,CAAS,CAAC,CAAA;AAClD,QAAA,MAAM,eAAe,WAAA,CAAY,QAAA,CAC5B,IAAI,CAAC,KAAA,KAAU,8BAA8B,KAAK,CAAC,CAAA,CACnD,GAAA,CAAI,CAAC,SAAA,KAAc,SAAA,CAAU,SAAS,CAAA,CACtC,KAAK,QAAQ,CAAA;AAClB,QAAA,OAAO,kBAAkB,YAAY,CAAA,aAAA,CAAA;AAAA,MACzC;AAAA,KACJ;AAUA,IAAM,SAAN,MAAa;AAAA,MACT,YAAY,WAAA,EAAa;AACrB,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,IAAA,CAAK,cAAA,CAAe,UAAA;AAC1C,QAAA,IAAI,cAAc,SAAA,EAAW;AACzB,UAAA,OAAO,QAAA;AAAA,QACX;AACA,QAAA,OAAO,GAAA;AAAA,MACX;AAAA,KACJ;AAUA,IAAM,OAAN,MAAW;AAAA,MACP,YAAY,cAAA,EAAgB;AACxB,QAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,OAAA,GAAU;AACN,QAAA,OAAO,EAAA;AAAA,MACX;AAAA,KACJ;AAMA,IAAM,oBAAN,MAAwB;AAAA,MACpB,WAAA,GAAc;AACV,QAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AACZ,QAAA,IAAA,CAAK,KAAA,GAAQ,EAAA;AACb,QAAA,IAAA,CAAK,WAAW,EAAC;AACjB,QAAA,IAAA,CAAK,aAAa,EAAC;AAAA,MACvB;AAAA,KACJ;AAOA,IAAM,uCAAN,MAA2C;AAAA,MACvC,YAAY,aAAA,EAAe;AACvB,QAAA,IAAA,CAAK,iBAAiB,aAAA,KAAkB,IAAA,IAAQ,kBAAkB,MAAA,GAAS,aAAA,GAAgB,IAAI,iBAAA,EAAkB;AAAA,MACrH;AAAA;AAAA,MAEA,gBAAA,GAAmB;AACf,QAAA,MAAM,EAAE,IAAA,EAAK,GAAI,IAAA,CAAK,cAAA;AACtB,QAAA,MAAM,SAAA,GAAY,iCAAA,CAAkC,IAAI,CAAA,IAAK,qBAAA;AAC7D,QAAA,OAAO,IAAI,SAAA,CAAU,IAAA,CAAK,cAAc,CAAA;AAAA,MAC5C;AAAA,KACJ;AAEA,IAAM,iCAAA,GAAoC;AAAA,MACtC,IAAA,EAAM,MAAA;AAAA,MACN,EAAA,EAAI,EAAA;AAAA,MACJ,EAAA,EAAI,EAAA;AAAA,MACJ,EAAA,EAAI,EAAA;AAAA,MACJ,KAAA,EAAO,KAAA;AAAA,MACP,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,KAAA;AAAA,MACP,KAAA,EAAO,KAAA;AAAA,MACP,OAAA,EAAS,OAAA;AAAA,MACT,QAAA,EAAU,QAAA;AAAA,MACV,MAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAU,QAAA;AAAA,MACV,IAAA,EAAM,IAAA;AAAA,MACN,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS,OAAA;AAAA,MACT,aAAA,EAAe,aAAA;AAAA,MACf,KAAA,EAAO,KAAA;AAAA,MACP,UAAA,EAAY,UAAA;AAAA,MACZ,MAAA,EAAQ,MAAA;AAAA,MACR,GAAA,EAAK,GAAA;AAAA,MACL,KAAA,EAAO,gBAAA;AAAA,MACP,MAAA,EAAQ,gBAAA;AAAA,MACR,IAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,qBAAA;AAAA,MACT,IAAA,EAAM;AAAA,KACV;AAuBA,IAAM,kBAAN,MAAsB;AAAA,MAClB,YAAYnB,KAAAA,EAAM;AACd,QAAA,IAAA,CAAK,KAAA,GAAQA,KAAAA;AAAA,MACjB;AAAA;AAAA,MAEA,SAAA,GAAY;AACR,QAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAK,CAAA;AACzB,QAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,IAAA,GAAO,MAAM,GAAA,EAAI;AACvB,UAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,UAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,MAAA,KAAW,CAAA;AACjC,YAAA;AACJ,UAAA,MAAM,MAAA,GAAS,IAAI,YAAA,CAAa,QAAQ,EAAE,IAAA,EAAK;AAC/C,UAAA,IAAI,MAAA,KAAW,QAAA;AACX,YAAA,QAAA,CAAS,MAAA,CAAO,CAAA,EAAG,QAAA,CAAS,MAAA,EAAQ,GAAG,MAAM,CAAA;AACjD,UAAA,KAAA,MAAW,KAAA,IAAS,QAAA;AAChB,YAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,QACxB;AAAA,MACJ;AAAA,KACJ;AAEA,IAAM,eAAN,MAAmB;AAAA,MACf,YAAY,QAAA,EAAU;AAClB,QAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,IAAA,GAAO;AACH,QAAA,MAAMA,QAAO,EAAC;AACd,QAAA,MAAM,aAAa,EAAC;AACpB,QAAA,IAAI,OAAA,GAAUA,KAAAA;AACd,QAAA,IAAI,MAAA,GAAS,KAAA;AACb,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,SAAA,EAAW;AAChC,UAAA,MAAM,GAAA,GAAM,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAC5C,UAAA,IAAI,IAAA,CAAK,WAAA,CAAY,KAAA,EAAO,GAAG,CAAA,EAAG;AAC9B,YAAA,MAAM,QAAQ,EAAE,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,EAAC,EAAE;AAC3C,YAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AACrB,YAAA,OAAA,GAAU,KAAA,CAAM,OAAA;AAChB,YAAA;AAAA,UACJ;AACA,UAAA,IAAI,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,GAAG,CAAA,EAAG;AAC/B,YAAA,MAAM,KAAA,GAAQ,WAAW,GAAA,EAAI;AAC7B,YAAA,OAAA,GAAU,UAAA,CAAW,SAAS,CAAA,GAAI,UAAA,CAAW,WAAW,MAAA,GAAS,CAAC,EAAE,OAAA,GAAUA,KAAAA;AAC9E,YAAA,OAAA,CAAQ,IAAA,CAAK,KAAK,UAAA,CAAW,KAAA,CAAM,QAAQ,KAAA,EAAO,KAAA,CAAM,OAAO,CAAC,CAAA;AAChE,YAAA,MAAA,GAAS,IAAA;AACT,YAAA;AAAA,UACJ;AACA,UAAA,MAAM,YAAA,GAAe,IAAA,CAAK,iBAAA,CAAkB,KAAA,EAAO,GAAG,CAAA;AACtD,UAAA,IAAI,iBAAiB,MAAA,EAAW;AAC5B,YAAA,MAAM,KAAA,GAAQ,WAAW,GAAA,EAAI;AAC7B,YAAA,OAAA,GAAU,UAAA,CAAW,SAAS,CAAA,GAAI,UAAA,CAAW,WAAW,MAAA,GAAS,CAAC,EAAE,OAAA,GAAUA,KAAAA;AAC9E,YAAA,MAAM,QAAQ,IAAA,CAAK,UAAA,CAAW,MAAM,MAAA,EAAQ,YAAA,EAAc,MAAM,OAAO,CAAA;AACvE,YAAA,OAAA,CAAQ,IAAA,CAAK,OAAO,MAAA,CAAO,MAAA,CAAO,OAAO,EAAC,EAAG,KAAK,CAAA,EAAG,EAAE,UAAU,CAAC,KAAA,EAAO,GAAG,KAAA,CAAM,QAAA,CAAS,MAAM,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA;AACvG,YAAA,MAAA,GAAS,IAAA;AACT,YAAA;AAAA,UACJ;AACA,UAAA,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,QACtB;AACA,QAAA,IAAI,CAAC,MAAA;AACD,UAAA,OAAO,IAAA,CAAK,SAAA;AAChB,QAAA,KAAA,MAAW,KAAA,IAAS,UAAA;AAChB,UAAA,IAAA,CAAK,MAAA,CAAO,OAAOA,KAAI,CAAA;AAC3B,QAAA,OAAOA,KAAAA;AAAA,MACX;AAAA;AAAA,MAEA,MAAA,CAAO,OAAO,MAAA,EAAQ;AAClB,QAAA,MAAA,CAAO,IAAA,CAAK,MAAM,MAAM,CAAA;AACxB,QAAA,KAAA,MAAW,QAAQ,KAAA,CAAM,OAAA;AACrB,UAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MACxB;AAAA;AAAA,MAEA,UAAA,CAAW,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS;AAChC,QAAA,OAAO;AAAA,UACH,IAAA,EAAM,SAAA;AAAA,UACN,KAAA,EAAO,EAAA;AAAA,UACP,QAAA,EAAU,CAAC,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,OAAA,CAAQ,CAAC,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,OAAO,CAAC,CAAA;AAAA,UACvE,UAAA,EAAY,EAAE,IAAA,EAAM,MAAA,CAAO,KAAA,CAAM,IAAA,EAAK,EAAG,KAAA,EAAO,MAAA,CAAO,KAAA,CAAM,IAAA,EAAK;AAAE,SACxE;AAAA,MACJ;AAAA;AAAA,MAEA,WAAW,QAAA,EAAU;AACjB,QAAA,OAAO,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,IAAI,QAAA,EAAU,UAAA,EAAY,EAAC,EAAE;AAAA,MAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,iBAAA,CAAkB,OAAO,GAAA,EAAK;AAC1B,QAAA,IAAI,QAAQ,MAAA,IAAa,CAAC,IAAA,CAAK,MAAA,CAAO,IAAI,MAAM,CAAA;AAC5C,UAAA,OAAO,MAAA;AACX,QAAA,IAAI,CAAC,gBAAgB,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,IAAK,KAAA,CAAM,SAAS,MAAA,KAAW,CAAA;AAC9D,UAAA,OAAO,MAAA;AACX,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AAC7B,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,GAAI,IAAA;AACpF,QAAA,IAAI,GAAA,CAAI,IAAA,KAAS,IAAA,IAAQ,GAAA,CAAI,KAAA,CAAM,MAAK,KAAM,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,IAAA,EAAK;AAChE,UAAA,OAAO,MAAA;AACX,QAAA,OAAO,GAAA;AAAA,MACX;AAAA;AAAA,MAEA,WAAA,CAAY,OAAO,GAAA,EAAK;AACpB,QAAA,IAAI,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,UAAA,OAAO,IAAA;AACX,QAAA,OAAO,IAAA,CAAK,OAAO,KAAK,CAAA,IAAK,CAAC,IAAA,CAAK,UAAA,CAAW,OAAO,GAAG,CAAA;AAAA,MAC5D;AAAA;AAAA,MAEA,YAAA,CAAa,OAAO,GAAA,EAAK;AACrB,QAAA,IAAI,GAAA,KAAQ,MAAA;AACR,UAAA,OAAO,KAAA;AACX,QAAA,IAAI,KAAK,SAAA,CAAU,KAAK,KAAK,IAAA,CAAK,SAAA,CAAU,IAAI,MAAM,CAAA;AAClD,UAAA,OAAO,IAAA;AACX,QAAA,OAAO,IAAA,CAAK,UAAA,CAAW,KAAA,EAAO,GAAG,CAAA;AAAA,MACrC;AAAA;AAAA,MAEA,UAAA,CAAW,OAAO,GAAA,EAAK;AACnB,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,CAAC,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,MAAM,CAAA;AACnE,UAAA,OAAO,KAAA;AACX,QAAA,OAAO,IAAI,MAAA,CAAO,KAAA,CAAM,MAAK,KAAM,KAAA,CAAM,MAAM,IAAA,EAAK;AAAA,MACxD;AAAA,MACA,UAAU,OAAA,EAAS;AACf,QAAA,OAAO,OAAA,CAAQ,SAAS,IAAA,IAAQ,OAAA,CAAQ,IAAI,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA;AAAA,MACpE;AAAA,MACA,UAAU,OAAA,EAAS;AACf,QAAA,OAAO,OAAA,CAAQ,SAAS,IAAA,IAAQ,OAAA,CAAQ,IAAI,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA;AAAA,MACpE;AAAA,MACA,OAAO,OAAA,EAAS;AACZ,QAAA,OAAO,OAAA,CAAQ,SAAS,IAAA,IAAQ,IAAA,CAAK,IAAI,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA;AAAA,MACjE;AAAA,KACJ;AACA,IAAM,0BAAU,IAAI,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC,CAAA;AACvC,IAAM,0BAAU,IAAI,GAAA,CAAI,CAAC,GAAA,EAAK,GAAA,EAAK,GAAG,CAAC,CAAA;AAIvC,IAAM,uBAAO,IAAI,GAAA,CAAI,CAAC,GAAA,EAAK,GAAG,oBAAoB,CAAC,CAAA;AAEnD,IAAM,kCAAkB,IAAI,GAAA,CAAI,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA;AAc3D,IAAM,iBAAN,MAAqB;AAAA,MACjB,YAAYA,KAAAA,EAAM;AACd,QAAA,IAAA,CAAK,KAAA,GAAQA,KAAAA;AAAA,MACjB;AAAA;AAAA,MAEA,SAAA,GAAY;AACR,QAAA,MAAM,KAAA,GAAQ,CAAC,EAAE,IAAA,EAAM,IAAA,CAAK,OAAO,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,CAAA;AACxE,QAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,KAAA,GAAQ,MAAM,GAAA,EAAI;AACxB,UAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,UAAA,IAAA,CAAK,aAAA,CAAc,OAAO,KAAK,CAAA;AAAA,QACnC;AAAA,MACJ;AAAA,MACA,SAAA,CAAU,EAAE,IAAA,EAAM,YAAA,EAAc,SAAQ,EAAG;AACvC,QAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AACxB,UAAA,IAAI,YAAA;AACA,YAAA,IAAA,CAAK,UAAA,CAAW,YAAY,CAAA,GAAI,YAAA;AAAA,eAAA,IAC3B,CAAC,OAAA;AACN,YAAA,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,GAAI,WAAA;AAAA,QACvC;AACA,QAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,CAAC,YAAA;AACxB,UAAA,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,GAAI,SAAA;AAAA,MACrC;AAAA,MACA,cAAc,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,IAAW,KAAA,EAAO;AAClD,QAAA,IAAI,EAAA;AACJ,QAAA,MAAM,iBAAA,GAAoB,YAAA,IAAgB,IAAA,CAAK,IAAA,KAAS,QAAA;AACxD,QAAA,MAAM,YAAA,GAAe,OAAA,IAAW,IAAA,CAAK,IAAA,KAAS,SAAA;AAC9C,QAAA,MAAM,iBAAA,GAAoB,oBAAoB,OAAA,CAAQ,IAAI,IAAI,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,GAAI,MAAA;AACjF,QAAA,MAAM,QAAA,GAAA,CAAY,KAAK,IAAA,CAAK,QAAA,MAAc,QAAQ,EAAA,KAAO,MAAA,GAAS,KAAK,EAAC;AACxE,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACtC,UAAA,KAAA,CAAM,IAAA,CAAK;AAAA,YACP,IAAA,EAAM,SAAS,CAAC,CAAA;AAAA,YAChB,YAAA,EAAc,iBAAA;AAAA,YACd,OAAA,EAAS,YAAA,IAAgB,QAAA,CAAS,CAAC,CAAA,KAAM;AAAA,WAC5C,CAAA;AAAA,QACL;AAAA,MACJ;AAAA,KACJ;AAgBA,IAAM,kBAAA,GAAqB,CAACA,KAAAA,KAAS;AACjC,MAAA,IAAI,EAAA,EAAI,EAAA;AACR,MAAA,KAAA,MAAW,UAAA,IAAc,oBAAoBA,KAAI,CAAA;AAC7C,QAAA,UAAA,CAAW,SAAA,EAAU;AACzB,MAAA,MAAM,IAAA,uBAAW,GAAA,EAAI;AACrB,MAAA,MAAM,QAAQ,CAAC,EAAE,MAAMA,KAAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAC7C,MAAA,MAAM,YAAA,GAAe,kBAAkB,IAAI,CAAA;AAC3C,MAAA,IAAI;AACA,QAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AACpC,UAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAChB,YAAA,KAAA,CAAM,OAAA,GAAU,IAAA;AAChB,YAAA,MAAM,QAAA,GAAA,CAAY,KAAK,KAAA,CAAM,IAAA,CAAK,cAAc,IAAA,IAAQ,EAAA,KAAO,KAAA,CAAA,GAAS,EAAA,GAAK,EAAC;AAC9E,YAAA,KAAA,IAAS,CAAA,GAAI,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA,EAAA;AACtC,cAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,CAAS,CAAC,CAAA,EAAG,OAAA,EAAS,OAAO,CAAA;AACpD,YAAA;AAAA,UACJ;AACA,UAAA,KAAA,CAAM,GAAA,EAAI;AACV,UAAA,IAAA,CAAK,GAAA,CAAI,KAAA,CAAM,IAAA,EAAM,IAAI,oCAAA,CAAqC,KAAA,CAAM,IAAI,CAAA,CAAE,gBAAA,EAAiB,CAAE,OAAA,EAAS,CAAA;AAAA,QAC1G;AAAA,MACJ,CAAA,SACA;AACI,QAAA,iBAAA,CAAkB,YAAY,CAAA;AAAA,MAClC;AACA,MAAA,OAAA,CAAQ,EAAA,GAAK,KAAK,GAAA,CAAIA,KAAI,OAAO,IAAA,IAAQ,EAAA,KAAO,SAAS,EAAA,GAAK,EAAA;AAAA,IAClE,CAAA;AAEA,IAAM,mBAAA,GAAsB,CAACA,KAAAA,KAAS;AAAA,MAClC,IAAI,gBAAgBA,KAAI,CAAA;AAAA,MACxB,IAAI,eAAeA,KAAI;AAAA,KAC3B;AAUA,IAAM,qBAAN,MAAyB;AAAA,MACrB,WAAA,CAAY,mBAAmB,YAAA,EAAc;AACzC,QAAA,IAAA,CAAK,IAAA,GAAO,EAAA;AACZ,QAAA,IAAA,CAAK,kBAAA,GAAqB,iBAAA;AAC1B,QAAA,IAAA,CAAK,aAAA,GAAgB,YAAA;AAGrB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAI,aAAA,CAAA,SAAA,CAAU;AAAA,UACzB,SAAS,CAAC,MAAA,EAAQ,OAAA,KAAY,IAAA,CAAK,UAAU,OAAO;AAAA,SACvD,CAAA;AAAA,MACL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,GAAA,EAAK;AACT,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,iBAAA,CAAkB,GAAG,CAAA;AACtC,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA;AAChD,QAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,OAAA,CAAQ,IAAA,CAAK,eAAe,CAAA;AAAA,MAC/D;AAAA,MACA,UAAU,YAAA,EAAc;AACpB,QAAA,IAAA,CAAK,OAAO,IAAA,CAAK,aAAA,CAAc,QAAA,CAAS,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,MACnE;AAAA,MACA,kBAAkB,GAAA,EAAK;AACnB,QAAA,MAAM,UAAA,GAAa,aAAA;AACnB,QAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAAA,MACrC;AAAA,MACA,sBAAsB,GAAA,EAAK;AACvB,QAAA,MAAM,cAAA,GAAiB,OAAA;AACvB,QAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA;AAAA,MACzC;AAAA,MACA,IAAI,eAAA,GAAkB;AAClB,QAAA,IAAIF,SAAAA,GAAW,KAAK,MAAA,EAAO;AAC3B,QAAA,IAAI,IAAA,CAAK,aAAA,CAAc,gBAAA,EAAiB,EAAG;AACvC,UAAA,IAAA,CAAK,cAAc,WAAA,EAAY;AAC/B,UAAAA,SAAAA,GAAW,KAAK,MAAA,EAAO;AAAA,QAC3B;AACA,QAAA,MAAM,QAAA,GAAWA,cAAa,IAAA,IAAQA,SAAAA,KAAa,SAAS,MAAA,GAASA,SAAAA,CAAS,qBAAqB,MAAM,CAAA;AAIzG,QAAA,OAAO,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAI,EAAC;AAAA,MAC9C;AAAA,MACA,MAAA,GAAS;AACL,QAAA,IAAI;AACA,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,eAAA,CAAgB,IAAA,CAAK,MAAM,UAAU,CAAA;AAAA,QAC7D,SACO,EAAA,EAAI;AAIP,UAAA,OAAO,MAAA;AAAA,QACX;AAAA,MACJ;AAAA,KACJ;AAQA,IAAM,eAAN,MAAmB;AAAA,MACf,WAAA,GAAc;AACV,QAAA,IAAA,CAAK,UAAU,EAAC;AAAA,MACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,QAAA,CAAS,KAAK,YAAA,EAAc;AACxB,QAAA,IAAI,CAAC,IAAA,CAAK,6BAAA,CAA8B,YAAY,CAAA;AAChD,UAAA,OAAO,GAAA;AACX,QAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,YAAY,CAAA;AAC9B,QAAA,OAAO,IAAA,CAAK,oBAAA,CAAqB,YAAA,EAAc,GAAG,CAAA;AAAA,MACtD;AAAA,MACA,gBAAA,GAAmB;AACf,QAAA,OAAO,IAAA,CAAK,QAAQ,MAAA,GAAS,CAAA;AAAA,MACjC;AAAA,MACA,WAAA,GAAc;AACV,QAAA,IAAA,CAAK,UAAU,EAAC;AAAA,MACpB;AAAA,MACA,oBAAA,CAAqB,cAAc,GAAA,EAAK;AACpC,QAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,uBAAA,CAAwB,YAAY,CAAA;AAClE,QAAA,IAAI,gBAAA;AACA,UAAA,OAAO,IAAI,OAAA,CAAQ,IAAA,CAAK,8BAAA,CAA+B,gBAAgB,GAAG,EAAE,CAAA;AAChF,QAAA,OAAO,IAAA,CAAK,wBAAA,EAAyB,CAAE,IAAA,CAAK,GAAG,CAAA,EAAG;AAC9C,UAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,wBAAA,IAA4B,MAAM,CAAA;AAAA,QAC7D;AACA,QAAA,OAAO,GAAA;AAAA,MACX;AAAA;AAAA;AAAA;AAAA,MAIA,wBAAwB,YAAA,EAAc;AAClC,QAAA,IAAI,EAAA;AACJ,QAAA,OAAA,CAAQ,EAAA,GAAK,YAAA,CAAa,KAAA,CAAM,kCAAkC,CAAA,MAAO,QAAQ,EAAA,KAAO,MAAA,GAAS,MAAA,GAAS,EAAA,CAAG,CAAC,CAAA;AAAA,MAClH;AAAA,MACA,+BAA+B,SAAA,EAAW;AACtC,QAAA,OAAO,IAAI,MAAA,CAAO,CAAA,CAAA,EAAI,SAAS,CAAA,aAAA,EAAkB,SAAS,cAAgB,IAAI,CAAA;AAAA,MAClF;AAAA,MACA,wBAAA,GAA2B;AACvB,QAAA,OAAO,gCAAA;AAAA,MACX;AAAA,MACA,8BAA8B,YAAA,EAAc;AACxC,QAAA,OAAS,CAAC,CAAC,YAAA,CAAa,QAAA,CAAS,WAAW,CAAA,IAAK,CAAC,CAAC,YAAA,CAAa,QAAA,CAAS,QAAQ,CAAA,IAC7E,YAAA,CAAa,SAAS,wBAAwB,CAAA;AAAA;AAAA,QAG9C,YAAA,CAAa,SAAS,CAAA,yBAAA,CAA4B,CAAA;AAAA,MAC1D;AAAA,KACJ;AAOA,IAAM,0BAAN,MAA8B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAO1B,QAAQ,GAAA,EAAK;AACT,QAAA,MAAM,SAAS,EAAC;AAKhB,QAAA,MAAM,QAAQ,EAAC;AACf,QAAA,KAAA,IAAS,CAAA,GAAI,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA,EAAA;AACjC,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,GAAA,CAAI,CAAC,CAAA,EAAG,MAAA,EAAQ,QAAQ,CAAA;AAC7C,QAAA,OAAO,KAAA,CAAM,SAAS,CAAA,EAAG;AACrB,UAAA,MAAM,EAAE,EAAA,EAAI,MAAA,EAAO,GAAI,MAAM,GAAA,EAAI;AACjC,UAAA,IAAI,GAAG,OAAA,KAAY,MAAA;AACf,YAAA;AACJ,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,eAAA,CAAgB,EAAE,CAAA;AACpC,UAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAChB,UAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,CAAiB,EAAE,CAAA;AACzB,YAAA;AACJ,UAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,UAAU,CAAA;AACzC,UAAA,KAAA,IAAS,CAAA,GAAI,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA,EAAA;AACtC,YAAA,KAAA,CAAM,IAAA,CAAK,EAAE,EAAA,EAAI,QAAA,CAAS,CAAC,CAAA,EAAG,MAAA,EAAQ,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,QAC7D;AACA,QAAA,OAAO,MAAA;AAAA,MACX;AAAA,MACA,gBAAgB,EAAA,EAAI;AAChB,QAAA,OAAO;AAAA,UACH,MAAM,EAAA,CAAG,OAAA;AAAA,UACT,UAAA,EAAY,IAAA,CAAK,yBAAA,CAA0B,EAAA,CAAG,UAAU,CAAA;AAAA,UACxD,OAAO,IAAA,CAAK,gBAAA,CAAiB,EAAE,CAAA,GAAI,EAAA,GAAK,GAAG,WAAA,IAAe,EAAA;AAAA,UAC1D,UAAU;AAAC,SACf;AAAA,MACJ;AAAA,MACA,0BAA0B,UAAA,EAAY;AAClC,QAAA,OAAO,KAAA,CAAM,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS,MAAA,CAAO,MAAA,CAAO,EAAE,CAAC,IAAA,CAAK,QAAQ,GAAG,IAAA,CAAK,SAAA,KAAc,IAAA,CAAK,QAAA,GAAW,EAAA,GAAK,IAAA,CAAK,SAAA,EAAU,EAAG,GAAG,CAAA,EAAG,EAAE,CAAA;AAAA,MAC3J;AAAA,MACA,iBAAiB,EAAA,EAAI;AACjB,QAAA,MAAM,aAAa,EAAA,CAAG,UAAA;AACtB,QAAA,OAAO,CAAC,CAAC,UAAA,IAAc,UAAA,CAAW,WAAW,CAAA,IAAK,IAAA,CAAK,sBAAsB,UAAU,CAAA;AAAA,MAC3F;AAAA,MACA,sBAAsB,QAAA,EAAU;AAC5B,QAAA,OAAO,KAAA,CAAM,KAAK,QAAQ,CAAA,CAAE,KAAK,CAAC,KAAA,KAAU,KAAA,CAAM,QAAA,KAAa,OAAO,CAAA;AAAA,MAC1E;AAAA,KACJ;AAQA,IAAM,8BAA8B,MAAM;AACtC,MAAA,MAAM,uBAAA,GAA0B,IAAI,uBAAA,EAAwB;AAC5D,MAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,MAAA,OAAO,IAAI,kBAAA,CAAmB,uBAAA,EAAyB,YAAY,CAAA;AAAA,IACvE,CAAA;AAaA,IAAM,gBAAN,MAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOhB,OAAO,QAAQ,MAAA,EAAQ;AACnB,QAAA,MAAM,cAAA,GAAiB,2BAAA,EAA4B,CAAE,OAAA,CAAQ,MAAM,CAAA;AACnE,QAAA,OAAO,cAAA,CACF,GAAA,CAAI,CAAC,aAAA,KAAkB,kBAAA,CAAmB,aAAa,CAAC,CAAA,CACxD,IAAA,CAAK,EAAE,CAAA,CACP,IAAA,EAAK;AAAA,MACd;AAAA,KACJ;AAAA,EAAA;AAAA,CAAA,CAAA;;;;;;;AC9wJA,IAAA,OAAA,CAAA,wBAAA,GAAA,wBAAA;AAoFA,IAAA,OAAA,CAAA,sBAAA,GAAA,sBAAA;AApjBA,IAAA,IAAA,KAAA,GAAA,WAAA,EAAA;AACA,IAAA,IAAA,OAAA,GAAA,aAAA,EAAA;AAqBA,IAAA,IAAM,oBAAA,GAAuB,SAAA;AAC7B,IAAA,IAAM,mBAAA,GAAsB,CAAC,CAAA,KAC5B,CAAA,CAAE,UAAU,MAAM,CAAA,CAAE,OAAA,CAAQ,oBAAA,EAAsB,EAAE,CAAA;AAGrD,IAAA,IAAM,cAAA,mBAAiB,IAAI,GAAA,CAAI,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,QAAA,EAAU,QAAQ,CAAC,CAAA;AAEpF,IAAA,IAAM,mBAAA,uBAA0B,GAAA,CAAI;AACnC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA,SAAA;AAAW,MAAA,UAAA;AAAY,MAAA,UAAA;AAAY,MAAA,QAAA;AACrD,MAAA,QAAA;AAAU,MAAA,KAAA;AAAO,MAAA,KAAA;AAAO,MAAA;AACxB,KAAA,CAAA;AAED,IAAA,IAAM,aAAA,uBAAoB,GAAA,CAAI;AAC7B,MAAA,YAAA;AAAc,MAAA,YAAA;AAAc,MAAA,WAAA;AAAa,MAAA,UAAA;AAAY,MAAA,YAAA;AACrD,MAAA,WAAA;AAAa,MAAA;AACb,KAAA,CAAA;AAED,IAAA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAe,GAAA,KAA+B;AAClE,MAAA,KAAA,MAAW,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC9C,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAW,KAAO,GAAA;AAAK,UAAA,OAAO,KAAA;AACjD,MAAA;AACA,MAAA,OAAO,IAAA;AACR,IAAA,CAAA;AAEA,IAAA,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAsB,GAAA,EAAe,IAAA,KAAiC;AACjG,MAAA,IAAI,CAAC,IAAA;AAAM,QAAA,OAAO,EAAA;AAClB,MAAA,MAAM,MAAc,EAAA;AACpB,MAAA,KAAA,MAAW,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAG;AAC9C,QAAA,IAAI,KAAA,KAAU,IAAA;AAAM,UAAA;AACpB,QAAA,GAAA,CAAI,IAAA,CAAK,GAAG,cAAA,CAAe,KAAA,EAAO,GAAG,CAAC,CAAA;AACvC,MAAA;AACA,MAAA,OAAO,GAAA;AACR,IAAA,CAAA;AAIA,IAAA,IAAM,SAAA,GAAY,CAAC,KAAA,EAAe,GAAA,KAAuB;AACxD,MAAA,IAAI,MAAM,MAAA,KAAW,CAAA;AAAG,QAAA,OAAO,MAAM,CAAC,CAAA;AACtC,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,aAAA,CAAc,MAAM,CAAA;AACrC,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAA,KAAK,IAAA,CAAK,WAAA,CAAY,CAAC,CAAC,CAAA;AACtC,MAAA,OAAO,IAAA;AACR,IAAA,CAAA;AAEA,IAAA,IAAM,OAAA,GAAU,CAAC,IAAA,EAAc,QAAA,EAAkB,GAAA,KAA0B;AAC1E,MAAA,MAAM,EAAA,GAAK,GAAA,CAAI,aAAA,CAAc,IAAI,CAAA;AACjC,MAAA,QAAA,CAAS,OAAA,CAAQ,CAAA,CAAA,KAAK,EAAA,CAAG,WAAA,CAAY,CAAC,CAAC,CAAA;AACvC,MAAA,OAAO,EAAA;AACR,IAAA,CAAA;AAEA,IAAA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAe,GAAA,KAAyB;AAC/D,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAW;AAEpC,MAAA,IAAI,QAAQ,OAAA,EAAS;AACpB,QAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AACvD,QAAA,OAAO,OAAO,CAAC,GAAA,CAAI,eAAe,IAAI,CAAC,IAAI,EAAA;AAC5C,MAAA;AACA,MAAA,IAAI,aAAA,CAAc,IAAI,GAAG,CAAA;AAAG,QAAA,OAAO,EAAA;AACnC,MAAA,IAAI,CAAC,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA;AAAG,QAAA,OAAO,EAAA;AAEpC,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA;AAExB,MAAA,IAAI,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,EAAG;AAC7B,QAAA,MAAM,IAAA,GAAO,mBAAA,CAAoB,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAEvD,QAAA,IAAI,CAAC,QAAQ,IAAA,KAAS,QAAA;AAAU,UAAA,OAAO,EAAA;AACvC,QAAA,MAAM,EAAA,GAAK,GAAA,CAAI,aAAA,CAAc,IAAI,CAAA;AACjC,QAAA,IAAI,IAAA;AAAM,UAAA,EAAA,CAAG,WAAA,GAAc,IAAA;AAC3B,QAAA,OAAO,CAAC,EAAE,CAAA;AACX,MAAA;AAEA,MAAA,IAAI,mBAAA,CAAoB,GAAA,CAAI,IAAI,CAAA,EAAG;AAClC,QAAA,OAAO,CAAC,QAAQ,IAAA,EAAM,kBAAA,CAAmB,MAAM,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAC1D,MAAA;AAEA,MAAA,QAAQ,IAAA;AACP,QAAA,KAAK,OAAA,EAAS;AACb,UAAA,MAAM,GAAA,GAAM,UAAU,kBAAA,CAAmB,IAAA,CAAK,cAAc,SAAS,CAAA,EAAG,GAAG,CAAA,EAAG,GAAG,CAAA;AACjF,UAAA,MAAM,GAAA,GAAM,UAAU,kBAAA,CAAmB,IAAA,CAAK,cAAc,SAAS,CAAA,EAAG,GAAG,CAAA,EAAG,GAAG,CAAA;AACjF,UAAA,OAAO,CAAC,QAAQ,OAAA,EAAS,CAAC,KAAK,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAC1C,QAAA;AACA,QAAA,KAAK,OAAA,EAAS;AAEb,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,aAAA,CAAc,SAAS,CAAA;AACxC,UAAA,OAAO,CAAC,QAAQ,OAAA,EAAS,kBAAA,CAAmB,OAAO,IAAA,EAAM,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AACpE,QAAA;QACA,KAAK,MAAA;AACL,QAAA,KAAK,MAAA,EAAQ;AACZ,UAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,EAAM,YAAY,CAAA;AAC7C,UAAA,MAAM,OAAO,SAAA,CAAU,kBAAA,CAAmB,MAAM,GAAA,EAAK,MAAM,GAAG,GAAG,CAAA;AACjE,UAAA,MAAM,MAAM,SAAA,CAAU,kBAAA,CAAmB,MAAA,EAAQ,GAAG,GAAG,GAAG,CAAA;AAC1D,UAAA,OAAO,CAAC,QAAQ,IAAA,EAAM,CAAC,MAAM,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AACxC,QAAA;AACA,QAAA,KAAK,SAAA,EAAW;AACf,UAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,EAAM,YAAY,CAAA;AAC7C,UAAA,MAAM,OAAO,SAAA,CAAU,kBAAA,CAAmB,MAAM,GAAA,EAAK,MAAM,GAAG,GAAG,CAAA;AAGjE,UAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,MAAA,EAAQ,GAAG,CAAA;AAC5C,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,MAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA,GAAK,KAAA,CAAM,CAAC,CAAA,IAAK,GAAA,CAAI,cAAc,MAAM,CAAA;AAC9F,UAAA,MAAM,GAAA,GAAM,MAAM,MAAA,GAAS,CAAA,GAAI,MAAM,CAAC,CAAA,GAAI,GAAA,CAAI,aAAA,CAAc,MAAM,CAAA;AAClE,UAAA,OAAO,CAAC,QAAQ,SAAA,EAAW,CAAC,MAAM,GAAA,EAAK,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAClD,QAAA;QACA,KAAK,QAAA;QACL,KAAK,OAAA;AACL,QAAA,KAAK,YAAA,EAAc;AAGlB,UAAA,MAAM,IAAA,GAAO,UAAU,kBAAA,CAAmB,IAAA,CAAK,cAAc,UAAU,CAAA,EAAG,GAAG,CAAA,EAAG,GAAG,CAAA;AACnF,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,aAAA,CAAc,WAAW,CAAA;AAC5C,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,aAAA,CAAc,UAAU,CAAA;AAC1C,UAAA,IAAI,IAAA,KAAS,QAAA;AAAU,YAAA,OAAO,CAAC,OAAA,CAAQ,QAAA,EAAU,CAAC,MAAM,SAAA,CAAU,kBAAA,CAAmB,KAAA,EAAO,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AAC7G,UAAA,IAAI,IAAA,KAAS,OAAA;AAAS,YAAA,OAAO,CAAC,OAAA,CAAQ,OAAA,EAAS,CAAC,MAAM,SAAA,CAAU,kBAAA,CAAmB,IAAA,EAAM,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AAC1G,UAAA,OAAO,CAAC,QAAQ,YAAA,EAAc;AAC7B,YAAA,IAAA;AACA,YAAA,SAAA,CAAU,kBAAA,CAAmB,KAAA,EAAO,GAAG,CAAA,EAAG,GAAG,CAAA;AAC7C,YAAA,SAAA,CAAU,kBAAA,CAAmB,IAAA,EAAM,GAAG,CAAA,EAAG,GAAG;AAC1C,WAAA,EAAA,GAAG,CAAC,CAAA;AACR,QAAA;AACA,QAAA;AAEC,UAAA,OAAO,kBAAA,CAAmB,MAAM,GAAG,CAAA;AACrC;AACD,IAAA,CAAA;AAOO,IAAA,IAAM,wBAAA,GAA2B,CAAC,OAAA,EAAkB,GAAA,KAAkC;AAC5F,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,aAAA,CAAc,MAAM,CAAA;AACrC,MAAA,IAAA,CAAK,YAAA,CAAa,SAAS,oCAAoC,CAAA;AAE/D,MAAA,KAAA,MAAW,KAAA,IAAS,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACjD,QAAA,KAAA,MAAW,CAAA,IAAK,cAAA,CAAe,KAAA,EAAO,GAAG,CAAA;AAAG,UAAA,IAAA,CAAK,YAAY,CAAC,CAAA;AAC/D,MAAA;AAEA,MAAA,IAAI,IAAA,CAAK,WAAW,MAAA,KAAW,CAAA;AAAG,QAAA,OAAO,IAAA;AAEzC,MAAA,MAAMsB,QAAAA,GAAU,OAAA,CAAQ,YAAA,CAAa,SAAS,CAAA,KAAM,MAAA;AACpD,MAAA,IAAIA,QAAAA;AAAS,QAAA,IAAA,CAAK,YAAA,CAAa,WAAW,OAAO,CAAA;AAEjD,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,WAAW,KAAA,EAAO,IAAA,EAAM,SAAAA,QAAAA,EAAO;AACtD,IAAA,CAAA;AAda,IAAA,OAAA,CAAA,wBAAA,GAAwB,wBAAA;AA8BrC,IAAA,IAAM,2BAAA,GAA8B,CAAC,MAAA,KAAyB;AAC7D,MAAA,MAAM,MAAM,MAAA,CAAO,aAAA;AACnB,MAAA,IAAI,CAAC,GAAA;AAAK,QAAA;AAEV,MAAA,MAAM,SAAS,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAC,CAAA;AAC3D,MAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC3B,QAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,MAAM,QAAQ,CAAA,CAAE,OAAO,CAAA,KAAA,KAAQ;AACtD,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAW;AACtC,UAAA,OAAO,IAAA,KAAS,SAAS,IAAA,KAAS,YAAA;QACnC,CAAC,CAAA;AACD,QAAA,IAAI,KAAK,MAAA,KAAW,CAAA;AAAG,UAAA;AAEvB,QAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,QAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,WAAA,EAAW,KAAO,YAAA;AAAc,UAAA;AAEhD,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,CAAE,MAAA,CAAO,CAAA,KAAA,KAAS,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAW,KAAO,KAAK,CAAA;AAC5F,QAAA,IAAI,MAAM,MAAA,GAAS,CAAA;AAAG,UAAA;AAItB,QAAA,MAAM,CAAC,SAAA,EAAW,GAAG,YAAY,CAAA,GAAI,KAAA;AACrC,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,aAAA,CAAc,MAAM,CAAA;AAE5C,QAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAChC,UAAA,OAAO,IAAA,CAAK,UAAA;AAAY,YAAA,WAAA,CAAY,WAAA,CAAY,KAAK,UAAU,CAAA;AAChE,QAAA;AAEA,QAAA,IAAI,SAAA,CAAU,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AACpC,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,aAAA,CAAc,QAAQ,CAAA;AACzC,UAAA,MAAA,CAAO,YAAA,CAAa,SAAS,KAAK,CAAA;AAClC,UAAA,WAAA,CAAY,YAAY,MAAM,CAAA;AAC9B,UAAA,OAAO,SAAA,CAAU,UAAA;AAAY,YAAA,WAAA,CAAY,WAAA,CAAY,UAAU,UAAU,CAAA;AAC1E,QAAA;AAEA,QAAA,KAAA,CAAM,YAAY,WAAW,CAAA;AAC9B,MAAA;AACD,IAAA,CAAA;AAGA,IAAA,IAAM,yBAAA,GAA4B,CAAC,MAAA,KAA2B;AAC7D,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AACnC,MAAA,2BAAA,CAA4B,KAAK,CAAA;AACjC,MAAA,OAAO,KAAA,CAAM,SAAA;AACd,IAAA,CAAA;AAEO,IAAA,IAAM,oBAAA,GAAuB,CAAC,EAAA,KAAgC;AAEpE,MAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,WAAA,EAAW,KAAO,MAAA,EAAQ;AACxC,QAAA,MAAMA,QAAAA,GAAU,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA,KAAM,OAAA;AAC/C,QAAA,OAAO;AACN,UAAA,MAAA,EAAQ,0BAA0B,EAAE,CAAA;UACpC,KAAA,EAAO,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA,IAAK,IAAA;UACrC,OAAA,EAAAA;;AAEF,MAAA;AAGA,MAAA,MAAM,SAAA,GAAY,EAAA,CAAG,YAAA,CAAa,aAAa,CAAA;AAC/C,MAAA,IAAI,SAAA,EAAW;AACd,QAAA,MAAM,GAAA,GAAM,GAAG,aAAA,IAAiB,QAAA;AAChC,QAAA,MAAM,QAAA,GAAA,IAAW,KAAA,CAAA,SAAA,EAAU,KAAK,SAAS,CAAA;AACzC,QAAA,MAAM,WAAA,GAAc,QAAA,CAAS,aAAA,CAAc,MAAM,CAAA;AACjD,QAAA,IAAI,WAAA,EAAa;AAChB,UAAA,MAAMA,QAAAA,GAAU,WAAA,CAAY,YAAA,CAAa,SAAS,CAAA,KAAM,OAAA;AACxD,UAAA,OAAO;AACN,YAAA,MAAA,EAAQ,0BAA0B,WAAW,CAAA;YAC7C,KAAA,EAAO,WAAA,CAAY,YAAA,CAAa,SAAS,CAAA,IAAK,IAAA;YAC9C,OAAA,EAAAA;;AAEF,QAAA;AACD,MAAA;AAGA,MAAA,MAAM,qBAAA,GAAwB,EAAA,CAAG,aAAA,CAAc,0CAA0C,CAAA;AAEzF,MAAA,IAAI,qBAAA,EAAuB;AAC1B,QAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,aAAA,CAAc,MAAM,CAAA;AAE9D,QAAA,IAAI,WAAA,EAAa;AAEhB,UAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,YAAA,CAAa,SAAS,CAAA;AAC1D,UAAA,MAAM,oBAAA,GAAuB,qBAAA,CAAsB,YAAA,CAAa,SAAS,CAAA;AACzE,UAAA,MAAMA,QAAAA,GAAU,eAAA,KAAoB,OAAA,IAAW,oBAAA,KAAyB,OAAA;AAExE,UAAA,OAAO;AACN,YAAA,MAAA,EAAQ,0BAA0B,WAAW,CAAA;YAC7C,KAAA,EAAO,WAAA,CAAY,YAAA,CAAa,SAAS,CAAA,IAAK,IAAA;YAC9C,OAAA,EAAAA;;AAEF,QAAA;AACD,MAAA;AAGA,MAAA,MAAM,WAAA,GAAc,EAAA,CAAG,aAAA,CAAc,oBAAoB,CAAA;AACzD,MAAA,IAAI,WAAA,EAAa;AAChB,QAAA,OAAO;AACN,UAAA,MAAA,EAAQ,0BAA0B,WAAW,CAAA;UAC7C,KAAA,EAAO,IAAA;;UACP,OAAA,EAAS;;;AAEX,MAAA;AAKA,MAAA,MAAM,OAAA,GAAU,GAAG,OAAA,CAAQ,WAAA,OAAkB,UAAA,GAAa,EAAA,GAAK,EAAA,CAAG,aAAA,CAAc,UAAU,CAAA;AAC1F,MAAA,IAAI,OAAA,EAAS;AACZ,QAAA,MAAM,GAAA,GAAM,GAAG,aAAA,IAAiB,QAAA;AAChC,QAAA,MAAM,aAAA,GAAA,IAAgB,OAAA,CAAA,wBAAA,EAAyB,SAAS,GAAG,CAAA;AAC3D,QAAA,IAAI,aAAA;AAAe,UAAA,OAAO,aAAA;AAC3B,MAAA;AAEA,MAAA,OAAO,IAAA;AACR,IAAA,CAAA;AApEa,IAAA,OAAA,CAAA,oBAAA,GAAoB,oBAAA;AAsE1B,IAAA,IAAM,wBAAA,GAA2B,CAAC,EAAA,KAA8B;AAEtE,MAAA,MAAM,SAAA,GAAY,EAAA,CAAG,YAAA,CAAa,YAAY,CAAA;AAC9C,MAAA,IAAI,SAAA,EAAW;AACd,QAAA,OAAO,SAAA;AACR,MAAA;AACA,MAAA,MAAM,QAAA,GAAW,EAAA,CAAG,YAAA,CAAa,WAAW,CAAA;AAC5C,MAAA,IAAI,QAAA,EAAU;AACb,QAAA,OAAO,QAAA;AACR,MAAA;AACA,MAAA,MAAM,eAAA,GAAkB,EAAA,CAAG,aAAA,EAAe,SAAA,CAAU,QAAA,CAAS,YAAY,CAAA,GACtE,EAAA,CAAG,aAAA,CAAc,YAAA,CAAa,YAAY,CAAA,GAC1C,IAAA;AACH,MAAA,IAAI,eAAA,EAAiB;AACpB,QAAA,OAAO,eAAA;AACR,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,QAAQ,WAAA,EAAW,KAAO,SAAS,EAAA,CAAG,SAAA,CAAU,QAAA,CAAS,OAAO,CAAA,EAAG;AAEzE,QAAA,MAAM,QAAA,GAAW,EAAA,CAAG,YAAA,CAAa,KAAK,CAAA;AACtC,QAAA,IAAI,QAAA,EAAU;AACb,UAAA,OAAO,QAAA;AACR,QAAA;AAGA,QAAA,MAAM,GAAA,GAAM,EAAA,CAAG,YAAA,CAAa,KAAK,CAAA;AACjC,QAAA,IAAI,GAAA,EAAK;AACR,UAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,2BAA2B,CAAA;AACnD,UAAA,IAAI,KAAA,EAAO;AACV,YAAA,OAAO,kBAAA,CAAmB,KAAA,CAAM,CAAC,CAAC,CAAA,CAChC,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA,CAClB,OAAA,CAAQ,MAAA,EAAQ,IAAI,CAAA;AACvB,UAAA;AACD,QAAA;AACD,MAAA;AAGA,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,aAAA,CAAc,0CAA0C,CAAA;AAC9E,MAAA,IAAI,YAAY,WAAA,EAAa;AAC5B,QAAA,OAAO,UAAA,CAAW,YAAY,IAAA,EAAI;AACnC,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACzB,QAAA,MAAM,eAAA,GAAkB,EAAA,CAAG,aAAA,CAAc,wDAAwD,CAAA;AACjG,QAAA,IAAI,iBAAiB,WAAA,EAAa;AACjC,UAAA,OAAO,eAAA,CAAgB,YAAY,IAAA,EAAI;AACxC,QAAA;AACD,MAAA;AAGA,MAAA,IAAI,GAAG,OAAA,CAAQ,yBAAyB,KAAK,EAAA,CAAG,OAAA,CAAQ,uCAAuC,CAAA,EAAG;AACjG,QAAA,OAAO,EAAA,CAAG,WAAA,EAAa,IAAA,EAAI,IAAM,IAAA;AAClC,MAAA;AAGA,MAAA,IAAI,GAAG,aAAA,EAAe;AACrB,QAAA,MAAM,aAAA,GAAgB,EAAA,CAAG,aAAA,CAAc,aAAA,CAAc,gEAAgE,CAAA;AACrH,QAAA,IAAI,aAAA,EAAe;AAClB,UAAA,OAAO,aAAA,CAAc,WAAA,EAAa,IAAA,EAAI,IAAM,IAAA;AAC7C,QAAA;AACD,MAAA;AAIA,MAAA,IAAI,EAAA,CAAG,QAAQ,WAAA,EAAW,KAAO,UAAU,EAAA,CAAG,WAAA,EAAa,MAAI,EAAI;AAClE,QAAA,OAAO,EAAA,CAAG,YAAY,IAAA,EAAI;AAC3B,MAAA;AAGA,MAAA,OAAO,EAAA,CAAG,YAAA,CAAa,KAAK,CAAA,IAAK,IAAA;AAClC,IAAA,CAAA;AAxEa,IAAA,OAAA,CAAA,wBAAA,GAAwB,wBAAA;AA0E9B,IAAA,IAAM,cAAA,GAAiB,CAAC,EAAA,KAAwB;AAEtD,MAAA,MAAM,WAAA,GAAc,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA;AAC7C,MAAA,IAAI,gBAAgB,OAAA,EAAS;AAC5B,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,MAAM,iBAAa,KAAA,CAAA,YAAA,EAAa,EAAE,EAAE,WAAA,EAAW;AAC/C,MAAA,IAAI,WAAW,QAAA,CAAS,SAAS,KAAK,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AACnE,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,MAAM,SAAA,GAAY,EAAA,CAAG,OAAA,CAAQ,0DAA0D,CAAA;AACvF,MAAA,IAAI,SAAA,EAAW;AACd,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,MAAM,cAAc,EAAA,CAAG,sBAAA;AACvB,MAAA,IAAI,WAAA,EAAa,OAAA,CAAQ,WAAA,EAAW,KAAO,GAAA,EAAK;AAC/C,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,kCAAkC,CAAA,EAAG;AACnD,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAGzB,QAAA,OAAO,EAAA,CAAG,OAAA,CAAQ,gBAAgB,CAAA,KAAM,IAAA;AACzC,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA,EAAG;AAC/B,QAAA,OAAO,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA,KAAM,MAAA;AACvC,MAAA;AAGA,MAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,uCAAuC,CAAA,EAAG;AACxD,QAAA,OAAO,IAAA;AACR,MAAA;AAGA,MAAA,MAAM,eAAA,GAAkB,EAAA,CAAG,OAAA,CAAQ,WAAW,CAAA;AAC9C,MAAA,IAAI,eAAA,EAAiB;AACpB,QAAA,OAAO,eAAA,CAAgB,YAAA,CAAa,SAAS,CAAA,KAAM,MAAA;AACpD,MAAA;AAEA,MAAA,OAAO,KAAA;AACR,IAAA,CAAA;AAtDa,IAAA,OAAA,CAAA,cAAA,GAAc,cAAA;AA0Dd,IAAA,OAAA,CAAA,aAAA,GAAgB,oGAAA;AAGhB,IAAA,OAAA,CAAA,aAAA,GAAgB;;AAE5B,MAAA,6BAAA;;AAGA,MAAA,cAAA;AACA,MAAA,eAAA;AACA,MAAA,yBAAA;AACA,MAAA,uCAAA;AACA,MAAA,4CAAA;AACA,MAAA,kBAAA;AACA,MAAA,cAAA;AACA,MAAA,iBAAA;;AAGA,MAAA,mBAAA;AACA,MAAA,iCAAA;AACA,MAAA,kCAAA;AACA,MAAA,yBAAA;AACA,MAAA,0BAAA;;AAGA,MAAA,QAAA;AACA,MAAA,gBAAA;AACA,MAAA,eAAA;AACA,MAAA,aAAA;AACA,MAAA,cAAA;AACA,MAAA,2BAAA;;AAGA,MAAA,MAAA;AACA,MAAA,aAAA;AACA,MAAA,cAAA;AACA,MAAA,YAAA;AACA,MAAA,uBAAA;AACA,MAAA;AACC,KAAA,CAAA,IAAA,CAAK,GAAG,CAAA;AAIV,IAAA,IAAM,sBAAsB,CAAC,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,MAAM,MAAM,CAAA,CAAE,GAAA,CACjE,CAAA,KAAA,KAAS,IAAI,MAAA,CAAO,CAAA,IAAA,EAAO,KAAK,CAAA,SAAA,CAAA,EAAa,GAAG,CAAC,CAAA;AAErC,IAAA,OAAA,CAAA,mBAAA,GAAsB,gBAAA;AAMnC,IAAA,SAAgB,yBAAyB,GAAA,EAAW;AAEnD,MAAA,KAAA,MAAW,MAAM,mBAAA,EAAqB;AACrC,QAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AAC1B,QAAA,IAAI,KAAA,EAAO;AACV,UAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,CAAC,CAAC,CAAA;AAClC,UAAA,IAAI,KAAA;AAAO,YAAA,OAAO,KAAA;AACnB,QAAA;AACD,MAAA;AAGA,MAAA,MAAM,UAAA,GAAa,GAAA,CAAI,KAAA,CAAM,WAAW,CAAA;AACxC,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,UAAA,CAAW,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,KAAA;AAAO,UAAA,OAAO,KAAA;AACnB,MAAA;AAGA,MAAA,MAAM,QAAA,GAAW,GAAA,CAAI,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA;AACjC,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AACnC,MAAA,KAAA,IAAS,IAAI,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC9C,QAAA,IAAI,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA,EAAG;AAC/B,UAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,QAAA,CAAS,CAAC,CAAC,CAAA;AACrC,UAAA,IAAI,KAAA;AAAO,YAAA,OAAO,KAAA;AACnB,QAAA;AACD,MAAA;AAEA,MAAA,OAAO,IAAA;AACR,IAAA;AAGA,IAAA,SAAS,YAAY,GAAA,EAAW;AAC/B,MAAA,IAAI;AACH,QAAA,MAAM,UAAU,kBAAA,CAAmB,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAC,CAAA;AAC1D,QAAA,OAAO,OAAA,CAAA,mBAAA,CAAoB,IAAA,CAAK,OAAO,IAAI,OAAA,GAAU,IAAA;MACtD,CAAA,CAAA,MAAQ;AACP,QAAA,OAAO,IAAA;AACR,MAAA;AACD,IAAA;AAOA,IAAA,SAAS,eAAe,GAAA,EAAa;AAEpC,MAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,gBAAA,CAAiB,aAAa,CAAC,CAAA;AAC9D,MAAA,KAAA,MAAW,KAAK,OAAA,EAAS;AACxB,QAAA,MAAM,OAAO,CAAA,CAAE,YAAA,CAAa,KAAK,CAAA,IAAK,IAAI,WAAA,EAAW;AACrD,QAAA,IAAI,IAAI,QAAA,CAAS,SAAS,CAAA,IAAK,GAAA,CAAI,SAAS,OAAO,CAAA;AAAG,UAAA,OAAO,IAAA;AAC9D,MAAA;AAEA,MAAA,MAAM,gBAAgB,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,gBAAA,CAAiB,mBAAmB,CAAC,CAAA;AAC1E,MAAA,KAAA,MAAW,KAAK,aAAA,EAAe;AAC9B,QAAA,MAAM,IAAA,GAAO,EAAE,WAAA,IAAe,EAAA;AAC9B,QAAA,IAAI,iBAAiB,IAAA,CAAK,IAAI,CAAA,IAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AAAG,UAAA,OAAO,IAAA;AAChE,MAAA;AACA,MAAA,OAAO,KAAA;AACR,IAAA;AAIA,IAAA,IAAM,cAAA,GAAiB,0FAAA;AAEvB,IAAA,IAAM,YAAA,GAAe,YAAA;AACrB,IAAA,IAAM,eAAA,GAAkB,QAAA;AAExB,IAAA,SAAS,qBAAqB,CAAA,EAAS;AACtC,MAAA,OAAO,aAAa,IAAA,CAAK,CAAC,CAAA,IAAK,eAAA,CAAgB,KAAK,CAAC,CAAA;AACtD,IAAA;AAEA,IAAA,IAAM,mBAAA,mBAAsB,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,KAAA,EAAO,UAAU,CAAC,CAAA;AAYjG,IAAA,SAAgB,sBAAA,CAAuB,SAAkB,GAAA,EAAa;AACrE,MAAA,IAAI,CAAC,eAAe,GAAG,CAAA;AAAG,QAAA;AAI1B,MAAA,IAAI,OAAA,CAAQ,aAAA,CAAc,OAAA,CAAA,aAAa,CAAA;AAAG,QAAA;AAE1C,MAAA,MAAM,YAAoB,EAAA;AAE1B,MAAA,SAAS,KAAK,IAAA,EAAU;AACvB,QAAA,IAAA,IAAI,QAAA,SAAA,EAAU,IAAI,KAAK,mBAAA,CAAoB,GAAA,CAAI,KAAK,OAAO,CAAA;AAAG,UAAA;AAC9D,QAAA,IAAA,IAAI,OAAA,CAAA,UAAA,EAAW,IAAI,CAAA,EAAG;AACrB,UAAA,SAAA,CAAU,KAAK,IAAI,CAAA;QACpB,CAAA,MAAO;AACN,UAAA,KAAA,IAAS,QAAQ,IAAA,CAAK,UAAA,EAAY,KAAA,EAAO,KAAA,GAAQ,MAAM,WAAA,EAAa;AACnE,YAAA,IAAA,CAAK,KAAK,CAAA;AACX,UAAA;AACD,QAAA;AACD,MAAA;AACA,MAAA,IAAA,CAAK,OAAO,CAAA;AAEZ,MAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AACjC,QAAA,MAAM,IAAA,GAAO,SAAS,WAAA,IAAe,EAAA;AACrC,QAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,IAAK,CAAC,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,IAAK,CAAC,IAAA,CAAK,SAAS,KAAK,CAAA;AAAG,UAAA;AAG3E,QAAA,MAAM,QAAqB,EAAA;AAC3B,QAAA,IAAI,SAAA,GAAY,CAAA;AAChB,QAAA,IAAI,YAAA,GAAe,KAAA;AAEnB,QAAA,cAAA,CAAe,SAAA,GAAY,CAAA;AAC3B,QAAA,IAAI,KAAA;AACJ,QAAA,OAAA,CAAQ,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,IAAI,OAAO,IAAA,EAAM;AAEpD,UAAA,MAAM,YAAA,GAAe,KAAA,CAAM,CAAC,CAAA,IAAK,MAAM,CAAC,CAAA;AACxC,UAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,CAAC,CAAA,IAAK,MAAM,CAAC,CAAA;AACzC,UAAA,MAAMA,WAAU,YAAA,KAAiB,MAAA;AACjC,UAAA,MAAM,KAAA,GAAA,CAAS,YAAA,IAAgB,aAAA,EAAe,IAAA,EAAI;AAGlD,UAAA,MAAM,mBAAmB,KAAA,CAAM,CAAC,MAAM,MAAA,IAAa,KAAA,CAAM,CAAC,CAAA,KAAM,MAAA;AAChE,UAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,oBAAA,CAAqB,KAAK,CAAA;AAAG,YAAA;AAEvD,UAAA,IAAI,SAAA,GAAY,MAAM,KAAA,EAAO;AAC5B,YAAA,KAAA,CAAM,KAAK,IAAA,CAAK,KAAA,CAAM,SAAA,EAAW,KAAA,CAAM,KAAK,CAAC,CAAA;AAC9C,UAAA;AACA,UAAA,IAAIA,QAAAA;AAAS,YAAA,YAAA,GAAe,IAAA;AAC5B,UAAA,KAAA,CAAM,IAAA,CAAK,EAAE,KAAA,EAAO,OAAA,EAAAA,UAAS,CAAA;AAC7B,UAAA,SAAA,GAAY,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA;AACpC,QAAA;AAEA,QAAA,IAAI,MAAM,MAAA,KAAW,CAAA;AAAG,UAAA;AACxB,QAAA,IAAI,SAAA,GAAY,KAAK,MAAA,EAAQ;AAC5B,UAAA,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AACjC,QAAA;AAIA,QAAA,IAAI,YAAA,EAAc;AACjB,UAAA,MAAM,kBAAA,GAAqB,KAAA,CAAM,IAAA,CAAK,CAAA,CAAA,KAAK,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,IAAA,EAAI,CAAG,MAAA,GAAS,CAAC,CAAA;AACvF,UAAA,MAAM,SAAS,QAAA,CAAS,aAAA;AACxB,UAAA,MAAM,qBAAA,GAAwB,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,UAAU,CAAA,CAAE,IAAA,CACpE,CAAA,CAAA,KAAK,CAAA,KAAM,QAAA,KAAA,IAAc,OAAA,CAAA,UAAA,EAAW,CAAC,CAAA,IAAA,CAAM,CAAA,CAAE,WAAA,IAAe,EAAA,EAAI,IAAA,EAAI,CAAG,MAAA,GAAS,CAAA,IAAA,IAAM,OAAA,CAAA,SAAA,EAAU,CAAC,CAAA,CAAE,CAAA,GAChG,KAAA;AAEJ,UAAA,IAAI,sBAAsB,qBAAA,EAAuB;AAChD,YAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACzB,cAAA,IAAI,OAAO,IAAA,KAAS,QAAA;AAAU,gBAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAC9C,YAAA;AACD,UAAA;AACD,QAAA;AAEA,QAAA,MAAM,IAAA,GAAO,IAAI,sBAAA,EAAsB;AACvC,QAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACzB,UAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC7B,YAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,cAAA,CAAe,IAAI,CAAC,CAAA;UAC1C,CAAA,MAAO;AACN,YAAA,MAAM,MAAA,GAAS,GAAA,CAAI,aAAA,CAAc,MAAM,CAAA;AACvC,YAAA,MAAA,CAAO,YAAA,CAAa,SAAS,oCAAoC,CAAA;AACjE,YAAA,MAAA,CAAO,YAAA,CAAa,SAAA,EAAW,IAAA,CAAK,OAAA,GAAU,UAAU,QAAQ,CAAA;AAChE,YAAA,MAAA,CAAO,YAAA,CAAa,YAAA,EAAc,IAAA,CAAK,KAAK,CAAA;AAC5C,YAAA,MAAA,CAAO,cAAc,IAAA,CAAK,KAAA;AAC1B,YAAA,IAAA,CAAK,YAAY,MAAM,CAAA;AACxB,UAAA;AACD,QAAA;AACA,QAAA,QAAA,CAAS,YAAY,IAAI,CAAA;AAC1B,MAAA;AACD,IAAA;;;;;AC3oBA,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mCAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAUA,IAAA,IAAM,UAAA,GAAN,MAAM,WAAA,CAAW;AAAA,MACf,WAAA,CACE,SACA,KAAA,EACA;AACA,QAAA,IAAI,QAAQ,GAAA,GAAM,OAAA;AAClB,QAAA,IAAI,KAAA;AAEJ,QAAA,MAAM,GAAA,GAAM,SAAS,KAAA,CAAM,GAAA;AAC3B,QAAA,IAAI,GAAA,IAAO,GAAA,CAAI,KAAA,IAAS,GAAA,CAAI,GAAA,EAAK;AAI/B,UAAA,MAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA;AAGxB,UAAA,KAAA,GAAQ,GAAA,CAAI,KAAA;AACZ,UAAA,MAAM,MAAM,GAAA,CAAI,GAAA;AAChB,UAAA,IAAI,KAAA,KAAU,MAAM,MAAA,EAAQ;AAC1B,YAAA,KAAA,IAAS,oBAAA;AAAA,UACX,CAAA,MAAO;AACL,YAAA,KAAA,IAAS,eAAA,IAAmB,QAAQ,CAAA,CAAA,GAAK,MAAA;AAAA,UAC3C;AAGA,UAAA,MAAM,UAAA,GAAa,MAAM,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAQ,UAAU,CAAA;AAGrE,UAAA,IAAI,IAAA;AACJ,UAAA,IAAI,QAAQ,EAAA,EAAI;AACd,YAAA,IAAA,GAAO,QAAA,GAAM,KAAA,CAAM,KAAA,CAAM,KAAA,GAAQ,IAAI,KAAK,CAAA;AAAA,UAC5C,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA;AAAA,UAC7B;AACA,UAAA,IAAI,KAAA;AACJ,UAAA,IAAI,GAAA,GAAM,EAAA,GAAK,KAAA,CAAM,MAAA,EAAQ;AAC3B,YAAA,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,GAAA,EAAK,GAAA,GAAM,EAAE,CAAA,GAAI,QAAA;AAAA,UACvC,CAAA,MAAO;AACL,YAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,GAAG,CAAA;AAAA,UACzB;AACA,UAAA,KAAA,IAAS,OAAO,UAAA,GAAa,KAAA;AAAA,QAC/B;AAIA,QAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,KAAK,CAAA;AAC5B,QAAA,IAAA,CAAK,IAAA,GAAO,YAAA;AACZ,QAAA,IAAA,CAAK,YAAY,WAAA,CAAW,SAAA;AAC5B,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,UAAA,CAAW,SAAA,CAAU,YAAY,KAAA,CAAM,SAAA;AAWvC,IAAA,IAAM,KAAA,GAAQ,SAAS,OAAA,EAAS,kBAAA,EAAoB;AAClD,MAAA,OAAO,OAAA,KAAY,SAAY,kBAAA,GAAqB,OAAA;AAAA,IACtD,CAAA;AAIA,IAAA,IAAM,SAAA,GAAY,UAAA;AAClB,IAAA,IAAM,SAAA,GAAY,SAAS,GAAA,EAAK;AAC9B,MAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,SAAA,EAAW,KAAK,EAAE,WAAA,EAAY;AAAA,IACnD,CAAA;AAEA,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,GAAA,EAAK,OAAA;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAEA,IAAA,IAAM,YAAA,GAAe,UAAA;AAKrB,IAAA,SAAS,OAAOlB,KAAAA,EAAM;AACpB,MAAA,OAAO,MAAA,CAAOA,KAAI,CAAA,CAAE,OAAA,CAAQ,cAAc,CAAC,KAAA,KAAU,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,IAC3E;AAOA,IAAA,IAAM,WAAA,GAAc,SAAS,KAAA,EAAO;AAClC,MAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,QAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC3B,UAAA,OAAO,WAAA,CAAY,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,QAClC,CAAA,MAAO;AACL,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AACjC,QAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC3B,UAAA,OAAO,WAAA,CAAY,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,QAClC,CAAA,MAAO;AACL,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AAChC,QAAA,OAAO,WAAA,CAAY,MAAM,IAAI,CAAA;AAAA,MAC/B,CAAA,MAAO;AACL,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAOA,IAAA,IAAM,cAAA,GAAiB,SAAS,KAAA,EAAO;AACrC,MAAA,MAAM,QAAA,GAAW,YAAY,KAAK,CAAA;AAGlC,MAAA,OAAO,SAAS,IAAA,KAAS,SAAA,IAAa,SAAS,IAAA,KAAS,SAAA,IAAa,SAAS,IAAA,KAAS,MAAA;AAAA,IACzF,CAAA;AAEA,IAAA,IAAM,MAAA,GAAS,SAAS,KAAA,EAAO;AAC7B,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,MAAM,IAAI,KAAA,CAAM,6BAAA,GAAgC,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,MAC/D;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAOA,IAAA,IAAM,eAAA,GAAkB,SAAS,GAAA,EAAK;AAKpC,MAAA,MAAM,QAAA,GAAW,qDAAA,CAAsD,IAAA,CAAK,GAAG,CAAA;AAC/E,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAO,WAAA;AAAA,MACT;AAEA,MAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,GAAA,EAAK;AACvB,QAAA,OAAO,IAAA;AAAA,MACT;AAGA,MAAA,IAAI,CAAC,4BAAA,CAA6B,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA,EAAG;AACnD,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAO,QAAA,CAAS,CAAC,CAAA,CAAE,WAAA,EAAY;AAAA,IACjC,CAAA;AAQA,IAAA,IAAM,KAAA,GAAQ,SAAS,CAAA,EAAG;AACxB,MAAA,OAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,IACrB,CAAA;AAGA,IAAA,IAAM,MAAA,GAAS,oSAAA;AAWf,IAAA,IAAM,WAAN,MAAe;AAAA,MACb,YAAY,OAAA,EAAS;AAEnB,QAAA,OAAA,GAAU,WAAW,EAAC;AACtB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAa,KAAK,CAAA;AACnD,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAU,KAAK,CAAA;AAC7C,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA;AACvC,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,YAAA,EAAc,KAAK,CAAA;AACrD,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,SAAS,CAAA;AACrD,QAAA,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,EAAC;AACjC,QAAA,IAAA,CAAK,IAAA,GAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,MAAM,CAAA;AACtC,QAAA,IAAA,CAAK,GAAA,GAAM,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,KAAK,CAAA;AACnC,QAAA,IAAA,CAAK,gBAAA,GAAmB,KAAA,CAAM,OAAA,CAAQ,gBAAA,EAAkB,KAAK,CAAA;AAC7D,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AACzC,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA;AACvC,QAAA,IAAA,CAAK,UAAW,OAAA,CAAQ,OAAA,KAAY,MAAA,GAChC,CAAC,UAAU,QAAQ,CAAA,GACnB,KAAA,CAAM,OAAA,CAAQ,QAAQ,OAAO,CAAA,GAC7B,QAAQ,OAAA,GACR,CAAC,UAAU,QAAQ,CAAA;AAEvB,QAAA,IAAA,CAAK,SAAA,GAAY,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,OAAA,CAAQ,SAAA,EAAW,GAAI,CAAC,CAAA;AAC3D,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAAA,MAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,UAAU,OAAA,EAAS;AACjB,QAAA,IAAI,OAAA,CAAQ,GAAA,IAAO,CAAC,OAAA,CAAQ,QAAA,EAAU;AACpC,UAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,OAAA,CAAQ,GAAG,CAAA;AAC5C,UAAA,IAAI,YAAY,IAAA,EAAM;AACpB,YAAA,OAAO,KAAA;AAAA,UACT;AACA,UAAA,OAAA,CAAQ,QAAA,GAAW,QAAA;AAAA,QACrB;AACA,QAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,KAAA,KAAU,aAAa,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,GAAI,IAAA,CAAK,KAAA;AAC5E,QAAA,OAAO,QAAQ,KAAK,CAAA;AAAA,MACtB;AAAA,KACF;AAOA,IAAA,IAAM,aAAa,EAAC;AAMpB,IAAA,IAAM,uBAAuB,EAAC;AAE9B,IAAA,SAAS,cAAA,CAAe;AAAA,MACtB,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA,EAAAmB;AAAA,KACF,EAAG;AAED,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,IAAA;AAAA,QACA,SAAS,KAAA,CAAM,OAAA;AAAA,QACf,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,iBAAA,EAAmB,CAAC,CAAC,KAAA,CAAM,iBAAA;AAAA,QAC3B,aAAA,EAAe,CAAC,CAAC,KAAA,CAAM,aAAA;AAAA,QACvB,aAAA,EAAe,KAAA,CAAM,aAAA,KAAkB,MAAA,GAAY,OAAO,KAAA,CAAM,aAAA;AAAA,QAChE,eAAA,EAAiB,MAAM,eAAA,IAAmB,CAAA;AAAA,QAC1C,KAAA,EAAO,CAAC,CAAC,KAAA,CAAM,KAAA;AAAA,QACf,SAAA,EAAW,CAAC,CAAC,KAAA,CAAM,SAAA;AAAA,QACnB;AAAA,OACF;AACA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,EAAE,CAAA,EAAG;AACrC,QAAA,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,IAAA;AAAA,MACzB;AACA,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAIA,cAAAA,EAAe;AACjB,UAAA,oBAAA,CAAqB,IAAI,CAAA,GAAIA,cAAAA;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAOA,IAAA,SAAS,sBAAA,CAAuB,EAAE,IAAA,EAAM,aAAA,EAAAA,gBAAc,EAAG;AACvD,MAAA,cAAA,CAAe;AAAA,QACb,IAAA;AAAA,QACA,OAAO,EAAC;AAAA,QACR,KAAA,EAAO,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,QACpB,OAAA,GAAU;AACR,UAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,QAC3C,CAAA;AAAA,QACA,aAAA,EAAAA;AAAA,OACD,CAAA;AAAA,IACH;AAEA,IAAA,IAAM,iBAAA,GAAoB,SAAS,GAAA,EAAK;AACtC,MAAA,OAAO,GAAA,CAAI,IAAA,KAAS,UAAA,IAAc,GAAA,CAAI,IAAA,CAAK,WAAW,CAAA,GAAI,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,GAAI,GAAA;AAAA,IAC1E,CAAA;AAIA,IAAA,IAAM,WAAA,GAAc,SAAS,GAAA,EAAK;AAChC,MAAA,OAAO,IAAI,IAAA,KAAS,UAAA,GAAa,GAAA,CAAI,IAAA,GAAO,CAAC,GAAG,CAAA;AAAA,IAClD,CAAA;AAOA,IAAA,IAAM,mBAAN,MAAuB;AAAA,MACrB,YAAY,QAAA,EAAU;AACpB,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,UAAU,EAAC;AAChB,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA,MAEA,SAAS,SAAA,EAAW;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA;AAAA,MACxC;AAAA;AAAA,MAGA,MAAA,GAAS;AACP,QAAA,MAAM,IAAA,GAAO,SAAS,sBAAA,EAAuB;AAE7C,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAQ,CAAA;AAAA,QAC5C;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA,MAGA,QAAA,GAAW;AACT,QAAA,IAAI,MAAA,GAAS,EAAA;AAGb,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,QACtC;AAEA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,GAAS;AAGP,QAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KAAU,KAAA,CAAM,MAAA,EAAO;AACvC,QAAA,OAAO,KAAK,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,MAC1C;AAAA,KACF;AAiBA,IAAA,IAAM,WAAA,GAAc,SAAS,OAAA,EAAS;AACpC,MAAA,OAAO,QAAQ,MAAA,CAAO,CAAC,QAAQ,GAAG,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IAC9C,CAAA;AAEA,IAAA,IAAM,QAAA,GAAW,SAAS,OAAA,EAAS,KAAA,EAAO;AACxC,MAAA,IAAA,CAAK,OAAA,GAAU,WAAW,EAAC;AAC3B,MAAA,IAAA,CAAK,aAAa,EAAC;AACnB,MAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,EAAC;AAAA,IACzB,CAAA;AAKA,IAAA,IAAM,MAAA,GAAS,SAAS,OAAA,EAAS;AAC/B,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAG3C,MAAA,IAAA,CAAK,SAAA,GAAY,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AAGzC,MAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,UAAA,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,QACtC;AAAA,MACF;AAGA,MAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,UAAA,EAAY;AAClC,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,UAAA,EAAY,IAAK,CAAA,EAAG;AAChE,UAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,IAAA,CAAK,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,QAC/C;AAAA,MACF;AAGA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAQ,CAAA;AAAA,MAC5C;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAKA,IAAA,IAAM,QAAA,GAAW,SAAS,OAAA,EAAS;AACjC,MAAA,IAAI,MAAA,GAAS,IAAI,OAAO,CAAA,CAAA;AAGxB,MAAA,IAAI,IAAA,CAAK,QAAQ,MAAA,EAAQ;AACvB,QAAA,MAAA,IAAU,WAAW,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,MACxD;AAEA,MAAA,IAAI,MAAA,GAAS,EAAA;AAGb,MAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,UAAA,MAAA,IAAU,CAAA,EAAG,UAAU,KAAK,CAAC,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACpD;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,MAAA,IAAU,WAAW,MAAM,CAAA,CAAA,CAAA;AAAA,MAC7B;AAGA,MAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,UAAA,EAAY;AAClC,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,UAAA,EAAY,IAAK,CAAA,EAAG;AAChE,UAAA,MAAA,IAAU,CAAA,CAAA,EAAI,IAAI,CAAA,EAAA,EAAK,MAAA,CAAO,KAAK,UAAA,CAAW,IAAI,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,QACtD;AAAA,MACF;AAEA,MAAA,MAAA,IAAU,GAAA;AAGV,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,MACtC;AAEA,MAAA,MAAA,IAAU,KAAK,OAAO,CAAA,CAAA,CAAA;AAEtB,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAOA,IAAA,IAAM,OAAN,MAAW;AAAA,MACT,WAAA,CAAY,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO;AACpC,QAAA,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,KAAK,CAAA;AAClC,QAAA,IAAA,CAAK,QAAA,GAAW,YAAY,EAAC;AAAA,MAC/B;AAAA,MAEA,YAAA,CAAa,WAAW,KAAA,EAAO;AAC7B,QAAA,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,GAAI,KAAA;AAAA,MAC/B;AAAA,MAEA,MAAA,GAAS;AACP,QAAA,OAAO,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AAAA,MACjC;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,MAAM,CAAA;AAAA,MACnC;AAAA,KACF;AAEA,IAAA,IAAI,UAAA,GAAa,MAAM,QAAA,CAAS;AAAA,MAC9B,YAAYnB,KAAAA,EAAM;AAChB,QAAA,IAAA,CAAK,IAAA,GAAOA,KAAAA;AAAA,MACd;AAAA,MACA,MAAA,GAAS;AACP,QAAA,OAAO,QAAA,CAAS,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAAA,MAC1C;AAAA,MACA,QAAA,GAAW;AACT,QAAA,OAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,MACzB;AAAA,KACF;AAGA,IAAA,IAAM,aAAN,MAAiB;AAAA,MACf,WAAA,CAAY,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU;AACnC,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,QAAA,GAAW,YAAY,EAAC;AAAA,MAC/B;AAAA,MAEA,MAAA,GAAS;AACP,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACvC,QAAA,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ,IAAA,CAAK,IAAI,CAAA;AACnC,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,IAAA,CAAK,SAAA,GAAY,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AAAA,QAC3C;AACA,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAQ,CAAA;AAAA,QAC5C;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,IAAI,MAAA,GAAS,CAAA,SAAA,EAAY,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAC1C,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,MAAA,IAAU,WAAW,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,QACxD;AACA,QAAA,MAAA,IAAU,GAAA;AACV,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,QACtC;AACA,QAAA,MAAA,IAAU,MAAA;AACV,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,KACF;AAKA,IAAA,IAAM,MAAN,MAAU;AAAA,MACR,WAAA,CAAY,GAAA,EAAK,GAAA,EAAK,KAAA,EAAO;AAC3B,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,QAAA,IAAA,CAAK,OAAA,GAAU,CAAC,MAAM,CAAA;AACtB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,MAEA,SAAS,SAAA,EAAW;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA;AAAA,MACxC;AAAA,MAEA,MAAA,GAAS;AACP,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AACzC,QAAA,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA;AAChB,QAAA,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA;AAChB,QAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAGjB,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,YAAA,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,UACtC;AAAA,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,QAAA,GAAW;AACT,QAAA,IAAI,SAAS,CAAA,UAAA,EAAa,IAAA,CAAK,GAAG,CAAA,OAAA,EAAU,KAAK,GAAG,CAAA,CAAA,CAAA;AAGpD,QAAA,IAAI,MAAA,GAAS,EAAA;AACb,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,YAAA,MAAA,IAAU,CAAA,EAAG,UAAU,KAAK,CAAC,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,UACpD;AAAA,QACF;AACA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,MAAA,IAAU,CAAA,QAAA,EAAW,MAAA,CAAO,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,QACrC;AAEA,QAAA,MAAA,IAAU,GAAA;AACV,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,KACF;AAUA,IAAA,SAAS,oBAAoB,QAAA,EAAU;AACrC,MAAA,OAAO,IAAI,iBAAiB,QAAQ,CAAA;AAAA,IACtC;AAOA,IAAA,IAAM,WAAN,MAAe;AAAA,MACb,WAAA,CAAY,IAAA,EAAM,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO;AAC1C,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,aAAa,EAAC;AACnB,QAAA,IAAA,CAAK,QAAA,GAAW,YAAY,EAAC;AAC7B,QAAA,IAAA,CAAK,OAAA,GAAU,WAAW,EAAC;AAC3B,QAAA,IAAA,CAAK,KAAA,GAAQ,SAAS,EAAC;AACvB,QAAA,IAAA,CAAK,KAAA,GAAQ,EAAA;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAA,CAAa,MAAM,KAAA,EAAO;AACxB,QAAA,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,GAAI,KAAA;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,IAAA,EAAM;AACjB,QAAA,OAAO,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAC7B;AAAA,MAEA,SAAS,KAAA,EAAO;AACd,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS;AACP,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,eAAA,CAAgB,oCAAA,EAAsC,KAAK,IAAI,CAAA;AAErF,QAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,UAAA,EAAY;AAClC,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA,EAAG;AAC/D,YAAA,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM,IAAA,CAAK,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,UAC/C;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,IAAA,CAAK,SAAA,GAAY,WAAA,CAAY,IAAA,CAAK,OAAO,CAAA;AAAA,QAC3C;AAGA,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,YAAA,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,UACtC;AAAA,QACF;AAEA,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,IAAA,CAAK,YAAY,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAQ,CAAA;AAAA,QAC5C;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW;AACT,QAAA,IAAI,MAAA,GAAS,MAAM,IAAA,CAAK,IAAA;AAGxB,QAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,UAAA,EAAY;AAClC,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,UAAA,EAAY,IAAI,CAAA,EAAG;AAC/D,YAAA,MAAA,IAAU,MAAM,IAAA,GAAO,IAAA;AACvB,YAAA,MAAA,IAAU,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW,IAAI,CAAC,CAAA;AACtC,YAAA,MAAA,IAAU,GAAA;AAAA,UACZ;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,MAAA,IAAU,WAAW,MAAA,CAAO,WAAA,CAAY,IAAA,CAAK,OAAO,CAAC,CAAC,CAAA,CAAA,CAAA;AAAA,QACxD;AAEA,QAAA,IAAI,MAAA,GAAS,EAAA;AAGb,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,KAAA,EAAO;AAC9B,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,KAAA,EAAO,KAAM,CAAA,EAAG;AAC5D,YAAA,MAAA,IAAU,CAAA,EAAG,UAAU,KAAK,CAAC,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,UACpD;AAAA,QACF;AAEA,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,MAAA,IAAU,WAAW,MAAM,CAAA,CAAA,CAAA;AAAA,QAC7B;AAEA,QAAA,MAAA,IAAU,GAAA;AAEV,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,UAAA,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,QACtC;AAEA,QAAA,MAAA,IAAU,IAAA,GAAO,KAAK,IAAA,GAAO,GAAA;AAE7B,QAAA,OAAO,MAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS;AACP,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,KAAA,KAAU,MAAM,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,MAC7D;AAAA,KACF;AAKA,IAAA,IAAM,WAAN,MAAe;AAAA,MACb,YAAYA,KAAAA,EAAM;AAChB,QAAA,IAAA,CAAK,IAAA,GAAOA,KAAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,GAAS;AACP,QAAA,OAAO,QAAA,CAAS,cAAA,CAAe,IAAA,CAAK,IAAI,CAAA;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAA,GAAW;AACT,QAAA,OAAO,MAAA,CAAO,IAAA,CAAK,MAAA,EAAQ,CAAA;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,GAAS;AACP,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,KACF;AAIA,IAAA,IAAM,iBAAiB,CAAA,UAAA,KAAc;AACnC,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,WAAW,MAAA,KAAW,CAAA,IAAK,WAAW,CAAC,CAAA,CAAE,SAAS,MAAA,EAAQ;AAC5D,QAAA,IAAA,GAAO,WAAW,GAAA,EAAI;AACtB,QAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAAA,MACd,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,QAAA,EAAU,UAAU,CAAA;AAAA,MAC1C;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAQA,IAAA,IAAM,iBAAiB,CAAA,IAAA,KAAQ;AAC7B,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,IAAI,KAAK,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,EAAG;AACzC,QAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,IAAA,EAAM;AAC5B,UAAA,KAAA,IAAS,eAAe,IAAI,CAAA;AAAA,QAC9B;AAAA,MACF,CAAA,MAAA,IAAW,KAAK,IAAA,EAAM;AACpB,QAAA,KAAA,IAAS,cAAA,CAAe,KAAK,IAAI,CAAA;AAAA,MACnC,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,QAAA,EAAU;AACjC,QAAA,KAAA,IAAS,cAAA,CAAe,KAAK,IAAI,CAAA;AACjC,QAAA,IAAI,KAAK,GAAA,EAAK;AAAE,UAAA,KAAA,IAAS,GAAA,GAAM,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA;AAAA,QAAG;AACzD,QAAA,IAAI,KAAK,GAAA,EAAK;AAAE,UAAA,KAAA,IAAS,GAAA,GAAM,cAAA,CAAe,IAAA,CAAK,GAAG,CAAA;AAAA,QAAG;AAAA,MAC3D,WAAW,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,IAAA,CAAK,SAAS,SAAA,EAAW;AAC7D,QAAA,KAAA,MAAW,EAAA,IAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,EAAE,CAAA,EAAG;AACpC,UAAA,MAAM,SAAA,GAAY,EAAA,CAAG,WAAA,CAAY,CAAC,CAAA;AAClC,UAAA,IAAK,KAAO,SAAA,IAAa,SAAA,GAAY,OAAU,GAAA,GAAS,SAAA,IAAa,YAAY,GAAA,EAAQ;AACvF,YAAA,KAAA,IAAS,IAAA;AAAA,UACX,CAAA,MAAA,IAAW,EAAA,GAAO,SAAA,IAAa,SAAA,GAAY,EAAA,EAAM;AAC/C,YAAA,KAAA,IAAS,GAAA;AAAA,UACX,CAAA,MAAO;AACL,YAAA,KAAA,IAAS,IAAA;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,IAAS,CAAA;AAAA,MACX;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,iBAAA,GAAoB;AAAA,MACxB,OAAA,EAAS,QAAA;AAAA;AAAA,MACT,SAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW,QAAA;AAAA;AAAA,MACX,MAAA,EAAQ,GAAA;AAAA,MACR,aAAA,EAAe,QAAA;AAAA,MACf,cAAA,EAAgB,QAAA;AAAA,MAChB,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,WAAA,EAAa,QAAA;AAAA,MACb,UAAA,EAAY,QAAA;AAAA,MACZ,SAAA,EAAW,QAAA;AAAA,MACX,WAAA,EAAa,QAAA;AAAA,MACb,YAAA,EAAc,QAAA;AAAA,MACd,SAAA,EAAW,QAAA;AAAA,MACX,SAAA,EAAW,QAAA;AAAA,MACX,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY,QAAA;AAAA,MACZ,kBAAA,EAAoB,QAAA;AAAA,MACpB,mBAAA,EAAqB,QAAA;AAAA,MACrB,eAAA,EAAiB,QAAA;AAAA,MACjB,cAAA,EAAgB,QAAA;AAAA,MAChB,WAAA,EAAa,QAAA;AAAA,MACb,eAAA,EAAiB,QAAA;AAAA,MACjB,cAAA,EAAgB,QAAA;AAAA,MAChB,gBAAA,EAAkB,QAAA;AAAA,MAClB,eAAA,EAAiB,QAAA;AAAA,MACjB,UAAA,EAAY,QAAA;AAAA,MACZ,eAAA,EAAiB,QAAA;AAAA,MACjB,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB,QAAA;AAAA,MACjB,OAAA,EAAS,QAAA;AAAA,MACT,iBAAA,EAAmB,QAAA;AAAA,MACnB,gBAAA,EAAkB,QAAA;AAAA,MAClB,iBAAA,EAAmB,QAAA;AAAA,MACnB,kBAAA,EAAoB,QAAA;AAAA,MACpB,UAAA,EAAY,GAAA;AAAA,MACZ,gBAAA,EAAkB,QAAA;AAAA,MAClB,OAAA,EAAS,QAAA;AAAA,MACT,kBAAA,EAAoB,QAAA;AAAA,MACpB,kBAAA,EAAoB,QAAA;AAAA,MACpB,MAAA,EAAQ,QAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY,QAAA;AAAA,MACZ,kBAAA,EAAoB,QAAA;AAAA,MACpB,mBAAA,EAAqB,QAAA;AAAA,MACrB,gBAAA,EAAkB,QAAA;AAAA,MAClB,iBAAA,EAAmB,QAAA;AAAA,MACnB,gBAAA,EAAkB,QAAA;AAAA,MAClB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,GAAA;AAAA,MACjB,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB;AAAA,KACnB;AAEA,IAAA,IAAM,UAAA,GAAa,SAAS,KAAA,EAAO;AACjC,MAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,iBAAA,CAAkB,MAAM,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,MAAA,MAAM,OAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,KAAK,CAAC,CAAA;AACvC,MAAA,IAAA,CAAK,YAAA,CAAa,YAAY,MAAM,CAAA;AACpC,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,QAAA,GAAW,CAAC,WAAA,EAAa,aAAa,CAAA;AAG5C,IAAA,IAAM,UAAA,GAAa,CAAC,KAAA,KAAU;AAC5B,MAAA,MAAM,EAAA,GAAK,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AACjC,MAAA,IAAI,KAAA,CAAM,KAAA,CAAM,OAAA,CAAQ,OAAO,IAAI,EAAA,EAAI;AACrC,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,IAAI,CAAA;AACvC,QAAA,IAAI,CAAA,GAAI,KAAA,IAAS,KAAA,GAAQ,GAAA,EAAK;AAC5B,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,QAC/B,CAAA,MAAA,IAAW,GAAA,IAAO,KAAA,IAAS,KAAA,GAAQ,GAAA,EAAK;AACtC,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,QAC/B,CAAA,MAAA,IAAW,OAAO,KAAA,EAAO;AACvB,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,QAC/B;AAAA,MACF,CAAA,MAAA,IAAW,QAAA,CAAS,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,EAAG;AACzC,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,KAAA,CAAM,IAAI,CAAA;AACvC,QAAA,IAAI,CAAA,GAAI,KAAA,IAAS,KAAA,IAAS,CAAA,EAAG;AAC3B,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAC7B,CAAA,MAAA,IAAW,CAAA,GAAI,KAAA,IAAS,KAAA,GAAQ,GAAA,EAAK;AACnC,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAC7B,CAAA,MAAA,IAAW,GAAA,IAAO,KAAA,IAAS,KAAA,GAAQ,GAAA,EAAK;AACtC,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAC7B,CAAA,MAAA,IAAW,OAAO,KAAA,EAAO;AACvB,UAAA,EAAA,CAAG,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAC7B;AAAA,MACF;AACA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAqBA,IAAA,IAAM,KAAA,GAAQ;AAAA,MACZ,GAAA,EAAK,CAAA;AAAA,MACL,KAAA,EAAO,CAAA;AAAA,MACP,KAAA,EAAO,CAAA;AAAA,MACP,IAAA,EAAM,CAAA;AAAA,MACN,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK;AAAA,KACP;AACA,IAAA,IAAM,SAAA,GAAY;AAAA,MAChB,cAAA,EAAgB,CAAA;AAAA,MAChB,OAAA,EAAS,CAAA;AAAA,MACT,UAAA,EAAY,CAAA;AAAA,MACZ,OAAA,EAAS,CAAA;AAAA,MACT,OAAA,EAAS;AAAA,KACX;AAEA,IAAA,IAAM,OAAA,GAAU;AAAA,MACd,MAAM,EAAC;AAAA,MACP,MAAM;AAAC,KACT;AAGA,IAAA,SAAS,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,MAAM,iBAAA,EAAmB;AACnE,MAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAI,CAAA,GAAI,EAAE,OAAO,OAAA,EAAQ;AAEvC,MAAA,IAAI,qBAAqB,OAAA,EAAS;AAChC,QAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAO,IAAI,OAAA,CAAQ,IAAI,EAAE,IAAI,CAAA;AAAA,MAC7C;AAAA,IACF;AAMA,IAAA,IAAM,IAAA,GAAO,MAAA;AACb,IAAA,IAAM,IAAA,GAAO,MAAA;AAGb,IAAA,IAAM,MAAA,GAAS,cAAA;AACf,IAAA,IAAM,GAAA,GAAM,KAAA;AACZ,IAAA,IAAM,KAAA,GAAQ,OAAA;AACd,IAAA,IAAM,KAAA,GAAQ,OAAA;AACd,IAAA,IAAM,OAAA,GAAU,SAAA;AAChB,IAAA,IAAM,EAAA,GAAK,UAAA;AACX,IAAA,IAAM,IAAA,GAAO,MAAA;AACb,IAAA,IAAM,KAAA,GAAQ,OAAA;AACd,IAAA,IAAM,GAAA,GAAM,KAAA;AACZ,IAAA,IAAM,OAAA,GAAU,SAAA;AAChB,IAAA,IAAM,OAAA,GAAU,SAAA;AAKhB,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,OAAA,EAAS,IAAI,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AAEzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAElD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AAGpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAU,SAAS,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,MAAA,EAAU,SAAS,CAAA;AAG7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAK,YAAA,EAAc,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAK,YAAA,EAAc,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC9D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAGtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,iBAAiB,CAAA;AAGvD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAGnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAW,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAU,OAAO,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAGlD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,sBAAA,EAAwB,IAAI,CAAA;AAC9D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,sBAAA,EAAwB,IAAI,CAAA;AAC9D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,qBAAA,EAAuB,IAAI,CAAA;AAC7D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAG/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAEjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,aAAa,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAEjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,gBAAgB,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,iBAAiB,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,aAAa,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAEjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AAEvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAkB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAkB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAgB,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,iBAAiB,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAG3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAG3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAe,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,gBAAgB,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,kBAAkB,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AAC7D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAa,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,eAAe,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,iBAAiB,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,qBAAqB,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,eAAe,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,gBAAgB,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC9D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AAEjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,aAAa,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AAGpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAGrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAGlD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AAGtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAW,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAmB,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAkB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAe,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAoB,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAmB,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,qBAAqB,CAAA;AAGvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAe,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,sBAAsB,CAAA;AAGxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AAGpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AAGzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,0BAAA,EAA4B,IAAI,CAAA;AAClE,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,2BAAA,EAA6B,IAAI,CAAA;AACnE,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,uBAAA,EAAyB,IAAI,CAAA;AAC/D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,wBAAA,EAA0B,IAAI,CAAA;AAChE,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAKtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAE1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,qBAAA,EAAuB,IAAI,CAAA;AAC7D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAE1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAA,EAAmB,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,uBAAA,EAAyB,IAAI,CAAA;AAC/D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,qBAAA,EAAuB,IAAI,CAAA;AAC7D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAE3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,kBAAA,EAAoB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAA,EAAqB,IAAI,CAAA;AAC3D,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAW,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAe,CAAA;AAEjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,GAAG,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,cAAc,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAK,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAK,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,kBAAkB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,oBAAA,EAAsB,IAAI,CAAA;AAChE,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,MAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,MAAA,EAAU,QAAQ,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,OAAO,CAAA;AAG7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAQ,CAAA;AAE9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAM,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAM,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAM,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAElD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAChC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,GAAG,CAAA;AACrC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,GAAA,EAAK,IAAI,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,GAAA,EAAK,IAAI,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,MAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,MAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,MAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,SAAS,CAAA;AACvC,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,MAAM,CAAA;AACvC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,MAAM,CAAA;AACvC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAK,QAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,SAAS,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAS,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,SAAA,EAAW,IAAI,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA;AAChC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAM,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,MAAA,EAAQ,IAAI,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAQ,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAM,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,GAAA,EAAK,MAAA,EAAQ,IAAI,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,MAAM,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,SAAS,CAAA;AAE/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,gBAAgB,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,GAAG,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,SAAS,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,gBAAgB,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,WAAW,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,GAAG,CAAA;AAClC,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AAEhD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,cAAA,EAAgB,SAAS,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,mBAAmB,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAW,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,gBAAgB,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,KAAK,CAAA;AACnC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,iBAAiB,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,KAAK,CAAA;AACpC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,CAAA;AACtC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,kBAAkB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,UAAU,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,UAAU,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,GAAA,EAAK,UAAA,EAAY,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAK,iBAAA,EAAmB,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAK,iBAAA,EAAmB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,YAAA,EAAc,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,eAAA,EAAiB,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,GAAG,CAAA;AACpC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAA,EAAa,IAAI,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAK,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,kBAAkB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,iBAAiB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,mBAAmB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,WAAA,EAAa,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU,eAAA,EAAiB,IAAI,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,cAAc,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,aAAa,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,gBAAgB,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,kBAAkB,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,OAAO,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,SAAS,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,SAAS,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,OAAO,CAAA;AACxC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,aAAa,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,WAAW,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,SAAS,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,gBAAgB,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,oBAAoB,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,SAAS,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,QAAQ,CAAA;AACzC,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,UAAU,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAA,EAAI,QAAA,EAAU,YAAY,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,gBAAgB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,gBAAgB,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACnD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,QAAQ,CAAA;AAC7C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAgB,UAAU,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,SAAS,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,IAAI,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,GAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAU,KAAK,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,KAAK,CAAA;AAG1C,IAAA,IAAM,SAAA,GAAY;AAAA,MAChB,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAM,IAAA;AAAA,MACN,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,cAAc,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,iBAAiB,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,GAAA,EAAK,IAAI,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,kBAAkB,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,oBAAoB,CAAA;AAC1D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,qBAAqB,CAAA;AAE3D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,UAAA,EAAY,IAAI,CAAA;AACtD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,UAAU,CAAA;AAEhD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,cAAA,EAAgB,IAAI,CAAA;AAG1D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,UAAU,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,gBAAA,EAAkB,IAAI,CAAA;AAC5D,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,CAAA;AACjD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,IAAI,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAClD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,aAAA,EAAe,IAAI,CAAA;AACzD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,MAAA,EAAU,iBAAiB,CAAA;AACvD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,IAAI,CAAA;AACxD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAGlD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,aAAa,CAAA;AAC/C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,SAAS,CAAA;AAC3C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAC9C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,cAAc,CAAA;AAChD,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,UAAU,CAAA;AAC5C,IAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,WAAA,EAAM,YAAY,CAAA;AAK9C,IAAA,IAAM,eAAA,GAAkB,gBAAA;AACxB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AAC/C,MAAA,MAAM,EAAA,GAAK,eAAA,CAAgB,MAAA,CAAO,CAAC,CAAA;AACnC,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAAA,IACpC;AAGA,IAAA,IAAM,WAAA,GAAc,2BAAA;AACpB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,MAAA,MAAM,EAAA,GAAK,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA;AAC/B,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAAA,IACpC;AAGA,IAAA,IAAM,OAAA,GAAU,sDAAA;AAChB,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA;AAC3B,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAClC,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAAA,IACpC;AAGA,IAAA,IAAM,MAAA,GAAS,4KAAA;AACf,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,MAAA,MAAM,EAAA,GAAK,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AAC1B,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAClC,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAAA,IACpC;AAKA,IAAA,IAAI,QAAA,GAAW,EAAA;AACf,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AAIvC,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA;AAC3B,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,QAAQ,CAAA;AACxC,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,EAAA,EAAI,QAAQ,CAAA;AAAA,IAC1C;AAGA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAE9C,MAAA,QAAA,GAAW,MAAA,CAAO,YAAA,CAAa,KAAA,EAAQ,KAAA,GAAS,CAAC,CAAA;AACjD,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAC9C,MAAA,YAAA,CAAa,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,IAChD;AA2BA,IAAA,SAAS,aAAA,CAAc,UAAA,EAAY,QAAA,EAAU,aAAA,EAAe;AAC1D,MAAA,MAAM,OAAO,EAAC;AACd,MAAA,IAAI,QAAQ,EAAC;AACb,MAAA,IAAI,QAAQ,EAAC;AACb,MAAA,IAAI,iBAAA,GAAoB,CAAA;AACxB,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,OAAO,CAAA,GAAI,WAAW,MAAA,EAAQ;AAC5B,QAAA,OAAO,UAAA,CAAW,CAAC,CAAA,YAAa,gBAAA,EAAkB;AAChD,UAAA,UAAA,CAAW,OAAO,CAAA,EAAG,CAAA,EAAG,GAAG,UAAA,CAAW,CAAC,EAAE,QAAQ,CAAA;AAAA,QACnD;AACA,QAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA;AACzB,QAAA,IAAI,IAAA,CAAK,cAAc,IAAA,CAAK,UAAA,CAAW,aACrC,IAAA,CAAK,UAAA,CAAW,cAAc,SAAA,EAAW;AAEzC,UAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,YAAA,KAAA,CAAM,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAC,CAAA;AAAA,UACxC;AACA,UAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,UAAA,KAAA,GAAQ,EAAC;AACT,UAAA,MAAM,GAAA,GAAM,IAAI,QAAA,CAAS,KAAA,EAAO,KAAK,CAAA;AACrC,UAAA,GAAA,CAAI,MAAM,SAAA,GAAY,MAAA;AACtB,UAAA,IAAA,CAAK,KAAK,IAAI,QAAA,CAAS,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;AACpC,UAAA,KAAA,GAAQ,EAAC;AACT,UAAA,CAAA,IAAK,CAAA;AACL,UAAA;AAAA,QACF;AACA,QAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,QAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,QAAQ,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,IAC5D,EAAE,IAAA,CAAK,UAAA,CAAW,IAAA,IAAQ,IAAA,CAAK,WAAW,IAAA,KAAS,QAAA,CAAA;AAAA,QACnD,CAAC,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,UAAA,EAAY,eAAe,CAAA,EAAG;AAC3E,UAAA,MAAM,EAAA,GAAK,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAC5B,UAAA,IAAI,QAAA,KAAa,GAAA,IAAO,EAAA,KAAO,GAAA,EAAK;AAClC,YAAA,iBAAA,IAAqB,CAAA;AACrB,YAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,cAAA,KAAA,CAAM,GAAA,EAAI;AAEV,cAAA,MAAM,OAAA,GAAU,IAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA;AAC1C,cAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAClB,cAAA,KAAA,GAAQ,CAAC,IAAI,CAAA;AAAA,YACf;AAAA,UACF,CAAA,MAAA,IAAW,aAAa,KAAA,EAAO;AAE7B,YAAA,MAAMC,KAAAA,GAAO,IAAI,UAAA,CAAW,MAAA,GAAS,IAAI,UAAA,CAAW,CAAA,GAAI,CAAC,CAAA,GAAI,IAAA;AAC7D,YAAA,IAAI,mBAAA,GAAsB,IAAA;AAC1B,YAAA,IACE,EACEA,KAAAA,IACAA,KAAAA,CAAK,IAAA,KAAS,OAAA,IACdA,KAAAA,CAAK,UAAA,CAAW,SAAA,IAChBA,KAAAA,CAAK,UAAA,CAAW,SAAA,KAAc,SAAA,CAAA,EAEhC;AAGA,cAAA,KAAA,IAAS,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC9C,gBAAA,MAAM,EAAA,GAAK,WAAW,CAAC,CAAA;AACvB,gBAAA,IACE,EAAA,CAAG,IAAA,IACH,EAAA,CAAG,IAAA,KAAS,QAAA,IACZ,EAAE,EAAA,CAAG,UAAA,CAAW,SAAA,IAAa,EAAA,CAAG,UAAA,CAAW,SAAA,KAAc,SAAA,CAAA,EACzD;AACA,kBAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,kBAAA,CAAA,IAAK,CAAA;AACL,kBAAA,IACE,EAAA,CAAG,cACH,EAAA,CAAG,UAAA,CAAW,aACd,EAAA,CAAG,UAAA,CAAW,cAAc,SAAA,EAC5B;AACA,oBAAA,mBAAA,GAAsB,KAAA;AAAA,kBACxB;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,mBAAA,EAAqB;AAEvB,cAAA,MAAM,OAAA,GAAU,IAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA;AAC1C,cAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAClB,cAAA,KAAA,GAAQ,EAAC;AAAA,YACX;AAAA,UACF;AAAA,QACF;AACA,QAAA,CAAA,IAAK,CAAA;AAAA,MACP;AACA,MAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,QAAA,MAAM,OAAA,GAAU,IAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA;AAC1C,QAAA,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,MACpB;AACA,MAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACnB,QAAA,MAAM,GAAA,GAAM,IAAI,QAAA,CAAS,KAAA,EAAO,KAAK,CAAA;AACrC,QAAA,GAAA,CAAI,MAAM,SAAA,GAAY,MAAA;AACtB,QAAA,MAAM,MAAM,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,GAAG,CAAC,CAAA;AACrC,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,QAAA,MAAM,MAAA,GAAS,IAAI,QAAA,CAAS,QAAA,EAAU,IAAI,CAAA;AAC1C,QAAA,IAAI,CAAC,aAAA,EAAe;AAClB,UAAA,MAAA,CAAO,YAAA,CAAa,eAAe,MAAM,CAAA;AACzC,UAAA,MAAA,CAAO,YAAA,CAAa,cAAc,KAAK,CAAA;AAAA,QACzC;AACA,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,oBAAoB,KAAK,CAAA;AAAA,IAClC;AAaA,IAAA,IAAM,QAAA,GAAW,SAASD,KAAAA,EAAM,IAAA,EAAM,KAAA,EAAO;AAC3C,MAAA,IACE,QAAQ,IAAI,CAAA,CAAEA,KAAI,CAAA,IAClB,OAAA,CAAQ,IAAI,CAAA,CAAEA,KAAI,EAAE,OAAA,IACpBA,KAAAA,CAAK,WAAW,CAAC,CAAA,KAAM,SACvB,EACE,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,SAAA,EAAWA,KAAI,KACpD,KAAA,KACE,KAAA,CAAM,cAAc,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,EAAG,CAAC,MAAM,IAAA,IACpD,KAAA,CAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG,CAAC,MAAM,IAAA,CAAA,CAAA,EAE9C;AACA,QAAAA,KAAAA,GAAO,OAAA,CAAQ,IAAI,CAAA,CAAEA,KAAI,CAAA,CAAE,OAAA;AAAA,MAC7B;AAEA,MAAA,OAAO,IAAI,SAASA,KAAI,CAAA;AAAA,IAC1B,CAAA;AAEA,IAAA,IAAM,QAAA,GAAW,CAAC,MAAA,EAAQ,KAAA,KAAU;AAClC,MAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAA,KAAW,CAAA,IAC3B,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS;AAChE,QAAA,MAAM,QAAQ,IAAI,QAAA;AAAA,UAChB,OAAA;AAAA,UACA,CAAC,IAAI,QAAA,CAAS,KAAA,CAAM,SAAS,CAAC,CAAA,CAAE,IAAI,CAAC;AAAA,SACvC;AACA,QAAA,MAAA,CAAO,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,MAC5B,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,IAAQ,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,MACpF;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,kBAAkB,CAAA,IAAA,KAAQ;AAE9B,MAAA,IAAI,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,SAAS,QAAA,EAAU;AAAE,QAAA,OAAO,IAAA;AAAA,MAAK;AAClE,MAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAAE,QAAA,OAAO,IAAA;AAAA,MAAK;AAC9C,MAAA,MAAM,MAAA,GAAS,IAAI,QAAA,CAAS,MAAM,CAAA;AAClC,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC7C,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA;AAC7B,QAAA,IAAI,KAAA,CAAM,SAAS,OAAA,IAAW,MAAA,CAAO,KAAK,KAAA,CAAM,UAAU,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AACxE,UAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,QACxB,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AAEhC,UAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC9C,YAAA,MAAM,UAAA,GAAa,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AACnC,YAAA,IAAI,UAAA,CAAW,SAAS,OAAA,IAAW,MAAA,CAAO,KAAK,KAAA,CAAM,UAAU,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AAC7E,cAAA,cAAA,GAAiB,KAAA;AACjB,cAAA;AAAA,YACF;AAAA,UACF;AACA,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC9C,cAAA,MAAM,UAAA,GAAa,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AACnC,cAAA,QAAA,CAAS,QAAQ,UAAU,CAAA;AAAA,YAC7B;AAAA,UACF,CAAA,MAAO;AACL,YAAA,MAAA,CAAO,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UAC5B;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,QAC5B;AAAA,MACF;AACA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC/C,QAAA,IAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,OAAA,EAAS;AACvC,UAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA;AAG/B,UAAA,IAAI,KAAA,CAAM,SAAS,CAAC,CAAA,CAAE,KAAK,MAAA,CAAO,CAAC,MAAM,GAAA,EAAK;AAC5C,YAAA,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,GAAO,MAAA,GAAW,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAAA,UACpE;AACA,UAAA,MAAM,CAAA,GAAI,KAAA,CAAM,QAAA,CAAS,CAAC,EAAE,IAAA,CAAK,MAAA;AACjC,UAAA,IAAI,CAAA,GAAI,CAAA,IAAK,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,KAAM,GAAA,EAAK;AACzD,YAAA,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,MAAA;AAAA,UACjE;AACA,UAAA,KAAA,MAAW,CAAC,KAAK,KAAK,CAAA,IAAK,OAAO,OAAA,CAAQ,IAAA,CAAK,UAAU,CAAA,EAAG;AAC1D,YAAA,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,GAAI,KAAA;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,MAAA,CAAO,SAAS,MAAA,KAAW,CAAA,IAAK,OAAO,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS;AACvE,QAAA,OAAO,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF,CAAA;AAMA,IAAA,IAAM,OAAA,GAAU,SAAS,IAAA,EAAM,UAAA,GAAa,KAAA,EAAO;AACjD,MAAA,IAAI,KAAK,MAAA,KAAW,CAAA,IAAK,EAAE,IAAA,CAAK,CAAC,aAAa,gBAAA,CAAA,EAAmB;AAC/D,QAAA,OAAO,KAAK,CAAC,CAAA;AAAA,MACf,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AAEtB,QAAA,IAAI,IAAA,CAAK,CAAC,CAAA,YAAa,QAAA,IAAY,KAAK,CAAC,CAAA,CAAE,IAAA,KAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,CAAC,CAAA,CAAE,WAAW,KAAA,EAAO;AACrF,UAAA,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA,CAAW,MAAA,GAAS,KAAA;AAC5B,UAAA,IAAA,CAAK,CAAC,CAAA,CAAE,UAAA,CAAW,MAAA,GAAS,KAAA;AAAA,QAC9B;AACA,QAAA,MAAM,GAAA,GAAM,KAAK,MAAA,GAAS,CAAA;AAC1B,QAAA,IAAI,IAAA,CAAK,GAAG,CAAA,YAAa,QAAA,IAAY,KAAK,GAAG,CAAA,CAAE,IAAA,KAAS,IAAA,IAAQ,CAAC,IAAA,CAAK,GAAG,CAAA,CAAE,WAAW,KAAA,EAAO;AAC3F,UAAA,IAAA,CAAK,GAAG,CAAA,CAAE,UAAA,CAAW,MAAA,GAAS,KAAA;AAC9B,UAAA,IAAA,CAAK,GAAG,CAAA,CAAE,UAAA,CAAW,MAAA,GAAS,KAAA;AAAA,QAChC;AAAA,MACF;AACA,MAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,IAAI,CAAA;AAAA,IAClC,CAAA;AAOA,IAAA,SAAS,oBAAoB,KAAA,EAAO;AAClC,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,MAAM,IAAA,KAAS,IAAA,IAAQ,KAAA,CAAM,QAAA,CAAS,WAAW,CAAA,EAAG;AACtD,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AAC9B,QAAA,OAAO,KAAA,YAAiB,QAAA,IAAY,KAAA,CAAM,IAAA,KAAS,GAAA;AAAA,MACrD,WAAW,KAAA,CAAM,IAAA,KAAS,WAAW,KAAA,CAAM,QAAA,CAAS,WAAW,CAAA,EAAG;AAChE,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AAC9B,QAAA,OAAO,KAAA,YAAiB,QAAA,IAAY,KAAA,CAAM,IAAA,KAAS,QAAA;AAAA,MACrD,CAAA,MAAA,IAAW,MAAM,IAAA,KAAS,IAAA,IAAQ,MAAM,QAAA,CAAS,MAAA,KAAW,CAAA,IAC1D,KAAA,CAAM,YAAA,CAAa,WAAW,MAAM,MAAA,IACpC,KAAA,CAAM,aAAa,QAAQ,CAAA,KAAM,SACjC,KAAA,CAAM,YAAA,CAAa,QAAQ,CAAA,KAAM,KAAA,EAAO;AACxC,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AAC9B,QAAA,OAAO,KAAA,YAAiB,QAAA,IAAY,KAAA,CAAM,IAAA,KAAS,GAAA;AAAA,MACrD,CAAA,MAAO;AACL,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,IAAM,OAAA,GAAU,CAAC,UAAA,EAAY,CAAA,KAAM;AACjC,MAAA,MAAM,IAAA,GAAO,WAAW,CAAC,CAAA;AACzB,MAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,CAAA,GAAI,CAAC,CAAA;AACtC,MAAA,OAAQ,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,KAAS,GAAA;AAAA,MAE5C,IAAA,CAAK,OAAO,aAAA,CAAc,GAAA,IAAO,KAAK,GAAA,CAAI,GAAA,KAAQ,cAAc,GAAA,CAAI,KAAA;AAAA,IACxE,CAAA;AAEA,IAAA,IAAM,QAAQ,CAAA,IAAA,KAAQ;AACpB,MAAA,OAAQ,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,MAAA,KAAW,SAC3C,IAAA,CAAK,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,MAAA,KAAW,MAAA;AAAA,IACjD,CAAA;AAQA,IAAA,IAAM,eAAA,GAAkB,SAAS,UAAA,EAAY,KAAA,EAAO,aAAa,KAAA,EAAO;AACtE,MAAA,IAAI,CAAC,UAAA,IAAc,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAC1C,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,UAAA,CAAW,CAAC,GAAG,KAAK,CAAA;AAC/C,QAAA,IAAI,KAAA,YAAiB,QAAA,IAAY,KAAA,CAAM,IAAA,KAAS,IAAA,EAAM;AAGpD,UAAA,KAAA,CAAM,YAAA,CAAa,UAAU,KAAK,CAAA;AAClC,UAAA,KAAA,CAAM,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QACpC;AACA,QAAA,OAAO,CAAC,KAAK,CAAA;AAAA,MACf;AAEA,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,MAAM,aAAa,EAAC;AACpB,MAAA,IAAI,SAAA;AACJ,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,QAAA,UAAA,CAAW,KAAK,YAAA,CAAa,UAAA,CAAW,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA;AAAA,MACpD;AAEA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,QAAA,MAAM,KAAA,GAAQ,WAAW,CAAC,CAAA;AAG1B,QAAA,IAAI,CAAA,GAAI,UAAA,CAAW,MAAA,GAAS,CAAA,IAAK,MAAM,UAAA,CAAW,CAAC,CAAC,CAAA,IAAK,KAAA,CAAM,UAAA,CAAW,CAAA,GAAI,CAAC,CAAC,CAAA,EAAG;AACjF,UAAA,KAAA,CAAM,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QACpC;AACA,QAAA,IAAI,CAAA,GAAI,CAAA,IAAK,KAAA,CAAM,UAAA,CAAW,CAAC,CAAC,CAAA,IAAK,KAAA,CAAM,UAAA,CAAW,CAAA,GAAI,CAAC,CAAC,CAAA,EAAG;AAC7D,UAAA,KAAA,CAAM,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QACpC;AAGA,QAAA,IAAI,MAAM,IAAA,KAAS,IAAA,IAAQ,SAAA,IAAa,SAAA,CAAU,SAAS,IAAA,EAAM;AAE/D,UAAA,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,QAAQ,CAAA;AACzC,UAAA;AAAA,QACF,WAAW,mBAAA,CAAoB,KAAK,KAAK,SAAA,IAAa,SAAA,CAAU,SAAS,IAAA,EAAM;AAE7E,UAAA,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,QAAQ,CAAA;AACzC,UAAA;AAAA,QACF,WAAW,SAAA,IAAa,SAAA,CAAU,SAAS,IAAA,IAAQ,CAAA,GAAI,WAAW,MAAA,GAAS,CAAA,IACzE,UAAA,CAAW,CAAA,GAAI,CAAC,CAAA,CAAE,IAAA,KAAS,QAAQ,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAA,EAAG;AAC3D,UAAA,SAAA,CAAU,QAAA,CAAS,IAAA,CAAK,GAAG,KAAA,CAAM,QAAQ,CAAA;AACzC,UAAA;AAAA,QACF,WAAW,KAAA,CAAM,IAAA,KAAS,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,EAAG;AAEhE,UAAA,KAAA,CAAM,WAAW,CAAC,GAAG,UAAU,QAAA,EAAU,GAAG,MAAM,QAAQ,CAAA;AAC1D,UAAA,MAAA,CAAO,GAAA,EAAI;AAAA,QACb,YAAY,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,KAAA,CAAM,SAAS,MAAA,KAChD,KAAA,CAAM,QAAA,CAAS,MAAA,IAAU,KAAK,SAAA,KAC7B,SAAA,CAAU,SAAS,IAAA,IAAQ,mBAAA,CAAoB,SAAS,CAAA,CAAA,EAAI;AAG/D,UAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA;AAC7B,UAAA,IAAI,IAAA,YAAgB,QAAA,IAAY,IAAA,CAAK,IAAA,KAAS,QAAQ,SAAA,EAAW;AAC/D,YAAA,IAAA,CAAK,WAAW,CAAC,GAAG,UAAU,QAAA,EAAU,GAAG,KAAK,QAAQ,CAAA;AACxD,YAAA,MAAA,CAAO,GAAA,EAAI;AAAA,UACb;AAAA,QACF;AACA,QAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,QAAA,SAAA,GAAY,KAAA;AAAA,MACd;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAMA,IAAA,IAAM,kBAAA,GAAqB,SAAS,UAAA,EAAY,KAAA,EAAO,aAAa,KAAA,EAAO;AACzE,MAAA,OAAO,QAAQ,eAAA,CAAgB,UAAA,EAAY,KAAA,EAAO,UAAU,GAAG,UAAU,CAAA;AAAA,IAC3E,CAAA;AAMA,IAAA,IAAM,YAAA,GAAe,SAAS,KAAA,EAAO,KAAA,EAAO;AAC1C,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAO,IAAI,SAAS,MAAM,CAAA;AAAA,MAC5B;AAEA,MAAA,IAAI,oBAAA,CAAqB,KAAA,CAAM,IAAI,CAAA,EAAG;AAEpC,QAAA,MAAM,SAAS,oBAAA,CAAqB,KAAA,CAAM,IAAI,CAAA,CAAE,OAAO,KAAK,CAAA;AAC5D,QAAA,OAAO,MAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,MAAM,IAAI,UAAA,CAAW,8BAAA,GAAiC,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,MACxE;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,SAAS,CAAA,CAAA,KAAK;AAClB,MAAA,OAAO,IAAI,QAAA,CAAS,KAAA,EAAO,EAAC,EAAG,EAAC,EAAG,EAAE,OAAA,EAAS,GAAA,EAAK,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,IACnE,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,CAAC,MAAA,EAAQ,KAAA,EAAO,UAAU,KAAK,CAAA;AACvD,IAAA,IAAM,WAAW,CAAA,MAAA,KAAU;AACzB,MAAA,KAAA,MAAW,IAAA,IAAQ,OAAO,QAAA,EAAU;AAClC,QAAA,IAAI,KAAK,IAAA,IAAQ,eAAA,CAAgB,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACpD,UAAA,IAAI,KAAK,OAAA,IAAW,IAAA,CAAK,OAAA,CAAQ,CAAC,MAAM,WAAA,EAAa;AACnD,YAAA,MAAM,QAAQ,IAAA,CAAK,KAAA;AACnB,YAAA,OAAO,KAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,MAAM,KAAA,GAAQ,SAAS,IAAI,CAAA;AAC3B,YAAA,IAAI,KAAA,EAAO;AAAE,cAAA,OAAO,KAAA;AAAA,YAAM;AAAA,UAC5B;AAAA,QACF,CAAA,MAAA,IAAW,CAAC,IAAA,CAAK,IAAA,EAAM;AACrB,UAAA,MAAM,KAAA,GAAQ,SAAS,IAAI,CAAA;AAC3B,UAAA,IAAI,KAAA,EAAO;AAAE,YAAA,OAAO,KAAA;AAAA,UAAM;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,gBAAA,GAAmB,CAAC,UAAA,EAAY,GAAA,EAAK,OAAO,KAAA,KAAU;AAC1D,MAAA,GAAA,GAAM,kBAAA,CAAmB,GAAA,CAAI,CAAC,CAAA,CAAE,MAAM,KAAK,CAAA;AAC3C,MAAA,GAAA,GAAM,gBAAgB,GAAG,CAAA;AACzB,MAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,SAAS,CAAA;AAE1B,MAAA,MAAM,KAAA,GAAQ,SAAS,UAAU,CAAA;AACjC,MAAA,UAAA,GAAa,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,UAAU,CAAC,CAAA;AAC7C,MAAA,MAAM,WAAW,CAAC,MAAA,EAAO,EAAG,UAAA,EAAY,QAAQ,CAAA;AAChD,MAAA,QAAA,CAAS,QAAQ,CAAA,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,KAAK,GAAG,CAAA;AACzC,MAAA,MAAM,MAAM,IAAI,QAAA,CAAS,OAAO,QAAA,EAAU,CAAC,YAAY,CAAC,CAAA;AACxD,MAAA,IAAI,KAAA,EAAO;AAAE,QAAA,GAAA,CAAI,YAAA,CAAa,MAAM,KAAK,CAAA;AAAA,MAAG;AAC5C,MAAA,MAAM,QAAQ,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,GAAG,CAAC,CAAA;AAC1C,MAAA,KAAA,CAAM,MAAM,KAAA,GAAQ,MAAA;AACpB,MAAA,KAAA,CAAM,YAAA,CAAa,gBAAgB,MAAM,CAAA;AACzC,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAMA,IAAA,SAAS,WAAA,CAAY,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,QAAA,EAAU;AAEzD,MAAA,IAAI,GAAA,GAAM,IAAA;AACV,MAAA,IAAI,KAAK,MAAA,KAAW,CAAA,IAAK,KAAK,CAAC,CAAA,CAAE,SAAS,KAAA,EAAO;AAC/C,QAAA,GAAA,GAAM,IAAA,CAAK,CAAC,CAAA,CAAE,GAAA;AACd,QAAA,IAAA,GAAO,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA;AAAA,MACjB;AAEA,MAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,IAAA,EAAM,KAAK,CAAA;AAE9C,MAAA,IAAI,WAAW,MAAA,KAAW,CAAA,IAAK,UAAA,CAAW,CAAC,aAAa,UAAA,EAAY;AAClE,QAAA,OAAO,WAAW,CAAC,CAAA;AAAA,MACrB;AAEA,MAAA,MAAM,OAAQ,QAAA,CAAS,WAAA,IAAe,QAAA,CAAS,QAAA,GAAY,SAAS,QAAA,CAAS,IAAA;AAE7E,MAAA,MAAM,KAAK,UAAA,CAAW,MAAA,KAAW,CAAA,GAAI,IAAA,GAAO,WAAW,CAAC,CAAA;AACxD,MAAA,IAAI,OAAA,GAAU,UAAA,CAAW,MAAA,KAAW,CAAA,IAAK,QAAQ,IAAA,IAAS,EAAA,YAAc,QAAA,GAClE,UAAA,CAAW,CAAC,CAAA,GACZ,aAAA,CAAc,UAAA,EAAY,IAAA,EAAM,SAAS,WAAW,CAAA;AAE1D,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,OAAA,GAAU,gBAAA,CAAiB,OAAA,EAAS,GAAA,EAAK,KAAA,EAAO,SAAS,KAAK,CAAA;AAAA,MAChE;AAEA,MAAA,IAAI,SAAS,QAAA,EAAU;AAErB,QAAA,MAAM,aAAa,IAAI,QAAA;AAAA,UACrB,YAAA;AAAA,UAAc,CAAC,IAAI,QAAA,CAAS,aAAa,CAAC;AAAA,SAAC;AAC7C,QAAA,UAAA,CAAW,YAAA,CAAa,YAAY,mBAAmB,CAAA;AACvD,QAAA,OAAA,GAAU,IAAI,QAAA,CAAS,WAAA,EAAa,CAAC,OAAA,EAAS,UAAU,CAAC,CAAA;AAAA,MAC3D;AAEA,MAAA,MAAMoB,QAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,OAAO,CAAC,CAAA;AAE3C,MAAA,IAAI,SAAS,GAAA,EAAK;AAChB,QAAAA,KAAAA,CAAK,YAAA,CAAa,OAAA,EAAS,oCAAoC,CAAA;AAAA,MACjE;AACA,MAAA,IAAI,SAAS,WAAA,EAAa;AACxB,QAAAA,KAAAA,CAAK,YAAA,CAAa,SAAA,EAAW,OAAO,CAAA;AACpC,QAAAA,KAAAA,CAAK,MAAM,OAAA,GAAU,YAAA;AAGrB,QAAAA,KAAAA,CAAK,OAAA,GAAU,CAAC,aAAa,CAAA;AAAA,MAC/B;AACA,MAAA,OAAOA,KAAAA;AAAA,IACT;AAGA,IAAA,IAAM,UAAA,GAAa,sGAAA;AACnB,IAAA,IAAM,WAAA,GAAc,kIAAA;AACpB,IAAA,IAAM,UAAA,GAAa,mBAAA;AAEnB,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,MAAM,eAAe,KAAA,CAAM,UAAA,GACvB,UAAA,CAAW,KAAK,IAChB,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,SAAS,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AAC1D,MAAA,IAAI,CAAC,MAAM,UAAA,EAAY;AACrB,QAAA,YAAA,CAAa,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,MAC/C;AACA,MAAA,IAAI,KAAA,CAAM,UAAU,OAAA,EAAS;AAC3B,QAAA,YAAA,CAAa,MAAM,SAAA,GAAY,GAAA;AAAA,MAEjC;AACA,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,QAAA,GAAW,OAAA;AAC/C,MAAA,MAAM,iBAAA,GAAoB,wBAAA,CAAyB,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA;AAClE,MAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,IAAA,KAAS,UAAW,CAAC,KAAA,CAAM,UAAA,IAAe,KAAA,CAAM,KAAK,IAAA,IAC3E,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AACnC,QAAA,MAAMpB,KAAAA,GAAO,MAAM,IAAA,CAAK,IAAA;AACxB,QAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,KAAU,OAAA;AAC9B,QAAA,MAAM,UAAA,GAAa,KAAA,KAAU,OAAA,GAAU,MAAA,GAAS,EAAA;AAChD,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,SAAS,CAAA;AAAA,QACrC;AACA,QAAA,MAAM,UAAA,GAAa,KAAA,GAAQ,MAAA,GAAS,iBAAA,GAAoB,MAAA,GAAS,EAAA;AACjE,QAAA,IAAI,UAAA,CAAW,OAAA,CAAQA,KAAI,CAAA,GAAI,EAAA,EAAI;AACjC,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAChD,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAAA,QAClD,CAAA,MAAA,IAAW,WAAA,CAAY,OAAA,CAAQA,KAAI,IAAI,EAAA,EAAI;AACzC,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAChD,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAAA,QAClD,CAAA,MAAA,IAAW,UAAA,CAAW,OAAA,CAAQA,KAAI,IAAI,EAAA,EAAI;AACxC,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAChD,UAAA,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,CAAA,OAAA,EAAU,UAAU,CAAA,CAAE,CAAA;AAAA,QAClD,WAAW,KAAA,EAAO;AAChB,UAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA,OAAA,CAAS,CAAA;AAAA,QACrC,WAAW,iBAAA,EAAmB;AAC5B,UAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,CAAA,OAAA,CAAS,CAAA;AAAA,QACrC;AAAA,MACF,WAAW,iBAAA,EAAmB;AAE5B,QAAA,YAAA,CAAa,OAAA,CAAQ,KAAK,SAAS,CAAA;AAAA,MACrC;AACA,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,GAAA,EAAK,CAAC,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA,EAAG,YAAY,CAAC,CAAA;AAC9E,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,kBAAA,uBAAyB,GAAA,CAAI;AAAA,MACjC,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,IAAM,wBAAA,uBAA+B,GAAA,CAAI;AAAA,MACvC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO,KAAA;AAAA,MAAO;AAAA,KAChE,CAAA;AAED,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO,QAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAGA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA;AAAA,QACA,WAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA;AAAA,QACA,kBAAA;AAAA,QACA,iBAAA;AAAA,QACA,kBAAA;AAAA,QACA,sBAAA;AAAA,QACA,aAAA;AAAA,QACA,mBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAC,CAAA;AAEtC,QAAA,MAAM,UAAA,GAAa,CAAC,kBAAA,CAAmB,GAAA,CAAI,QAAQ,QAAQ,CAAA;AAE3D,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,QAAQ,MAAA,CAAO,IAAA;AAAA,UACrB,OAAO,OAAA,CAAQ,QAAA;AAAA,UACf,UAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,MAC1F,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,WAAW;AAAA,OACxB;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAC,CAAA;AACtC,QAAA,MAAM,IAAA,GAAO,QAAQ,MAAA,CAAO,IAAA;AAE5B,QAAA,IAAI,IAAA,KAAS,MAAA,IAAU,OAAA,CAAQ,MAAA,CAAO,SAAS,MAAA,EAAQ;AAGrD,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2BAAA,EAA8B,OAAA,CAAQ,QAAQ,CAAA,yBAAA,CAA2B,CAAA;AAAA,QACvF;AAEA,QAAA,IAAI,SAAS,MAAA,IAAU,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,KAAK,MAAA,KAAW,CAAA,IAClD,OAAA,CAAQ,QAAA,IAAY,iBAAiB,MAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,IAAI,IAAI,EAAA,EAAI;AAE1E,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,IAAA,CAAK,IAAA,GAAO,aAAA,CAAc,QAAQ,QAAQ;AAAA,WAClD;AAAA,QACF,CAAA,MAAA,IAAW,OAAA,CAAQ,QAAA,KAAa,KAAA,IAAS,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,IAAA,IAC1D,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAE7B,UAAA,OAAO,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,QAAQ,IAAA,EAAM,IAAA,CAAK,OAAO,QAAA,EAAS;AAAA,QACrE,CAAA,MAAO;AAEL,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,QAAA;AAAA,YACN,IAAA;AAAA,YACA,OAAO,OAAA,CAAQ,QAAA;AAAA,YACf,UAAA,EAAY,KAAA;AAAA,YACZ;AAAA,WACF;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,kBAAA;AAAA,QACA,mBAAA;AAAA,QACA,uBAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,aAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,YAAA,GAAe,WAAW,KAAK,CAAA;AACrC,QAAA,YAAA,CAAa,KAAA,CAAM,YAAY,CAAA,GAAI,CAAA;AACnC,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,QAAA,EAAU;AAAA,UAClC,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAAA,UAC9B;AAAA,SACD,CAAA;AACD,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAQD,IAAA,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA,MAIhB,IAAI,GAAA,GAAM,GAAA;AAAA;AAAA,MACV,EAAA,EAAK,KAAK,GAAA,GAAO,GAAA;AAAA;AAAA,MACjB,EAAA,EAAM,IAAA,GAAO,IAAA,GAAQ,GAAA,GAAO,GAAA;AAAA;AAAA,MAC5B,EAAA,EAAM,KAAA,GAAQ,IAAA,GAAQ,GAAA,GAAO,GAAA;AAAA;AAAA,MAC7B,EAAA,EAAM,GAAA,GAAM,GAAA,GAAO,GAAA,GAAO,GAAA;AAAA;AAAA,MAC1B,EAAA,EAAM,IAAA,GAAO,GAAA,GAAO,GAAA,GAAO,GAAA;AAAA;AAAA,MAC3B,EAAA,EAAM,CAAA,GAAI,KAAA,GAAS,GAAA,GAAO,GAAA;AAAA;AAAA,MAC1B,IAAK,IAAA,GAAO,EAAA;AAAA,MACZ,IAAK,IAAA,GAAO,EAAA;AAAA,MACZ,IAAK,CAAA,GAAI,EAAA;AAAA,MACT,IAAK,EAAA,GAAK;AAAA,KACZ;AAMA,IAAA,IAAM,UAAA,GAAa;AAAA,MACjB,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAM,SAAA,GAAY,SAAS,IAAA,EAAM;AAC/B,MAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,QAAA,IAAA,GAAO,IAAA,CAAK,IAAA;AAAA,MACd;AACA,MAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAA;AAAA,IACpC,CAAA;AAEA,IAAA,IAAM,UAAU,CAAA,UAAA,KAAc;AAC5B,MAAA,MAAMqB,YAAAA,GAAc,IAAA,CAAK,GAAA,CAAI,UAAA,GAAa,GAAG,CAAC,CAAA;AAC9C,MAAA,OAAO,CAAC,CAAA,EAAG,GAAA,EAAK,GAAG,EAAEA,YAAW,CAAA;AAAA,IAClC,CAAA;AAMA,IAAA,IAAM,aAAA,GAAgB,SAAS,SAAA,EAAW,KAAA,EAAO;AAC/C,MAAA,IAAI,SAAS,SAAA,CAAU,MAAA;AACvB,MAAA,IAAI,MAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA,IAAK,SAAS,CAAA,EAAG;AACtC,QAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,IAAA,EAAK;AAAA,MACjC;AACA,MAAA,MAAM,OAAO,SAAA,CAAU,IAAA;AACvB,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA,EAAM;AACT,UAAA,MAAM,WAAA,GAAc,MAAA,GAAS,SAAA,CAAU,IAAI,CAAA;AAC3C,UAAA,IAAI,WAAA,GAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AAClC,YAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,CAAC,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,UAChD;AACA,UAAA,OAAO,EAAE,QAAQ,IAAA,EAAK;AAAA,QACxB;AAAA,QACA,KAAK,IAAA;AAAA,QACL,KAAK,IAAA,EAAM;AAET,UAAA,IAAI,SAAS,IAAA,EAAM;AAAE,YAAA,MAAA,IAAU,KAAA;AAAA,UAAO;AACtC,UAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AACjE,UAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAM,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,QAC7C;AAAA,QACA,KAAK,IAAA,EAAM;AACT,UAAA,IAAI,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AAAE,YAAA,MAAA,GAAS,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,UAAG;AAC5D,UAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAK;AAAA,QAC9B;AAAA,QACA,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,IAAA,EAAM;AACT,UAAA,MAAA,GAAS,IAAA,CAAK,IAAI,MAAA,GAAS,SAAA,CAAU,IAAI,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC5D,UAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAM,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,QAC7C;AAAA,QACA,KAAK,IAAA,EAAM;AACT,UAAA,MAAA,GAAS,KAAK,GAAA,CAAI,MAAA,GAAS,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAC/C,UAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAM,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,QAC7C;AAAA,QACA;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,GAAoB,IAAA,GAAO,GAAG,CAAA;AAAA;AACvD,IACF,CAAA;AAIA,IAAA,IAAM,UAAU,CAAA,KAAA,KAAS;AACvB,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,KAAA,GAAQ,IAAI,CAAA;AACvC,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,UAAA,GAAa,CAAC,KAAA,EAAO,MAAA,GAAS,KAAK,MAAA,GAAS,CAAA,EAAG,YAAY,KAAA,KAAU;AACzE,MAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,MAAA,KAAW,CAAA,EAAG;AAAE,QAAA,OAAO,QAAQ,MAAM,CAAA;AAAA,MAAE;AAC5D,MAAA,MAAM,GAAA,GAAM,KAAA,GAAQ,CAAC,KAAK,IAAI,EAAC;AAC/B,MAAA,IAAI,WAAW,CAAA,EAAK;AAAE,QAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAAG;AACpD,MAAA,IAAI,SAAS,CAAA,EAAG;AAAE,QAAA,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MAAG;AAC7C,MAAA,IAAI,SAAA,EAAW;AAEb,QAAA,MAAM,OAAA,GAAU,IAAI,QAAA,CAAS,SAAA,EAAW,GAAG,CAAA;AAC3C,QAAA,OAAA,CAAQ,YAAA,CAAa,UAAU,OAAO,CAAA;AACtC,QAAA,OAAO,OAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,SAAA,GAAY,CAAC,IAAA,EAAMA,YAAAA,KAAiB,OAAO,IAAI,CAAA,GAAI,QAAQA,YAAW,CAAA;AAE5E,IAAA,IAAM,cAAA,GAAiB,CAAC,KAAA,EAAO,IAAA,EAAM,OAAO,KAAA,KAAU;AACpD,MAAA,MAAM,SAAA,GAAY,WAAW,KAAK,CAAA;AAElC,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,KAAM,IAAA;AACnC,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,CAAC,MAAM,GAAA,GACjC,MAAA,GACA,KAAA,CAAM,KAAA,CAAM,GAAG,CAAC,CAAA,KAAM,IAAA,GACtB,KAAA,GACA,OACA,KAAA,GACA,KAAA;AAGJ,MAAA,SAAA,CAAU,YAAA,CAAa,UAAU,GAAG,CAAA;AACpC,MAAA,SAAA,CAAU,YAAA,CAAa,QAAA,EAAW,IAAA,GAAO,OAAA,GAAU,GAAI,CAAA;AAIvD,MAAA,MAAM,aAAa,KAAA,CAAM,SAAA,CAAU,MAAM,KAAA,GAAQ,CAAA,GAAI,IAAI,CAAC,CAAA;AAC1D,MAAA,MAAM,aAAA,GAAgB,SAAA,CAAU,QAAA,EAAU,UAAA,CAAW,KAAK,CAAA;AAG1D,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,QAAA,EAAU,CAAC,CAAA;AACxC,MAAA,MAAM,aAAa,UAAA,CAAW,IAAA,EAAM,cAAc,OAAA,CAAQ,CAAC,GAAG,CAAC,CAAA;AAC/D,MAAA,MAAM,YAAY,UAAA,CAAW,IAAA,EAAM,WAAW,OAAA,CAAQ,CAAC,GAAG,CAAC,CAAA;AAE3D,MAAA,MAAM,KAAA,GAAQ,UAAW,IAAA,GAAO,CAAA,GAAI,KAAM,UAAA,CAAW,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AACrE,MAAA,IAAI,SAAA;AACJ,MAAA,IAAI,SAAA;AAEJ,MAAA,MAAM,QAAA,GAAY,QAAQ,IAAA,CAAK,IAAA;AAAA,OAE5B,IAAA,CAAK,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,KAAK,MAAA,GAAS,CAAA,CAAA;AACxC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,KAAA,GAAS,YAAA,CAAa,IAAA,EAAM,UAAU,CAAA;AAC1C,QAAA,MAAM,SAAA,GAAa,KAAA,KAAU,kBAAA,IAAsB,KAAA,KAAU,iBAAA;AAC7D,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,SAAS,CAAA;AAIjD,QAAA,SAAA,GAAY,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,MACtD;AACA,MAAA,MAAM,QAAA,GAAY,SAAS,KAAA,CAAM,IAAA,KAC9B,MAAM,IAAA,CAAK,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA,CAAA;AAC1C,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,IAAI,KAAA,GAAS,YAAA,CAAa,KAAA,EAAO,UAAU,CAAA;AAC3C,QAAA,KAAA,GAAQ,UAAA,CAAW,KAAA,EAAO,KAAA,EAAO,KAAK,CAAA;AACtC,QAAA,SAAA,GAAY,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA,MACvD;AAEA,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU;AAC1B,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,SAAA,EAAW,UAAU,CAAC,CAAA;AAAA,MACtD,CAAA,MAAA,IAAW,YAAY,QAAA,EAAU;AAC/B,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,YAAA,EAAc,CAAC,SAAA,EAAW,SAAA,EAAW,SAAS,CAAC,CAAA;AAAA,MACrE,WAAW,QAAA,EAAU;AACnB,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAAA,MACrD,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,SAAA,EAAW,SAAS,CAAC,CAAA;AAAA,MACtD;AACA,MAAA,IAAI,aAAa,KAAA,EAAO;AAAE,QAAA,IAAA,CAAK,MAAM,MAAA,GAAS,KAAA;AAAA,MAAO;AACrD,MAAA,IAAA,CAAK,YAAA,CAAa,UAAU,OAAO,CAAA;AACnC,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAGA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,cAAA;AAAA,QACA,eAAA;AAAA,QACA,cAAA;AAAA,QACA,eAAA;AAAA,QACA,mBAAA;AAAA,QACA,mBAAA;AAAA,QACA,kBAAA;AAAA,QACA,mBAAA;AAAA,QACA,WAAA;AAAA,QACA,qBAAA;AAAA,QACA,mBAAA;AAAA,QACA,oBAAA;AAAA,QACA,kBAAA;AAAA,QACA,cAAA;AAAA,QACA,sBAAA;AAAA,QACA,qBAAA;AAAA,QACA,WAAA;AAAA;AAAA,QACA,sBAAA;AAAA;AAAA,QACA,sBAAA;AAAA;AAAA;AAAA,QAEA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,cAAA;AAAA,QACA,sBAAA;AAAA,QACA,uBAAA;AAAA,QACA,mBAAA;AAAA,QACA,mBAAA;AAAA;AAAA,QAEA,kBAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG,MAAM,OAAA,EAAS;AAC3C,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,UACZ,KAAA,EAAO,QAAQ,CAAC;AAAA,SAClB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAE1B,QAAA,MAAM,IAAA,GAAO,eAAe,KAAA,CAAM,IAAA,EAAM,MAAM,IAAA,EAAM,KAAA,CAAM,OAAO,KAAK,CAAA;AAEtE,QAAA,MAAM,GAAA,GAAM,CAAC,IAAI,CAAA;AACjB,QAAA,GAAA,CAAI,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AAC3B,QAAA,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AACxB,QAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,MACjC;AAAA,KACD,CAAA;AAED,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,oBAAA,EAAsB,CAAC,sBAAA,EAAwB,qBAAqB,CAAA;AAAA,MACpE,mBAAA,EAAqB,CAAC,oBAAA,EAAsB,uBAAuB;AAAA,KACrE;AAIA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,oBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG,MAAM,OAAA,EAAS;AAC3C,QAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,CAAC,CAAA,GACzB;AAAA,UACA,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,KAAK,CAAC;AAAA,SACd,GACE,IAAA;AACJ,QAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,CAAC,CAAA,GAC7B;AAAA,UACA,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,QAAQ,CAAC;AAAA,SACjB,GACE,IAAA;AACJ,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,cAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,UACZ,eAAA;AAAA,UACA,cAAA;AAAA,UACA,KAAA,EAAO,QAAQ,CAAC;AAAA,SAClB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,QAAA,GAAW,cAAA,CAAe,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AAC7C,QAAA,MAAM,QAAA,GAAW,cAAA,CAAe,KAAA,CAAM,IAAI,EAAE,CAAC,CAAA;AAC7C,QAAA,MAAM,WAAW,cAAA,CAAe,QAAA,EAAU,MAAM,IAAA,EAAM,KAAA,CAAM,iBAAiB,KAAK,CAAA;AAClF,QAAA,MAAM,WAAW,cAAA,CAAe,QAAA,EAAU,MAAM,cAAA,EAAgB,KAAA,CAAM,OAAO,KAAK,CAAA;AAClF,QAAA,IAAI,OAAA;AAEJ,QAAA,MAAM,YAAY,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,QAAQ,CAAC,CAAA;AACpD,QAAA,SAAA,CAAU,YAAA,CAAa,WAAW,OAAO,CAAA;AACzC,QAAA,SAAA,CAAU,YAAA,CAAa,UAAU,QAAQ,CAAA;AACzC,QAAA,SAAA,CAAU,YAAA,CAAa,SAAS,QAAQ,CAAA;AAExC,QAAA,IAAI,KAAA,CAAM,SAAS,mBAAA,EAAqB;AACtC,UAAA,MAAM,UAAW,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,QAAQ,CAAC,CAAA;AACnD,UAAA,OAAA,CAAQ,YAAA,CAAa,SAAS,OAAO,CAAA;AACrC,UAAA,OAAA,GAAU,IAAI,QAAA;AAAA,YACZ,SAAA;AAAA,YACA,CAAC,QAAQ,MAAM,CAAA,EAAG,SAAS,SAAA,EAAW,OAAA,CAAQ,MAAM,CAAC;AAAA,WACvD;AAAA,QACF,CAAA,MAAO;AACL,UAAA,SAAA,CAAU,aAAa,OAAA,EAAU,KAAA,CAAM,IAAA,KAAS,oBAAA,GAAuB,UAAU,GAAI,CAAA;AACrF,UAAA,OAAA,GAAU,IAAI,QAAA;AAAA,YACZ,SAAA;AAAA,YACA,CAAC,QAAQ,MAAM,CAAA,EAAG,WAAW,QAAA,EAAU,OAAA,CAAQ,MAAM,CAAC;AAAA,WACxD;AAAA,QACF;AAEA,QAAA,OAAA,CAAQ,YAAA,CAAa,WAAW,SAAS,CAAA;AACzC,QAAA,OAAA,CAAQ,YAAA,CAAa,UAAU,SAAS,CAAA;AACxC,QAAA,OAAA,CAAQ,YAAA,CAAa,SAAS,SAAS,CAAA;AACvC,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACD,CAAA;AAOD,IAAA,IAAM,gBAAgB,EAAC;AAEvB,IAAA,SAAS,iBAAA,CAAkB,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,OAAA,EAAS,aAAA,EAAAF,gBAAc,EAAG;AAEzE,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,IAAA;AAAA,QACA,OAAA,EAAS,MAAM,OAAA,IAAW,CAAA;AAAA,QAC1B,aAAA,EAAe,KAAA;AAAA,QACf,eAAA,EAAiB,CAAA;AAAA,QACjB;AAAA,OACF;AACA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,EAAE,CAAA,EAAG;AACrC,QAAA,aAAA,CAAc,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,IAAA;AAAA,MAC5B;AACA,MAAA,IAAIA,cAAAA,EAAe;AACjB,QAAA,oBAAA,CAAqB,IAAI,CAAA,GAAIA,cAAAA;AAAA,MAC/B;AAAA,IACF;AAMA,IAAA,SAAS,cAAA,CAAe,MAAM,IAAA,EAAM;AAClC,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,IAAA,KAAS,IAAA,EAAM;AAC/B,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,CAAA,sBAAA,EAAyB,IAAI,CAAA,UAAA,CAAA,IAC1B,IAAA,GAAO,gBAAgB,IAAA,CAAK,IAAI,CAAA,CAAA,GAAK,MAAA,CAAO,IAAI,CAAA;AAAA,SACrD;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAMA,IAAA,SAAS,qBAAqB,IAAA,EAAM;AAClC,MAAA,MAAM,SAAA,GAAY,oBAAoB,IAAI,CAAA;AAC1C,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,MAAM,IAAI,KAAA;AAAA,UACR,kDACG,IAAA,GAAO,CAAA,aAAA,EAAgB,KAAK,IAAI,CAAA,CAAA,GAAK,OAAO,IAAI,CAAA;AAAA,SACrD;AAAA,MACF;AACA,MAAA,OAAO,SAAA;AAAA,IACT;AAMA,IAAA,SAAS,oBAAoB,IAAA,EAAM;AACjC,MAAA,IAAI,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,KAAK,IAAA,KAAS,WAAA,IAC/C,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,SAAA,EAAW,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI;AAC/D,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAM,mBAAA,GAAsB;AAAA,MAC1B,GAAA,EAAK,kBAAA;AAAA,MACL,GAAA,EAAK,iBAAA;AAAA,MACL,GAAA,EAAK,iBAAA;AAAA,MACL,CAAA,EAAG,WAAA;AAAA,MACH,CAAA,EAAG,aAAA;AAAA,MACH,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAEA,IAAA,IAAM,UAAU,MAAM;AAEpB,MAAA,OAAO,EAAE,MAAM,SAAA,EAAW,IAAA,EAAM,EAAC,EAAG,IAAA,EAAM,MAAA,EAAQ,WAAA,EAAa,SAAA,EAAU;AAAA,IAC3E,CAAA;AAEA,IAAA,IAAM,cAAA,GAAiB,CAAC,IAAA,KAAS;AAC/B,MAAA,OAAO,IAAA,CAAK,IAAA,KAAS,SAAA,IAAa,IAAA,CAAK,IAAA,KAAS,GAAA;AAAA,IAClD,CAAA;AAEA,IAAA,IAAM,UAAA,GAAa,CAAC,IAAA,EAAM,OAAA,KAAY;AACpC,MAAA,OAAA,CAAQ,KAAK,IAAA,KAAS,SAAA,IAAa,KAAK,IAAA,KAAS,MAAA,KAAW,KAAK,IAAA,KAAS,OAAA;AAAA,IAC5E,CAAA;AAEA,IAAA,SAAS,OAAA,CAAQ,SAAA,EAAW,MAAA,EAAQ,MAAA,EAAQ;AAG1C,MAAA,MAAM,QAAA,GAAW,oBAAoB,SAAS,CAAA;AAC9C,MAAA,QAAQ,QAAA;AAAU,QAChB,KAAK,kBAAA;AAAA,QACL,KAAK,iBAAA;AACH,UAAA,OAAO,MAAA,CAAO,YAAA,CAAa,QAAA,EAAU,CAAC,MAAA,CAAO,CAAC,CAAC,CAAA,EAAG,CAAC,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA;AAAA,QAC/D,KAAK,WAAA;AAAA,QACL,KAAK,aAAA,EAAe;AAClB,UAAA,MAAM,SAAA,GAAY,MAAA,CAAO,YAAA,CAAa,YAAA,EAAc,CAAC,OAAO,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AACnE,UAAA,MAAM,SAAA,GAAY;AAAA,YAChB,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,MAAA,EAAQ;AAAA,WACV;AACA,UAAA,MAAM,UAAA,GAAa,OAAO,YAAA,CAAa,OAAA,EAAS,CAAC,SAAS,CAAA,EAAG,EAAE,CAAA;AAC/D,UAAA,MAAM,UAAA,GAAa,MAAA,CAAO,YAAA,CAAa,aAAA,EAAe,CAAC,OAAO,CAAC,CAAC,CAAA,EAAG,EAAE,CAAA;AACrE,UAAA,MAAM,UAAA,GAAa;AAAA,YACjB,IAAA,EAAM,UAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,CAAC,SAAA,EAAW,UAAA,EAAY,UAAU,CAAA;AAAA,YACxC,UAAA,EAAY;AAAA,WACd;AACA,UAAA,OAAO,OAAO,YAAA,CAAa,cAAA,EAAgB,CAAC,UAAU,CAAA,EAAG,EAAE,CAAA;AAAA,QAC7D;AAAA,QACA,KAAK,iBAAA;AACH,UAAA,OAAO,OAAO,YAAA,CAAa,iBAAA,EAAmB,EAAC,EAAG,EAAE,CAAA;AAAA,QACtD,KAAK,QAAA,EAAU;AACb,UAAA,MAAM,QAAQ,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,QAAA,EAAU,MAAM,MAAA,EAAO;AAC9D,UAAA,OAAO,OAAO,YAAA,CAAa,OAAA,EAAS,CAAC,KAAK,CAAA,EAAG,EAAE,CAAA;AAAA,QACjD;AAAA,QACA;AACE,UAAA,OAAO,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,GAAA,EAAK,MAAM,MAAA,EAAO;AAAA;AACtD,IACF;AAEA,IAAA,SAAS,QAAQ,MAAA,EAAQ;AAEvB,MAAA,MAAM,aAAa,EAAC;AACpB,MAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AACzB,MAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,aAAa,CAAA;AAC9C,MAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AACzB,MAAA,OAAO,IAAA,EAAM;AAEX,QAAA,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAO,MAAM,CAAC,CAAA;AACrD,QAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AACvB,QAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AACzB,QAAA,MAAMlB,KAAAA,GAAO,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AAC5B,QAAA,IAAIA,KAAAA,KAAS,GAAA,IAAOA,KAAAA,KAAS,MAAA,EAAQ;AACnC,UAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,QACjB,CAAA,MAAA,IAAWA,UAAS,OAAA,EAAS;AAC3B,UAAA,IAAI,WAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA,CAAE,WAAW,CAAA,EAAG;AAClD,YAAA,UAAA,CAAW,GAAA,EAAI;AAAA,UACjB;AACA,UAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,UAAA,CAAW,gCAAA,EAAkC,MAAA,CAAO,SAAS,CAAA;AAAA,QACzE;AAAA,MACF;AAEA,MAAA,IAAI,MAAM,EAAC;AACX,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,CAAA;AAGjB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAE1C,QAAA,MAAM,QAAA,GAAW,WAAW,CAAC,CAAA;AAE7B,QAAA,IAAI,OAAO,OAAA,EAAQ;AAEnB,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,UAAA,IAAI,CAAC,cAAA,CAAe,QAAA,CAAS,CAAC,CAAC,CAAA,EAAG;AAEhC,YAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,UAC5B,CAAA,MAAO;AAGL,YAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AAIb,YAAA,CAAA,IAAK,CAAA;AACL,YAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,QAAA,CAAS,CAAC,CAAC,CAAA,CAAE,IAAA;AAGpD,YAAA,MAAM,MAAA,GAAS,IAAI,KAAA,CAAM,CAAC,CAAA;AAC1B,YAAA,MAAA,CAAO,CAAC,IAAI,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAC,EAAE;AACvD,YAAA,MAAA,CAAO,CAAC,IAAI,EAAE,IAAA,EAAM,YAAY,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAC,EAAE;AAGvD,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAA,EAAI;AAAA,iBAAA,IAAW,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAA,EAAI;AAK5E,cAAA,KAAA,IAAS,QAAA,GAAW,CAAA,EAAG,QAAA,GAAW,CAAA,EAAG,QAAA,EAAA,EAAY;AAC/C,gBAAA,IAAI,OAAA,GAAU,IAAA;AACd,gBAAA,KAAA,IAAS,IAAI,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC5C,kBAAA,IAAI,UAAA,CAAW,QAAA,CAAS,CAAC,CAAA,EAAG,SAAS,CAAA,EAAG;AACtC,oBAAA,OAAA,GAAU,KAAA;AACV,oBAAA,CAAA,GAAI,CAAA;AACJ,oBAAA;AAAA,kBACF;AACA,kBAAA,IAAI,cAAA,CAAe,QAAA,CAAS,CAAC,CAAC,CAAA,EAAG;AAC/B,oBAAA,MAAM,IAAI,UAAA;AAAA,sBACR,eAAe,SAAA,GAAY,oCAAA;AAAA,sBAC3B,SAAS,CAAC;AAAA,qBACZ;AAAA,kBACF;AAEA,kBAAA,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,gBACxC;AACA,gBAAA,IAAI,OAAA,EAAS;AAEX,kBAAA,MAAM,IAAI,UAAA;AAAA,oBACR,eAAe,SAAA,GAAY,oCAAA;AAAA,oBAC3B,SAAS,CAAC;AAAA,mBACZ;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,MAAM,IAAI,WAAW,CAAA,kCAAA,CAAoC,CAAA;AAAA,YAC3D;AAGA,YAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,SAAA,EAAW,MAAA,EAAQ,MAAM,CAAA;AAG/C,YAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAId,YAAA,IAAA,GAAO,OAAA,EAAQ;AAAA,UACjB;AAAA,QACF;AACA,QAAA,IAAI,CAAA,GAAI,MAAM,CAAA,EAAG;AAGf,UAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AAAA,QACf,CAAA,MAAO;AAGL,UAAA,GAAA,CAAI,KAAA,EAAM;AAAA,QACZ;AACA,QAAA,GAAA,GAAM,EAAC;AACP,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MACf;AACA,MAAA,IAAA,CAAK,GAAA,EAAI;AAGT,MAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AAEvB,MAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AAEvB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA;AAAA,QACA,IAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAQ,IAAI,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,QAC1C,UAAA,EAAY,CAAC,KAAA,EAAO,IAAI,CAAA;AAAA,QACxB,MAAM,EAAC;AAAA,QACP,eAAA,EAAiB,IAAI,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE;AAAA,OACrD;AAAA,IACF;AASA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAA,EAAc,aAAa,CAAA;AAAA,MACnC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAAA,UACtB,KAAA,EAAO,KAAK,CAAC;AAAA,SACf;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,IAAI,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AACjC,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,KAAK,CAAA;AAAA,QACnC;AAEA,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAC5C,QAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAQ;AACzB,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,gBAAgB,CAAA;AAAA,QACpC;AACA,QAAA,MAAM,MAAM,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,IAAI,CAAC,CAAA;AACtC,QAAA,GAAA,CAAI,MAAM,OAAA,GAAU,GAAA;AACpB,QAAA,MAAM,MAAM,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,GAAG,CAAC,CAAA;AACrC,QAAA,MAAM,SAAS,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,GAAG,CAAC,CAAA;AAC3C,QAAA,MAAM,QAAQ,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,MAAM,CAAC,CAAA;AAE9C,QAAA,KAAA,CAAM,YAAA,CAAa,SAAS,OAAO,CAAA;AACnC,QAAA,KAAA,CAAM,YAAA,CAAa,gBAAgB,OAAO,CAAA;AAC1C,QAAA,KAAA,CAAM,YAAA,CAAa,eAAe,GAAG,CAAA;AACrC,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,eAAA;AAAA,MACN,KAAA,EAAO,CAAC,cAAc,CAAA;AAAA,MACtB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,eAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,QAAA,EAAU,KAAK,CAAC;AAAA,SAClB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,OAAO,IAAI,SAAS,MAAA,EAAQ,CAAC,aAAa,KAAA,CAAM,QAAA,EAAU,KAAK,CAAC,CAAC,CAAA;AAAA,MACnE;AAAA,KACD,CAAA;AAED,IAAA,IAAM,QAAA,GAAW,CAAC,IAAA,KAAS;AACzB,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,UAAA;AAAA,QACR,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,IAAA;AAAA,QACR,YAAA,EAAc;AAAA,OAChB;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,OAAA,GAAU,CAAC,IAAA,EAAM,IAAA,KAAS;AAC9B,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,IAAA;AAAA,QACR,MAAA,EAAQ,MAAA;AAAA,QACR,MAAA,EAAQ,SAAS,IAAI;AAAA,OACvB;AAAA,IACF,CAAA;AAqBA,IAAA,IAAM,qBAAA,GAAwB,CAAC,MAAA,EAAQqB,WAAAA,KAAe;AACpD,MAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,MAAA,IAAA,CAAK,CAAC,EAAE,KAAA,EAAM;AAGd,MAAA,MAAM,cAAA,GAAiB,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,MAAM,EAAE,CAAA;AACrE,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAEpC,QAAA,cAAA,CAAe,CAAA,GAAI,CAAC,CAAA,CAAE,IAAA,CAAK,KAAK,CAAC,CAAA,CAAE,OAAO,CAAA;AAE1C,QAAA,MAAM,cAAc,EAAC;AACrB,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACvC,UAAA,WAAA,CAAY,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,QAC7B;AACA,QAAA,cAAA,CAAe,IAAI,CAAC,CAAA,CAAE,KAAK,OAAA,CAAQ,WAAA,EAAa,UAAU,CAAC,CAAA;AAAA,MAC7D;AAGA,MAAA,MAAM,UAAA,GAAa,IAAI,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,MAAM,EAAE,CAAA;AAC7D,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACvC,QAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAA,CAAK,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,MAC/B;AAEA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACvC,UAAA,UAAA,CAAW,CAAC,CAAA,CAAE,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAM,UAAU,CAAC,CAAA;AAAA,QACzD;AAAA,MACF;AAGA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAK,CAAC,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AACvC,QAAA,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAA,GAAI,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAM,UAAU,CAAA;AAAA,MAClD;AAIA,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,cAAA;AAAA,QACN,MAAM,CAAC,EAAE,MAAM,OAAA,EAAS,KAAA,EAAO,KAAK,CAAA;AAAA,QACpC,OAAA,EAAS,IAAI,KAAA,CAAM,cAAA,CAAe,SAAS,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,QACvD,eAAA,EAAiB,IAAI,KAAA,CAAM,cAAA,CAAe,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,MAAM,EAAE,CAAA;AAAA,QACzE,YAAY,EAAC;AAAA,QACb,WAAA,EAAa,MAAA;AAAA,QACb,YAAA,EAAc,CAAA;AAAA,QACd,QAAQ,IAAI,KAAA,CAAM,eAAe,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,QAChD,WAAA,EAAa,EAAE,QAAA,EAAU,IAAA,EAAM,MAAM,IAAA;AAAK,OAC5C;AAEA,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,IAAA,EAAM,OAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,UAAA;AAAA,QACN,IAAA,EAAM,IAAI,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,CAAE,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,GAAA,EAAK,CAAA;AAAA,QACrE,OAAA,EAAS,IAAI,KAAA,CAAM,UAAA,CAAW,SAAS,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,QACnD,eAAA,EAAiB,IAAI,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,MAAM,EAAE,CAAA;AAAA,QACrE,YAAY,EAAC;AAAA,QACb,WAAA,EAAa,MAAA;AAAA,QACb,YAAA,EAAc,CAAA;AAAA,QACd,QAAQ,IAAI,KAAA,CAAM,WAAW,MAAM,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,QAC5C,WAAA,EAAa;AAAA,OACf;AAEA,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,IAAA,EAAM,SAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,WAAA,EAAa,MAAA;AAAA;AAAA,QACb,IAAA,EAAM,CAAC,MAAM;AAAA;AAAA,OACf;AAEA,MAAA,MAAM,SAAA,GAAY;AAAA,QAChB,IAAA,EAAM,WAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,CAAC,MAAM,CAAA;AAAA,QACb,IAAA,EAAMA,WAAAA,GAAaA,WAAAA,CAAW,CAAC,CAAA,GAAI,GAAA;AAAA,QACnC,KAAA,EAAOA,WAAAA,GAAaA,WAAAA,CAAW,CAAC,CAAA,GAAI,GAAA;AAAA,QACpC,UAAA,EAAY;AAAA,OACd;AAEA,MAAA,MAAM,IAAA,GAAO;AAAA,QACX,IAAA,EAAM,IAAA;AAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,MAAA,EAAQ,IAAA;AAAA,QACR,kBAAA,EAAoB,IAAA;AAAA,QACpB,cAAA,EAAgB,IAAA;AAAA,QAChB,MAAA,EAAQ,KAAA;AAAA,QACR,iBAAA,EAAmB,IAAA;AAAA,QACnB,IAAA,EAAM,CAAC,SAAS;AAAA,OAClB;AAEA,MAAA,MAAM,KAAA,GAAQ;AAAA,QACZ,IAAA,EAAM,QAAA;AAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA;AAAA,QACN,KAAA,EAAO,IAAA;AAAA,QACP,IAAA;AAAA;AAAA,QACA,GAAA,EAAK,UAAA;AAAA;AAAA,QACL,GAAA,EAAK;AAAA,OACP;AAEA,MAAA,OAAO,QAAA,CAAS,CAAC,UAAA,EAAY,KAAK,CAAC,CAAA;AAAA,IACrC,CAAA;AAMA,IAAA,IAAM,cAAA,GAAN,MAAM,eAAA,CAAe;AAAA,MACnB,WAAA,CAAY,KAAA,EAAO,KAAA,EAAO,GAAA,EAAK;AAC7B,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,OAAO,KAAA,CAAM,KAAA,EAAO,MAAA,EAAQ;AAC1B,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,OAAO,SAAS,KAAA,CAAM,GAAA;AAAA,QACxB,CAAA,MAAA,IAAW,CAAC,KAAA,IAAS,CAAC,MAAM,GAAA,IAAO,CAAC,MAAA,CAAO,GAAA,IAAO,KAAA,CAAM,GAAA,CAAI,KAAA,KAAU,MAAA,CAAO,IAAI,KAAA,EAAO;AACtF,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO,IAAI,eAAA,CAAe,KAAA,CAAM,GAAA,CAAI,KAAA,EAAO,MAAM,GAAA,CAAI,KAAA,EAAO,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAAA,QAC5E;AAAA,MACF;AAAA,KACF;AAoBA,IAAA,IAAM,KAAA,GAAN,MAAM,MAAA,CAAM;AAAA,MACV,WAAA,CACEtB,OACA,GAAA,EACA;AACA,QAAA,IAAA,CAAK,IAAA,GAAOA,KAAAA;AACZ,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,KAAA,CACE,UACAA,KAAAA,EACA;AACA,QAAA,OAAO,IAAI,MAAA,CAAMA,KAAAA,EAAM,eAAe,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAC,CAAA;AAAA,MAC7D;AAAA,KACF;AAQA,IAAA,IAAM,UAAA,GAAa;AAAA,MACjB,OAAA,EAAS,CAAA;AAAA,MACT,IAAA,EAAM,CAAA;AAAA,MACN,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAc;AAAA,KAChB;AAOA,IAAA,IAAM,UAAU,EAAC;AAGjB,IAAA,SAAS,WAAA,CAAY,MAAM,IAAA,EAAM;AAC/B,MAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA;AAAA,IAClB;AAOA,IAAA,IAAM,MAAA,GAAS,OAAA;AAKf,IAAA,WAAA,CAAY,YAAA,EAAc,SAAS,OAAA,EAAS;AAI1C,MAAA,MAAM,CAAA,GAAI,QAAQ,QAAA,EAAS;AAC3B,MAAA,IAAI,OAAA,CAAQ,YAAA,CAAa,CAAA,CAAE,IAAI,CAAA,EAAG;AAChC,QAAA,CAAA,CAAE,QAAA,GAAW,IAAA;AACb,QAAA,CAAA,CAAE,YAAA,GAAe,IAAA;AAAA,MACnB;AACA,MAAA,OAAO,EAAE,MAAA,EAAQ,CAAC,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,IACnC,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,eAAA,EAAiB,SAAS,OAAA,EAAS;AAM7C,MAAA,MAAM,CAAA,GAAI,QAAQ,QAAA,EAAS;AAC3B,MAAA,OAAA,CAAQ,WAAW,IAAI,CAAA;AACvB,MAAA,OAAO,EAAE,MAAA,EAAQ,CAAC,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,IACnC,CAAC,CAAA;AAID,IAAA,WAAA,CAAY,eAAA,EAAiB,SAAS,OAAA,EAAS;AAC7C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA;AAClC,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,IACvC,CAAC,CAAA;AAID,IAAA,WAAA,CAAY,gBAAA,EAAkB,SAAS,OAAA,EAAS;AAC9C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA;AAClC,MAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,IACvC,CAAC,CAAA;AAMD,IAAA,WAAA,CAAY,eAAA,EAAiB,SAAS,OAAA,EAAS;AAC7C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA;AAClC,MAAA,OAAA,CAAQ,aAAA,EAAc;AACtB,MAAA,MAAM,SAAA,GAAY,QAAQ,MAAA,EAAO;AACjC,MAAA,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,KAAS,SAAA,CAAU,IAAA,EAAM;AAC9D,QAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACvC;AAAA,IACF,CAAC,CAAA;AAMD,IAAA,WAAA,CAAY,aAAa,oCAAoC,CAAA;AAG7D,IAAA,WAAA,CAAY,cAAA,EAAgB,SAAS,OAAA,EAAS;AAC5C,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA;AAClC,MAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAQ;AAC3B,QAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,MACvC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAM,gBAAgB,CAAA,GAAA,KAAO;AAE3B,MAAA,IAAI,GAAA,GAAM,EAAA;AACV,MAAA,KAAA,IAAS,IAAI,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,IAAI,CAAA,EAAA,EAAK;AACxC,QAAA,GAAA,IAAO,GAAA,CAAI,CAAC,CAAA,CAAE,IAAA;AAAA,MAChB;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAGA,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,CAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG,EAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACL;AAEA,IAAA,IAAM,iBAAiB,CAAA,OAAA,KAAW;AAChC,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,EAAO,CAAE,IAAA;AAChC,MAAA,IAAI,WAAW,KAAA,EAAO;AAAE,QAAA,OAAO,CAAC,MAAM,EAAE,CAAA;AAAA,MAAE;AAC1C,MAAA,OAAO,CAAC,aAAA,CAAc,MAAA,CAAO,OAAO,CAAC,CAAC,GAAG,MAAM,CAAA;AAAA,IACjD,CAAA;AAEA,IAAA,IAAM,iBAAA,GAAoB,CAAC,MAAA,EAAQ,MAAA,EAAQ,IAAA,KAAS;AAClD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,QAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AAC5C,QAAA,MAAA,IAAU,IAAA;AACV,QAAA,MAAA,IAAU,KAAA;AAAA,MACZ;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAWA,IAAA,WAAA,CAAY,QAAA,EAAU,SAAS,OAAA,EAAS;AACtC,MAAA,IAAI,KAAA,GAAQ,QAAQ,QAAA,EAAS;AAC7B,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,MAAA,GAAS,EAAA;AACb,MAAA,IAAI,KAAA,CAAM,SAAS,GAAA,EAAK;AACtB,QAAA,IAAA,GAAO,CAAA;AACP,QAAA,KAAA,GAAQ,QAAQ,QAAA,EAAS;AAAA,MAC3B,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,GAAA,EAAK;AAC7B,QAAA,IAAA,GAAO,EAAA;AACP,QAAA,KAAA,GAAQ,QAAQ,QAAA,EAAS;AAAA,MAC3B,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,GAAA,EAAK;AAC7B,QAAA,KAAA,GAAQ,QAAQ,QAAA,EAAS;AACzB,QAAA,IAAI,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,IAAA,EAAM;AAC1B,UAAA,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAAA,QAClC,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,KAAA,EAAO;AAC/B,UAAA,MAAM,IAAI,WAAW,0BAA0B,CAAA;AAAA,QACjD,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAAA,QAClC;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,EAAA;AAAA,MACT;AACA,MAAA,IAAI,IAAA,EAAM;AAER,QAAA,IAAI,SAAS,KAAA,CAAM,IAAA;AACnB,QAAA,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,MAAA,CAAO,CAAC,CAAC,CAAA;AACvC,QAAA,IAAI,MAAA,IAAU,IAAA,IAAQ,MAAA,IAAU,IAAA,EAAM;AACpC,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,aAAA,EAAgB,IAAI,CAAA,OAAA,EAAU,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA,QACjE;AACA,QAAA,MAAA,GAAS,iBAAA,CAAkB,MAAA,EAAQ,MAAA,EAAQ,IAAI,CAAA;AAC/C,QAAA,IAAI,KAAA;AACJ,QAAA,CAAC,KAAA,EAAO,MAAM,CAAA,GAAI,cAAA,CAAe,OAAO,CAAA;AACxC,QAAA,OAAO,KAAA,IAAS,IAAA,IAAQ,KAAA,GAAQ,IAAA,EAAM;AACpC,UAAA,MAAA,IAAU,IAAA;AACV,UAAA,MAAA,IAAU,KAAA;AACV,UAAA,MAAA,GAAS,iBAAA,CAAkB,MAAA,EAAQ,MAAA,EAAQ,IAAI,CAAA;AAC/C,UAAA,OAAA,CAAQ,QAAA,EAAS;AACjB,UAAA,CAAC,KAAA,EAAO,MAAM,CAAA,GAAI,cAAA,CAAe,OAAO,CAAA;AAAA,QAC1C;AAAA,MACF;AACA,MAAA,OAAO,WAAW,MAAM,CAAA,CAAA,CAAA;AAAA,IAC1B,CAAC,CAAA;AAED,IAAA,SAAS,eAAe,OAAA,EAAS;AAE/B,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,WAAA,CAAY,CAAC,EAAE,CAAC,CAAA;AACvC,MAAA,IAAI,GAAA,GAAM,EAAA;AACV,MAAA,IAAI,cAAc,MAAA,CAAO,MAAA,CAAO,MAAA,GAAS,CAAC,EAAE,GAAA,CAAI,KAAA;AAChD,MAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA,CAAI,KAAA;AAChC,QAAA,IAAI,YAAY,WAAA,EAAa;AAE3B,UAAA,GAAA,IAAO,GAAA;AACP,UAAA,WAAA,GAAc,SAAA;AAAA,QAChB;AACA,QAAA,GAAA,IAAO,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AACjB,QAAA,WAAA,IAAe,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA;AAAA,MAChC;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAIA,IAAA,WAAA,CAAY,UAAU,uBAAuB,CAAA;AAG7C,IAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAG/B,IAAA,WAAA,CAAY,UAAU,EAAE,CAAA;AAKxB,IAAA,WAAA,CAAY,YAAY,GAAG,CAAA;AAC3B,IAAA,WAAA,CAAY,YAAY,GAAG,CAAA;AAO3B,IAAA,WAAA,CAAY,KAAK,gBAAgB,CAAA;AACjC,IAAA,WAAA,CAAY,QAAQ,GAAG,CAAA;AACvB,IAAA,WAAA,CAAY,QAAQ,GAAG,CAAA;AACvB,IAAA,WAAA,CAAY,QAAQ,OAAO,CAAA;AAE3B,IAAA,WAAA,CAAY,UAAU,UAAU,CAAA;AAGhC,IAAA,WAAA,CAAY,eAAe,eAAe,CAAA;AAG1C,IAAA,WAAA,CAAY,cAAc,yBAAyB,CAAA;AASnD,IAAA,WAAA,CAAY,WAAW,+BAA+B,CAAA;AACtD,IAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAG/B,IAAA,WAAA,CAAY,kBAAkB,GAAG,CAAA;AACjC,IAAA,WAAA,CAAY,iBAAiB,KAAK,CAAA;AAOlC,IAAA,WAAA,CAAY,cAAc,uCAAuC,CAAA;AAKjE,IAAA,WAAA,CAAY,SAAS,mCAAmC,CAAA;AACxD,IAAA,WAAA,CAAY,aAAa,+BAA+B,CAAA;AACxD,IAAA,WAAA,CAAY,eAAe,8BAA8B,CAAA;AAGzD,IAAA,IAAM,WAAA,GAAc;AAAA,MAClB,GAAA,EAAK,SAAA;AAAA,MACL,OAAA,EAAS,SAAA;AAAA;AAAA,MAET,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,SAAA;AAAA;AAAA,MAEL,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,YAAA,EAAc,SAAA;AAAA,MACd,YAAA,EAAc,SAAA;AAAA,MACd,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,SAAA;AAAA,MACT,aAAA,EAAe,SAAA;AAAA,MACf,YAAA,EAAc,SAAA;AAAA,MACd,WAAA,EAAa,SAAA;AAAA,MACb,YAAA,EAAc,SAAA;AAAA,MACd,YAAA,EAAc,SAAA;AAAA,MACd,YAAA,EAAc,SAAA;AAAA,MACd,OAAA,EAAS,SAAA;AAAA,MACT,kBAAA,EAAoB,SAAA;AAAA,MACpB,kBAAA,EAAoB,SAAA;AAAA,MACpB,iBAAA,EAAmB,SAAA;AAAA,MACnB,iBAAA,EAAmB,SAAA;AAAA,MACnB,sBAAA,EAAwB,SAAA;AAAA,MACxB,sBAAA,EAAwB,SAAA;AAAA,MACxB,UAAA,EAAY,SAAA;AAAA,MACZ,cAAA,EAAgB,SAAA;AAAA,MAChB,kBAAA,EAAoB,SAAA;AAAA,MACpB,SAAA,EAAW,SAAA;AAAA;AAAA,MAEX,WAAA,EAAa,SAAA;AAAA;AAAA,MAEb,WAAA,EAAa,SAAA;AAAA,MACb,UAAA,EAAY,SAAA;AAAA,MACZ,UAAA,EAAY,SAAA;AAAA,MACZ,eAAA,EAAiB,SAAA;AAAA,MACjB,cAAA,EAAgB,SAAA;AAAA;AAAA,MAEhB,SAAA,EAAW,SAAA;AAAA,MACX,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY,SAAA;AAAA;AAAA,MAEZ,SAAA,EAAW;AAAA,KACb;AAEA,IAAA,WAAA,CAAY,QAAA,EAAU,SAAS,OAAA,EAAS;AAMtC,MAAA,IAAI,OAAA,GAAU,SAAA;AACd,MAAA,MAAMC,KAAAA,GAAO,OAAA,CAAQ,iBAAA,EAAkB,CAAE,IAAA;AACzC,MAAA,IAAIA,SAAQ,WAAA,EAAa;AACvB,QAAA,OAAA,GAAU,YAAYA,KAAI,CAAA;AAAA,MAC5B,WAAWA,KAAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAC,MAAM,OAAA,EAAS;AACvC,QAAA,OAAA,GAAU,SAAA;AAAA,MACZ,CAAA,MAAA,IAAWA,KAAAA,IAAQ,OAAA,CAAQ,IAAA,EAAM;AAC/B,QAAA,IAAI,CAAC,KAAA,EAAO,KAAK,CAAA,CAAE,QAAA,CAAS,QAAQ,IAAA,CAAKA,KAAI,CAAA,CAAE,KAAK,CAAA,EAAG;AACrD,UAAA,OAAA,GAAU,SAAA;AAAA,QACZ;AAAA,MACF;AACA,MAAA,OAAO,OAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,IAAM,cAAA,GAAiB;AAAA;AAAA,MAErB,GAAA,EAAK,IAAA;AAAA,MACL,GAAA,EAAK,IAAA;AAAA,MACL,UAAA,EAAY,IAAA;AAAA,MACZ,KAAA,EAAO,IAAA;AAAA,MACP,UAAA,EAAY,IAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,EAAY,IAAA;AAAA,MACZ,UAAA,EAAY,IAAA;AAAA,MACZ,cAAA,EAAgB,IAAA;AAAA,MAChB,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAW,IAAA;AAAA;AAAA,MAEX,CAAA,EAAG,IAAA;AAAA;AAAA,MAEH,GAAA,EAAK,IAAA;AAAA,MACL,GAAA,EAAK,IAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAEA,IAAA,WAAA,CAAY,SAAA,EAAW,SAAS,OAAA,EAAS;AACvC,MAAA,MAAMA,KAAAA,GAAO,OAAA,CAAQ,MAAA,EAAO,CAAE,IAAA;AAC9B,MAAA,IAAIA,SAAQ,cAAA,EAAgB;AAC1B,QAAA,OAAO,YAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO,SAAA;AAAA,MACT;AAAA,IACF,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,SAAA,EAAW,SAAS,OAAA,EAAS;AACvC,MAAA,MAAMA,KAAAA,GAAO,OAAA,CAAQ,MAAA,EAAO,CAAE,IAAA;AAG9B,MAAA,IAAIA,KAAAA,IAAQ,cAAA,IAAkBA,KAAAA,KAAS,GAAA,EAAK;AAC1C,QAAA,OAAO,YAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO,SAAA;AAAA,MACT;AAAA,IACF,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,SAAA,EAAW,SAAS,OAAA,EAAS;AACvC,MAAA,MAAMA,KAAAA,GAAO,OAAA,CAAQ,MAAA,EAAO,CAAE,IAAA;AAC9B,MAAA,IAAIA,SAAQ,cAAA,EAAgB;AAC1B,QAAA,OAAO,aAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO,UAAA;AAAA,MACT;AAAA,IACF,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAChC,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAChC,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AACnC,IAAA,WAAA,CAAY,cAAc,yBAAyB,CAAA;AAInD,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AAKnC,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAChC,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAChC,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAKhC,IAAA,WAAA,CAAY,aAAa,8CAA8C,CAAA;AAGvE,IAAA,WAAA,CAAY,OAAO,4BAA4B,CAAA;AAE/C,IAAA,WAAA,CAAY,eAAe,KAAK,CAAA;AAIhC,IAAA,WAAA,CAAY,OAAO,cAAc,CAAA;AACjC,IAAA,WAAA,CAAY,OAAO,4BAA4B,CAAA;AAE/C,IAAA,WAAA,CAAY,cAAc,KAAK,CAAA;AAG/B,IAAA,WAAA,CAAY,OAAO,4BAA4B,CAAA;AAE/C,IAAA,WAAA,CAAY,gBAAgB,KAAK,CAAA;AAGjC,IAAA,WAAA,CAAY,OAAO,4BAA4B,CAAA;AAE/C,IAAA,WAAA,CAAY,kBAAkB,KAAK,CAAA;AAGnC,IAAA,WAAA,CAAY,iBAAiB,4BAA4B,CAAA;AAGzD,IAAA,WAAA,CAAY,mBAAmB,2BAA2B,CAAA;AAE1D,IAAA,WAAA,CAAY,aAAa,aAAa,CAAA;AAEtC,IAAA,WAAA,CAAY,YAAY,oBAAoB,CAAA;AAE5C,IAAA,WAAA,CAAY,UAAU,mBAAmB,CAAA;AAEzC,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAE1C,IAAA,WAAA,CAAY,QAAQ,gDAAgD,CAAA;AAGpE,IAAA,WAAA,CAAY,SAAS,mCAAmC,CAAA;AACxD,IAAA,WAAA,CAAY,eAAe,uBAAuB,CAAA;AAClD,IAAA,WAAA,CAAY,eAAA,EAAiB,CAAC,OAAA,KAAY;AACxC,MAAA,IAAI,OAAA,CAAQ,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA,EAAG;AAClC,QAAA,MAAM,IAAI,WAAW,gBAAgB,CAAA;AAAA,MACvC;AACA,MAAA,OAAO,4BAAA;AAAA,IACT,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AACnC,IAAA,WAAA,CAAY,cAAc,mBAAmB,CAAA;AAW7C,IAAA,WAAA,CAAY,UAAU,wBAAwB,CAAA;AAC9C,IAAA,WAAA;AAAA,MACE,OAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,WAAA,CAAY,UAAU,+BAA+B,CAAA;AACrD,IAAA,WAAA;AAAA,MACE,OAAA;AAAA,MACA;AAAA,KAGF;AAQA,IAAA,WAAA,CAAY,aAAa,aAAa,CAAA;AAItC,IAAA,WAAA,CAAY,SAAS,uEAAuE,CAAA;AAE5F,IAAA,WAAA;AAAA,MACE,SAAA;AAAA,MACE;AAAA,KACJ;AAEA,IAAA,WAAA;AAAA,MACE,SAAA;AAAA;AAAA,MAEA;AAAA,KACF;AAMA,IAAA,WAAA,CAAY,YAAY,8BAA8B,CAAA;AACtD,IAAA,WAAA,CAAY,aAAa,mBAAmB,CAAA;AAC5C,IAAA,WAAA,CAAY,cAAc,mCAAmC,CAAA;AAE7D,IAAA,WAAA,CAAY,WAAW,CAAA,sBAAA,CAAwB,CAAA;AAK/C,IAAA,WAAA,CAAY,eAAe,gCAAgC,CAAA;AAG3D,IAAA,WAAA,CAAY,mBAAmB,CAAA,SAAA,CAAW,CAAA;AAE1C,IAAA,WAAA,CAAY,gBAAgB,iDAAiD,CAAA;AAE7E,IAAA,WAAA,CAAY,aAAa,4DAA4D,CAAA;AAErF,IAAA,WAAA,CAAY,aAAa,mCAAmC,CAAA;AAE5D,IAAA,WAAA,CAAY,cAAc,iCAAiC,CAAA;AAE3D,IAAA,WAAA,CAAY,aAAa,mCAAmC,CAAA;AAE5D,IAAA,WAAA,CAAY,iBAAiB,4DAA4D,CAAA;AAEzF,IAAA,WAAA,CAAY,iBAAiB,mCAAmC,CAAA;AAEhE,IAAA,WAAA,CAAY,cAAc,4DAA4D,CAAA;AAEtF,IAAA,WAAA,CAAY,cAAc,4DAA4D,CAAA;AAMtF,IAAA,WAAA,CAAY,WAAW,cAAc,CAAA;AACrC,IAAA,WAAA,CAAY,gBAAgB,YAAY,CAAA;AACxC,IAAA,WAAA,CAAY,iBAAiB,YAAY,CAAA;AACzC,IAAA,WAAA,CAAY,sBAAsB,YAAY,CAAA;AAC9C,IAAA,WAAA,CAAY,iBAAiB,YAAY,CAAA;AACzC,IAAA,WAAA,CAAY,sBAAsB,YAAY,CAAA;AAC9C,IAAA,WAAA,CAAY,gBAAgB,WAAW,CAAA;AACvC,IAAA,WAAA,CAAY,qBAAqB,WAAW,CAAA;AAC5C,IAAA,WAAA,CAAY,gBAAgB,WAAW,CAAA;AACvC,IAAA,WAAA,CAAY,qBAAqB,WAAW,CAAA;AAE5C,IAAA,WAAA,CAAY,sBAAsB,eAAe,CAAA;AAEjD,IAAA,WAAA,CAAY,mBAAmB,YAAY,CAAA;AAG3C,IAAA,WAAA,CAAY,WAAW,0BAA0B,CAAA;AACjD,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAI3D,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,aAAa,oCAAoC,CAAA;AAC7D,IAAA,WAAA,CAAY,eAAe,iDAAiD,CAAA;AAC5E,IAAA,WAAA,CAAY,eAAe,kDAAkD,CAAA;AAC7E,IAAA,WAAA,CAAY,eAAe,wDAAwD,CAAA;AACnF,IAAA,WAAA,CAAY,gBAAgB,uDAAuD,CAAA;AAEnF,IAAA,WAAA,CAAY,eAAe,gDAAgD,CAAA;AAM3E,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,UAAU,8BAA8B,CAAA;AAKpD,IAAA,WAAA,CAAY,gBAAgB,oCAAoC,CAAA;AAMhE,IAAA,WAAA,CAAY,SAAS,4BAA4B,CAAA;AACjD,IAAA,WAAA,CAAY,SAAS,4BAA4B,CAAA;AACjD,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAE/C,IAAA,IAAM,WAAA,GAAc,CAAC,MAAA,EAAQ,KAAA,KAAU;AACrC,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,CAAC,CAAA,KAAM,MAAM,QAAA,GAAW,QAAA;AACzC,MAAA,MAAM,UAAA,GAAa,eAAe,EAAE,CAAA,IAAA,CAAA;AACpC,MAAA,OAAO,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,KAAA,CAAM,KAAK,CAAA,GAAI,UAAA,GAAa,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,EAAE,MAAM,CAAA;AAAA,IAC/F,CAAA;AACA,IAAA,WAAA,CAAY,UAAA,EAAa,SAAS,OAAA,EAAS;AACzC,MAAA,IAAI,MAAA,GAAS,eAAe,OAAO,CAAA;AACnC,MAAA,MAAM,KAAA,GAAQ,eAAA;AACd,MAAA,IAAI,KAAA;AACJ,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,OAAO,IAAA,EAAM;AAC5C,QAAA,MAAA,GAAS,WAAA,CAAY,QAAQ,KAAK,CAAA;AAAA,MACpC;AACA,MAAA,OAAO,oBAAoB,MAAA,GAAS,kBAAA;AAAA,IACtC,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,OAAA,EAAU,SAAS,OAAA,EAAS;AACtC,MAAA,IAAI,MAAA,GAAS,eAAe,OAAO,CAAA;AACnC,MAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,MAAM,CAAA;AACxC,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,MAAA,GAAS,WAAA,CAAY,QAAQ,KAAK,CAAA;AAAA,MACpC;AACA,MAAA,OAAO,kBAAkB,MAAA,GAAS,gBAAA;AAAA,IACpC,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,OAAA,EAAU,SAAS,OAAA,EAAS;AACtC,MAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AACrC,MAAA,OAAO,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAM,SAAS,CAAA,GAAI,MAAA;AAAA,IACpD,CAAC,CAAA;AAID,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AAInC,IAAA,WAAA,CAAY,SAAS,oCAAoC,CAAA;AACzD,IAAA,WAAA,CAAY,mBAAmB,sCAAsC,CAAA;AACrE,IAAA,WAAA,CAAY,cAAc,sCAAsC,CAAA;AAChE,IAAA,WAAA,CAAY,SAAS,oCAAoC,CAAA;AAEzD,IAAA,IAAM,YAAY,CAAA,IAAA,KAAQ;AACxB,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA;AAC7B,MAAA,MAAM,SAAS,aAAA,CAAc,IAAA,CAAK,CAAC,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAC/C,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAClC,MAAA,MAAM,KAAA,GAAQ,KAAA,KAAU,GAAA,GAAM,WAAA,GAAc,aAAa,KAAK,CAAA,CAAA;AAC9D,MAAA,IAAI,WAAA,GAAc,EAAA;AAClB,MAAA,MAAA,CAAO,IAAI,CAAA,CAAA,KAAK;AAAE,QAAA,WAAA,IAAe,YAAA,GAAe,CAAA,CAAE,IAAA,EAAK,GAAK,KAAA;AAAA,MAAM,CAAC,CAAA;AACnE,MAAA,OAAO,CAAC,SAAA,EAAW,KAAA,EAAQ,YAAY,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAAA,IAC5D,CAAA;AACA,IAAA,WAAA,CAAY,iBAAA,EAAmB,SAAS,OAAA,EAAS;AAC/C,MAAA,MAAM,CAAC,WAAW,KAAA,EAAO,WAAW,IAAI,SAAA,CAAU,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAC,CAAA;AACxE,MAAA,OAAO,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA,EAAI,SAAS,KAAK,WAAW,CAAA,CAAA,CAAA;AAAA,IACrD,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,YAAA,EAAc,SAAS,OAAA,EAAS;AAC1C,MAAA,MAAM,CAAC,WAAW,KAAA,EAAO,WAAW,IAAI,SAAA,CAAU,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAC,CAAA;AACxE,MAAA,OAAO,CAAA,OAAA,EAAU,KAAK,CAAA,EAAA,EAAK,WAAW,KAAK,SAAS,CAAA,CAAA;AAAA,IACtD,CAAC,CAAA;AAID,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,YAAY,oBAAoB,CAAA;AAC5C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,eAAe,uBAAuB,CAAA;AAClD,IAAA,WAAA,CAAY,YAAY,oBAAoB,CAAA;AAC5C,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,YAAY,oBAAoB,CAAA;AAC5C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,cAAc,sBAAsB,CAAA;AAChD,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,eAAe,uBAAuB,CAAA;AAClD,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAC9C,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,eAAe,uBAAuB,CAAA;AAClD,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,WAAW,mBAAmB,CAAA;AAC1C,IAAA,WAAA,CAAY,aAAa,qBAAqB,CAAA;AAI9C,IAAA,WAAA,CAAY,YAAY,wBAAwB,CAAA;AAChD,IAAA,WAAA,CAAY,UAAU,wBAAwB,CAAA;AAC9C,IAAA,WAAA,CAAY,WAAW,wBAAwB,CAAA;AAC/C,IAAA,WAAA,CAAY,UAAU,sBAAsB,CAAA;AAC5C,IAAA,WAAA,CAAY,iBAAiB,wBAAwB,CAAA;AACrD,IAAA,WAAA,CAAY,kBAAkB,wBAAwB,CAAA;AACtD,IAAA,WAAA,CAAY,UAAU,mCAAmC,CAAA;AACzD,IAAA,WAAA,CAAY,YAAY,mCAAmC,CAAA;AAC3D,IAAA,WAAA,CAAY,OAAA,EAAS,CAAA;AAAA,6CAAA,CACyB,CAAA;AAC9C,IAAA,WAAA,CAAY,SAAA,EAAW,CAAA;AAAA,6CAAA,CACuB,CAAA;AAK9C,IAAA,WAAA,CAAY,mBAAmB,6BAAwB,CAAA;AA2DvD,IAAA,WAAA,CAAY,MAAA,EAAQ,SAAS,OAAA,EAAS;AACpC,MAAA,OAAO,UAAU,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA,CAAE,CAAC,GAAG,IAAI,CAAA;AAAA,IAClD,CAAC,CAAA;AAED,IAAA,WAAA,CAAY,MAAA,EAAQ,SAAS,OAAA,EAAS;AACpC,MAAA,OAAO,UAAU,OAAA,CAAQ,WAAA,CAAY,CAAC,CAAA,CAAE,CAAC,GAAG,IAAI,CAAA;AAAA,IAClD,CAAC,CAAA;AAID,IAAA,WAAA,CAAY,aAAa,CAAA,yBAAA,CAA2B,CAAA;AACpD,IAAA,WAAA,CAAY,aAAa,CAAA,sFAAA,CAAwF,CAAA;AACjH,IAAA,WAAA,CAAY,gBAAgB,CAAA,kDAAA,CAAoD,CAAA;AAChF,IAAA,WAAA,CAAY,wBAAwB,CAAA,uFAAA,CAAyF,CAAA;AAC7H,IAAA,WAAA,CAAY,8BAA8B,CAAA,4HAAA,CAA8H,CAAA;AACxK,IAAA,WAAA,CAAY,iCAAiC,CAAA,4HAAA,CAA8H,CAAA;AAOzK,IAAA,IAAI,SAAA,GAAY,SAAU,MAAA,EAAQ,YAAA,EAAc;AAE9C,MAAA,IAAI,GAAA,GAAM,EAAA;AACV,MAAA,IAAI,WAAA,GAAc,OAAO,MAAA,IAAU,MAAA,CAAO,OAAO,MAAA,GAAS,CAAC,EAAE,GAAA,CAAI,KAAA;AACjE,MAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC3C,QAAA,IAAG,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA,CAAI,QAAQ,WAAA,EAAa;AAEpC,UAAA,GAAA,IAAO,GAAA;AACP,UAAA,WAAA,GAAc,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA,CAAI,KAAA;AAAA,QAC9B;AACA,QAAA,GAAA,IAAO,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AACjB,QAAA,WAAA,IAAe,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA;AAAA,MAChC;AAEA,MAAA,IAAI,MAAM,MAAA,CAAO,EAAA,CAAG,aAAa,EAAA,CAAG,GAAA,EAAK,YAAY,CAAC,CAAA;AACtD,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAMA,IAAA,IAAI,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOjB,EAAA,EAAI,SAAU,KAAA,EAAO,YAAA,EAAc;AACjC,QAAA,IAAI,CAAC,KAAA,EAAO;AAAE,UAAA,OAAO,EAAC;AAAA,QAAG;AACzB,QAAA,IAAI,iBAAiB,MAAA,EAAW;AAAE,UAAA,YAAA,GAAe,IAAA;AAAA,QAAM;AACvD,QAAA,IAAI,KAAA,GAAQ,GAAA;AAoCZ,QAAA,IAAI,SAAS,EAAC;AACd,QAAA,MAAA,CAAO,kBAAkB,CAAA,GAAI,CAAA;AAE7B,QAAA,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AAChC,QAAA,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,6BAAA,EAA+B,GAAG,CAAA;AACxD,QAAA,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,WAAA,EAAa,KAAK,CAAA;AAMxC,QAAA,IAAI,SAAA;AACJ,QAAA,IAAI,QAAA,GAAW,EAAA;AAEf,QAAA,IAAI,SAAS,EAAC;AACd,QAAA,OAAO,IAAA,EAAM;AACX,UAAA,IAAI,cAAc,KAAA,EAAO;AACvB,YAAA,QAAA,GAAW,EAAA;AACX,YAAA,SAAA,GAAY,KAAA;AAAA,UACd,CAAA,MAAO;AACL,YAAA,QAAA,EAAA;AAAA,UACF;AAIA,UAAA,IAAI,OAAA,GAAU,YAAA,CAAa,aAAA,CAAc,YAAY,CAAA;AACrD,UAAA,IAAI,IAAI,OAAA,CAAQ,WAAA,CAAY,KAAK,CAAA,IAAK,OAAA,CAAQ,YAAY,GAAG,CAAA;AAC7D,UAAA,kBAAA;AACA,YAAA,KAAA,IAAS,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AAC7B,cAAA,IAAI,OAAA,GAAU,aAAa,QAAA,CAAS,MAAA,CAAO,EAAE,CAAC,CAAA,CAAE,SAAS,KAAK,CAAA;AAC9D,cAAA,IAAI,OAAA,EAAS;AAIX,gBAAA,IAAI,IAAA,GAAO,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA;AAChB,gBAAA,KAAA,IAAS,KAAG,CAAA,EAAG,EAAA,GAAG,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAA,EAAA,EAAM;AAC3C,kBAAA,IAAI,CAAA;AAIJ,kBAAA,IAAI,QAAQ,OAAA,CAAQ,IAAA,CAAK,QAAQ,EAAE,CAAA,CAAE,KAAK,CAAA,EAAG;AAC3C,oBAAA,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,CAAE,KAAK,CAAA,CAAE,MAAA,EAAQ,QAAQ,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,EAAE,EAAE,MAAM,CAAA;AAAA,kBAC7F,CAAA,MAAA,IAAW,aAAa,OAAA,CAAQ,IAAA,CAAK,QAAQ,EAAE,CAAA,CAAE,KAAK,CAAA,EAAG;AACvD,oBAAA,CAAA,GAAI,YAAA,CAAa,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,CAAE,KAAK,CAAA,CAAE,MAAA,EAAQ,QAAQ,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,EAAE,EAAE,MAAM,CAAA;AAAA,kBAClG,CAAA,MAAO;AACL,oBAAA,MAAM,CAAC,cAAc,gCAAA,GAAmC,IAAA,CAAK,QAAQ,EAAE,CAAA,CAAE,QAAQ,GAAG,CAAA;AAAA,kBACtF;AAIA,kBAAA,YAAA,CAAa,WAAA,CAAY,QAAQ,CAAC,CAAA;AAAA,gBACpC;AAOA,gBAAA,KAAA,GAAQ,KAAK,SAAA,IAAa,KAAA;AAC1B,gBAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,kBAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,oBAAA,KAAA,GAAQ,OAAA,CAAQ,SAAA;AAAA,kBAClB;AACA,kBAAA,IAAI,CAAC,KAAK,UAAA,EAAY;AACpB,oBAAA,MAAM,kBAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAO,MAAA;AAAA,gBACT;AAAA,cACF;AAAA,YACF;AAIA,UAAA,IAAI,YAAY,CAAA,EAAG;AACjB,YAAA,MAAM,CAAC,cAAc,8BAA8B,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,WAAA,EAAa,SAAU,CAAA,EAAG,CAAA,EAAG;AAC3B,QAAA,IAAI,CAAA,EAAG;AACL,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACpB,YAAA,KAAA,IAAS,EAAA,GAAG,CAAA,EAAG,EAAA,GAAG,CAAA,CAAE,QAAQ,EAAA,EAAA,EAAM;AAChC,cAAA,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,YACd;AAAA,UACF,CAAA,MAAO;AACL,YAAA,CAAA,CAAE,KAAK,CAAC,CAAA;AAAA,UACV;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA,QAKR,QAAA,EAAU;AAAA;AAAA,UAER,OAAA,EAAS,IAAA;AAAA,UACT,MAAA,EAAQ,IAAA;AAAA,UACR,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAS,KAAA;AAAA,UACT,SAAA,EAAW,iBAAA;AAAA,UACX,QAAA,EAAU,MAAA;AAAA,UACV,KAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAK,IAAA;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,IAAA,EAAM,KAAA;AAAA,UACN,SAAA,EAAW,sQAAA;AAAA,UACX,SAAA,EAAW,wNAAA;AAAA,UACX,8BAAA,EAAgC,8BAAA;AAAA,UAChC,gCAAA,EAAkC,kCAAA;AAAA,UAClC,8BAAA,EAAgC,iMAAA;AAAA,UAChC,QAAA,EAAU,SAAA;AAAA,UACV,OAAA,EAAS,qDAAA;AAAA,UACT,oBAAA,EAAsB,8BAAA;AAAA,UACtB,kBAAA,EAAoB,SAAU,KAAA,EAAO;AACnC,YAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,uMAAuM,CAAA;AAC3N,YAAA,IAAI,CAAA,IAAK,CAAA,CAAE,CAAC,CAAA,EAAG;AACb,cAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YACrE;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AAAA,UACA,aAAA,EAAe,SAAU,KAAA,EAAO;AAC9B,YAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,2GAA2G,CAAA;AAC/H,YAAA,IAAI,CAAA,IAAK,CAAA,CAAE,CAAC,CAAA,EAAG;AACb,cAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YACrE;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AAAA,UACA,wBAAA,EAA0B,SAAU,KAAA,EAAO;AACzC,YAAA,IAAI,CAAA,GAAI,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,EAAA,EAAI,wBAAA,EAA0B,KAAK,EAAE,CAAA;AAC5F,YAAA,IAAI,CAAA,IAAO,CAAA,CAAE,SAAA,CAAU,KAAA,CAAM,mBAAmB,CAAA,EAAG;AAAE,cAAA,OAAO,CAAA;AAAA,YAAG;AAC/D,YAAA,IAAI,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,mCAAmC,CAAA;AACvD,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YAC9D;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AAAA,UACA,4BAAA,EAA8B,wBAAA;AAAA,UAC9B,KAAA,EAAO,iBAAA;AAAA,UACP,KAAA,EAAO,iBAAA;AAAA,UACP,IAAA,EAAM,UAAA;AAAA,UACN,GAAA,EAAK,OAAA;AAAA,UACL,GAAA,EAAK,MAAA;AAAA,UACL,IAAA,EAAM,6BAAA;AAAA,UACN,KAAA,EAAO,mBAAA;AAAA,UACP,IAAA,EAAM,WAAA;AAAA,UACN,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACzG,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,GAAA,EAAK,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACzG,IAAA,EAAM,oBAAA;AAAA,UACN,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,GAAA,EAAK,gBAAA,EAAkB,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC9I,QAAA,EAAU,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,gBAAA,EAAkB,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACpH,MAAA,EAAQ,qBAAA;AAAA,UACR,OAAA,EAAS,YAAA;AAAA,UACT,GAAA,EAAM,IAAA;AAAA,UACN,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACzG,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,GAAA,EAAK,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACzG,IAAA,EAAM,wBAAA;AAAA,UACN,UAAA,EAAY,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,GAAA,EAAK,gBAAA,EAAkB,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC9I,QAAA,EAAU,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,gBAAA,EAAkB,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACpH,MAAA,EAAQ,oBAAA;AAAA,UACR,IAAA,EAAM,8BAAA;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,OAAA,EAAS,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,EAAA,EAAI,GAAA,EAAK,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACrG,SAAA,EAAW,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACvG,OAAA,EAAS,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,EAAA,EAAI,GAAA,EAAK,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UACrG,WAAA,EAAa,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,IAAA,EAAM,EAAA,EAAI,IAAI,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC3G,SAAA,EAAW,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACvG,KAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAK,YAAA;AAAA,UACL,GAAA,EAAK,KAAA;AAAA,UACL,IAAA,EAAM,gCAAA;AAAA;AAAA,UACN,IAAA,EAAM,aAAA;AAAA,UACN,mBAAA,EAAqB,sCAAA;AAAA,UACrB,GAAA,EAAK,IAAA;AAAA,UACL,aAAA,EAAe,8BAAA;AAAA,UACf,UAAA,EAAY,iEAAA;AAAA,UACZ,aAAA,EAAe,0CAAA;AAAA,UACf,eAAA,EAAiB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,SAAA,EAAW,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACnH,IAAA,EAAM,wDAAA;AAAA,UACN,KAAA,EAAO,cAAA;AAAA,UACP,SAAA,EAAW,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,GAAA,EAAK,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACvG,kBAAA,EAAoB,sBAAA;AAAA,UACpB,KAAA,EAAO,gBAAA;AAAA;AAAA,UACP,SAAA,EAAW,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,EAAA,EAAI,gBAAA,EAAkB,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,IAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC5I,OAAA,EAAS,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,EAAA,EAAI,gBAAA,EAAkB,KAAK,EAAE,CAAA;AAAA,UAAG,CAAA;AAAA,UAClH,MAAA,EAAQ,2BAAA;AAAA,UACR,KAAA,EAAO,+BAAA;AAAA,UACP,SAAA,EAAW,qDAAA;AAAA;AAAA,UACX,QAAA,EAAU,SAAA;AAAA,UACV,eAAA,EAAiB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACrI,kBAAA,EAAoB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,YAAA,EAAc,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UAC3I,mBAAA,EAAqB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,aAAA,EAAe,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UAC7I,qBAAA,EAAuB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,eAAA,EAAiB,EAAA,EAAI,EAAA,EAAI,IAAA,EAAM,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UAClJ,iBAAA,EAAmB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,UAAA,EAAY,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACtH,wBAAA,EAA0B,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,UAAA,EAAY,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UAC/I,sBAAA,EAAwB,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,iBAAA,CAAkB,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UACpJ,aAAA,EAAe,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,OAAA,EAAS,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,UAAG,CAAA;AAAA,UAC/G,YAAA,EAAc,wCAAA;AAAA,UACd,cAAA,EAAgB,4CAAA;AAAA;AAAA,UAChB,eAAA,EAAiB,SAAA;AAAA,UACjB,MAAA,EAAQ,gEAAA;AAAA,UACR,QAAA,EAAU,SAAU,KAAA,EAAO;AACzB,YAAA,IAAI,KAAA;AAEJ,YAAA,KAAA,GAAQ,KAAA,CAAM,MAAM,0LAA0L,CAAA;AAC9M,YAAA,IAAI,KAAA,EAAO;AACT,cAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YACtE;AACA,YAAA,IAAI,CAAA,GAAI,aAAa,QAAA,CAAS,iBAAA,CAAkB,OAAO,EAAA,EAAI,GAAA,EAAK,KAAK,EAAE,CAAA;AACvE,YAAA,IAAI,CAAA,EAAG;AACL,cAAA,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,oFAAoF,CAAA;AAC3G,cAAA,IAAI,KAAA,EAAO;AACT,gBAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,cACtE;AAAA,YACF;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AAAA,UACA,SAAA,EAAW,SAAU,KAAA,EAAO;AAAE,YAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,KAAK,CAAA;AAAA,UAAG,CAAA;AAAA,UAC5D,eAAA,EAAiB,6BAAA;AAAA,UACjB,UAAA,EAAY,SAAU,KAAA,EAAO;AAC3B,YAAA,IAAI,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA,EAAG;AAAE,cAAA,OAAO,IAAA;AAAA,YAAM;AAChD,YAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,qGAAqG,CAAA;AAC7H,YAAA,IAAI,KAAA,EAAO;AACT,cAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAAG,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YACtE;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AAAA,UACA,iBAAA,EAAmB,0CAAA;AAAA,UACnB,GAAA,EAAK,aAAA;AAAA,UACL,IAAA,EAAM,eAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA,iBAAA,EAAmB,SAAU,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS;AAEvH,UAAA,IAAI,MAAA,GAAS,SAAUsB,MAAAA,EAAO,OAAA,EAAS;AACrC,YAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,cAAA,IAAIA,MAAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,KAAM,CAAA,EAAG;AAAE,gBAAA,OAAO,IAAA;AAAA,cAAM;AACjD,cAAA,OAAO,OAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,IAAIxB,MAAAA,GAAQwB,MAAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAC/B,cAAA,IAAI,CAACxB,MAAAA,EAAO;AAAE,gBAAA,OAAO,IAAA;AAAA,cAAM;AAC3B,cAAA,OAAOA,OAAM,CAAC,CAAA;AAAA,YAChB;AAAA,UACF,CAAA;AAEA,UAAA,IAAI,kBAAA,GAAqB,SAAUwB,MAAAA,EAAO,CAAA,EAAG,QAAA,EAAU;AACrD,YAAA,IAAI,MAAA,GAAS,CAAA;AACb,YAAA,OAAO,CAAA,GAAIA,OAAM,MAAA,EAAQ;AACvB,cAAA,IAAI,CAAA,GAAIA,MAAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACtB,cAAA,IAAIxB,SAAQ,MAAA,CAAOwB,MAAAA,CAAM,MAAA,CAAO,CAAC,GAAG,QAAQ,CAAA;AAC5C,cAAA,IAAIxB,MAAAA,KAAU,IAAA,IAAU,MAAA,KAAW,CAAA,EAAG;AACpC,gBAAA,OAAO,EAAE,aAAA,EAAe,CAAA,EAAG,WAAA,EAAa,CAAA,GAAIA,OAAM,MAAA,EAAO;AAAA,cAC3D,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,gBAAA,MAAA,EAAA;AAAA,cACF,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,gBAAA,IAAI,WAAW,CAAA,EAAG;AAChB,kBAAA,MAAM,CAAC,yBAAyB,yCAAyC,CAAA;AAAA,gBAC3E,CAAA,MAAO;AACL,kBAAA,MAAA,EAAA;AAAA,gBACF;AAAA,cACF;AACA,cAAA,CAAA,EAAA;AAAA,YACF;AACA,YAAA,IAAI,SAAS,CAAA,EAAG;AACd,cAAA,OAAO,IAAA;AAAA,YACT;AACA,YAAA,OAAO,IAAA;AAAA,UACT,CAAA;AACA,UAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,KAAA,EAAO,OAAO,CAAA;AACjC,UAAA,IAAI,UAAU,IAAA,EAAM;AAAE,YAAA,OAAO,IAAA;AAAA,UAAM;AACnC,UAAA,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA;AACjC,UAAA,KAAA,GAAQ,MAAA,CAAO,OAAO,OAAO,CAAA;AAC7B,UAAA,IAAI,UAAU,IAAA,EAAM;AAAE,YAAA,OAAO,IAAA;AAAA,UAAM;AACnC,UAAA,IAAI,IAAI,kBAAA,CAAmB,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,WAAW,OAAO,CAAA;AAClE,UAAA,IAAI,MAAM,IAAA,EAAM;AAAE,YAAA,OAAO,IAAA;AAAA,UAAM;AAC/B,UAAA,IAAI,MAAA,GAAS,MAAM,SAAA,CAAU,CAAA,EAAI,UAAU,CAAA,CAAE,WAAA,GAAc,EAAE,aAAc,CAAA;AAC3E,UAAA,IAAI,EAAE,YAAY,QAAA,CAAA,EAAW;AAC3B,YAAA,OAAO;AAAA,cACL,MAAA,EAAQ,MAAA;AAAA,cACR,SAAA,EAAW,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,WAAW;AAAA,aACvC;AAAA,UACF,CAAA,MAAO;AACL,YAAA,IAAI,MAAA,GAAS,IAAA,CAAK,iBAAA,CAAkB,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,WAAW,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AACvG,YAAA,IAAI,WAAW,IAAA,EAAM;AAAE,cAAA,OAAO,IAAA;AAAA,YAAM;AAEpC,YAAA,IAAI,QAAA,GAAW,CAAC,MAAA,EAAQ,MAAA,CAAO,MAAM,CAAA;AACrC,YAAA,OAAO;AAAA,cACL,MAAA,EAAS,OAAA,GAAU,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA,GAAI,QAAA;AAAA,cACvC,WAAW,MAAA,CAAO;AAAA,aACpB;AAAA,UACF;AAAA,QACF,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,MAAA,EAAQ,SAAU,CAAA,EAAG,KAAA,EAAO;AAC1B,UAAA,IAAI,OAAA,GAAU,YAAA,CAAa,QAAA,CAAS,QAAA,CAAS,CAAC,CAAA;AAC9C,UAAA,IAAI,YAAY,MAAA,EAAW;AACzB,YAAA,MAAM,CAAC,YAAA,EAAc,gCAAA,GAAmC,CAAA,GAAI,GAAG,CAAA;AAAA,UACjE,CAAA,MAAA,IAAW,OAAO,OAAA,KAAY,UAAA,EAAY;AACxC,YAAA,OAAO,YAAA,CAAa,QAAA,CAAS,QAAA,CAAS,CAAC,EAAE,KAAK,CAAA;AAAA,UAChD,CAAA,MAAO;AACL,YAAA,IAAI,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAC/B,YAAA,IAAI,KAAA,EAAO;AACT,cAAA,IAAI,EAAA;AACJ,cAAA,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG;AACZ,gBAAA,EAAA,GAAK,CAAE,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,CAAM,CAAC,CAAE,CAAA;AAAA,cAC5B,CAAA,MAAA,IAAW,KAAA,CAAM,CAAC,CAAA,EAAG;AACnB,gBAAA,EAAA,GAAK,MAAM,CAAC,CAAA;AAAA,cACd,CAAA,MAAO;AACL,gBAAA,EAAA,GAAK,MAAM,CAAC,CAAA;AAAA,cACd;AACA,cAAA,OAAO,EAAE,MAAA,EAAQ,EAAA,EAAI,SAAA,EAAW,KAAA,CAAM,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,EAAE;AAAA,YAChE;AACA,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAAA,OACF;AAAA;AAAA;AAAA;AAAA,MAKA,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAC9D,KAAA,EAAO,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,EAAA,GAAA,CAAM,MAAA,CAAO,EAAA,IAAM,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QACjE,OAAA,EAAS,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,MAAA,CAAO,KAAA,GAAA,CAAS,MAAA,CAAO,KAAA,IAAS,EAAA,IAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QACzE,QAAA,EAAU,SAAU,MAAA,EAAQ,CAAA,EAAG,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,OAAO,CAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QACzD,WAAA,EAAa,SAAU,MAAA,EAAQ,CAAA,EAAG,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QACnE,cAAA,EAAgB,SAAU,MAAA,EAAQ,CAAA,EAAG,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QACnF,MAAA,EAAQ,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,CAAA;AAAA,QAAG,CAAA;AAAA,QACzC,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,EAAA,EAAI,KAAK,EAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QACjE,MAAA,EAAQ,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,MAAM,CAAA;AAAA,QAAG,CAAA;AAAA,QAClE,QAAA,EAAU,SAAU,MAAA,EAAQ,CAAA,EAAG;AAC7B,UAAA,IAAI,GAAA,GAAM,CAAE,GAAI,CAAA;AAChB,UAAA,YAAA,CAAa,YAAY,GAAA,EAAK,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,MAAM,CAAC,CAAA;AACxD,UAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AACZ,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA,QACA,UAAA,EAAY,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,UAAU,CAAA;AAAA,QAAG,CAAA;AAAA,QAC1E,gBAAA,EAAkB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,gBAAgB,CAAA;AAAA,QAAG,CAAA;AAAA,QACtF,MAAA,EAAQ,SAAU,MAAA,EAAQ,CAAA,EAAG,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QAC3E,eAAA,EAAiB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,CAAC,CAAA,EAAE;AAAA,QAAG,CAAA;AAAA,QACjF,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,YAAA,CAAa,GAAG,CAAC,CAAA;AAAA,QAAG,CAAA;AAAA,QACxD,KAAA,EAAO,SAAU,MAAA,EAAQ,CAAA,EAAG;AAE1B,UAAA,IAAI,MAAM,EAAC;AACX,UAAA,IAAI,CAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,EAAG;AACrB,YAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA;AACvB,YAAA,CAAA,GAAI,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,UAChB;AACA,UAAA,IAAI,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,wDAAwD,CAAA;AACxE,UAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,UAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,EAAG,EAAA,EAAI,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA;AAC9C,UAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AACR,YAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,YAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,UAAA,EAAY,IAAI,CAAA,CAAE,CAAC,GAAG,CAAA;AAAA,UAC1C;AACA,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA,QACA,KAAA,EAAO,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,UAAA,OAAO,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAAG;AAAA,OAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAA,EAAmB,SAAU,CAAA,EAAG;AAC9B,QAAA,IAAI,OAAA,EAAS,KAAA;AAEb,QAAA,IAAI,UAAA;AACJ,QAAA,IAAI,CAAA;AAKJ,QAAA,IAAI,cAAc,EAAC;AACnB,QAAA,KAAK,WAAW,CAAA,EAAG;AACjB,UAAA,KAAK,KAAA,IAAS,CAAA,CAAE,OAAO,CAAA,EAAG;AACxB,YAAA,UAAA,GAAa,KAAA,CAAM,MAAM,GAAG,CAAA;AAC5B,YAAA,CAAA,CAAE,OAAO,CAAA,CAAE,KAAK,CAAA,CAAE,UAAA,GAAa,UAAA;AAC/B,YAAA,KAAK,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAClC,cAAA,WAAA,CAAY,UAAA,CAAW,CAAC,CAAC,CAAA,GAAI,EAAC;AAAA,YAChC;AAAA,UACF;AAAA,QACF;AAIA,QAAA,KAAK,WAAW,CAAA,EAAG;AACjB,UAAA,KAAK,KAAA,IAAS,CAAA,CAAE,OAAO,CAAA,EAAG;AACxB,YAAA,UAAA,GAAa,EAAE,OAAO,CAAA,CAAE,KAAK,CAAA,CAAE,cAAc,EAAC;AAC9C,YAAA,KAAK,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAMlC,cAAA,IAAI,CAAA,GAAI,CAAA,CAAE,OAAO,CAAA,CAAE,KAAK,CAAA;AACxB,cAAA,IAAI,EAAE,OAAA,EAAS;AACb,gBAAA,CAAA,CAAE,OAAA,GAAU,EAAC,CAAE,MAAA,CAAO,EAAE,OAAO,CAAA;AAC/B,gBAAA,KAAA,IAAS,IAAE,CAAA,EAAG,CAAA,GAAE,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACrC,kBAAA,IAAI,OAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,MAAM,QAAA,EAAU;AACpC,oBAAA,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,GAAI,EAAE,OAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,EAAE;AAAA,kBACvC;AAAA,gBACF;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,CAAA,CAAE,UAAU,EAAC;AAAA,cACf;AAIA,cAAA,IAAI,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AACpC,cAAA,KAAA,IAAS,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,YAAA,CAAa,QAAQ,CAAA,EAAA,EAAK;AACxC,gBAAA,IAAI,UAAA,CAAW,CAAC,CAAA,KAAM,GAAA,EAAK;AACzB,kBAAA,KAAA,IAAS,KAAK,WAAA,EAAa;AACzB,oBAAA,WAAA,CAAY,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,aAAa,CAAC,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,kBAC3D;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,WAAA,CAAY,UAAA,CAAW,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,OAAA,EAAS,YAAA,CAAa,CAAC,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,gBACvE;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,QAAA,OAAO,WAAA;AAAA,MACT,CAAA;AAAA,MACA,eAAe;AAAC,KAClB;AAKA,IAAA,YAAA,CAAa,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,MAK3B,IAAA,EAAM;AAAA;AAAA,QACJ,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,MAAA,EAAS;AAAA,YACP,SAAS,EAAE,OAAA,EAAS,wBAAwB,OAAA,EAAS,IAAA,EAAM,YAAY,IAAA;AAAK,WAAE;AAAA,UAChF,YAAA,EAAc;AAAA,YACZ,GAAA,EAAK,EAAE,OAAA,EAAS,kBAAA;AAAmB,WAAE;AAAA,UACvC,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA,EAAQ,WAAW,IAAA,EAAK;AAAA,YACxC,IAAA,EAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,WAAW,KAAA;AAAM,WAAE;AAAA,UAC9C,aAAA,EAAe;AAAA,YACb,UAAA,EAAY,EAAE,OAAA,EAAS,CAAE,YAAY,QAAA,EAAU,UAAW,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UAChF,iBAAA,EAAmB;AAAA,YACjB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,MAAM,QAAS,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC3D,SAAA,EAAW;AAAA,YACT,SAAA,EAAW,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UAC/C,IAAA,EAAM;AAAA,YACJ,SAAA,EAAW,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YAC3C,MAAA,EAAQ,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACtD,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACvD,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA,EAAU,WAAW,GAAA,EAAI;AAAA,YACzC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACvC,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAO,WAAW,IAAA,EAAK;AAAA,YACvC,OAAA,EAAS,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YAC1C,IAAA,EAAM,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACpD,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,YAAY,QAAA,EAAU,UAAW,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UACzE,QAAA,EAAU;AAAA,YACR,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UAC3C,aAAA,EAAe;AAAA,YACb,YAAA,EAAc,EAAE,OAAA,EAAS,CAAE,YAAY,QAAA,EAAU,EAAE,KAAA,EAAO,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAS,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC7G,UAAA,EAAY;AAAA,YACV,YAAA,EAAc,EAAE,OAAA,EAAS,CAAE,YAAY,QAAA,EAAU,UAAW,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UAClF,IAAA,EAAM;AAAA,YACJ,KAAA,EAAO,EAAE,OAAA,EAAS,CAAE,kBAAkB,QAAS,CAAA,EAAI,WAAW,IAAA,EAAK;AAAA,YACnE,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACrC,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,GAAA,EAAM,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAC7E,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAO,WAAW,IAAA,EAAK;AAAA,YACvC,IAAA,EAAM,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACvC,OAAA,EAAS,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,GAAA,EAAM,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACrF,IAAA,EAAM;AAAA,YACJ,KAAA,EAAO,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAW,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC1F,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAW,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACpF,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAW,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACxF,GAAA,EAAK;AAAA,YACH,SAAS,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,IAAK,qBAAA,EAAuB,EAAE,OAAO,MAAA,EAAQ,MAAA,EAAQ,KAAM,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAC9H,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,MAAA,EAAQ,MAAA,EAAQ,KAAI,EAAE;AAAA,YAC/C,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAW,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACpF,MAAM,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,EAAE,OAAO,MAAA,EAAQ,MAAA,EAAQ,KAAM,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACpG,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,YACrB,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,eAAe,MAAA,EAAQ,KAAA,EAAM,EAAG,SAAA,EAAW,GAAA,EAAI;AAAA,YACxE,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,eAAe,MAAA,EAAQ,KAAA,EAAM,EAAG,SAAA,EAAW,GAAA,EAAI;AAAA,YACxE,SAAA,EAAW,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,eAAe,MAAA,EAAQ,IAAA,EAAK,EAAG,SAAA,EAAW,GAAA,EAAI;AAAA,YAC7E,QAAA,EAAU,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,GAAA,EAAM,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACtF,SAAA,EAAW;AAAA,YACT,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UAC3C,SAAA,EAAW;AAAA,YACT,uBAAA,EAAyB,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACzD,MAAA,EAAQ,EAAE,OAAA,EAAS,CAAC,UAAU,IAAI,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACpD,WAAA,EAAa,EAAE,OAAA,EAAS,WAAA,EAAa,WAAW,GAAA;AAAI,WAAE;AAAA,UACxD,QAAA,EAAU;AAAA,YACR,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACrC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACxC,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YACnD,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UACzC,SAAA,EAAW;AAAA,YACT,UAAU;AAAC,WAAE;AAAA,UACf,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAK;AAAA,YACvB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA,EAAW;AAAA,YAC3B,KAAA,EAAO,EAAE,OAAA,EAAS,SAAA,EAAU;AAAA,YAC5B,iBAAA,EAAmB,EAAE,OAAA,EAAS,QAAA,EAAU,WAAW,GAAA,EAAI;AAAA,YACvD,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,SAAU,CAAA,EAAG,WAAW,GAAA;AAAG,WAAE;AAAA,UAC3D,kBAAA,EAAoB;AAAA,YAClB,KAAA,EAAO,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,kBAAA,EAAqB,CAAA,EAAE;AAAA,YACnF,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,WAAA,EAAa,MAAA,EAAQ,kBAAA,EAAqB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACrG,SAAA,EAAW;AAAA,YACT,MAAA,EAAQ,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,IAAA,EAAK;AAAA,YAC1C,QAAA,EAAU,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,KAAA;AAAM,WAAE;AAAA,UACjD,KAAA,EAAO;AAAA,YACL,gBAAA,EAAkB,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAQ,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAC5F,KAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,YAAa,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAChH,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,mBAAA,EAAsB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACnG,wBAAA,EAA0B;AAAA,YACxB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,sBAAuB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACzE,KAAA,EAAO;AAAA,YACL,QAAA,EAAU,EAAE,OAAA,EAAS,CAAE,MAAM,QAAA,EAAU,oBAAqB,CAAA,EAAG,SAAA,EAAW,GAAA,EAAI;AAAA,YAC9E,SAAA,EAAW,EAAE,OAAA,EAAS,CAAE,MAAM,QAAA,EAAU,oBAAqB,CAAA,EAAG,SAAA,EAAW,GAAA,EAAI;AAAA,YAC/E,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,MAAM,QAAA,EAAU,oBAAqB,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UACvF,KAAA,EAAO;AAAA,YACL,kBAAA,EAAoB,EAAE,OAAA,EAAS,CAAE,MAAM,oBAAqB,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAC9E,qBAAA,EAAuB,EAAE,OAAA,EAAS,CAAE,UAAU,IAAA,EAAM,oBAAqB,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UAC/F,IAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,OAAQ,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC1D,IAAA,EAAM;AAAA;AAAA,YACJ,KAAK;AAAE,WAAE;AAAA,UACX,mBAAA,EAAqB;AAAA,YACnB,UAAA,EAAY,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YAC5C,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACtC,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,EAAS,WAAW,GAAA,EAAI;AAAA,YAC1C,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACtC,cAAA,EAAgB,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAClE,2BAAA,EAA8B;AAAA,YAC5B,UAAA,EAAY,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YAC5C,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACtC,KAAA,EAAO,EAAE,OAAA,EAAS,OAAA,EAAS,WAAW,GAAA,EAAI;AAAA,YAC1C,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACtC,WAAA,EAAa,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,YAC7B,IAAA,EAAM,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACxD,4BAAA,EAA8B;AAAA,YAC5B,gBAAA,EAAkB,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACpE,2CAAA,EAA6C;AAAA,YAC3C,UAAA,EAAY,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YAC5C,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACtC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACvC,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,IAAA,EAAK;AAAA,YACxC,YAAA,EAAc,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAChE,KAAA,EAAO;AAAA,YACL,+BAAA,EAAiC,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC3G,GAAA,EAAK;AAAA,YACH,kBAAkB,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,EAAE,OAAO,MAAA,EAAQ,MAAA,EAAQ,KAAM,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACpH,IAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,UAAU,MAAA,EAAQ,CAAA,EAAE,EAAI,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UACpE,OAAA,EAAS;AAAA,YACP,qBAAA,EAAuB,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACvD,kBAAA,EAAoB,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACtE,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA;AAAA,YACrB,qBAAA,EAAuB,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA;AAAA,YACvD,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAK;AAAA,YACxB,gBAAA,EAAkB,EAAE,OAAA,EAAS,CAAE,UAAU,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACpE,eAAA,EAAiB;AAAA,YACf,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC/E,eAAA,EAAiB;AAAA,YACf,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,aAAc,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACtF,kBAAA,EAAoB;AAAA,YAClB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,gBAAiB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACzF,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,iBAAkB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC1F,qBAAA,EAAuB;AAAA,YACrB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,mBAAoB,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC5F,6CAAA,EAA+C;AAAA,YAC7C,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,cAAe,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACvF,iBAAA,EAAmB;AAAA,YACjB,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,eAAgB,CAAA;AAAE,WAAE;AAAA,UACxE,aAAA,EAAe;AAAA,YACb,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,IAAK,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC7E,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC/E,mBAAA,EAAqB;AAAA,YACnB,0BAAA,EAA4B,EAAE,OAAA,EAAS,CAAE,MAAM,QAAS,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAC1E,GAAA,EAAK,EAAE,OAAA,EAAS,CAAC,UAAU,IAAA,EAAM,QAAS,CAAA,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UAChE,QAAA,EAAU;AAAA,YACR,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,EAAE,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,CAAA,EAAE,EAAG,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC/E,OAAA,EAAS;AAAA,YACP,KAAK,EAAE,OAAA,EAAS,UAAU,SAAA,EAAW,GAAA,EAAK,SAAS,IAAA,EAAK;AAAA,YACxD,IAAA,EAAM,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,SAAU,CAAA,EAAG,SAAA,EAAW,GAAA,EAAK,OAAA,EAAS,IAAA,EAAK;AAAA,YACxE,iBAAA,EAAmB,EAAE,OAAA,EAAS,CAAE,QAAS,CAAA,EAAG,SAAA,EAAW,GAAA,EAAK,OAAA,EAAS,IAAA,EAAK;AAAA,YAC1E,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI;AAAE,SAC1D,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,WAAA,EAAa,SAAU,MAAA,EAAQ,CAAA,EAAG;AAChC,YAAA,IAAI,GAAA;AACJ,YAAA,IAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,EAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACtC,cAAA,IAAI,MAAM,MAAA,CAAO,CAAA;AACjB,cAAA,MAAA,CAAO,CAAA,GAAI,MAAA;AACX,cAAA,GAAA,GAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAA;AAC3B,cAAA,MAAA,CAAO,CAAA,GAAI,GAAA;AAAA,YACb,CAAA,MAAO;AACL,cAAA,GAAA,GAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAA;AAAA,YAC7B;AACA,YAAA,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AACpC,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,OAAA,EAAS,SAAU,MAAA,EAAQ,CAAA,EAAG;AAC5B,YAAA,MAAA,CAAO,CAAA,GAAI,CAAA;AACX,YAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AAAA,UACjB,CAAA;AAAA,UACA,gBAAA,EAAkB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACrC,YAAA,IAAI,MAAA,CAAO,gBAAgB,CAAA,EAAG;AAE5B,cAAA,IAAI,MAAM,EAAC;AACX,cAAA,YAAA,CAAa,YAAY,GAAA,EAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AACpD,cAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,GAAG,CAAC,CAAA;AAC1E,cAAA,OAAO,GAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,MAAA,CAAO,CAAA,GAAI,CAAA;AAAA,YACb;AAAA,UACF,CAAA;AAAA,UACA,aAAA,EAAe,SAAU,MAAA,EAAQ,CAAA,EAAG,QAAA,EAAU;AAC5C,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,SAAA,EAAW,MAAA,CAAO,KAAK,EAAE,CAAA;AAC/D,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,8BAAA,EAAgC,MAAA,CAAO,KAAK,EAAE,CAAA;AACpF,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,8BAAA,EAAgC,MAAA,CAAO,KAAK,EAAE,CAAA;AACpF,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,gCAAA,EAAkC,MAAA,CAAO,KAAK,EAAE,CAAA;AACtF,YAAA,IAAI,aAAA,GAAiB,MAAI,GAAA,KAAS,EAAA,IAAM,GAAG,SAAA,KAAY,EAAA,IAAQ,MAAQ,EAAA,IAAQ,EAAA,CAAA;AAC/E,YAAA,IAAI,iBAAiB,CAAC,MAAA,CAAO,KAAK,CAAC,MAAA,CAAO,KAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,OAAO,CAAA,IAAK,CAAC,OAAO,CAAA,IAAK,CAAC,MAAM,EAAA,EAAI;AAC/F,cAAA,MAAA,CAAO,CAAA,GAAI,GAAA,GAAM,MAAA,CAAO,CAAA,GAAI,GAAA;AAAA,YAC9B;AAEA,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,IAAI,aAAA,EAAe;AACjB,cAAA,YAAA,CAAa,YAAY,GAAA,EAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AACpD,cAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,QAAA,EAAU,CAAA;AAAA,YAC9B,CAAA,MAAO;AACL,cAAA,EAAA,GAAK,aAAa,QAAA,CAAS,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,KAAK,EAAE,CAAA;AAC1D,cAAA,IAAI,QAAA,IAAY,EAAA,IAAM,EAAA,CAAG,SAAA,KAAY,EAAA,EAAI;AACvC,gBAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,EAAQ,CAAC,CAAC,CAAA;AACnE,gBAAA,YAAA,CAAa,YAAY,GAAA,EAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,cACtD,CAAA,MAAO;AACL,gBAAA,YAAA,CAAa,YAAY,GAAA,EAAK,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAM,CAAC,CAAA;AACpD,gBAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,OAAA,CAAQ,MAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,cAC5E;AAAA,YACF;AACA,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,QAAA,EAAU,SAAU,MAAA,EAAQ;AAC1B,YAAA,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA;AAClB,YAAA,MAAA,CAAO,CAAA,GAAI,MAAA;AAAA,UACb,CAAA;AAAA,UACA,SAAA,EAAW,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,EAAA,GAAK,IAAA;AAAA,UAAM,CAAA;AAAA,UACjD,UAAA,EAAY,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,EAAA,GAAK,KAAA;AAAA,UAAO,CAAA;AAAA,UACnD,qBAAA,EAAuB,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,gBAAgB,CAAA,GAAI,IAAA;AAAA,UAAM,CAAA;AAAA,UAC5E,sBAAA,EAAwB,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,gBAAgB,CAAA,GAAI,KAAA;AAAA,UAAO,CAAA;AAAA,UAC9E,oBAAA,EAAsB,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,kBAAkB,CAAA,EAAA;AAAA,UAAK,CAAA;AAAA,UACxE,oBAAA,EAAsB,SAAU,MAAA,EAAQ;AAAE,YAAA,MAAA,CAAO,kBAAkB,CAAA,EAAA;AAAA,UAAK,CAAA;AAAA,UACxE,sBAAA,EAAwB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAC3C,YAAA,OAAO,EAAE,OAAO,sBAAA,EAAwB,EAAA,EAAI,aAAa,EAAA,CAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,UACtE,CAAA;AAAA,UACA,OAAA,EAAS,SAAU,MAAA,EAAQ,CAAA,EAAG;AAC5B,YAAA,IAAI,CAAA,GAAI,CAAA,CAAE,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAC5B,YAAA,IAAI,YAAa,CAAA,KAAM,CAAA;AACvB,YAAA,IAAI,SAAA,IAAe,MAAA,CAAO,kBAAkB,CAAA,KAAM,CAAA,EAAG;AACnD,cAAA,OAAO,EAAE,KAAA,EAAO,qBAAA,EAAuB,EAAA,EAAI,CAAA,EAAE;AAAA,YAC/C,CAAA,MAAO;AACL,cAAA,OAAO,EAAE,KAAA,EAAO,qBAAA,EAAuB,EAAA,EAAI,CAAA,EAAE;AAAA,YAC/C;AAAA,UACF,CAAA;AAAA,UACA,QAAA,EAAU,SAAU,MAAA,EAAQ,CAAA,EAAG,aAAA,EAAe;AAM5C,YAAA,IAAI,GAAA;AACJ,YAAA,IAAI,CAAC,OAAO,CAAA,EAAG;AACb,cAAA,GAAA,GAAM,EAAC;AACP,cAAA,IAAI,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,aAAA,EAAe,CAElG,MAAO;AACL,gBAAA,IAAI,OAAO,EAAA,EAAI;AACb,kBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,YAAA,EAAc,CAAA;AAAA,gBAClC;AACA,gBAAA,IAAI,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,KAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,OAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,kBAAgB,CAAA,EAAG;AACtF,kBAAA,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA;AAClB,kBAAA,MAAA,CAAO,CAAA,GAAI,MAAA;AAAA,gBACb,CAAA,MAAA,IAAW,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,IAAK,CAAC,MAAA,CAAO,CAAA,KAAM,MAAA,CAAO,CAAA,IAAK,OAAO,CAAA,CAAA,EAAI;AACxE,kBAAA,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA;AAClB,kBAAA,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA;AAClB,kBAAA,MAAA,CAAO,IAAI,MAAA,CAAO,CAAA;AAClB,kBAAA,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,GAAI,MAAA;AAAA,gBACnC,CAAA,MAAO;AACL,kBAAA,IAAI,MAAA,CAAO,CAAA,IAAK,MAAA,CAAO,KAAA,KAAQ,IAAA,IAAQ,YAAA,CAAa,QAAA,CAAS,MAAA,CAAO,cAAA,EAAgB,MAAA,CAAO,CAAA,IAAK,EAAE,CAAA,EAAG;AACnG,oBAAA,MAAA,CAAO,KAAA,GAAQ,WAAA;AAAA,kBACjB,CAAA,MAAA,IAAW,OAAO,CAAA,IAAK,MAAA,CAAO,UAAQ,IAAA,IAAQ,CAAC,OAAO,CAAA,EAAG;AACvD,oBAAA,MAAA,CAAO,KAAA,GAAQ,MAAA;AAAA,kBACjB;AAAA,gBACF;AACA,gBAAA,GAAA,CAAI,IAAA,CAAK;AAAA,kBACP,KAAA,EAAO,UAAA;AAAA,kBACP,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,kBAChC,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,kBACjC,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,kBACjC,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,GAAG,CAAA;AAAA,kBAChC,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,kBACjC,CAAA,EAAG,aAAa,EAAA,CAAG,MAAA,CAAO,GAAI,MAAA,CAAO,KAAA,KAAU,WAAA,GAAc,WAAA,GAAc,IAAK,CAAA;AAAA,kBAChF,OAAO,MAAA,CAAO;AAAA,iBACf,CAAA;AAAA,cACH;AAAA,YACF,CAAA,MAAO;AAEL,cAAA,IAAI,EAAA;AACJ,cAAA,IAAI,MAAA,CAAO,QAAQ,GAAA,EAAK;AACtB,gBAAA,EAAA,GAAK,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,EAAA,EAAI,UAAU,CAAA;AAAA,cAC5C,CAAA,MAAA,IAAW,MAAA,CAAO,GAAA,KAAQ,GAAA,EAAK;AAC7B,gBAAA,EAAA,GAAK,CAAE,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAI,MAAA,CAAO,EAAA,IAAM,IAAK,CAAA;AAAA,cAChD,CAAA,MAAO;AACL,gBAAA,EAAA,GAAK,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,EAAE,CAAA;AAAA,cAChC;AAEA,cAAA,IAAI,EAAA;AACJ,cAAA,IAAI,MAAA,CAAO,QAAQ,GAAA,EAAK;AACtB,gBAAA,EAAA,GAAK,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,EAAA,EAAI,UAAU,CAAA;AAAA,cAC5C,CAAA,MAAA,IAAW,MAAA,CAAO,GAAA,KAAQ,GAAA,EAAK;AAC7B,gBAAA,EAAA,GAAK,CAAE,EAAE,KAAA,EAAO,MAAA,EAAQ,IAAI,MAAA,CAAO,EAAA,IAAM,IAAI,CAAA;AAAA,cAC/C,CAAA,MAAO;AACL,gBAAA,EAAA,GAAK,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,EAAE,CAAA;AAAA,cAChC;AACA,cAAA,GAAA,GAAM;AAAA,gBACJ,KAAA,EAAO,OAAA;AAAA,gBACP,GAAG,MAAA,CAAO,CAAA;AAAA,gBACV,EAAA;AAAA,gBACA;AAAA,eACF;AAAA,YACF;AACA,YAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AACpB,cAAA,IAAI,CAAA,KAAM,kBAAA,IAAwB,CAAA,KAAM,gBAAA,EAAkB;AACxD,gBAAA,OAAO,OAAO,CAAC,CAAA;AAAA,cACjB;AAAA,YACF;AACA,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,kBAAA,EAAoB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACvC,YAAA,IAAI,GAAA,GAAM,CAAE,GAAI,CAAA;AAChB,YAAA,YAAA,CAAa,YAAY,GAAA,EAAK,YAAA,CAAa,EAAA,CAAG,CAAA,EAAG,WAAW,CAAC,CAAA;AAC7D,YAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AACZ,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,aAAA,EAAe,SAAU,MAAA,EAAQ,CAAA,EAAG;AAClC,YAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,YAAA,CAAa,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,IAAI,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE;AAAA,UAClF,CAAA;AAAA,UACA,gBAAA,EAAkB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACrC,YAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,YAAA,CAAa,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,IAAI,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE;AAAA,UAClF,CAAA;AAAA,UACA,iBAAA,EAAmB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACtC,YAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,EAAA,EAAI,YAAA,CAAa,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,IAAI,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE;AAAA,UACnF,CAAA;AAAA,UACA,mBAAA,EAAqB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACxC,YAAA,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,EAAA,EAAI,YAAA,CAAa,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG,IAAI,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE;AAAA,UACrF,CAAA;AAAA,UACA,cAAA,EAAgB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACnC,YAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,CAAA,CAAE,CAAC,CAAA,EAAG,MAAA,EAAQ,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAC,CAAA,EAAE;AAAA,UACvE,CAAA;AAAA,UACA,IAAA,EAAM,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,CAAA,GAAI,CAAA;AAAA,UAAG,CAAA;AAAA,UAC3C,MAAA,EAAQ,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,GAAA,GAAM,CAAA;AAAA,UAAG,CAAA;AAAA,UAC/C,KAAA,EAAO,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,EAAA,GAAK,CAAA;AAAA,UAAG,CAAA;AAAA,UAC7C,MAAA,EAAQ,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,GAAA,GAAM,CAAA;AAAA,UAAG,CAAA;AAAA,UAC/C,KAAA,EAAO,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,EAAA,GAAK,CAAA;AAAA,UAAG,CAAA;AAAA,UAC7C,UAAA,EAAY,SAAU,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI;AAAE,YAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAQ,MAAM,CAAA,EAAG;AAAA,UAAG;AAAA;AACzF,OACF;AAAA,MACA,GAAA,EAAK;AAAA,QACH,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAM,WAAE;AAAA,UAC1B,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,SAAA,EAAW,GAAA,EAAK,SAAS,IAAA;AAAK,WAAE;AAAA,UACzC,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,gBAAA,EAAkB,WAAW,GAAA;AAAI,WAAE;AAAA,UACrD,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,gBAAe;AAAE,WAAE;AAAA,UAChE,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,SAAS;AAAC,OACZ;AAAA,MACA,GAAA,EAAK;AAAA,QACH,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAM,WAAE;AAAA,UAC1B,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,SAAA,EAAW,GAAA,EAAK,SAAS,IAAA;AAAK,WAAE;AAAA,UACzC,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,SAAQ;AAAE,WAAE;AAAA,UACzD,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC3B,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,SAAS;AAAC,OACZ;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA;AAAQ,WAAE;AAAA,UAC5B,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,SAAA,EAAW;AAAA,YACT,KAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,IAAK,CAAA;AAAE,WAAE;AAAA,UACvC,uBAAA,EAAyB;AAAA,YACvB,KAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,MAAO,CAAA;AAAE,WAAE;AAAA,UACzC,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA;AAAQ;AAAE,SAC7B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,QAAA,EAAU,SAAU,MAAA,EAAQ;AAC1B,YAAA,IAAI,OAAO,KAAA,EAAO;AAEhB,cAAA,IAAI,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,EAAA,EAAI,OAAO,KAAA,EAAM;AAC5C,cAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,gBAAA,OAAO,OAAO,CAAC,CAAA;AAAA,cAAG;AAC1C,cAAA,OAAO,GAAA;AAAA,YACT;AAAA,UACF;AAAA;AACF,OACF;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,wBAAA,EAA0B;AAAA,YACxB,GAAA,EAAK,EAAE,OAAA,EAAS,sBAAA;AAAuB,WAAE;AAAA,UAC3C,IAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,IAAA;AAAK,WAAE;AAAA,UAC1C,eAAA,EAAiB;AAAA,YACf,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UACzC,UAAA,EAAY;AAAA,YACV,GAAA,EAAK,EAAE,SAAA,EAAW,GAAA,EAAK,SAAS,IAAA;AAAK,WAAE;AAAA,UACzC,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAM,WAAE;AAAA,UAC1B,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,IAAA;AAAK,WAAE;AAAA,UAC1C,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC3B,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAO,WAAE;AAAA,UAC3B,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,WAAA,EAAa,MAAA,EAAQ,uBAAsB;AAAE,WAAE;AAAA,UAC1E,6CAAA,EAA+C;AAAA,YAC7C,GAAA,EAAK,EAAE,OAAA,EAAS,cAAA;AAAe,WAAE;AAAA,UACnC,iBAAA,EAAmB;AAAA,YACjB,GAAA,EAAK,EAAE,OAAA,EAAS,eAAA;AAAgB,WAAE;AAAA,UACpC,aAAA,EAAe;AAAA,YACb,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,uBAAA,EAAyB;AAAA,YACvB,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC3B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,sBAAA,EAAwB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAC3C,YAAA,OAAO,EAAE,OAAO,gCAAA,EAAkC,EAAA,EAAI,aAAa,EAAA,CAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,UAChF,CAAA;AAAA,UACA,cAAA,EAAgB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACnC,YAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,EAAE,CAAC,CAAA,EAAG,MAAA,EAAQ,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAA,EAAG,IAAI,CAAA,EAAE;AAAA,UAC7E;AAAA;AACF,OACF;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,IAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,IAAA;AAAK,WAAE;AAAA,UAC1C,UAAA,EAAY;AAAA,YACV,GAAA,EAAK,EAAE,SAAA,EAAW,GAAA,EAAK,SAAS,IAAA;AAAK,WAAE;AAAA,UACzC,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,IAAA;AAAK,WAAE;AAAA,UAC1C,oBAAA,EAAsB;AAAA,YACpB,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAM,WAAE;AAAA,UAC1B,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,gBAAe;AAAE,WAAE;AAAA,UAChE,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,QAAO;AAAE,WAAE;AAAA,UACxD,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,GAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,OAAA,EAAS,EAAE,OAAO,QAAA,EAAU,MAAA,EAAQ,SAAQ;AAAE,WAAE;AAAA,UACzD,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,SAAA,EAAW;AAAA,YACT,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC3B,6CAAA,EAA+C;AAAA,YAC7C,GAAA,EAAK,EAAE,OAAA,EAAS,cAAA;AAAe,WAAE;AAAA,UACnC,iBAAA,EAAmB;AAAA,YACjB,GAAA,EAAK,EAAE,OAAA,EAAS,eAAA;AAAgB,WAAE;AAAA,UACpC,aAAA,EAAe;AAAA,YACb,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,uBAAA,EAAyB;AAAA,YACvB,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC3B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,cAAA,EAAgB,SAAU,MAAA,EAAQ,CAAA,EAAG;AACnC,YAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,EAAE,CAAC,CAAA,EAAG,MAAA,EAAQ,YAAA,CAAa,EAAA,CAAG,CAAA,CAAE,CAAC,CAAA,EAAG,IAAI,CAAA,EAAE;AAAA,UAC7E;AAAA;AACF,OACF;AAAA,MACA,WAAA,EAAa;AAAA,QACX,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,eAAA,EAAiB;AAAA,YACf,GAAA,EAAK,EAAE,OAAA,EAAS,eAAA;AAAgB,WAAE;AAAA,UACpC,mBAAA,EAAqB;AAAA,YACnB,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,eAAA,EAAiB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,OAAO,EAAE,KAAA,EAAO,eAAA,EAAiB,EAAA,EAAI,KAAK,EAAA,EAAG;AAAA,UAAG;AAAA;AAC1F,OACF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,aAAA,EAAe;AAAA,YACb,KAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,IAAK,CAAA;AAAE,WAAE;AAAA,UACvC,6BAAA,EAA+B;AAAA,YAC7B,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK;AAAE,SAC1B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,QAAA,EAAU,SAAU,MAAA,EAAQ;AAC1B,YAAA,IAAI,OAAO,CAAA,EAAG;AAEZ,cAAA,IAAI,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,EAAA,EAAI,OAAO,CAAA,EAAE;AAC5C,cAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,gBAAA,OAAO,OAAO,CAAC,CAAA;AAAA,cAAG;AAC1C,cAAA,OAAO,GAAA;AAAA,YACT;AAAA,UACF;AAAA;AACF,OACF;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,aAAA,EAAe;AAAA,YACb,KAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,IAAK,CAAA;AAAE,WAAE;AAAA,UACvC,6BAAA,EAA+B;AAAA,YAC7B,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK,WAAE;AAAA,UACzB,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,gBAAA;AAAiB,WAAE;AAAA,UACrC,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA;AAAK;AAAE,SAC1B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,gBAAA,EAAkB,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,CAAA,GAAA,CAAK,MAAA,CAAO,CAAA,IAAK,EAAA,IAAM,MAAI,CAAA,GAAE,GAAA;AAAA,UAAK,CAAA;AAAA,UAClF,QAAA,EAAU,SAAU,MAAA,EAAQ;AAC1B,YAAA,IAAI,OAAO,CAAA,EAAG;AAEZ,cAAA,IAAI,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,EAAA,EAAI,OAAO,CAAA,EAAE;AAC5C,cAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,gBAAA,OAAO,OAAO,CAAC,CAAA;AAAA,cAAG;AAC1C,cAAA,OAAO,GAAA;AAAA,YACT;AAAA,UACF;AAAA;AACF,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,KAAK;AAAC,WAAE;AAAA,UACV,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA;AAAQ,WAAE;AAAA,UAC5B,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA;AAAO;AAAE,SAC5B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,SAAS,WAAY;AAAE,YAAA,OAAO,EAAE,OAAO,cAAA,EAAe;AAAA,UAAG;AAAA;AAC3D,OACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAA,EAAM;AAAA,QACJ,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,QAAA,EAAU;AAAA,YACR,KAAK,EAAE,OAAA,EAAS,CAAE,QAAA,EAAU,OAAQ,CAAA;AAAE,WAAE;AAAA,UAC1C,SAAA,EAAW;AAAA,YACT,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA;AAAO,WAAE;AAAA,UAC7B,aAAA,EAAe;AAAA,YACb,GAAA,EAAK,EAAE,OAAA,EAAS,SAAA,EAAW,WAAW,GAAA;AAAI,WAAE;AAAA,UAC9C,kBAAA,EAAoB;AAAA,YAClB,GAAA,EAAK,EAAE,OAAA,EAAS,SAAA,EAAW,WAAW,GAAA;AAAI,WAAE;AAAA,UAC9C,OAAA,EAAS;AAAA,YACP,OAAO;AAAC,WAAE;AAAA,UACZ,aAAA,EAAe;AAAA,YACb,KAAA,EAAO,EAAE,OAAA,EAAS,EAAE,KAAA,EAAO,YAAY,MAAA,EAAQ,MAAA,EAAO,EAAG,SAAA,EAAW,GAAA;AAAI,WAAE;AAAA,UAC5E,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,WAAW,GAAA;AAAI,WAAE;AAAA,UAC7C,IAAA,EAAM;AAAA,YACJ,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UACzC,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI,WAAE;AAAA,UACzC,YAAA,EAAc;AAAA,YACZ,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA,EAAI;AAAA,YACvC,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,SAAS,IAAK,CAAA,EAAG,WAAW,GAAA,EAAI;AAAA,YAClD,KAAA,EAAO,EAAE,OAAA,EAAS,IAAA,EAAM,WAAW,GAAA;AAAI;AAAE,SAC5C,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,SAAA,EAAW,SAAU,MAAA,EAAQ,CAAA,EAAG;AAE9B,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,IAAI,EAAE,CAAC,CAAA,KAAM,QAAU,CAAA,CAAE,CAAC,MAAM,KAAA,EAAO;AACrC,cAAA,GAAA,CAAI,KAAK,OAAO,CAAA;AAAA,YAClB,CAAA,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,EAAG;AACf,cAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,YACf;AACA,YAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AACR,cAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,EAAA,CAAG,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC7D,cAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AACR,gBAAA,IAAI,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,MAAM,CAAA,EAAG;AACtB,kBAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,EAAA,CAAG,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAA;AAAA,gBAC/D,CAAA,MAAO;AACL,kBAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,gBACf;AAAA,cACF;AACA,cAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,IAAK,EAAE,CAAC,CAAA;AAClB,cAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AACR,gBAAA,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,EAAE,IAAA,EAAK;AACjB,gBAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,IAAS,CAAA,CAAE,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA,KAAM,GAAA,EAAK;AAC/C,kBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,CAAA;AAAA,gBAC5B,CAAA,MAAO;AACL,kBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA;AAAA,gBAC7B;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,CAAA,CAAE,CAAC,CAAA,EAAG;AACR,cAAA,GAAA,CAAI,IAAA,CAAK,MAAA,GAAO,CAAA,CAAE,CAAC,IAAE,GAAG,CAAA;AAAA,YAC1B;AACA,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,SAAA,EAAW,SAAU,MAAA,EAAQ,CAAA,EAAG;AAE9B,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,IAAI,EAAE,CAAC,CAAA,KAAM,QAAU,CAAA,CAAE,CAAC,MAAM,KAAA,EAAO;AACrC,cAAA,GAAA,CAAI,KAAK,OAAO,CAAA;AAAA,YAClB,CAAA,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,EAAG;AACf,cAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,YACf;AACA,YAAA,YAAA,CAAa,WAAA,CAAY,KAAK,YAAA,CAAa,EAAA,CAAG,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC7D,YAAA,GAAA,CAAI,IAAA,CAAK,IAAA,GAAK,CAAA,CAAE,CAAC,IAAE,GAAG,CAAA;AACtB,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,UAAA,EAAY,SAAU,MAAA,EAAQ,CAAA,EAAG,EAAA,EAAI;AAAE,YAAA,OAAO,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAQ,MAAM,CAAA,EAAG;AAAA,UAAG,CAAA;AAAA,UACvF,SAAS,WAAY;AAAE,YAAA,OAAO,EAAE,OAAO,YAAA,EAAa;AAAA,UAAG,CAAA;AAAA,UACvD,QAAA,EAAU,SAAU,MAAA,EAAQ;AAE1B,YAAA,IAAI,GAAA;AACJ,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,SAAA,EAAW,MAAA,CAAO,KAAK,EAAE,CAAA;AAC/D,YAAA,IAAI,EAAA,IAAQ,EAAA,CAAG,SAAA,KAAc,EAAA,EAAI;AAAE,cAAA,MAAA,CAAO,IAAI,EAAA,CAAG,MAAA;AAAA,YAAQ;AACzD,YAAA,IAAI,KAAK,YAAA,CAAa,QAAA,CAAS,OAAO,SAAA,EAAW,MAAA,CAAO,KAAK,EAAE,CAAA;AAC/D,YAAA,IAAI,EAAA,IAAQ,EAAA,CAAG,SAAA,KAAc,EAAA,EAAI;AAAE,cAAA,MAAA,CAAO,IAAI,EAAA,CAAG,MAAA;AAAA,YAAQ;AACzD,YAAA,IAAI,OAAO,CAAA,EAAG;AACZ,cAAA,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,wBAAwB,cAAc,CAAA;AAClE,cAAA,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,wBAAwB,cAAc,CAAA;AAAA,YACpE;AACA,YAAA,IAAI,OAAO,CAAA,EAAG;AACZ,cAAA,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,wBAAwB,cAAc,CAAA;AAClE,cAAA,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAA,CAAE,OAAA,CAAQ,wBAAwB,cAAc,CAAA;AAClE,cAAA,IAAI,EAAA,GAAK;AAAA,gBACP,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,gBACjC,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,GAAG,IAAI;AAAA,eACnC;AACA,cAAA,IAAI,MAAA,CAAO,MAAM,IAAA,EAAM;AACrB,gBAAA,GAAA,GAAM,EAAE,OAAO,SAAA,EAAW,EAAA,EAAI,GAAG,CAAA,EAAG,EAAA,EAAI,GAAG,CAAA,EAAE;AAAA,cAC/C,CAAA,MAAO;AACL,gBAAA,GAAA,GAAM,EAAA,CAAG,CAAA;AACT,gBAAA,IAAI,GAAG,CAAA,CAAE,MAAA,GAAS,KAAO,EAAA,CAAG,CAAA,CAAE,SAAS,CAAA,EAAG;AACxC,kBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,gBAC3B,CAAA,MAAO;AACL,kBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,GAAA,EAAK,CAAA;AAAA,gBACzB;AACA,gBAAA,YAAA,CAAa,WAAA,CAAY,GAAA,EAAK,EAAA,CAAG,CAAC,CAAA;AAAA,cACpC;AAAA,YACF,CAAA,MAAO;AACL,cAAA,GAAA,GAAM,YAAA,CAAa,EAAA,CAAG,MAAA,CAAO,CAAA,EAAG,MAAM,CAAA;AAAA,YACxC;AACA,YAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,cAAA,OAAO,OAAO,CAAC,CAAA;AAAA,YAAG;AAC1C,YAAA,OAAO,GAAA;AAAA,UACT;AAAA;AACF,OACF;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,QAAA;AAAS,WAAE;AAAA,UAC7B,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UACzD,KAAA,EAAO;AAAA,YACL,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA;AAAM,WAAE;AAAA,UAC1B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,UAAU,OAAQ,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC1D,gBAAA,EAAkB;AAAA,YAChB,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA;AAAQ,WAAE;AAAA,UAC5B,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,GAAA,EAAI;AAAA,YACtC,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA,EAAS,WAAW,GAAA;AAAI,WAAE;AAAA,UAC5C,YAAA,EAAc;AAAA,YACZ,GAAA,EAAK,EAAE,OAAA,EAAS,KAAA,EAAO,WAAW,GAAA;AAAI;AAAE,SAC3C,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,QAAQ,WAAY;AAAE,YAAA,OAAO,EAAE,OAAO,YAAA,EAAa;AAAA,UAAG,CAAA;AAAA,UACtD,OAAA,EAAS,SAAU,MAAA,EAAQ,CAAA,EAAG;AAAE,YAAA,MAAA,CAAO,EAAA,IAAM,OAAK,CAAA,GAAE,GAAA;AAAA,UAAK,CAAA;AAAA,UACzD,SAAS,WAAY;AAAE,YAAA,OAAO,EAAE,OAAO,YAAA,EAAa;AAAA,UAAG,CAAA;AAAA,UACvD,QAAA,EAAU,SAAU,MAAA,EAAQ;AAE1B,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,IAAI,OAAO,EAAA,EAAI;AACb,cAAA,IAAI,MAAM,YAAA,CAAa,QAAA,CAAS,OAAO,SAAA,EAAW,MAAA,CAAO,MAAM,EAAE,CAAA;AACjE,cAAA,IAAI,GAAA,IAAS,GAAA,CAAI,SAAA,KAAc,EAAA,EAAI;AACjC,gBAAA,GAAA,GAAM,YAAA,CAAa,EAAA,CAAG,GAAA,CAAI,MAAA,EAAQ,IAAI,CAAA;AAAA,cACxC,CAAA,MAAO;AACL,gBAAA,GAAA,GAAM,EAAE,KAAA,EAAO,IAAA,EAAM,EAAA,EAAI,OAAO,EAAA,EAAG;AAAA,cACrC;AAAA,YACF;AACA,YAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,cAAA,OAAO,OAAO,CAAC,CAAA;AAAA,YAAG;AAC1C,YAAA,OAAO,GAAA;AAAA,UACT;AAAA;AACF,OACF;AAAA,MACA,QAAA,EAAU;AAAA,QACR,WAAA,EAAa,aAAa,iBAAA,CAAkB;AAAA,UAC1C,OAAA,EAAS;AAAA,YACP,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA,EAAW;AAAA,YAC3B,GAAA,EAAK,EAAE,OAAA,EAAS,UAAA;AAAW,WAAE;AAAA,UAC/B,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,YAAY,OAAQ,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC5D,GAAA,EAAK;AAAA,YACH,GAAA,EAAK,EAAE,OAAA,EAAS,CAAE,YAAY,MAAO,CAAA,EAAG,WAAW,GAAA;AAAI,WAAE;AAAA,UAC3D,MAAA,EAAQ;AAAA,YACN,GAAA,EAAK,EAAE,OAAA,EAAS,OAAA;AAAQ;AAAE,SAC7B,CAAA;AAAA,QACD,OAAA,EAAS;AAAA,UACP,SAAS,WAAY;AAAE,YAAA,OAAO,EAAE,OAAO,cAAA,EAAe;AAAA,UAAG,CAAA;AAAA,UACzD,UAAA,EAAY,SAAU,MAAA,EAAQ;AAE5B,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC/B,YAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AAC3B,cAAA,IAAI,CAAA,GAAI,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA;AAC9B,cAAA,IAAI,MAAM,CAAA,EAAG;AAAE,gBAAA,CAAA,GAAI,CAAA;AAAA,cAAG;AACtB,cAAA,KAAA,IAAS,CAAA,GAAE,OAAO,KAAA,CAAM,MAAA,GAAO,GAAG,CAAA,GAAE,CAAA,EAAG,KAAG,CAAA,EAAG;AAC3C,gBAAA,GAAA,CAAI,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA;AAClC,gBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,gBAAA,EAAkB,CAAA;AAAA,cACtC;AACA,cAAA,GAAA,CAAI,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA;AAClC,cAAA,GAAA,CAAI,OAAA,EAAQ;AAAA,YACd,CAAA,MAAO;AACL,cAAA,GAAA,CAAI,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,YACvB;AACA,YAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,cAAA,OAAO,OAAO,CAAC,CAAA;AAAA,YAAG;AAC1C,YAAA,OAAO,GAAA;AAAA,UACT,CAAA;AAAA,UACA,UAAA,EAAY,SAAU,MAAA,EAAQ;AAE5B,YAAA,IAAI,MAAM,EAAC;AACX,YAAA,MAAA,CAAO,KAAA,GAAQ,OAAO,KAAA,IAAS,EAAA;AAC/B,YAAA,IAAI,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AAC3B,cAAA,IAAI,CAAA,GAAI,MAAA,CAAO,KAAA,CAAM,MAAA,GAAS,CAAA;AAC9B,cAAA,KAAA,IAAS,CAAA,GAAE,CAAA,EAAG,CAAA,GAAE,CAAA,EAAG,KAAG,CAAA,EAAG;AACvB,gBAAA,GAAA,CAAI,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA;AAClC,gBAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,gBAAA,EAAkB,CAAA;AAAA,cACtC;AACA,cAAA,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,YACjC,CAAA,MAAO;AACL,cAAA,GAAA,CAAI,IAAA,CAAK,OAAO,KAAK,CAAA;AAAA,YACvB;AACA,YAAA,KAAA,IAAS,KAAK,MAAA,EAAQ;AAAE,cAAA,OAAO,OAAO,CAAC,CAAA;AAAA,YAAG;AAC1C,YAAA,OAAO,GAAA;AAAA,UACT;AAAA;AACF;AACF;AAAA,KAEF;AAMA,IAAA,IAAI,MAAA,GAAS;AAAA,MACX,EAAA,EAAI,SAAU,KAAA,EAAO,OAAA,EAAS;AAC5B,QAAA,IAAI,CAAC,KAAA,EAAO;AAAE,UAAA,OAAO,EAAA;AAAA,QAAI;AACzB,QAAA,IAAI,GAAA,GAAM,EAAA;AACV,QAAA,IAAI,GAAA,GAAM,KAAA;AACV,QAAA,KAAA,IAAS,CAAA,GAAE,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,IAAI,MAAA,GAAS,MAAM,CAAC,CAAA;AACpB,UAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,YAAA,GAAA,IAAO,MAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,GAAA,IAAO,MAAA,CAAO,KAAK,MAAM,CAAA;AACzB,YAAA,IAAI,MAAA,CAAO,UAAU,kBAAA,EAAoB;AAAE,cAAA,GAAA,GAAM,IAAA;AAAA,YAAM;AAAA,UACzD;AAAA,QACF;AACA,QAAA,IAAI,CAAC,OAAA,IAAW,CAAC,GAAA,IAAO,GAAA,EAAK;AAC3B,UAAA,GAAA,GAAM,MAAM,GAAA,GAAM,GAAA;AAAA,QACpB;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,QAAA,EAAU,SAAU,KAAA,EAAO;AACzB,QAAA,IAAI,CAAC,KAAA,EAAO;AAAE,UAAA,OAAO,KAAA;AAAA,QAAO;AAC5B,QAAA,OAAO,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,IAAI,CAAA;AAAA,MAC9B,CAAA;AAAA,MACA,IAAA,EAAM,SAAU,GAAA,EAAK;AAEnB,QAAA,IAAI,GAAA;AACJ,QAAA,QAAQ,IAAI,KAAA;AAAO,UACjB,KAAK,UAAA;AACH,YAAA,GAAA,GAAM,EAAA;AACN,YAAA,IAAI,EAAA,GAAK;AAAA,cACP,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,cACxB,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,cACxB,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,cACxB,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,cACxB,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,cACxB,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,CAAC;AAAA,aAC1B;AAIA,YAAA,IAAI,GAAG,CAAA,EAAG;AACR,cAAA,IAAI,EAAA,CAAG,CAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,EAAG;AAAE,gBAAA,EAAA,CAAG,CAAA,GAAI,GAAA,GAAI,EAAA,CAAG,CAAA,GAAE,GAAA;AAAA,cAAK;AACjD,cAAA,GAAA,IAAO,GAAG,CAAA,GAAI,KAAA;AAAA,YAChB;AAIA,YAAA,IAAI,EAAA,CAAG,CAAA,IAAK,EAAA,CAAG,CAAA,EAAG;AAChB,cAAA,GAAA,IAAO,iBAAA;AACP,cAAA,GAAA,IAAO,mBAAiB,EAAA,CAAG,CAAA,IAAG,MAAI,iBAAA,IAAmB,EAAA,CAAG,KAAG,EAAA,CAAA,GAAI,IAAA;AAC/D,cAAA,GAAA,IAAO,iBAAA;AAIP,cAAA,GAAA,IAAO,4BAAA,IAA8B,EAAA,CAAG,CAAA,IAAG,EAAA,CAAA,GAAI,IAAA;AAE/C,cAAA,GAAA,IAAO,4BAAA,IAA8B,EAAA,CAAG,CAAA,IAAG,EAAA,CAAA,GAAI,IAAA;AAAA,YACjD;AAIA,YAAA,IAAI,GAAG,CAAA,EAAG;AACR,cAAA,IAAI,EAAA,CAAG,CAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,EAAG;AAAE,gBAAA,EAAA,CAAG,CAAA,GAAI,GAAA,GAAI,EAAA,CAAG,CAAA,GAAE,GAAA;AAAA,cAAK;AACjD,cAAA,GAAA,IAAO,EAAA,CAAG,CAAA;AAAA,YACZ;AAIA,YAAA,IAAI,GAAA,CAAI,UAAU,IAAA,EAAM;AACtB,cAAA,IAAI,EAAA,CAAG,CAAA,IAAK,EAAA,CAAG,CAAA,EAAG;AAChB,gBAAA,GAAA,IAAO,iBAAA;AAAA,cACT;AACA,cAAA,IAAI,GAAG,CAAA,EAAG;AACR,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AACA,cAAA,IAAI,GAAG,CAAA,EAAG;AAIR,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AAAA,YACF,CAAA,MAAA,IAAW,GAAA,CAAI,KAAA,KAAU,WAAA,EAAa;AACpC,cAAA,IAAI,GAAG,CAAA,EAAG;AACR,gBAAA,GAAA,IAAO,iBAAA;AACP,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AACA,cAAA,IAAI,GAAG,CAAA,EAAG;AAIR,gBAAA,GAAA,IAAO,MAAA;AAIP,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AAAA,YACF,CAAA,MAAO;AACL,cAAA,IAAI,GAAG,CAAA,EAAG;AAGR,gBAAA,GAAA,IAAO,MAAA;AAIP,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AACA,cAAA,IAAI,GAAG,CAAA,EAAG;AAGR,gBAAA,GAAA,IAAO,MAAA;AACP,gBAAA,GAAA,IAAO,IAAA,GAAK,GAAG,CAAA,GAAE,GAAA;AAAA,cACnB;AAAA,YACF;AACA,YAAA;AAAA,UACF,KAAK,IAAA;AACH,YAAA,GAAA,GAAM,WAAA,GAAY,IAAI,EAAA,GAAG,GAAA;AACzB,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,GAAA,CAAI,EAAA,CAAG,KAAA,CAAM,OAAO,CAAA,EAAG;AACzB,cAAA,GAAA,CAAI,EAAA,GAAK,IAAI,EAAA,CAAG,OAAA,CAAQ,KAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AAC1D,cAAA,GAAA,GAAM,WAAA,GAAY,IAAI,EAAA,GAAG,GAAA;AAAA,YAC3B,CAAA,MAAO;AACL,cAAA,GAAA,GAAM,SAAA,GAAU,IAAI,EAAA,GAAG,GAAA;AAAA,YACzB;AACA,YAAA;AAAA,UACF,KAAK,eAAA;AACH,YAAA,GAAA,GAAM,WAAA,GAAY,IAAI,EAAA,GAAG,GAAA;AACzB,YAAA;AAAA,UACF,KAAK,sBAAA;AACH,YAAA,GAAA,GAAM,aAAA,GAAc,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAC1C,YAAA;AAAA,UACF,KAAK,gCAAA;AACH,YAAA,GAAA,GAAM,aAAA,GAAc,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAC1C,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAC/B,YAAA,IAAI,CAAC,GAAA,EAAK;AACR,cAAA,MAAM,CAAC,iBAAA,EAAmB,mCAAA,GAAsC,GAAA,CAAI,QAAQ,GAAG,CAAA;AAAA,YACjF;AACA,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,IAAI,IAAI,SAAA,GAAY,GAAA,CAAI,EAAA,GAAK,IAAA,GAAO,IAAI,EAAA,GAAK,GAAA;AAC7C,YAAA,GAAA,GAAM,6BAA2B,CAAA,GAAE,IAAA,GAAK,IAAE,IAAA,GAAK,CAAA,GAAE,OAAK,CAAA,GAAE,GAAA;AACxD,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,IAAI,CAAA,GAAI,SAAA,GAAY,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA;AAC/E,YAAA,GAAA,GAAM,6BAA2B,CAAA,GAAE,IAAA,GAAK,IAAE,IAAA,GAAK,CAAA,GAAE,OAAK,CAAA,GAAE,GAAA;AACxD,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,GAAA,GAAM,IAAI,EAAA,GAAK,GAAA;AACf,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,GAAA,GAAM,SAAA,GAAY,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA;AAC7E,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,GAAA,GAAM,YAAA,GAAe,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA;AAChF,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,GAAA,GAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA,GAAO,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA;AACjF,YAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAA,GAAA,GAAO,eAAA,GAAkB,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,KAAA,GAAQ,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,GAAI,GAAA;AACrF,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,GAAA,GAAM,WAAA,GAAc,IAAI,MAAA,GAAS,IAAA,GAAO,OAAO,QAAA,CAAS,GAAA,CAAI,MAAM,CAAA,GAAI,IAAA;AACtE,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,GAAA,GAAM,UAAA,GAAa,IAAI,KAAA,GAAQ,GAAA;AAC/B,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,IAAI,EAAA,GAAK;AAAA,cACP,EAAA,EAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,cAC1B,EAAA,EAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,EAAE;AAAA,aAC5B;AACA,YAAA,IAAI,KAAA,GAAQ,MAAA,CAAO,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA;AAClC,YAAA,IAAI,GAAG,EAAA,EAAI;AAAE,cAAA,KAAA,IAAS,SAAA,GAAY,GAAG,EAAA,GAAK,IAAA;AAAA,YAAM;AAChD,YAAA,IAAI,GAAG,EAAA,EAAI;AACT,cAAA,KAAA,IAAS,QAAA,GAAW,GAAG,EAAA,GAAK,GAAA;AAAA,YAC9B,CAAA,MAAO;AACL,cAAA,KAAA,IAAS,IAAA;AAAA,YACX;AACA,YAAA,GAAA,GAAM,KAAA;AACN,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,GAAA,GAAM,MAAA,CAAO,YAAA,CAAa,GAAA,CAAI,KAAK,CAAA;AACnC,YAAA;AAAA,UACF,KAAK,kBAAA;AACH,YAAA,GAAA,GAAM,IAAI,EAAA,GAAG,GAAA;AACb,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,GAAA,GAAM,GAAA;AACN,YAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAA,GAAA,GAAM,GAAA;AACN,YAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAA,GAAA,GAAM,GAAA;AACN,YAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAA,GAAA,GAAM,aAAA;AACN,YAAA;AAAA,UACF,KAAK,gBAAA;AACH,YAAA,GAAA,GAAM,aAAA;AACN,YAAA;AAAA,UACF,KAAK,cAAA;AACH,YAAA,GAAA,GAAM,KAAA;AACN,YAAA;AAAA,UACA,KAAK,qBAAA;AACL,YAAA,GAAA,GAAM,GAAA,GAAI,IAAI,EAAA,GAAG,cAAA;AACjB,YAAA;AAAA,UACF,KAAK,qBAAA;AACH,YAAA,GAAA,GAAM,GAAA,GAAI,IAAI,EAAA,GAAG,cAAA;AACjB,YAAA;AAAA,UACF,KAAK,qBAAA;AACH,YAAA,GAAA,GAAM,GAAA,GAAI,IAAI,EAAA,GAAG,cAAA;AACjB,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,GAAA,GAAM,WAAA;AACN,YAAA;AAAA,UACF,KAAK,mBAAA;AACH,YAAA,GAAA,GAAM,gBAAA;AACN,YAAA;AAAA,UACF,KAAK,cAAA;AACH,YAAA,GAAA,GAAM,4CAAA;AACN,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,GAAA,GAAM,WAAA;AACN,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,GAAA,GAAM,UAAA;AACN,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,GAAA,GAAM,SAAA;AACN,YAAA;AAAA,UACF,KAAK,YAAA;AACH,YAAA,GAAA,GAAM,+BAAA;AACN,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,GAAA,GAAM,UAAA;AACN,YAAA;AAAA,UACF,KAAK,OAAA;AACH,YAAA,GAAA,GAAM,SAAA;AACN,YAAA;AAAA,UACF,KAAK,GAAA;AACH,YAAA,GAAA,GAAM,SAAA;AACN,YAAA;AAAA,UACF,KAAK,GAAA;AACH,YAAA,GAAA,GAAM,WAAA;AACN,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,GAAA,GAAM,UAAA;AACN,YAAA;AAAA,UACF,KAAK,GAAA;AACH,YAAA,GAAA,GAAM,GAAA;AACN,YAAA;AAAA,UACF,KAAK,KAAA;AACH,YAAA,GAAA,GAAM,SAAA;AACN,YAAA;AAAA,UACF;AAEE,YAAA,MAAM,CAAC,cAAc,8BAA8B,CAAA;AAAA;AAGvD,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,SAAA,EAAW,SAAU,CAAA,EAAG;AACtB,QAAA,QAAQ,CAAA;AAAG,UACT,KAAK,IAAA;AAAM,YAAA,OAAO,UAAA;AAAA,UAClB,KAAK,QAAA;AAAU,YAAA,OAAO,UAAA;AAAA,UACtB,KAAK,QAAA;AAAU,YAAA,OAAO,UAAA;AAAA,UACtB,KAAK,IAAA;AAAM,YAAA,OAAO,cAAA;AAAA,UAClB,KAAK,KAAA;AAAO,YAAA,OAAO,cAAA;AAAA,UACnB,KAAK,MAAA;AAAQ,YAAA,OAAO,mBAAA;AAAA,UACpB,KAAK,KAAA;AAAO,YAAA,OAAO,mBAAA;AAAA,UACnB,KAAK,QAAA;AAAU,YAAA,OAAO,mBAAA;AAAA,UACtB,KAAK,MAAA;AAAQ,YAAA,OAAO,oBAAA;AAAA,UACpB,KAAK,MAAA;AAAQ,YAAA,OAAO,mBAAA;AAAA,UACpB;AAEE,YAAA,MAAM,CAAC,cAAc,8BAA8B,CAAA;AAAA;AACvD,MACF,CAAA;AAAA,MACA,QAAA,EAAU,SAAU,CAAA,EAAG;AACrB,QAAA,QAAQ,CAAA;AAAG,UACT,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,WAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,WAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,gBAAA;AAAA,UACjB,KAAK,IAAA;AAAM,YAAA,OAAO,wBAAA;AAAA,UAClB,KAAK,IAAA;AAAM,YAAA,OAAO,8BAAA;AAAA,UAClB,KAAK,KAAA;AAAO,YAAA,OAAO,8BAAA;AAAA,UACnB,KAAK,KAAA;AAAO,YAAA,OAAO,iCAAA;AAAA,UACnB,KAAK,KAAA;AAAO,YAAA,OAAO,4BAAA;AAAA,UACnB,KAAK,MAAA;AAAQ,YAAA,OAAO,oCAAA;AAAA,UACpB,KAAK,IAAA;AAAM,YAAA,OAAO,gBAAA;AAAA,UAClB,KAAK,IAAA;AAAM,YAAA,OAAO,eAAA;AAAA,UAClB,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,KAAA;AAAA,UACjB;AAEE,YAAA,MAAM,CAAC,cAAc,8BAA8B,CAAA;AAAA;AACvD,MACF,CAAA;AAAA,MACA,YAAA,EAAc,SAAU,CAAA,EAAG;AACzB,QAAA,QAAQ,CAAA;AAAG,UACT,KAAK,GAAA;AAAK,YAAA,OAAO,SAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,SAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,SAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,SAAA;AAAA,UACjB,KAAK,GAAA;AAAK,YAAA,OAAO,SAAA;AAAA,UACjB,KAAK,IAAA;AAAM,YAAA,OAAO,YAAA;AAAA,UAClB,KAAK,IAAA;AAAM,YAAA,OAAO,YAAA;AAAA,UAClB,KAAK,MAAA;AAAQ,YAAA,OAAO,YAAA;AAAA,UACpB,KAAK,UAAA;AAAY,YAAA,OAAO,gBAAA;AAAA,UACxB,KAAK,YAAA;AAAc,YAAA,OAAO,gBAAA;AAAA,UAC1B,KAAK,GAAA;AAAK,YAAA,OAAO,iBAAA;AAAA,UACjB,KAAK,KAAA;AAAO,YAAA,OAAO,iBAAA;AAAA,UACnB,KAAK,GAAA;AAAK,YAAA,OAAO,eAAA;AAAA,UACjB,KAAK,KAAA;AAAO,YAAA,OAAO,eAAA;AAAA,UACnB;AAEE,YAAA,MAAM,CAAC,cAAc,8BAA8B,CAAA;AAAA;AACvD,MACF;AAAA,KACF;AAsBF,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,UAAU,UAAU,CAAA;AAChC,IAAA,WAAA,CAAY,UAAU,UAAU,CAAA;AAChC,IAAA,WAAA,CAAY,UAAU,WAAW,CAAA;AACjC,IAAA,WAAA,CAAY,UAAU,WAAW,CAAA;AACjC,IAAA,WAAA,CAAY,UAAU,WAAW,CAAA;AACjC,IAAA,WAAA,CAAY,OAAO,aAAa,CAAA;AAChC,IAAA,WAAA,CAAY,OAAO,aAAa,CAAA;AAChC,IAAA,WAAA,CAAY,OAAO,aAAa,CAAA;AAChC,IAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAC/B,IAAA,WAAA,CAAY,aAAa,SAAS,CAAA;AAClC,IAAA,WAAA,CAAY,UAAU,UAAU,CAAA;AAChC,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AACnC,IAAA,WAAA,CAAY,WAAW,aAAa,CAAA;AACpC,IAAA,WAAA,CAAY,aAAa,aAAa,CAAA;AACtC,IAAA,WAAA,CAAY,YAAY,WAAW,CAAA;AACnC,IAAA,WAAA,CAAY,cAAc,eAAe,CAAA;AACzC,IAAA,WAAA,CAAY,WAAW,YAAY,CAAA;AACnC,IAAA,WAAA,CAAY,WAAW,UAAU,CAAA;AACjC,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,UAAU,kBAAkB,CAAA;AACxC,IAAA,WAAA,CAAY,YAAY,aAAa,CAAA;AACrC,IAAA,WAAA,CAAY,WAAW,MAAM,CAAA;AAC7B,IAAA,WAAA,CAAY,WAAW,SAAS,CAAA;AAChC,IAAA,WAAA,CAAY,UAAU,MAAM,CAAA;AAC5B,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,UAAU,aAAa,CAAA;AACnC,IAAA,WAAA,CAAY,WAAW,kBAAkB,CAAA;AACzC,IAAA,WAAA,CAAY,WAAW,kBAAkB,CAAA;AACzC,IAAA,WAAA,CAAY,WAAW,kBAAkB,CAAA;AACzC,IAAA,WAAA,CAAY,aAAa,aAAa,CAAA;AACtC,IAAA,WAAA,CAAY,YAAY,MAAM,CAAA;AAC9B,IAAA,WAAA,CAAY,UAAU,cAAc,CAAA;AACpC,IAAA,WAAA,CAAY,UAAU,cAAc,CAAA;AACpC,IAAA,WAAA,CAAY,UAAU,cAAc,CAAA;AACpC,IAAA,WAAA,CAAY,UAAU,MAAM,CAAA;AAC5B,IAAA,WAAA,CAAY,WAAW,aAAa,CAAA;AACpC,IAAA,WAAA,CAAY,WAAW,aAAa,CAAA;AACpC,IAAA,WAAA,CAAY,UAAU,QAAQ,CAAA;AAC9B,IAAA,WAAA,CAAY,UAAU,KAAK,CAAA;AAC3B,IAAA,WAAA,CAAY,YAAY,aAAa,CAAA;AACrC,IAAA,WAAA,CAAY,SAAS,UAAU,CAAA;AAC/B,IAAA,WAAA,CAAY,UAAU,YAAY,CAAA;AAClC,IAAA,WAAA,CAAY,UAAU,YAAY,CAAA;AAClC,IAAA,WAAA,CAAY,cAAc,YAAY,CAAA;AACtC,IAAA,WAAA,CAAY,YAAY,MAAM,CAAA;AAoC9B,IAAA,WAAA,CAAY,cAAc,2BAA2B,CAAA;AACrD,IAAA,WAAA,CAAY,SAAS,2BAA2B,CAAA;AAChD,IAAA,WAAA,CAAY,UAAU,uBAAuB,CAAA;AAC7C,IAAA,WAAA,CAAY,UAAU,uBAAuB,CAAA;AAC7C,IAAA,WAAA,CAAY,UAAU,iCAAiC,CAAA;AACvD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,mBAAmB,iCAAiC,CAAA;AAChE,IAAA,WAAA,CAAY,SAAS,iCAAiC,CAAA;AACtD,IAAA,WAAA,CAAY,UAAU,iCAAiC,CAAA;AACvD,IAAA,WAAA,CAAY,eAAe,2BAA2B,CAAA;AACtD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,WAAW,oCAAoC,CAAA;AAC3D,IAAA,WAAA,CAAY,gBAAgB,4BAA4B,CAAA;AACxD,IAAA,WAAA,CAAY,UAAU,4BAA4B,CAAA;AAClD,IAAA,WAAA,CAAY,oBAAoB,gCAAgC,CAAA;AAChE,IAAA,WAAA,CAAY,WAAW,gCAAgC,CAAA;AACvD,IAAA,WAAA,CAAY,oBAAoB,gCAAgC,CAAA;AAChE,IAAA,WAAA,CAAY,QAAQ,gCAAgC,CAAA;AACpD,IAAA,WAAA,CAAY,gBAAgB,sBAAsB,CAAA;AAClD,IAAA,WAAA,CAAY,QAAQ,sBAAsB,CAAA;AAC1C,IAAA,WAAA,CAAY,iBAAiB,6BAA6B,CAAA;AAC1D,IAAA,WAAA,CAAY,QAAQ,6BAA6B,CAAA;AACjD,IAAA,WAAA,CAAY,gBAAgB,+BAA+B,CAAA;AAC3D,IAAA,WAAA,CAAY,QAAQ,+BAA+B,CAAA;AACnD,IAAA,WAAA,CAAY,gBAAgB,+BAA+B,CAAA;AAC3D,IAAA,WAAA,CAAY,UAAU,sBAAsB,CAAA;AAC5C,IAAA,WAAA,CAAY,kBAAkB,gCAAgC,CAAA;AAC9D,IAAA,WAAA,CAAY,WAAW,gCAAgC,CAAA;AACvD,IAAA,WAAA,CAAY,QAAQ,gCAAgC,CAAA;AACpD,IAAA,WAAA,CAAY,cAAc,uBAAuB,CAAA;AACjD,IAAA,WAAA,CAAY,UAAU,uBAAuB,CAAA;AAC7C,IAAA,WAAA,CAAY,gBAAgB,gBAAgB,CAAA;AAE5C,IAAA,WAAA,CAAY,UAAU,iBAAiB,CAAA;AACvC,IAAA,WAAA,CAAY,eAAe,WAAW,CAAA;AACtC,IAAA,WAAA,CAAY,QAAQ,sBAAsB,CAAA;AAC1C,IAAA,WAAA,CAAY,QAAQ,sBAAsB,CAAA;AAC1C,IAAA,WAAA,CAAY,UAAU,wBAAwB,CAAA;AAC9C,IAAA,WAAA,CAAY,SAAS,uBAAuB,CAAA;AAC5C,IAAA,WAAA,CAAY,SAAS,uBAAuB,CAAA;AAC5C,IAAA,WAAA,CAAY,oBAAoB,gBAAgB,CAAA;AAChD,IAAA,WAAA,CAAY,QAAQ,gBAAgB,CAAA;AACpC,IAAA,WAAA,CAAY,QAAQ,wBAAwB,CAAA;AAI5C,IAAA,WAAA,CAAY,YAAY,4BAA4B,CAAA;AACpD,IAAA,WAAA,CAAY,QAAQ,4BAA4B,CAAA;AAChD,IAAA,WAAA,CAAY,YAAY,mBAAmB,CAAA;AAC3C,IAAA,WAAA,CAAY,QAAQ,mBAAmB,CAAA;AACvC,IAAA,WAAA,CAAY,SAAS,4BAA4B,CAAA;AACjD,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAC/C,IAAA,WAAA,CAAY,WAAW,4BAA4B,CAAA;AACnD,IAAA,WAAA,CAAY,WAAW,4BAA4B,CAAA;AACnD,IAAA,WAAA,CAAY,gBAAgB,iCAAiC,CAAA;AAC7D,IAAA,WAAA,CAAY,aAAa,8BAA8B,CAAA;AACvD,IAAA,WAAA,CAAY,YAAY,6BAA6B,CAAA;AACrD,IAAA,WAAA,CAAY,YAAY,6BAA6B,CAAA;AACrD,IAAA,WAAA,CAAY,aAAa,8BAA8B,CAAA;AACvD,IAAA,WAAA,CAAY,YAAY,6BAA6B,CAAA;AACrD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,WAAW,4BAA4B,CAAA;AACnD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,cAAc,+BAA+B,CAAA;AACzD,IAAA,WAAA,CAAY,UAAU,2BAA2B,CAAA;AACjD,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAC/C,IAAA,WAAA,CAAY,SAAS,0BAA0B,CAAA;AAC/C,IAAA,WAAA,CAAY,kBAAkB,aAAa,CAAA;AAC3C,IAAA,WAAA,CAAY,QAAQ,aAAa,CAAA;AACjC,IAAA,WAAA,CAAY,gBAAgB,4CAA4C,CAAA;AACxE,IAAA,WAAA,CAAY,QAAQ,4CAA4C,CAAA;AAChE,IAAA,WAAA,CAAY,uBAAuB,4CAA4C,CAAA;AAC/E,IAAA,WAAA,CAAY,eAAe,WAAW,CAAA;AACtC,IAAA,WAAA,CAAY,SAAS,WAAW,CAAA;AAChC,IAAA,WAAA,CAAY,0BAA0B,wCAAwC,CAAA;AAC9E,IAAA,WAAA,CAAY,SAAS,wCAAwC,CAAA;AAC7D,IAAA,WAAA,CAAY,kBAAkB,mDAAmD,CAAA;AACjF,IAAA,WAAA;AAAA,MAAY,gBAAA;AAAA,MACV;AAAA,KAAyE;AAC3E,IAAA,WAAA;AAAA,MAAY,QAAA;AAAA,MACV;AAAA,KAAyE;AAC3E,IAAA,WAAA;AAAA,MAAY,UAAA;AAAA,MACV;AAAA,KAAyE;AAC3E,IAAA,WAAA;AAAA,MAAY,MAAA;AAAA,MACV;AAAA,KAAyE;AAC3E,IAAA,WAAA,CAAY,sBAAsB,wCAAwC,CAAA;AAC1E,IAAA,WAAA,CAAY,YAAY,wCAAwC,CAAA;AAChE,IAAA,WAAA,CAAY,QAAQ,wCAAwC,CAAA;AAC5D,IAAA,WAAA;AAAA,MAAY,iBAAA;AAAA,MACV;AAAA,KAA0E;AAC5E,IAAA,WAAA;AAAA,MAAY,YAAA;AAAA,MACV;AAAA,KAA0E;AAC5E,IAAA,WAAA;AAAA,MAAY,OAAA;AAAA,MACV;AAAA,KAA0E;AAG5E,IAAA,SAAS,UAAU,MAAA,EAAQ;AAGzB,MAAA,MAAM,YAAY,EAAC;AACnB,MAAA,MAAA,CAAO,aAAA,EAAc;AACrB,MAAA,IAAI,GAAA,GAAM,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AACzB,MAAA,IAAI,QAAQ,SAAA,EAAW;AACrB,QAAA,MAAA,CAAO,OAAA,EAAQ;AACf,QAAA,MAAA,CAAO,aAAA,EAAc;AACrB,QAAA,GAAA,GAAM,MAAA,CAAO,OAAM,CAAE,IAAA;AAAA,MACvB;AACA,MAAA,OAAO,GAAA,KAAQ,SAAA,IAAa,GAAA,KAAQ,aAAA,EAAe;AACjD,QAAA,MAAA,CAAO,OAAA,EAAQ;AACf,QAAA,SAAA,CAAU,IAAA,CAAK,QAAQ,aAAa,CAAA;AACpC,QAAA,MAAA,CAAO,aAAA,EAAc;AACrB,QAAA,GAAA,GAAM,MAAA,CAAO,OAAM,CAAE,IAAA;AAAA,MACvB;AACA,MAAA,OAAO,SAAA;AAAA,IACT;AAEA,IAAA,IAAM,gCAAgC,CAAA,OAAA,KAAW;AAC/C,MAAA,MAAM,QAAA,GAAW,QAAQ,MAAA,CAAO,QAAA;AAChC,MAAA,IAAI,CAAC,SAAS,WAAA,EAAa;AACzB,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,CAAA,EAAI,OAAA,CAAQ,OAAO,CAAA,mCAAA,CAAqC,CAAA;AAAA,MAC/E;AAAA,IACF,CAAA;AAEA,IAAA,IAAM,WAAA,GAAc,4CAAA;AACpB,IAAA,IAAM,SAAA,GAAY,CAAAyB,OAAAA,KAAU;AAC1B,MAAA,IAAI,YAAA,GAAeA,OAAAA,CAAO,GAAA,CAAI,gBAAgB,CAAA;AAC9C,MAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AACpC,QAAA,YAAA,GAAe,aAAA,CAAc,aAAa,MAAM,CAAA;AAAA,MAClD;AACA,MAAA,YAAA,GAAe,KAAA,CAAM,YAAY,CAAA,GAAI,IAAA,GAAO,OAAO,YAAY,CAAA;AAC/D,MAAA,IAAI,cAAA,GAAiBA,OAAAA,CAAO,GAAA,CAAI,eAAe,CAAA;AAC/C,MAAA,IAAI,OAAO,mBAAmB,QAAA,EAAU;AACtC,QAAA,cAAA,GAAiB,aAAA,CAAc,eAAe,MAAM,CAAA;AAAA,MACtD;AACA,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,CAAK,cAAc,CAAA;AAC7C,MAAA,MAAM,WAAA,GAAc,KAAA,GAChB,EAAE,MAAA,EAAQ,EAAE,KAAA,CAAM,CAAC,CAAA,GAAI,KAAA,CAAM,CAAC,CAAA,CAAA,EAAI,IAAA,EAAM,KAAA,CAAM,CAAC,GAAE,GACjD,IAAA;AACJ,MAAA,OAAO,CAAC,cAAc,WAAW,CAAA;AAAA,IACnC,CAAA;AAEA,IAAA,IAAM,qBAAqB,CAAA,IAAA,KAAQ;AAEjC,MAAA,IAAI,QAAA,GAAW,EAAA;AACf,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,QAAA,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS;AAC5B,UAAA,IAAI,QAAA,EAAU;AAAE,YAAA,MAAM,IAAI,WAAY,8BAA+B,CAAA;AAAA,UAAE;AACvE,UAAA,QAAA,GAAW,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA;AAAA,QACrB;AAAA,MACF;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAOA,IAAA,SAAS,WAAW,IAAA,EAAM;AACxB,MAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,KAAM,EAAA,EAAI;AAC7B,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA;AAAA,MAC/B;AAAA,IAEF;AAQA,IAAA,SAAS,WACP,MAAA,EACA;AAAA,MACE,IAAA;AAAA;AAAA,MACA,UAAA;AAAA;AAAA,MACA,OAAA;AAAA;AAAA,MACA,SAAA;AAAA;AAAA,MACA,cAAA;AAAA;AAAA,MACA,UAAA;AAAA;AAAA,MACA,KAAA;AAAA;AAAA,MACA,YAAA;AAAA;AAAA,MACA;AAAA;AAAA,OAEFH,YAAAA,EACA;AACA,MAAA,MAAM,WAAW,UAAA,IAAc,UAAA,CAAW,QAAA,CAAS,cAAc,IAAI,GAAA,GAAM,OAAA;AAC3E,MAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AACzB,MAAA,IAAI,CAAC,SAAA,EAAW;AAGd,QAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,aAAa,CAAA;AAAA,MAChD;AAGA,MAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AAEzB,MAAA,IAAI,MAAM,EAAC;AACX,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,CAAA;AACjB,MAAA,MAAM,UAAU,EAAC;AACjB,MAAA,MAAM,SAAS,EAAC;AAEhB,MAAA,MAAM,kBAAkB,EAAC;AAEzB,MAAA,MAAM,IAAA,GAAQ,OAAA,IAAW,IAAA,GAAO,EAAC,GAAI,MAAA;AAKrC,MAAA,SAAS,QAAA,GAAW;AAClB,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,KAAK,IAAI,CAAA;AAAA,QAChD;AAAA,MACF;AACA,MAAA,SAAS,MAAA,GAAS;AAChB,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA,EAAG;AACxC,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,QAAA,CAAS,CAAC,IAAI,KAAA,CAAM,UAAU,CAAC,CAAC,CAAC,CAAA;AAClD,YAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,UAAA,EAAY,QAAW,IAAI,CAAA;AAAA,UACtD,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,OAAO,CAAA,IACrB,MAAA,CAAO,OAAO,MAAA,CAAO,GAAA,CAAI,UAAU,CAAA,KAAM,GAAG,CAAA;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AACA,MAAA,QAAA,EAAS;AAGT,MAAA,eAAA,CAAgB,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC,CAAA;AAEtC,MAAA,OAAO,IAAA,EAAM;AAEX,QAAA,IAAI,OAAO,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAO,SAAA,GAAY,UAAU,MAAM,CAAA;AACrE,QAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AACvB,QAAA,MAAA,CAAO,OAAO,UAAA,EAAW;AAEzB,QAAA,IAAA,GAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,IAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACd;AACA,QAAA,GAAA,CAAI,KAAK,IAAI,CAAA;AACb,QAAA,MAAMpB,KAAAA,GAAO,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AAC5B,QAAA,IAAIA,UAAS,GAAA,EAAK;AAChB,UAAA,IAAI,UAAA,IAAc,GAAA,CAAI,MAAA,KAAW,UAAA,EAAY;AAC3C,YAAA,IAAI,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AAChC,cAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,gBAAA,MAAM,IAAI,UAAA;AAAA,kBAAW,2DAAA;AAAA,kBACnB,MAAA,CAAO;AAAA,iBAAS;AAAA,cACpB;AAAA,YACF,CAAA,MAAA,IAAW,eAAe,CAAA,EAAG;AAC3B,cAAA,MAAM,IAAI,UAAA;AAAA,gBAAW,wDAAA;AAAA,gBACnB,MAAA,CAAO;AAAA,eAAS;AAAA,YACpB,CAAA,MAAO;AACL,cAAA,MAAM,IAAI,UAAA;AAAA,gBAAW,kDAAA;AAAA,gBACnB,MAAA,CAAO;AAAA,eAAS;AAAA,YACpB;AAAA,UACF;AACA,UAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,QACjB,CAAA,MAAA,IAAWA,UAAS,QAAA,EAAU;AAC5B,UAAA,MAAA,EAAO;AAKP,UAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,KAAM,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,CAAC,cAAA,CAAA,EAAiB;AACtF,YAAA,IAAA,CAAK,GAAA,EAAI;AAAA,UACX;AACA,UAAA,MAAA,CAAO,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA;AACzC,UAAA,IAAI,eAAA,CAAgB,MAAA,GAAS,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC5C,YAAA,eAAA,CAAgB,IAAA,CAAK,EAAE,CAAA;AAAA,UACzB;AACA,UAAA;AAAA,QACF,CAAA,MAAA,IAAWA,UAAS,MAAA,EAAQ;AAC1B,UAAA,MAAA,CAAO,OAAA,EAAQ;AACf,UAAA,IAAI,IAAA;AAMJ,UAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,SAAS,GAAA,EAAK;AACvC,YAAA,IAAA,GAAO,MAAA,CAAO,eAAe,IAAI,CAAA;AAAA,UACnC;AACA,UAAA,OAAA,CAAQ,IAAA,CAAK,IAAA,GAAO,IAAA,CAAK,KAAA,GAAQ,IAAI,CAAA;AACrC,UAAA,MAAA,EAAO;AAEP,UAAA,MAAA,CAAO,IAAA,CAAK,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAC,CAAA;AAGzC,UAAA,eAAA,CAAgB,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC,CAAA;AAEtC,UAAA,GAAA,GAAM,EAAC;AACP,UAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,UAAA,QAAA,EAAS;AAAA,QACX,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,UAAA,CAAW,gCAAA,GAAmC,QAAA,EAAU,OAAO,SAAS,CAAA;AAAA,QACpF;AAAA,MACF;AAGA,MAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AAEvB,MAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AAEvB,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,OAAA;AAAA,QACN,MAAM,MAAA,CAAO,IAAA;AAAA,QACb,IAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAAoB,YAAAA;AAAA,QACA,IAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAIA,IAAA,SAAS,WAAW,OAAA,EAAS;AAC3B,MAAA,OAAO,QAAQ,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,KAAM,MAAM,SAAA,GAAY,MAAA;AAAA,IACnD;AAEA,IAAA,IAAM,QAAA,GAAW;AAAA,MACf,CAAA,EAAG,SAAA;AAAA,MACH,CAAA,EAAG,OAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACL;AAEA,IAAA,IAAM,OAAO,CAAA,KAAA,KAAS;AACpB,MAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AACvC,MAAA,QAAA,CAAS,KAAA,GAAQ,EAAE,OAAA,EAAS,GAAA,EAAK,OAAO,KAAA,EAAM;AAC9C,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,UAAU,CAAA,EAAG;AACzC,QAAA,QAAA,CAAS,MAAM,KAAA,GAAQ,MAAA;AAAA,MACzB;AACA,MAAA,OAAO,QAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,SAAS,KAAA,EAAO,KAAA,EAAO;AAC7C,MAAA,MAAM,MAAM,EAAC;AACb,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,MAAA;AAC3B,MAAA,MAAM,SAAS,KAAA,CAAM,eAAA;AACrB,MAAA,MAAM,YAAA,GAAgB,MAAM,IAAA,IAAQ,KAAA,CAAM,KAAK,IAAA,CAAK,CAAC,QAAQ,GAAG,CAAA;AAEhE,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,CAAA,EAAA,EAAK;AAChC,QAAA,MAAM,EAAA,GAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AACvB,QAAA,MAAM,MAAM,EAAC;AACb,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,WAAA,KAAgB,MAAA,GACpC,UAAA,CAAW,IAAA,GACX,KAAA,CAAM,WAAA,KAAgB,QAAA,GACtB,UAAA,CAAW,MAAA,GACX,UAAA,CAAW,OAAA;AAEf,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,EAAA,CAAG,QAAQ,CAAA,EAAA,EAAK;AAClC,UAAA,MAAM,MAAM,IAAI,QAAA;AAAA,YACd,KAAA;AAAA,YACA,CAAC,aAAa,EAAA,CAAG,CAAC,GAAG,KAAA,CAAM,SAAA,CAAU,SAAS,CAAC,CAAC;AAAA,WAClD;AAEA,UAAA,IAAI,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,UAAU,CAAA,EAAG;AACzC,YAAA,MAAM,QAAQ,CAAA,KAAM,CAAA,GAAI,SAAS,CAAA,KAAM,OAAA,GAAU,IAAI,OAAA,GAAU,QAAA;AAC/D,YAAA,IAAI,UAAU,QAAA,EAAU;AACtB,cAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,MAAA,GAAS,KAAK,CAAA;AAAA,YACjC;AAAA,UACF;AACA,UAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,QACd;AACA,QAAA,MAAM,UAAA,GAAa,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA;AAEjC,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,UAAA,GAAa,EAAA,CAAG,QAAQ,CAAA,EAAA,EAAK;AAC/C,UAAA,GAAA,CAAI,IAAA,CAAK,IAAI,QAAA,CAAS,KAAA,EAAO,EAAC,EAAG,EAAC,EAAG,KAAK,CAAC,CAAA;AAAA,QAC7C;AACA,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AACxB,UAAA,IAAI,UAAA;AACJ,UAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,YAAA,UAAA,GAAa,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAAA,UAC5D,CAAA,MAAA,IAAW,QAAQ,KAAA,EAAO;AAExB,YAAA,UAAA,GAAa,IAAI,QAAA,CAAS,OAAA,EAAS,EAAC,EAAG,EAAE,CAAA;AAAA,UAC3C,CAAA,MAAO;AACL,YAAA,UAAA,GAAa,kBAAA,CAAmB,IAAI,CAAC,CAAA,CAAE,MAAM,KAAA,CAAM,SAAA,CAAU,SAAS,CAAA,EAAG,IAAI,CAAA;AAC7E,YAAA,UAAA,GAAa,gBAAgB,UAAU,CAAA;AACvC,YAAA,UAAA,CAAW,OAAA,GAAU,CAAC,SAAS,CAAA;AAAA,UACjC;AACA,UAAA,IAAI,UAAA,EAAY;AACd,YAAA,GAAA,CAAI,OAAA,CAAQ,IAAA,CAAK,KAAK,CAAC,CAAA;AACvB,YAAA,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,KAAK,CAAC,CAAA;AACpB,YAAA,IAAI,MAAM,KAAA,EAAO;AACf,cAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,IAAA,CAAK,UAAU,CAAA;AAAA,YACjC,CAAA,MAAO;AACL,cAAA,GAAA,CAAI,IAAI,MAAA,GAAS,CAAC,CAAA,CAAE,QAAA,CAAS,KAAK,UAAU,CAAA;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AACA,QAAA,MAAM,MAAM,IAAI,QAAA,CAAS,KAAA,EAAO,GAAA,EAAK,EAAE,CAAA;AACvC,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,MAAA,CAAO,KAAA,EAAM;AACjC,QAAA,IAAI,SAAS,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,EAAG;AACxC,UAAA,GAAA,CAAI,YAAA,CAAa,MAAM,KAAK,CAAA;AAC5B,UAAA,IAAI,MAAM,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG;AAAE,YAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,YAAY,CAAA;AAAA,UAAG;AAAA,QACtE;AAGA,QAAA,IAAI,MAAM,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,CAAE,SAAS,CAAA,EAAG;AACnC,UAAA,IAAI,MAAA,CAAO,CAAC,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AAC1B,YAAA,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,IAAA,KAAQ;AAAE,cAAA,IAAA,CAAK,MAAM,SAAA,GAAY,eAAA;AAAA,YAAiB,CAAC,CAAA;AAAA,UAC1E,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,IAAA,KAAQ;AAC3B,cAAA,IAAA,CAAK,MAAM,SAAA,GAAY,MAAA,CAAO,CAAC,CAAA,CAAE,CAAC,IAAI,eAAA,GAAkB,cAAA;AAAA,YAC1D,CAAC,CAAA;AAAA,UACH;AAAA,QACF;AACA,QAAA,IAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,SAAS,CAAA,EAAG;AAC5B,UAAA,IAAI,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,WAAW,CAAA,EAAG;AAC9B,YAAA,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,IAAA,KAAQ;AAAE,cAAA,IAAA,CAAK,MAAM,YAAA,GAAe,eAAA;AAAA,YAAiB,CAAC,CAAA;AAAA,UAC7E,CAAA,MAAO;AACL,YAAA,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,IAAA,KAAQ;AAC3B,cAAA,IAAA,CAAK,KAAA,CAAM,eAAe,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA,CAAE,CAAC,IAAI,eAAA,GAAkB,cAAA;AAAA,YACjE,CAAC,CAAA;AAAA,UACH;AAAA,QACF;AAGA,QAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC5C,UAAA,MAAM,QAAQ,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,CAAC,CAAA;AACxC,UAAA,IAAI,EAAE,SAAS,KAAA,CAAM,IAAA,KAAS,aAAa,KAAA,CAAM,UAAA,CAAW,WAAW,KAAA,CAAA,EAAQ;AAC7E,YAAA,aAAA,GAAgB,KAAA;AAChB,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAI,aAAA,EAAe;AAGjB,UAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,WAAW,CAAA;AAC5B,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC5C,YAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,UAAA,GAAa,GAAA;AACnC,YAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,aAAA,GAAgB,GAAA;AAAA,UACxC;AAAA,QACF;AAEA,QAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,MACd;AAEA,MAAA,IAAI,KAAA,CAAM,YAAA,IAAgB,KAAA,CAAM,YAAA,KAAiB,CAAA,EAAG;AAIlD,QAAA,MAAM,MAAM,MAAA,CAAO,GAAA,GAAM,KAAA,CAAM,YAAA,GAAe,GAAG,CAAA,GAAI,IAAA;AACrD,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC/C,YAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,MAAM,UAAA,GAAa,GAAA;AACtC,YAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,MAAM,aAAA,GAAgB,GAAA;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC/B,QAAA,WAAA,GAAc,KAAA,CAAM,WAAW,QAAA,CAAS,MAAM,IAC1C,GAAA,GACA,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,GACjC,MACA,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,GACjC,QAAA,GACA,MAAM,UAAA,CAAW,QAAA,CAAS,IAAI,CAAA,GAC9B,MAAA,GACA,KAAA;AACJ,QAAA,WAAA,GAAc,IAAA;AAAA,MAChB;AACA,MAAA,IAAI,MAAM,WAAA,EAAa;AACrB,QAAA,MAAM,YAAA,GAAe,aAAA,CAAc,KAAA,CAAM,WAAA,EAAa,KAAK,CAAA;AAC3D,QAAA,WAAA,GAAc,YAAA,CAAa,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAA;AAC3C,QAAA,WAAA,GAAc,YAAA,CAAa,IAAA;AAAA,MAC7B;AACA,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,MAAM,OAAA,GAAU,IAAI,MAAA,KAAW,CAAA,GAAI,IAAI,GAAA,CAAI,CAAC,EAAE,QAAA,CAAS,MAAA;AAEvD,QAAA,MAAM,OAAA,GAAU,CAAC,CAAA,EAAG,IAAA,KAAS;AAC3B,UAAA,IAAI,CAAA,KAAM,CAAA,IAAK,IAAA,KAAS,CAAA,EAAG;AAAE,YAAA,OAAO,GAAA;AAAA,UAAI;AACxC,UAAA,IAAI,CAAA,KAAM,OAAA,GAAU,CAAA,IAAK,IAAA,KAAS,CAAA,EAAG;AAAE,YAAA,OAAO,GAAA;AAAA,UAAI;AAClD,UAAA,IAAI,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA,KAAM,OAAA,EAAS;AAAE,YAAA,OAAO,WAAA;AAAA,UAAY;AAC1D,UAAA,IAAI,SAAS,CAAA,EAAG;AAAE,YAAA,OAAO,GAAA;AAAA,UAAI;AAC7B,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,OAAQ,CAAA,GAAI,IAAK,GAAA,GAAM,GAAA;AAAA,UACzB,CAAA,MAAO;AACL,YAAA,OAAQ,CAAA,GAAI,IAAK,GAAA,GAAM,GAAA;AAAA,UACzB;AAAA,QACF,CAAA;AAGA,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAC/C,YAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,WAAA,GAAc,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAC,GAAG,WAAW,CAAA,CAAA;AACrE,YAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,YAAA,GAAe,CAAA,EAAG,OAAA,CAAQ,CAAA,EAAG,CAAC,CAAC,GAAG,WAAW,CAAA,CAAA;AAAA,UACxE;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAEjC,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,MAAM,WAAA,GAAc,KAAA;AACvC,UAAA,IAAI,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,WAAW,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,MAAA,EAAQ;AACrD,YAAA,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,CAAE,KAAA,CAAM,YAAA,GAAe,KAAA;AAAA,UACnE;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAE/B,QAAA,MAAM,KAAA,GAAQ,MAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,IAAK,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,SAAS,CAAA;AACvF,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,MAAM,GAAA,GAAM,IAAI,CAAC,CAAA;AACjB,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAG5C,cAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA,GAAU,CAAC,MAAA,IAAU,CAAA,GAAI,CAAA,GAAI,MAAA,GAAS,OAAA,CAAQ,CAAA;AAAA,YAChE;AACA,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,MAAM,IAAI,KAAA,CAAM,KAAA,GAAQ,CAAA,GAAI,GAAA,CAAI,SAAS,MAAA,GAAS,CAAA;AAClD,cAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,OAAA,GAAU,EAAC;AAAA,YAC7B;AAAA,UACF;AACA,UAAA,IAAI,GAAA,CAAI,SAAS,MAAA,GAAS,CAAA,IAAK,MAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AACjE,YAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,WAAA,GAAc,KAAA;AAAA,UACtC;AAEA,UAAA,IAAI,KAAA,CAAM,WAAW,QAAA,CAAS,OAAO,KAAK,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,UAAU,CAAA,EAAG;AAC/E,YAAA,KAAA,MAAW,IAAA,IAAQ,IAAI,QAAA,EAAU;AAC/B,cAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,UAAU,CAAA;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAA,EAAU,GAAG,CAAA;AACtC,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAE/B,QAAA,IAAI,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,KAAK,CAAA,EAAG;AACpC,UAAA,KAAA,CAAM,OAAA,CAAQ,KAAK,SAAS,CAAA;AAAA,QAC9B,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AAC7C,UAAA,KAAA,CAAM,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAChC;AAAA,MACF;AACA,MAAA,IAAI,KAAA,CAAM,gBAAgB,SAAA,EAAW;AAAE,QAAA,KAAA,CAAM,YAAA,CAAa,gBAAgB,MAAM,CAAA;AAAA,MAAG;AAEnF,MAAA,IAAI,MAAM,OAAA,IAAW,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,UAAU,CAAA,EAAG;AAC1D,QAAA,KAAA,CAAM,MAAM,KAAA,GAAQ,MAAA;AAAA,MACtB;AAIA,MAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA,EAAG;AACvC,QAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,QAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,QAAA,IAAI,MAAA,GAAS,CAAA;AACb,QAAA,IAAI,OAAO,IAAA,CAAK,MAAA;AAEhB,QAAA,OAAO,IAAA,CAAK,MAAM,CAAA,CAAE,IAAA,KAAS,WAAA,EAAa;AACxC,UAAA,MAAA,IAAU,CAAA;AAAA,QACZ;AACA,QAAA,OAAO,IAAA,CAAK,IAAA,GAAO,CAAC,CAAA,CAAE,SAAS,WAAA,EAAa;AAC1C,UAAA,IAAA,IAAQ,CAAA;AAAA,QACV;AAEA,QAAA,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,WAAA,EAAa;AAChC,UAAA,MAAM,GAAA,GAAM,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,WAAA,GACzB,eAAA,GACA,IAAA,CAAK,CAAC,CAAA,CAAE,SAAA,KAAc,GAAA,GACtB,eAAA,GACA,gBAAA;AACJ,UAAA,KAAA,MAAW,GAAA,IAAO,MAAM,QAAA,EAAU;AAChC,YAAA,GAAA,CAAI,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,UAAA,GAAa,GAAA;AAAA,UACrC;AAAA,QACF;AACA,QAAA,IAAI,IAAA,GAAO,eAAe,CAAA,GAAI,EAAA;AAC9B,QAAA,KAAA,IAAS,CAAA,GAAI,MAAA,EAAQ,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAAK;AAClC,UAAA,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,OAAA,EAAS;AAC5B,YAAA,MAAM,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,CAAC,EAAE,KAAK,CAAA;AACvC,YAAA,IAAA,IAAQ,CAAA;AACR,YAAA,KAAA,MAAW,GAAA,IAAO,MAAM,QAAA,EAAU;AAChC,cAAA,IAAI,SAAS,IAAA,EAAK,KAAM,YAAY,IAAA,GAAO,GAAA,CAAI,SAAS,MAAA,EAAQ;AAC9D,gBAAA,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,CAAE,OAAA,GAAU,CAAC,MAAA,GAAS,QAAA,CAAS,MAAM,CAAA;AAAA,cACxD;AAAA,YACF;AACA,YAAA,gBAAA,GAAmB,IAAA;AAAA,UACrB,CAAA,MAAA,IAAW,IAAA,CAAK,CAAC,CAAA,CAAE,SAAS,WAAA,EAAa;AAGvC,YAAA,IAAI,gBAAA,EAAkB;AACpB,cAAA,MAAM,GAAA,GAAM,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA,CAAE,IAAA,KAAS,WAAA,GAC7B,eAAA,GACA,IAAA,CAAK,CAAC,CAAA,CAAE,SAAA,KAAc,MACtB,cAAA,GACA,eAAA;AACJ,cAAA,KAAA,MAAW,GAAA,IAAO,MAAM,QAAA,EAAU;AAChC,gBAAA,IAAI,IAAA,GAAO,GAAA,CAAI,QAAA,CAAS,MAAA,EAAQ;AAC9B,kBAAA,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,CAAE,KAAA,CAAM,WAAA,GAAc,GAAA;AAAA,gBACzC;AAAA,cACF;AAAA,YACF;AACA,YAAA,gBAAA,GAAmB,KAAA;AAAA,UACrB;AAAA,QACF;AACA,QAAA,IAAI,KAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,CAAE,SAAS,WAAA,EAAa;AAC9C,UAAA,MAAM,MAAM,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,EAAE,IAAA,KAAS,WAAA,GACvC,eAAA,GACA,IAAA,CAAK,KAAK,MAAA,GAAS,CAAC,CAAA,CAAE,SAAA,KAAc,MACpC,cAAA,GACA,eAAA;AACJ,UAAA,KAAA,MAAW,GAAA,IAAO,MAAM,QAAA,EAAU;AAChC,YAAA,GAAA,CAAI,SAAS,GAAA,CAAI,QAAA,CAAS,SAAS,CAAC,CAAA,CAAE,MAAM,WAAA,GAAc,GAAA;AAC1D,YAAA,GAAA,CAAI,SAAS,GAAA,CAAI,QAAA,CAAS,SAAS,CAAC,CAAA,CAAE,MAAM,YAAA,GAAe,OAAA;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,CAAM,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA,EAAG;AAEtC,QAAA,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,KAAK,CAAC,CAAA;AACtC,QAAA,KAAA,CAAM,YAAA,CAAa,eAAe,GAAG,CAAA;AAAA,MACvC;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAGA,IAAA,IAAM,cAAA,GAAiB,SAAS,OAAA,EAAS,IAAA,EAAM;AAC7C,MAAA,IAAI,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,IAAI,MAAM,EAAA,EAAI;AACxC,QAAA,6BAAA,CAA8B,OAAO,CAAA;AAAA,MACvC;AACA,MAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,KAAY,OAAA;AACpC,MAAA,MAAM,OAAO,EAAC;AACd,MAAA,MAAM,GAAA,GAAM,UAAA;AAAA,QACV,OAAA,CAAQ,MAAA;AAAA,QACR;AAAA,UACE,IAAA;AAAA,UACA,cAAA,EAAgB,IAAA;AAAA,UAChB,OAAA,EAAS,OAAA,GAAU,MAAA,GAAY,UAAA,CAAW,QAAQ,OAAO,CAAA;AAAA,UACzD,UAAA,EAAY,CAAC,MAAA,EAAQ,KAAK,CAAA;AAAA;AAAA,UAC1B,UAAA,EAAY,OAAA,CAAQ,OAAA,KAAY,OAAA,GAAU,CAAA,GAAI,MAAA;AAAA,UAC9C,KAAA,EAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS;AAAA,SACjC;AAAA,QACA;AAAA,OACF;AAWA,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,OAAA,GAAU,CAAA;AACd,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAA;AACpD,MAAA,IAAI,IAAA,CAAK,CAAC,CAAA,IAAK,WAAA,EAAa;AAE1B,QAAA,IAAI,IAAA,GAAO,EAAA;AACX,QAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAC5C,UAAA,MAAMI,QAAAA,GAAU,eAAe,IAAA,CAAK,CAAC,EAAE,IAAA,CAAK,CAAC,GAAG,SAAS,CAAA;AACzD,UAAA,IAAA,IAAQA,QAAAA,CAAQ,IAAA;AAAA,QAClB;AACA,QAAA,IAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACf,UAAA,MAAM,IAAI,WAAW,2DAA2D,CAAA;AAAA,QAClF;AACA,QAAA,QAAA,GAAW,OAAO,IAAI,CAAA;AACtB,QAAA,OAAA,GAAU,QAAA,GAAW,CAAA;AAAA,MACvB;AACA,MAAA,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,SAAS,GAAA,EAAK;AAC7B,QAAA,IAAI,WAAA,EAAa;AAEf,UAAA,MAAM,QAAA,GAAW,IAAI,MAAA,GAAS,CAAA;AAC9B,UAAA,IAAI,WAAW,QAAA,EAAU;AACvB,YAAA,MAAM,IAAI,UAAA;AAAA,cACR,CAAA,iCAAA,EAAyC,QAAQ,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAA;AAAA,cACtE,IAAI,CAAC;AAAA,aACP;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,OAAA,GAAU,GAAA,CAAI,MAAA,EAAQ;AAE/B,UAAA,OAAA,GAAU,GAAA,CAAI,MAAA;AAAA,QAChB;AAAA,MACF,CAAC,CAAA;AAKD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,EAAE,CAAA,EAAG;AAChC,QAAA,IAAI,KAAA,GAAQ,GAAA;AACZ,QAAA,IAAI,CAAA,GAAI,MAAM,CAAA,EAAG;AACf,UAAA,KAAA,GAAQ,GAAA;AAAA,QACV;AACA,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI;AAAA,UACR,IAAA,EAAM,OAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AACA,MAAA,IAAI,OAAA,CAAQ,YAAY,OAAA,EAAS;AAAA,WAAA,IAAW,WAAA,EAAa;AACvD,QAAA,GAAA,CAAI,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,MAC/B,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,UAAA,CAAW,CAAC,CAAA,GAAI,OAAA;AAAA,MACtB;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAMA,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,QAAQ,CAAA;AAAA,MACzB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,SAAS,IAAA,EAAM;AAKrB,QAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,IAAA,CAAK,CAAC,CAAC,CAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,OAAA,GAAU,CAAC,IAAA,CAAK,CAAC,CAAC,CAAA,GAAI,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,UAAU,CAAA,CAAE,IAAA;AAC3E,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,SAAS,GAAA,EAAK;AACtC,UAAA,MAAM,IAAA,GAAO,qBAAqB,GAAG,CAAA;AACrC,UAAA,MAAM,KAAK,IAAA,CAAK,IAAA;AAChB,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,KAAM,EAAA,EAAI;AAC5B,YAAA,OAAO;AAAA,cACL,IAAA,EAAM,OAAA;AAAA,cACN,KAAA,EAAO;AAAA,aACT;AAAA,UACF,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,OAAO;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,SAAA,EAAW;AAAA,aACb;AAAA,UACF,CAAA,MAAA,IAAW,OAAO,GAAA,EAAK;AACrB,YAAA,OAAO;AAAA,cACL,IAAA,EAAM,WAAA;AAAA,cACN,SAAA,EAAW;AAAA,aACb;AAAA,UACF;AACA,UAAA,MAAM,IAAI,UAAA,CAAW,4BAAA,GAA+B,EAAA,EAAI,GAAG,CAAA;AAAA,QAC7D,CAAC,CAAA;AACD,QAAA,MAAM,CAAC,cAAc,WAAW,CAAA,GAAI,UAAU,OAAA,CAAQ,MAAA,CAAO,OAAO,MAAM,CAAA;AAC1E,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,IAAA;AAAA,UACA,UAAA,EAAY,CAAC,OAAO,CAAA;AAAA,UACpB,YAAY,IAAA,CAAK,MAAA;AAAA,UACjB,YAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,OAAO,WAAW,OAAA,CAAQ,MAAA,EAAQ,KAAK,UAAA,CAAW,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,MACpE,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAMD,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,QAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,MAAMH,WAAAA,GAAa;AAAA,UACjB,MAAA,EAAQ,IAAA;AAAA,UACR,OAAA,EAAS,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,UAClB,OAAA,EAAS,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,UAClB,OAAA,EAAS,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,UACtB,OAAA,EAAS,CAAC,GAAA,EAAK,GAAG,CAAA;AAAA,UAClB,OAAA,EAAS,CAAC,QAAA,EAAU,QAAQ;AAAA,UAC5B,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,GAAA,EAAK,EAAE,CAAC,CAAA;AAElC,QAAA,IAAI,QAAA,GAAW,GAAA;AACf,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,YAAY,EAAC;AAAA,UACb,MAAM;AAAC,SACT;AACA,QAAA,IAAI,OAAA,CAAQ,QAAQ,MAAA,CAAO,OAAA,CAAQ,QAAQ,MAAA,GAAS,CAAC,MAAM,GAAA,EAAK;AAG9D,UAAA,MAAM,SAAS,OAAA,CAAQ,MAAA;AACvB,UAAA,MAAA,CAAO,aAAA,EAAc;AACrB,UAAA,IAAI,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA,KAAS,GAAA,EAAK;AAC/B,YAAA,MAAA,CAAO,OAAA,EAAQ;AACf,YAAA,MAAA,CAAO,aAAA,EAAc;AACrB,YAAA,QAAA,GAAW,MAAA,CAAO,OAAM,CAAE,IAAA;AAC1B,YAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,KAAM,EAAA,EAAI;AAClC,cAAA,MAAM,IAAI,UAAA,CAAW,sBAAA,EAAwB,MAAA,CAAO,SAAS,CAAA;AAAA,YAC/D;AACA,YAAA,MAAA,CAAO,OAAA,EAAQ;AACf,YAAA,MAAA,CAAO,aAAA,EAAc;AACrB,YAAA,MAAA,CAAO,OAAO,GAAG,CAAA;AACjB,YAAA,MAAA,CAAO,OAAA,EAAQ;AACf,YAAA,OAAA,CAAQ,OAAO,EAAC;AAAA,UAClB;AAAA,QACF;AACA,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,SAAS,MAAM,CAAA;AACtD,QAAA,GAAA,CAAI,IAAA,GAAO,IAAI,IAAA,CAAK,MAAA,GAAS,IACzB,IAAI,KAAA,CAAM,IAAI,IAAA,CAAK,CAAC,EAAE,MAAM,CAAA,CAAE,KAAK,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,QAAA,EAAU,CAAA,GACrE,EAAC;AACL,QAAA,MAAM,CAAC,cAAc,WAAW,CAAA,GAAI,UAAU,OAAA,CAAQ,MAAA,CAAO,OAAO,MAAM,CAAA;AAC1E,QAAA,GAAA,CAAI,YAAA,GAAe,YAAA;AACnB,QAAA,IAAI,WAAA,IAAe,EAAE,WAAA,KAAgB,CAAA,IAAK,gBAAgB,IAAA,CAAA,EAAO;AAC/D,UAAA,GAAA,CAAI,WAAA,GAAc,WAAA;AAAA,QACpB;AACA,QAAA,OAAOA,WAAAA,GACH;AAAA,UACA,IAAA,EAAM,WAAA;AAAA,UACN,MAAM,OAAA,CAAQ,IAAA;AAAA,UACd,IAAA,EAAM,CAAC,GAAG,CAAA;AAAA,UACV,IAAA,EAAMA,YAAW,CAAC,CAAA;AAAA,UAClB,KAAA,EAAOA,YAAW,CAAC,CAAA;AAAA,UACnB,UAAA,EAAY;AAAA;AAAA,SACd,GACE,GAAA;AAAA,MACN,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,cAAc,CAAA;AAAA,MACtB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,MAAM,OAAA,GAAU,EAAE,IAAA,EAAM,IAAI,UAAA,EAAY,CAAC,cAAc,CAAA,EAAE;AACzD,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,SAAS,MAAM,CAAA;AACtD,QAAA,GAAA,CAAI,IAAA,GAAO,IAAI,IAAA,CAAK,MAAA,GAAS,IACzB,IAAI,KAAA,CAAM,IAAI,IAAA,CAAK,CAAC,EAAE,MAAM,CAAA,CAAE,KAAK,EAAE,IAAA,EAAM,SAAS,KAAA,EAAO,GAAA,EAAK,CAAA,GAChE,EAAC;AACL,QAAA,GAAA,CAAI,aAAa,EAAC;AAClB,QAAA,GAAA,CAAI,YAAA,GAAe,CAAA;AACnB,QAAA,IAAI,OAAA,CAAQ,YAAY,QAAA,EAAU;AAAE,UAAA,OAAO,GAAA;AAAA,QAAG;AAC9C,QAAA,OAAO,qBAAA,CAAsB,GAAA,EAAK,OAAA,CAAQ,UAAU,CAAA;AAAA,MACtD,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAa,CAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,MAAM,OAAA,GAAU,EAAE,UAAA,EAAY,CAAC,OAAO,CAAA,EAAE;AACxC,QAAA,MAAM,GAAA,GAAM,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,SAAS,QAAQ,CAAA;AACxD,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,SAAS,IAAA,EAAM;AAErB,QAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,IAAA,CAAK,CAAC,CAAC,CAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,OAAA,GAAU,CAAC,IAAA,CAAK,CAAC,CAAC,CAAA,GAAI,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,UAAU,CAAA,CAAE,IAAA;AAC3E,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,GAAA,CAAI,SAAS,GAAA,EAAK;AACtC,UAAA,MAAM,IAAA,GAAO,qBAAqB,GAAG,CAAA;AACrC,UAAA,MAAM,KAAK,IAAA,CAAK,IAAA;AAEhB,UAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,EAAE,CAAA,KAAM,EAAA,EAAI;AAC3B,YAAA,OAAO;AAAA,cACL,IAAA,EAAM,OAAA;AAAA,cACN,KAAA,EAAO;AAAA,aACT;AAAA,UACF;AACA,UAAA,MAAM,IAAI,UAAA,CAAW,4BAAA,GAA+B,EAAA,EAAI,GAAG,CAAA;AAAA,QAC7D,CAAC,CAAA;AACD,QAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACnB,UAAA,MAAM,IAAI,WAAW,wCAAwC,CAAA;AAAA,QAC/D;AACA,QAAA,IAAI,GAAA,GAAM;AAAA,UACR,IAAA;AAAA,UACA,UAAA,EAAY,CAAC,OAAO;AAAA,SACtB;AACA,QAAA,GAAA,GAAM,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,GAAA,EAAK,QAAQ,CAAA;AAC9C,QAAA,IAAI,GAAA,CAAI,KAAK,MAAA,GAAS,CAAA,IAAK,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA,GAAS,CAAA,EAAG;AACjD,UAAA,MAAM,IAAI,WAAW,wCAAwC,CAAA;AAAA,QAC/D;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAQD,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU,SAAS,CAAA;AAAA,MAC9C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,MAAM,EAAC;AAAA,UACP,UAAA,EAAY,CAAC,OAAO;AAAA,SACtB;AACA,QAAA,MAAM,GAAA,GAAM,WAAW,OAAA,CAAQ,MAAA,EAAQ,SAAS,UAAA,CAAW,OAAA,CAAQ,OAAO,CAAC,CAAA;AAC3E,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,WAAA;AAAA,UACN,MAAM,OAAA,CAAQ,IAAA;AAAA,UACd,IAAA,EAAM,CAAC,GAAG,CAAA;AAAA,UACV,MAAM,OAAA,CAAQ,OAAA,CAAQ,QAAQ,GAAG,CAAA,GAAI,KAAK,GAAA,GAAM,KAAA;AAAA,UAChD,OAAO,OAAA,CAAQ,OAAA,CAAQ,QAAQ,GAAG,CAAA,GAAI,KAAK,KAAA,GAAQ,GAAA;AAAA,UACnD,UAAA,EAAY;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAMD,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,QAAA,EAAU,WAAW,OAAO,CAAA;AAAA,MAC7C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS,cAAA;AAAA,MACT,aAAA,EAAe;AAAA,KAChB,CAAA;AAID,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAA,EAAW,UAAA,EAAY,WAAW,CAAA;AAAA,MAC1C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAS,cAAA;AAAA,MACT,aAAA,EAAe;AAAA,KAChB,CAAA;AAKD,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAA,EAAY,QAAA,EAAU,SAAS,CAAA;AAAA,MACvC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,IAAI,OAAA,CAAQ,YAAY,UAAA,EAAY;AAClC,UAAA,6BAAA,CAA8B,OAAO,CAAA;AAAA,QACvC;AACA,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,MAAM,EAAC;AAAA,UACP,UAAA,EAAY,CAAC,MAAA,EAAQ,KAAK,CAAA;AAAA,UAC1B,OAAA,EAAS,UAAA,CAAW,OAAA,CAAQ,OAAO,CAAA;AAAA,UACnC,cAAA,EAAgB,IAAA;AAAA,UAChB,KAAA,EAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS;AAAA,SACjC;AACA,QAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,GAAA,EAAK,SAAS,CAAA;AAAA,MAClD,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAA,EAAY,WAAW,CAAA;AAAA,MAC/B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,6BAAA,CAA8B,OAAO,CAAA;AACrC,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,OAAA,EAAS,UAAA,CAAW,OAAA,CAAQ,OAAO,CAAA;AAAA,UACnC,cAAA,EAAgB,IAAA;AAAA,UAChB,SAAA,EAAW,IAAA;AAAA,UACX,UAAA,EAAY,CAAA;AAAA,UACZ,UAAA,EAAY,CAAC,OAAO,CAAA;AAAA,UACpB,KAAA,EAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS;AAAA,SACjC;AACA,QAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,GAAA,EAAK,SAAS,CAAA;AAAA,MAClD,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAA,EAAY,WAAW,CAAA;AAAA,MAC/B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,6BAAA,CAA8B,OAAO,CAAA;AACrC,QAAA,MAAM,GAAA,GAAM;AAAA,UACV,OAAA,EAAS,QAAQ,OAAA,KAAY,UAAA;AAAA,UAC7B,UAAA,EAAY,CAAA;AAAA,UACZ,UAAA,EAAY,CAAC,KAAA,EAAO,UAAU,CAAA;AAAA,UAC9B,KAAA,EAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,CAAS;AAAA,SACjC;AACA,QAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,GAAA,EAAK,SAAS,CAAA;AAAA,MAClD,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,iBAAA,CAAkB;AAAA,MAChB,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,IAAI,CAAA;AAAA,MACZ,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,OAAA,EAAS;AACf,QAAA,6BAAA,CAA8B,OAAO,CAAA;AACrC,QAAA,OAAO,OAAA,CAAQ,QAAQ,MAAM,CAAA;AAAA,MAC/B,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAA,EAAW,aAAa,CAAA;AAAA,MAChC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,SAAS,IAAA,EAAM;AACrB,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,EAAG,OAAA,CAAQ,QAAQ,CAAA,oCAAA,CAAsC,CAAA;AAAA,MAChF;AAAA,KACD,CAAA;AAED,IAAA,IAAM,YAAA,GAAe,aAAA;AAMrB,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,CAAC,gBAAA,EAAkB,UAAU,CAAA;AAAA,MACpC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,SAAS,CAAC,EAAE,QAAQ,QAAA,EAAS,EAAG,MAAM,OAAA,KAAY;AAEhD,QAAA,IAAIA,WAAAA,GAAa,CAAC,GAAA,EAAK,GAAG,CAAA;AAC1B,QAAA,IAAI,QAAA,KAAa,oBAAoB,OAAA,CAAQ,CAAC,KAAK,OAAA,CAAQ,CAAC,EAAE,IAAA,EAAM;AAClE,UAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACxB,UAAA,IAAI,KAAK,MAAA,KAAW,CAAA,IAAK,KAAK,CAAC,CAAA,CAAE,SAAS,WAAA,EAAa;AACrD,YAAAA,WAAAA,GAAa,CAAC,IAAA,CAAK,CAAC,EAAE,IAAA,EAAM,IAAA,CAAK,CAAC,CAAA,CAAE,KAAK,CAAA;AAAA,UAC3C;AAAA,QACF;AAEA,QAAA,MAAA,CAAO,aAAA,EAAc;AACrB,QAAA,MAAA,CAAO,OAAA,EAAQ;AAGf,QAAA,MAAM,GAAA,GAAM,aAAa,cAAc,CAAA;AACvC,QAAA,MAAM,OAAA,GAAU;AAAA,UACd,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,OAAA,EAAS,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAAA,UACzB,UAAA,EAAAA,WAAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,OAAO,CAAA;AAClC,QAAA,MAAA,CAAO,MAAA,CAAO,KAAK,IAAI,CAAA;AACvB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,MAAM,EAAA,GAAK,KAAK,CAAC,CAAA;AACjB,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA,EAAA;AAAA,UACA,cAAA,EAAgB,eAAe,IAAI;AAAA,SACrC;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,WAAW,IAAI,QAAA;AAAA,UACnB,MAAA;AAAA,UACA,CAAC,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,UAChC,CAAC,WAAW;AAAA;AAAA,SACd;AAGA,QAAA,MAAMI,QAAAA,GAAU,IAAI,QAAA,CAAS,UAAA,EAAY,CAAC,aAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AAC1E,QAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,MAAA,EAAQ,CAACA,QAAO,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAC9D,QAAA,KAAA,CAAM,KAAA,CAAM,QAAQ,KAAA,CAAM,KAAA;AAC1B,QAAA,IAAI,KAAA,CAAM,cAAA,IAAkB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,GAAI,EAAA,EAAI;AACxE,UAAA,KAAA,CAAM,MAAM,IAAA,GAAO,OAAA;AACnB,UAAA,KAAA,CAAM,MAAM,KAAA,GAAQ,KAAA;AAAA,QACtB;AACA,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,UAAU,KAAK,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AACjE,QAAA,IAAI,CAAC,KAAA,CAAM,cAAA,IAAkB,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AAElE,UAAAA,QAAAA,CAAQ,MAAM,YAAA,GAAe,OAAA;AAAA,QAC/B,CAAA,MAAO;AACL,UAAAA,QAAAA,CAAQ,MAAM,OAAA,GAAU,iBAAA;AACxB,UAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACvC,UAAA,KAAA,CAAM,YAAA,CAAa,UAAU,QAAQ,CAAA;AACrC,UAAA,QAAA,CAAS,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,QAC9B;AAKA,QAAA,IAAI,SAAA;AACJ,QAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,UAAA,SAAA,GAAY,IAAI,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACrC,UAAA,SAAA,CAAU,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QACxC,CAAA,MAAO;AAEL,UAAA,MAAMC,MAAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE5C,UAAA,MAAM,gBAAgB,IAAI,QAAA,CAAS,SAAA,EAAW,CAACA,MAAK,CAAC,CAAA;AACrD,UAAA,aAAA,CAAc,YAAA,CAAa,SAAS,OAAO,CAAA;AAC3C,UAAA,SAAA,GAAY,IAAI,QAAA,CAAS,UAAA,EAAY,CAAC,aAAa,CAAC,CAAA;AAAA,QACtD;AACA,QAAA,MAAMC,OAAAA,GAAS,YAAA,CAAa,KAAA,CAAM,EAAA,EAAI,KAAK,CAAA;AAC3C,QAAAA,OAAAA,CAAO,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,KAAA;AAC3B,QAAA,MAAM,kBAAkB,IAAI,QAAA,CAAS,SAAA,EAAW,CAACA,OAAM,CAAC,CAAA;AACxD,QAAA,IAAI,CAAC,KAAA,CAAM,cAAA,IAAkB,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AAClE,UAAA,MAAM,CAAA,GAAI,IAAI,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACnC,UAAA,CAAA,CAAE,YAAA,CAAa,SAAS,OAAO,CAAA;AAC/B,UAAA,eAAA,CAAgB,QAAA,CAAS,QAAQ,CAAC,CAAA;AAAA,QACpC;AACA,QAAA,eAAA,CAAgB,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7C,QAAA,MAAM,QAAQ,IAAI,QAAA,CAAS,SAAS,CAAC,SAAA,EAAW,eAAe,CAAC,CAAA;AAEhE,QAAA,MAAM,SAAA,GAAY,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,eAAe,CAAC,CAAA;AAC5D,QAAA,OAAO,mBAAA,CAAoB,CAAC,OAAA,CAAQ,CAAC,MAAM,KAAK,CAAC,CAAA,EAAG,SAAS,CAAC,CAAA;AAAA,MAChE;AAAA,KACD,CAAA;AAKD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,KAAA,IAAS,IAAA,EAAM;AAC/B,QAAA,MAAM,GAAA,GAAM,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,UAAU,CAAA;AAC9C,QAAA,MAAM,QAAQ,GAAA,CAAI,IAAA;AAClB,QAAA,IAAI,MAAA,GAAS,EAAA;AACb,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,UAAA,MAAM,IAAA,GAAO,cAAA,CAAe,KAAA,CAAM,CAAC,GAAG,SAAS,CAAA;AAC/C,UAAA,MAAA,IAAU,IAAA,CAAK,IAAA;AAAA,QACjB;AACA,QAAA,MAAM,IAAA,GAAO,SAAS,MAAM,CAAA;AAC5B,QAAA,IAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACf,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,iCAAA,EAAoC,MAAM,IAAI,KAAK,CAAA;AAAA,QAC1E;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,MAAA,CAAO,aAAA,CAAc,IAAI;AAAA,SACjC;AAAA,MACF;AAAA,KACD,CAAA;AAGD,IAAA,IAAM,SAAA,GAAY,iCAAA;AAClB,IAAA,IAAM,eAAA,GAAkB,wCAAA;AACxB,IAAA,IAAM,QAAA,GAAW,kCAAA;AACjB,IAAA,IAAM,QAAA,GAAW,gDAAA;AACjB,IAAA,IAAM,eAAA,GAAkB,gBAAA;AACxB,IAAA,IAAM,QAAQ,CAAA,GAAA,KAAO;AACnB,MAAA,IAAI,GAAA,GAAM,GAAA,CAAI,QAAA,CAAS,EAAE,CAAA;AACzB,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AAAE,QAAA,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,MAAK;AACzC,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAMA,IAAA,IAAM,OAAA,GAAU,KAAK,KAAA,CAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAoFzB,CAAA;AAEF,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,IAAA,KAAS;AACrC,MAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,MAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,QAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG;AACzB,UAAA,MAAM,IAAI,WAAW,qBAAqB,CAAA;AAAA,QAC5C;AACA,QAAA,KAAA,GAAQ,IAAA;AAAA,MACV,CAAA,MAAA,IAAW,UAAU,KAAA,EAAO;AAC1B,QAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,WAAW,oBAAoB,CAAA;AAAA,QAC3C;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK;AAAE,UAAA,KAAA,IAAS,KAAA,CAAM,MAAA,CAAO,CAAA,CAAE,IAAA,EAAM,CAAC,CAAA;AAAA,QAAG,CAAC,CAAA;AAAA,MAChE,CAAA,MAAO;AACL,QAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACxB,UAAA,MAAM,IAAI,WAAW,oBAAoB,CAAA;AAAA,QAC3C;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK;AACvB,UAAA,MAAM,GAAA,GAAM,MAAA,CAAO,CAAA,CAAE,IAAA,EAAM,CAAA;AAC3B,UAAA,IAAI,MAAM,CAAA,EAAG;AAAE,YAAA,MAAM,IAAI,WAAW,8BAA8B,CAAA;AAAA,UAAE;AACpE,UAAA,KAAA,IAAS,MAAM,MAAA,CAAA,CAAQ,GAAA,GAAM,KAAK,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAA;AAAA,QAC/C,CAAC,CAAA;AAAA,MACH;AACA,MAAA,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AAAE,QAAA,KAAA,GAAQ,GAAA,GAAM,KAAA;AAAA,MAAO;AACpD,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAOJ,OAAAA,EAAQ,KAAA,KAAU;AAC9C,MAAA,MAAM,SAAA,GAAY,aAAa,KAAK,CAAA,CAAA;AACpC,MAAA,MAAM,KAAA,GAAQ,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA;AACxC,MAAA,IAAI,CAAC,KAAA,EAAO;AAAE,QAAA,MAAM,IAAI,UAAA,CAAW,kBAAA,GAAqB,KAAA,GAAQ,KAAK,KAAK,CAAA;AAAA,MAAE;AAI5E,MAAA,IAAI,eAAA,CAAgB,IAAA,CAAK,KAAK,CAAA,EAAG;AAC/B,QAAA,OAAO,GAAA,GAAM,KAAA;AAAA,MACf,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,CAAO,CAAC,MAAM,GAAA,EAAK;AAClC,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,MAAA,IAAWA,OAAAA,CAAO,GAAA,CAAI,SAAS,CAAA,EAAG;AAChC,QAAA,KAAA,GAAQA,QAAO,GAAA,CAAI,SAAS,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA;AAAA,MAC1C,CAAA,MAAA,IAAW,OAAA,CAAQ,KAAK,CAAA,EAAG;AACzB,QAAA,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAAA,MACvB;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AAIxC,MAAA,IAAI,IAAA,GAAO,gBAAgB,KAAA,CAAM,IAAA,EAAM,MAAM,SAAA,CAAU,KAAA,CAAM,KAAK,CAAC,CAAA;AACnE,MAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,QAAA,IAAA,CAAK,IAAA,CAAK,IAAI,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,MAChC;AACA,MAAA,IAAA,GAAO,IAAA,CAAK,IAAI,CAAA,CAAA,KAAK;AACnB,QAAA,CAAA,CAAE,KAAA,CAAM,QAAQ,KAAA,CAAM,KAAA;AACtB,QAAA,OAAO,CAAA;AAAA,MACT,CAAC,CAAA;AACD,MAAA,OAAO,oBAAoB,IAAI,CAAA;AAAA,IACjC,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAa,CAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,UAAU;AAAA,OACrC;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAG,MAAM,OAAA,EAAS;AACxC,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA,IAAK,eAAe,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC9D,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC5C,UAAA,KAAA,GAAQ,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,aAAA,CAAc,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA;AAAA,QAC1F;AACA,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA;AAAA,UACA,WAAA,EAAa,IAAA;AAAA,UACb,IAAA,EAAM,YAAY,IAAI;AAAA,SACxB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,KAAA,EAAO,KAAK;AAAA,OACzB;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,kBAAkB,KAAA,EAAM,EAAG,MAAM,OAAA,EAAS;AAC1D,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA,IAAK,eAAe,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC9D,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC5C,UAAA,KAAA,GAAQ,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,aAAA,CAAc,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAA;AAAA,QAC1F;AAGA,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAM,kBAAkB,IAAI,CAAA;AAEhE,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA;AAAA,UACA,WAAA,EAAa,KAAA;AAAA,UACb;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,eAAe,CAAA;AAAA,MACvB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,KAAK;AAAA,OAChC;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,EAAM;AACzC,QAAA,MAAM,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC5C,QAAA,IAAI,CAAC,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA,EAAG;AAC7B,UAAA,MAAM,IAAI,UAAA,CAAW,mCAAA,EAAqC,KAAK,CAAA;AAAA,QACjE;AACA,QAAA,MAAM,QAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC7C,QAAA,IAAI,CAAC,CAAC,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EAAG;AAC3C,UAAA,MAAM,IAAI,UAAA,CAAW,wCAAA,EAA0C,KAAK,CAAA;AAAA,QACtE;AACA,QAAA,MAAM,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC5C,QAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,KAAA,EAAO,IAAI,CAAA;AACvC,QAAA,MAAA,CAAO,OAAO,MAAA,CAAO,GAAA,CAAI,CAAA,UAAA,EAAa,IAAI,IAAI,EAAE,MAAA,EAAQ,CAAC,EAAE,MAAM,KAAA,EAAO,CAAA,EAAG,OAAA,EAAS,GAAG,CAAA;AACvF,QAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAC/C;AAAA;AAAA,KAED,CAAA;AAMD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,CAAC,MAAM,CAAA;AAAA,MACd,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe;AAAA,OACjB;AAAA,MAEA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,MAAM,OAAA,EAAS;AACjC,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,SAAS,GAAA,GAAM,MAAA,CAAO,cAAA,CAAe,IAAI,CAAA,GAAI,IAAA;AACjF,QAAA,MAAM,OAAA,GAAU,CAAC,MAAA,CAAO,QAAA,CAAS,WAAA;AACjC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,OAAA;AAAA,UACA,IAAA,EAAM,IAAA,IAAQ,cAAA,CAAe,IAAA,EAAM,MAAM,CAAA,CAAE;AAAA,SAC7C;AAAA,MACF,CAAA;AAAA;AAAA;AAAA,MAKA,aAAA,CAAc,OAAO,KAAA,EAAO;AAG1B,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAI,CAAA;AAC9B,QAAA,IAAI,MAAM,OAAA,EAAS;AACjB,UAAA,IAAA,CAAK,YAAA,CAAa,aAAa,SAAS,CAAA;AACxC,UAAA,IAAI,MAAM,IAAA,EAAM;AACd,YAAA,MAAM,IAAA,GAAO,aAAA,CAAc,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAC5C,YAAA,IAAA,CAAK,YAAA,CAAa,QAAA,EAAU,IAAA,CAAK,MAAA,GAAS,KAAK,IAAI,CAAA;AAAA,UACrD;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,IAAM,SAAA,GAAY;AAAA,MAChB,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU,gBAAA;AAAA,MACV,gBAAA,EAAkB,gBAAA;AAAA,MAClB,OAAA,EAAS,QAAA;AAAA,MACT,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,OAAA,EAAS,eAAA;AAAA,MACT,aAAA,EAAe;AAAA,KACjB;AAEA,IAAA,IAAM,oBAAA,GAAuB,CAAC,GAAA,KAAQ;AACpC,MAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,MAAA,IAAI,uBAAA,CAAwB,IAAA,CAAK,IAAI,CAAA,EAAG;AACtC,QAAA,MAAM,IAAI,UAAA,CAAW,6BAAA,EAA+B,GAAG,CAAA;AAAA,MACzD;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,MAAA,GAAS,CAAC,MAAA,KAAW;AACzB,MAAA,IAAI,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACjC,MAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AAEpB,QAAA,GAAA,GAAM,MAAA,CAAO,OAAO,QAAA,EAAS;AAC7B,QAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AAEpB,UAAA,GAAA,GAAM,MAAA,CAAO,OAAO,QAAA,EAAS;AAAA,QAC/B;AAAA,MACF;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,UAAA,GAAa,CAAC,MAAA,EAAQ,IAAA,EAAM,KAAK,MAAA,KAAW;AAChD,MAAA,IAAI,QAAQ,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,IAAI,IAAI,CAAA;AAC7C,MAAA,IAAI,SAAS,IAAA,EAAM;AAGjB,QAAA,GAAA,CAAI,QAAA,GAAW,IAAA;AACf,QAAA,KAAA,GAAQ;AAAA,UACN,MAAA,EAAQ,CAAC,GAAG,CAAA;AAAA,UACZ,OAAA,EAAS,CAAA;AAAA;AAAA,UAET,cAAc,CAAC,MAAA,CAAO,MAAA,CAAO,YAAA,CAAa,IAAI,IAAI;AAAA,SACpD;AAAA,MACF;AACA,MAAA,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,IAAA,EAAM,OAAO,MAAM,CAAA;AAAA,IAC9C,CAAA;AAMA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,MAAA,CAAO,aAAA,EAAc;AACrB,QAAA,MAAM,KAAA,GAAQ,OAAO,KAAA,EAAM;AAC3B,QAAA,IAAI,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,EAAG;AAEzB,UAAA,IAAI,QAAA,KAAa,UAAA,IAAc,QAAA,KAAa,gBAAA,EAAkB;AAC5D,YAAA,KAAA,CAAM,IAAA,GAAO,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,UACnC;AACA,UAAA,OAAO,cAAA,CAAe,MAAA,CAAO,aAAA,EAAc,EAAG,UAAU,CAAA;AAAA,QAC1D;AACA,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,gCAAA,CAAA,EAAoC,KAAK,CAAA;AAAA,MAChE;AAAA,KACD,CAAA;AAMD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA,MAC7C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,IAAI,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACjC,QAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,QAAA,IAAI,uBAAA,CAAwB,IAAA,CAAK,IAAI,CAAA,EAAG;AACtC,UAAA,MAAM,IAAI,UAAA,CAAW,6BAAA,EAA+B,GAAG,CAAA;AAAA,QACzD;AAEA,QAAA,IAAI,OAAA,GAAU,CAAA;AACd,QAAA,IAAI,MAAA;AACJ,QAAA,MAAMF,WAAAA,GAAa,CAAC,EAAE,CAAA;AAEtB,QAAA,OAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,SAAS,GAAA,EAAK;AAC1C,UAAA,GAAA,GAAM,MAAA,CAAO,OAAO,QAAA,EAAS;AAC7B,UAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AAKpB,YAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,SAAS,GAAA,EAAK;AACvC,cAAA,MAAA,GAAS,MAAA,CAAO,OAAO,MAAA,EAAO;AAC9B,cAAAA,WAAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC5B,cAAA;AAAA,YACF;AAIA,YAAA,GAAA,GAAM,MAAA,CAAO,OAAO,QAAA,EAAS;AAC7B,YAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AAC7B,cAAA,MAAM,IAAI,UAAA,CAAW,CAAA,yBAAA,EAA4B,GAAA,CAAI,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,KAAM,UAAU,CAAA,EAAG;AACtC,cAAA,MAAM,IAAI,UAAA,CAAW,CAAA,iBAAA,EAAoB,GAAA,CAAI,IAAI,CAAA,cAAA,CAAgB,CAAA;AAAA,YACnE;AACA,YAAA,OAAA,EAAA;AACA,YAAAA,WAAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,UACpB,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,KAAS,KAAA,EAAO;AAC7B,YAAA,MAAM,IAAI,WAAW,6BAA6B,CAAA;AAAA,UACpD,CAAA,MAAO;AACL,YAAAA,WAAAA,CAAW,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,IAAI,CAAA;AAAA,UACnC;AAAA,QACF;AAEA,QAAA,IAAI,EAAE,MAAA,EAAO,GAAI,MAAA,CAAO,OAAO,UAAA,EAAW;AAC1C,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA,QACvB;AAEA,QAAA,IAAI,QAAA,KAAa,QAAA,IAAY,QAAA,KAAa,QAAA,EAAU;AAClD,UAAA,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA;AAC1C,UAAA,IAAI,MAAA,CAAO,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,SAAS,SAAA,EAAW;AACpD,YAAA,MAAM,IAAI,UAAA,CAAW,4BAAA,GAA+B,QAAQ,CAAA;AAAA,UAC9D;AACA,UAAA,MAAA,CAAO,OAAA,EAAQ;AAAA,QACjB;AAEA,QAAA,MAAA,CAAO,OAAO,MAAA,CAAO,GAAA;AAAA,UACnB,IAAA;AAAA,UACA,EAAE,MAAA,EAAQ,OAAA,EAAS,UAAA,EAAAA,WAAAA,EAAW;AAAA,UAC9B,QAAA,KAAa,UAAU,QAAQ;AAAA,SACjC;AACA,QAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAC/C;AAAA,KACD,CAAA;AAMD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,OAAA;AAAA,QACA;AAAA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAC1D,QAAA,MAAA,CAAO,OAAO,aAAA,EAAc;AAC5B,QAAA,MAAM,GAAA,GAAM,OAAO,MAAM,CAAA;AACzB,QAAA,UAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,GAAA,EAAK,QAAA,KAAa,eAAe,CAAA;AAC1D,QAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAC/C;AAAA,KACD,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,aAAA;AAAA,QACA;AAAA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,MAAM,IAAA,GAAO,oBAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA;AAC1D,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACtC,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACnC,QAAA,UAAA,CAAW,MAAA,EAAQ,IAAA,EAAM,GAAA,EAAK,QAAA,KAAa,kBAAkB,CAAA;AAC7D,QAAA,MAAA,CAAO,MAAA,CAAO,UAAU,GAAG,CAAA;AAC3B,QAAA,MAAA,CAAO,MAAA,CAAO,UAAU,MAAM,CAAA;AAC9B,QAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAC/C;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,cAAA,EAAgB,gBAAA,EAAkB,kBAAkB,CAAA;AAAA,MAC5D,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,IAAI,IAAA,GAAO,EAAA;AACX,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACnC,QAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,UAAA,IAAA,GAAO,oBAAA,CAAqB,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU,CAAA;AACpD,UAAA,MAAA,CAAO,OAAO,QAAA,EAAS;AAAA,QACzB,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,qBAAqB,GAAG,CAAA;AAAA,QACjC;AAEA,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,IAAI,CAAA;AAC3C,QAAA,IAAI,MAAA,IAAU,aAAa,cAAA,EAAgB;AACzC,UAAA,MAAM,IAAI,UAAA;AAAA,YACR,CAAA,aAAA,EAAgB,IAAI,CAAA,yBAAA,EAA4B,IAAI,CAAA,oBAAA;AAAA,WACtD;AAAA,QACF;AACA,QAAA,IAAI,CAAC,MAAA,IAAU,QAAA,KAAa,gBAAA,EAAkB;AAC5C,UAAA,MAAM,IAAI,UAAA;AAAA,YACR,CAAA,eAAA,EAAkB,IAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,qCAAA;AAAA,WAC9C;AAAA,QACF;AAEA,QAAA,IAAI,OAAA,GAAU,CAAA;AACd,QAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,SAAS,GAAA,EAAK;AACvC,UAAA,IAAIO,IAAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AACjC,UAAAA,IAAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AAC7B,UAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAKA,IAAAA,CAAI,IAAI,CAAA,EAAG;AAC7B,YAAA,MAAM,IAAI,UAAA,CAAW,CAAA,8BAAA,EAAiCA,IAAAA,CAAI,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,UACnE;AACA,UAAA,OAAA,GAAU,QAAA,CAASA,KAAI,IAAI,CAAA;AAC3B,UAAAA,IAAAA,GAAM,MAAA,CAAO,MAAA,CAAO,QAAA,EAAS;AAC7B,UAAA,IAAIA,IAAAA,CAAI,SAAS,GAAA,EAAK;AACpB,YAAA,MAAM,IAAI,UAAA,CAAW,CAAA,kBAAA,EAAqBA,IAAAA,CAAI,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,UACvD;AAAA,QACF;AAGA,QAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAA,CAAO,OAAO,UAAA,EAAW;AAE5C,QAAA,IAAI,EAAE,aAAa,kBAAA,IAAsB,MAAA,CAAO,OAAO,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,CAAA,EAAI;AAExE,UAAA,MAAA,CAAO,OAAO,MAAA,CAAO,GAAA;AAAA,YACnB,IAAA;AAAA,YACA,EAAE,QAAQ,OAAA;AAAQ,WACpB;AAAA,QACF;AAEA,QAAA,OAAO,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,MAE/C;AAAA,KACD,CAAA;AAGD,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,QAAA,EAAU,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,MACrC,QAAA,EAAU,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,MACrC,SAAA,EAAW,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,MACtC,SAAA,EAAW,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA,EAAE;AAAA,MACtC,QAAA,EAAU,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA,EAAE;AAAA,MACtC,QAAA,EAAU,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA,EAAE;AAAA,MACtC,SAAA,EAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA,EAAE;AAAA,MACvC,SAAA,EAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA,EAAE;AAAA,MACvC,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACpC,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACpC,SAAA,EAAW,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACrC,SAAA,EAAW,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACrC,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACnC,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACnC,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,MACpC,QAAA,EAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAE,KACtC;AAEA,IAAA,IAAM,WAAA,GAAc;AAAA,MAClB,GAAA,EAAK,GAAA;AAAA,MACL,UAAA,EAAY,UAAA;AAAA,MACZ,GAAA,EAAK,GAAA;AAAA,MACL,UAAA,EAAY,UAAA;AAAA,MACZ,KAAA,EAAO,KAAA;AAAA,MACP,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAK,QAAA;AAAA,MACL,iBAAA,EAAmB,iBAAA;AAAA,MACnB,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,SAAA;AAAA,MACX,QAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU,QAAA;AAAA,MACV,WAAA,EAAa,WAAA;AAAA,MACb,QAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,SAAA;AAAA,MACX,SAAA,EAAW,SAAA;AAAA,MACX,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU,QAAA;AAAA,MACV,cAAA,EAAgB,cAAA;AAAA,MAChB,QAAA,EAAU,QAAA;AAAA,MACV,aAAA,EAAe,aAAA;AAAA,MACf,QAAA,EAAU,QAAA;AAAA,MACV,UAAA,EAAY,UAAA;AAAA,MACZ,QAAA,EAAU;AAAA,KACZ;AAEA,IAAA,IAAM,qBAAqB,IAAI,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAC,CAAA;AAC3D,IAAA,IAAI,GAAA,CAAI,MAAA,CAAO,MAAA,CAAO,WAAW,CAAC,CAAA;AAElC,IAAA,IAAM,UAAA,uBAAiB,GAAA,CAAI;AAAA,MACzB,GAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA;AAAA,MACA,QAAA;AAAA,MACA,iBAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MACA,aAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACD,CAAA;AAGD,IAAA,IAAM,IAAA,uBAAW,GAAA,CAAI,CAAC,KAAK,QAAA,EAAU,UAAA,EAAY,SAAS,CAAC,CAAA;AAC3D,IAAA,IAAM,WAAA,GAAc,CAAA,GAAA,KAAO,GAAA,CAAI,MAAA,GAAS,MACrC,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,IAAK,cAAA,CAAe,GAAG,CAAA,IAAK,IAAA,CAAK,IAAI,GAAG,CAAA,CAAA;AAK7D,IAAA,IAAM,kBAAkB,CAAC,CAAA,EAAG,GAAA,EAAK,GAAA,EAAK,KAAK,CAAG,CAAA;AAG9C,IAAA,SAAS,cAAA,CAAe,OAAO,OAAA,EAAS;AACtC,MAAA,IAAI,MAAM,IAAA,KAAS,UAAA,IAAc,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA,EAAG;AACxD,QAAA,KAAA,GAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,MACtB;AACA,MAAA,MAAM,QAAA,GAAW,oBAAoB,KAAK,CAAA;AAC1C,MAAA,IAAI,QAAA,IAAY,UAAA,CAAW,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA,EAAG;AAG7C,QAAA,IAAI,QAAA,CAAS,IAAA,KAAS,GAAA,IAAO,QAAA,CAAS,SAAS,MAAA,EAAQ;AAAE,UAAA,QAAA,CAAS,IAAA,GAAO,QAAA;AAAA,QAAK;AAC9E,QAAA,IAAI,QAAA,CAAS,IAAA,KAAS,GAAA,IAAO,QAAA,CAAS,SAAS,MAAA,EAAQ;AAAE,UAAA,QAAA,CAAS,IAAA,GAAO,QAAA;AAAA,QAAK;AAC9E,QAAA,OAAO,QAAA;AAAA,MACT,WAAW,QAAA,EAAU;AACnB,QAAA,MAAM,IAAI,WAAW,CAAA,mBAAA,EAAsB,QAAA,CAAS,IAAI,CAAA,SAAA,EAAY,OAAA,CAAQ,QAAQ,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA;AAAA,MAChG,CAAA,MAAO;AACL,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,wBAAA,EAA2B,KAAA,CAAM,IAAI,KAAK,KAAK,CAAA;AAAA,MACtE;AAAA,IACF;AAGA,IAAA,IAAM,mBAAA,mBAAsB,IAAI,GAAA,CAAI,CAAC,GAAA,EAAU,MAAU,aAAA,EAAe,QAAA,EAAU,QAAA,EAAU,GAAG,CAAC,CAAA;AAEhG,IAAA,IAAM,WAAA,GAAc,CAAC,KAAA,EAAO,IAAA,EAAM,MAAM,UAAA,KAAe;AACrD,MAAA,MAAM7B,KAAAA,GAAO,KAAA,KAAU,GAAA,GAAM,EAAA,GAAK,KAAA;AAClC,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAASA,KAAAA,EAAM,IAAI,CAAC,CAAC,CAAA;AACtD,MAAA,IAAA,CAAK,YAAA,CAAa,SAAS,MAAM,CAAA;AACjC,MAAA,IAAA,CAAK,YAAA,CAAa,QAAQ,IAAI,CAAA;AAC9B,MAAA,IAAA,CAAK,YAAA,CAAa,UAAA,EAAY,UAAA,GAAa,MAAA,GAAS,OAAO,CAAA;AAC3D,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,WAAW;AAAA,OACxB;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,OAAO,CAAA;AAE7C,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB,IAAA,EAAM,aAAA;AAAA,UACN,IAAA,EAAM,QAAQ,MAAA,CAAO,IAAA;AAAA,UACrB,IAAA,EAAM,cAAA,CAAe,OAAA,CAAQ,QAAQ,CAAA,CAAE,IAAA;AAAA,UACvC,MAAA,EAAQ,cAAA,CAAe,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,UACzC,OAAO,KAAA,CAAM;AAAA,SACf;AACA,QAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AACzC,QAAA,IAAI,SAAA,KAAc,GAAA,IAAO,SAAA,KAAc,GAAA,EAAK;AAC1C,UAAA,OAAO,SAAA;AAAA,QACT,CAAA,MAAO;AAGL,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,UAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,CAAC,SAAA,EAAW,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,EAAC,EAAG;AAAA,WAChE;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,QAAA,MAAM,WAAW,EAAC;AAClB,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,KAAU,GAAA,GAAM,KAAK,KAAA,CAAM,KAAA;AAE/C,QAAA,QAAA,CAAS,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,KAAA,CAAM,IAAI,CAAC,CAAA;AAEzC,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAA;AAExC,QAAA,IAAI,KAAA,CAAM,MAAA,KAAW,OAAA,IAAW,KAAA,CAAM,WAAW,QAAA,EAAU;AAGzD,UAAA,IAAA,CAAK,YAAA,CAAa,SAAS,MAAM,CAAA;AAAA,QACnC,CAAA,MAAO;AAGL,UAAA,IAAA,CAAK,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,QACpC;AACA,QAAA,IAAI,mBAAA,CAAoB,IAAI,KAAK,CAAA,IAAK,MAAM,OAAA,CAAQ,OAAO,IAAI,EAAA,EAAI;AAEjE,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,MAAM,CAAA;AAAA,QACtC;AACA,QAAA,IAAA,CAAK,YAAA,CAAa,aAAa,MAAM,CAAA;AACrC,QAAA,IAAA,CAAK,aAAa,SAAA,EAAW,eAAA,CAAgB,KAAA,CAAM,IAAI,IAAI,IAAI,CAAA;AAC/D,QAAA,IAAA,CAAK,aAAa,SAAA,EAAW,eAAA,CAAgB,KAAA,CAAM,IAAI,IAAI,IAAI,CAAA;AAC/D,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,SAAS,aAAa,KAAA,EAAO;AAC3B,MAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AACf,QAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,MACjE;AAAA,IACF;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,iBAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,WAAW;AAAA,OACxB;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,iBAAA;AAAA,UACN,IAAA,EAAM,QAAQ,MAAA,CAAO,IAAA;AAAA,UACrB,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,CAAA,CAAE;AAAA,SAC1C;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,WAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,WAAW;AAAA,OACxB;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,OAAO,CAAA;AAE7C,QAAA,MAAM,SAAS,OAAA,CAAQ,MAAA;AACvB,QAAA,EAAE,MAAA,CAAO,cAAA;AACT,QAAA,IAAI,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAO,WAAW,IAAI,CAAA;AACxD,QAAA,IAAI,SAAA,GAAY,OAAO,KAAA,EAAM;AAC7B,QAAA,OAAO,SAAA,CAAU,SAAS,UAAA,EAAY;AACpC,UAAA,MAAA,CAAO,OAAA,EAAQ;AACf,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AAC9B,UAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG;AACzB,YAAA,MAAM,IAAI,UAAA,CAAW,CAAA,mBAAA,EAAsB,MAAM,CAAA,kBAAA,CAAoB,CAAA;AAAA,UACvE;AACA,UAAA,cAAA,CAAe,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAO,EAAG,EAAE,QAAA,EAAU,UAAA,EAAY,CAAA;AACrF,UAAA,IAAA,CAAK,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,MAAM,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAA;AACzD,UAAA,MAAA,CAAO,OAAA,EAAQ;AACf,UAAA,IAAA,GAAO,KAAK,MAAA,CAAO,MAAA,CAAO,gBAAgB,KAAA,EAAO,SAAA,EAAW,IAAI,CAAC,CAAA;AACjE,UAAA,SAAA,GAAY,OAAO,KAAA,EAAM;AAAA,QAC3B;AACA,QAAA,EAAE,MAAA,CAAO,cAAA;AACT,QAAA,MAAA,CAAO,MAAA,CAAO,WAAW,KAAK,CAAA;AAC9B,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,MAAA,CAAO,aAAA,IAAiB,iBAAiB,CAAA;AACtE,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,WAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA,MAAM,KAAA,CAAM,IAAA;AAAA,UACZ,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,UAAA,EAAY;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,MAAM2B,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE/C,QAAA,MAAM,WAAW,WAAA,CAAY,KAAA,CAAM,MAAM,KAAA,CAAM,IAAA,EAAM,UAAU,IAAI,CAAA;AACnE,QAAAA,MAAAA,CAAM,QAAQ,QAAQ,CAAA;AAEtB,QAAA,MAAM,YAAY,WAAA,CAAY,KAAA,CAAM,OAAO,KAAA,CAAM,IAAA,EAAM,WAAW,IAAI,CAAA;AACtE,QAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACzB,UAAA,MAAM,cAAc,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AACpD,UAAA,IAAI,WAAA,CAAY,IAAA,KAAS,OAAA,IAAW,CAAC,YAAY,WAAA,EAAa;AAC5D,YAAA,SAAA,CAAU,YAAA,CAAa,WAAA,EAAa,WAAA,CAAY,KAAK,CAAA;AAAA,UACvD;AAAA,QACF;AACA,QAAAA,MAAAA,CAAM,KAAK,SAAS,CAAA;AAEpB,QAAA,OAAO,QAAQA,MAAK,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,WAAA;AAAA,MACN,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,kBAAkB,CAAA;AAAA,MACpC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe,IAAA;AAAA,QACf,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAM,KAAM;AACxC,QAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,SAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,KAAK,KAAA,CAAM;AAAA,WACb;AAAA,QACF,CAAA,MAAA,IAAW,CAAC,MAAA,CAAO,QAAA,CAAS,kBAAA,EAAoB;AAE9C,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,MAAA;AAAA,YACN,MAAA,EAAQ,MAAA;AAAA,YACR,KAAK,KAAA,CAAM,GAAA;AAAA,YACX,IAAA,EAAM;AAAA,WACR;AAAA,QACF;AAEA,QAAA,MAAM,UAAA,GAAa,YAAY,QAAQ,CAAA;AAEvC,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAO,YAAY,KAAK,CAAA;AAC5D,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,EAAM,CAAE,IAAA;AAEjC,QAAA,IAAI,cAAc,UAAA,EAAY;AAI5B,UAAA,MAAM,IAAI,WAAW,qBAAqB,CAAA;AAAA,QAC5C;AACA,QAAA,MAAA,CAAO,OAAA,EAAQ;AAEf,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,WAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA,IAAA,EAAM,QAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACT;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,MAAMA,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE/C,QAAA,MAAM,WAAW,WAAA,CAAY,KAAA,CAAM,MAAM,KAAA,CAAM,IAAA,EAAM,UAAU,KAAK,CAAA;AACpE,QAAAA,MAAAA,CAAM,QAAQ,QAAQ,CAAA;AAEtB,QAAA,MAAM,YAAY,WAAA,CAAY,KAAA,CAAM,OAAO,KAAA,CAAM,IAAA,EAAM,WAAW,KAAK,CAAA;AACvE,QAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACzB,UAAA,MAAM,cAAc,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AACpD,UAAA,IAAI,WAAA,CAAY,IAAA,KAAS,OAAA,IAAW,CAAC,YAAY,WAAA,EAAa;AAC5D,YAAA,SAAA,CAAU,YAAA,CAAa,WAAA,EAAa,WAAA,CAAY,KAAK,CAAA;AAAA,UACvD;AAAA,QACF;AACA,QAAAA,MAAAA,CAAM,KAAK,SAAS,CAAA;AAEpB,QAAA,OAAO,QAAQA,MAAK,CAAA;AAAA,MACtB;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,WAAW;AAAA,OACxB;AAAA,MACA,OAAA,EAAS,CAAC,OAAA,EAAS,IAAA,KAAS;AAC1B,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,OAAO,CAAA;AAC7C,QAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,CAAO,cAAA,EAAgB;AAClC,UAAA,MAAM,IAAI,UAAA,CAAW,mCAAA,EAAqC,KAAK,CAAA;AAAA,QACjE;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,QAAQ,MAAA,CAAO,IAAA;AAAA,UACrB,OAAO,KAAA,CAAM;AAAA,SACf;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,QAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,MAAM,IAAI,CAAA;AACjD,QAAA,MAAM,aAAa,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAQ,CAAC,CAAA;AAChD,QAAA,UAAA,CAAW,YAAA,CAAa,YAAY,MAAM,CAAA;AAC1C,QAAA,UAAA,CAAW,YAAA,CAAa,QAAQ,OAAO,CAAA;AACvC,QAAA,IAAI,QAAA,CAAS,SAAS,GAAA,EAAK;AAGzB,UAAA,UAAA,CAAW,YAAA,CAAa,UAAU,QAAQ,CAAA;AAC1C,UAAA,UAAA,CAAW,YAAA,CAAa,UAAU,QAAQ,CAAA;AAAA,QAC5C;AACA,QAAA,OAAO,UAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,IAAM,OAAA,GAAU,CAAC,SAAA,EAAW,aAAA,EAAe,YAAY,CAAA;AAEvD,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,MAAM,MAAM,OAAA,CAAQ,QAAA,CAAS,KAAA,CAAM,KAAK,IAAI,MAAA,GAAS,UAAA;AACrD,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,GAAA,EAAK,CAAC,aAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AAChE,MAAA,QAAQ,MAAM,KAAA;AAAO,QACnB,KAAK,YAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,KAAK,CAAA;AACnC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,cAAc,CAAA;AAChC,UAAA;AAAA,QACF,KAAK,aAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,QAAQ,CAAA;AACtC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,eAAe,CAAA;AACjC,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,kBAAkB,CAAA;AAChD,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,YAAA,EAAc,UAAU,CAAC,CAAC,CAAA;AACvE,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,oBAAoB,CAAA;AAClD,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAC,CAAA;AACzE,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,kBAAkB,CAAA;AAChD,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,YAAA,EAAc,MAAM,CAAC,CAAC,CAAA;AACnE,UAAA;AAAA,QACF,KAAK,WAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,qCAAqC,CAAA;AACnE,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,YAAA,EAAc,aAAa,CAAC,CAAC,CAAA;AAC1E,UAAA;AAAA;AAAA,QAEF,KAAK,WAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,SAAS,CAAA;AACvC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,aAAa,CAAA;AAC/B,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,aAAa,CAAC,CAAC,CAAA;AAC5D,UAAA;AAAA,QACF,KAAK,SAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,aAAa,CAAA;AAC3C,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,eAAe,CAAA;AACjC,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,cAAc,CAAC,CAAC,CAAA;AAC7D,UAAA;AAAA,QACF,KAAK,eAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,QAAQ,CAAA;AACtC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,YAAY,CAAA;AAC9B,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,YAAY,CAAC,CAAC,CAAA;AAC3D,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,WAAW,CAAA;AACzC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,WAAW,CAAA;AAC7B,UAAA;AAAA,QACF,KAAK,SAAA;AAEH,UAAA,IAAA,CAAK,MAAM,OAAA,GAAU,KAAA;AACrB,UAAA,IAAA,CAAK,MAAM,MAAA,GAAS,WAAA;AACpB,UAAA,IAAA,CAAK,YAAA,CAAa,eAAe,GAAG,CAAA;AACpC,UAAA,IAAA,CAAK,YAAA,CAAa,gBAAgB,MAAM,CAAA;AACxC,UAAA;AAAA,QACF,KAAK,QAAA;AACH,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,KAAK,CAAA;AACnC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,UAAU,CAAA;AAC5B,UAAA;AAAA,QACF,KAAK,aAAA;AAAA,QACL,KAAK,YAAA,EAAc;AAEjB,UAAA,IAAA,CAAK,MAAM,OAAA,GAAU,OAAA;AACrB,UAAA,IAAI,KAAA,CAAM,UAAU,aAAA,EAAe;AACjC,YAAA,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,iBAAA,GAAoB,MAAA,CAAO,MAAM,WAAW,CAAA;AAAA,UAClE;AACA,UAAA;AAAA,QACF;AAAA;AAEF,MAAA,IAAI,MAAM,eAAA,EAAiB;AACzB,QAAA,IAAA,CAAK,YAAA,CAAa,gBAAA,EAAkB,KAAA,CAAM,eAAe,CAAA;AAAA,MAC3D;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,MAAM;AAAA,OACjC;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG,MAAM,OAAA,EAAS;AAC3C,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA,IAAK,eAAe,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC9D,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC5C,UAAA,KAAA,GAAQ,aAAA,CAAc,OAAO,IAAI,CAAA;AAAA,QACnC,CAAA,MAAO;AACL,UAAA,KAAA,GAAQ,aAAA,CAAc,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAA,QACnF;AACA,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP,eAAA,EAAiB,KAAA;AAAA,UACjB;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAa,CAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,KAAA,EAAO,KAAA,EAAO,OAAO,MAAM;AAAA,OACxC;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG,MAAM,OAAA,EAAS;AAC3C,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA,IAAK,eAAe,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC9D,QAAA,IAAI,WAAA,GAAc,EAAA;AAClB,QAAA,IAAI,eAAA;AACJ,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAM,aAAa,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAClD,UAAA,MAAM,iBAAiB,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AACtD,UAAA,WAAA,GAAc,aAAA,CAAc,OAAO,UAAU,CAAA;AAC7C,UAAA,eAAA,GAAkB,aAAA,CAAc,OAAO,cAAc,CAAA;AAAA,QACvD,CAAA,MAAO;AACL,UAAA,WAAA,GAAc,aAAA,CAAc,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AACvF,UAAA,eAAA,GAAkB,aAAA,CAAc,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAA,QAC7F;AACA,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP,eAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP,IAAA,EAAM,KAAK,CAAC;AAAA,SACd;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO;AAAA,QAAC,QAAA;AAAA,QAAU,UAAA;AAAA,QAAY,WAAA;AAAA,QAAa,WAAA;AAAA,QAAa,YAAA;AAAA,QACtD,SAAA;AAAA,QAAW,WAAA;AAAA,QAAa;AAAA,OAAS;AAAA,MACnC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAa,CAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,eAAe,CAAA;AAAA,MACvB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,iBAAA,EAAmB,IAAA;AAAA,QACnB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAID,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAA,EAAW,OAAO,CAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM;AAAA,OACnB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,SAAA,GAAY,KAAK,CAAC,CAAA;AACxB,QAAA,IAAI,SAAA,CAAU,SAAS,UAAA,EAAY;AACjC,UAAA,MAAM,IAAI,UAAA,CAAW,0BAAA,EAA4B,SAAS,CAAA;AAAA,QAC5D;AACA,QAAA,IAAI,OAAA,GAAU,EAAA;AACd,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,UAAU,IAAA,CAAK,MAAA,EAAQ,EAAE,CAAA,EAAG;AAC9C,UAAA,OAAA,IAAW,eAAe,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,EAAG,SAAS,CAAA,CAAE,IAAA;AAAA,QAC1D;AAEA,QAAA,IAAI,aAAa,SAAA,EAAW;AAE1B,UAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,YAAA,EAAc,OAAQ,CAAA,EAAG;AACjE,YAAA,MAAM,IAAI,UAAA,CAAW,uBAAA,GAA0B,OAAA,EAAS,SAAS,CAAA;AAAA,UACnE;AAGA,UAAA,MAAM,GAAA,GAAM,aAAa,OAAO,CAAA;AAChC,UAAA,MAAM,EAAE,IAAA,EAAAG,KAAAA,EAAM,OAAA,EAAQ,GAAI,OAAO,cAAA,CAAe,UAAA,GAAa,OAAA,GAAU,GAAA,EAAK,GAAG,CAAA;AAC/E,UAAA,MAAM,OAAA,GAAU;AAAA,YACd,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,OAAA;AAAA,YACA;AAAA,WACF;AACA,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,OAAA,EAASA,OAAM,OAAO,CAAA;AACjD,UAAA,MAAA,CAAO,MAAA,CAAO,SAAS,KAAK,CAAA;AAC5B,UAAA,MAAM,eAAe,MAAA,CAAO,SAAA;AAC5B,UAAA,MAAM,GAAA,GAAM,cAAA,CAAe,MAAA,CAAO,aAAA,IAAiB,aAAa,CAAA;AAChE,UAAA,IAAI,GAAA,CAAI,SAAS,OAAA,EAAS;AACxB,YAAA,MAAM,IAAI,UAAA;AAAA,cACR,CAAA,kBAAA,EAAqB,OAAO,CAAA,mBAAA,EAAsB,GAAA,CAAI,IAAI,CAAA,CAAA,CAAA;AAAA,cAC1D;AAAA,aACF;AAAA,UACF;AACA,UAAA,OAAO,MAAA;AAAA,QACT;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,aAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,OAAA;AAAA,UACN;AAAA,SACF;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM;AAAA,OACnB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,KAAK,CAAC;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,OAAO,IAAI,SAAS,MAAM,CAAA;AAAA,MAC5B;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAa,CAAA;AAAA,MACrB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AAClB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO;AAAA,SACf;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,OAAO,IAAI,SAAS,MAAM,CAAA;AAAA,MAC5B;AAAA,KACD,CAAA;AAQD,IAAA,IAAM,MAAA,GAAS,OAAO,MAAA,CAAO;AAAA,MAC3B,CAAA,EAAG,IAAA;AAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACJ,CAAA;AAED,IAAA,IAAM,IAAA,GAAO,OAAO,MAAA,CAAO;AAAA,MACzB,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACJ,CAAA;AAED,IAAA,IAAM,GAAA,GAAM,OAAO,MAAA,CAAO;AAAA,MACxB,CAAA,EAAG,IAAA;AAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG,IAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACJ,CAAA;AAED,IAAA,IAAM,IAAA,GAAO,OAAO,MAAA,CAAO;AAAA,MACzB,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU;AAAA;AAAA,KACX,CAAA;AAED,IAAA,IAAM,UAAA,GAAa,OAAO,MAAA,CAAO;AAAA,MAC/B,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU;AAAA;AAAA,KACX,CAAA;AAED,IAAA,IAAM,MAAA,GAAS,OAAO,MAAA,CAAO;AAAA,MAC3B,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU;AAAA;AAAA,KACX,CAAA;AAED,IAAA,IAAM,IAAA,GAAO,OAAO,MAAA,CAAO;AAAA,MACzB,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU,MAAA;AAAA;AAAA,MACV,QAAA,EAAU;AAAA;AAAA,KACX,CAAA;AAGD,IAAA,IAAM,MAAA,GAAS,OAAO,MAAA,CAAO;AAAA,MAC3B,cAAA,EAAgB;AAAA;AAAA,QACd,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,MAAA,CAAO,EAAE,CAAA,IAAK,MAAA;AAAA,QAAQ,CAAA;AAAA,QAC/D,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,IAAA,CAAK,EAAE,CAAA,IAAK,MAAA;AAAA,QAAQ,CAAA;AAAA,QAC7D,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,GAAA,CAAI,EAAE,CAAA,IAAK,MAAA;AAAA,QAAQ,CAAA;AAAA,QAC5D,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ;AAAA,OACnD;AAAA,MACA,cAAA,EAAgB;AAAA;AAAA,QACd,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,EAAA,KAAO,MAAM,IAAA,GAAS,MAAA;AAAA,QAAQ,CAAA;AAAA,QACvE,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,MAAA,CAAO,EAAE,CAAA,IAAK,MAAA;AAAA,QAAQ,CAAA;AAAA,QAC/D,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ;AAAA,OACnD;AAAA,MACA,cAAA,EAAgB;AAAA;AAAA,QACd,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA;AAAA,QAEjD,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA;AAAA,QAE3C,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE;AAAA,OAC7C;AAAA,MACA,cAAA,EAAgB;AAAA;AAAA,QACd,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,EAAA,KAAO,WAAW,MAAA,GAAU,MAAA;AAAA,QAAQ,CAAA;AAAA,QAC7E,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA;AAAA,QAE3C,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE;AAAA,OAC7C;AAAA,MACA,QAAA,EAAU;AAAA;AAAA,QACR,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAQ,IAAA,CAAK,EAAE,CAAA,IAAK,GAAA;AAAA,QAAI,CAAA;AAAA,QAC1D,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,UAAA,CAAW,EAAE,CAAA,IAAK,EAAA;AAAA,QAAK,CAAA;AAAA,QAChE,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA,CAAO,EAAE,CAAA,IAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAC5D,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA,CAAO,EAAE,CAAA,IAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAC5D,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,IAAA,CAAK,EAAE,CAAA,IAAK,GAAA;AAAA,QAAK,CAAA;AAAA,QAC1D,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE;AAAA,OAC7C;AAAA,MACA,OAAA,EAAS;AAAA;AAAA,QACP,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,QAAQ,CAAA,EAAA,KAAwB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,UAAU,CAAA,EAAA,KAAsB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,eAAe,CAAA,EAAA,KAAiB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,WAAW,CAAA,EAAA,KAAqB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,gBAAgB,CAAA,EAAA,KAAgB;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,iBAAiB,CAAA,EAAA,KAAe;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,cAAc,CAAA,EAAA,KAAkB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,mBAAmB,CAAA,EAAA,KAAa;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ,CAAA;AAAA,QACjD,qBAAqB,CAAA,EAAA,KAAW;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,0BAA0B,CAAA,EAAA,KAAM;AAAE,UAAA,OAAO,CAAA;AAAA,QAAE,CAAA;AAAA,QAC3C,aAAa,CAAA,EAAA,KAAmB;AAAE,UAAA,OAAO,MAAA;AAAA,QAAQ;AAAA;AACnD,KACD,CAAA;AAED,IAAA,IAAM,WAAA,GAAc,CAAC,EAAA,EAAI,OAAA,KAAY;AACnC,MAAA,MAAM,SAAA,GAAY,EAAA,CAAG,WAAA,CAAY,CAAC,CAAA;AAClC,MAAA,MAAM,KAAA,GAAQ,EAAA,GAAO,SAAA,IAAa,SAAA,GAAY,KAC1C,gBAAA,GACA,EAAA,GAAO,SAAA,IAAa,SAAA,GAAY,MAChC,gBAAA,GACC,GAAA,GAAS,SAAA,IAAa,SAAA,GAAY,MACnC,gBAAA,GACA,GAAA,GAAQ,SAAA,IAAa,SAAA,GAAY,OAAS,EAAA,KAAO,QAAA,GACjD,gBAAA,GACA,MAAA,GAAU,aAAa,SAAA,GAAY,MAAA,IAAY,IAAA,CAAK,EAAE,IACtD,UAAA,GACC,EAAA,GAAO,SAAA,IAAa,SAAA,GAAa,KAClC,SAAA,GACA,OAAA;AACJ,MAAA,OAAO,KAAA,KAAU,OAAA,GACb,EAAA,GACA,MAAA,CAAO,aAAA,CAAc,SAAA,GAAY,MAAA,CAAO,KAAK,CAAA,CAAE,OAAO,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,IACjE,CAAA;AAEA,IAAA,IAAM,SAAA,GAAY,OAAO,MAAA,CAAO;AAAA,MAC9B,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG,GAAA;AAAA,MACH,CAAA,EAAG,QAAA;AAAA,MACH,CAAA,EAAG;AAAA,KACJ,CAAA;AAED,IAAA,IAAM,YAAA,GAAe,CAAC,QAAA,EAAU,QAAQ,CAAA;AAExC,IAAA,IAAM,kBAAA,GAAqB,CAAC,KAAA,EAAO,IAAA,KAAS;AAC1C,MAAA,IAAI,CAAC,YAAA,CAAa,QAAA,CAAS,IAAI,CAAA,IAAK,CAAC,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,SAAS,UAAA,IACnE,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EAAG;AAChC,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,IAAI,MAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,SAAS,SAAA,EAAW;AAAE,QAAA,OAAO,KAAA;AAAA,MAAM;AAC1D,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAC/C,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA;AACzC,QAAA,IAAI,EAAE,aAAA,KAAmB,SAAA,IACxB,aAAA,KAAmB,SAAA,IAAa,CAAC,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,CAAA,EAAK;AAClE,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA;AACpC,MAAA,MAAM,SAAA,GAAY,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAEnD,MAAA,IAAI,SAAA,CAAU,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAAE,QAAA,OAAO,SAAA;AAAA,MAAU;AACxD,MAAA,IAAI,IAAA,KAAS,YAAA,IAAgB,CAAC,IAAA,EAAM,SAAA,EAAW,MAAM,CAAA,CAAE,QAAA,CAAS,SAAA,CAAU,IAAI,CAAA,EAAG;AAC/E,QAAA,SAAA,CAAU,MAAM,UAAA,GAAa,MAAA;AAC7B,QAAA,OAAO,SAAA;AAAA,MACT;AAEA,MAAA,IAAI,kBAAA,CAAmB,KAAA,EAAO,IAAI,CAAA,EAAG;AAEnC,QAAA,MAAMC,MAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,GACzC,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,GAChC,SAAA,CAAU,SAAS,CAAC,CAAA;AACxB,QAAA,OAAOA,IAAG,UAAA,CAAW,WAAA;AACrB,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAClD,UAAAA,GAAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,IAAQ,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,WACrD,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,GAC9C,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA;AAAA,QACxC;AACA,QAAA,IAAI,SAAS,QAAA,EAAU;AAGrB,UAAAA,GAAAA,CAAG,SAAS,CAAC,CAAA,CAAE,OAAOA,GAAAA,CAAG,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,EAAE,CAAA,CAC/C,IAAI,CAAA,CAAA,KAAK,WAAA,CAAY,GAAG,QAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAC7C,UAAA,OAAOA,GAAAA;AAAA,QACT;AAEA,QAAA,MAAM,UAAU,IAAI,QAAA,CAAS,SAAA,EAAW,CAACA,GAAE,CAAC,CAAA;AAC5C,QAAA,OAAA,CAAQ,YAAA,CAAa,UAAU,GAAG,CAAA;AAClC,QAAA,OAAO,OAAA;AAAA,MACT;AACA,MAAA,IAAI,cAAA,GAAiB,SAAA,CAAU,QAAA,CAAS,CAAC,EAAE,IAAA,KAAS,IAAA;AACpD,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAClD,QAAA,IAAI,UAAU,QAAA,CAAS,CAAC,EAAE,IAAA,KAAS,IAAA,IAAQ,SAAS,YAAA,EAAc;AAChE,UAAA,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,UAAA,GAAa,MAAA;AAAA,QAC3C;AACA,QAAA,IAAI,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,IAAA,EAAM;AAAE,UAAA,cAAA,GAAiB,KAAA;AAAA,QAAO;AACnE,QAAA,MAAM,YAAA,GAAe,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,UAAA,IACzC,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,UAAA,CAAW,WAAA,IAAe,EAAA;AAClD,QAAA,IAAI,iBAAiB,QAAA,EAAU;AAAE,UAAA,cAAA,GAAiB,KAAA;AAAA,QAAO;AAAA,MAC3D;AACA,MAAA,IAAI,CAAC,cAAA,EAAgB;AAAE,QAAA,OAAO,SAAA;AAAA,MAAU;AAExC,MAAA,MAAM,EAAA,GAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA;AAC/B,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AAClD,QAAA,EAAA,CAAG,QAAA,CAAS,KAAK,SAAA,CAAU,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,MACpD;AACA,MAAA,IAAI,GAAG,UAAA,CAAW,WAAA,IAAe,EAAA,CAAG,UAAA,CAAW,gBAAgB,QAAA,EAAU;AAMvE,QAAA,MAAM,QAAQ,IAAI,QAAA,CAAS,SAAS,IAAI,QAAA,CAAS,QAAQ,CAAC,CAAA;AAC1D,QAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,KAAA,EAAO,EAAE,CAAC,CAAA;AAAA,MACzC;AACA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,WAAA,GAAc;AAAA,MAClB,OAAA,EAAS,UAAA;AAAA,MACT,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO;AAAA;AAAA,QAEL,UAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA;AAAA,QAGA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA;AAAA,QAGA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAC,CAAA;AACtC,QAAA,IAAI,IAAA,GAAO,QAAA;AACX,QAAA,IAAI,QAAQ,WAAA,EAAa;AACvB,UAAA,IAAA,GAAO,YAAY,IAAI,CAAA;AAAA,QACzB;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAAA,UAClB;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,OAAO,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAAA,MACvD,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,QAAQ,QAAA,EAAU,gBAAA,IAAoB,IAAA,KAAS;AACzD,QAAA,MAAM,EAAE,MAAK,GAAI,MAAA;AACjB,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAM,kBAAkB,IAAI,CAAA;AAChE,QAAA,MAAM,SAAA,GAAY,CAAA,IAAA,EAAO,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAE1C,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,IAAA;AAAA,UACA,IAAA,EAAM,SAAA;AAAA,UACN,IAAA,EAAM;AAAA,YACJ,IAAA,EAAM,UAAA;AAAA,YACN,MAAM,MAAA,CAAO,IAAA;AAAA,YACb;AAAA;AACF,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,IAAM,SAAA,GAAY,CAAC,SAAA,EAAW,MAAA,EAAQ,UAAU,cAAc,CAAA;AAC9D,IAAA,IAAM,WAAA,GAAc,EAAE,IAAA,EAAM,EAAA,EAAI,OAAA,EAAS,CAAA,EAAG,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,YAAA,EAAc,CAAA,EAAE;AAEhF,IAAA,IAAM,WAAA,GAAc,CAAC,YAAA,EAAc,aAAA,KAAkB;AAGnD,MAAA,IAAI,KAAA,GAAQ,aAAA;AACZ,MAAA,IAAI,iBAAiB,SAAA,EAAW;AAG9B,QAAA,MAAM,UAAU,KAAA,CAAM,KAAA,IAAS,WAAW,MAAA,GAAS,UAAA,CAAW,OAAO,UAAA,CAAW,OAAA;AAChF,QAAA,KAAA,GAAQ,KAAA,CAAM,UAAU,OAAO,CAAA;AAAA,MACjC,WAAW,YAAA,KAAiB,MAAA,IAC1B,KAAA,CAAM,KAAA,KAAU,WAAW,OAAA,EAAS;AAEpC,QAAA,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,UAAA,CAAW,IAAI,CAAA;AAAA,MACzC,CAAA,MAAA,IAAW,iBAAiB,MAAA,EAAQ;AAClC,QAAA,KAAA,GAAQ,MAAM,cAAA,EAAe;AAAA,MAC/B,CAAA,MAAA,IAAW,iBAAiB,QAAA,EAAU;AACpC,QAAA,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,UAAA,CAAW,MAAM,CAAA;AAAA,MAC3C,CAAA,MAAA,IAAW,iBAAiB,cAAA,EAAgB;AAC1C,QAAA,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,UAAA,CAAW,YAAY,CAAA;AAAA,MACjD;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,KAAA,GAAQ,WAAA,CAAY,KAAA,CAAM,WAAA,EAAa,KAAK,CAAA;AAK5C,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAC7C,MAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAC7C,MAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,QAAA,KAAA,CAAM,MAAM,SAAA,GAAY,GAAA;AACxB,QAAA,KAAA,CAAM,YAAA,CAAa,eAAe,GAAG,CAAA;AACrC,QAAA,KAAA,CAAM,MAAM,SAAA,GAAY,GAAA;AACxB,QAAA,KAAA,CAAM,YAAA,CAAa,eAAe,GAAG,CAAA;AAAA,MACvC;AAEA,MAAA,IAAI,OAAO,IAAI,QAAA,CAAS,SAAS,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAE/C,MAAA,IAAI,CAAC,MAAM,UAAA,EAAY;AACrB,QAAA,IAAA,CAAK,YAAA,CAAa,iBAAiB,KAAK,CAAA;AAAA,MAC1C,CAAA,MAAA,IAAW,MAAM,OAAA,EAAS;AACxB,QAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS,KAAK,CAAA;AACpD,QAAA,IAAA,CAAK,YAAA,CAAa,eAAA,EAAiB,SAAA,CAAU,MAAA,GAAS,UAAU,IAAI,CAAA;AAAA,MACtE;AAEA,MAAA,IAAI,KAAA,CAAM,SAAA,IAAa,IAAA,IAAQ,KAAA,CAAM,cAAc,IAAA,EAAM;AACvD,QAAA,MAAM,aAAa,EAAC;AAEpB,QAAA,IAAI,KAAA,CAAM,aAAa,IAAA,EAAM;AAC3B,UAAA,MAAM,MAAA,GAAS,IAAI,QAAA,CAAS,IAAA,EAAM;AAAA,YAChC,IAAI,QAAA,CAAS,KAAA,CAAM,UAAU,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC;AAAA,WAC/C,CAAA;AACD,UAAA,MAAA,CAAO,YAAA,CAAa,SAAS,MAAM,CAAA;AACnC,UAAA,UAAA,CAAW,KAAK,MAAM,CAAA;AAAA,QACxB;AAEA,QAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAEpB,QAAA,IAAI,KAAA,CAAM,cAAc,IAAA,EAAM;AAC5B,UAAA,MAAM,OAAA,GAAU,IAAI,QAAA,CAAS,IAAA,EAAM;AAAA,YACjC,IAAI,QAAA,CAAS,KAAA,CAAM,WAAW,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC;AAAA,WAChD,CAAA;AACD,UAAA,OAAA,CAAQ,YAAA,CAAa,SAAS,MAAM,CAAA;AACpC,UAAA,UAAA,CAAW,KAAK,OAAO,CAAA;AAAA,QACzB;AAEA,QAAA,IAAA,GAAO,QAAQ,UAAU,CAAA;AAAA,MAC3B;AAEA,MAAA,IAAI,KAAA,CAAM,gBAAgB,MAAA,EAAQ;AAChC,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,IAAI,CAAC,CAAA;AACpC,QAAA,IAAA,CAAK,aAAa,cAAA,EAAgB,MAAA,CAAO,KAAA,CAAM,WAAA,KAAgB,SAAS,CAAC,CAAA;AACzE,QAAA,IAAA,CAAK,YAAA,CAAa,aAAA,EAAe,WAAA,CAAY,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA,MACjE;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,QAAA,IAAI,UAAA,GAAa,KAAA;AACjB,QAAA,IAAI,SAAA,GAAY,IAAA;AAChB,QAAA,IAAI,UAAA,GAAa,IAAA;AACjB,QAAA,IAAIV,YAAAA,GAAc,MAAA;AAElB,QAAA,QAAQ,QAAA;AAAU,UAChB,KAAK,SAAA;AAAA,UACL,KAAK,SAAA;AAAA,UACL,KAAK,QAAA;AAAA,UACL,KAAK,SAAA;AACH,YAAA,UAAA,GAAa,IAAA;AACb,YAAA;AAAA,UACF,KAAK,cAAA;AACH,YAAA,UAAA,GAAa,KAAA;AACb,YAAA;AAAA,UACF,KAAK,UAAA;AAAA,UACL,KAAK,SAAA;AAAA,UACL,KAAK,UAAA;AACH,YAAA,SAAA,GAAY,GAAA;AACZ,YAAA,UAAA,GAAa,GAAA;AACb,YAAA;AAAA,UACF,KAAK,eAAA;AACH,YAAA,SAAA,GAAY,KAAA;AACZ,YAAA,UAAA,GAAa,KAAA;AACb,YAAA;AAAA,UACF,KAAK,eAAA;AACH,YAAA,SAAA,GAAY,GAAA;AACZ,YAAA,UAAA,GAAa,GAAA;AACb,YAAA;AAAA,UACF;AACE,YAAA,MAAM,IAAI,MAAM,8BAA8B,CAAA;AAAA;AAGlD,QAAA,IAAI,QAAA,KAAa,SAAA,IAAa,QAAA,CAAS,UAAA,CAAW,KAAK,CAAA,EAAG;AACxD,UAAAA,YAAAA,GAAc,SAAA;AAAA,QAChB,CAAA,MAAA,IAAW,QAAA,CAAS,UAAA,CAAW,KAAK,CAAA,EAAG;AACrC,UAAAA,YAAAA,GAAc,MAAA;AAAA,QAChB;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAA,EAAW,KAAA;AAAA,UACX,KAAA;AAAA,UACA,KAAA;AAAA,UACA,UAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA,EAAAA,YAAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACX;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAID,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,OAAO,CAAC,QAAA,EAAU,UAAA,EAAY,QAAA,EAAU,WAAW,SAAS,CAAA;AAAA,MAC5D,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAU,OAAM,EAAG;AACnC,QAAA,IAAI,WAAA;AACJ,QAAA,QAAQ,QAAA;AAAU,UAChB,KAAK,QAAA;AACH,YAAA,WAAA,GAAc,QAAA;AACd,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,WAAA,GAAc,SAAA;AACd,YAAA;AAAA,UACF,KAAK,QAAA;AACH,YAAA,WAAA,GAAc,cAAA;AACd,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,WAAA,GAAc,eAAA;AACd,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,WAAA,GAAc,eAAA;AACd,YAAA;AAAA,UACF;AACE,YAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA;AAExD,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,WAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,IAAM,cAAA,GAAiB,SAAS,WAAA,EAAa;AAC3C,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,QAAA,KAAA,GAAQ,WAAA;AACR,QAAA,KAAA,GAAQ,KAAA,KAAU,MAAM,IAAA,GAAO,KAAA;AAAA,MACjC;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,iBAAA,EAAmB,IAAA;AAAA,QACnB,UAAU,CAAC,MAAA,EAAQ,QAAQ,MAAA,EAAQ,MAAA,EAAQ,QAAQ,MAAM;AAAA,OAC3D;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AAGpB,QAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAC,CAAA;AAC1C,QAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,KAAS,MAAA,IAAU,QAAA,CAAS,WAAW,MAAA,GAC9D,cAAA,CAAe,QAAA,CAAS,IAAI,CAAA,GAC5B,IAAA;AACJ,QAAA,MAAM,SAAA,GAAY,iBAAA,CAAkB,IAAA,CAAK,CAAC,CAAC,CAAA;AAC3C,QAAA,MAAM,UAAA,GACJ,SAAA,CAAU,IAAA,KAAS,MAAA,IAAU,SAAA,CAAU,WAAW,OAAA,GAC9C,cAAA,CAAe,SAAA,CAAU,IAAI,CAAA,GAC7B,IAAA;AAEN,QAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,MAAM,CAAA;AAC9C,QAAA,IAAI,UAAA;AACJ,QAAA,IAAI,OAAA,GAAU,IAAA;AACd,QAAA,IAAI,QAAQ,OAAA,EAAS;AAInB,UAAA,UAAA,GAAa,IAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,OAAA,CAAQ,KAAA;AAClB,UAAA,UAAA,GAAa,QAAQ,MAAA,GAAS,CAAA;AAAA,QAChC;AAGA,QAAA,IAAIA,YAAAA,GAAc,MAAA;AAClB,QAAA,IAAI,IAAA,GAAO,KAAK,CAAC,CAAA;AACjB,QAAA,IAAI,IAAA,CAAK,SAAS,UAAA,EAAY;AAC5B,UAAA,IAAI,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACxB,YAAA,MAAM,UAAU,cAAA,CAAe,IAAA,CAAK,IAAA,CAAK,CAAC,GAAG,SAAS,CAAA;AACtD,YAAAA,YAAAA,GAAc,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAC,CAAA;AAAA,UAC9C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,cAAA,CAAe,MAAM,SAAS,CAAA;AACrC,UAAAA,YAAAA,GAAc,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,QAC3C;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAA,EAAW,KAAA;AAAA,UACX,UAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA;AAAA,UACA,UAAA;AAAA,UACA,WAAA,EAAAA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,KAAA,EAAO;AAAA,OACT;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,EAAM;AACzC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,WAAA,EAAa,eAAA;AAAA,UACb,SAAS,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA;AAAA,UACzC;AAAA,SACF;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,eAAe,CAAA;AAAA,MACvB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM;AAAA,OACnC;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,QAAA,MAAM,OAAA,GAAU,OAAO,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,EAAE,OAAO,CAAA;AAC/D,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AAEpB,QAAA,MAAM,UAAA,GAAa,QAAQ,MAAA,GAAS,CAAA;AACpC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAA,EAAW,KAAA;AAAA,UACX,UAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA,EAAW,IAAA;AAAA,UACX,UAAA,EAAY,IAAA;AAAA,UACZ,WAAA,EAAa;AAAA,SACf;AAAA,MACF,CAAA;AAAA,MAEA,aAAA,EAAe;AAAA,KAChB,CAAA;AAMD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,iBAAA,EAAmB,IAAA;AAAA,QACnB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC;AAAA,SAC3B;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,UAAA,CAAW,IAAI,CAAA;AAChD,QAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AACpD,QAAA,OAAO,gBAAgB,IAAI,CAAA;AAAA,MAC7B;AAAA,KACD,CAAA;AAED,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,MAAMW,WAAAA,GAAa,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AACzC,MAAAA,WAAAA,CAAW,KAAA,CAAM,YAAY,CAAA,GAAI,CAAA;AACjC,MAAA,OAAO,IAAI,QAAA,CAAS,KAAA,CAAM,MAAA,GAAS,UAAU,QAAA,EAAU;AAAA,QACrD,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAAA,QAC9BA;AAAA,OACD,CAAA;AAAA,IACH,CAAA;AAGA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,CAAC,aAAA,EAAe,cAAA,EAAgB,iBAAiB,gBAAgB,CAAA;AAAA,MACxE,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,cAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,QAAA;AAAA,UACP,MAAA,EAAQ,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA;AAAA,UAC/B,IAAA,EAAM,KAAK,CAAC;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAA,EAAW,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAAA,MAC9C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,KAAA,EAAO,UAAU,CAAA;AAAA,QAC5B,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,QAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,KAAS;AAC9C,QAAA,MAAM,QAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAC7C,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AAEnB,QAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,UAAA,EAAa,QAAQ,gCAAgC,KAAK,CAAA;AAAA,QACjF;AAEA,QAAA,IAAI,YAAA;AACJ,QAAA,MAAM,aAAa,EAAC;AAEpB,QAAA,QAAQ,QAAA;AAAU,UAChB,KAAK,SAAA;AACH,YAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AACnB,YAAA,YAAA,GAAe;AAAA,cACb,OAAA,EAAS,SAAA;AAAA,cACT,KAAA,EAAO;AAAA,aACT;AACA,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,UAAA,CAAW,EAAA,GAAK,KAAA;AAChB,YAAA,YAAA,GAAe;AAAA,cACb,OAAA,EAAS,MAAA;AAAA,cACT,EAAA,EAAI;AAAA,aACN;AACA,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AACnB,YAAA,YAAA,GAAe;AAAA,cACb,OAAA,EAAS,SAAA;AAAA,cACT,KAAA,EAAO;AAAA,aACT;AACA,YAAA;AAAA,UACF,KAAK,QAAA,EAAU;AACb,YAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAC5B,YAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,cAAA,MAAM,MAAA,GAAS,IAAA,CAAK,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAChC,cAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,gBAAA,MAAM,IAAI,WAAW,oCAAoC,CAAA;AAAA,cAC3D;AACA,cAAA,UAAA,CAAW,OAAA,GAAU,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAK;AAAA,YAC1D;AAEA,YAAA,YAAA,GAAe;AAAA,cACb,OAAA,EAAS,QAAA;AAAA,cACT;AAAA,aACF;AACA,YAAA;AAAA,UACF;AAAA,UACA;AACE,YAAA,MAAM,IAAI,MAAM,2BAA2B,CAAA;AAAA;AAG/C,QAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,YAAY,CAAA,EAAG;AAC5C,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,UAAA,EAAa,QAAQ,oBAAoB,KAAK,CAAA;AAAA,QACrE;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,UAAA;AAAA,UACA,IAAA,EAAM,YAAY,IAAI;AAAA,SACxB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,OAAA,GAAW,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAErD,QAAA,MAAM,UAAU,EAAC;AACjB,QAAA,IAAI,KAAA,CAAM,WAAW,KAAA,EAAO;AAC1B,UAAA,OAAA,CAAQ,IAAA,CAAK,GAAG,KAAA,CAAM,UAAA,CAAW,MAAM,IAAA,EAAK,CAAE,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QAC5D;AACA,QAAA,OAAA,CAAQ,OAAA,GAAU,OAAA;AAElB,QAAA,KAAA,MAAW,IAAA,IAAQ,MAAM,UAAA,EAAY;AACnC,UAAA,IAAI,IAAA,KAAS,WAAW,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,KAAA,CAAM,UAAA,EAAY,IAAI,CAAA,EAAG;AACpF,YAAA,OAAA,CAAQ,YAAA,CAAa,IAAA,EAAM,KAAA,CAAM,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,UACnD;AAAA,QACF;AAEA,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,IAAM,QAAA,GAAW,SAAS,GAAA,EAAK;AAC7B,MAAA,IAAI,8BAAA,CAA+B,IAAA,CAAK,GAAG,CAAA,EAAG;AAG5C,QAAA,OAAO,EAAE,MAAA,EAAQ,CAAC,GAAA,EAAK,MAAM,IAAA,EAAK;AAAA,MACpC,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,4CAAA,CAA6C,IAAA,CAAK,GAAG,CAAA;AACnE,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,GAAoB,GAAA,GAAM,wBAAwB,CAAA;AAAA,QACzE;AACA,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,QAAQ,EAAE,KAAA,CAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA,CAAA;AAAA;AAAA,UAC5B,IAAA,EAAM,MAAM,CAAC;AAAA,SACf;AACA,QAAA,IAAI,CAAC,SAAA,CAAU,IAAI,CAAA,EAAG;AACpB,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,GAAoB,IAAA,CAAK,OAAO,yBAAyB,CAAA;AAAA,QAChF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,iBAAA;AAAA,MACN,KAAA,EAAO,CAAC,mBAAmB,CAAA;AAAA,MAC3B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,QAAA,EAAU,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,QACvB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,QAAQ,KAAA,EAAM,EAAG,MAAM,OAAA,KAAY;AAC7C,QAAA,IAAI,KAAA,GAAQ,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAM,IAAA,EAAK;AACpC,QAAA,IAAI,MAAA,GAAS,EAAE,MAAA,EAAQ,GAAA,EAAK,MAAM,IAAA,EAAK;AACvC,QAAA,IAAI,WAAA,GAAc,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAM,IAAA,EAAK;AAC1C,QAAA,IAAI,GAAA,GAAM,EAAA;AAEV,QAAA,IAAI,OAAA,CAAQ,CAAC,CAAA,EAAG;AACd,UAAA,MAAM,eAAe,cAAA,CAAe,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,MAAA;AAGvD,UAAA,MAAM,UAAA,GAAa,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA;AACzC,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,YAAA,MAAM,MAAA,GAAS,UAAA,CAAW,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AACtC,YAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,cAAA,MAAM,GAAA,GAAM,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAK;AAC3B,cAAA,QAAQ,MAAA,CAAO,CAAC,CAAA,CAAE,IAAA,EAAK;AAAG,gBACxB,KAAK,KAAA;AACH,kBAAA,GAAA,GAAM,GAAA;AACN,kBAAA;AAAA,gBACF,KAAK,OAAA;AACH,kBAAA,KAAA,GAAQ,SAAS,GAAG,CAAA;AACpB,kBAAA;AAAA,gBACF,KAAK,QAAA;AACH,kBAAA,MAAA,GAAS,SAAS,GAAG,CAAA;AACrB,kBAAA;AAAA,gBACF,KAAK,aAAA;AACH,kBAAA,WAAA,GAAc,SAAS,GAAG,CAAA;AAC1B,kBAAA;AAAA,gBACF;AACE,kBAAA,MAAM,IAAI,UAAA,CAAW,gBAAA,GAAmB,MAAA,CAAO,CAAC,IAAI,yBAAyB,CAAA;AAAA;AACjF,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,MAAM,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,GAAA;AAE3C,QAAA,IAAI,QAAQ,EAAA,EAAI;AAEd,UAAA,GAAA,GAAM,GAAA;AACN,UAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA;AAChC,UAAA,GAAA,GAAM,IAAI,SAAA,CAAU,CAAA,EAAG,GAAA,CAAI,WAAA,CAAY,GAAG,CAAC,CAAA;AAAA,QAC7C;AAEA,QAAA,IACE,CAAC,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU;AAAA,UACzB,OAAA,EAAS,mBAAA;AAAA,UACT,GAAA,EAAK;AAAA,SACN,CAAA,EACD;AACA,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,2CAAA,CAAA,EAA+C,KAAK,CAAA;AAAA,QAC3E;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,iBAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,GAAA;AAAA,UACA,KAAA;AAAA,UACA,MAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AAChD,QAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,EAAQ,CAAA,EAAG,MAAM,IAAA,EAAK;AAEtC,QAAA,IAAI,KAAA,CAAM,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AAChC,UAAA,IAAI,KAAA,CAAM,YAAY,IAAA,KAAS,MAAA,CAAO,QACpC,KAAA,CAAM,WAAA,CAAY,MAAA,GAAS,MAAA,CAAO,MAAA,EAAQ;AAC1C,YAAA,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,WAAA,CAAY,MAAA,GAAS,MAAA,CAAO,MAAA;AACjD,YAAA,KAAA,CAAM,OAAO,MAAA,CAAO,IAAA;AAAA,UACtB;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,QAAA,IAAI,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AAC1B,UAAA,KAAA,GAAQ,aAAA,CAAc,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAAA,QAC1C;AAEA,QAAA,MAAM,eAAe,EAAE,MAAA,EAAQ,OAAO,MAAA,GAAS,KAAA,CAAM,SAAS,IAAA,EAAK;AACnE,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,UAAA,YAAA,CAAa,KAAA,GAAQ,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,IAAA;AAAA,QAC5C;AACA,QAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG;AACpB,UAAA,YAAA,CAAa,aAAA,GAAgB,CAAC,KAAA,CAAM,MAAA,GAAS,KAAA,CAAM,IAAA;AAAA,QACrD;AAEA,QAAA,MAAM,OAAO,IAAI,GAAA,CAAI,MAAM,GAAA,EAAK,KAAA,CAAM,KAAK,YAAY,CAAA;AACvD,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,OAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,IAAI,CAAC,CAAA;AAAA,MACrC;AAAA,KACD,CAAA;AAOD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAA,EAAU,SAAA,EAAW,WAAW,SAAS,CAAA;AAAA,MACjD,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,SAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,EAAM;AACzC,QAAA,MAAM,IAAA,GAAO,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,MAAM,CAAA;AAC3C,QAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,UAAA,MAAM,YAAA,GAAe,QAAA,CAAS,CAAC,CAAA,KAAM,GAAA;AACrC,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,IAAA,KAAS,IAAA;AACnC,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,IAAI,CAAC,MAAA,EAAQ;AACX,cAAA,MAAM,IAAI,WAAW,CAAA,QAAA,EAAW,QAAQ,gCAC/B,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,MAAA,CAAA,EAAU,KAAK,CAAA;AAAA,YACzC;AACA,YAAA,IAAI,MAAA,CAAO,SAAS,MAAA,EAAQ;AAC1B,cAAA,MAAM,IAAI,UAAA,CAAW,CAAA,QAAA,EAAW,QAAQ,4BAA4B,KAAK,CAAA;AAAA,YAC3E;AAAA,UACF,CAAA,MAAO;AAEL,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,MAAM,IAAI,UAAA,CAAW,CAAA,QAAA,EAAW,QAAQ,6BAA6B,KAAK,CAAA;AAAA,YAC5E;AAAA,UACF;AAAA,QACF;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,WAAW,IAAA,CAAK;AAAA,SAClB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAM,SAAA,EAAW,KAAK,CAAA;AACtD,QAAA,MAAM,EAAA,GAAK,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,SAAA,CAAU,SAAS,IAAA,GAClD,cAAA,CAAe,SAAA,CAAU,MAAM,CAAA,GAC/B,EAAA;AACJ,QAAA,IAAI,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,EAAA,CAAG,SAAS,CAAA,EAAG;AAC1C,UAAA,MAAM,SAAA,GAAY,IAAI,QAAA,CAAS,EAAE,CAAA;AACjC,UAAA,OAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,SAAS,CAAC,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,IAAI,SAAA,CAAU,UAAU,CAAA,EAAG;AACzB,YAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,QAAQ,CAAA;AAClC,YAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,SAAA,CAAU,MAAA,GAAS,UAAU,IAAI,CAAA;AAC5D,YAAA,OAAO,IAAA;AAAA,UACT,CAAA,MAAO;AAGL,YAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,MAAM,CAAA;AAChC,YAAA,IAAA,CAAK,KAAA,CAAM,UAAA,GAAa,SAAA,CAAU,MAAA,GAAS,SAAA,CAAU,IAAA;AACrD,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,IAAM,cAAA,GAAiB,SAAS,KAAA,EAAO;AACrC,MAAA,IAAI,KAAA,IAAS,OAAA,IAAW,KAAA,IAAS,OAAA,EAAS;AACxC,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,IAAS,MAAA,IAAU,KAAA,IAAS,MAAA,EAAQ;AAC7C,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,IAAS,MAAA,IAAU,KAAA,IAAS,MAAA,EAAQ;AAC7C,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,IAAS,MAAA,IAAU,KAAA,IAAS,MAAA,EAAQ;AAC7C,QAAA,OAAO,cAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,OAAO,EAAA;AAAA,MACT;AAAA,IACF,CAAA;AAGA,IAAA,IAAM,cAAA,GAAiB,iBAAA;AAEvB,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,KAAK;AAAA,OAClB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,QAAQ,IAAA,CAAK,CAAC,EAAE,MAAA,CAAO,OAAA,CAAQ,gBAAgB,EAAE;AAAA,SACnD;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAE1B,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,EAAC,EAAG,CAAC,WAAW,CAAC,CAAA;AACnD,QAAA,IAAI,KAAA,CAAM,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC3B,UAAA,IAAA,CAAK,QAAA,CAAS,MAAM,MAAM,CAAA;AAAA,QAC5B;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAID,IAAA,IAAM,WAAA,GAAc,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAEjD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,KAAA;AAAA,MACN,OAAO,CAAC,YAAA,EAAc,cAAc,YAAA,EAAc,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA,MAC9E,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,QAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,KAAS;AAC9C,QAAA,IAAI,WAAA,CAAY,QAAA,CAAS,QAAQ,CAAA,EAAG;AAClC,UAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAA,IAAU,MAAA,CAAO,SAAS,MAAA,EAAQ;AACpD,YAAA,MAAM,IAAI,UAAA,CAAW,CAAA,CAAA,EAAI,QAAQ,CAAA;AAAA,WAAA,EAC5B,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,IAAI,KAAK,CAAA;AAAA,UACjC;AACA,UAAA,QAAA,GAAW,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,QAC7B,CAAA,MAAO;AACL,UAAA,QAAA,GAAW,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,QAC7B;AACA,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAA,EAAW,QAAA;AAAA,UACX;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAE/B,QAAA,IAAI,KAAA;AACJ,QAAA,IAAI,KAAA,CAAM,cAAc,MAAA,EAAQ;AAG9B,UAAA,MAAM,eAAe,eAAA,CAAgB,WAAA,CAAY,KAAA,CAAM,IAAI,GAAG,KAAK,CAAA;AACnE,UAAA,MAAMN,QAAAA,GAAU,IAAI,QAAA,CAAS,UAAA,EAAY,YAAY,CAAA;AACrD,UAAA,KAAA,GAAQ,IAAI,QAAA,CAAS,SAAA,EAAW,CAACA,QAAO,CAAC,CAAA;AACzC,UAAA,KAAA,CAAM,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,QACrC;AAEA,QAAA,MAAMC,MAAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAC5C,QAAA,IAAI,IAAA;AACJ,QAAA,IAAI,KAAA,CAAM,cAAc,MAAA,EAAQ;AAC9B,UAAAA,MAAAA,CAAM,MAAM,QAAA,GAAW,UAAA;AACvB,UAAAA,MAAAA,CAAM,MAAM,KAAA,GAAQ,GAAA;AACpB,UAAAA,MAAAA,CAAM,MAAM,MAAA,GAAS,CAAA,CAAA,CAAA;AACrB,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,KAAA,EAAOA,MAAK,CAAC,CAAA;AAAA,QAC/C,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAACA,MAAK,CAAC,CAAA;AAAA,QACxC;AAEA,QAAA,IAAI,KAAA,CAAM,cAAc,MAAA,EAAQ;AAC9B,UAAA,IAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,SAAA,EAAW;AAEvE,YAAA,IAAA,CAAK,YAAA,CAAa,UAAU,WAAW,CAAA;AAAA,UACzC;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAMM,OAAAA,GAAS,KAAA,CAAM,SAAA,KAAc,MAAA,GAAS,IAAA,GAAO,MAAA;AACnD,UAAA,IAAA,CAAK,YAAA,CAAa,QAAA,EAAUA,OAAAA,GAAS,OAAO,CAAA;AAC5C,UAAA,IAAI,KAAA,CAAM,cAAc,MAAA,EAAQ;AAC9B,YAAA,IAAA,CAAK,MAAM,QAAA,GAAW,UAAA;AAAA,UACxB,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,MAAM,OAAA,GAAU,MAAA;AACrB,YAAA,IAAA,CAAK,MAAM,cAAA,GAAiB,QAAA;AAAA,UAC9B;AAAA,QACF;AACA,QAAA,IAAA,CAAK,YAAA,CAAa,SAAS,OAAO,CAAA;AAClC,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,KAAA,EAAO,GAAG,CAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,QAAA,EAAU,MAAA,IAAU,IAAA,EAAM;AAClC,QAAA,MAAM,YAAY,MAAA,CAAO,IAAA;AACzB,QAAA,MAAA,CAAO,WAAW,MAAM,CAAA;AACxB,QAAA,MAAMC,MAAAA,GAAQ,QAAA,KAAa,KAAA,GAAQ,KAAA,GAAQ,GAAA;AAC3C,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAOA,MAAK,CAAA;AAChD,QAAA,MAAA,CAAO,OAAOA,MAAK,CAAA;AACnB,QAAA,MAAA,CAAO,WAAW,SAAS,CAAA;AAC3B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb;AAAA,SACF;AAAA,MACF;AAAA,KACD,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA;AAAA,MACN,KAAA,EAAO,CAAC,KAAA,EAAO,KAAK,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,SAAS,KAAA,EAAO;AACtB,QAAA,MAAM,IAAI,UAAA,CAAW,CAAA,WAAA,EAAc,OAAA,CAAQ,QAAQ,IAAI,KAAK,CAAA;AAAA,MAC9D;AAAA,KACD,CAAA;AAED,IAAA,IAAM,WAAA,GAAc,CAAC,KAAA,EAAO,KAAA,KAAU;AACpC,MAAA,QAAQ,MAAM,KAAA;AAAO,QACnB,KAAK,UAAA,CAAW,OAAA;AACd,UAAA,OAAO,KAAA,CAAM,OAAA;AAAA,QACf,KAAK,UAAA,CAAW,IAAA;AACd,UAAA,OAAO,KAAA,CAAM,IAAA;AAAA,QACf,KAAK,UAAA,CAAW,MAAA;AACd,UAAA,OAAO,KAAA,CAAM,MAAA;AAAA,QACf,KAAK,UAAA,CAAW,YAAA;AACd,UAAA,OAAO,KAAA,CAAM,YAAA;AAAA,QACf;AACE,UAAA,OAAO,KAAA,CAAM,IAAA;AAAA;AACjB,IACF,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,YAAA;AAAA,MACN,KAAA,EAAO,CAAC,cAAc,CAAA;AAAA,MACtB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,IAAU,IAAA,KAAS;AAC7B,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,YAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,OAAA,EAAS,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,UAC5B,IAAA,EAAM,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,UACzB,MAAA,EAAQ,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,UAC3B,YAAA,EAAc,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC;AAAA,SACnC;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAA,EAAO,KAAK,CAAA;AACrC,QAAA,OAAO,kBAAA,CAAmB,MAAM,KAAK,CAAA;AAAA,MACvC;AAAA,KACD,CAAA;AAED,IAAA,IAAM,aAAA,GAAgB,CAAC,MAAA,EAAQ,SAAA,EAAW,WAAW,MAAM,CAAA;AAE3D,IAAA,SAAS,eAAA,CAAgB,OAAO,KAAA,EAAO;AACrC,MAAA,IAAI,IAAA;AACJ,MAAA,MAAMP,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE/C,MAAA,IAAI,KAAA,CAAM,WAAW,QAAA,EAAU;AAC7B,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,EAAWA,MAAK,CAAA;AAAA,MACtC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,MAAA,EAAQ;AAClC,QAAA,IAAI,MAAM,cAAA,IAAkBA,MAAAA,CAAM,CAAC,CAAA,CAAE,SAAS,SAAA,EAAW;AACvD,UAAA,IAAA,GAAOA,OAAM,CAAC,CAAA;AACd,UAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,UAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,KAAK,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,IAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,QAAA,EAAK;AACxF,YAAA,IAAA,CAAK,YAAA,CAAa,eAAe,QAAQ,CAAA;AAAA,UAC3C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAMA,MAAK,CAAA;AAAA,QACjC;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQA,MAAK,CAAA;AACjC,QAAA,IAAI,MAAM,WAAA,EAAa;AACrB,UAAA,IAAA,GAAOA,OAAM,CAAC,CAAA;AACd,UAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,UAAA,IAAI,KAAA,CAAM,cAAA,IAAkB,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,IAAQ,UAAA,CAAW,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AACrF,YAAA,IAAA,CAAK,YAAA,CAAa,eAAe,QAAQ,CAAA;AAAA,UAC3C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQA,MAAK,CAAA;AAAA,QACnC;AAIA,QAAA,MAAM,SAAA,GAAY,MAAM,KAAA,GAAQ,CAAA;AAChC,QAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,UAAA,IAAI,SAAA,EAAY;AACd,YAAA,IAAI,KAAA,CAAM,WAAW,MAAA,EAAQ;AAE3B,cAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AACrC,cAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,YACpC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,MAAA,EAAQ;AAElC,cAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AACrC,cAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,YACpC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AACpC,cAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,YACpC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AACpC,cAAA,IAAA,CAAK,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AACrC,cAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,YACpC;AAAA,UACF;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAI,KAAA,CAAM,WAAW,MAAA,EAAQ;AAE3B,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAU,SAAA,GAAY,UAAA,GAAa,GAAA;AACnD,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAU,SAAA,GAAY,UAAA,GAAa,GAAA;AAAA,UACrD,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,MAAA,EAAQ;AAElC,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAU,SAAA,GAAY,UAAA,GAAa,GAAA;AACnD,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAU,SAAA,GAAY,UAAA,GAAa,GAAA;AAAA,UACrD,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AACpC,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,KAAA;AACzB,YAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAU,SAAA,GAAY,UAAA,GAAa,GAAA;AAAA,UACrD,WAAW,KAAA,CAAM,MAAA,KAAW,OAAA,IAAW,KAAA,CAAM,WAAW,QAAA,EAAU;AAChE,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,KAAA;AACzB,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,KAAA;AAAA,UAC3B,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,QAAA,IAAY,SAAA,EAAW;AACjD,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,UAAA;AACzB,YAAA,IAAA,CAAK,WAAW,KAAA,GAAQ,WAAA;AAAA,UAC1B;AAAA,QACF;AAEA,QAAA,IAAI,EAAE,KAAA,CAAM,MAAA,KAAW,OAAA,IAAW,KAAA,CAAM,WAAW,QAAA,CAAA,EAAW;AAC5D,UAAA,OAAO,KAAK,UAAA,CAAW,QAAA;AACvB,UAAA,OAAO,KAAK,UAAA,CAAW,IAAA;AAAA,QACzB;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAGA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,WAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,aAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,MAAM,gBAAA,GAAmB,eAAe,IAAI,CAAA;AAG5C,QAAA,IAAI,WAAA,GAAc,IAAA;AAClB,QAAA,MAAM,IAAA,GAAO,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,EAAA,EAAI,IAAA,EAAM,OAAO,IAAA,EAAK;AAC5D,QAAA,MAAM,MAAO,IAAA,CAAK,IAAA,GAAQ,IAAA,CAAK,IAAA,GAAO,CAAC,IAAI,CAAA;AAC3C,QAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACrB,UAAA,IAAI,aAAA,CAAc,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AACpC,YAAA,IAAI,QAAQ,MAAA,CAAO,IAAI,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,EAAG;AAClC,cAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,OAAA;AAAA,YAC9C,CAAA,MAAA,IAAW,IAAI,IAAA,EAAM;AACnB,cAAA,IAAA,CAAK,QAAQ,GAAA,CAAI,IAAA;AAAA,YACnB,CAAA,MAAA,IAAW,IAAI,IAAA,EAAM;AACnB,cAAA,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,CAAA,KAAK;AAAE,gBAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAA;AAAA,cAAM,CAAC,CAAA;AAAA,YAC5C;AAAA,UACF,CAAA,MAAO;AACL,YAAA,WAAA,GAAc,KAAA;AACd,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,IAAI,WAAA,IAAe,aAAa,WAAA,IAAe,IAAA,CAAK,SAAS,SAAA,IAC1C,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACvC,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,QAAA;AAAA,YACN,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,MAAA,EAAQ,GAAA,GAAM,QAAA,CAAS,KAAA,CAAM,CAAC,CAAA;AAAA,YAC9B,IAAA,EAAM,WAAA,CAAY,WAAA,GAAc,IAAA,GAAO,IAAI,CAAA;AAAA,YAC3C,cAAA,EAAgB,gBAAA;AAAA,YAChB;AAAA,WACF;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,IAAM,WAAA,GAAc,CAAC,GAAA,KAAQ;AAK3B,MAAA,MAAM,IAAA,GAAO,GAAA,CAAI,IAAA,KAAS,UAAA,IAAc,IAAI,IAAA,CAAK,MAAA,IAAU,GAAA,CAAI,IAAA,CAAK,MAAA,KAAW,CAAA,GAC3E,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,GACV,GAAA;AACJ,MAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AAExB,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,IAAQ,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,GACnF,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,CAAE,KAAA,GAC/B,IAAA,CAAK,MAAA;AACT,QAAA,IAAI,MAAA,KAAW,KAAA,IAAS,MAAA,KAAW,KAAA,EAAO;AACxC,UAAA,OAAO,GAAA,GAAM,MAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,IACF,CAAA;AAIA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,UAC3B,IAAA,EAAM,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,UACzB,cAAA,EAAgB,cAAA,CAAe,IAAA,CAAK,CAAC,CAAC;AAAA,SACxC;AAAA,MACF;AAAA,KACD,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAA,EAAc,WAAA,EAAa,YAAY,CAAA;AAAA,MAC/C,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,OAAA,GAAU,KAAK,CAAC,CAAA;AACtB,QAAA,MAAM,UAAA,GAAa,KAAK,CAAC,CAAA;AAEzB,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,aAAa,YAAA,EAAc;AAE7B,UAAA,MAAA,GAAS,YAAY,OAAO,CAAA;AAAA,QAC9B,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,MAAA;AAAA,QACX;AAEA,QAAA,MAAM,QAAA,GAAW,MAAA,KAAW,MAAA,IAAU,MAAA,KAAW,SAC7C,IAAA,GACA,UAAA;AAEJ,QAAA,MAAM,MAAA,GAAS;AAAA,UACb,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,OAAA,CAAQ,IAAA;AAAA,UACd,MAAA,EAAQ,IAAA;AAAA,UACR,kBAAA,EAAoB,IAAA;AAAA,UACpB,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,KAAA;AAAA,UACR,mBAAmB,QAAA,KAAa,YAAA;AAAA,UAChC,IAAA,EAAM,YAAY,OAAO;AAAA,SAC3B;AAEA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,UAAA,CAAW,IAAA;AAAA,UACjB,KAAA,EAAO,IAAA;AAAA,UACP,IAAA,EAAM,MAAA;AAAA,UACN,GAAA,EAAK,QAAA,KAAa,YAAA,GAAe,IAAA,GAAO,UAAA;AAAA,UACxC,GAAA,EAAK,QAAA,KAAa,YAAA,GAAe,UAAA,GAAa;AAAA,SAChD;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,IAAM,UAAA,GAAa,CAAC,EAAA,EAAI,KAAA,EAAO,QAAA,KAAa;AAC1C,MAAA,IAAI,CAAC,EAAA,EAAI;AAAE,QAAA,OAAO,QAAA;AAAA,MAAS;AAC3B,MAAA,MAAM,IAAA,GAAO,YAAA,CAAa,EAAA,EAAI,KAAK,CAAA;AACnC,MAAA,IAAI,KAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AAAE,QAAA,OAAO,QAAA;AAAA,MAAS;AAC1E,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAA,EAAa,cAAc,CAAA;AAAA;AAAA,MACnC,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,QAAQ,EAAE,MAAA,EAAQ,QAAA,EAAU,KAAA,IAAS,IAAA,EAAM;AACzC,QAAA,IAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,WAAW,CAAA,EAAG;AAC7B,UAAA,MAAM,IAAI,UAAA,CAAW,QAAA,GAAW,CAAA,2BAAA,CAA6B,CAAA;AAAA,QAC/D;AACA,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAC,CAAA,CAAE,KAAK,CAAC,CAAA;AAC3B,QAAA,IAAI,OAAO,QAAA,CAAS,MAAA,IAAU,aAAa,WAAA,IAAe,CAAC,KAAK,MAAA,EAAQ;AACtE,UAAA,MAAM,IAAI,WAAW,CAAA,8DAAA,CAAgE,CAAA;AAAA,QACvF;AAEA,QAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,QAAA,IACpD,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,GAAS,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,KAAS,QAAA,EAAW;AAClE,UAAA,MAAM,IAAI,UAAA,CAAW,iFAAA,EAC4C,KAAK,CAAA;AAAA,QACxE;AAGA,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA;AAC/D,QAAA,MAAM,WAAA,GAAc,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA;AAEhE,QAAA,IAAI,CAAC,UAAA,IAAc,CAAC,WAAA,EAAa;AAC/B,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAA,IAAW,CAAC,UAAA,EAAY;AAEtB,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,SAAA;AAAA,YACN,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,WAAA,EAAa,MAAA;AAAA,YACb,MAAM,CAAC;AAAA,cACL,IAAA,EAAM,QAAA;AAAA,cACN,MAAM,MAAA,CAAO,IAAA;AAAA,cACb,IAAA;AAAA,cACA,KAAK,WAAA,CAAY,GAAA;AAAA,cACjB,KAAK,WAAA,CAAY;AAAA,aAClB;AAAA,WACH;AAAA,QACF,CAAA,MAAO;AACL,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,aAAA;AAAA,YACN,MAAM,MAAA,CAAO,IAAA;AAAA,YACb,WAAW,QAAA,KAAa,WAAA;AAAA,YACxB,UAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,IAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE5C,QAAA,MAAM,cAAA,GAAiB,IAAI,QAAA,CAAS,aAAa,CAAA;AACjD,QAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,MAAM,CAAA;AACpC,QAAA,IAAI,WAAW,EAAC;AAEhB,QAAA,MAAM,SAAS,UAAA,CAAW,KAAA,CAAM,UAAA,CAAW,GAAA,EAAK,OAAO,QAAQ,CAAA;AAC/D,QAAA,MAAM,SAAS,UAAA,CAAW,KAAA,CAAM,UAAA,CAAW,GAAA,EAAK,OAAO,QAAQ,CAAA;AAC/D,QAAA,IAAI,MAAM,SAAA,EAAW;AAEnB,UAAA,MAAA,CAAO,YAAA,CAAa,SAAS,mBAAmB,CAAA;AAChD,UAAA,MAAA,CAAO,YAAA,CAAa,SAAS,mBAAmB,CAAA;AAAA,QAClD;AAEA,QAAA,IAAI,MAAM,WAAA,EAAa;AACrB,UAAA,MAAM,UAAU,UAAA,CAAW,KAAA,CAAM,WAAA,CAAY,GAAA,EAAK,OAAO,QAAQ,CAAA;AACjE,UAAA,MAAM,UAAU,UAAA,CAAW,KAAA,CAAM,WAAA,CAAY,GAAA,EAAK,OAAO,QAAQ,CAAA;AACjE,UAAA,QAAA,GAAW,CAAC,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,cAAA,EAAgB,QAAQ,MAAM,CAAA;AAAA,QACpE,CAAA,MAAO;AACL,UAAA,QAAA,GAAW,CAAC,IAAA,EAAM,cAAA,EAAgB,MAAA,EAAQ,MAAM,CAAA;AAAA,QAClD;AAEA,QAAA,OAAO,IAAI,QAAA,CAAS,eAAA,EAAiB,QAAQ,CAAA;AAAA,MAC/C;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,KAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,MACf,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW,IAAA;AAAA,QACX,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,MAAM,gBAAA,GAAmB,cAAA,CAAe,IAAA,CAAK,CAAC,CAAC,CAAA;AAC/C,QAAA,IAAI,IAAA;AACJ,QAAA,IAAI,gBAAA,EAAkB;AACpB,UAAA,IAAA,GAAO,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAC1B,UAAA,IAAI,KAAK,CAAC,CAAA,CAAE,KAAK,MAAA,CAAO,CAAC,MAAM,IAAA,EAAM;AACnC,YAAA,IAAA,CAAK,CAAC,EAAE,IAAA,GAAO,OAAA,CAAQ,KAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAI,CAAA,CAAE,OAAA;AAAA,UAC5C;AAEA,UAAA,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,GAAO,IAAA,CAAK,CAAC,EAAE,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAC,IAAI,QAAA,GAAW,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA;AAAA,QAC3E,CAAA,MAAO;AAGL,UAAA,MAAM,UAAU,EAAE,IAAA,EAAM,WAAW,IAAA,EAAM,MAAA,EAAQ,MAAM,QAAA,EAAS;AAChE,UAAA,MAAM,QAAA,GAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAA,EAAK,EAAE;AACvF,UAAA,IAAA,GAAO,CAAC,OAAA,EAAS,QAAA,EAAU,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,QACpC;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA,cAAA,EAAgB;AAAA,SAClB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,UAAA,MAAMA,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,OAAO,IAAI,CAAA;AACrD,UAAA,OAAOA,OAAM,CAAC,CAAA;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,OAAO,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAAA,QAC7C;AAAA,MACF;AAAA,KACD,CAAA;AAMD,IAAA,IAAM,YAAA,GAAe,CAAC,SAAA,EAAW,SAAA,EAAW,MAAM,CAAA;AAGlD,IAAA,IAAM,WAAA,GAAc,CAAC,YAAY,CAAA;AAGjC,IAAA,IAAM,WAAW,CAAC,SAAA,EAAW,WAAW,UAAA,EAAY,OAAA,EAAS,aAAa,MAAM,CAAA;AAKhF,IAAA,IAAM,aAAa,CAAA,IAAA,KAAQ;AAGzB,MAAA,IAAA,CAAK,WAAW,MAAA,GAAS,UAAA;AACzB,MAAA,IAAA,CAAK,WAAW,MAAA,GAAS,UAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,IAAI,IAAA;AAEJ,MAAA,IAAI,MAAM,MAAA,EAAQ;AAEhB,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,MAAM,IAAA,EAAM,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AAC5D,QAAA,IAAI,WAAA,CAAY,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,QACtC,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,YAAA,CAAa,iBAAiB,OAAO,CAAA;AAAA,QAC5C;AACA,QAAA,IAAI,MAAM,UAAA,EAAY;AAAE,UAAA,UAAA,CAAW,IAAI,CAAA;AAAA,QAAG;AAAA,MAC5C,CAAA,MAAA,IAAW,MAAM,IAAA,EAAM;AAErB,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,gBAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAA;AAC5D,QAAA,IAAI,MAAM,UAAA,EAAY;AAAE,UAAA,UAAA,CAAW,IAAI,CAAA;AAAA,QAAG;AAAA,MAC5C,CAAA,MAAO;AAEL,QAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,IAAI,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7D,QAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAGzB,UAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,QAAA,EAAU,MAAM,CAAC,CAAC,CAAA;AAChE,UAAA,MAAM,GAAA,GAAM,CAAC,IAAA,EAAM,QAAQ,CAAA;AAE3B,UAAA,IAAI,MAAM,iBAAA,EAAmB;AAC3B,YAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,QAAQ,CAAA;AAClC,YAAA,IAAA,CAAK,YAAA,CAAa,SAAS,UAAU,CAAA;AACrC,YAAA,GAAA,CAAI,QAAQ,IAAI,CAAA;AAAA,UAClB;AACA,UAAA,IAAI,CAAC,MAAM,qBAAA,EAAuB;AAChC,YAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAQ,CAAA;AACnC,YAAA,KAAA,CAAM,YAAA,CAAa,SAAS,UAAU,CAAA;AACtC,YAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,UAChB;AACA,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,GAAG,CAAA;AAAA,QACjC;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,gBAAA,GAAmB;AAAA,MACvB,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,OAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,WAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,QAAA,EAAU,gBAAA;AAAA,MACV,QAAA,EAAU,kBAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,kBAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,IAAI,KAAA,GAAQ,QAAA;AACZ,QAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,UAAA,KAAA,GAAQ,iBAAiB,KAAK,CAAA;AAAA,QAChC;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,IAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO,KAAA;AAAA;AAAA,UACP,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAID,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,IAAU,IAAA,KAAS;AAC7B,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AAInB,QAAA,MAAM,MAAO,IAAA,CAAK,IAAA,GAAQ,IAAA,CAAK,IAAA,GAAO,CAAC,IAAI,CAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,IAAI,MAAA,KAAW,CAAA,IAAK,aAAa,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,CAAE,IAAI,CAAA;AACtE,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,IAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,QAAA;AAAA,UACR,UAAA,EAAY,IAAA;AAAA,UACZ,KAAA,EAAO,KAAA;AAAA,UACP,IAAA,EAAM,QAAA,GAAW,GAAA,CAAI,CAAC,EAAE,IAAA,GAAO,IAAA;AAAA,UAC/B,IAAA,EAAM,QAAA,GAAW,IAAA,GAAO,WAAA,CAAY,IAAI;AAAA,SAC1C;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAMD,IAAA,IAAM,mBAAA,GAAsB;AAAA,MAC1B,QAAA,EAAU,OAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,gBAAA;AAAA,MACV,QAAA,EAAU,oBAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,UAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAGA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,UAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,MAAM,eAAe,MAAA,CAAO,YAAA;AAC5B,QAAA,MAAM1B,KAAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,IAAA;AACpC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,KAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,KAAA;AAAA,UACR,KAAA,EAAO,KAAA;AAAA,UACP,qBAAA,EAAuB,YAAYA,KAAI,CAAA;AAAA,UACvC,mBAAmB,YAAA,CAAa,MAAA,GAAS,CAAA,IAAK,QAAA,CAAS,SAAS,YAAY,CAAA;AAAA,UAC5E,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAA;AAAA,MAC7E,KAAA,EAAO;AAAA,QACL,OAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,MAAM,eAAe,MAAA,CAAO,YAAA;AAC5B,QAAA,MAAMA,KAAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,IAAA;AACpC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,IAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,KAAA;AAAA,UACR,KAAA,EAAO,KAAA;AAAA,UACP,qBAAA,EAAuB,YAAYA,KAAI,CAAA;AAAA,UACvC,mBAAmB,YAAA,CAAa,MAAA,GAAS,CAAA,IAAK,QAAA,CAAS,SAAS,YAAY,CAAA;AAAA,UAC5E,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,OAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,oBAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAG;AAC5B,QAAA,IAAI,KAAA,GAAQ,QAAA;AACZ,QAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,UAAA,KAAA,GAAQ,oBAAoB,KAAK,CAAA;AAAA,QACnC;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,IAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,MAAA,EAAQ,KAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,MAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAO,KAAA;AAAA,UACP,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAMD,IAAA,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,KAAA,KAAU;AACxC,MAAA,IAAI,aAAa,eAAA,CAAgB,KAAA,CAAM,MAAM,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAC,CAAA;AAGrE,MAAA,IAAI,WAAA,GAAc,IAAA;AAClB,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC1C,QAAA,IAAI,IAAA,GAAO,WAAW,CAAC,CAAA;AACvB,QAAA,IAAI,gBAAgB,QAAA,EAAU;AAC5B,UAAA,IAAA,CAAK,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,SAAS,SAAA,KAAc,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,IAC9E,IAAA,CAAK,QAAA,CAAS,CAAC,aAAa,QAAA,EAAU;AACxC,YAAA,IAAA,GAAO,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,UACxB,WAAW,IAAA,CAAK,IAAA,KAAS,MAAA,IAAU,IAAA,CAAK,SAAS,MAAA,KAAW,CAAA,IACjD,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,YAAa,QAAA,IAC5B,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,YAAa,QAAA,IAC5B,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,CAAC,KAAK,QAAA,CAAS,CAAC,CAAA,CAAE,UAAA,CAAW,SACnE,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA,CAAE,QAAA,CAAS,WAAW,CAAA,EAAG;AAGjD,YAAA,IAAA,GAAO,IAAA,CAAK,SAAS,CAAC,CAAA;AAAA,UACxB;AACA,UAAA,QAAQ,KAAK,IAAA;AAAM,YACjB,KAAK,IAAA;AAAA,YACL,KAAK,IAAA;AAAA,YACL,KAAK,IAAA;AAAA,YACL,KAAK,OAAA;AACH,cAAA;AAAA;AAAA,YACF,KAAK,QAAA;AACH,cAAA;AACE,gBAAA,IAAI,IAAA,CAAK,WAAW,KAAA,EAAO;AACzB,kBAAA,MAAM,QAAQ,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,OAAA,CAAQ,MAAM,EAAE,CAAA;AACpD,kBAAA,MAAM,EAAA,GAAK,cAAA,CAAe,MAAA,CAAO,KAAK,CAAC,CAAA;AACvC,kBAAA,IAAI,OAAO,EAAA,EAAI;AACb,oBAAA,WAAA,GAAc,KAAA;AAAA,kBAChB,CAAA,MAAO;AACL,oBAAA,UAAA,CAAW,CAAC,CAAA,GAAI,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,IAAI,QAAA,CAAS,EAAE,CAAC,CAAC,CAAA;AAAA,kBAC1D;AAAA,gBACF;AAAA,cACF;AACA,cAAA;AAAA,YACF,KAAK,IAAA,EAAM;AACT,cAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA;AAC7B,cAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,CAAA,IAAK,iBAAiB,QAAA,EAAU;AAC3D,gBAAA,KAAA,CAAM,IAAA,GAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,UAAU,GAAG,CAAA,CAAE,OAAA,CAAQ,QAAA,EAAU,GAAG,CAAA;AAAA,cACtE,CAAA,MAAO;AACL,gBAAA,WAAA,GAAc,KAAA;AAAA,cAChB;AACA,cAAA;AAAA,YACF;AAAA,YACA;AACE,cAAA,WAAA,GAAc,KAAA;AAAA;AAClB,QACF,CAAA,MAAO;AACL,UAAA,WAAA,GAAc,KAAA;AAAA,QAChB;AAAA,MACF;AAEA,MAAA,IAAI,WAAA,EAAa;AAEf,QAAA,MAAM,IAAA,GAAO,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,KAAS,KAAK,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAC5D,QAAA,UAAA,GAAa,CAAC,IAAI,QAAA,CAAS,IAAI,CAAC,CAAA;AAAA,MAClC,CAAA,MAAA,IACE,UAAA,CAAW,MAAA,KAAW,CAAA,IACnB,CAAC,OAAA,EAAS,QAAQ,CAAA,CAAE,QAAA,CAAS,UAAA,CAAW,CAAC,CAAA,CAAE,IAAI,CAAA,KACjD,UAAA,CAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,IAAA,KAAS,IAAA,IAAQ,UAAA,CAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,OAAA,CAAA,EAC/E;AACA,QAAA,UAAA,CAAW,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,EAAE,IAAA,GAAO,IAAA;AACjC,QAAA,IAAI,MAAM,cAAA,EAAgB;AACxB,UAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAA;AAAA,QACxC,CAAA,MAAO;AACL,UAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,QAAA,EAAU,MAAM,CAAC,CAAC,CAAA;AAChE,UAAA,OAAO,oBAAoB,CAAC,UAAA,CAAW,CAAC,CAAA,EAAG,QAAQ,CAAC,CAAA;AAAA,QACtD;AAAA,MACF;AAEA,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,WAAA,EAAa;AACf,QAAA,OAAA,GAAU,IAAI,QAAA,CAAS,IAAA,EAAM,UAAU,CAAA;AACvC,QAAA,IAAI,UAAA,CAAW,CAAC,CAAA,CAAE,IAAA,CAAK,WAAW,CAAA,EAAG;AACnC,UAAA,OAAA,CAAQ,YAAA,CAAa,eAAe,QAAQ,CAAA;AAAA,QAC9C;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,IAAI,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC3C;AAEA,MAAA,IAAI,CAAC,MAAM,cAAA,EAAgB;AAGzB,QAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,QAAA,EAAU,MAAM,CAAC,CAAC,CAAA;AAChE,QAAA,MAAM,QAAA,GAAW,CAAC,OAAA,EAAS,QAAQ,CAAA;AACnC,QAAA,IAAI,MAAM,iBAAA,EAAmB;AAG3B,UAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAQ,CAAA;AACnC,UAAA,KAAA,CAAM,YAAA,CAAa,SAAS,UAAU,CAAA;AACtC,UAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,QACxB;AACA,QAAA,IAAI,CAAC,MAAM,qBAAA,EAAuB;AAChC,UAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAQ,CAAA;AACnC,UAAA,KAAA,CAAM,YAAA,CAAa,SAAS,UAAU,CAAA;AACtC,UAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,QACrB;AACA,QAAA,OAAO,oBAAoB,QAAQ,CAAA;AAAA,MACrC;AAEA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAIA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,cAAA;AAAA,MACN,KAAA,EAAO,CAAC,iBAAA,EAAmB,0BAA0B,CAAA;AAAA,MACrD,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,KAAS;AACvC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,MAAM,eAAe,MAAA,CAAO,YAAA;AAC5B,QAAA,MAAMA,KAAAA,GAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAO,CAAE,IAAA;AACpC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,cAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,YAAY,IAAI,CAAA;AAAA,UACtB,oBAAqB,QAAA,KAAa,0BAAA;AAAA,UAClC,MAAA,EAAQ,KAAA;AAAA,UACR,cAAA,EAAgB,KAAA;AAAA,UAChB,qBAAA,EAAuB,YAAYA,KAAI,CAAA;AAAA,UACvC,mBAAmB,YAAA,CAAa,MAAA,GAAS,CAAA,IAAK,QAAA,CAAS,SAAS,YAAY;AAAA,SAC9E;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe;AAAA,KAChB,CAAA;AAED,IAAA,WAAA;AAAA,MAAY,gBAAA;AAAA,MACV;AAAA,KAAkD;AAEpD,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,UAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,OAAO,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,KAAA,EAAO,MAAM,UAAU,CAAA;AAAA,MAC/D;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,IAAU,IAAA,KAAS;AAC7B,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,YAAY,IAAI;AAAA,SACxB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM0B,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAC/C,QAAA,OAAO,IAAI,QAAA,CAAS,UAAA,EAAYA,MAAK,CAAA;AAAA,MACvC;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,IAAU,IAAA,KAAS;AAC7B,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAMA,SAAQ,eAAA,CAAgB,WAAA,CAAY,KAAA,CAAM,IAAI,GAAG,KAAK,CAAA;AAC5D,QAAA,MAAMD,QAAAA,GAAU,IAAI,QAAA,CAAS,UAAA,EAAYC,MAAK,CAAA;AAC9C,QAAA,MAAM,OAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAACD,QAAO,CAAC,CAAA;AAC9C,QAAA,IAAA,CAAK,YAAA,CAAa,UAAU,KAAK,CAAA;AACjC,QAAA,IAAA,CAAK,YAAA,CAAa,SAAS,KAAK,CAAA;AAChC,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,MAAA,IAAU,IAAA,KAAS;AAC7B,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAMC,SAAQ,eAAA,CAAgB,WAAA,CAAY,KAAA,CAAM,IAAI,GAAG,KAAK,CAAA;AAC5D,QAAA,MAAMD,QAAAA,GAAU,IAAI,QAAA,CAAS,UAAA,EAAYC,MAAK,CAAA;AAC9C,QAAA,MAAM,OAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAACD,QAAO,CAAC,CAAA;AAC9C,QAAA,IAAA,CAAK,YAAA,CAAa,SAAS,OAAO,CAAA;AAClC,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAMD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,KAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,MACf,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC;AAAA,SAC3B;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAMC,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAE/C,QAAA,MAAM,IAAA,GAAO,eAAeA,MAAK,CAAA;AACjC,QAAA,IAAA,CAAK,YAAA,CAAa,SAAS,kBAAkB,CAAA;AAC7C,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAID,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,KAAA,KAAU;AACtC,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,UAAA,CAAW,IAAI,CAAA;AAChD,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,aAAa,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAC,CAAC,CAAA;AACzE,MAAA,MAAM,EAAA,GAAK,aAAA,CAAc,KAAA,CAAM,EAAA,EAAI,KAAK,CAAA;AACxC,MAAA,IAAA,CAAK,YAAA,CAAa,SAAA,EAAW,EAAA,CAAG,MAAA,GAAS,GAAG,IAAI,CAAA;AAGhD,MAAA,IAAI,EAAA,CAAG,SAAS,CAAA,EAAG;AACjB,QAAA,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,EAAA,CAAG,MAAA,GAAS,GAAG,IAAA,GAAO,QAAA;AAAA,MAC7C,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,KAAA,CAAM,UAAU,MAAA,GAAS,IAAA,CAAK,IAAI,EAAA,CAAG,MAAM,CAAA,GAAI,EAAA,CAAG,IAAA,GAAO,IAAA;AAAA,MAChE;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAA,EAAW,SAAS,CAAA;AAAA,MAC5B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA,QAC9B,SAAA,EAAW;AAAA,OACb;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,SAAS,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA;AAC/C,QAAA,IAAI,aAAa,SAAA,EAAW;AAAE,UAAA,MAAA,CAAO,MAAA,IAAU,EAAA;AAAA,QAAI;AACnD,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,EAAA,EAAI,MAAA;AAAA,UACJ;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA,KACD,CAAA;AAGD,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,QACzB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,SAAS,cAAA,CAAe,IAAA,CAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,KAAA;AAC/C,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,EAAA,EAAI,MAAA;AAAA,UACJ;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,KAAA;AAAA,MACN,KAAA,EAAO,CAAC,OAAA,EAAS,SAAS,CAAA;AAAA,MAC1B,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,KAAK;AAAA,OAClB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,KAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,QAAA;AAAA,UACA,QAAQ,IAAA,CAAK,CAAC,EAAE,MAAA,CAAO,OAAA,CAAQ,gBAAgB,EAAE;AAAA,SACnD;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAG1B,QAAA,MAAM,OAAA,GAAU,MAAM,QAAA,KAAa,OAAA,GAAU,CAAC,SAAS,CAAA,GAAI,CAAC,SAAA,EAAW,WAAW,CAAA;AAClF,QAAA,OAAO,IAAI,UAAA,CAAW,GAAA,GAAM,KAAA,CAAM,MAAA,EAAQ,SAAS,IAAI,CAAA;AAAA,MACzD;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,cAAc,CAAA;AAAA,MACtB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,KAAK,CAAC;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,IAAA,GAAO,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAA;AAC3C,QAAA,IAAA,CAAK,MAAM,SAAA,GAAY,YAAA;AACvB,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,UAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,iBAAA,EAAmB;AAAA,OACrB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG;AAClB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,UAAA;AAAA,UACN,MAAM,MAAA,CAAO;AAAA,SACf;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe,IAAA;AAAA,QACf,QAAA,EAAU,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAM;AAAA,OACnC;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,MAAM,OAAA,EAAS;AACjC,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,MAAM,CAAA;AAC5C,QAAA,MAAM,MAAA,GAAS,cAAA,CAAe,IAAA,CAAK,CAAC,GAAG,MAAM,CAAA;AAC7C,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,KAAA,EAAO,KAAA,IAAS,cAAA,CAAe,KAAA,EAAO,MAAM,CAAA,CAAE,KAAA;AAAA,UAC9C,OAAO,KAAA,CAAM,KAAA;AAAA,UACb,QAAQ,MAAA,CAAO;AAAA,SACjB;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,KAAA,GAAQ,aAAA,CAAc,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAC9C,QAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA;AAChD,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,GAChB,aAAA,CAAc,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA,GAChC,EAAE,MAAA,EAAQ,CAAA,EAAG,IAAA,EAAM,IAAA,EAAK;AAC5B,QAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,UAAS,IAAM,OAAA;AAEnD,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,QAAQ,CAAA;AAClC,QAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,IAAK,MAAA,CAAO,SAAS,CAAA,EAAG;AACzC,UAAA,IAAA,CAAK,YAAA,CAAa,kBAAkB,KAAK,CAAA;AAAA,QAC3C;AACA,QAAA,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,KAAA,CAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACpD,QAAA,IAAA,CAAK,YAAA,CAAa,QAAA,EAAU,MAAA,CAAO,MAAA,GAAS,OAAO,IAAI,CAAA;AACvD,QAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AAAE,UAAA,OAAO,IAAA;AAAA,QAAK;AAEtC,QAAA,MAAM,UAAU,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,IAAI,CAAC,CAAA;AAC9C,QAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,UAAA,OAAA,CAAQ,aAAa,QAAA,EAAU,GAAA,GAAM,KAAA,CAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AAAA,QAChE,CAAA,MAAO;AACL,UAAA,OAAA,CAAQ,YAAA,CAAa,QAAA,EAAU,KAAA,CAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACxD,UAAA,OAAA,CAAQ,aAAa,OAAA,EAAS,GAAA,GAAM,CAAC,KAAA,CAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AAAA,QAChE;AACA,QAAA,OAAA,CAAQ,YAAA,CAAa,SAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAM,IAAI,CAAA;AACzD,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,IAAM,QAAA,GAAW,SAAA;AACjB,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AACA,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,GAAA,EAAK,MAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK,QAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,IAAI,SAAA,GAAY,EAAA;AAChB,QAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,EAAM;AAC/B,UAAA,IAAI,IAAA,CAAK,SAAS,SAAA,IAAa,CAAC,SAAS,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACxD,YAAA,MAAM,IAAI,UAAA,CAAW,+BAAA,EAAiC,IAAI,CAAA;AAAA,UAC5D;AACA,UAAA,SAAA,IAAa,IAAA,CAAK,IAAA;AAAA,QACpB;AACA,QAAA,IAAI,WAAA,GAAc,EAAA;AAClB,QAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,EAAM;AAC/B,UAAA,IAAI,IAAA,CAAK,SAAS,SAAA,IAAa,CAAC,SAAS,IAAA,CAAK,IAAA,CAAK,IAAI,CAAA,EAAG;AACxD,YAAA,MAAM,IAAI,UAAA,CAAW,iCAAA,EAAmC,IAAI,CAAA;AAAA,UAC9D;AACA,UAAA,WAAA,IAAe,IAAA,CAAK,IAAA;AAAA,QACtB;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,SAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,SAAA,GAAY,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,cAAA,CAAe,CAAC,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAC/E,QAAA,MAAM,WAAA,GAAc,KAAA,CAAM,WAAA,CAAY,KAAA,CAAM,EAAE,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,cAAA,CAAe,CAAC,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAEnF,QAAA,MAAM3B,KAAAA,GAAO,IAAI,QAAA,CAAS,SAAA,GAAY,WAAW,WAAA,EAAa,KAAA,CAAM,MAAM,KAAK,CAAA;AAC/E,QAAA,OAAO,IAAI,SAAS,IAAA,EAAM,CAACA,KAAI,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAAA,MACxD;AAAA,KACD,CAAA;AAID,IAAA,IAAM,OAAA,GAAU;AAAA,MACd,QAAA,EAAU,GAAA;AAAA,MACV,aAAA,EAAe,GAAA;AAAA,MACf,QAAA,EAAU,GAAA;AAAA,MACV,cAAA,EAAgB,GAAA;AAAA,MAChB,gBAAA,EAAkB,GAAA;AAAA,MAClB,SAAA,EAAW,GAAA;AAAA,MACX,cAAA,EAAgB,CAAA;AAAA,MAChB,SAAA,EAAW,GAAA;AAAA,MACX,SAAA,EAAW,IAAA;AAAA,MACX,SAAA,EAAW,KAAA;AAAA,MACX,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,QAAA;AAAA,MACN,KAAA,EAAO;AAAA,QACL,QAAA;AAAA,QACA,aAAA;AAAA,QACA,QAAA;AAAA,QACA,cAAA;AAAA,QACA,gBAAA;AAAA,QACA,SAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,kBAAkB,QAAA,EAAU,MAAA,IAAU,IAAA,KAAS;AACzD,QAAA,IAAI,MAAA,CAAO,QAAA,CAAS,MAAA,IAAU,MAAA,CAAO,SAAS,MAAA,EAAQ;AAEpD,UAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,mCAAA,EAAsC,QAAQ,CAAA,yBAAA,CAA2B,CAAA;AAAA,QACvF;AACA,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,KAAA,EAAO,kBAAkB,IAAI,CAAA;AACjE,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,QAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,WAAW,KAAA,CAAM,YAAA,CAAa,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAC,CAAA;AAC3D,QAAA,MAAM2B,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAElD,QAAA,MAAM,IAAA,GAAO,eAAeA,MAAK,CAAA;AACjC,QAAA,MAAM,MAAA,GAAA,CAAU,QAAQ,KAAA,CAAM,QAAQ,IAAI,KAAA,CAAM,QAAA,EAAU,QAAQ,CAAC,CAAA;AACnE,QAAA,IAAA,CAAK,YAAA,CAAa,UAAA,EAAY,MAAA,GAAS,IAAI,CAAA;AAC3C,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAID,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,OAAA;AAAA,MACN,KAAA,EAAO,CAAC,SAAS,CAAA;AAAA,MACjB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB,CAAA;AAAA,QACjB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,SAAS,CAAC,EAAE,MAAA,EAAO,EAAG,MAAM,OAAA,KAAY;AACtC,QAAA,IAAI,WAAA,GAAc,KAAA;AAClB,QAAA,IAAI,UAAA,GAAa,KAAA;AACjB,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA,IAAK,eAAe,OAAA,CAAQ,CAAC,GAAG,UAAU,CAAA;AACjE,QAAA,IAAI,KAAA,EAAO;AAIT,UAAA,IAAI,MAAA,GAAS,EAAA;AACb,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,IAAA,CAAK,MAAA,EAAQ,EAAE,CAAA,EAAG;AAC1C,YAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AAEzB,YAAA,MAAA,GAAS,IAAA,CAAK,IAAA;AACd,YAAA,IAAI,WAAW,GAAA,EAAK;AAClB,cAAA,WAAA,GAAc,IAAA;AAAA,YAChB,CAAA,MAAA,IAAW,WAAW,GAAA,EAAK;AACzB,cAAA,UAAA,GAAa,IAAA;AAAA,YACf,CAAA,MAAO;AACL,cAAA,WAAA,GAAc,KAAA;AACd,cAAA,UAAA,GAAa,KAAA;AACb,cAAA;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,MAAO;AACL,UAAA,WAAA,GAAc,IAAA;AACd,UAAA,UAAA,GAAa,IAAA;AAAA,QACf;AAEA,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,OAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,EAAe,CAAC,KAAA,EAAO,KAAA,KAAU;AAC/B,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,SAAA,EAAW,CAAC,aAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AAEtE,QAAA,IAAI,MAAM,WAAA,EAAa;AACrB,UAAA,IAAA,CAAK,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QACnC;AAEA,QAAA,IAAI,MAAM,UAAA,EAAY;AACpB,UAAA,IAAA,CAAK,YAAA,CAAa,SAAS,KAAK,CAAA;AAAA,QAClC;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAGD,IAAA,IAAM,QAAA,GAAW;AAAA,MAAC,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,QAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,QAAA;AAAA,MACtF,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,QAAA;AAAA,MAAK,SAAA;AAAA,MAAW,WAAA;AAAA,MAAa,QAAA;AAAA,MAC1E,SAAA;AAAA,MAAW,MAAA;AAAA,MAAQ,SAAA;AAAA,MAAW,MAAA;AAAA,MAAQ,OAAA;AAAA,MAAS;AAAA,KAAS;AAE1D,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,MAAM,OAAA,EAAS;AACjC,QAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AAGnB,QAAA,IAAI,KAAK,IAAA,IAAQ,IAAA,CAAK,KAAK,MAAA,KAAW,CAAA,IAAK,KAAK,IAAA,CAAK,CAAC,CAAA,CAAE,IAAA,IAClD,SAAS,QAAA,CAAS,IAAA,CAAK,KAAK,CAAC,CAAA,CAAE,IAAI,CAAA,EAAG;AAG1C,UAAA,IAAA,CAAK,KAAK,IAAA,CAAK;AAAA,YACb,MAAA,EAAQ,MAAA;AAAA,YACR,MAAA,EAAQ,MAAA;AAAA,YACR,OAAA,EAAS,IAAA;AAAA,YACT,OAAA,EAAS,EAAE,QAAA,EAAU,CAAA,EAAG,QAAQ,IAAA,EAAK;AAAA,YACrC,QAAA,EAAU,EAAE,QAAA,EAAU,GAAA,EAAK,QAAQ,IAAA;AAAK,WACzC,CAAA;AAAA,QACH;AACA,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,KAAA;AACxB,QAAA,OAAO,KAAA,GACH,IAAI,QAAA,CAAS,OAAA,EAAS;AAAA,UACtB,YAAA,CAAa,MAAM,KAAK,CAAA;AAAA,UACxB,YAAA,CAAa,KAAA,EAAO,KAAA,CAAM,cAAA,EAAgB;AAAA,SAC3C,CAAA,GACD,IAAI,QAAA,CAAS,OAAA,EAAS,CAAC,YAAA,CAAa,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AAAA,MACrD;AAAA,KACD,CAAA;AAED,IAAA,IAAM,QAAA,GAAW;AAAA,MACf,OAAA,EAAS,CAAA;AAAA,MACT,IAAA,EAAM,CAAA;AAAA,MACN,MAAA,EAAQ,CAAA;AAAA,MACR,YAAA,EAAc;AAAA,KAChB;AAEA,IAAA,IAAM,eAAA,GAAkB;AAAA,MACtB,OAAA,EAAS,CAAC,GAAA,EAAK,MAAM,CAAA;AAAA,MACrB,IAAA,EAAM,CAAC,GAAA,EAAK,OAAO,CAAA;AAAA,MACnB,MAAA,EAAQ,CAAC,GAAA,EAAK,OAAO,CAAA;AAAA,MACrB,YAAA,EAAc,CAAC,GAAA,EAAK,OAAO;AAAA,KAC7B;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,gBAAA,EAAkB,aAAA,EAAe,iBAAiB,qBAAqB,CAAA;AAAA,MAC/E,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe,IAAA;AAAA,QACf,SAAA,EAAW;AAAA,OACb;AAAA,MACA,QAAQ,EAAE,gBAAA,EAAkB,QAAA,EAAU,MAAA,IAAU,IAAA,EAAM;AAEpD,QAAA,MAAM,IAAA,GAAO,MAAA,CAAO,eAAA,CAAgB,IAAA,EAAM,kBAAkB,IAAI,CAAA;AAEhE,QAAA,MAAMN,eAAc,QAAA,CAAS,KAAA,CAAM,CAAA,EAAG,QAAA,CAAS,SAAS,CAAC,CAAA;AACzD,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA;AAAA;AAAA,UAGb,WAAA,EAAAA,YAAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAE1B,QAAA,MAAM,WAAW,KAAA,CAAM,SAAA,CAAU,QAAA,CAAS,KAAA,CAAM,WAAW,CAAC,CAAA;AAG5D,QAAA,MAAMM,MAAAA,GAAQ,eAAA,CAAgB,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AAElD,QAAA,MAAM,IAAA,GAAO,eAAeA,MAAK,CAAA;AAEjC,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,KAAA,CAAM,WAAW,CAAA;AAG9C,QAAA,IAAA,CAAK,YAAA,CAAa,aAAA,EAAe,IAAA,CAAK,CAAC,CAAC,CAAA;AACxC,QAAA,IAAA,CAAK,YAAA,CAAa,cAAA,EAAgB,IAAA,CAAK,CAAC,CAAC,CAAA;AAEzC,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAWD,IAAA,IAAM,WAAA,GAAc,2BAAA;AAGpB,IAAA,IAAM,QAAA,GAAW,sGAAA;AACjB,IAAA,IAAM,SAAA,GAAY,mIAAA;AAClB,IAAA,IAAM,QAAA,GAAW,kBAAA;AAIjB,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,QAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAE1B,QAAA,IAAI,SAAA,GAAY,KAAA;AAChB,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,KAAA;AACJ,QAAA,IAAI,mBAAA,GAAsB,KAAA;AAC1B,QAAA,IAAI,WAAA,GAAc,KAAA;AAClB,QAAA,IAAI,iBAAA,GAAoB,KAAA;AAExB,QAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,SAAS,cAAA,EAAgB;AACpD,UAAA,KAAA,GAAQ,CAAC,CAAC,KAAA,CAAM,GAAA;AAChB,UAAA,IAAI,KAAA,KAAU,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ;AAC/B,YAAA,SAAA,GAAY,IAAA;AACZ,YAAA,MAAA,GAAS,MAAM,IAAA,CAAK,MAAA;AAAA,UACtB;AAAA,QACF;AAEA,QAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,CAAC,KAAA,CAAM,KAAA,KACtB,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,IAAA,IAAQ,KAAA,CAAM,IAAA,CAAK,IAAA,KAAS,cAAA,CAAA,EAAiB;AAClE,UAAA,KAAA,CAAM,KAAK,cAAA,GAAiB,IAAA;AAC5B,UAAA,mBAAA,GAAsB,CAAC,MAAM,IAAA,CAAK,MAAA;AAClC,UAAA,WAAA,GAAc,mBAAA,IAAuB,CAAC,KAAA,CAAM,qBAAA;AAC5C,UAAA,iBAAA,GAAoB,MAAM,IAAA,CAAK,iBAAA;AAAA,QACjC;AAEA,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,IAAS,KAAA,CAAM,KAAK,IAAA,CAAK,MAAA,KAAW,CAAA,GACvD,CAAC,YAAA,CAAa,KAAA,CAAM,KAAK,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA,GACxC,CAAC,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAA;AAQpC,QAAA,MAAM,UAAA,GAAa,MAAM,UAAA,EAAW;AACpC,QAAA,IAAI,MAAM,GAAA,EAAK;AACb,UAAA,MAAM,GAAA,GAAM,YAAA,CAAa,KAAA,CAAM,GAAA,EAAK,UAAU,CAAA;AAC9C,UAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AAAE,YAAA,GAAA,CAAI,YAAA,CAAa,eAAe,GAAG,CAAA;AAAA,UAAG;AAC/D,UAAA,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,QACnB;AAEA,QAAA,IAAI,MAAM,GAAA,EAAK;AACb,UAAA,MAAM,GAAA,GAAM,YAAA,CAAa,KAAA,CAAM,GAAA,EAAK,UAAU,CAAA;AAC9C,UAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AAAE,YAAA,GAAA,CAAI,YAAA,CAAa,eAAe,GAAG,CAAA;AAAA,UAAG;AAC/D,UAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,QAAQ,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAEjE,YAAA,MAAM3B,KAAAA,GAAO,MAAM,IAAA,CAAK,IAAA;AACxB,YAAA,IAAI,QAAA,CAAS,OAAA,CAAQA,KAAI,CAAA,GAAI,EAAA,EAAI;AAC/B,cAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,YAChC,CAAA,MAAA,IAAW,SAAA,CAAU,OAAA,CAAQA,KAAI,IAAI,EAAA,EAAI;AACvC,cAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,YAChC,CAAA,MAAA,IAAW,QAAA,CAAS,OAAA,CAAQA,KAAI,IAAI,EAAA,EAAI;AACtC,cAAA,GAAA,CAAI,OAAA,CAAQ,KAAK,aAAa,CAAA;AAAA,YAChC;AAAA,UACF;AACA,UAAA,QAAA,CAAS,KAAK,GAAG,CAAA;AAAA,QACnB;AAEA,QAAA,IAAI,QAAA;AACJ,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,QAAA,GAAW,SAAS,OAAA,GAAU,QAAA;AAAA,QAChC,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,GAAA,EAAK;AACrB,UAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,UAAA,IACE,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,IAAA,IACd,IAAA,CAAK,MAAA,KACJ,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,IAAW,IAAA,CAAK,kBAAA,CAAA,EAC5C;AACA,YAAA,QAAA,GAAW,OAAA;AAAA,UACb,CAAA,MAAA,IACE,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,cAAA,IACd,IAAA,CAAK,kBAAA,KACJ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,CAAA,EAC3C;AACA,YAAA,QAAA,GAAW,OAAA;AAAA,UACb,CAAA,MAAO;AACL,YAAA,QAAA,GAAW,MAAA;AAAA,UACb;AAAA,QACF,CAAA,MAAA,IAAW,CAAC,KAAA,CAAM,GAAA,EAAK;AACrB,UAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,UAAA,IAAI,MAAM,KAAA,EAAO;AACf,YAAA,QAAA,GAAW,QAAA;AAAA,UACb,CAAA,MAAA,IACE,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,IAAA,IACd,IAAA,CAAK,MAAA,KACJ,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,IAAW,IAAA,CAAK,kBAAA,CAAA,EAC5C;AACA,YAAA,QAAA,GAAW,QAAA;AAAA,UACb,CAAA,MAAA,IACE,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,cAAA,IACd,IAAA,CAAK,kBAAA,KACJ,IAAA,CAAK,MAAA,IAAU,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,CAAA,EAC3C;AACA,YAAA,QAAA,GAAW,QAAA;AAAA,UACb,CAAA,MAAO;AACL,YAAA,QAAA,GAAW,MAAA;AAAA,UACb;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,UAAA,IAAI,IAAA,KAAU,IAAA,CAAK,IAAA,KAAS,IAAA,IAAQ,KAAK,MAAA,IAAW,IAAA,CAAK,IAAA,KAAS,aAAA,CAAA,KAC/D,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,IAAW,KAAK,kBAAA,CAAA,EAC5C;AACA,YAAA,QAAA,GAAW,YAAA;AAAA,UACb,CAAA,MAAA,IACE,IAAA,IACA,IAAA,CAAK,IAAA,KAAS,cAAA,IACd,IAAA,CAAK,kBAAA,KACJ,KAAA,CAAM,KAAA,KAAU,UAAA,CAAW,OAAA,IAAW,IAAA,CAAK,MAAA,CAAA,EAC5C;AACA,YAAA,QAAA,GAAW,YAAA;AAAA,UACb,CAAA,MAAO;AACL,YAAA,QAAA,GAAW,SAAA;AAAA,UACb;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,GAAO,IAAI,QAAA,CAAS,QAAA,EAAU,QAAQ,CAAA;AAC1C,QAAA,IAAI,mBAAA,EAAqB;AAGvB,UAAA,MAAM,QAAA,GAAW,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,QAAA,EAAU,MAAM,CAAC,CAAC,CAAA;AAChE,UAAA,IAAI,iBAAA,EAAmB;AACrB,YAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAQ,CAAA;AACnC,YAAA,KAAA,CAAM,YAAA,CAAa,SAAS,UAAU,CAAA;AACtC,YAAA,IAAA,GAAO,mBAAA,CAAoB,CAAC,KAAA,EAAO,IAAA,EAAM,QAAQ,CAAC,CAAA;AAAA,UACpD,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,mBAAA,CAAoB,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AAAA,UAC7C;AACA,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,QAAQ,CAAA;AACnC,YAAA,KAAA,CAAM,YAAA,CAAa,SAAS,UAAU,CAAA;AACtC,YAAA,IAAA,CAAK,QAAA,CAAS,KAAK,KAAK,CAAA;AAAA,UAC1B;AAAA,QACF,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAG;AAErC,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,IAAI,CAAC,CAAA;AAAA,QACpC;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAID,IAAA,IAAM,KAAA,GAAQ;AAAA,MAAC,YAAA;AAAA,MAAc,aAAA;AAAA,MAAe,iBAAA;AAAA,MAC1C,kBAAA;AAAA,MAAoB;AAAA,KAAiB;AAEvC,IAAA,IAAM,MAAA,GAAS,CAAC,OAAA,EAAS,OAAA,EAAS,eAAe,CAAA;AAEjD,IAAA,IAAM,UAAU,CAAA,GAAA,KAAO;AACrB,MAAA,IAAI,GAAA,CAAI,WAAW,CAAA,EAAG;AACpB,QAAA,MAAM,SAAA,GAAY,GAAA,CAAI,WAAA,CAAY,CAAC,CAAA;AACnC,QAAA,OAAQ,IAAA,GAAS,aAAa,SAAA,GAAY,IAAA;AAAA,MAC5C;AACA,MAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,OAAO,CAAA,GAAI,EAAA,IAAM,GAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,GAAI,EAAA,IAAM,MAAA,CAAO,QAAA,CAAS,GAAG,CAAA;AAAA,IACxF,CAAA;AAEA,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,MAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAAC,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA;AAClE,QAAA,IAAI,KAAA,CAAM,WAAW,OAAA,EAAS;AAC5B,UAAA,IAAA,CAAK,YAAA,CAAa,aAAa,MAAM,CAAA;AAAA,QACvC,WAAW,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,KAAA,CAAM,WAAW,OAAA,EAAS;AAG9D,UAAA,IAAI,KAAA,CAAM,WAAW,MAAA,EAAQ;AAC3B,YAAA,IAAA,CAAK,YAAA,CAAa,QAAQ,QAAQ,CAAA;AAElC,YAAA,IAAA,CAAK,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,UACvC,CAAA,MAAA,IAAW,KAAA,CAAM,MAAA,KAAW,OAAA,EAAS;AACnC,YAAA,IAAA,CAAK,YAAA,CAAa,QAAQ,SAAS,CAAA;AACnC,YAAA,IAAA,CAAK,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,UACvC;AAAA,QACF,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,OAAA,EAAS;AAEjC,UAAA,IAAA,CAAK,YAAA,CAAa,UAAU,QAAQ,CAAA;AACpC,UAAA,IAAA,CAAK,YAAA,CAAa,UAAU,QAAQ,CAAA;AACpC,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,QACvC,WAAW,KAAA,CAAM,MAAA,KAAW,SAAS,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,EAAG;AACxD,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,QACvC,CAAA,MAAA,IAAW,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG;AACrC,UAAA,IAAA,CAAK,YAAA,CAAa,YAAY,KAAK,CAAA;AAAA,QACrC,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,GAAA,EAAK;AAE7B,UAAA,IAAA,CAAK,WAAW,MAAA,GAAS,UAAA;AACzB,UAAA,IAAA,CAAK,WAAW,MAAA,GAAS,UAAA;AAAA,QAC3B,CAAA,MAAA,IAAW,MAAM,YAAA,EAAc;AAE7B,UAAA,IAAI,KAAA,CAAM,WAAW,KAAA,EAAO;AAC1B,YAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,OAAA,CAAQ,KAAK,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAC,CAAC,CAAA;AAAA,UACpE,CAAA,MAAO;AAEL,YAAA,OAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,OAAA,CAAQ,MAAM,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,MAAM,CAAC,CAAC,CAAA;AAAA,UACtE;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAKD,IAAA,IAAM,OAAA,GAAU;AAAA;AAAA,MAEd,MAAA,EAAQ,MAAA;AAAA,MACR,MAAA,EAAQ,QAAA;AAAA,MACR,MAAA,EAAQ,QAAA;AAAA,MACR,MAAA,EAAQ,QAAA;AAAA,MACR,UAAA,EAAY,QAAA;AAAA;AAAA,MAGZ,MAAA,EAAQ,eAAA;AAAA,MACR,OAAA,EAAS,QAAA;AAAA,MACT,QAAA,EAAU,SAAA;AAAA,MACV,OAAA,EAAS,QAAA;AAAA,MACT,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA,EAAQ;AAAA,KACV;AAKA,IAAA,IAAM,UAAA,GAAa,SAAS,KAAA,EAAO,KAAA,EAAO;AAOxC,MAAA,IAAI,KAAA,CAAM,eAAe,QAAA,EAAU;AACjC,QAAA,OAAO,WAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,KAAe,QAAA,EAAU;AACxC,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,KAAe,QAAA,EAAU;AACxC,QAAA,IAAI,KAAA,CAAM,SAAA,KAAc,QAAA,IAAY,KAAA,CAAM,eAAe,QAAA,EAAU;AACjE,UAAA,OAAO,wBAAA;AAAA,QACT,CAAA,MAAA,IAAW,KAAA,CAAM,SAAA,KAAc,QAAA,EAAU;AACvC,UAAA,OAAO,mBAAA;AAAA,QACT,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,KAAe,QAAA,EAAU;AACxC,UAAA,OAAO,iBAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,OAAO,YAAA;AAAA,QACT;AAAA,MACF,WAAW,KAAA,CAAM,SAAA,KAAc,QAAA,IAAY,KAAA,CAAM,eAAe,QAAA,EAAU;AACxE,QAAA,OAAO,aAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,CAAM,SAAA,KAAc,QAAA,EAAU;AACvC,QAAA,OAAO,QAAA;AAAA,MACT,CAAA,MAAA,IAAW,KAAA,CAAM,UAAA,KAAe,QAAA,EAAU;AACxC,QAAA,OAAO,MAAA;AAAA,MACT;AAGA,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,MAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,KAAS,YAAA,EAAc;AAClC,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AACnB,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,QAAA;AACH,UAAA,OAAO,QAAA;AAAA,QACT,KAAK,QAAA,EAAU;AACb,UAAA,MAAM,SAAA,GAAY,KAAA,CAAM,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA;AAE1C,UAAA,OAAS,GAAA,GAAS,SAAA,IAAa,SAAA,GAAY,GAAA,GAAU,QAAA,GAAW,QAAA;AAAA,QAClE;AAAA,QACA,KAAK,aAAA;AACH,UAAA,OAAO,QAAA;AAAA,QACT,KAAK,UAAA;AACH,UAAA,OAAO,QAAA;AAAA,QACT,KAAK,YAAA;AAAA,QACL,KAAK,gBAAA;AACH,UAAA,OAAO,aAAA;AAAA,QACT,KAAK,QAAA;AACH,UAAA,OAAO,MAAA;AAAA,QACT,KAAK,QAAA;AACH,UAAA,OAAO,eAAA;AAAA,QACT,KAAK,UAAA;AACH,UAAA,OAAO,SAAA;AAAA,QACT,KAAK,SAAA;AAAA,QACL,KAAK,SAAA;AACH,UAAA,OAAO,QAAA;AAAA,QACT,KAAK,QAAA;AACH,UAAA,OAAO,YAAA;AAAA,QACT,KAAK,UAAA;AACH,UAAA,OAAO,mBAAA;AAAA,QACT,KAAK,QAAA;AACH,UAAA,OAAO,WAAA;AAAA;AAGX,MAAA,IAAIA,QAAO,KAAA,CAAM,IAAA;AACjB,MAAA,IAAI,OAAA,CAAQ,IAAI,CAAA,CAAEA,KAAI,CAAA,IAAK,QAAQ,IAAI,CAAA,CAAEA,KAAI,CAAA,CAAE,OAAA,EAAS;AACtD,QAAAA,KAAAA,GAAO,OAAA,CAAQ,IAAI,CAAA,CAAEA,KAAI,CAAA,CAAE,OAAA;AAAA,MAC7B;AAEA,MAAA,OAAO,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,SAAS,IAAI,CAAA,GAAI,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA;AAAA,IAC/E,CAAA;AAKA,IAAA,IAAM,WAAA,GAAc,oBAAA;AACpB,IAAA,IAAM,UAAA,GAAa,UAAA;AACnB,IAAA,IAAM,MAAA,uBAAa,GAAA,CAAI;AAAA,MAAC,SAAA;AAAA,MAAW,UAAA;AAAA,MAAY,WAAA;AAAA,MAAa,UAAA;AAAA,MAC1D,aAAA;AAAA,MAAe,cAAA;AAAA,MAAgB;AAAA,KAAgB,CAAA;AAEjD,IAAA,IAAM,YAAA,GAAe,CAACA,KAAAA,EAAM,OAAA,EAAS,GAAA,KAAQ;AAC3C,MAAA,MAAM,KAAK,IAAI,QAAA,CAAS,GAAA,EAAK,CAACA,KAAI,CAAC,CAAA;AACnC,MAAA,MAAM,UAAU,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,EAAE,CAAC,CAAA;AAC3C,MAAA,OAAA,CAAQ,KAAA,CAAM,YAAY,CAAA,GAAI,QAAA;AAC9B,MAAA,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA,GAAI,mCAAA;AAC/B,MAAA,IAAI,YAAY,aAAA,EAAe;AAAE,QAAA,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA,GAAI,MAAA;AAAA,MAAQ;AACxE,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAEA,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,SAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAMA,QAAO,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,KAAA,CAAM,MAAM,KAAK,CAAA;AACnD,QAAA,MAAM,SAAA,GAAYA,KAAAA,CAAK,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA;AAEzC,QAAA,MAAM,cAAA,GAAkB,GAAA,GAAS,SAAA,IAAa,SAAA,GAAY,MAAU,QAAA,GAAW,QAAA;AAC/E,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA,IAAK,cAAA;AAC5C,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAAA,KAAAA,CAAK,IAAA,GAAO,WAAA,CAAYA,KAAAA,CAAK,MAAM,OAAO,CAAA;AAC1C,UAAA,OAAO,IAAI,SAAS,IAAA,EAAM,CAACA,KAAI,CAAA,EAAG,CAAC,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,QAChD,CAAA,MAAA,IAAW,YAAY,QAAA,EAAU;AAC/B,UAAAA,KAAAA,CAAK,IAAA,GAAO,WAAA,CAAYA,KAAAA,CAAK,MAAM,OAAO,CAAA;AAAA,QAC5C;AACA,QAAA,IAAI,OAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAACA,KAAI,CAAC,CAAA;AAEpC,QAAA,IAAI,YAAY,QAAA,EAAU;AACxB,UAAA,IAAA,CAAK,YAAA,CAAa,eAAe,QAAQ,CAAA;AACzC,UAAA,IAAIA,KAAAA,CAAK,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAE1B,YAAA,MAAM,MAAA,GAAS,IAAI,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACxC,YAAA,IAAA,GAAO,IAAI,QAAA,CAAS,MAAA,EAAQ,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA;AAAA,UAC5C;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,SAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,IAAI,KAAK,KAAA,CAAM,IAAA;AACf,QAAA,MAAM,SAAA,GAAY,EAAA,CAAG,WAAA,CAAY,CAAC,CAAA;AAClC,QAAA,IAAI,KAAA,CAAM,eAAe,QAAA,EAAU;AAEjC,UAAA,IAAI,EAAA,GAAK,SAAA,IAAa,SAAA,GAAY,GAAA,EAAK;AACrC,YAAA,EAAA,GAAK,UAAU,EAAE,CAAA;AAAA,UACnB;AAAA,QACF;AACA,QAAA,MAAMA,KAAAA,GAAO,QAAA,CAAS,EAAA,EAAI,KAAA,CAAM,MAAM,KAAK,CAAA;AAC3C,QAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,EAAO,KAAK,CAAA,IAAK,QAAA;AAE5C,QAAA,IAAI,IAAA;AACJ,QAAA,IAAI,WAAA,CAAY,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,EAAG;AAChC,UAAA,MAAM,GAAA,GAAM,KAAA,CAAM,IAAA,KAAS,MAAA,GAAS,OAAA,GAAU,IAAA;AAC9C,UAAA,IAAI,OAAA,KAAY,QAAA,IAAY,OAAA,KAAY,aAAA,EAAe;AACrD,YAAA,OAAO,YAAA,CAAaA,KAAAA,EAAM,OAAA,EAAS,GAAG,CAAA;AAAA,UACxC,CAAA,MAAO;AACL,YAAA,IAAI,YAAY,QAAA,EAAU;AACxB,cAAAA,KAAAA,CAAK,IAAA,GAAOA,KAAAA,CAAK,IAAA,CAAK,MAAM,EAAE,CAAA,CAAE,GAAA,CAAI,CAAA,CAAA,KAAK,YAAY,CAAA,EAAG,OAAO,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,YAC3E;AACA,YAAA,IAAA,GAAO,IAAI,QAAA,CAAS,GAAA,EAAK,CAACA,KAAI,CAAC,CAAA;AAAA,UACjC;AAAA,QACF,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AAChC,UAAA,IAAI,YAAY,QAAA,EAAU;AACxB,YAAAA,KAAAA,CAAK,IAAA,GAAO,WAAA,CAAYA,KAAAA,CAAK,MAAM,OAAO,CAAA;AAAA,UAC5C;AACA,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAACA,KAAI,CAAC,CAAA;AAAA,QACrC,CAAA,MAAA,IAAW,MAAA,CAAO,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,EAAG;AACjC,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAACA,KAAI,CAAC,CAAA;AAEhC,UAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,WAAW,CAAA;AAAA,QAC/B,CAAA,MAAO;AACL,UAAA,MAAM,WAAWA,KAAAA,CAAK,IAAA;AACtB,UAAA,IAAI,YAAY,QAAA,EAAU;AACxB,YAAAA,KAAAA,CAAK,IAAA,GAAO,WAAA,CAAYA,KAAAA,CAAK,MAAM,OAAO,CAAA;AAAA,UAC5C;AACA,UAAA,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA,EAAM,CAACA,KAAI,CAAC,CAAA;AAChC,UAAA,IAAIA,MAAK,IAAA,KAAS,QAAA,IAAY,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA,EAAG;AACvD,YAAA,IAAA,CAAK,YAAA,CAAa,eAAe,QAAQ,CAAA;AAAA,UAC3C;AAAA,QACF;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAGD,IAAA,IAAM,QAAA,GAAW;AAAA,MACf,WAAA,EAAa,SAAA;AAAA,MACb,cAAA,EAAgB;AAAA,KAClB;AAOA,IAAA,IAAM,YAAA,GAAe;AAAA,MACnB,KAAK,EAAC;AAAA,MACN,OAAO,EAAC;AAAA,MACR,GAAA,EAAK;AAAA,QACH,SAAA,EAAW;AAAA,OACb;AAAA,MACA,WAAW,EAAC;AAAA,MACZ,gBAAA,EAAkB;AAAA,QAChB,SAAA,EAAW;AAAA;AACb,KACF;AAIA,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM,SAAA;AAAA,MACN,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,IAAI,IAAA;AAEJ,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,YAAA,EAAc,KAAA,CAAM,IAAI,CAAA,EAAG;AAIlE,UAAA,IAAA,GAAO,IAAI,SAAS,OAAA,EAAS,CAAC,IAAI,QAAA,CAAS,MAAQ,CAAC,CAAC,CAAA;AAAA,QACvD,CAAA,MAAA,IAAW,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,QAAA,EAAU,KAAA,CAAM,IAAI,CAAA,EAAG;AAGrE,UAAA,IAAA,GAAO,IAAI,SAAS,IAAI,CAAA;AACxB,UAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,YAAA,IAAA,CAAK,YAAA,CAAa,aAAa,SAAS,CAAA;AAAA,UAC1C;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,UAAA,CAAW,CAAA,uBAAA,EAA0B,KAAA,CAAM,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,QAC9D;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAED,IAAA,sBAAA,CAAuB;AAAA,MACrB,IAAA,EAAM;AAAA,KACP,CAAA;AAMD,IAAA,IAAM,gBAAA,GAAmB;AAAA,MACvB,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,UAAA,EAAY;AAAA;AAAA,KACd;AAEA,IAAA,IAAM,eAAA,GAAkB;AAAA,MACtB,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd;AAEA,IAAA,IAAM,cAAA,GAAiB;AAAA,MACrB,UAAA,EAAY,QAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd;AAEA,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,KAAA,KAAU;AACtC,MAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAEnB,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,MAAA,IAAW,gBAAA,CAAiB,IAAI,CAAA,EAAG;AACjC,QAAA,OAAO,KAAA,CAAM,kBAAA,CAAmB,gBAAA,CAAiB,IAAI,CAAC,CAAA;AAAA,MACxD,CAAA,MAAA,IAAW,eAAA,CAAgB,IAAI,CAAA,EAAG;AAChC,QAAA,OAAO,KAAA,CAAM,kBAAA,CAAmB,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,MACvD,CAAA,MAAA,IAAW,SAAS,QAAA,EAAU;AAC5B,QAAA,OAAO,KAAA,CAAM,cAAc,QAAA,GACvB,KAAA,CAAM,kBAAkB,QAAQ,CAAA,GAChC,KAAA,CAAM,iBAAA,CAAkB,QAAQ,CAAA;AAAA,MACtC;AACA,MAAA,OAAO,KAAA,CAAM,iBAAA,CAAkB,cAAA,CAAe,IAAI,CAAC,CAAA;AAAA,IACrD,CAAA;AAEA,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO;AAAA;AAAA,QAEL,QAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA;AAAA,QAEA,UAAA;AAAA,QACA,UAAA;AAAA;AAAA,QAEA,UAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,MAAM,CAAA;AAAA,QACjB,iBAAA,EAAmB,IAAA;AAAA,QACnB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAA,EAAM;AAClC,QAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AACnB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,YAAY,IAAI,CAAA;AAAA,UACtB,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAM,QAAA,GAAW,aAAA,CAAc,KAAA,EAAO,KAAK,CAAA;AAC3C,QAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,KAAA,CAAM,IAAA,EAAM,QAAQ,CAAA;AACpD,QAAA,OAAO,gBAAgB,IAAI,CAAA;AAAA,MAC7B;AAAA,KACD,CAAA;AAID,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,SAAA;AAAA,MACN,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,MACnB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,QAAA,EAAU,CAAC,UAAU,CAAA;AAAA,QACrB,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,EAAE,MAAA,EAAO,EAAG,IAAA,EAAM;AACxB,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,SAAA;AAAA,UACN,MAAM,MAAA,CAAO,IAAA;AAAA,UACb,IAAA,EAAM,KAAK,CAAC;AAAA,SACd;AAAA,MACF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAE1B,QAAA,MAAM,GAAA,GAAM,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,aAAa,KAAA,CAAM,IAAA,EAAM,KAAK,CAAC,CAAC,CAAA;AACjE,QAAA,GAAA,CAAI,MAAM,OAAA,GAAU,GAAA;AACpB,QAAA,MAAM,MAAM,IAAI,QAAA,CAAS,KAAA,EAAO,CAAC,GAAG,CAAC,CAAA;AACrC,QAAA,OAAO,IAAI,QAAA,CAAS,QAAA,EAAU,CAAC,GAAG,CAAC,CAAA;AAAA,MACrC;AAAA,KACD,CAAA;AAED,IAAA,cAAA,CAAe;AAAA,MACb,IAAA,EAAM,MAAA;AAAA,MACN,KAAA,EAAO,CAAC,QAAQ,CAAA;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,CAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS;AAK9B,QAAA,MAAM,IAAI,WAAW,2DAA2D,CAAA;AAAA,MAClF,CAAA;AAAA,MACA,aAAA,CAAc,OAAO,KAAA,EAAO;AAC1B,QAAA,MAAMA,KAAAA,GAAO,IAAI,QAAA,CAAS,QAAA,CAAS,KAAK,CAAC,CAAA;AACzC,QAAA,MAAM,OAAO,IAAI,QAAA,CAAS,OAAA,EAAS,CAACA,KAAI,CAAC,CAAA;AACzC,QAAA,IAAA,CAAK,YAAA,CAAa,eAAe,WAAW,CAAA;AAC5C,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACD,CAAA;AAQD,IAAA,IAAM,QAAA,GAAW,CAAC,KAAA,KAAU,KAAA,CAAM,IAAA,CAAK,QAAQ,IAAA,EAAM,KAAA,CAAM,IAAA,GAAO,QAAA,GAAW,MAAM,CAAA;AAInF,IAAA,IAAM,SAAA,GAAY,UAAA;AAwClB,IAAA,IAAM,gBAAA,GAAmB,UAAA;AACzB,IAAA,IAAM,sBAAA,GAAyB,gBAAA;AAC/B,IAAA,IAAM,wBAAA,GAA2B,sBAAA;AACjC,IAAA,IAAM,gCAAA,GAAmC,CAAA,CAAA,EAAI,sBAAsB,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAA,CAAA;AACvF,IAAA,IAAM,uBAAA,GAA0B,4BAAA;AAChC,IAAA,IAAM,8BAAA,GAAiC,iBAAA;AACvC,IAAA,IAAM,iCAAA,GAAoC,IAAI,MAAA,CAAO,CAAA,EAAG,8BAA8B,CAAA,EAAA,CAAI,CAAA;AAC1F,IAAA,IAAM,gBAAA,GACJ,CAAA,CAAA,EAAI,gBAAgB,CAAA,GAAA,EACjB,uBAAuB,CAAA,6CAAA,EAEvB,8BAA8B,CAAA,gCAAA,EAE9B,8BAA8B,CAAA,oDAAA,EAG7B,gCAAgC,CAAA,CAAA,EAChC,wBAAwB,CAAA,CAAA,CAAA;AAG9B,IAAA,IAAM,QAAN,MAAY;AAAA,MACV,WAAA,CAAY,OAAO,QAAA,EAAU;AAE3B,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAI,MAAA,CAAO,gBAAA,EAAkB,GAAG,CAAA;AAGlD,QAAA,IAAA,CAAK,QAAA,GAAW;AAAA,UACd,GAAA,EAAK,EAAA;AAAA;AAAA,UACL,GAAA,EAAK;AAAA;AAAA,SACP;AAAA,MACF;AAAA,MAEA,UAAA,CAAW,MAAM,IAAA,EAAM;AACrB,QAAA,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA,MAKA,GAAA,GAAM;AACJ,QAAA,MAAM,QAAQ,IAAA,CAAK,KAAA;AACnB,QAAA,MAAM,GAAA,GAAM,KAAK,UAAA,CAAW,SAAA;AAC5B,QAAA,IAAI,GAAA,KAAQ,MAAM,MAAA,EAAQ;AACxB,UAAA,OAAO,IAAI,MAAM,KAAA,EAAO,IAAI,eAAe,IAAA,EAAM,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,QAC5D;AACA,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AACxC,QAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,CAAM,KAAA,KAAU,GAAA,EAAK;AACzC,UAAA,MAAM,IAAI,UAAA;AAAA,YACR,CAAA,uBAAA,EAA0B,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA,CAAA;AAAA,YACpC,IAAI,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA,EAAG,IAAI,cAAA,CAAe,IAAA,EAAM,GAAA,EAAK,GAAA,GAAM,CAAC,CAAC;AAAA,WAC9D;AAAA,QACF;AACA,QAAA,MAAMA,KAAAA,GAAO,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAA,GAAI,KAAA,GAAQ,GAAA,CAAA;AAEzD,QAAA,IAAI,IAAA,CAAK,QAAA,CAASA,KAAI,CAAA,KAAM,EAAA,EAAI;AAE9B,UAAA,MAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,IAAA,CAAK,WAAW,SAAS,CAAA;AAC7D,UAAA,IAAI,YAAY,EAAA,EAAI;AAClB,YAAA,IAAA,CAAK,UAAA,CAAW,YAAY,KAAA,CAAM,MAAA;AAClC,YAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAAQ;AACxB,cAAA,MAAM,IAAI,WAAW,mGACgC,CAAA;AAAA,YACvD;AAAA,UACF,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,UAAA,CAAW,YAAY,OAAA,GAAU,CAAA;AAAA,UACxC;AACA,UAAA,OAAO,KAAK,GAAA,EAAI;AAAA,QAClB;AAEA,QAAA,OAAO,IAAI,KAAA,CAAMA,KAAAA,EAAM,IAAI,cAAA,CAAe,MAAM,GAAA,EAAK,IAAA,CAAK,UAAA,CAAW,SAAS,CAAC,CAAA;AAAA,MACjF;AAAA,KACF;AAWA,IAAA,IAAM,YAAN,MAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOd,YAAY,QAAA,GAAW,EAAC,EAAG,YAAA,GAAe,EAAC,EAAG;AAC5C,QAAA,IAAA,CAAK,OAAA,GAAU,YAAA;AACf,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,aAAa,EAAC;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,GAAa;AACX,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW;AACT,QAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,UAAA,MAAM,IAAI,UAAA;AAAA,YACR;AAAA,WAEF;AAAA,QACF;AACA,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,GAAA,EAAI;AACnC,QAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,KAAM,CAAA,EAAG;AACxD,YAAA,IAAI,MAAA,CAAO,KAAK,CAAA,KAAM,MAAA,EAAW;AAC/B,cAAA,OAAO,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,YAC3B,CAAA,MAAO;AACL,cAAA,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,IAAA,EAAM;AACR,QAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,KAAK,OAAA,EAAS,IAAK,CAAA,IAC/D,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,IAAA,CAAK,UAAU,IAAK,CAAA;AAAA,MAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,IAAI,IAAA,EAAM;AACR,QAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,OAAA,EAAS,IAAK,CAAA,EAAG;AAC7D,UAAA,OAAO,IAAA,CAAK,QAAQ,IAAI,CAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,OAAO,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,QAC3B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,GAAA,CAAI,IAAA,EAAM,KAAA,EAAO,MAAA,GAAS,KAAA,EAAO;AAC/B,QAAA,IAAI,MAAA,EAAQ;AAKV,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAA,EAAK;AAC/C,YAAA,OAAO,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA,CAAE,IAAI,CAAA;AAAA,UAChC;AACA,UAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AAC9B,YAAA,IAAA,CAAK,WAAW,IAAA,CAAK,UAAA,CAAW,SAAS,CAAC,CAAA,CAAE,IAAI,CAAA,GAAI,KAAA;AAAA,UACtD;AAAA,QACF,CAAA,MAAO;AAIL,UAAA,MAAM,MAAM,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,UAAA,CAAW,SAAS,CAAC,CAAA;AACtD,UAAA,IAAI,GAAA,IAAO,CAAC,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,GAAA,EAAK,IAAK,CAAA,EAAG;AAC5D,YAAA,GAAA,CAAI,IAAI,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAAA,UAC/B;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,GAAI,KAAA;AAAA,MACvB;AAAA,KACF;AAUA,IAAA,IAAM,gBAAA,GAAmB;AAAA,MACvB,GAAA,EAAK,IAAA;AAAA;AAAA,MACL,CAAA,EAAG,IAAA;AAAA;AAAA,MACH,UAAA,EAAY,IAAA;AAAA;AAAA,MACZ,YAAA,EAAc;AAAA;AAAA,KAChB;AAEA,IAAA,IAAM,gBAAN,MAAoB;AAAA,MAClB,WAAA,CAAY,KAAA,EAAO,QAAA,EAAU,IAAA,EAAM;AACjC,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,cAAA,GAAiB,CAAA;AACtB,QAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAEf,QAAA,IAAA,CAAK,MAAA,GAAS,IAAI,SAAA,CAAU,MAAA,EAAQ,SAAS,MAAM,CAAA;AACnD,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,KAAK,KAAA,EAAO;AACV,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,EAAO,KAAK,QAAQ,CAAA;AAAA,MAC7C;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,OAAA,EAAS;AAClB,QAAA,IAAA,CAAK,IAAA,GAAO,OAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,GAAa;AACX,QAAA,IAAA,CAAK,OAAO,UAAA,EAAW;AAAA,MACzB;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW;AACT,QAAA,IAAA,CAAK,OAAO,QAAA,EAAS;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,GAAS;AACP,QAAA,IAAI,IAAA,CAAK,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AAC3B,UAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,KAAA,CAAM,GAAA,EAAK,CAAA;AAAA,QACjC;AACA,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MACzC;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GAAW;AACT,QAAA,IAAA,CAAK,MAAA,EAAO;AACZ,QAAA,OAAO,IAAA,CAAK,MAAM,GAAA,EAAI;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,UAAU,KAAA,EAAO;AACf,QAAA,IAAA,CAAK,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,MAAA,EAAQ;AACjB,QAAA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAG,MAAM,CAAA;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,aAAa,UAAA,EAAY;AACvB,QAAA,IAAI,KAAA;AACJ,QAAA,IAAI,GAAA;AACJ,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,IAAA,CAAK,aAAA,EAAc;AACnB,UAAA,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,IAAA,KAAS,GAAA,EAAK;AAC9B,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,KAAA,GAAQ,KAAK,QAAA,EAAS;AACtB,UAAA,CAAC,EAAE,QAAQ,GAAA,EAAI,GAAI,KAAK,UAAA,CAAW,CAAC,GAAG,CAAC,CAAA;AAAA,QAC1C,CAAA,MAAO;AACL,UAAA,CAAC,EAAE,MAAA,EAAQ,KAAA,EAAO,GAAA,EAAI,GAAI,KAAK,UAAA,EAAW;AAAA,QAC5C;AAGA,QAAA,IAAA,CAAK,UAAU,IAAI,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,GAAG,CAAC,CAAA;AAExC,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAA,OAAO,IAAI,KAAA,CAAM,EAAA,EAAI,eAAe,KAAA,CAAM,KAAA,EAAO,GAAG,CAAC,CAAA;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,GAAgB;AACd,QAAA,WAAS;AACP,UAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,EAAO;AAC1B,UAAA,IAAI,KAAA,CAAM,SAAS,GAAA,EAAK;AACtB,YAAA,IAAA,CAAK,MAAM,GAAA,EAAI;AAAA,UACjB,CAAA,MAAO;AACL,YAAA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAW,MAAA,EAAQ;AAOjB,QAAA,MAAM,SAAS,EAAC;AAChB,QAAA,MAAM,WAAA,GAAc,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA;AAC9C,QAAA,IAAI,CAAC,WAAA,EAAa;AAKhB,UAAA,IAAA,CAAK,aAAA,EAAc;AAAA,QACrB;AACA,QAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,EAAO;AAC1B,QAAA,IAAI,GAAA;AACJ,QAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,QAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,QAAA,GAAG;AACD,UAAA,GAAA,GAAM,KAAK,QAAA,EAAS;AACpB,UAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AACf,UAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,YAAA,EAAE,KAAA;AAAA,UACJ,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,KAAS,GAAA,EAAK;AAC3B,YAAA,EAAE,KAAA;AACF,YAAA,IAAI,UAAU,EAAA,EAAI;AAChB,cAAA,MAAM,IAAI,UAAA,CAAW,SAAA,EAAW,GAAG,CAAA;AAAA,YACrC;AAAA,UACF,CAAA,MAAA,IAAW,GAAA,CAAI,IAAA,KAAS,KAAA,EAAO;AAC7B,YAAA,MAAM,IAAI,UAAA;AAAA,cACR,6DAEG,MAAA,IAAU,WAAA,GAAc,MAAA,CAAO,KAAK,IAAI,GAAA,CAAA,GACzC,GAAA;AAAA,cACF;AAAA,aACF;AAAA,UACF;AACA,UAAA,IAAI,UAAU,WAAA,EAAa;AACzB,YAAA,IAAA,CAAK,KAAA,KAAU,CAAA,IAAM,KAAA,KAAU,CAAA,IAAK,MAAA,CAAO,KAAK,CAAA,KAAM,GAAA,KAAS,GAAA,CAAI,IAAA,KAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AACzF,cAAA,EAAE,KAAA;AACF,cAAA,IAAI,KAAA,KAAU,OAAO,MAAA,EAAQ;AAE3B,gBAAA,MAAA,CAAO,MAAA,CAAO,CAAC,KAAA,EAAO,KAAK,CAAA;AAC3B,gBAAA;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,KAAA,GAAQ,CAAA;AAAA,YACV;AAAA,UACF;AAAA,QACF,CAAA,QAAS,UAAU,CAAA,IAAK,WAAA;AAGxB,QAAA,IAAI,KAAA,CAAM,SAAS,GAAA,IAAO,MAAA,CAAO,OAAO,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,KAAS,GAAA,EAAK;AAChE,UAAA,MAAA,CAAO,GAAA,EAAI;AACX,UAAA,MAAA,CAAO,KAAA,EAAM;AAAA,QACf;AACA,QAAA,MAAA,CAAO,OAAA,EAAQ;AACf,QAAA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,GAAA,EAAK,GAAA,EAAI;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,WAAA,CAAY,SAASsB,WAAAA,EAAY;AAC/B,QAAA,IAAIA,WAAAA,EAAY;AACd,UAAA,IAAIA,WAAAA,CAAW,MAAA,KAAW,OAAA,GAAU,CAAA,EAAG;AACrC,YAAA,MAAM,IAAI,WAAW,4DAA4D,CAAA;AAAA,UACnF;AACA,UAAA,MAAM,MAAA,GAASA,YAAW,CAAC,CAAA;AAC3B,UAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACtC,YAAA,MAAM,GAAA,GAAM,KAAK,QAAA,EAAS;AAC1B,YAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,CAAI,IAAA,EAAM;AAC1B,cAAA,MAAM,IAAI,UAAA,CAAW,+CAAA,EAAiD,GAAG,CAAA;AAAA,YAC3E;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,OAAO,EAAC;AACd,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,EAAS,CAAA,EAAA,EAAK;AAChC,UAAA,IAAA,CAAK,IAAA,CAAK,KAAK,UAAA,CAAWA,WAAAA,IAAcA,YAAW,CAAA,GAAI,CAAC,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,QACnE;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAqBA,WAAW,cAAA,EAAgB;AACzB,QAAA,MAAM,QAAA,GAAW,KAAK,QAAA,EAAS;AAC/B,QAAA,MAAM,OAAO,QAAA,CAAS,IAAA;AACtB,QAAA,MAAM,YAAY,CAAC,QAAA,CAAS,WAAW,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,GAAI,IAAA;AAClE,QAAA,IAAI,SAAA,IAAa,IAAA,IAAS,cAAA,IAAkB,SAAA,CAAU,YAAA,EAAe;AACnE,UAAA,IAAI,cAAA,IAAkB,SAAA,IAAa,IAAA,IAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,IAAA,IAAQ,CAAC,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,EAAG;AACpF,YAAA,MAAM,IAAI,UAAA,CAAW,8BAAA,GAAiC,IAAI,CAAA;AAAA,UAC5D;AACA,UAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AACvB,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,IAAA,CAAK,cAAA,EAAA;AACL,QAAA,IAAI,IAAA,CAAK,cAAA,GAAiB,IAAA,CAAK,QAAA,CAAS,SAAA,EAAW;AACjD,UAAA,MAAM,IAAI,UAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AACA,QAAA,IAAI,SAAS,SAAA,CAAU,MAAA;AACvB,QAAA,MAAM,OAAO,IAAA,CAAK,WAAA,CAAY,SAAA,CAAU,OAAA,EAAS,UAAU,UAAU,CAAA;AACrE,QAAA,IAAI,UAAU,OAAA,EAAS;AAErB,UAAA,MAAA,GAAS,OAAO,KAAA,EAAM;AACtB,UAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,GAAG,CAAA,IAAK,CAAA,EAAG,EAAE,CAAA,EAAG;AAC3C,YAAA,IAAI,GAAA,GAAM,OAAO,CAAC,CAAA;AAClB,YAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,cAAA,IAAI,MAAM,CAAA,EAAG;AACX,gBAAA,MAAM,IAAI,UAAA,CAAW,6CAAA,EAA+C,GAAG,CAAA;AAAA,cACzE;AACA,cAAA,GAAA,GAAM,MAAA,CAAO,EAAE,CAAC,CAAA;AAChB,cAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AAEpB,gBAAA,MAAA,CAAO,MAAA,CAAO,CAAA,GAAI,CAAA,EAAG,CAAC,CAAA;AAAA,cACxB,CAAA,MAAA,IAAW,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AAEnC,gBAAA,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,EAAG,GAAG,KAAK,CAAC,GAAA,CAAI,IAAA,GAAO,CAAC,CAAC,CAAA;AAAA,cAC5C,CAAA,MAAO;AACL,gBAAA,MAAM,IAAI,UAAA,CAAW,6BAAA,EAA+B,GAAG,CAAA;AAAA,cACzD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAA,OAAO,MAAA,CAAO,MAAA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,iBAAA,GAAoB;AAClB,QAAA,IAAA,CAAK,UAAA,EAAW;AAChB,QAAA,OAAO,KAAK,MAAA,EAAO;AAAA,MACrB;AAAA;AAAA;AAAA;AAAA,MAKA,eAAA,GAAkB;AAChB,QAAA,WAAS;AACP,UAAA,IAAI,IAAA,CAAK,UAAA,EAAW,KAAM,KAAA,EAAO;AAC/B,YAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,EAAI;AAE7B,YAAA,IAAI,MAAM,YAAA,EAAc;AACtB,cAAA,KAAA,CAAM,IAAA,GAAO,SAAA;AAAA,YACf;AACA,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAGA,QAAA,MAAM,IAAI,KAAA,EAAM;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAY,IAAA,EAAM;AAChB,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,GAAI,IAAA,CAAK,YAAA,CAAa,CAAC,IAAI,KAAA,CAAM,IAAI,CAAC,CAAC,CAAA,GAAI,MAAA;AAAA,MACxE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,aAAa,MAAA,EAAQ;AACnB,QAAA,MAAM,SAAS,EAAC;AAChB,QAAA,MAAM,cAAA,GAAiB,KAAK,KAAA,CAAM,MAAA;AAClC,QAAA,IAAA,CAAK,WAAW,MAAM,CAAA;AACtB,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,cAAA,EAAgB;AAEzC,UAAA,IAAI,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,KAAM,KAAA,EAAO;AACnC,YAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAA,EAAI;AAC7B,YAAA,IAAI,MAAM,YAAA,EAAc;AAEtB,cAAA,KAAA,CAAM,QAAA,GAAW,KAAA;AACjB,cAAA,KAAA,CAAM,YAAA,GAAe,KAAA;AAAA,YACvB;AACA,YAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,UACnB;AAAA,QACF;AACA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,kBAAkB,IAAA,EAAM;AACtB,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,WAAA,CAAY,IAAI,CAAA;AACpC,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,OAAO,MAAA,CAAO,IAAI,CAAC,KAAA,KAAU,MAAM,IAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AAAA,QAClD,CAAA,MAAO;AACL,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,cAAc,IAAA,EAAM;AAClB,QAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AACvC,QAAA,IAAI,cAAc,IAAA,EAAM;AAEtB,UAAA,OAAO,UAAA;AAAA,QACT;AAGA,QAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,IAAI,CAAA;AACxC,UAAA,IAAI,OAAA,IAAW,IAAA,IAAQ,OAAA,KAAY,EAAA,EAAI;AACrC,YAAA;AAAA,UACF;AAAA,QACF;AACA,QAAA,MAAM,YAAY,OAAO,UAAA,KAAe,UAAA,GAAa,UAAA,CAAW,IAAI,CAAA,GAAI,UAAA;AACxE,QAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,UAAA,IAAI,OAAA,GAAU,CAAA;AACd,UAAA,IAAI,SAAA,CAAU,OAAA,CAAQ,GAAG,CAAA,KAAM,EAAA,EAAI;AACjC,YAAA,MAAM,QAAA,GAAW,SAAA,CAAU,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAC5C,YAAA,OAAO,SAAS,OAAA,CAAQ,GAAA,IAAO,OAAA,GAAU,CAAA,CAAE,MAAM,EAAA,EAAI;AACnD,cAAA,EAAE,OAAA;AAAA,YACJ;AAAA,UACF;AACA,UAAA,MAAM,SAAA,GAAY,IAAI,KAAA,CAAM,SAAA,EAAW,KAAK,QAAQ,CAAA;AACpD,UAAA,MAAM,SAAS,EAAC;AAChB,UAAA,IAAI,GAAA,GAAM,UAAU,GAAA,EAAI;AACxB,UAAA,OAAO,GAAA,CAAI,SAAS,KAAA,EAAO;AACzB,YAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AACf,YAAA,GAAA,GAAM,UAAU,GAAA,EAAI;AAAA,UACtB;AACA,UAAA,MAAA,CAAO,OAAA,EAAQ;AACf,UAAA,MAAM,QAAA,GAAW,EAAE,MAAA,EAAQ,OAAA,EAAQ;AACnC,UAAA,OAAO,QAAA;AAAA,QACT;AAEA,QAAA,OAAO,SAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAU,IAAA,EAAM;AACd,QAAA,OACE,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,KACpB,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,SAAA,EAAW,IAAK,CAAA,IACrD,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,IAAK,CAAA,IACxD,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,IAAK,KACxD,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,kBAAkB,IAAK,CAAA;AAAA,MAEhE;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,IAAA,EAAM;AACjB,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA;AAClC,QAAA,OAAO,KAAA,IAAS,OACZ,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,cAAc,CAAC,KAAA,CAAM,eACnE,MAAA,CAAO,SAAA,CAAU,eAAe,IAAA,CAAK,SAAA,EAAW,IAAK,CAAA,IAAK,CAAC,SAAA,CAAU,IAAI,CAAA,CAAE,SAAA;AAAA,MACjF;AAAA,KACF;AAIA,IAAA,IAAM,eAAA,GAAkB,0CAAA;AAExB,IAAA,IAAM,YAAA,GAAe,OAAO,MAAA,CAAO;AAAA,MACjC,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,MAAA,EAAK,GAAA;AAAA,MACL,MAAA,EAAK,GAAA;AAAA,MACL,MAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAK,GAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAAU,GAAA;AAAA,MACV,QAAA,EAA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,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,eAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,MAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,SAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,oBAAA;AAAA,MACL,QAAA,EAAK,oBAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,MACL,QAAA,EAAK,oBAAA;AAAA,MACL,QAAA,EAAK,oBAAA;AAAA,MACL,QAAA,EAAK,cAAA;AAAA,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","file":"tap.cjs","sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"'use strict';\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties,\n * including NodeList.\n *\n * @param {T[] | { length: number; [number]: T }} list\n * @param {function (item: T, index: number, list:T[]):boolean} predicate\n * @param {Partial<Pick<ArrayConstructor['prototype'], 'find'>>?} ac\n * Allows injecting a custom implementation in tests (`Array.prototype` by default).\n * @returns {T | undefined}\n * @template {unknown} T\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (hasOwn(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * If `Object.getOwnPropertyDescriptors` is available,\n * a new object with all properties of object but without any prototype is created and returned\n * after freezing it.\n *\n * @param {T} object\n * The object to freeze.\n * @param {Pick<ObjectConstructor, 'create' | 'freeze' | 'getOwnPropertyDescriptors'>} [oc=Object]\n * `Object` by default,\n * allows to inject custom object constructor for tests.\n * @returns {Readonly<T>}\n * @template {Object} T\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n * @prettierignore\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object;\n\t}\n\tif (oc && typeof oc.getOwnPropertyDescriptors === 'function') {\n\t\tobject = oc.create(null, oc.getOwnPropertyDescriptors(object));\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object;\n}\n\n/**\n * Implementation for `Object.hasOwn` but ES5 compatible.\n *\n * @param {any} object\n * @param {string | number} key\n * @returns {boolean}\n */\nfunction hasOwn(object, key) {\n\treturn Object.prototype.hasOwnProperty.call(object, key);\n}\n\n/**\n * Since xmldom can not rely on `Object.assign`,\n * it uses/provides a simplified version that is sufficient for its needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n * @returns {Object}\n * The target with the merged/overridden properties.\n * @throws {TypeError}\n * If target is not an object.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object');\n\t}\n\tfor (var key in source) {\n\t\tif (hasOwn(source, key)) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n}\n\n/**\n * A number of attributes are boolean attributes.\n * The presence of a boolean attribute on an element represents the `true` value,\n * and the absence of the attribute represents the `false` value.\n *\n * If the attribute is present, its value must either be the empty string, or a value that is\n * an ASCII case-insensitive match for the attribute's canonical name,\n * with no leading or trailing whitespace.\n *\n * Note: The values `\"true\"` and `\"false\"` are not allowed on boolean attributes.\n * To represent a `false` value, the attribute has to be omitted altogether.\n *\n * @see https://html.spec.whatwg.org/#boolean-attributes\n * @see https://html.spec.whatwg.org/#attributes-3\n */\nvar HTML_BOOLEAN_ATTRIBUTES = freeze({\n\tallowfullscreen: true,\n\tasync: true,\n\tautofocus: true,\n\tautoplay: true,\n\tchecked: true,\n\tcontrols: true,\n\tdefault: true,\n\tdefer: true,\n\tdisabled: true,\n\tformnovalidate: true,\n\thidden: true,\n\tismap: true,\n\titemscope: true,\n\tloop: true,\n\tmultiple: true,\n\tmuted: true,\n\tnomodule: true,\n\tnovalidate: true,\n\topen: true,\n\tplaysinline: true,\n\treadonly: true,\n\trequired: true,\n\treversed: true,\n\tselected: true,\n});\n\n/**\n * Check if `name` is matching one of the HTML boolean attribute names.\n * This method doesn't check if such attributes are allowed in the context of the current\n * document/parsing.\n *\n * @param {string} name\n * @returns {boolean}\n * @see {@link HTML_BOOLEAN_ATTRIBUTES}\n * @see https://html.spec.whatwg.org/#boolean-attributes\n * @see https://html.spec.whatwg.org/#attributes-3\n */\nfunction isHTMLBooleanAttribute(name) {\n\treturn hasOwn(HTML_BOOLEAN_ATTRIBUTES, name.toLowerCase());\n}\n\n/**\n * Void elements only have a start tag; end tags must not be specified for void elements.\n * These elements should be written as self-closing like this: `<area />`.\n * This should not be confused with optional tags that HTML allows to omit the end tag for\n * (like `li`, `tr` and others), which can have content after them,\n * so they can not be written as self-closing.\n * xmldom does not have any logic for optional end tags cases,\n * and will report them as a warning.\n * Content that would go into the unopened element,\n * will instead be added as a sibling text node.\n *\n * @type {Readonly<{\n * \tarea: boolean;\n * \tcol: boolean;\n * \timg: boolean;\n * \twbr: boolean;\n * \tlink: boolean;\n * \thr: boolean;\n * \tsource: boolean;\n * \tbr: boolean;\n * \tinput: boolean;\n * \tparam: boolean;\n * \tmeta: boolean;\n * \tembed: boolean;\n * \ttrack: boolean;\n * \tbase: boolean;\n * }>}\n * @see https://html.spec.whatwg.org/#void-elements\n * @see https://html.spec.whatwg.org/#optional-tags\n */\nvar HTML_VOID_ELEMENTS = freeze({\n\tarea: true,\n\tbase: true,\n\tbr: true,\n\tcol: true,\n\tembed: true,\n\thr: true,\n\timg: true,\n\tinput: true,\n\tlink: true,\n\tmeta: true,\n\tparam: true,\n\tsource: true,\n\ttrack: true,\n\twbr: true,\n});\n\n/**\n * Check if `tagName` is matching one of the HTML void element names.\n * This method doesn't check if such tags are allowed in the context of the current\n * document/parsing.\n *\n * @param {string} tagName\n * @returns {boolean}\n * @see {@link HTML_VOID_ELEMENTS}\n * @see https://html.spec.whatwg.org/#void-elements\n */\nfunction isHTMLVoidElement(tagName) {\n\treturn hasOwn(HTML_VOID_ELEMENTS, tagName.toLowerCase());\n}\n\n/**\n * Tag names that are raw text elements according to HTML spec.\n * The value denotes whether they are escapable or not.\n *\n * @see {@link isHTMLEscapableRawTextElement}\n * @see {@link isHTMLRawTextElement}\n * @see https://html.spec.whatwg.org/#raw-text-elements\n * @see https://html.spec.whatwg.org/#escapable-raw-text-elements\n */\nvar HTML_RAW_TEXT_ELEMENTS = freeze({\n\tscript: false,\n\tstyle: false,\n\ttextarea: true,\n\ttitle: true,\n});\n\n/**\n * Check if `tagName` is matching one of the HTML raw text element names.\n * This method doesn't check if such tags are allowed in the context of the current\n * document/parsing.\n *\n * @param {string} tagName\n * @returns {boolean}\n * @see {@link isHTMLEscapableRawTextElement}\n * @see {@link HTML_RAW_TEXT_ELEMENTS}\n * @see https://html.spec.whatwg.org/#raw-text-elements\n * @see https://html.spec.whatwg.org/#escapable-raw-text-elements\n */\nfunction isHTMLRawTextElement(tagName) {\n\tvar key = tagName.toLowerCase();\n\treturn hasOwn(HTML_RAW_TEXT_ELEMENTS, key) && !HTML_RAW_TEXT_ELEMENTS[key];\n}\n/**\n * Check if `tagName` is matching one of the HTML escapable raw text element names.\n * This method doesn't check if such tags are allowed in the context of the current\n * document/parsing.\n *\n * @param {string} tagName\n * @returns {boolean}\n * @see {@link isHTMLRawTextElement}\n * @see {@link HTML_RAW_TEXT_ELEMENTS}\n * @see https://html.spec.whatwg.org/#raw-text-elements\n * @see https://html.spec.whatwg.org/#escapable-raw-text-elements\n */\nfunction isHTMLEscapableRawTextElement(tagName) {\n\tvar key = tagName.toLowerCase();\n\treturn hasOwn(HTML_RAW_TEXT_ELEMENTS, key) && HTML_RAW_TEXT_ELEMENTS[key];\n}\n/**\n * Only returns true if `value` matches MIME_TYPE.HTML, which indicates an HTML document.\n *\n * @param {string} mimeType\n * @returns {mimeType is 'text/html'}\n * @see https://www.iana.org/assignments/media-types/text/html\n * @see https://en.wikipedia.org/wiki/HTML\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring\n */\nfunction isHTMLMimeType(mimeType) {\n\treturn mimeType === MIME_TYPE.HTML;\n}\n/**\n * For both the `text/html` and the `application/xhtml+xml` namespace the spec defines that the\n * HTML namespace is provided as the default.\n *\n * @param {string} mimeType\n * @returns {boolean}\n * @see https://dom.spec.whatwg.org/#dom-document-createelement\n * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument\n * @see https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument\n */\nfunction hasDefaultHTMLNamespace(mimeType) {\n\treturn isHTMLMimeType(mimeType) || mimeType === MIME_TYPE.XML_XHTML_APPLICATION;\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02\n *      MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype\n *      WHATWG HTML Spec\n * @see {@link DOMParser.prototype.parseFromString}\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring\n\t *      WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType\n\t *      registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/xml`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType\n\t *      registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n});\n/**\n * @typedef {'application/xhtml+xml' | 'application/xml' | 'image/svg+xml' | 'text/html' | 'text/xml'}\n * MimeType\n */\n/**\n * @type {MimeType[]}\n * @private\n * Basically `Object.values`, which is not available in ES5.\n */\nvar _MIME_TYPES = Object.keys(MIME_TYPE).map(function (key) {\n\treturn MIME_TYPE[key];\n});\n\n/**\n * Only returns true if `mimeType` is one of the allowed values for\n * `DOMParser.parseFromString`.\n *\n * @param {string} mimeType\n * @returns {mimeType is 'application/xhtml+xml' | 'application/xml' | 'image/svg+xml' |  'text/html' | 'text/xml'}\n *\n */\nfunction isValidMimeType(mimeType) {\n\treturn _MIME_TYPES.indexOf(mimeType) > -1;\n}\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace.\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n});\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.HTML_BOOLEAN_ATTRIBUTES = HTML_BOOLEAN_ATTRIBUTES;\nexports.HTML_RAW_TEXT_ELEMENTS = HTML_RAW_TEXT_ELEMENTS;\nexports.HTML_VOID_ELEMENTS = HTML_VOID_ELEMENTS;\nexports.hasDefaultHTMLNamespace = hasDefaultHTMLNamespace;\nexports.hasOwn = hasOwn;\nexports.isHTMLBooleanAttribute = isHTMLBooleanAttribute;\nexports.isHTMLRawTextElement = isHTMLRawTextElement;\nexports.isHTMLEscapableRawTextElement = isHTMLEscapableRawTextElement;\nexports.isHTMLMimeType = isHTMLMimeType;\nexports.isHTMLVoidElement = isHTMLVoidElement;\nexports.isValidMimeType = isValidMimeType;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","'use strict';\n\nvar conventions = require('./conventions');\n\nfunction extendError(constructor, writableName) {\n\tconstructor.prototype = Object.create(Error.prototype, {\n\t\tconstructor: { value: constructor },\n\t\tname: { value: constructor.name, enumerable: true, writable: writableName },\n\t});\n}\n\nvar DOMExceptionName = conventions.freeze({\n\t/**\n\t * the default value as defined by the spec\n\t */\n\tError: 'Error',\n\t/**\n\t * @deprecated\n\t * Use RangeError instead.\n\t */\n\tIndexSizeError: 'IndexSizeError',\n\t/**\n\t * @deprecated\n\t * Just to match the related static code, not part of the spec.\n\t */\n\tDomstringSizeError: 'DomstringSizeError',\n\tHierarchyRequestError: 'HierarchyRequestError',\n\tWrongDocumentError: 'WrongDocumentError',\n\tInvalidCharacterError: 'InvalidCharacterError',\n\t/**\n\t * @deprecated\n\t * Just to match the related static code, not part of the spec.\n\t */\n\tNoDataAllowedError: 'NoDataAllowedError',\n\tNoModificationAllowedError: 'NoModificationAllowedError',\n\tNotFoundError: 'NotFoundError',\n\tNotSupportedError: 'NotSupportedError',\n\tInUseAttributeError: 'InUseAttributeError',\n\tInvalidStateError: 'InvalidStateError',\n\tSyntaxError: 'SyntaxError',\n\tInvalidModificationError: 'InvalidModificationError',\n\tNamespaceError: 'NamespaceError',\n\t/**\n\t * @deprecated\n\t * Use TypeError for invalid arguments,\n\t * \"NotSupportedError\" DOMException for unsupported operations,\n\t * and \"NotAllowedError\" DOMException for denied requests instead.\n\t */\n\tInvalidAccessError: 'InvalidAccessError',\n\t/**\n\t * @deprecated\n\t * Just to match the related static code, not part of the spec.\n\t */\n\tValidationError: 'ValidationError',\n\t/**\n\t * @deprecated\n\t * Use TypeError instead.\n\t */\n\tTypeMismatchError: 'TypeMismatchError',\n\tSecurityError: 'SecurityError',\n\tNetworkError: 'NetworkError',\n\tAbortError: 'AbortError',\n\t/**\n\t * @deprecated\n\t * Just to match the related static code, not part of the spec.\n\t */\n\tURLMismatchError: 'URLMismatchError',\n\tQuotaExceededError: 'QuotaExceededError',\n\tTimeoutError: 'TimeoutError',\n\tInvalidNodeTypeError: 'InvalidNodeTypeError',\n\tDataCloneError: 'DataCloneError',\n\tEncodingError: 'EncodingError',\n\tNotReadableError: 'NotReadableError',\n\tUnknownError: 'UnknownError',\n\tConstraintError: 'ConstraintError',\n\tDataError: 'DataError',\n\tTransactionInactiveError: 'TransactionInactiveError',\n\tReadOnlyError: 'ReadOnlyError',\n\tVersionError: 'VersionError',\n\tOperationError: 'OperationError',\n\tNotAllowedError: 'NotAllowedError',\n\tOptOutError: 'OptOutError',\n});\nvar DOMExceptionNames = Object.keys(DOMExceptionName);\n\nfunction isValidDomExceptionCode(value) {\n\treturn typeof value === 'number' && value >= 1 && value <= 25;\n}\nfunction endsWithError(value) {\n\treturn typeof value === 'string' && value.substring(value.length - DOMExceptionName.Error.length) === DOMExceptionName.Error;\n}\n/**\n * DOM operations only raise exceptions in \"exceptional\" circumstances, i.e., when an operation\n * is impossible to perform (either for logical reasons, because data is lost, or because the\n * implementation has become unstable). In general, DOM methods return specific error values in\n * ordinary processing situations, such as out-of-bound errors when using NodeList.\n *\n * Implementations should raise other exceptions under other circumstances. For example,\n * implementations should raise an implementation-dependent exception if a null argument is\n * passed when null was not expected.\n *\n * This implementation supports the following usages:\n * 1. according to the living standard (both arguments are optional):\n * ```\n * new DOMException(\"message (can be empty)\", DOMExceptionNames.HierarchyRequestError)\n * ```\n * 2. according to previous xmldom implementation (only the first argument is required):\n * ```\n * new DOMException(DOMException.HIERARCHY_REQUEST_ERR, \"optional message\")\n * ```\n * both result in the proper name being set.\n *\n * @class DOMException\n * @param {number | string} messageOrCode\n * The reason why an operation is not acceptable.\n * If it is a number, it is used to determine the `name`, see\n * {@link https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-258A00AF ExceptionCode}\n * @param {string | keyof typeof DOMExceptionName | Error} [nameOrMessage]\n * The `name` to use for the error.\n * If `messageOrCode` is a number, this arguments is used as the `message` instead.\n * @augments Error\n * @see https://webidl.spec.whatwg.org/#idl-DOMException\n * @see https://webidl.spec.whatwg.org/#dfn-error-names-table\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-17189187\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(messageOrCode, nameOrMessage) {\n\t// support old way of passing arguments: first argument is a valid number\n\tif (isValidDomExceptionCode(messageOrCode)) {\n\t\tthis.name = DOMExceptionNames[messageOrCode];\n\t\tthis.message = nameOrMessage || '';\n\t} else {\n\t\tthis.message = messageOrCode;\n\t\tthis.name = endsWithError(nameOrMessage) ? nameOrMessage : DOMExceptionName.Error;\n\t}\n\tif (Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n}\nextendError(DOMException, true);\nObject.defineProperties(DOMException.prototype, {\n\tcode: {\n\t\tenumerable: true,\n\t\tget: function () {\n\t\t\tvar code = DOMExceptionNames.indexOf(this.name);\n\t\t\tif (isValidDomExceptionCode(code)) return code;\n\t\t\treturn 0;\n\t\t},\n\t},\n});\n\nvar ExceptionCode = {\n\tINDEX_SIZE_ERR: 1,\n\tDOMSTRING_SIZE_ERR: 2,\n\tHIERARCHY_REQUEST_ERR: 3,\n\tWRONG_DOCUMENT_ERR: 4,\n\tINVALID_CHARACTER_ERR: 5,\n\tNO_DATA_ALLOWED_ERR: 6,\n\tNO_MODIFICATION_ALLOWED_ERR: 7,\n\tNOT_FOUND_ERR: 8,\n\tNOT_SUPPORTED_ERR: 9,\n\tINUSE_ATTRIBUTE_ERR: 10,\n\tINVALID_STATE_ERR: 11,\n\tSYNTAX_ERR: 12,\n\tINVALID_MODIFICATION_ERR: 13,\n\tNAMESPACE_ERR: 14,\n\tINVALID_ACCESS_ERR: 15,\n\tVALIDATION_ERR: 16,\n\tTYPE_MISMATCH_ERR: 17,\n\tSECURITY_ERR: 18,\n\tNETWORK_ERR: 19,\n\tABORT_ERR: 20,\n\tURL_MISMATCH_ERR: 21,\n\tQUOTA_EXCEEDED_ERR: 22,\n\tTIMEOUT_ERR: 23,\n\tINVALID_NODE_TYPE_ERR: 24,\n\tDATA_CLONE_ERR: 25,\n};\n\nvar entries = Object.entries(ExceptionCode);\nfor (var i = 0; i < entries.length; i++) {\n\tvar key = entries[i][0];\n\tDOMException[key] = entries[i][1];\n}\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @class\n * @param {string} message\n * @param {any} [locator]\n */\nfunction ParseError(message, locator) {\n\tthis.message = message;\n\tthis.locator = locator;\n\tif (Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nextendError(ParseError);\n\nexports.DOMException = DOMException;\nexports.DOMExceptionName = DOMExceptionName;\nexports.ExceptionCode = ExceptionCode;\nexports.ParseError = ParseError;\n","'use strict';\n\n/**\n * Detects relevant unicode support for regular expressions in the runtime.\n * Should the runtime not accepts the flag `u` or unicode ranges,\n * character classes without unicode handling will be used.\n *\n * @param {typeof RegExp} [RegExpImpl=RegExp]\n * For testing: the RegExp class.\n * @returns {boolean}\n * @see https://node.green/#ES2015-syntax-RegExp--y--and--u--flags\n */\nfunction detectUnicodeSupport(RegExpImpl) {\n\ttry {\n\t\tif (typeof RegExpImpl !== 'function') {\n\t\t\tRegExpImpl = RegExp;\n\t\t}\n\t\t// eslint-disable-next-line es5/no-unicode-regex,es5/no-unicode-code-point-escape\n\t\tvar match = new RegExpImpl('\\u{1d306}', 'u').exec('𝌆');\n\t\treturn !!match && match[0].length === 2;\n\t} catch (error) {}\n\treturn false;\n}\nvar UNICODE_SUPPORT = detectUnicodeSupport();\n\n/**\n * Removes `[`, `]` and any trailing quantifiers from the source of a RegExp.\n *\n * @param {RegExp} regexp\n */\nfunction chars(regexp) {\n\tif (regexp.source[0] !== '[') {\n\t\tthrow new Error(regexp + ' can not be used with chars');\n\t}\n\treturn regexp.source.slice(1, regexp.source.lastIndexOf(']'));\n}\n\n/**\n * Creates a new character list regular expression,\n * by removing `search` from the source of `regexp`.\n *\n * @param {RegExp} regexp\n * @param {string} search\n * The character(s) to remove.\n * @returns {RegExp}\n */\nfunction chars_without(regexp, search) {\n\tif (regexp.source[0] !== '[') {\n\t\tthrow new Error('/' + regexp.source + '/ can not be used with chars_without');\n\t}\n\tif (!search || typeof search !== 'string') {\n\t\tthrow new Error(JSON.stringify(search) + ' is not a valid search');\n\t}\n\tif (regexp.source.indexOf(search) === -1) {\n\t\tthrow new Error('\"' + search + '\" is not is /' + regexp.source + '/');\n\t}\n\tif (search === '-' && regexp.source.indexOf(search) !== 1) {\n\t\tthrow new Error('\"' + search + '\" is not at the first postion of /' + regexp.source + '/');\n\t}\n\treturn new RegExp(regexp.source.replace(search, ''), UNICODE_SUPPORT ? 'u' : '');\n}\n\n/**\n * Combines and Regular expressions correctly by using `RegExp.source`.\n *\n * @param {...(RegExp | string)[]} args\n * @returns {RegExp}\n */\nfunction reg(args) {\n\tvar self = this;\n\treturn new RegExp(\n\t\tArray.prototype.slice\n\t\t\t.call(arguments)\n\t\t\t.map(function (part) {\n\t\t\t\tvar isStr = typeof part === 'string';\n\t\t\t\tif (isStr && self === undefined && part === '|') {\n\t\t\t\t\tthrow new Error('use regg instead of reg to wrap expressions with `|`!');\n\t\t\t\t}\n\t\t\t\treturn isStr ? part : part.source;\n\t\t\t})\n\t\t\t.join(''),\n\t\tUNICODE_SUPPORT ? 'mu' : 'm'\n\t);\n}\n\n/**\n * Like `reg` but wraps the expression in `(?:`,`)` to create a non tracking group.\n *\n * @param {...(RegExp | string)[]} args\n * @returns {RegExp}\n */\nfunction regg(args) {\n\tif (arguments.length === 0) {\n\t\tthrow new Error('no parameters provided');\n\t}\n\treturn reg.apply(regg, ['(?:'].concat(Array.prototype.slice.call(arguments), [')']));\n}\n\n// /**\n//  * Append ^ to the beginning of the expression.\n//  * @param {...(RegExp | string)[]} args\n//  * @returns {RegExp}\n//  */\n// function reg_start(args) {\n// \tif (arguments.length === 0) {\n// \t\tthrow new Error('no parameters provided');\n// \t}\n// \treturn reg.apply(reg_start, ['^'].concat(Array.prototype.slice.call(arguments)));\n// }\n\n// https://www.w3.org/TR/xml/#document\n// `[1] document ::= prolog element Misc*`\n// https://www.w3.org/TR/xml11/#NT-document\n// `[1] document ::= ( prolog element Misc* ) - ( Char* RestrictedChar Char* )`\n\n/**\n * A character usually appearing in wrongly converted strings.\n *\n * @type {string}\n * @see https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character\n * @see https://nodejs.dev/en/api/v18/buffer/#buffers-and-character-encodings\n * @see https://www.unicode.org/faq/utf_bom.html#BOM\n * @readonly\n */\nvar UNICODE_REPLACEMENT_CHARACTER = '\\uFFFD';\n// https://www.w3.org/TR/xml/#NT-Char\n// any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.\n// `[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]`\n// https://www.w3.org/TR/xml11/#NT-Char\n// `[2] Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]`\n// https://www.w3.org/TR/xml11/#NT-RestrictedChar\n// `[2a] RestrictedChar ::= [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F]`\n// https://www.w3.org/TR/xml11/#charsets\nvar Char = /[-\\x09\\x0A\\x0D\\x20-\\x2C\\x2E-\\uD7FF\\uE000-\\uFFFD]/; // without \\u10000-\\uEFFFF\nif (UNICODE_SUPPORT) {\n\t// eslint-disable-next-line es5/no-unicode-code-point-escape\n\tChar = reg('[', chars(Char), '\\\\u{10000}-\\\\u{10FFFF}', ']');\n}\n// Negation of Char: matches any character that is NOT a valid XML 1.0 Char.\n// Derived directly from the Char character class above (after the unicode-support extension).\n// XML 1.0 Char production [2]: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]\n// @see https://www.w3.org/TR/xml/#NT-Char\nvar InvalidChar = new RegExp('[^' + chars(Char) + ']', UNICODE_SUPPORT ? 'u' : '');\n\nvar _SChar = /[\\x20\\x09\\x0D\\x0A]/;\nvar SChar_s = chars(_SChar);\n// https://www.w3.org/TR/xml11/#NT-S\n// `[3] S ::= (#x20 | #x9 | #xD | #xA)+`\nvar S = reg(_SChar, '+');\n// optional whitespace described as `S?` in the grammar,\n// simplified to 0-n occurrences of the character class\n// instead of 0-1 occurrences of a non-capturing group around S\nvar S_OPT = reg(_SChar, '*');\n\n// https://www.w3.org/TR/xml11/#NT-NameStartChar\n// `[4] NameStartChar ::= \":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]`\nvar NameStartChar =\n\t/[:_a-zA-Z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/; // without \\u10000-\\uEFFFF\nif (UNICODE_SUPPORT) {\n\t// eslint-disable-next-line es5/no-unicode-code-point-escape\n\tNameStartChar = reg('[', chars(NameStartChar), '\\\\u{10000}-\\\\u{10FFFF}', ']');\n}\nvar NameStartChar_s = chars(NameStartChar);\n\n// https://www.w3.org/TR/xml11/#NT-NameChar\n// `[4a] NameChar ::= NameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]`\nvar NameChar = reg('[', NameStartChar_s, chars(/[-.0-9\\xB7]/), chars(/[\\u0300-\\u036F\\u203F-\\u2040]/), ']');\n// https://www.w3.org/TR/xml11/#NT-Name\n// `[5] Name ::= NameStartChar (NameChar)*`\nvar Name = reg(NameStartChar, NameChar, '*');\n/*\nhttps://www.w3.org/TR/xml11/#NT-Names\n`[6] Names ::= Name (#x20 Name)*`\n*/\n\n// https://www.w3.org/TR/xml11/#NT-Nmtoken\n// `[7] Nmtoken ::= (NameChar)+`\nvar Nmtoken = reg(NameChar, '+');\n/*\nhttps://www.w3.org/TR/xml11/#NT-Nmtokens\n`[8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*`\nvar Nmtokens = reg(Nmtoken, regg(/\\x20/, Nmtoken), '*');\n*/\n\n// https://www.w3.org/TR/xml11/#NT-EntityRef\n// `[68] EntityRef ::= '&' Name ';'` [WFC: Entity Declared] [VC: Entity Declared] [WFC: Parsed Entity] [WFC: No Recursion]\nvar EntityRef = reg('&', Name, ';');\n// https://www.w3.org/TR/xml11/#NT-CharRef\n// `[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'` [WFC: Legal Character]\nvar CharRef = regg(/&#[0-9]+;|&#x[0-9a-fA-F]+;/);\n\n/*\nhttps://www.w3.org/TR/xml11/#NT-Reference\n- `[67] Reference ::= EntityRef | CharRef`\n- `[66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';'` [WFC: Legal Character]\n- `[68] EntityRef ::= '&' Name ';'` [WFC: Entity Declared] [VC: Entity Declared] [WFC: Parsed Entity] [WFC: No Recursion]\n*/\nvar Reference = regg(EntityRef, '|', CharRef);\n\n// https://www.w3.org/TR/xml11/#NT-PEReference\n// `[69] PEReference ::= '%' Name ';'`\n// [VC: Entity Declared] [WFC: No Recursion] [WFC: In DTD]\nvar PEReference = reg('%', Name, ';');\n\n// https://www.w3.org/TR/xml11/#NT-EntityValue\n// `[9] EntityValue ::= '\"' ([^%&\"] | PEReference | Reference)* '\"' | \"'\" ([^%&'] | PEReference | Reference)* \"'\"`\nvar EntityValue = regg(\n\treg('\"', regg(/[^%&\"]/, '|', PEReference, '|', Reference), '*', '\"'),\n\t'|',\n\treg(\"'\", regg(/[^%&']/, '|', PEReference, '|', Reference), '*', \"'\")\n);\n\n// https://www.w3.org/TR/xml11/#NT-AttValue\n// `[10] AttValue ::= '\"' ([^<&\"] | Reference)* '\"' | \"'\" ([^<&'] | Reference)* \"'\"`\nvar AttValue = regg('\"', regg(/[^<&\"]/, '|', Reference), '*', '\"', '|', \"'\", regg(/[^<&']/, '|', Reference), '*', \"'\");\n\n// https://www.w3.org/TR/xml-names/#ns-decl\n// https://www.w3.org/TR/xml-names/#ns-qualnames\n// NameStartChar without \":\"\nvar NCNameStartChar = chars_without(NameStartChar, ':');\n// https://www.w3.org/TR/xml-names/#orphans\n// `[5] NCNameChar ::= NameChar - ':'`\n// An XML NameChar, minus the \":\"\nvar NCNameChar = chars_without(NameChar, ':');\n// https://www.w3.org/TR/xml-names/#NT-NCName\n// `[4] NCName ::= Name - (Char* ':' Char*)`\n// An XML Name, minus the \":\"\nvar NCName = reg(NCNameStartChar, NCNameChar, '*');\n\n/**\nhttps://www.w3.org/TR/xml-names/#ns-qualnames\n\n```\n[7] QName ::= PrefixedName | UnprefixedName\n\t\t\t\t  === (NCName ':' NCName) | NCName\n\t\t\t\t  === NCName (':' NCName)?\n[8] PrefixedName ::= Prefix ':' LocalPart\n\t\t\t\t\t\t\t\t === NCName ':' NCName\n[9] UnprefixedName ::= LocalPart\n\t\t\t\t\t\t\t\t\t === NCName\n[10] Prefix ::= NCName\n[11] LocalPart ::= NCName\n```\n*/\nvar QName = reg(NCName, regg(':', NCName), '?');\nvar QName_exact = reg('^', QName, '$');\nvar QName_group = reg('(', QName, ')');\n\n// https://www.w3.org/TR/xml11/#NT-SystemLiteral\n// `[11] SystemLiteral ::= ('\"' [^\"]* '\"') | (\"'\" [^']* \"'\")`\nvar SystemLiteral = regg(/\"[^\"]*\"|'[^']*'/);\n\n/*\n https://www.w3.org/TR/xml11/#NT-PI\n ```\n [17] PITarget    ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))\n [16] PI    ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'\n ```\n target /xml/i is not excluded!\n*/\n// The `(?!S)` after the leading `S+` asserts the data starts with a non-whitespace\n// character (greedy `S+` already consumes all separating whitespace), pruning the\n// `S+`/`Char*?` whitespace overlap that otherwise makes an unterminated PI (no `?>`)\n// backtrack quadratically. The lookahead is non-capturing, so the data stays group 2.\nvar PI = reg(/^<\\?/, '(', Name, ')', regg(S, '(?!', _SChar, ')(', Char, '*?)'), '?', /\\?>/);\n\n// https://www.w3.org/TR/xml11/#NT-PubidChar\n// `[13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]`\nvar PubidChar = /[\\x20\\x0D\\x0Aa-zA-Z0-9-'()+,./:=?;!*#@$_%]/;\n\n// https://www.w3.org/TR/xml11/#NT-PubidLiteral\n// `[12] PubidLiteral ::= '\"' PubidChar* '\"' | \"'\" (PubidChar - \"'\")* \"'\"`\nvar PubidLiteral = regg('\"', PubidChar, '*\"', '|', \"'\", chars_without(PubidChar, \"'\"), \"*'\");\n\n// https://www.w3.org/TR/xml11/#NT-CharData\n// `[14] CharData    ::= [^<&]* - ([^<&]* ']]>' [^<&]*)`\n\nvar COMMENT_START = '<!--';\nvar COMMENT_END = '-->';\n// https://www.w3.org/TR/xml11/#NT-Comment\n// `[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'`\nvar Comment = reg(COMMENT_START, regg(chars_without(Char, '-'), '|', reg('-', chars_without(Char, '-'))), '*', COMMENT_END);\n\nvar PCDATA = '#PCDATA';\n// https://www.w3.org/TR/xml11/#NT-Mixed\n// `[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | '(' S? '#PCDATA' S? ')'`\n// https://www.w3.org/TR/xml-names/#NT-Mixed\n// `[51] Mixed ::= '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*' | '(' S? '#PCDATA' S? ')'`\n// [VC: Proper Group/PE Nesting] [VC: No Duplicate Types]\nvar Mixed = regg(\n\treg(/\\(/, S_OPT, PCDATA, regg(S_OPT, /\\|/, S_OPT, QName), '*', S_OPT, /\\)\\*/),\n\t'|',\n\treg(/\\(/, S_OPT, PCDATA, S_OPT, /\\)/)\n);\n\nvar _children_quantity = /[?*+]?/;\n/*\n `[49] choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'` [VC: Proper Group/PE Nesting]\n `[50] seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'` [VC: Proper Group/PE Nesting]\n simplification to solve circular referencing, but doesn't check validity constraint \"Proper Group/PE Nesting\"\n var _choice_or_seq = reg('[', NameChar_s, SChar_s, chars(_children_quantity), '()|,]*');\n ```\n [48] cp ::= (Name | choice | seq) ('?' | '*' | '+')?\n         === (Name | '(' S? cp ( S? '|' S? cp )+ S? ')' | '(' S? cp ( S? ',' S? cp )* S? ')') ('?' | '*' | '+')?\n         !== (Name | [_choice_or_seq]*) ('?' | '*' | '+')?\n ```\n simplification to solve circular referencing, but doesn't check validity constraint \"Proper Group/PE Nesting\"\n var cp = reg(regg(Name, '|', _choice_or_seq), _children_quantity);\n*/\n/*\nInefficient regular expression (High)\nThis part of the regular expression may cause exponential backtracking on strings starting with '(|' and containing many repetitions of '|'.\nhttps://github.com/xmldom/xmldom/security/code-scanning/91\nvar choice = regg(/\\(/, S_OPT, cp, regg(S_OPT, /\\|/, S_OPT, cp), '+', S_OPT, /\\)/);\n*/\n/*\nInefficient regular expression (High)\nThis part of the regular expression may cause exponential backtracking on strings starting with '(,' and containing many repetitions of ','.\nhttps://github.com/xmldom/xmldom/security/code-scanning/92\nvar seq = regg(/\\(/, S_OPT, cp, regg(S_OPT, /,/, S_OPT, cp), '*', S_OPT, /\\)/);\n*/\n\n// `[47] children ::= (choice | seq) ('?' | '*' | '+')?`\n// simplification to solve circular referencing, but doesn't check validity constraint \"Proper Group/PE Nesting\"\nvar children = reg(/\\([^>]+\\)/, _children_quantity /*regg(choice, '|', seq), _children_quantity*/);\n\n// https://www.w3.org/TR/xml11/#NT-contentspec\n// `[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children`\nvar contentspec = regg('EMPTY', '|', 'ANY', '|', Mixed, '|', children);\n\nvar ELEMENTDECL_START = '<!ELEMENT';\n// https://www.w3.org/TR/xml11/#NT-elementdecl\n// `[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'`\n// https://www.w3.org/TR/xml-names/#NT-elementdecl\n// `[17] elementdecl ::= '<!ELEMENT' S QName S contentspec S? '>'`\n// because of https://www.w3.org/TR/xml11/#NT-PEReference\n// since xmldom is not supporting replacements of PEReferences in the DTD\n// this also supports PEReference in the possible places\nvar elementdecl = reg(ELEMENTDECL_START, S, regg(QName, '|', PEReference), S, regg(contentspec, '|', PEReference), S_OPT, '>');\n\n// https://www.w3.org/TR/xml11/#NT-NotationType\n// `[58] NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'`\n// [VC: Notation Attributes] [VC: One Notation Per Element Type] [VC: No Notation on Empty Element] [VC: No Duplicate Tokens]\nvar NotationType = reg('NOTATION', S, /\\(/, S_OPT, Name, regg(S_OPT, /\\|/, S_OPT, Name), '*', S_OPT, /\\)/);\n// https://www.w3.org/TR/xml11/#NT-Enumeration\n// `[59] Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'`\n// [VC: Enumeration] [VC: No Duplicate Tokens]\nvar Enumeration = reg(/\\(/, S_OPT, Nmtoken, regg(S_OPT, /\\|/, S_OPT, Nmtoken), '*', S_OPT, /\\)/);\n\n// https://www.w3.org/TR/xml11/#NT-EnumeratedType\n// `[57] EnumeratedType ::= NotationType | Enumeration`\nvar EnumeratedType = regg(NotationType, '|', Enumeration);\n\n/*\n```\n[55] StringType ::= 'CDATA'\n[56] TokenizedType ::= 'ID' [VC: ID] [VC: One ID per Element Type] [VC: ID Attribute Default]\n   | 'IDREF' [VC: IDREF]\n   | 'IDREFS' [VC: IDREF]\n\t | 'ENTITY' [VC: Entity Name]\n\t | 'ENTITIES' [VC: Entity Name]\n\t | 'NMTOKEN' [VC: Name Token]\n\t | 'NMTOKENS' [VC: Name Token]\n [54] AttType ::= StringType | TokenizedType | EnumeratedType\n```*/\nvar AttType = regg(/CDATA|ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS/, '|', EnumeratedType);\n\n// `[60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue)`\n// [WFC: No < in Attribute Values] [WFC: No External Entity References]\n// [VC: Fixed Attribute Default] [VC: Required Attribute] [VC: Attribute Default Value Syntactically Correct]\nvar DefaultDecl = regg(/#REQUIRED|#IMPLIED/, '|', regg(regg('#FIXED', S), '?', AttValue));\n\n// https://www.w3.org/TR/xml11/#NT-AttDef\n// [53] AttDef ::= S Name S AttType S DefaultDecl\n// https://www.w3.org/TR/xml-names/#NT-AttDef\n// [1] NSAttName ::= PrefixedAttName | DefaultAttName\n// [2] PrefixedAttName ::= 'xmlns:' NCName [NSC: Reserved Prefixes and Namespace Names]\n// [3] DefaultAttName ::= 'xmlns'\n// [21] AttDef ::= S (QName | NSAttName) S AttType S DefaultDecl\n// \t\t\t\t\t\t === S Name S AttType S DefaultDecl\n// xmldom is not distinguishing between QName and NSAttName on this level\n// to support XML without namespaces in DTD we can not restrict it to QName\nvar AttDef = regg(S, Name, S, AttType, S, DefaultDecl);\n\nvar ATTLIST_DECL_START = '<!ATTLIST';\n// https://www.w3.org/TR/xml11/#NT-AttlistDecl\n// `[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'`\n// https://www.w3.org/TR/xml-names/#NT-AttlistDecl\n// `[20] AttlistDecl ::= '<!ATTLIST' S QName AttDef* S? '>'`\n// to support XML without namespaces in DTD we can not restrict it to QName\nvar AttlistDecl = reg(ATTLIST_DECL_START, S, Name, AttDef, '*', S_OPT, '>');\n\n// https://html.spec.whatwg.org/multipage/urls-and-fetching.html#about:legacy-compat\nvar ABOUT_LEGACY_COMPAT = 'about:legacy-compat';\nvar ABOUT_LEGACY_COMPAT_SystemLiteral = regg('\"' + ABOUT_LEGACY_COMPAT + '\"', '|', \"'\" + ABOUT_LEGACY_COMPAT + \"'\");\nvar SYSTEM = 'SYSTEM';\nvar PUBLIC = 'PUBLIC';\n// https://www.w3.org/TR/xml11/#NT-ExternalID\n// `[75] ExternalID ::= 'SYSTEM' S SystemLiteral | 'PUBLIC' S PubidLiteral S SystemLiteral`\nvar ExternalID = regg(regg(SYSTEM, S, SystemLiteral), '|', regg(PUBLIC, S, PubidLiteral, S, SystemLiteral));\nvar ExternalID_match = reg(\n\t'^',\n\tregg(\n\t\tregg(SYSTEM, S, '(?<SystemLiteralOnly>', SystemLiteral, ')'),\n\t\t'|',\n\t\tregg(PUBLIC, S, '(?<PubidLiteral>', PubidLiteral, ')', S, '(?<SystemLiteral>', SystemLiteral, ')')\n\t)\n);\n// Full-string anchored matcher for requireWellFormed serializer checks\n// https://w3c.github.io/DOM-Parsing/#xml-serializing-a-document-node\nvar PubidLiteral_match = reg('^', PubidLiteral, '$');\n// Full-string anchored matcher for requireWellFormed serializer checks\n// https://w3c.github.io/DOM-Parsing/#xml-serializing-a-document-node\nvar SystemLiteral_match = reg('^', SystemLiteral, '$');\n\n// https://www.w3.org/TR/xml11/#NT-NDataDecl\n// `[76] NDataDecl ::= S 'NDATA' S Name` [VC: Notation Declared]\nvar NDataDecl = regg(S, 'NDATA', S, Name);\n\n// https://www.w3.org/TR/xml11/#NT-EntityDef\n// `[73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)`\nvar EntityDef = regg(EntityValue, '|', regg(ExternalID, NDataDecl, '?'));\n\nvar ENTITY_DECL_START = '<!ENTITY';\n// https://www.w3.org/TR/xml11/#NT-GEDecl\n// `[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'`\nvar GEDecl = reg(ENTITY_DECL_START, S, Name, S, EntityDef, S_OPT, '>');\n// https://www.w3.org/TR/xml11/#NT-PEDef\n// `[74] PEDef ::= EntityValue | ExternalID`\nvar PEDef = regg(EntityValue, '|', ExternalID);\n// https://www.w3.org/TR/xml11/#NT-PEDecl\n// `[72] PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'`\nvar PEDecl = reg(ENTITY_DECL_START, S, '%', S, Name, S, PEDef, S_OPT, '>');\n// https://www.w3.org/TR/xml11/#NT-EntityDecl\n// `[70] EntityDecl ::= GEDecl | PEDecl`\nvar EntityDecl = regg(GEDecl, '|', PEDecl);\n\n// https://www.w3.org/TR/xml11/#NT-PublicID\n// `[83] PublicID    ::= 'PUBLIC' S PubidLiteral`\nvar PublicID = reg(PUBLIC, S, PubidLiteral);\n// https://www.w3.org/TR/xml11/#NT-NotationDecl\n// `[82] NotationDecl    ::= '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'` [VC: Unique Notation Name]\nvar NotationDecl = reg('<!NOTATION', S, Name, S, regg(ExternalID, '|', PublicID), S_OPT, '>');\n\n// https://www.w3.org/TR/xml11/#NT-Eq\n// `[25] Eq ::= S? '=' S?`\nvar Eq = reg(S_OPT, '=', S_OPT);\n// https://www.w3.org/TR/xml/#NT-VersionNum\n// `[26] VersionNum ::= '1.' [0-9]+`\n// https://www.w3.org/TR/xml11/#NT-VersionNum\n// `[26] VersionNum ::= '1.1'`\nvar VersionNum = /1[.]\\d+/;\n// https://www.w3.org/TR/xml11/#NT-VersionInfo\n// `[24] VersionInfo ::= S 'version' Eq (\"'\" VersionNum \"'\" | '\"' VersionNum '\"')`\nvar VersionInfo = reg(S, 'version', Eq, regg(\"'\", VersionNum, \"'\", '|', '\"', VersionNum, '\"'));\n// https://www.w3.org/TR/xml11/#NT-EncName\n// `[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*`\nvar EncName = /[A-Za-z][-A-Za-z0-9._]*/;\n// https://www.w3.org/TR/xml11/#NT-EncDecl\n// `[80] EncodingDecl ::= S 'encoding' Eq ('\"' EncName '\"' | \"'\" EncName \"'\" )`\nvar EncodingDecl = regg(S, 'encoding', Eq, regg('\"', EncName, '\"', '|', \"'\", EncName, \"'\"));\n// https://www.w3.org/TR/xml11/#NT-SDDecl\n// `[32] SDDecl ::= S 'standalone' Eq ((\"'\" ('yes' | 'no') \"'\") | ('\"' ('yes' | 'no') '\"'))`\nvar SDDecl = regg(S, 'standalone', Eq, regg(\"'\", regg('yes', '|', 'no'), \"'\", '|', '\"', regg('yes', '|', 'no'), '\"'));\n// https://www.w3.org/TR/xml11/#NT-XMLDecl\n// [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'\nvar XMLDecl = reg(/^<\\?xml/, VersionInfo, EncodingDecl, '?', SDDecl, '?', S_OPT, /\\?>/);\n\n/*\n https://www.w3.org/TR/xml/#NT-markupdecl\n https://www.w3.org/TR/xml11/#NT-markupdecl\n `[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment`\n var markupdecl = regg(elementdecl, '|', AttlistDecl, '|', EntityDecl, '|', NotationDecl, '|', PI_unsafe, '|', Comment);\n*/\n/*\n https://www.w3.org/TR/xml-names/#NT-doctypedecl\n`[28a] DeclSep   ::= PEReference | S`\n https://www.w3.org/TR/xml11/#NT-intSubset\n```\n [28b] intSubset ::= (markupdecl | DeclSep)*\n                 === (markupdecl | PEReference | S)*\n```\n [WFC: PE Between Declarations]\n var intSubset = reg(regg(markupdecl, '|', PEReference, '|', S), '*');\n*/\nvar DOCTYPE_DECL_START = '<!DOCTYPE';\n/*\n https://www.w3.org/TR/xml11/#NT-doctypedecl\n `[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'`\n https://www.afterwardsw3.org/TR/xml-names/#NT-doctypedecl\n `[16] doctypedecl ::= '<!DOCTYPE' S QName (S ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'`\n var doctypedecl = reg('<!DOCTYPE', S, Name, regg(S, ExternalID), '?', S_OPT, regg(/\\[/, intSubset, /]/, S_OPT), '?', '>');\n*/\n\nvar CDATA_START = '<![CDATA[';\nvar CDATA_END = ']]>';\nvar CDStart = /<!\\[CDATA\\[/;\nvar CDEnd = /\\]\\]>/;\nvar CData = reg(Char, '*?', CDEnd);\n/*\n https://www.w3.org/TR/xml/#dt-cdsection\n `[18]   \tCDSect\t   ::=   \tCDStart CData CDEnd`\n `[19]   \tCDStart\t   ::=   \t'<![CDATA['`\n `[20]   \tCData\t   ::=   \t(Char* - (Char* ']]>' Char*))`\n `[21]   \tCDEnd\t   ::=   \t']]>'`\n*/\nvar CDSect = reg(CDStart, CData);\n\n// unit tested\nexports.chars = chars;\nexports.chars_without = chars_without;\nexports.detectUnicodeSupport = detectUnicodeSupport;\nexports.reg = reg;\nexports.regg = regg;\nexports.ABOUT_LEGACY_COMPAT = ABOUT_LEGACY_COMPAT;\nexports.ABOUT_LEGACY_COMPAT_SystemLiteral = ABOUT_LEGACY_COMPAT_SystemLiteral;\nexports.AttlistDecl = AttlistDecl;\nexports.CDATA_START = CDATA_START;\nexports.CDATA_END = CDATA_END;\nexports.CDSect = CDSect;\nexports.Char = Char;\nexports.Comment = Comment;\nexports.COMMENT_START = COMMENT_START;\nexports.COMMENT_END = COMMENT_END;\nexports.DOCTYPE_DECL_START = DOCTYPE_DECL_START;\nexports.elementdecl = elementdecl;\nexports.EntityDecl = EntityDecl;\nexports.EntityValue = EntityValue;\nexports.ExternalID = ExternalID;\nexports.ExternalID_match = ExternalID_match;\nexports.Name = Name;\nexports.NotationDecl = NotationDecl;\nexports.Reference = Reference;\nexports.PEReference = PEReference;\nexports.PI = PI;\nexports.PUBLIC = PUBLIC;\nexports.PubidLiteral = PubidLiteral;\nexports.PubidLiteral_match = PubidLiteral_match;\nexports.QName = QName;\nexports.QName_exact = QName_exact;\nexports.QName_group = QName_group;\nexports.S = S;\nexports.SChar_s = SChar_s;\nexports.S_OPT = S_OPT;\nexports.SYSTEM = SYSTEM;\nexports.SystemLiteral = SystemLiteral;\nexports.SystemLiteral_match = SystemLiteral_match;\nexports.InvalidChar = InvalidChar;\nexports.UNICODE_REPLACEMENT_CHARACTER = UNICODE_REPLACEMENT_CHARACTER;\nexports.UNICODE_SUPPORT = UNICODE_SUPPORT;\nexports.XMLDecl = XMLDecl;\n","'use strict';\n\nvar conventions = require('./conventions');\nvar find = conventions.find;\nvar hasDefaultHTMLNamespace = conventions.hasDefaultHTMLNamespace;\nvar hasOwn = conventions.hasOwn;\nvar isHTMLMimeType = conventions.isHTMLMimeType;\nvar isHTMLRawTextElement = conventions.isHTMLRawTextElement;\nvar isHTMLVoidElement = conventions.isHTMLVoidElement;\nvar MIME_TYPE = conventions.MIME_TYPE;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * Private DOM Constructor symbol\n *\n * Internal symbol used for construction of all classes whose constructors should be private.\n * Currently used for checks in `Node`, `Document`, `Element`, `Attr`, `CharacterData`, `Text`, `Comment`,\n * `CDATASection`, `DocumentType`, `Notation`, `Entity`, `EntityReference`, `DocumentFragment`, `ProcessingInstruction`\n * so the constructor can't be used from outside the module.\n */\nvar PDC = Symbol();\n\nvar errors = require('./errors');\nvar DOMException = errors.DOMException;\nvar DOMExceptionName = errors.DOMExceptionName;\n\nvar g = require('./grammar');\n\n/**\n * Checks if the given symbol equals the Private DOM Constructor symbol (PDC)\n * and throws an Illegal constructor exception when the symbols don't match.\n * This ensures that the constructor remains private and can't be used outside this module.\n */\nfunction checkSymbol(symbol) {\n\tif (symbol !== PDC) {\n\t\tthrow new TypeError('Illegal constructor');\n\t}\n}\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty.\n *\n * @param {string} input\n * The string to be checked.\n * @returns {boolean}\n * Returns `true` if the input string is not empty, `false` otherwise.\n */\nfunction notEmptyString(input) {\n\treturn input !== '';\n}\n/**\n * Splits a string on ASCII whitespace characters (U+0009 TAB, U+000A LF, U+000C FF, U+000D CR,\n * U+0020 SPACE).\n * It follows the definition from the infra specification from WHATWG.\n *\n * @param {string} input\n * The string to be split.\n * @returns {string[]}\n * An array of the split strings. The array can be empty if the input string is empty or only\n * contains whitespace characters.\n * @see {@link https://infra.spec.whatwg.org/#split-on-ascii-whitespace}\n * @see {@link https://infra.spec.whatwg.org/#ascii-whitespace}\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : [];\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record<string, boolean | undefined>} current\n * The current record object to which the element will be added as a key.\n * The object's keys are string types and values are either boolean or undefined.\n * @param {string} element\n * The string to be added as a key to the current record.\n * @returns {Record<string, boolean | undefined>}\n * The updated record object after the addition of the new element.\n */\nfunction orderedSetReducer(current, element) {\n\tif (!hasOwn(current, element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * Converts a string into an ordered set by splitting the input on ASCII whitespace and\n * ensuring uniqueness of elements.\n * This follows the definition of an ordered set from the infra specification by WHATWG.\n *\n * @param {string} input\n * The input string to be transformed into an ordered set.\n * @returns {string[]}\n * An array of unique strings obtained from the input, preserving the original order.\n * The array can be empty if the input string is empty or only contains whitespace characters.\n * @see {@link https://infra.spec.whatwg.org/#ordered-set}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}));\n}\n\n/**\n * Uses `list.indexOf` to implement a function that behaves like `Array.prototype.includes`.\n * This function is used in environments where `Array.prototype.includes` may not be available.\n *\n * @param {any[]} list\n * The array in which to search for the element.\n * @returns {function(any): boolean}\n * A function that accepts an element and returns a boolean indicating whether the element is\n * included in the provided list.\n */\nfunction arrayIncludes(list) {\n\treturn function (element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t};\n}\n\n/**\n * Validates a qualified name based on the criteria provided in the DOM specification by\n * WHATWG.\n *\n * @param {string} qualifiedName\n * The qualified name to be validated.\n * @throws {DOMException}\n * With code {@link DOMException.INVALID_CHARACTER_ERR} if the qualified name contains an\n * invalid character.\n * @see {@link https://dom.spec.whatwg.org/#validate}\n */\nfunction validateQualifiedName(qualifiedName) {\n\tif (!g.QName_exact.test(qualifiedName)) {\n\t\tthrow new DOMException(DOMException.INVALID_CHARACTER_ERR, 'invalid character in qualified name \"' + qualifiedName + '\"');\n\t}\n}\n\n/**\n * Validates a qualified name and the namespace associated with it,\n * based on the criteria provided in the DOM specification by WHATWG.\n *\n * @param {string | null} namespace\n * The namespace to be validated. It can be a string or null.\n * @param {string} qualifiedName\n * The qualified name to be validated.\n * @returns {[namespace: string | null, prefix: string | null, localName: string]}\n * Returns a tuple with the namespace,\n * prefix and local name of the qualified name.\n * @throws {DOMException}\n * Throws a DOMException if the qualified name or the namespace is not valid.\n * @see {@link https://dom.spec.whatwg.org/#validate-and-extract}\n */\nfunction validateAndExtract(namespace, qualifiedName) {\n\tvalidateQualifiedName(qualifiedName);\n\tnamespace = namespace || null;\n\t/**\n\t * @type {string | null}\n\t */\n\tvar prefix = null;\n\tvar localName = qualifiedName;\n\tif (qualifiedName.indexOf(':') >= 0) {\n\t\tvar splitResult = qualifiedName.split(':');\n\t\tprefix = splitResult[0];\n\t\tlocalName = splitResult[1];\n\t}\n\tif (prefix !== null && namespace === null) {\n\t\tthrow new DOMException(DOMException.NAMESPACE_ERR, 'prefix is non-null and namespace is null');\n\t}\n\tif (prefix === 'xml' && namespace !== conventions.NAMESPACE.XML) {\n\t\tthrow new DOMException(DOMException.NAMESPACE_ERR, 'prefix is \"xml\" and namespace is not the XML namespace');\n\t}\n\tif ((prefix === 'xmlns' || qualifiedName === 'xmlns') && namespace !== conventions.NAMESPACE.XMLNS) {\n\t\tthrow new DOMException(\n\t\t\tDOMException.NAMESPACE_ERR,\n\t\t\t'either qualifiedName or prefix is \"xmlns\" and namespace is not the XMLNS namespace'\n\t\t);\n\t}\n\tif (namespace === conventions.NAMESPACE.XMLNS && prefix !== 'xmlns' && qualifiedName !== 'xmlns') {\n\t\tthrow new DOMException(\n\t\t\tDOMException.NAMESPACE_ERR,\n\t\t\t'namespace is the XMLNS namespace and neither qualifiedName nor prefix is \"xmlns\"'\n\t\t);\n\t}\n\treturn [namespace, prefix, localName];\n}\n\n/**\n * Copies properties from one object to another.\n * It only copies the object's own (not inherited) properties.\n *\n * @param {Object} src\n * The source object from which properties are copied.\n * @param {Object} dest\n * The destination object to which properties are copied.\n */\nfunction copy(src, dest) {\n\tfor (var p in src) {\n\t\tif (hasOwn(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n * Extends a class with the properties and methods of a super class.\n * It uses a form of prototypal inheritance, and establishes the `constructor` property\n * correctly(?).\n *\n * It is not clear to the current maintainers if this implementation is making sense,\n * since it creates an intermediate prototype function,\n * which all properties of `Super` are copied onto using `_copy`.\n *\n * @param {Object} Class\n * The class that is to be extended.\n * @param {Object} Super\n * The super class from which properties and methods are inherited.\n * @private\n */\nfunction _extends(Class, Super) {\n\tvar pt = Class.prototype;\n\tif (!(pt instanceof Super)) {\n\t\tfunction t() {}\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt, t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif (pt.constructor != Class) {\n\t\tif (typeof Class != 'function') {\n\t\t\tconsole.error('unknown Class:' + Class);\n\t\t}\n\t\tpt.constructor = Class;\n\t}\n}\n\nvar NodeType = {};\nvar ELEMENT_NODE = (NodeType.ELEMENT_NODE = 1);\nvar ATTRIBUTE_NODE = (NodeType.ATTRIBUTE_NODE = 2);\nvar TEXT_NODE = (NodeType.TEXT_NODE = 3);\nvar CDATA_SECTION_NODE = (NodeType.CDATA_SECTION_NODE = 4);\nvar ENTITY_REFERENCE_NODE = (NodeType.ENTITY_REFERENCE_NODE = 5);\nvar ENTITY_NODE = (NodeType.ENTITY_NODE = 6);\nvar PROCESSING_INSTRUCTION_NODE = (NodeType.PROCESSING_INSTRUCTION_NODE = 7);\nvar COMMENT_NODE = (NodeType.COMMENT_NODE = 8);\nvar DOCUMENT_NODE = (NodeType.DOCUMENT_NODE = 9);\nvar DOCUMENT_TYPE_NODE = (NodeType.DOCUMENT_TYPE_NODE = 10);\nvar DOCUMENT_FRAGMENT_NODE = (NodeType.DOCUMENT_FRAGMENT_NODE = 11);\nvar NOTATION_NODE = (NodeType.NOTATION_NODE = 12);\n\nvar DocumentPosition = conventions.freeze({\n\tDOCUMENT_POSITION_DISCONNECTED: 1,\n\tDOCUMENT_POSITION_PRECEDING: 2,\n\tDOCUMENT_POSITION_FOLLOWING: 4,\n\tDOCUMENT_POSITION_CONTAINS: 8,\n\tDOCUMENT_POSITION_CONTAINED_BY: 16,\n\tDOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: 32,\n});\n\n//helper functions for compareDocumentPosition\n/**\n * Finds the common ancestor in two parent chains.\n *\n * @param {Node[]} a\n * The first parent chain.\n * @param {Node[]} b\n * The second parent chain.\n * @returns {Node}\n * The common ancestor node if it exists. If there is no common ancestor, the function will\n * return `null`.\n */\nfunction commonAncestor(a, b) {\n\tif (b.length < a.length) return commonAncestor(b, a);\n\tvar c = null;\n\tfor (var n in a) {\n\t\tif (a[n] !== b[n]) return c;\n\t\tc = a[n];\n\t}\n\treturn c;\n}\n\n/**\n * Assigns a unique identifier to a document to ensure consistency while comparing unrelated\n * nodes.\n *\n * @param {Document} doc\n * The document to which a unique identifier is to be assigned.\n * @returns {string}\n * The unique identifier of the document. If the document already had a unique identifier, the\n * function will return the existing one.\n */\nfunction docGUID(doc) {\n\tif (!doc.guid) doc.guid = Math.random();\n\treturn doc.guid;\n}\n//-- end of helper functions\n\n/**\n * The NodeList interface provides the abstraction of an ordered collection of nodes,\n * without defining or constraining how this collection is implemented.\n * NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n * You can also access the items of the NodeList with a `for...of` loop.\n *\n * @class NodeList\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * @constructs NodeList\n */\nfunction NodeList() {}\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1\n\t * inclusive.\n\t *\n\t * @type {number}\n\t */\n\tlength: 0,\n\t/**\n\t * Returns the item at `index`. If index is greater than or equal to the number of nodes in\n\t * the list, this returns null.\n\t *\n\t * @param index\n\t * Unsigned long Index into the collection.\n\t * @returns {Node | null}\n\t * The node at position `index` in the NodeList,\n\t * or null if that is not a valid index.\n\t */\n\titem: function (index) {\n\t\treturn index >= 0 && index < this.length ? this[index] : null;\n\t},\n\t/**\n\t * Returns a string representation of the NodeList.\n\t *\n\t * Accepts the same `options` object as `XMLSerializer.prototype.serializeToString`\n\t * (`requireWellFormed`, `splitCDATASections`, `nodeFilter`). Passing a function is treated as\n\t * a legacy `nodeFilter` for backward compatibility.\n\t *\n\t * @param {Object | function} [options]\n\t * @param {boolean} [options.requireWellFormed=false]\n\t * @param {boolean} [options.splitCDATASections=true]\n\t * @param {function} [options.nodeFilter]\n\t * @returns {string}\n\t */\n\ttoString: function (options) {\n\t\tvar opts;\n\t\tif (typeof options === 'function') {\n\t\t\topts = { requireWellFormed: false, splitCDATASections: true, nodeFilter: options };\n\t\t} else if (!!options) {\n\t\t\topts = {\n\t\t\t\trequireWellFormed: !!options.requireWellFormed,\n\t\t\t\tsplitCDATASections: options.splitCDATASections !== false,\n\t\t\t\tnodeFilter: options.nodeFilter || null,\n\t\t\t};\n\t\t} else {\n\t\t\topts = { requireWellFormed: false, splitCDATASections: true, nodeFilter: null };\n\t\t}\n\t\tfor (var buf = [], i = 0; i < this.length; i++) {\n\t\t\tserializeToString(this[i], buf, null, opts);\n\t\t}\n\t\treturn buf.join('');\n\t},\n\t/**\n\t * Filters the NodeList based on a predicate.\n\t *\n\t * @param {function(Node): boolean} predicate\n\t * - A predicate function to filter the NodeList.\n\t * @returns {Node[]}\n\t * An array of nodes that satisfy the predicate.\n\t * @private\n\t */\n\tfilter: function (predicate) {\n\t\treturn Array.prototype.filter.call(this, predicate);\n\t},\n\t/**\n\t * Returns the first index at which a given node can be found in the NodeList, or -1 if it is\n\t * not present.\n\t *\n\t * @param {Node} item\n\t * - The Node item to locate in the NodeList.\n\t * @returns {number}\n\t * The first index of the node in the NodeList; -1 if not found.\n\t * @private\n\t */\n\tindexOf: function (item) {\n\t\treturn Array.prototype.indexOf.call(this, item);\n\t},\n};\nNodeList.prototype[Symbol.iterator] = function () {\n\tvar me = this;\n\tvar index = 0;\n\n\treturn {\n\t\tnext: function () {\n\t\t\tif (index < me.length) {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: me[index++],\n\t\t\t\t\tdone: false,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\treturn: function () {\n\t\t\treturn {\n\t\t\t\tdone: true,\n\t\t\t};\n\t\t},\n\t};\n};\n\n/**\n * Represents a live collection of nodes that is automatically updated when its associated\n * document changes.\n *\n * @class LiveNodeList\n * @param {Node} node\n * The associated node.\n * @param {function} refresh\n * The function to refresh the live node list.\n * @augments NodeList\n * @constructs LiveNodeList\n */\nfunction LiveNodeList(node, refresh) {\n\tthis._node = node;\n\tthis._refresh = refresh;\n\t_updateLiveList(this);\n}\n/**\n * Updates the live node list.\n *\n * @param {LiveNodeList} list\n * The live node list to update.\n * @private\n */\nfunction _updateLiveList(list) {\n\tvar inc = list._node._inc || list._node.ownerDocument._inc;\n\tif (list._inc !== inc) {\n\t\tvar ls = list._refresh(list._node);\n\t\t__set__(list, 'length', ls.length);\n\t\tif (!list.$$length || ls.length < list.$$length) {\n\t\t\tfor (var i = ls.length; i in list; i++) {\n\t\t\t\tif (hasOwn(list, i)) {\n\t\t\t\t\tdelete list[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcopy(ls, list);\n\t\tlist._inc = inc;\n\t}\n}\n/**\n * Returns the node at position `index` in the LiveNodeList, or null if that is not a valid\n * index.\n *\n * @param {number} i\n * Index into the collection.\n * @returns {Node | null}\n * The node at position `index` in the LiveNodeList, or null if that is not a valid index.\n */\nLiveNodeList.prototype.item = function (i) {\n\t_updateLiveList(this);\n\treturn this[i] || null;\n};\n\n_extends(LiveNodeList, NodeList);\n\n/**\n * Objects implementing the NamedNodeMap interface are used to represent collections of nodes\n * that can be accessed by name.\n * Note that NamedNodeMap does not inherit from NodeList;\n * NamedNodeMaps are not maintained in any particular order.\n * Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal\n * index,\n * but this is simply to allow convenient enumeration of the contents of a NamedNodeMap,\n * and does not imply that the DOM specifies an order to these Nodes.\n * NamedNodeMap objects in the DOM are live.\n * used for attributes or DocumentType entities\n *\n * This implementation only supports property indices, but does not support named properties,\n * as specified in the living standard.\n *\n * @class NamedNodeMap\n * @see https://dom.spec.whatwg.org/#interface-namednodemap\n * @see https://webidl.spec.whatwg.org/#dfn-supported-property-names\n * @constructs NamedNodeMap\n */\nfunction NamedNodeMap() {}\n/**\n * Returns the index of a node within the list.\n *\n * @param {Array} list\n * The list of nodes.\n * @param {Node} node\n * The node to find.\n * @returns {number}\n * The index of the node within the list, or -1 if not found.\n * @private\n */\nfunction _findNodeIndex(list, node) {\n\tvar i = 0;\n\twhile (i < list.length) {\n\t\tif (list[i] === node) {\n\t\t\treturn i;\n\t\t}\n\t\ti++;\n\t}\n}\n/**\n * Adds a new attribute to the list and updates the owner element of the attribute.\n *\n * @param {Element} el\n * The element which will become the owner of the new attribute.\n * @param {NamedNodeMap} list\n * The list to which the new attribute will be added.\n * @param {Attr} newAttr\n * The new attribute to be added.\n * @param {Attr} oldAttr\n * The old attribute to be replaced, or null if no attribute is to be replaced.\n * @returns {void}\n * @private\n */\nfunction _addNamedNode(el, list, newAttr, oldAttr) {\n\tif (oldAttr) {\n\t\tlist[_findNodeIndex(list, oldAttr)] = newAttr;\n\t} else {\n\t\tlist[list.length] = newAttr;\n\t\tlist.length++;\n\t}\n\tif (el) {\n\t\tnewAttr.ownerElement = el;\n\t\tvar doc = el.ownerDocument;\n\t\tif (doc) {\n\t\t\toldAttr && _onRemoveAttribute(doc, el, oldAttr);\n\t\t\t_onAddAttribute(doc, el, newAttr);\n\t\t}\n\t}\n}\n/**\n * Removes an attribute from the list and updates the owner element of the attribute.\n *\n * @param {Element} el\n * The element which is the current owner of the attribute.\n * @param {NamedNodeMap} list\n * The list from which the attribute will be removed.\n * @param {Attr} attr\n * The attribute to be removed.\n * @returns {void}\n * @private\n */\nfunction _removeNamedNode(el, list, attr) {\n\t//console.log('remove attr:'+attr)\n\tvar i = _findNodeIndex(list, attr);\n\tif (i >= 0) {\n\t\tvar lastIndex = list.length - 1;\n\t\twhile (i <= lastIndex) {\n\t\t\tlist[i] = list[++i];\n\t\t}\n\t\tlist.length = lastIndex;\n\t\tif (el) {\n\t\t\tvar doc = el.ownerDocument;\n\t\t\tif (doc) {\n\t\t\t\t_onRemoveAttribute(doc, el, attr);\n\t\t\t}\n\t\t\tattr.ownerElement = null;\n\t\t}\n\t}\n}\nNamedNodeMap.prototype = {\n\tlength: 0,\n\titem: NodeList.prototype.item,\n\n\t/**\n\t * Get an attribute by name. Note: Name is in lower case in case of HTML namespace and\n\t * document.\n\t *\n\t * @param {string} localName\n\t * The local name of the attribute.\n\t * @returns {Attr | null}\n\t * The attribute with the given local name, or null if no such attribute exists.\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name\n\t */\n\tgetNamedItem: function (localName) {\n\t\tif (this._ownerElement && this._ownerElement._isInHTMLDocumentAndNamespace()) {\n\t\t\tlocalName = localName.toLowerCase();\n\t\t}\n\t\tvar i = 0;\n\t\twhile (i < this.length) {\n\t\t\tvar attr = this[i];\n\t\t\tif (attr.nodeName === localName) {\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\treturn null;\n\t},\n\n\t/**\n\t * Set an attribute.\n\t *\n\t * @param {Attr} attr\n\t * The attribute to set.\n\t * @returns {Attr | null}\n\t * The old attribute with the same local name and namespace URI as the new one, or null if no\n\t * such attribute exists.\n\t * @throws {DOMException}\n\t * With code:\n\t * - {@link INUSE_ATTRIBUTE_ERR} - If the attribute is already an attribute of another\n\t * element.\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-set\n\t */\n\tsetNamedItem: function (attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif (el && el !== this._ownerElement) {\n\t\t\tthrow new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItemNS(attr.namespaceURI, attr.localName);\n\t\tif (oldAttr === attr) {\n\t\t\treturn attr;\n\t\t}\n\t\t_addNamedNode(this._ownerElement, this, attr, oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/**\n\t * Set an attribute, replacing an existing attribute with the same local name and namespace\n\t * URI if one exists.\n\t *\n\t * @param {Attr} attr\n\t * The attribute to set.\n\t * @returns {Attr | null}\n\t * The old attribute with the same local name and namespace URI as the new one, or null if no\n\t * such attribute exists.\n\t * @throws {DOMException}\n\t * Throws a DOMException with the name \"InUseAttributeError\" if the attribute is already an\n\t * attribute of another element.\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-set\n\t */\n\tsetNamedItemNS: function (attr) {\n\t\treturn this.setNamedItem(attr);\n\t},\n\n\t/**\n\t * Removes an attribute specified by the local name.\n\t *\n\t * @param {string} localName\n\t * The local name of the attribute to be removed.\n\t * @returns {Attr}\n\t * The attribute node that was removed.\n\t * @throws {DOMException}\n\t * With code:\n\t * - {@link DOMException.NOT_FOUND_ERR} if no attribute with the given name is found.\n\t * @see https://dom.spec.whatwg.org/#dom-namednodemap-removenameditem\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-remove-by-name\n\t */\n\tremoveNamedItem: function (localName) {\n\t\tvar attr = this.getNamedItem(localName);\n\t\tif (!attr) {\n\t\t\tthrow new DOMException(DOMException.NOT_FOUND_ERR, localName);\n\t\t}\n\t\t_removeNamedNode(this._ownerElement, this, attr);\n\t\treturn attr;\n\t},\n\n\t/**\n\t * Removes an attribute specified by the namespace and local name.\n\t *\n\t * @param {string | null} namespaceURI\n\t * The namespace URI of the attribute to be removed.\n\t * @param {string} localName\n\t * The local name of the attribute to be removed.\n\t * @returns {Attr}\n\t * The attribute node that was removed.\n\t * @throws {DOMException}\n\t * With code:\n\t * - {@link DOMException.NOT_FOUND_ERR} if no attribute with the given namespace URI and local\n\t * name is found.\n\t * @see https://dom.spec.whatwg.org/#dom-namednodemap-removenameditemns\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-remove-by-namespace\n\t */\n\tremoveNamedItemNS: function (namespaceURI, localName) {\n\t\tvar attr = this.getNamedItemNS(namespaceURI, localName);\n\t\tif (!attr) {\n\t\t\tthrow new DOMException(DOMException.NOT_FOUND_ERR, namespaceURI ? namespaceURI + ' : ' + localName : localName);\n\t\t}\n\t\t_removeNamedNode(this._ownerElement, this, attr);\n\t\treturn attr;\n\t},\n\n\t/**\n\t * Get an attribute by namespace and local name.\n\t *\n\t * @param {string | null} namespaceURI\n\t * The namespace URI of the attribute.\n\t * @param {string} localName\n\t * The local name of the attribute.\n\t * @returns {Attr | null}\n\t * The attribute with the given namespace URI and local name, or null if no such attribute\n\t * exists.\n\t * @see https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace\n\t */\n\tgetNamedItemNS: function (namespaceURI, localName) {\n\t\tif (!namespaceURI) {\n\t\t\tnamespaceURI = null;\n\t\t}\n\t\tvar i = 0;\n\t\twhile (i < this.length) {\n\t\t\tvar node = this[i];\n\t\t\tif (node.localName === localName && node.namespaceURI === namespaceURI) {\n\t\t\t\treturn node;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\treturn null;\n\t},\n};\nNamedNodeMap.prototype[Symbol.iterator] = function () {\n\tvar me = this;\n\tvar index = 0;\n\n\treturn {\n\t\tnext: function () {\n\t\t\tif (index < me.length) {\n\t\t\t\treturn {\n\t\t\t\t\tvalue: me[index++],\n\t\t\t\t\tdone: false,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\tdone: true,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\treturn: function () {\n\t\t\treturn {\n\t\t\t\tdone: true,\n\t\t\t};\n\t\t},\n\t};\n};\n\n/**\n * The DOMImplementation interface provides a number of methods for performing operations that\n * are independent of any particular instance of the document object model.\n *\n * The DOMImplementation interface represents an object providing methods which are not\n * dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * **The individual methods describe the differences compared to the specs**.\n *\n * @class DOMImplementation\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core\n *      (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n * @constructs DOMImplementation\n */\nfunction DOMImplementation() {}\n\nDOMImplementation.prototype = {\n\t/**\n\t * Test if the DOM implementation implements a specific feature and version, as specified in\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/core.html#DOMFeatures DOM Features}.\n\t *\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given\n\t * feature is supported. The different implementations fairly diverged in what kind of\n\t * features were reported. The latest version of the spec settled to force this method to\n\t * always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated\n\t * It is deprecated and modern browsers return true in all cases.\n\t * @function DOMImplementation#hasFeature\n\t * @param {string} feature\n\t * The name of the feature to test.\n\t * @param {string} [version]\n\t * This is the version number of the feature to test.\n\t * @returns {boolean}\n\t * Always returns true.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-5CED94D7 DOM Level 3 Core\n\t */\n\thasFeature: function (feature, version) {\n\t\treturn true;\n\t},\n\t/**\n\t * Creates a DOM Document object of the specified type with its document element. Note that\n\t * based on the {@link DocumentType}\n\t * given to create the document, the implementation may instantiate specialized\n\t * {@link Document} objects that support additional features than the \"Core\", such as \"HTML\"\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#DOM2HTML DOM Level 2 HTML}.\n\t * On the other hand, setting the {@link DocumentType} after the document was created makes\n\t * this very unlikely to happen. Alternatively, specialized {@link Document} creation methods,\n\t * such as createHTMLDocument\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#DOM2HTML DOM Level 2 HTML},\n\t * can be used to obtain specific types of {@link Document} objects.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document`\n\t * instance (with it's `type` set to `'xml'`).\n\t * - `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t *\n\t * @function DOMImplementation.createDocument\n\t * @param {string | null} namespaceURI\n\t * The\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-namespaceURI namespace URI}\n\t * of the document element to create or null.\n\t * @param {string | null} qualifiedName\n\t * The\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-qualifiedname qualified name}\n\t * of the document element to be created or null.\n\t * @param {DocumentType | null} [doctype=null]\n\t * The type of document to be created or null. When doctype is not null, its\n\t * {@link Node#ownerDocument} attribute is set to the document being created. Default is\n\t * `null`\n\t * @returns {Document}\n\t * A new {@link Document} object with its document element. If the NamespaceURI,\n\t * qualifiedName, and doctype are null, the returned {@link Document} is empty with no\n\t * document element.\n\t * @throws {DOMException}\n\t * With code:\n\t *\n\t * - `INVALID_CHARACTER_ERR`: Raised if the specified qualified name is not an XML name\n\t * according to {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#XML XML 1.0}.\n\t * - `NAMESPACE_ERR`: Raised if the qualifiedName is malformed, if the qualifiedName has a\n\t * prefix and the namespaceURI is null, or if the qualifiedName is null and the namespaceURI\n\t * is different from null, or if the qualifiedName has a prefix that is \"xml\" and the\n\t * namespaceURI is different from \"{@link http://www.w3.org/XML/1998/namespace}\"\n\t * {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#Namespaces XML Namespaces},\n\t * or if the DOM implementation does not support the \"XML\" feature but a non-null namespace\n\t * URI was provided, since namespaces were defined by XML.\n\t * - `WRONG_DOCUMENT_ERR`: Raised if doctype has already been used with a different document\n\t * or was created from a different implementation.\n\t * - `NOT_SUPPORTED_ERR`: May be raised if the implementation does not support the feature\n\t * \"XML\" and the language exposed through the Document does not support XML Namespaces (such\n\t * as {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#HTML40 HTML 4.01}).\n\t * @since DOM Level 2.\n\t * @see {@link #createHTMLDocument}\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument DOM Living Standard\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Level-2-Core-DOM-createDocument DOM\n\t *      Level 3 Core\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM\n\t *      Level 2 Core (initial)\n\t */\n\tcreateDocument: function (namespaceURI, qualifiedName, doctype) {\n\t\tvar contentType = MIME_TYPE.XML_APPLICATION;\n\t\tif (namespaceURI === NAMESPACE.HTML) {\n\t\t\tcontentType = MIME_TYPE.XML_XHTML_APPLICATION;\n\t\t} else if (namespaceURI === NAMESPACE.SVG) {\n\t\t\tcontentType = MIME_TYPE.XML_SVG_IMAGE;\n\t\t}\n\t\tvar doc = new Document(PDC, { contentType: contentType });\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype) {\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName) {\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Creates an empty DocumentType node. Entity declarations and notations are not made\n\t * available. Entity reference expansions and default attribute additions do not occur.\n\t *\n\t * **This behavior is slightly different from the one in the specs**:\n\t * - `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - `publicId` and `systemId` contain the raw data including any possible quotes,\n\t *   so they can always be serialized back to the original value\n\t * - `internalSubset` contains the raw string between `[` and `]` if present,\n\t *   but is not parsed or validated in any form.\n\t *\n\t * @function DOMImplementation#createDocumentType\n\t * @param {string} qualifiedName\n\t * The {@link https://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-qualifiedname qualified\n\t * name} of the document type to be created.\n\t * @param {string} [publicId]\n\t * The external subset public identifier. Stored verbatim including surrounding quotes.\n\t * When serialized with `requireWellFormed: true`, the serializer throws `InvalidStateError`\n\t * if the value is non-empty and does not match the XML `PubidLiteral` production\n\t * (W3C DOM Parsing §3.2.1.3; XML 1.0 production [12]). Creation-time validation is not\n\t * enforced — deferred to a future breaking release.\n\t * @param {string} [systemId]\n\t * The external subset system identifier. Stored verbatim including surrounding quotes.\n\t * When serialized with `requireWellFormed: true`, the serializer throws `InvalidStateError`\n\t * if the value is non-empty and does not match the XML `SystemLiteral` production\n\t * (W3C DOM Parsing §3.2.1.3; XML 1.0 production [11]). Creation-time validation is not\n\t * enforced — deferred to a future breaking release.\n\t * @param {string} [internalSubset]\n\t * The internal subset or an empty string if it is not present. Stored verbatim.\n\t * When serialized with `requireWellFormed: true`, the serializer throws `InvalidStateError`\n\t * if the value contains `\"]>\"`. Creation-time validation is not enforced.\n\t * @returns {DocumentType}\n\t * A new {@link DocumentType} node with {@link Node#ownerDocument} set to null.\n\t * @throws {DOMException}\n\t * With code:\n\t *\n\t * - `INVALID_CHARACTER_ERR`: Raised if the specified qualified name is not an XML name\n\t * according to {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#XML XML 1.0}.\n\t * - `NAMESPACE_ERR`: Raised if the qualifiedName is malformed.\n\t * - `NOT_SUPPORTED_ERR`: May be raised if the implementation does not support the feature\n\t * \"XML\" and the language exposed through the Document does not support XML Namespaces (such\n\t * as {@link https://www.w3.org/TR/DOM-Level-3-Core/references.html#HTML40 HTML 4.01}).\n\t * @since DOM Level 2.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType\n\t *      MDN\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living\n\t *      Standard\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Level-3-Core-DOM-createDocType DOM\n\t *      Level 3 Core\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM\n\t *      Level 2 Core\n\t * @see https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md#050\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/#core-ID-Core-DocType-internalSubset\n\t * @prettierignore\n\t */\n\tcreateDocumentType: function (qualifiedName, publicId, systemId, internalSubset) {\n\t\tvalidateQualifiedName(qualifiedName);\n\t\tvar node = new DocumentType(PDC);\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\t\tnode.internalSubset = internalSubset || '';\n\t\tnode.childNodes = new NodeList();\n\n\t\treturn node;\n\t},\n\t/**\n\t * Returns an HTML document, that might already have a basic DOM structure.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - If the first argument is `false` no initial nodes are added (steps 3-7 in the specs are\n\t * omitted)\n\t * - `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t *\n\t * @param {string | false} [title]\n\t * A string containing the title to give the new HTML document.\n\t * @returns {Document}\n\t * The HTML document.\n\t * @since WHATWG Living Standard.\n\t * @see {@link #createDocument}\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument\n\t * @see https://dom.spec.whatwg.org/#html-document\n\t */\n\tcreateHTMLDocument: function (title) {\n\t\tvar doc = new Document(PDC, { contentType: MIME_TYPE.HTML });\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tif (title !== false) {\n\t\t\tdoc.doctype = this.createDocumentType('html');\n\t\t\tdoc.doctype.ownerDocument = doc;\n\t\t\tdoc.appendChild(doc.doctype);\n\t\t\tvar htmlNode = doc.createElement('html');\n\t\t\tdoc.appendChild(htmlNode);\n\t\t\tvar headNode = doc.createElement('head');\n\t\t\thtmlNode.appendChild(headNode);\n\t\t\tif (typeof title === 'string') {\n\t\t\t\tvar titleNode = doc.createElement('title');\n\t\t\t\ttitleNode.appendChild(doc.createTextNode(title));\n\t\t\t\theadNode.appendChild(titleNode);\n\t\t\t}\n\t\t\thtmlNode.appendChild(doc.createElement('body'));\n\t\t}\n\t\treturn doc;\n\t},\n};\n\n/**\n * The DOM Node interface is an abstract base class upon which many other DOM API objects are\n * based, thus letting those object types to be used similarly and often interchangeably. As an\n * abstract class, there is no such thing as a plain Node object. All objects that implement\n * Node functionality are based on one of its subclasses. Most notable are Document, Element,\n * and DocumentFragment.\n *\n * In addition, every kind of DOM node is represented by an interface based on Node. These\n * include Attr, CharacterData (which Text, Comment, CDATASection and ProcessingInstruction are\n * all based on), and DocumentType.\n *\n * In some cases, a particular feature of the base Node interface may not apply to one of its\n * child interfaces; in that case, the inheriting node may return null or throw an exception,\n * depending on circumstances. For example, attempting to add children to a node type that\n * cannot have children will throw an exception.\n *\n * **This behavior is slightly different from the in the specs**:\n * - unimplemented interfaces: `EventTarget`\n *\n * @class\n * @abstract\n * @param {Symbol} symbol\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n * @see https://dom.spec.whatwg.org/#node\n * @prettierignore\n */\nfunction Node(symbol) {\n\tcheckSymbol(symbol);\n}\n\nNode.prototype = {\n\t/**\n\t * The first child of this node.\n\t *\n\t * @type {Node | null}\n\t */\n\tfirstChild: null,\n\t/**\n\t * The last child of this node.\n\t *\n\t * @type {Node | null}\n\t */\n\tlastChild: null,\n\t/**\n\t * The previous sibling of this node.\n\t *\n\t * @type {Node | null}\n\t */\n\tpreviousSibling: null,\n\t/**\n\t * The next sibling of this node.\n\t *\n\t * @type {Node | null}\n\t */\n\tnextSibling: null,\n\t/**\n\t * The parent node of this node.\n\t *\n\t * @type {Node | null}\n\t */\n\tparentNode: null,\n\t/**\n\t * The parent element of this node.\n\t *\n\t * @type {Element | null}\n\t */\n\tget parentElement() {\n\t\treturn this.parentNode && this.parentNode.nodeType === this.ELEMENT_NODE ? this.parentNode : null;\n\t},\n\t/**\n\t * The child nodes of this node.\n\t *\n\t * @type {NodeList}\n\t */\n\tchildNodes: null,\n\t/**\n\t * The document object associated with this node.\n\t *\n\t * @type {Document | null}\n\t */\n\townerDocument: null,\n\t/**\n\t * The value of this node.\n\t *\n\t * @type {string | null}\n\t */\n\tnodeValue: null,\n\t/**\n\t * The namespace URI of this node.\n\t *\n\t * @type {string | null}\n\t */\n\tnamespaceURI: null,\n\t/**\n\t * The prefix of the namespace for this node.\n\t *\n\t * @type {string | null}\n\t */\n\tprefix: null,\n\t/**\n\t * The local part of the qualified name of this node.\n\t *\n\t * @type {string | null}\n\t */\n\tlocalName: null,\n\t/**\n\t * The baseURI is currently always `about:blank`,\n\t * since that's what happens when you create a document from scratch.\n\t *\n\t * @type {'about:blank'}\n\t */\n\tbaseURI: 'about:blank',\n\t/**\n\t * Is true if this node is part of a document.\n\t *\n\t * @type {boolean}\n\t */\n\tget isConnected() {\n\t\tvar rootNode = this.getRootNode();\n\t\treturn rootNode && rootNode.nodeType === rootNode.DOCUMENT_NODE;\n\t},\n\t/**\n\t * Checks whether `other` is an inclusive descendant of this node.\n\t *\n\t * @param {Node | null | undefined} other\n\t * The node to check.\n\t * @returns {boolean}\n\t * True if `other` is an inclusive descendant of this node; false otherwise.\n\t * @see https://dom.spec.whatwg.org/#dom-node-contains\n\t */\n\tcontains: function (other) {\n\t\tif (!other) return false;\n\t\tvar parent = other;\n\t\tdo {\n\t\t\tif (this === parent) return true;\n\t\t\tparent = parent.parentNode;\n\t\t} while (parent);\n\t\treturn false;\n\t},\n\t/**\n\t * @typedef GetRootNodeOptions\n\t * @property {boolean} [composed=false]\n\t */\n\t/**\n\t * Searches for the root node of this node.\n\t *\n\t * **This behavior is slightly different from the in the specs**:\n\t * - ignores `options.composed`, since `ShadowRoot`s are unsupported, always returns root.\n\t *\n\t * @param {GetRootNodeOptions} [options]\n\t * @returns {Node}\n\t * Root node.\n\t * @see https://dom.spec.whatwg.org/#dom-node-getrootnode\n\t * @see https://dom.spec.whatwg.org/#concept-shadow-including-root\n\t */\n\tgetRootNode: function (options) {\n\t\tvar parent = this;\n\t\tdo {\n\t\t\tif (!parent.parentNode) {\n\t\t\t\treturn parent;\n\t\t\t}\n\t\t\tparent = parent.parentNode;\n\t\t} while (parent);\n\t},\n\t/**\n\t * Checks whether the given node is equal to this node.\n\t *\n\t * Two nodes are equal when they have the same type, defining characteristics (for the type),\n\t * and the same childNodes. The comparison is iterative to avoid stack overflows on\n\t * deeply-nested trees. Attribute nodes of each Element pair are also pushed onto the stack\n\t * and compared the same way.\n\t *\n\t * @param {Node} [otherNode]\n\t * @returns {boolean}\n\t * @see https://dom.spec.whatwg.org/#concept-node-equals\n\t * @see ../docs/walk-dom.md.\n\t */\n\tisEqualNode: function (otherNode) {\n\t\tif (!otherNode) return false;\n\n\t\t// Use an explicit {node, other} pair stack to avoid call-stack overflow on deep trees.\n\t\t// walkDOM cannot be used here — parallel two-tree traversal requires pairing\n\t\t// corresponding nodes at each step across both trees simultaneously.\n\t\tvar stack = [{ node: this, other: otherNode }];\n\t\twhile (stack.length > 0) {\n\t\t\tvar pair = stack.pop();\n\t\t\tvar node = pair.node;\n\t\t\tvar other = pair.other;\n\n\t\t\tif (node.nodeType !== other.nodeType) return false;\n\n\t\t\tswitch (node.nodeType) {\n\t\t\t\tcase node.DOCUMENT_TYPE_NODE:\n\t\t\t\t\tif (node.name !== other.name) return false;\n\t\t\t\t\tif (node.publicId !== other.publicId) return false;\n\t\t\t\t\tif (node.systemId !== other.systemId) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase node.ELEMENT_NODE:\n\t\t\t\t\tif (node.namespaceURI !== other.namespaceURI) return false;\n\t\t\t\t\tif (node.prefix !== other.prefix) return false;\n\t\t\t\t\tif (node.localName !== other.localName) return false;\n\t\t\t\t\tif (node.attributes.length !== other.attributes.length) return false;\n\t\t\t\t\tfor (var i = 0; i < node.attributes.length; i++) {\n\t\t\t\t\t\tvar attr = node.attributes.item(i);\n\t\t\t\t\t\tvar otherAttr = other.getAttributeNodeNS(attr.namespaceURI, attr.localName);\n\t\t\t\t\t\tif (!otherAttr) return false;\n\t\t\t\t\t\tstack.push({ node: attr, other: otherAttr });\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase node.ATTRIBUTE_NODE:\n\t\t\t\t\tif (node.namespaceURI !== other.namespaceURI) return false;\n\t\t\t\t\tif (node.localName !== other.localName) return false;\n\t\t\t\t\tif (node.value !== other.value) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase node.PROCESSING_INSTRUCTION_NODE:\n\t\t\t\t\tif (node.target !== other.target || node.data !== other.data) return false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase node.TEXT_NODE:\n\t\t\t\tcase node.CDATA_SECTION_NODE:\n\t\t\t\tcase node.COMMENT_NODE:\n\t\t\t\t\tif (node.data !== other.data) return false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (node.childNodes.length !== other.childNodes.length) return false;\n\n\t\t\t// Push children in reverse order so index 0 is processed first (LIFO).\n\t\t\tfor (var i = node.childNodes.length - 1; i >= 0; i--) {\n\t\t\t\tstack.push({ node: node.childNodes[i], other: other.childNodes[i] });\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\t/**\n\t * Checks whether or not the given node is this node.\n\t *\n\t * @param {Node} [otherNode]\n\t */\n\tisSameNode: function (otherNode) {\n\t\treturn this === otherNode;\n\t},\n\t/**\n\t * Inserts a node before a reference node as a child of this node.\n\t *\n\t * @param {Node} newChild\n\t * The new child node to be inserted.\n\t * @param {Node | null} refChild\n\t * The reference node before which newChild will be inserted.\n\t * @returns {Node}\n\t * The new child node successfully inserted.\n\t * @throws {DOMException}\n\t * Throws a DOMException if inserting the node would result in a DOM tree that is not\n\t * well-formed, or if `child` is provided but is not a child of `parent`.\n\t * See {@link _insertBefore} for more details.\n\t * @since Modified in DOM L2\n\t */\n\tinsertBefore: function (newChild, refChild) {\n\t\treturn _insertBefore(this, newChild, refChild);\n\t},\n\t/**\n\t * Replaces an old child node with a new child node within this node.\n\t *\n\t * @param {Node} newChild\n\t * The new node that is to replace the old node.\n\t * If it already exists in the DOM, it is removed from its original position.\n\t * @param {Node} oldChild\n\t * The existing child node to be replaced.\n\t * @returns {Node}\n\t * Returns the replaced child node.\n\t * @throws {DOMException}\n\t * Throws a DOMException if replacing the node would result in a DOM tree that is not\n\t * well-formed, or if `oldChild` is not a child of `this`.\n\t * This can also occur if the pre-replacement validity assertion fails.\n\t * See {@link _insertBefore}, {@link Node.removeChild}, and\n\t * {@link assertPreReplacementValidityInDocument} for more details.\n\t * @see https://dom.spec.whatwg.org/#concept-node-replace\n\t */\n\treplaceChild: function (newChild, oldChild) {\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\t/**\n\t * Removes an existing child node from this node.\n\t *\n\t * @param {Node} oldChild\n\t * The child node to be removed.\n\t * @returns {Node}\n\t * Returns the removed child node.\n\t * @throws {DOMException}\n\t * Throws a DOMException if `oldChild` is not a child of `this`.\n\t * See {@link _removeChild} for more details.\n\t */\n\tremoveChild: function (oldChild) {\n\t\treturn _removeChild(this, oldChild);\n\t},\n\t/**\n\t * Appends a child node to this node.\n\t *\n\t * @param {Node} newChild\n\t * The child node to be appended to this node.\n\t * If it already exists in the DOM, it is removed from its original position.\n\t * @returns {Node}\n\t * Returns the appended child node.\n\t * @throws {DOMException}\n\t * Throws a DOMException if appending the node would result in a DOM tree that is not\n\t * well-formed, or if `newChild` is not a valid Node.\n\t * See {@link insertBefore} for more details.\n\t */\n\tappendChild: function (newChild) {\n\t\treturn this.insertBefore(newChild, null);\n\t},\n\t/**\n\t * Determines whether this node has any child nodes.\n\t *\n\t * @returns {boolean}\n\t * Returns true if this node has any child nodes, and false otherwise.\n\t */\n\thasChildNodes: function () {\n\t\treturn this.firstChild != null;\n\t},\n\t/**\n\t * Creates a copy of the calling node.\n\t *\n\t * @param {boolean} deep\n\t * If true, the contents of the node are recursively copied.\n\t * If false, only the node itself (and its attributes, if it is an element) are copied.\n\t * @returns {Node}\n\t * Returns the newly created copy of the node.\n\t * @throws {DOMException}\n\t * May throw a DOMException if operations within {@link Element#setAttributeNode} or\n\t * {@link Node#appendChild} (which are potentially invoked in this method) do not meet their\n\t * specific constraints.\n\t * @see {@link cloneNode}\n\t */\n\tcloneNode: function (deep) {\n\t\treturn cloneNode(this.ownerDocument || this, this, deep);\n\t},\n\t/**\n\t * Puts the specified node and all of its subtree into a \"normalized\" form. In a normalized\n\t * subtree, no text nodes in the subtree are empty and there are no adjacent text nodes.\n\t *\n\t * Specifically, this method merges any adjacent text nodes (i.e., nodes for which `nodeType`\n\t * is `TEXT_NODE`) into a single node with the combined data. It also removes any empty text\n\t * nodes.\n\t *\n\t * This method iterativly traverses all child nodes to normalize all descendent nodes within\n\t * the subtree.\n\t *\n\t * @throws {DOMException}\n\t * May throw a DOMException if operations within removeChild or appendData (which are\n\t * potentially invoked in this method) do not meet their specific constraints.\n\t * @since Modified in DOM Level 2\n\t * @see {@link Node.removeChild}\n\t * @see {@link CharacterData.appendData}\n\t * @see ../docs/walk-dom.md.\n\t */\n\tnormalize: function () {\n\t\twalkDOM(this, null, {\n\t\t\tenter: function (node) {\n\t\t\t\t// Merge adjacent text children of node before walkDOM schedules them.\n\t\t\t\t// walkDOM reads lastChild/previousSibling after enter returns, so the\n\t\t\t\t// surviving post-merge children are what it descends into.\n\t\t\t\tvar child = node.firstChild;\n\t\t\t\twhile (child) {\n\t\t\t\t\tvar next = child.nextSibling;\n\t\t\t\t\tif (next !== null && next.nodeType === TEXT_NODE && child.nodeType === TEXT_NODE) {\n\t\t\t\t\t\tnode.removeChild(next);\n\t\t\t\t\t\tchild.appendData(next.data);\n\t\t\t\t\t\t// Do not advance child: re-check new nextSibling for another text run\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchild = next;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true; // descend into surviving children\n\t\t\t},\n\t\t});\n\t},\n\t/**\n\t * Checks whether the DOM implementation implements a specific feature and its version.\n\t *\n\t * @deprecated\n\t * Since `DOMImplementation.hasFeature` is deprecated and always returns true.\n\t * @param {string} feature\n\t * The package name of the feature to test. This is the same name that can be passed to the\n\t * method `hasFeature` on `DOMImplementation`.\n\t * @param {string} version\n\t * This is the version number of the package name to test.\n\t * @returns {boolean}\n\t * Returns true in all cases in the current implementation.\n\t * @since Introduced in DOM Level 2\n\t * @see {@link DOMImplementation.hasFeature}\n\t */\n\tisSupported: function (feature, version) {\n\t\treturn this.ownerDocument.implementation.hasFeature(feature, version);\n\t},\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * **This behavior is different from the in the specs**:\n\t * - no node type specific handling\n\t * - uses the internal attribute _nsMap for resolving namespaces that is updated when changing attributes\n\t *\n\t * @param {string | null} namespaceURI\n\t * The namespace URI for which to find the associated prefix.\n\t * @returns {string | null}\n\t * The associated prefix, if found; otherwise, null.\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t * @prettierignore\n\t */\n\tlookupPrefix: function (namespaceURI) {\n\t\tvar el = this;\n\t\twhile (el) {\n\t\t\tvar map = el._nsMap;\n\t\t\t//console.dir(map)\n\t\t\tif (map) {\n\t\t\t\tfor (var n in map) {\n\t\t\t\t\tif (hasOwn(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\treturn n;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tel = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode;\n\t\t}\n\t\treturn null;\n\t},\n\t/**\n\t * This function is used to look up the namespace URI associated with the given prefix,\n\t * starting from this node.\n\t *\n\t * **This behavior is different from the in the specs**:\n\t * - no node type specific handling\n\t * - uses the internal attribute _nsMap for resolving namespaces that is updated when changing attributes\n\t *\n\t * @param {string | null} prefix\n\t * The prefix for which to find the associated namespace URI.\n\t * @returns {string | null}\n\t * The associated namespace URI, if found; otherwise, null.\n\t * @since DOM Level 3\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupnamespaceuri\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI\n\t * @prettierignore\n\t */\n\tlookupNamespaceURI: function (prefix) {\n\t\tvar el = this;\n\t\twhile (el) {\n\t\t\tvar map = el._nsMap;\n\t\t\t//console.dir(map)\n\t\t\tif (map) {\n\t\t\t\tif (hasOwn(map, prefix)) {\n\t\t\t\t\treturn map[prefix];\n\t\t\t\t}\n\t\t\t}\n\t\t\tel = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode;\n\t\t}\n\t\treturn null;\n\t},\n\t/**\n\t * Determines whether the given namespace URI is the default namespace.\n\t *\n\t * The function works by looking up the prefix associated with the given namespace URI. If no\n\t * prefix is found (i.e., the namespace URI is not registered in the namespace map of this\n\t * node or any of its ancestors), it returns `true`, implying the namespace URI is considered\n\t * the default.\n\t *\n\t * **This behavior is different from the in the specs**:\n\t * - no node type specific handling\n\t * - uses the internal attribute _nsMap for resolving namespaces that is updated when changing attributes\n\t *\n\t * @param {string | null} namespaceURI\n\t * The namespace URI to be checked.\n\t * @returns {boolean}\n\t * Returns true if the given namespace URI is the default namespace, false otherwise.\n\t * @since DOM Level 3\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace\n\t * @see https://dom.spec.whatwg.org/#dom-node-isdefaultnamespace\n\t * @prettierignore\n\t */\n\tisDefaultNamespace: function (namespaceURI) {\n\t\tvar prefix = this.lookupPrefix(namespaceURI);\n\t\treturn prefix == null;\n\t},\n\t/**\n\t * Compares the reference node with a node with regard to their position in the document and\n\t * according to the document order.\n\t *\n\t * @param {Node} other\n\t * The node to compare the reference node to.\n\t * @returns {number}\n\t * Returns how the node is positioned relatively to the reference node according to the\n\t * bitmask. 0 if reference node and given node are the same.\n\t * @since DOM Level 3\n\t * @see https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#Node3-compare\n\t * @see https://dom.spec.whatwg.org/#dom-node-comparedocumentposition\n\t */\n\tcompareDocumentPosition: function (other) {\n\t\tif (this === other) return 0;\n\t\tvar node1 = other;\n\t\tvar node2 = this;\n\t\tvar attr1 = null;\n\t\tvar attr2 = null;\n\t\tif (node1 instanceof Attr) {\n\t\t\tattr1 = node1;\n\t\t\tnode1 = attr1.ownerElement;\n\t\t}\n\t\tif (node2 instanceof Attr) {\n\t\t\tattr2 = node2;\n\t\t\tnode2 = attr2.ownerElement;\n\t\t\tif (attr1 && node1 && node2 === node1) {\n\t\t\t\tfor (var i = 0, attr; (attr = node2.attributes[i]); i++) {\n\t\t\t\t\tif (attr === attr1)\n\t\t\t\t\t\treturn DocumentPosition.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC + DocumentPosition.DOCUMENT_POSITION_PRECEDING;\n\t\t\t\t\tif (attr === attr2)\n\t\t\t\t\t\treturn DocumentPosition.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC + DocumentPosition.DOCUMENT_POSITION_FOLLOWING;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!node1 || !node2 || node2.ownerDocument !== node1.ownerDocument) {\n\t\t\treturn (\n\t\t\t\tDocumentPosition.DOCUMENT_POSITION_DISCONNECTED +\n\t\t\t\tDocumentPosition.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC +\n\t\t\t\t(docGUID(node2.ownerDocument) > docGUID(node1.ownerDocument)\n\t\t\t\t\t? DocumentPosition.DOCUMENT_POSITION_FOLLOWING\n\t\t\t\t\t: DocumentPosition.DOCUMENT_POSITION_PRECEDING)\n\t\t\t);\n\t\t}\n\t\tif (attr2 && node1 === node2) {\n\t\t\treturn DocumentPosition.DOCUMENT_POSITION_CONTAINS + DocumentPosition.DOCUMENT_POSITION_PRECEDING;\n\t\t}\n\t\tif (attr1 && node1 === node2) {\n\t\t\treturn DocumentPosition.DOCUMENT_POSITION_CONTAINED_BY + DocumentPosition.DOCUMENT_POSITION_FOLLOWING;\n\t\t}\n\n\t\tvar chain1 = [];\n\t\tvar ancestor1 = node1.parentNode;\n\t\twhile (ancestor1) {\n\t\t\tif (!attr2 && ancestor1 === node2) {\n\t\t\t\treturn DocumentPosition.DOCUMENT_POSITION_CONTAINED_BY + DocumentPosition.DOCUMENT_POSITION_FOLLOWING;\n\t\t\t}\n\t\t\tchain1.push(ancestor1);\n\t\t\tancestor1 = ancestor1.parentNode;\n\t\t}\n\t\tchain1.reverse();\n\n\t\tvar chain2 = [];\n\t\tvar ancestor2 = node2.parentNode;\n\t\twhile (ancestor2) {\n\t\t\tif (!attr1 && ancestor2 === node1) {\n\t\t\t\treturn DocumentPosition.DOCUMENT_POSITION_CONTAINS + DocumentPosition.DOCUMENT_POSITION_PRECEDING;\n\t\t\t}\n\t\t\tchain2.push(ancestor2);\n\t\t\tancestor2 = ancestor2.parentNode;\n\t\t}\n\t\tchain2.reverse();\n\n\t\tvar ca = commonAncestor(chain1, chain2);\n\t\tfor (var n in ca.childNodes) {\n\t\t\tvar child = ca.childNodes[n];\n\t\t\tif (child === node2) return DocumentPosition.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tif (child === node1) return DocumentPosition.DOCUMENT_POSITION_PRECEDING;\n\t\t\tif (chain2.indexOf(child) >= 0) return DocumentPosition.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tif (chain1.indexOf(child) >= 0) return DocumentPosition.DOCUMENT_POSITION_PRECEDING;\n\t\t}\n\t\treturn 0;\n\t},\n};\n\n/**\n * Encodes special XML characters to their corresponding entities.\n *\n * @param {string} c\n * The character to be encoded.\n * @returns {string}\n * The encoded character.\n * @private\n */\nfunction _xmlEncoder(c) {\n\treturn (\n\t\t(c == '<' && '&lt;') || (c == '>' && '&gt;') || (c == '&' && '&amp;') || (c == '\"' && '&quot;') || '&#' + c.charCodeAt() + ';'\n\t);\n}\n\ncopy(NodeType, Node);\ncopy(NodeType, Node.prototype);\ncopy(DocumentPosition, Node);\ncopy(DocumentPosition, Node.prototype);\n\n/**\n * Visits every node in the subtree rooted at `node` in depth-first pre-order.\n *\n * Delegates to {@link walkDOM} for traversal. The `callback` is called on each node;\n * if it returns a truthy value, traversal stops immediately.\n *\n * @param {Node} node\n * Root of the subtree to visit.\n * @param {function(Node): *} callback\n * Called for each node. A truthy return value stops traversal early.\n */\nfunction _visitNode(node, callback) {\n\twalkDOM(node, null, {\n\t\tenter: function (n) {\n\t\t\treturn callback(n) ? walkDOM.STOP : true;\n\t\t},\n\t});\n}\n\n/**\n * Depth-first pre/post-order DOM tree walker.\n *\n * Visits every node in the subtree rooted at `node`. For each node:\n *\n * 1. Calls `callbacks.enter(node, context)` before descending into the node's children. The\n * return value becomes the `context` passed to each child's `enter` call and to the matching\n * `exit` call.\n * 2. If `enter` returns `null` or `undefined`, the node's children are skipped;\n * sibling traversal continues normally.\n * 3. If `enter` returns `walkDOM.STOP`, the entire traversal is aborted immediately — no\n * further `enter` or `exit` calls are made.\n * 4. `lastChild` and `previousSibling` are read **after** `enter` returns, so `enter` may\n * safely modify the node's own child list before the walker descends. Modifying siblings of\n * the current node or any other part of the tree produces unpredictable results: nodes already\n * queued on the stack are visited regardless of DOM changes, and newly inserted nodes outside\n * the current child list are never visited.\n * 5. Calls `callbacks.exit(node, context)` (if provided) after all of a node's children have\n * been visited, passing the same `context` that `enter`\n * returned for that node.\n *\n * This implementation uses an explicit stack and does not recurse — it is safe on arbitrarily\n * deep trees.\n *\n * @param {Node} node\n * Root of the subtree to walk.\n * @param {*} context\n * Initial context value passed to the root node's `enter`.\n * @param {{ enter: function(Node, *): *, exit?: function(Node, *): void }} callbacks\n * @returns {void | walkDOM.STOP}\n * @see ../docs/walk-dom.md.\n */\nfunction walkDOM(node, context, callbacks) {\n\t// Each stack frame is {node, context, phase}:\n\t//   walkDOM.ENTER — call enter, then push children\n\t//   walkDOM.EXIT  — call exit\n\tvar stack = [{ node: node, context: context, phase: walkDOM.ENTER }];\n\twhile (stack.length > 0) {\n\t\tvar frame = stack.pop();\n\t\tif (frame.phase === walkDOM.ENTER) {\n\t\t\tvar childContext = callbacks.enter(frame.node, frame.context);\n\t\t\tif (childContext === walkDOM.STOP) {\n\t\t\t\treturn walkDOM.STOP;\n\t\t\t}\n\t\t\t// Push exit frame before children so it fires after all children are processed (Last In First Out)\n\t\t\tstack.push({ node: frame.node, context: childContext, phase: walkDOM.EXIT });\n\t\t\tif (childContext === null || childContext === undefined) {\n\t\t\t\tcontinue; // skip children\n\t\t\t}\n\t\t\t// lastChild is read after enter returns, so enter may modify the child list.\n\t\t\tvar child = frame.node.lastChild;\n\t\t\t// Traverse from lastChild backwards so that pushing onto the stack\n\t\t\t// naturally yields firstChild on top (processed first).\n\t\t\twhile (child) {\n\t\t\t\tstack.push({ node: child, context: childContext, phase: walkDOM.ENTER });\n\t\t\t\tchild = child.previousSibling;\n\t\t\t}\n\t\t} else {\n\t\t\t// frame.phase === walkDOM.EXIT\n\t\t\tif (callbacks.exit) {\n\t\t\t\tcallbacks.exit(frame.node, frame.context);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Sentinel value returned from a `walkDOM` `enter` callback to abort the entire traversal\n * immediately.\n *\n * @type {symbol}\n */\nwalkDOM.STOP = Symbol('walkDOM.STOP');\n/**\n * Phase constant for a stack frame that has not yet been visited.\n * The `enter` callback is called and children are scheduled.\n *\n * @type {number}\n */\nwalkDOM.ENTER = 0;\n/**\n * Phase constant for a stack frame whose subtree has been fully visited.\n * The `exit` callback is called.\n *\n * @type {number}\n */\nwalkDOM.EXIT = 1;\n\n/**\n * @typedef DocumentOptions\n * @property {string} [contentType=MIME_TYPE.XML_APPLICATION]\n */\n/**\n * The Document interface describes the common properties and methods for any kind of document.\n *\n * It should usually be created using `new DOMImplementation().createDocument(...)`\n * or `new DOMImplementation().createHTMLDocument(...)`.\n *\n * The constructor is considered a private API and offers to initially set the `contentType`\n * property via it's options parameter.\n *\n * @class\n * @param {Symbol} symbol\n * @param {DocumentOptions} [options]\n * @augments Node\n * @private\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document\n * @see https://dom.spec.whatwg.org/#interface-document\n */\nfunction Document(symbol, options) {\n\tcheckSymbol(symbol);\n\n\tvar opt = options || {};\n\tthis.ownerDocument = this;\n\t/**\n\t * The mime type of the document is determined at creation time and can not be modified.\n\t *\n\t * @type {string}\n\t * @see https://dom.spec.whatwg.org/#concept-document-content-type\n\t * @see {@link DOMImplementation}\n\t * @see {@link MIME_TYPE}\n\t * @readonly\n\t */\n\tthis.contentType = opt.contentType || MIME_TYPE.XML_APPLICATION;\n\t/**\n\t * @type {'html' | 'xml'}\n\t * @see https://dom.spec.whatwg.org/#concept-document-type\n\t * @see {@link DOMImplementation}\n\t * @readonly\n\t */\n\tthis.type = isHTMLMimeType(this.contentType) ? 'html' : 'xml';\n}\n\n/**\n * Updates the namespace mapping of an element when a new attribute is added.\n *\n * @param {Document} doc\n * The document that the element belongs to.\n * @param {Element} el\n * The element to which the attribute is being added.\n * @param {Attr} newAttr\n * The new attribute being added.\n * @private\n */\nfunction _onAddAttribute(doc, el, newAttr) {\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI;\n\tif (ns === NAMESPACE.XMLNS) {\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix ? newAttr.localName : ''] = newAttr.value;\n\t}\n}\n\n/**\n * Updates the namespace mapping of an element when an attribute is removed.\n *\n * @param {Document} doc\n * The document that the element belongs to.\n * @param {Element} el\n * The element from which the attribute is being removed.\n * @param {Attr} newAttr\n * The attribute being removed.\n * @param {boolean} remove\n * Indicates whether the attribute is to be removed.\n * @private\n */\nfunction _onRemoveAttribute(doc, el, newAttr, remove) {\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI;\n\tif (ns === NAMESPACE.XMLNS) {\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix ? newAttr.localName : ''];\n\t}\n}\n\n/**\n * Updates `parent.childNodes`, adjusting the indexed items and its `length`.\n * If `newChild` is provided and has no nextSibling, it will be appended.\n * Otherwise, it's assumed that an item has been removed or inserted,\n * and `parent.firstNode` and its `.nextSibling` to re-indexing all child nodes of `parent`.\n *\n * @param {Document} doc\n * The parent document of `el`.\n * @param {Node} parent\n * The parent node whose childNodes list needs to be updated.\n * @param {Node} [newChild]\n * The new child node to be appended. If not provided, the function assumes a node has been\n * removed.\n * @private\n */\nfunction _onUpdateChild(doc, parent, newChild) {\n\tif (doc && doc._inc) {\n\t\tdoc._inc++;\n\t\tvar childNodes = parent.childNodes;\n\t\t// assumes nextSibling and previousSibling were already configured upfront\n\t\tif (newChild && !newChild.nextSibling) {\n\t\t\t// if an item has been appended, we only need to update the last index and the length\n\t\t\tchildNodes[childNodes.length++] = newChild;\n\t\t} else {\n\t\t\t// otherwise we need to reindex all items,\n\t\t\t// which can take a while when processing nodes with a lot of children\n\t\t\tvar child = parent.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tchildNodes[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tchildNodes.length = i;\n\t\t\tdelete childNodes[childNodes.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @param {Node} parentNode\n * The parent node from which the child node is to be removed.\n * @param {Node} child\n * The child node to be removed from the parentNode.\n * @returns {Node}\n * Returns the child node that was removed.\n * @throws {DOMException}\n * With code:\n * - {@link DOMException.NOT_FOUND_ERR} If the parentNode is not the parent of the child node.\n * @private\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n */\nfunction _removeChild(parentNode, child) {\n\tif (parentNode !== child.parentNode) {\n\t\tthrow new DOMException(DOMException.NOT_FOUND_ERR, \"child's parent is not parent\");\n\t}\n\tvar oldPreviousSibling = child.previousSibling;\n\tvar oldNextSibling = child.nextSibling;\n\tif (oldPreviousSibling) {\n\t\toldPreviousSibling.nextSibling = oldNextSibling;\n\t} else {\n\t\tparentNode.firstChild = oldNextSibling;\n\t}\n\tif (oldNextSibling) {\n\t\toldNextSibling.previousSibling = oldPreviousSibling;\n\t} else {\n\t\tparentNode.lastChild = oldPreviousSibling;\n\t}\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.CDATA_SECTION_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.DOCUMENT_TYPE_NODE ||\n\t\t\tnode.nodeType === Node.ELEMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE ||\n\t\t\tnode.nodeType === Node.TEXT_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node.\n *\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc\n * The document node.\n * @param {Node} child\n * The node that would become the nextSibling if the element would be inserted.\n * @returns {boolean}\n * `true` if an element can be inserted before child.\n * @private\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc\n * The document node.\n * @param {Node} child\n * The node that would become the nextSibling if the element would be inserted.\n * @returns {boolean}\n * `true` if an element can be inserted before child.\n * @private\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Asserts pre-insertion validity of a node into a parent before a child.\n * Throws errors for invalid node combinations that would result in an ill-formed DOM.\n *\n * @param {Node} parent\n * The parent node to insert `node` into.\n * @param {Node} node\n * The node to insert.\n * @param {Node | null} child\n * The node that should become the `nextSibling` of `node`. If null, no sibling is considered.\n * @throws {DOMException}\n * With code:\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `parent` is not a Document,\n * DocumentFragment, or Element node.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is a host-including inclusive\n * ancestor of `parent`. (Currently not implemented)\n * - {@link DOMException.NOT_FOUND_ERR} If `child` is non-null and its `parent` is not\n * `parent`.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is not a DocumentFragment,\n * DocumentType, Element, or CharacterData node.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If either `node` is a Text node and `parent` is\n * a document, or if `node` is a doctype and `parent` is not a document.\n * @private\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(DOMException.NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tDOMException.HIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * Asserts pre-insertion validity of a node into a document before a child.\n * Throws errors for invalid node combinations that would result in an ill-formed DOM.\n *\n * @param {Document} parent\n * The parent node to insert `node` into.\n * @param {Node} node\n * The node to insert.\n * @param {Node | undefined} child\n * The node that should become the `nextSibling` of `node`. If undefined, no sibling is\n * considered.\n * @returns {Node}\n * @throws {DOMException}\n * With code:\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is a DocumentFragment with more than\n * one element child or has a Text node child.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is a DocumentFragment with one\n * element child and either `parent` has an element child, `child` is a doctype, or `child` is\n * non-null and a doctype is following `child`.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is an Element and `parent` has an\n * element child, `child` is a doctype, or `child` is non-null and a doctype is following\n * `child`.\n * - {@link DOMException.HIERARCHY_REQUEST_ERR} If `node` is a DocumentType and `parent` has a\n * doctype child, `child` is non-null and an element is preceding `child`, or `child` is null\n * and `parent` has an element child.\n * @private\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @param {Document} parent\n * The parent node to insert `node` into.\n * @param {Node} node\n * The node to insert.\n * @param {Node | undefined} child\n * the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws {DOMException}\n * For several node combinations that would create a DOM that is not well-formed.\n * @throws {DOMException}\n * If `child` is provided but is not a child of `parent`.\n * @private\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(DOMException.HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * Inserts a node into a parent node before a child node.\n *\n * @param {Node} parent\n * The parent node to insert the node into.\n * @param {Node} node\n * The node to insert into the parent.\n * @param {Node | null} child\n * The node that should become the next sibling of the node.\n * If null, the function inserts the node at the end of the children of the parent node.\n * @param {Function} [_inDocumentAssertion]\n * An optional function to check pre-insertion validity if parent is a document node.\n * Defaults to {@link assertPreInsertionValidityInDocument}\n * @returns {Node}\n * Returns the inserted node.\n * @throws {DOMException}\n * Throws a DOMException if inserting the node would result in a DOM tree that is not\n * well-formed. See {@link assertPreInsertionValidity1to5},\n * {@link assertPreInsertionValidityInDocument}.\n * @throws {DOMException}\n * Throws a DOMException if child is provided but is not a child of the parent. See\n * {@link Node.removeChild}\n * @private\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif (cp) {\n\t\tcp.removeChild(node); //remove and update\n\t}\n\tif (node.nodeType === DOCUMENT_FRAGMENT_NODE) {\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t} else {\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\tif (pre) {\n\t\tpre.nextSibling = newFirst;\n\t} else {\n\t\tparent.firstChild = newFirst;\n\t}\n\tif (child == null) {\n\t\tparent.lastChild = newLast;\n\t} else {\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo {\n\t\tnewFirst.parentNode = parent;\n\t} while (newFirst !== newLast && (newFirst = newFirst.nextSibling));\n\t_onUpdateChild(parent.ownerDocument || parent, parent, node);\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\n\treturn node;\n}\n\nDocument.prototype = {\n\t/**\n\t * The implementation that created this document.\n\t *\n\t * @type DOMImplementation\n\t * @readonly\n\t */\n\timplementation: null,\n\tnodeName: '#document',\n\tnodeType: DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @type DocumentType\n\t * @readonly\n\t */\n\tdoctype: null,\n\tdocumentElement: null,\n\t_inc: 1,\n\n\tinsertBefore: function (newChild, refChild) {\n\t\t//raises\n\t\tif (newChild.nodeType === DOCUMENT_FRAGMENT_NODE) {\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile (child) {\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child, refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild: function (oldChild) {\n\t\tvar removed = _removeChild(this, oldChild);\n\t\tif (removed === this.documentElement) {\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn removed;\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t/**\n\t * Imports a node from another document into this document, creating a new copy owned by this\n\t * document. The source node and its subtree are not modified.\n\t *\n\t * @param {Node} importedNode\n\t * The node to import.\n\t * @param {boolean} deep\n\t * If true, the contents of the node are recursively imported.\n\t * If false, only the node itself (and its attributes, if it is an element) are imported.\n\t * @returns {Node}\n\t * Returns the newly created import of the node.\n\t * @see {@link importNode}\n\t * @see {@link https://dom.spec.whatwg.org/#dom-document-importnode}\n\t */\n\timportNode: function (importedNode, deep) {\n\t\treturn importNode(this, importedNode, deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById: function (id) {\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement, function (node) {\n\t\t\tif (node.nodeType == ELEMENT_NODE) {\n\t\t\t\tif (node.getAttribute('id') == id) {\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * Creates a new `Element` that is owned by this `Document`.\n\t * In HTML Documents `localName` is the lower cased `tagName`,\n\t * otherwise no transformation is being applied.\n\t * When `contentType` implies the HTML namespace, it will be set as `namespaceURI`.\n\t *\n\t * __This implementation differs from the specification:__ - The provided name is not checked\n\t * against the `Name` production,\n\t * so no related error will be thrown.\n\t * - There is no interface `HTMLElement`, it is always an `Element`.\n\t * - There is no support for a second argument to indicate using custom elements.\n\t *\n\t * @param {string} tagName\n\t * @returns {Element}\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement\n\t * @see https://dom.spec.whatwg.org/#dom-document-createelement\n\t * @see https://dom.spec.whatwg.org/#concept-create-element\n\t */\n\tcreateElement: function (tagName) {\n\t\tvar node = new Element(PDC);\n\t\tnode.ownerDocument = this;\n\t\tif (this.type === 'html') {\n\t\t\ttagName = tagName.toLowerCase();\n\t\t}\n\t\tif (hasDefaultHTMLNamespace(this.contentType)) {\n\t\t\tnode.namespaceURI = NAMESPACE.HTML;\n\t\t}\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs = (node.attributes = new NamedNodeMap());\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t/**\n\t * @returns {DocumentFragment}\n\t */\n\tcreateDocumentFragment: function () {\n\t\tvar node = new DocumentFragment(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\t/**\n\t * @param {string} data\n\t * @returns {Text}\n\t */\n\tcreateTextNode: function (data) {\n\t\tvar node = new Text(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.appendData(data);\n\t\treturn node;\n\t},\n\t/**\n\t * @param {string} data\n\t * @returns {Comment}\n\t * @see https://dom.spec.whatwg.org/#dom-document-createcomment\n\t * @see https://www.w3.org/TR/xml/#NT-Comment XML 1.0 production [15]\n\t * @see https://www.w3.org/TR/DOM-Parsing/#dfn-concept-serialize-xml §3.2.1.3\n\t *\n\t *      Note: no validation is performed at creation time. When the resulting document is\n\t *      serialized with `requireWellFormed: true`, the serializer throws `InvalidStateError`\n\t *      if the comment data contains `--` anywhere, ends with `-`, or contains characters\n\t *      outside the XML Char production (W3C DOM Parsing §3.2.1.3). Without that option the\n\t *      data is emitted verbatim.\n\t */\n\tcreateComment: function (data) {\n\t\tvar node = new Comment(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.appendData(data);\n\t\treturn node;\n\t},\n\t/**\n\t * Returns a new CDATASection node whose data is `data`.\n\t *\n\t * __This implementation differs from the specification:__ - calling this method on an HTML\n\t * document does not throw `NotSupportedError`.\n\t *\n\t * @param {string} data\n\t * @returns {CDATASection}\n\t * @throws {DOMException}\n\t * With code `INVALID_CHARACTER_ERR` if `data` contains `\"]]>\"`.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/createCDATASection\n\t * @see https://dom.spec.whatwg.org/#dom-document-createcdatasection\n\t */\n\tcreateCDATASection: function (data) {\n\t\tif (data.indexOf(']]>') !== -1) {\n\t\t\tthrow new DOMException(DOMException.INVALID_CHARACTER_ERR, 'data contains \"]]>\"');\n\t\t}\n\t\tvar node = new CDATASection(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.appendData(data);\n\t\treturn node;\n\t},\n\t/**\n\t * Returns a ProcessingInstruction node whose target is target and data is data.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - it does not do any input validation on the arguments and doesn't throw\n\t * \"InvalidCharacterError\".\n\t *\n\t * Note: When the resulting document is serialized with `requireWellFormed: true`, the\n\t * serializer throws `InvalidStateError` if `.target` contains `:` or is an ASCII\n\t * case-insensitive match for `\"xml\"`, or if `.data` contains `?>` or characters outside the\n\t * XML Char production (W3C DOM Parsing §3.2.1.7). Without that option the data is emitted\n\t * verbatim.\n\t *\n\t * @param {string} target\n\t * @param {string} data\n\t * @returns {ProcessingInstruction}\n\t * @see https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction\n\t * @see https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction\n\t * @see https://www.w3.org/TR/DOM-Parsing/#dfn-concept-serialize-xml §3.2.1.7\n\t */\n\tcreateProcessingInstruction: function (target, data) {\n\t\tvar node = new ProcessingInstruction(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.nodeName = node.target = target;\n\t\tnode.nodeValue = node.data = data;\n\t\treturn node;\n\t},\n\t/**\n\t * Creates an `Attr` node that is owned by this document.\n\t * In HTML Documents `localName` is the lower cased `name`,\n\t * otherwise no transformation is being applied.\n\t *\n\t * __This implementation differs from the specification:__ - The provided name is not checked\n\t * against the `Name` production,\n\t * so no related error will be thrown.\n\t *\n\t * @param {string} name\n\t * @returns {Attr}\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/createAttribute\n\t * @see https://dom.spec.whatwg.org/#dom-document-createattribute\n\t */\n\tcreateAttribute: function (name) {\n\t\tif (!g.QName_exact.test(name)) {\n\t\t\tthrow new DOMException(DOMException.INVALID_CHARACTER_ERR, 'invalid character in name \"' + name + '\"');\n\t\t}\n\t\tif (this.type === 'html') {\n\t\t\tname = name.toLowerCase();\n\t\t}\n\t\treturn this._createAttribute(name);\n\t},\n\t_createAttribute: function (name) {\n\t\tvar node = new Attr(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.name = name;\n\t\tnode.nodeName = name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\t/**\n\t * Creates an EntityReference object.\n\t * The current implementation does not fill the `childNodes` with those of the corresponding\n\t * `Entity`\n\t *\n\t * @deprecated\n\t * In DOM Level 4.\n\t * @param {string} name\n\t * The name of the entity to reference. No namespace well-formedness checks are performed.\n\t * @returns {EntityReference}\n\t * @throws {DOMException}\n\t * With code `INVALID_CHARACTER_ERR` when `name` is not valid.\n\t * @throws {DOMException}\n\t * with code `NOT_SUPPORTED_ERR` when the document is of type `html`\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-392B75AE\n\t */\n\tcreateEntityReference: function (name) {\n\t\tif (!g.Name.test(name)) {\n\t\t\tthrow new DOMException(DOMException.INVALID_CHARACTER_ERR, 'not a valid xml name \"' + name + '\"');\n\t\t}\n\t\tif (this.type === 'html') {\n\t\t\tthrow new DOMException('document is an html document', DOMExceptionName.NotSupportedError);\n\t\t}\n\n\t\tvar node = new EntityReference(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.nodeName = name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\t/**\n\t * @param {string} namespaceURI\n\t * @param {string} qualifiedName\n\t * @returns {Element}\n\t */\n\tcreateElementNS: function (namespaceURI, qualifiedName) {\n\t\tvar validated = validateAndExtract(namespaceURI, qualifiedName);\n\t\tvar node = new Element(PDC);\n\t\tvar attrs = (node.attributes = new NamedNodeMap());\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = validated[0];\n\t\tnode.prefix = validated[1];\n\t\tnode.localName = validated[2];\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\t/**\n\t * @param {string} namespaceURI\n\t * @param {string} qualifiedName\n\t * @returns {Attr}\n\t */\n\tcreateAttributeNS: function (namespaceURI, qualifiedName) {\n\t\tvar validated = validateAndExtract(namespaceURI, qualifiedName);\n\t\tvar node = new Attr(PDC);\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.specified = true;\n\t\tnode.namespaceURI = validated[0];\n\t\tnode.prefix = validated[1];\n\t\tnode.localName = validated[2];\n\t\treturn node;\n\t},\n};\n_extends(Document, Node);\n\nfunction Element(symbol) {\n\tcheckSymbol(symbol);\n\n\tthis._nsMap = Object.create(null);\n}\nElement.prototype = {\n\tnodeType: ELEMENT_NODE,\n\t/**\n\t * The attributes of this element.\n\t *\n\t * @type {NamedNodeMap | null}\n\t */\n\tattributes: null,\n\tgetQualifiedName: function () {\n\t\treturn this.prefix ? this.prefix + ':' + this.localName : this.localName;\n\t},\n\t_isInHTMLDocumentAndNamespace: function () {\n\t\treturn this.ownerDocument.type === 'html' && this.namespaceURI === NAMESPACE.HTML;\n\t},\n\t/**\n\t * Implementaton of Level2 Core function hasAttributes.\n\t *\n\t * @returns {boolean}\n\t * True if attribute list is not empty.\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/#core-ID-NodeHasAttrs\n\t */\n\thasAttributes: function () {\n\t\treturn !!(this.attributes && this.attributes.length);\n\t},\n\thasAttribute: function (name) {\n\t\treturn !!this.getAttributeNode(name);\n\t},\n\t/**\n\t * Returns element’s first attribute whose qualified name is `name`, and `null`\n\t * if there is no such attribute.\n\t *\n\t * @param {string} name\n\t * @returns {string | null}\n\t */\n\tgetAttribute: function (name) {\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr ? attr.value : null;\n\t},\n\tgetAttributeNode: function (name) {\n\t\tif (this._isInHTMLDocumentAndNamespace()) {\n\t\t\tname = name.toLowerCase();\n\t\t}\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\t/**\n\t * Sets the value of element’s first attribute whose qualified name is qualifiedName to value.\n\t *\n\t * @param {string} name\n\t * @param {string} value\n\t */\n\tsetAttribute: function (name, value) {\n\t\tif (this._isInHTMLDocumentAndNamespace()) {\n\t\t\tname = name.toLowerCase();\n\t\t}\n\t\tvar attr = this.getAttributeNode(name);\n\t\tif (attr) {\n\t\t\tattr.value = attr.nodeValue = '' + value;\n\t\t} else {\n\t\t\tattr = this.ownerDocument._createAttribute(name);\n\t\t\tattr.value = attr.nodeValue = '' + value;\n\t\t\tthis.setAttributeNode(attr);\n\t\t}\n\t},\n\tremoveAttribute: function (name) {\n\t\tvar attr = this.getAttributeNode(name);\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\tsetAttributeNode: function (newAttr) {\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS: function (newAttr) {\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode: function (oldAttr) {\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS: function (namespaceURI, localName) {\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS: function (namespaceURI, localName) {\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName) != null;\n\t},\n\t/**\n\t * Returns element’s attribute whose namespace is `namespaceURI` and local name is\n\t * `localName`,\n\t * or `null` if there is no such attribute.\n\t *\n\t * @param {string} namespaceURI\n\t * @param {string} localName\n\t * @returns {string | null}\n\t */\n\tgetAttributeNS: function (namespaceURI, localName) {\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr ? attr.value : null;\n\t},\n\t/**\n\t * Sets the value of element’s attribute whose namespace is `namespaceURI` and local name is\n\t * `localName` to value.\n\t *\n\t * @param {string} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {string} value\n\t * @see https://dom.spec.whatwg.org/#dom-element-setattributens\n\t */\n\tsetAttributeNS: function (namespaceURI, qualifiedName, value) {\n\t\tvar validated = validateAndExtract(namespaceURI, qualifiedName);\n\t\tvar localName = validated[2];\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\tif (attr) {\n\t\t\tattr.value = attr.nodeValue = '' + value;\n\t\t} else {\n\t\t\tattr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\t\tattr.value = attr.nodeValue = '' + value;\n\t\t\tthis.setAttributeNode(attr);\n\t\t}\n\t},\n\tgetAttributeNodeNS: function (namespaceURI, localName) {\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\t/**\n\t * Returns a LiveNodeList of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classNames` is an empty string or only contains HTML white space\n\t * characters.\n\t *\n\t * Warning: This returns a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames\n\t * Is a string representing the class name(s) to match; multiple class names are separated by\n\t * (ASCII-)whitespace.\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByClassName\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function (classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames);\n\t\treturn new LiveNodeList(this, function (base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base, function (node) {\n\t\t\t\t\tif (node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class');\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames);\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t/**\n\t * Returns a LiveNodeList of elements with the given qualifiedName.\n\t * Searching for all descendants can be done by passing `*` as `qualifiedName`.\n\t *\n\t * All descendants of the specified element are searched, but not the element itself.\n\t * The returned list is live, which means it updates itself with the DOM tree automatically.\n\t * Therefore, there is no need to call `Element.getElementsByTagName()`\n\t * with the same element and arguments repeatedly if the DOM changes in between calls.\n\t *\n\t * When called on an HTML element in an HTML document,\n\t * `getElementsByTagName` lower-cases the argument before searching for it.\n\t * This is undesirable when trying to match camel-cased SVG elements (such as\n\t * `<linearGradient>`) in an HTML document.\n\t * Instead, use `Element.getElementsByTagNameNS()`,\n\t * which preserves the capitalization of the tag name.\n\t *\n\t * `Element.getElementsByTagName` is similar to `Document.getElementsByTagName()`,\n\t * except that it only searches for elements that are descendants of the specified element.\n\t *\n\t * @param {string} qualifiedName\n\t * @returns {LiveNodeList}\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByTagName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbytagname\n\t */\n\tgetElementsByTagName: function (qualifiedName) {\n\t\tvar isHTMLDocument = (this.nodeType === DOCUMENT_NODE ? this : this.ownerDocument).type === 'html';\n\t\tvar lowerQualifiedName = qualifiedName.toLowerCase();\n\t\treturn new LiveNodeList(this, function (base) {\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base, function (node) {\n\t\t\t\tif (node === base || node.nodeType !== ELEMENT_NODE) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (qualifiedName === '*') {\n\t\t\t\t\tls.push(node);\n\t\t\t\t} else {\n\t\t\t\t\tvar nodeQualifiedName = node.getQualifiedName();\n\t\t\t\t\tvar matchingQName = isHTMLDocument && node.namespaceURI === NAMESPACE.HTML ? lowerQualifiedName : qualifiedName;\n\t\t\t\t\tif (nodeQualifiedName === matchingQName) {\n\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS: function (namespaceURI, localName) {\n\t\treturn new LiveNodeList(this, function (base) {\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base, function (node) {\n\t\t\t\tif (\n\t\t\t\t\tnode !== base &&\n\t\t\t\t\tnode.nodeType === ELEMENT_NODE &&\n\t\t\t\t\t(namespaceURI === '*' || node.namespaceURI === namespaceURI) &&\n\t\t\t\t\t(localName === '*' || node.localName == localName)\n\t\t\t\t) {\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n};\nDocument.prototype.getElementsByClassName = Element.prototype.getElementsByClassName;\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n_extends(Element, Node);\nfunction Attr(symbol) {\n\tcheckSymbol(symbol);\n\n\tthis.namespaceURI = null;\n\tthis.prefix = null;\n\tthis.ownerElement = null;\n}\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr, Node);\n\nfunction CharacterData(symbol) {\n\tcheckSymbol(symbol);\n}\nCharacterData.prototype = {\n\tdata: '',\n\tsubstringData: function (offset, count) {\n\t\treturn this.data.substring(offset, offset + count);\n\t},\n\tappendData: function (text) {\n\t\ttext = this.data + text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function (offset, text) {\n\t\tthis.replaceData(offset, 0, text);\n\t},\n\tdeleteData: function (offset, count) {\n\t\tthis.replaceData(offset, count, '');\n\t},\n\treplaceData: function (offset, count, text) {\n\t\tvar start = this.data.substring(0, offset);\n\t\tvar end = this.data.substring(offset + count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n};\n_extends(CharacterData, Node);\nfunction Text(symbol) {\n\tcheckSymbol(symbol);\n}\nText.prototype = {\n\tnodeName: '#text',\n\tnodeType: TEXT_NODE,\n\tsplitText: function (offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif (this.parentNode) {\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t},\n};\n_extends(Text, CharacterData);\nfunction Comment(symbol) {\n\tcheckSymbol(symbol);\n}\nComment.prototype = {\n\tnodeName: '#comment',\n\tnodeType: COMMENT_NODE,\n};\n_extends(Comment, CharacterData);\n\nfunction CDATASection(symbol) {\n\tcheckSymbol(symbol);\n}\nCDATASection.prototype = {\n\tnodeName: '#cdata-section',\n\tnodeType: CDATA_SECTION_NODE,\n};\n_extends(CDATASection, Text);\n\n/**\n * @class DocumentType\n * @augments Node\n * @property {string} publicId\n * The external subset public identifier, stored verbatim (including surrounding quotes).\n * Declared `readonly` by the WHATWG DOM spec; xmldom does not enforce this constraint —\n * direct property writes succeed and the written value is serialized verbatim.\n * When serialized with `requireWellFormed: true`, the serializer validates the value against\n * the XML `PubidLiteral` production and throws `InvalidStateError` if it does not match.\n * @property {string} systemId\n * The external subset system identifier, stored verbatim (including surrounding quotes).\n * Declared `readonly` by the WHATWG DOM spec; xmldom does not enforce this constraint —\n * direct property writes succeed and the written value is serialized verbatim.\n * When serialized with `requireWellFormed: true`, the serializer validates the value against\n * the XML `SystemLiteral` production and throws `InvalidStateError` if it does not match.\n * @property {string} internalSubset\n * The internal subset string (the raw content between `[` and `]`), or an empty string.\n * Declared `readonly` by the WHATWG DOM spec; xmldom does not enforce this constraint —\n * direct property writes succeed and the written value is serialized verbatim.\n * When serialized with `requireWellFormed: true`, the serializer throws `InvalidStateError`\n * if the value contains `\"]>\"`.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DocumentType MDN\n * @see https://dom.spec.whatwg.org/#interface-documenttype WHATWG DOM\n * @prettierignore\n */\nfunction DocumentType(symbol) {\n\tcheckSymbol(symbol);\n}\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType, Node);\n\nfunction Notation(symbol) {\n\tcheckSymbol(symbol);\n}\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation, Node);\n\nfunction Entity(symbol) {\n\tcheckSymbol(symbol);\n}\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity, Node);\n\nfunction EntityReference(symbol) {\n\tcheckSymbol(symbol);\n}\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference, Node);\n\nfunction DocumentFragment(symbol) {\n\tcheckSymbol(symbol);\n}\nDocumentFragment.prototype.nodeName = '#document-fragment';\nDocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment, Node);\n\nfunction ProcessingInstruction(symbol) {\n\tcheckSymbol(symbol);\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction, CharacterData);\nfunction XMLSerializer() {}\n/**\n * Returns the result of serializing `node` to XML.\n *\n * When `options.requireWellFormed` is `true`, the serializer throws `InvalidStateError` for\n * content that would produce ill-formed XML (e.g. CDATASection data containing `\"]]>\"`, Text\n * data containing characters outside the XML Char production, or a Document with no\n * `documentElement`).\n *\n * When `options.splitCDATASections` is `false`, CDATASection data is emitted verbatim even\n * when it contains `\"]]>\"`. When `true` (the default), `\"]]>\"` sequences are split across\n * concatenated CDATA sections — this behavior is **deprecated** and will be removed in the\n * next breaking release. Callers should migrate to `{ requireWellFormed: true }`, which throws\n * `InvalidStateError` instead of transforming.\n *\n * __This implementation differs from the specification:__ - CDATASection serialization is not\n * specified by W3C DOM Parsing or WHATWG DOM Parsing (see\n * {@link https://github.com/w3c/DOM-Parsing/issues/38 w3c/DOM-Parsing#38}).\n * When `splitCDATASections` is `true` (the default), `\"]]>\"` sequences in CDATASection data\n * are split across concatenated CDATA sections — this mechanism is derived from DOM Level 3\n * Core and is **deprecated**. The split mechanics will be removed in the next breaking\n * release. Callers that rely on this behavior should migrate to `{ requireWellFormed: true }`.\n * - W3C DOM Parsing §3.2.1.1 requires well-formedness checks on Element `localName`s,\n * prefixes,\n * and attribute serialization (duplicate attributes, namespace declarations, attribute value\n * characters) when `requireWellFormed` is `true`. Element and attribute qualified names (which\n * cover the namespace prefix) are validated against the XML `QName` production; the remaining\n * §3.2.1.1 checks (duplicate attributes, namespace-declaration consistency) and creation-time\n * name validation are **not implemented** in this release — see the tracking issue filed\n * against the next breaking milestone.\n *\n * @param {Node} node\n * @param {Object | function} [options]\n * Options object, or a legacy nodeFilter function (backward compatible).\n * @param {boolean} [options.requireWellFormed=false]\n * When `true`, throws `InvalidStateError` for content that would produce ill-formed XML.\n * @param {boolean} [options.splitCDATASections=true]\n * When `true` (default), splits `\"]]>\"` sequences in CDATASection data across concatenated\n * CDATA sections. **Deprecated** — will be removed in the next breaking release.\n * @param {function} [options.nodeFilter]\n * A filter function applied to each node before serialization.\n * @returns {string}\n * @throws {DOMException}\n * With name `InvalidStateError` when `requireWellFormed` is `true` and any of the following\n * conditions hold:\n * - an Element's qualified name (including any namespace prefix) is not a valid XML QName\n * - an attribute's qualified name (including a synthesized `xmlns:` namespace declaration) is\n * not a valid XML QName\n * - CDATASection data contains `\"]]>\"`\n * - Text data contains characters outside the XML Char production\n * - a Comment node's data contains `--` anywhere or ends with `-`\n * - a ProcessingInstruction's target contains `:` or is an ASCII case-insensitive match for\n * `\"xml\"`, or its data contains `?>` or characters outside the XML Char production\n * - a DocumentType's `publicId` is non-empty and does not match the XML `PubidLiteral`\n * production (W3C DOM Parsing §3.2.1.3; XML 1.0 production [12])\n * - a DocumentType's `systemId` is non-empty and does not match the XML `SystemLiteral`\n * production (W3C DOM Parsing §3.2.1.3; XML 1.0 production [11])\n * - a DocumentType's `internalSubset` contains `\"]>\"`\n * - the Document has no `documentElement`\n * @see https://developer.mozilla.org/docs/Web/API/XMLSerializer/serializeToString\n * @see https://html.spec.whatwg.org/#dom-xmlserializer-serializetostring\n * @see https://github.com/w3c/DOM-Parsing/issues/84\n * @prettierignore\n */\nXMLSerializer.prototype.serializeToString = function (node, options) {\n\treturn nodeSerializeToString.call(node, options);\n};\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(options) {\n\t// Normalize the user-supplied options into a single internal opts object so that the\n\t// internal serializer always works with a consistent shape rather than positional flags.\n\tvar opts;\n\tif (typeof options === 'function') {\n\t\topts = { requireWellFormed: false, splitCDATASections: true, nodeFilter: options };\n\t} else if (options != null) {\n\t\topts = {\n\t\t\trequireWellFormed: !!options.requireWellFormed,\n\t\t\tsplitCDATASections: options.splitCDATASections !== false,\n\t\t\tnodeFilter: options.nodeFilter || null,\n\t\t};\n\t} else {\n\t\topts = { requireWellFormed: false, splitCDATASections: true, nodeFilter: null };\n\t}\n\tvar buf = [];\n\tvar refNode = (this.nodeType === DOCUMENT_NODE && this.documentElement) || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif (uri && prefix == null) {\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif (prefix == null) {\n\t\t\tvar visibleNamespaces = [\n\t\t\t\t{ namespace: uri, prefix: null },\n\t\t\t\t//{namespace:uri,prefix:''}\n\t\t\t];\n\t\t}\n\t}\n\tserializeToString(this, buf, visibleNamespaces, opts);\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif ((prefix === 'xml' && uri === NAMESPACE.XML) || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length;\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Literal whitespace other than space that appear in attribute values are serialized as\n * their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces).\n *\n * Well-formed constraint: No < in Attribute Values:\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n *\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n * @prettierignore\n */\nfunction addSerializedAttribute(buf, qualifiedName, value, requireWellFormed) {\n\tif (requireWellFormed && !g.QName_exact.test(qualifiedName)) {\n\t\tthrow new DOMException(\n\t\t\t'The attribute name \"' + qualifiedName + '\" is not a valid XML QName',\n\t\t\tDOMExceptionName.InvalidStateError\n\t\t);\n\t}\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"');\n}\n\nfunction serializeToString(node, buf, visibleNamespaces, opts) {\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\tvar nodeFilter = opts.nodeFilter;\n\tvar requireWellFormed = opts.requireWellFormed;\n\tvar splitCDATASections = opts.splitCDATASections;\n\tvar doc = node.nodeType === DOCUMENT_NODE ? node : node.ownerDocument;\n\tvar isHTML = doc.type === 'html';\n\n\twalkDOM(\n\t\tnode,\n\t\t{ ns: visibleNamespaces },\n\t\t{\n\t\t\tenter: function (n, ctx) {\n\t\t\t\tvar namespaces = ctx.ns;\n\n\t\t\t\tif (nodeFilter) {\n\t\t\t\t\tn = nodeFilter(n);\n\t\t\t\t\tif (n) {\n\t\t\t\t\t\tif (typeof n == 'string') {\n\t\t\t\t\t\t\tbuf.push(n);\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (n.nodeType) {\n\t\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\t\t\tvar attrs = n.attributes;\n\t\t\t\t\t\tvar len = attrs.length;\n\t\t\t\t\t\tvar nodeName = n.tagName;\n\n\t\t\t\t\t\tvar prefixedNodeName = nodeName;\n\t\t\t\t\t\tif (!isHTML && !n.prefix && n.namespaceURI) {\n\t\t\t\t\t\t\tvar defaultNS;\n\t\t\t\t\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\t\t\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\t\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\t\t\t\t\tdefaultNS = attrs.item(ai).value;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!defaultNS) {\n\t\t\t\t\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\t\t\t\t\tfor (var nsi = namespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\t\t\t\t\tvar nsEntry = namespaces[nsi];\n\t\t\t\t\t\t\t\t\tif (nsEntry.prefix === '' && nsEntry.namespace === n.namespaceURI) {\n\t\t\t\t\t\t\t\t\t\tdefaultNS = nsEntry.namespace;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (defaultNS !== n.namespaceURI) {\n\t\t\t\t\t\t\t\tfor (var nsi = namespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\t\t\t\t\tvar nsEntry = namespaces[nsi];\n\t\t\t\t\t\t\t\t\tif (nsEntry.namespace === n.namespaceURI) {\n\t\t\t\t\t\t\t\t\t\tif (nsEntry.prefix) {\n\t\t\t\t\t\t\t\t\t\t\tprefixedNodeName = nsEntry.prefix + ':' + nodeName;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (requireWellFormed && !g.QName_exact.test(prefixedNodeName)) {\n\t\t\t\t\t\t\tthrow new DOMException(\n\t\t\t\t\t\t\t\t'The element name \"' + prefixedNodeName + '\" is not a valid XML QName',\n\t\t\t\t\t\t\t\tDOMExceptionName.InvalidStateError\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbuf.push('<', prefixedNodeName);\n\n\t\t\t\t\t\t// Build a fresh namespace snapshot for this element's children.\n\t\t\t\t\t\t// The slice prevents sibling elements from inheriting each other's declarations.\n\t\t\t\t\t\tvar childNamespaces = namespaces.slice();\n\n\t\t\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\t\t\t// add namespaces for attributes\n\t\t\t\t\t\t\tvar attr = attrs.item(i);\n\t\t\t\t\t\t\tif (attr.prefix == 'xmlns') {\n\t\t\t\t\t\t\t\tchildNamespaces.push({\n\t\t\t\t\t\t\t\t\tprefix: attr.localName,\n\t\t\t\t\t\t\t\t\tnamespace: attr.value,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else if (attr.nodeName == 'xmlns') {\n\t\t\t\t\t\t\t\tchildNamespaces.push({ prefix: '', namespace: attr.value });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\t\t\tvar attr = attrs.item(i);\n\t\t\t\t\t\t\tif (needNamespaceDefine(attr, isHTML, childNamespaces)) {\n\t\t\t\t\t\t\t\tvar attrPrefix = attr.prefix || '';\n\t\t\t\t\t\t\t\tvar uri = attr.namespaceURI;\n\t\t\t\t\t\t\t\taddSerializedAttribute(buf, attrPrefix ? 'xmlns:' + attrPrefix : 'xmlns', uri, requireWellFormed);\n\t\t\t\t\t\t\t\tchildNamespaces.push({ prefix: attrPrefix, namespace: uri });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Apply nodeFilter and serialize the attribute.\n\t\t\t\t\t\t\tvar filteredAttr = nodeFilter ? nodeFilter(attr) : attr;\n\t\t\t\t\t\t\tif (filteredAttr) {\n\t\t\t\t\t\t\t\tif (typeof filteredAttr === 'string') {\n\t\t\t\t\t\t\t\t\tbuf.push(filteredAttr);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\taddSerializedAttribute(buf, filteredAttr.name, filteredAttr.value, requireWellFormed);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// add namespace for current node\n\t\t\t\t\t\tif (nodeName === prefixedNodeName && needNamespaceDefine(n, isHTML, childNamespaces)) {\n\t\t\t\t\t\t\tvar nodePrefix = n.prefix || '';\n\t\t\t\t\t\t\tvar uri = n.namespaceURI;\n\t\t\t\t\t\t\taddSerializedAttribute(buf, nodePrefix ? 'xmlns:' + nodePrefix : 'xmlns', uri, requireWellFormed);\n\t\t\t\t\t\t\tchildNamespaces.push({ prefix: nodePrefix, namespace: uri });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// in XML elements can be closed when they have no children\n\t\t\t\t\t\tvar canCloseTag = !n.firstChild;\n\t\t\t\t\t\tif (canCloseTag && (isHTML || n.namespaceURI === NAMESPACE.HTML)) {\n\t\t\t\t\t\t\t// in HTML (doc or ns) only void elements can be closed right away\n\t\t\t\t\t\t\tcanCloseTag = isHTMLVoidElement(nodeName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (canCloseTag) {\n\t\t\t\t\t\t\tbuf.push('/>');\n\t\t\t\t\t\t\t// Self-closing: no children and no closing tag needed from exit.\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbuf.push('>');\n\n\t\t\t\t\t\t// HTML raw text elements: serialize children as raw data without further descent.\n\t\t\t\t\t\tif (isHTML && isHTMLRawTextElement(nodeName)) {\n\t\t\t\t\t\t\tvar child = n.firstChild;\n\t\t\t\t\t\t\twhile (child) {\n\t\t\t\t\t\t\t\tif (child.data) {\n\t\t\t\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tserializeToString(child, buf, childNamespaces.slice(), opts);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbuf.push('</', prefixedNodeName, '>');\n\t\t\t\t\t\t\t// Children handled manually above; prevent walkDOM from also traversing them.\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Return child context so walkDOM descends; exit will emit the closing tag.\n\t\t\t\t\t\treturn { ns: childNamespaces, tag: prefixedNodeName };\n\t\t\t\t\tcase DOCUMENT_NODE:\n\t\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\t\tif (requireWellFormed && n.nodeType === DOCUMENT_NODE && n.documentElement == null) {\n\t\t\t\t\t\t\tthrow new DOMException('The Document has no documentElement', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Pass namespaces through; each child element will slice independently.\n\t\t\t\t\t\treturn { ns: namespaces };\n\t\t\t\t\tcase ATTRIBUTE_NODE:\n\t\t\t\t\t\taddSerializedAttribute(buf, n.name, n.value, requireWellFormed);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase TEXT_NODE:\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t\t\t\t\t * except when used as markup delimiters, or within a comment, a processing instruction,\n\t\t\t\t\t\t * or a CDATA section.\n\t\t\t\t\t\t * If they are needed elsewhere, they must be escaped using either numeric character\n\t\t\t\t\t\t * references or the strings `&amp;` and `&lt;` respectively.\n\t\t\t\t\t\t * The right angle bracket (>) may be represented using the string \" &gt; \",\n\t\t\t\t\t\t * and must, for compatibility, be escaped using either `&gt;`,\n\t\t\t\t\t\t * or a character reference when it appears in the string `]]>` in content,\n\t\t\t\t\t\t * when that string is not marking the end of a CDATA section.\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * In the content of elements, character data is any string of characters which does not\n\t\t\t\t\t\t * contain the start-delimiter of any markup and does not include the CDATA-section-close\n\t\t\t\t\t\t * delimiter, `]]>`.\n\t\t\t\t\t\t *\n\t\t\t\t\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t\t\t\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (requireWellFormed && g.InvalidChar.test(n.data)) {\n\t\t\t\t\t\t\tthrow new DOMException(\n\t\t\t\t\t\t\t\t'The Text node data contains characters outside the XML Char production',\n\t\t\t\t\t\t\t\tDOMExceptionName.InvalidStateError\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.push(n.data.replace(/[<&>]/g, _xmlEncoder));\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase CDATA_SECTION_NODE:\n\t\t\t\t\t\tif (requireWellFormed && n.data.indexOf(']]>') !== -1) {\n\t\t\t\t\t\t\tthrow new DOMException('The CDATASection data contains \"]]>\"', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (splitCDATASections) {\n\t\t\t\t\t\t\tbuf.push(g.CDATA_START, n.data.replace(/]]>/g, ']]]]><![CDATA[>'), g.CDATA_END);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuf.push(g.CDATA_START, n.data, g.CDATA_END);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase COMMENT_NODE:\n\t\t\t\t\t\tif (requireWellFormed) {\n\t\t\t\t\t\t\tif (g.InvalidChar.test(n.data)) {\n\t\t\t\t\t\t\t\tthrow new DOMException(\n\t\t\t\t\t\t\t\t\t'The comment node data contains characters outside the XML Char production',\n\t\t\t\t\t\t\t\t\tDOMExceptionName.InvalidStateError\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (n.data.indexOf('--') !== -1 || n.data[n.data.length - 1] === '-') {\n\t\t\t\t\t\t\t\tthrow new DOMException(\n\t\t\t\t\t\t\t\t\t'The comment node data contains \"--\" or ends with \"-\"',\n\t\t\t\t\t\t\t\t\tDOMExceptionName.InvalidStateError\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.push(g.COMMENT_START, n.data, g.COMMENT_END);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase DOCUMENT_TYPE_NODE:\n\t\t\t\t\t\tvar pubid = n.publicId;\n\t\t\t\t\t\tvar sysid = n.systemId;\n\t\t\t\t\t\tif (requireWellFormed) {\n\t\t\t\t\t\t\tif (pubid && !g.PubidLiteral_match.test(pubid)) {\n\t\t\t\t\t\t\t\tthrow new DOMException('DocumentType publicId is not a valid PubidLiteral', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (sysid && sysid !== '.' && !g.SystemLiteral_match.test(sysid)) {\n\t\t\t\t\t\t\t\tthrow new DOMException('DocumentType systemId is not a valid SystemLiteral', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (n.internalSubset && n.internalSubset.indexOf(']>') !== -1) {\n\t\t\t\t\t\t\t\tthrow new DOMException('DocumentType internalSubset contains \"]>\"', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.push(g.DOCTYPE_DECL_START, ' ', n.name);\n\t\t\t\t\t\tif (pubid) {\n\t\t\t\t\t\t\tbuf.push(' ', g.PUBLIC, ' ', pubid);\n\t\t\t\t\t\t\tif (sysid && sysid !== '.') {\n\t\t\t\t\t\t\t\tbuf.push(' ', sysid);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sysid && sysid !== '.') {\n\t\t\t\t\t\t\tbuf.push(' ', g.SYSTEM, ' ', sysid);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n.internalSubset) {\n\t\t\t\t\t\t\tbuf.push(' [', n.internalSubset, ']');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.push('>');\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase PROCESSING_INSTRUCTION_NODE:\n\t\t\t\t\t\tif (requireWellFormed) {\n\t\t\t\t\t\t\tif (n.target.indexOf(':') !== -1 || n.target.toLowerCase() === 'xml') {\n\t\t\t\t\t\t\t\tthrow new DOMException('The ProcessingInstruction target is not well-formed', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (g.InvalidChar.test(n.data)) {\n\t\t\t\t\t\t\t\tthrow new DOMException(\n\t\t\t\t\t\t\t\t\t'The ProcessingInstruction data contains characters outside the XML Char production',\n\t\t\t\t\t\t\t\t\tDOMExceptionName.InvalidStateError\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (n.data.indexOf('?>') !== -1) {\n\t\t\t\t\t\t\t\tthrow new DOMException('The ProcessingInstruction data contains \"?>\"', DOMExceptionName.InvalidStateError);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbuf.push('<?', n.target, ' ', n.data, '?>');\n\t\t\t\t\t\treturn null;\n\t\t\t\t\tcase ENTITY_REFERENCE_NODE:\n\t\t\t\t\t\tbuf.push('&', n.nodeName, ';');\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t//case ENTITY_NODE:\n\t\t\t\t\t//case NOTATION_NODE:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuf.push('??', n.nodeName);\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\texit: function (n, childCtx) {\n\t\t\t\t// Emit the closing tag for elements that were opened (not self-closed, not raw text).\n\t\t\t\tif (childCtx && childCtx.tag) {\n\t\t\t\t\tbuf.push('</', childCtx.tag, '>');\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t);\n}\n/**\n * Imports a node from a different document into `doc`, creating a new copy.\n * Delegates to {@link walkDOM} for traversal. Each node in the subtree is shallow-cloned,\n * stamped with `doc` as its `ownerDocument`, and detached (`parentNode` set to `null`).\n * Children are imported recursively when `deep` is `true`; for {@link Attr} nodes `deep` is\n * always forced to `true`\n * because an attribute's value lives in a child text node.\n *\n * @param {Document} doc\n * The document that will own the imported node.\n * @param {Node} node\n * The node to import.\n * @param {boolean} deep\n * If `true`, descendants are imported recursively.\n * @returns {Node}\n * The newly imported node, now owned by `doc`.\n */\nfunction importNode(doc, node, deep) {\n\tvar destRoot;\n\twalkDOM(node, null, {\n\t\tenter: function (srcNode, destParent) {\n\t\t\t// Shallow-clone the node and stamp it into the target document.\n\t\t\tvar destNode = srcNode.cloneNode(false);\n\t\t\tdestNode.ownerDocument = doc;\n\t\t\tdestNode.parentNode = null;\n\t\t\t// capture as the root of the imported subtree or attach to parent.\n\t\t\tif (destParent === null) {\n\t\t\t\tdestRoot = destNode;\n\t\t\t} else {\n\t\t\t\tdestParent.appendChild(destNode);\n\t\t\t}\n\t\t\t// ATTRIBUTE_NODE must always be imported deeply: its value lives in a child text node.\n\t\t\tvar shouldDeep = srcNode.nodeType === ATTRIBUTE_NODE || deep;\n\t\t\treturn shouldDeep ? destNode : null;\n\t\t},\n\t});\n\treturn destRoot;\n}\n\n/**\n * Creates a copy of a node from an existing one.\n *\n * @param {Document} doc\n * The Document object representing the document that the new node will belong to.\n * @param {Node} node\n * The node to clone.\n * @param {boolean} deep\n * If true, the contents of the node are recursively copied.\n * If false, only the node itself (and its attributes, if it is an element) are copied.\n * @returns {Node}\n * Returns the newly created copy of the node.\n * @throws {DOMException}\n * May throw a DOMException if operations within setAttributeNode or appendChild (which are\n * potentially invoked in this function) do not meet their specific constraints.\n */\nfunction cloneNode(doc, node, deep) {\n\tvar destRoot;\n\twalkDOM(node, null, {\n\t\tenter: function (srcNode, destParent) {\n\t\t\t// 1. Create a blank node of the same type and copy all scalar own properties.\n\t\t\tvar destNode = new srcNode.constructor(PDC);\n\t\t\tfor (var n in srcNode) {\n\t\t\t\tif (hasOwn(srcNode, n)) {\n\t\t\t\t\tvar v = srcNode[n];\n\t\t\t\t\tif (typeof v != 'object') {\n\t\t\t\t\t\tif (v != destNode[n]) {\n\t\t\t\t\t\t\tdestNode[n] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (srcNode.childNodes) {\n\t\t\t\tdestNode.childNodes = new NodeList();\n\t\t\t}\n\t\t\tdestNode.ownerDocument = doc;\n\t\t\t// 2. Handle node-type-specific setup.\n\t\t\t//    Attributes are not DOM children, so they are cloned inline here\n\t\t\t//    rather than by walkDOM descent.\n\t\t\t//    ATTRIBUTE_NODE forces deep=true so its own children are walked.\n\t\t\tvar shouldDeep = deep;\n\t\t\tswitch (destNode.nodeType) {\n\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\t\tvar attrs = srcNode.attributes;\n\t\t\t\t\tvar attrs2 = (destNode.attributes = new NamedNodeMap());\n\t\t\t\t\tvar len = attrs.length;\n\t\t\t\t\tattrs2._ownerElement = destNode;\n\t\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\t\tdestNode.setAttributeNode(cloneNode(doc, attrs.item(i), true));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ATTRIBUTE_NODE:\n\t\t\t\t\tshouldDeep = true;\n\t\t\t}\n\t\t\t// 3. Attach to parent, or capture as the root of the cloned subtree.\n\t\t\tif (destParent !== null) {\n\t\t\t\tdestParent.appendChild(destNode);\n\t\t\t} else {\n\t\t\t\tdestRoot = destNode;\n\t\t\t}\n\t\t\t// 4. Return destNode as the context for children (causes walkDOM to descend),\n\t\t\t//    or null to skip children (shallow clone).\n\t\t\treturn shouldDeep ? destNode : null;\n\t\t},\n\t});\n\treturn destRoot;\n}\n\nfunction __set__(object, key, value) {\n\tobject[key] = value;\n}\n\n// Returns a new array of direct Element children.\n// Passed to LiveNodeList to implement ParentNode.children.\n// https://dom.spec.whatwg.org/#dom-parentnode-children\nfunction childrenRefresh(node) {\n\tvar ls = [];\n\tvar child = node.firstChild;\n\twhile (child) {\n\t\tif (child.nodeType === ELEMENT_NODE) {\n\t\t\tls.push(child);\n\t\t}\n\t\tchild = child.nextSibling;\n\t}\n\treturn ls;\n}\n\n//do dynamic\ntry {\n\tif (Object.defineProperty) {\n\t\tObject.defineProperty(LiveNodeList.prototype, 'length', {\n\t\t\tget: function () {\n\t\t\t\t_updateLiveList(this);\n\t\t\t\treturn this.$$length;\n\t\t\t},\n\t\t});\n\n\t\t/**\n\t\t * The text content of this node and its descendants.\n\t\t *\n\t\t * For {@link Element} and {@link DocumentFragment} nodes, returns the concatenation of the\n\t\t * `nodeValue` of every descendant text node, excluding processing instruction and comment\n\t\t * nodes. For all other node types, returns `nodeValue`.\n\t\t *\n\t\t * Setting `textContent` on an element or document fragment replaces all child nodes with a\n\t\t * single text node; on other nodes it sets `data`, `value`, and `nodeValue` directly.\n\t\t *\n\t\t * @type {string | null}\n\t\t * @see {@link https://dom.spec.whatwg.org/#dom-node-textcontent}\n\t\t */\n\t\tObject.defineProperty(Node.prototype, 'textContent', {\n\t\t\tget: function () {\n\t\t\t\tif (this.nodeType === ELEMENT_NODE || this.nodeType === DOCUMENT_FRAGMENT_NODE) {\n\t\t\t\t\tvar buf = [];\n\t\t\t\t\twalkDOM(this, null, {\n\t\t\t\t\t\tenter: function (n) {\n\t\t\t\t\t\t\tif (n.nodeType === ELEMENT_NODE || n.nodeType === DOCUMENT_FRAGMENT_NODE) {\n\t\t\t\t\t\t\t\treturn true; // enter children\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (n.nodeType === PROCESSING_INSTRUCTION_NODE || n.nodeType === COMMENT_NODE) {\n\t\t\t\t\t\t\t\treturn null; // excluded from text content\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbuf.push(n.nodeValue);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t\treturn buf.join('');\n\t\t\t\t}\n\t\t\t\treturn this.nodeValue;\n\t\t\t},\n\n\t\t\tset: function (data) {\n\t\t\t\tswitch (this.nodeType) {\n\t\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\t\twhile (this.firstChild) {\n\t\t\t\t\t\t\tthis.removeChild(this.firstChild);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data || String(data)) {\n\t\t\t\t\t\t\tthis.appendChild(this.ownerDocument.createTextNode(data));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.data = data;\n\t\t\t\t\t\tthis.value = data;\n\t\t\t\t\t\tthis.nodeValue = data;\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\tObject.defineProperty(CharacterData.prototype, 'data', {\n\t\t\tget: function () {\n\t\t\t\treturn this._data != null ? this._data : '';\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tthis._data = v;\n\t\t\t\tthis.length = typeof v === 'string' ? v.length : 0;\n\t\t\t},\n\t\t});\n\n\t\tObject.defineProperty(CharacterData.prototype, 'nodeValue', {\n\t\t\tget: function () {\n\t\t\t\treturn this.data;\n\t\t\t},\n\t\t\tset: function (v) {\n\t\t\t\tthis.data = v;\n\t\t\t},\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t});\n\n\t\tObject.defineProperty(Element.prototype, 'children', {\n\t\t\tget: function () {\n\t\t\t\treturn new LiveNodeList(this, childrenRefresh);\n\t\t\t},\n\t\t});\n\t\tObject.defineProperty(Document.prototype, 'children', {\n\t\t\tget: function () {\n\t\t\t\treturn new LiveNodeList(this, childrenRefresh);\n\t\t\t},\n\t\t});\n\t\tObject.defineProperty(DocumentFragment.prototype, 'children', {\n\t\t\tget: function () {\n\t\t\t\treturn new LiveNodeList(this, childrenRefresh);\n\t\t\t},\n\t\t});\n\n\t\t__set__ = function (object, key, value) {\n\t\t\t//console.log(value)\n\t\t\tobject['$$' + key] = value;\n\t\t};\n\t}\n} catch (e) {\n\t//ie8\n}\n\nexports._updateLiveList = _updateLiveList;\nexports.Attr = Attr;\nexports.CDATASection = CDATASection;\nexports.CharacterData = CharacterData;\nexports.Comment = Comment;\nexports.Document = Document;\nexports.DocumentFragment = DocumentFragment;\nexports.DocumentType = DocumentType;\nexports.DOMImplementation = DOMImplementation;\nexports.Element = Element;\nexports.Entity = Entity;\nexports.EntityReference = EntityReference;\nexports.LiveNodeList = LiveNodeList;\nexports.NamedNodeMap = NamedNodeMap;\nexports.Node = Node;\nexports.NodeList = NodeList;\nexports.Notation = Notation;\nexports.Text = Text;\nexports.ProcessingInstruction = ProcessingInstruction;\nexports.walkDOM = walkDOM;\nexports.XMLSerializer = XMLSerializer;\n","'use strict';\n\nvar freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML\n *      Wikipedia\n */\nexports.XML_ENTITIES = freeze({\n\tamp: '&',\n\tapos: \"'\",\n\tgt: '>',\n\tlt: '<',\n\tquot: '\"',\n});\n\n/**\n * A map of all entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see {@link XML_ENTITIES}\n * @see {@link DOMParser.parseFromString}\n * @see {@link DOMImplementation.prototype.createHTMLDocument}\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5)\n *      Spec\n * @see https://html.spec.whatwg.org/entities.json JSON\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML\n *      Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML\n *      Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n\tAacute: '\\u00C1',\n\taacute: '\\u00E1',\n\tAbreve: '\\u0102',\n\tabreve: '\\u0103',\n\tac: '\\u223E',\n\tacd: '\\u223F',\n\tacE: '\\u223E\\u0333',\n\tAcirc: '\\u00C2',\n\tacirc: '\\u00E2',\n\tacute: '\\u00B4',\n\tAcy: '\\u0410',\n\tacy: '\\u0430',\n\tAElig: '\\u00C6',\n\taelig: '\\u00E6',\n\taf: '\\u2061',\n\tAfr: '\\uD835\\uDD04',\n\tafr: '\\uD835\\uDD1E',\n\tAgrave: '\\u00C0',\n\tagrave: '\\u00E0',\n\talefsym: '\\u2135',\n\taleph: '\\u2135',\n\tAlpha: '\\u0391',\n\talpha: '\\u03B1',\n\tAmacr: '\\u0100',\n\tamacr: '\\u0101',\n\tamalg: '\\u2A3F',\n\tAMP: '\\u0026',\n\tamp: '\\u0026',\n\tAnd: '\\u2A53',\n\tand: '\\u2227',\n\tandand: '\\u2A55',\n\tandd: '\\u2A5C',\n\tandslope: '\\u2A58',\n\tandv: '\\u2A5A',\n\tang: '\\u2220',\n\tange: '\\u29A4',\n\tangle: '\\u2220',\n\tangmsd: '\\u2221',\n\tangmsdaa: '\\u29A8',\n\tangmsdab: '\\u29A9',\n\tangmsdac: '\\u29AA',\n\tangmsdad: '\\u29AB',\n\tangmsdae: '\\u29AC',\n\tangmsdaf: '\\u29AD',\n\tangmsdag: '\\u29AE',\n\tangmsdah: '\\u29AF',\n\tangrt: '\\u221F',\n\tangrtvb: '\\u22BE',\n\tangrtvbd: '\\u299D',\n\tangsph: '\\u2222',\n\tangst: '\\u00C5',\n\tangzarr: '\\u237C',\n\tAogon: '\\u0104',\n\taogon: '\\u0105',\n\tAopf: '\\uD835\\uDD38',\n\taopf: '\\uD835\\uDD52',\n\tap: '\\u2248',\n\tapacir: '\\u2A6F',\n\tapE: '\\u2A70',\n\tape: '\\u224A',\n\tapid: '\\u224B',\n\tapos: '\\u0027',\n\tApplyFunction: '\\u2061',\n\tapprox: '\\u2248',\n\tapproxeq: '\\u224A',\n\tAring: '\\u00C5',\n\taring: '\\u00E5',\n\tAscr: '\\uD835\\uDC9C',\n\tascr: '\\uD835\\uDCB6',\n\tAssign: '\\u2254',\n\tast: '\\u002A',\n\tasymp: '\\u2248',\n\tasympeq: '\\u224D',\n\tAtilde: '\\u00C3',\n\tatilde: '\\u00E3',\n\tAuml: '\\u00C4',\n\tauml: '\\u00E4',\n\tawconint: '\\u2233',\n\tawint: '\\u2A11',\n\tbackcong: '\\u224C',\n\tbackepsilon: '\\u03F6',\n\tbackprime: '\\u2035',\n\tbacksim: '\\u223D',\n\tbacksimeq: '\\u22CD',\n\tBackslash: '\\u2216',\n\tBarv: '\\u2AE7',\n\tbarvee: '\\u22BD',\n\tBarwed: '\\u2306',\n\tbarwed: '\\u2305',\n\tbarwedge: '\\u2305',\n\tbbrk: '\\u23B5',\n\tbbrktbrk: '\\u23B6',\n\tbcong: '\\u224C',\n\tBcy: '\\u0411',\n\tbcy: '\\u0431',\n\tbdquo: '\\u201E',\n\tbecaus: '\\u2235',\n\tBecause: '\\u2235',\n\tbecause: '\\u2235',\n\tbemptyv: '\\u29B0',\n\tbepsi: '\\u03F6',\n\tbernou: '\\u212C',\n\tBernoullis: '\\u212C',\n\tBeta: '\\u0392',\n\tbeta: '\\u03B2',\n\tbeth: '\\u2136',\n\tbetween: '\\u226C',\n\tBfr: '\\uD835\\uDD05',\n\tbfr: '\\uD835\\uDD1F',\n\tbigcap: '\\u22C2',\n\tbigcirc: '\\u25EF',\n\tbigcup: '\\u22C3',\n\tbigodot: '\\u2A00',\n\tbigoplus: '\\u2A01',\n\tbigotimes: '\\u2A02',\n\tbigsqcup: '\\u2A06',\n\tbigstar: '\\u2605',\n\tbigtriangledown: '\\u25BD',\n\tbigtriangleup: '\\u25B3',\n\tbiguplus: '\\u2A04',\n\tbigvee: '\\u22C1',\n\tbigwedge: '\\u22C0',\n\tbkarow: '\\u290D',\n\tblacklozenge: '\\u29EB',\n\tblacksquare: '\\u25AA',\n\tblacktriangle: '\\u25B4',\n\tblacktriangledown: '\\u25BE',\n\tblacktriangleleft: '\\u25C2',\n\tblacktriangleright: '\\u25B8',\n\tblank: '\\u2423',\n\tblk12: '\\u2592',\n\tblk14: '\\u2591',\n\tblk34: '\\u2593',\n\tblock: '\\u2588',\n\tbne: '\\u003D\\u20E5',\n\tbnequiv: '\\u2261\\u20E5',\n\tbNot: '\\u2AED',\n\tbnot: '\\u2310',\n\tBopf: '\\uD835\\uDD39',\n\tbopf: '\\uD835\\uDD53',\n\tbot: '\\u22A5',\n\tbottom: '\\u22A5',\n\tbowtie: '\\u22C8',\n\tboxbox: '\\u29C9',\n\tboxDL: '\\u2557',\n\tboxDl: '\\u2556',\n\tboxdL: '\\u2555',\n\tboxdl: '\\u2510',\n\tboxDR: '\\u2554',\n\tboxDr: '\\u2553',\n\tboxdR: '\\u2552',\n\tboxdr: '\\u250C',\n\tboxH: '\\u2550',\n\tboxh: '\\u2500',\n\tboxHD: '\\u2566',\n\tboxHd: '\\u2564',\n\tboxhD: '\\u2565',\n\tboxhd: '\\u252C',\n\tboxHU: '\\u2569',\n\tboxHu: '\\u2567',\n\tboxhU: '\\u2568',\n\tboxhu: '\\u2534',\n\tboxminus: '\\u229F',\n\tboxplus: '\\u229E',\n\tboxtimes: '\\u22A0',\n\tboxUL: '\\u255D',\n\tboxUl: '\\u255C',\n\tboxuL: '\\u255B',\n\tboxul: '\\u2518',\n\tboxUR: '\\u255A',\n\tboxUr: '\\u2559',\n\tboxuR: '\\u2558',\n\tboxur: '\\u2514',\n\tboxV: '\\u2551',\n\tboxv: '\\u2502',\n\tboxVH: '\\u256C',\n\tboxVh: '\\u256B',\n\tboxvH: '\\u256A',\n\tboxvh: '\\u253C',\n\tboxVL: '\\u2563',\n\tboxVl: '\\u2562',\n\tboxvL: '\\u2561',\n\tboxvl: '\\u2524',\n\tboxVR: '\\u2560',\n\tboxVr: '\\u255F',\n\tboxvR: '\\u255E',\n\tboxvr: '\\u251C',\n\tbprime: '\\u2035',\n\tBreve: '\\u02D8',\n\tbreve: '\\u02D8',\n\tbrvbar: '\\u00A6',\n\tBscr: '\\u212C',\n\tbscr: '\\uD835\\uDCB7',\n\tbsemi: '\\u204F',\n\tbsim: '\\u223D',\n\tbsime: '\\u22CD',\n\tbsol: '\\u005C',\n\tbsolb: '\\u29C5',\n\tbsolhsub: '\\u27C8',\n\tbull: '\\u2022',\n\tbullet: '\\u2022',\n\tbump: '\\u224E',\n\tbumpE: '\\u2AAE',\n\tbumpe: '\\u224F',\n\tBumpeq: '\\u224E',\n\tbumpeq: '\\u224F',\n\tCacute: '\\u0106',\n\tcacute: '\\u0107',\n\tCap: '\\u22D2',\n\tcap: '\\u2229',\n\tcapand: '\\u2A44',\n\tcapbrcup: '\\u2A49',\n\tcapcap: '\\u2A4B',\n\tcapcup: '\\u2A47',\n\tcapdot: '\\u2A40',\n\tCapitalDifferentialD: '\\u2145',\n\tcaps: '\\u2229\\uFE00',\n\tcaret: '\\u2041',\n\tcaron: '\\u02C7',\n\tCayleys: '\\u212D',\n\tccaps: '\\u2A4D',\n\tCcaron: '\\u010C',\n\tccaron: '\\u010D',\n\tCcedil: '\\u00C7',\n\tccedil: '\\u00E7',\n\tCcirc: '\\u0108',\n\tccirc: '\\u0109',\n\tCconint: '\\u2230',\n\tccups: '\\u2A4C',\n\tccupssm: '\\u2A50',\n\tCdot: '\\u010A',\n\tcdot: '\\u010B',\n\tcedil: '\\u00B8',\n\tCedilla: '\\u00B8',\n\tcemptyv: '\\u29B2',\n\tcent: '\\u00A2',\n\tCenterDot: '\\u00B7',\n\tcenterdot: '\\u00B7',\n\tCfr: '\\u212D',\n\tcfr: '\\uD835\\uDD20',\n\tCHcy: '\\u0427',\n\tchcy: '\\u0447',\n\tcheck: '\\u2713',\n\tcheckmark: '\\u2713',\n\tChi: '\\u03A7',\n\tchi: '\\u03C7',\n\tcir: '\\u25CB',\n\tcirc: '\\u02C6',\n\tcirceq: '\\u2257',\n\tcirclearrowleft: '\\u21BA',\n\tcirclearrowright: '\\u21BB',\n\tcircledast: '\\u229B',\n\tcircledcirc: '\\u229A',\n\tcircleddash: '\\u229D',\n\tCircleDot: '\\u2299',\n\tcircledR: '\\u00AE',\n\tcircledS: '\\u24C8',\n\tCircleMinus: '\\u2296',\n\tCirclePlus: '\\u2295',\n\tCircleTimes: '\\u2297',\n\tcirE: '\\u29C3',\n\tcire: '\\u2257',\n\tcirfnint: '\\u2A10',\n\tcirmid: '\\u2AEF',\n\tcirscir: '\\u29C2',\n\tClockwiseContourIntegral: '\\u2232',\n\tCloseCurlyDoubleQuote: '\\u201D',\n\tCloseCurlyQuote: '\\u2019',\n\tclubs: '\\u2663',\n\tclubsuit: '\\u2663',\n\tColon: '\\u2237',\n\tcolon: '\\u003A',\n\tColone: '\\u2A74',\n\tcolone: '\\u2254',\n\tcoloneq: '\\u2254',\n\tcomma: '\\u002C',\n\tcommat: '\\u0040',\n\tcomp: '\\u2201',\n\tcompfn: '\\u2218',\n\tcomplement: '\\u2201',\n\tcomplexes: '\\u2102',\n\tcong: '\\u2245',\n\tcongdot: '\\u2A6D',\n\tCongruent: '\\u2261',\n\tConint: '\\u222F',\n\tconint: '\\u222E',\n\tContourIntegral: '\\u222E',\n\tCopf: '\\u2102',\n\tcopf: '\\uD835\\uDD54',\n\tcoprod: '\\u2210',\n\tCoproduct: '\\u2210',\n\tCOPY: '\\u00A9',\n\tcopy: '\\u00A9',\n\tcopysr: '\\u2117',\n\tCounterClockwiseContourIntegral: '\\u2233',\n\tcrarr: '\\u21B5',\n\tCross: '\\u2A2F',\n\tcross: '\\u2717',\n\tCscr: '\\uD835\\uDC9E',\n\tcscr: '\\uD835\\uDCB8',\n\tcsub: '\\u2ACF',\n\tcsube: '\\u2AD1',\n\tcsup: '\\u2AD0',\n\tcsupe: '\\u2AD2',\n\tctdot: '\\u22EF',\n\tcudarrl: '\\u2938',\n\tcudarrr: '\\u2935',\n\tcuepr: '\\u22DE',\n\tcuesc: '\\u22DF',\n\tcularr: '\\u21B6',\n\tcularrp: '\\u293D',\n\tCup: '\\u22D3',\n\tcup: '\\u222A',\n\tcupbrcap: '\\u2A48',\n\tCupCap: '\\u224D',\n\tcupcap: '\\u2A46',\n\tcupcup: '\\u2A4A',\n\tcupdot: '\\u228D',\n\tcupor: '\\u2A45',\n\tcups: '\\u222A\\uFE00',\n\tcurarr: '\\u21B7',\n\tcurarrm: '\\u293C',\n\tcurlyeqprec: '\\u22DE',\n\tcurlyeqsucc: '\\u22DF',\n\tcurlyvee: '\\u22CE',\n\tcurlywedge: '\\u22CF',\n\tcurren: '\\u00A4',\n\tcurvearrowleft: '\\u21B6',\n\tcurvearrowright: '\\u21B7',\n\tcuvee: '\\u22CE',\n\tcuwed: '\\u22CF',\n\tcwconint: '\\u2232',\n\tcwint: '\\u2231',\n\tcylcty: '\\u232D',\n\tDagger: '\\u2021',\n\tdagger: '\\u2020',\n\tdaleth: '\\u2138',\n\tDarr: '\\u21A1',\n\tdArr: '\\u21D3',\n\tdarr: '\\u2193',\n\tdash: '\\u2010',\n\tDashv: '\\u2AE4',\n\tdashv: '\\u22A3',\n\tdbkarow: '\\u290F',\n\tdblac: '\\u02DD',\n\tDcaron: '\\u010E',\n\tdcaron: '\\u010F',\n\tDcy: '\\u0414',\n\tdcy: '\\u0434',\n\tDD: '\\u2145',\n\tdd: '\\u2146',\n\tddagger: '\\u2021',\n\tddarr: '\\u21CA',\n\tDDotrahd: '\\u2911',\n\tddotseq: '\\u2A77',\n\tdeg: '\\u00B0',\n\tDel: '\\u2207',\n\tDelta: '\\u0394',\n\tdelta: '\\u03B4',\n\tdemptyv: '\\u29B1',\n\tdfisht: '\\u297F',\n\tDfr: '\\uD835\\uDD07',\n\tdfr: '\\uD835\\uDD21',\n\tdHar: '\\u2965',\n\tdharl: '\\u21C3',\n\tdharr: '\\u21C2',\n\tDiacriticalAcute: '\\u00B4',\n\tDiacriticalDot: '\\u02D9',\n\tDiacriticalDoubleAcute: '\\u02DD',\n\tDiacriticalGrave: '\\u0060',\n\tDiacriticalTilde: '\\u02DC',\n\tdiam: '\\u22C4',\n\tDiamond: '\\u22C4',\n\tdiamond: '\\u22C4',\n\tdiamondsuit: '\\u2666',\n\tdiams: '\\u2666',\n\tdie: '\\u00A8',\n\tDifferentialD: '\\u2146',\n\tdigamma: '\\u03DD',\n\tdisin: '\\u22F2',\n\tdiv: '\\u00F7',\n\tdivide: '\\u00F7',\n\tdivideontimes: '\\u22C7',\n\tdivonx: '\\u22C7',\n\tDJcy: '\\u0402',\n\tdjcy: '\\u0452',\n\tdlcorn: '\\u231E',\n\tdlcrop: '\\u230D',\n\tdollar: '\\u0024',\n\tDopf: '\\uD835\\uDD3B',\n\tdopf: '\\uD835\\uDD55',\n\tDot: '\\u00A8',\n\tdot: '\\u02D9',\n\tDotDot: '\\u20DC',\n\tdoteq: '\\u2250',\n\tdoteqdot: '\\u2251',\n\tDotEqual: '\\u2250',\n\tdotminus: '\\u2238',\n\tdotplus: '\\u2214',\n\tdotsquare: '\\u22A1',\n\tdoublebarwedge: '\\u2306',\n\tDoubleContourIntegral: '\\u222F',\n\tDoubleDot: '\\u00A8',\n\tDoubleDownArrow: '\\u21D3',\n\tDoubleLeftArrow: '\\u21D0',\n\tDoubleLeftRightArrow: '\\u21D4',\n\tDoubleLeftTee: '\\u2AE4',\n\tDoubleLongLeftArrow: '\\u27F8',\n\tDoubleLongLeftRightArrow: '\\u27FA',\n\tDoubleLongRightArrow: '\\u27F9',\n\tDoubleRightArrow: '\\u21D2',\n\tDoubleRightTee: '\\u22A8',\n\tDoubleUpArrow: '\\u21D1',\n\tDoubleUpDownArrow: '\\u21D5',\n\tDoubleVerticalBar: '\\u2225',\n\tDownArrow: '\\u2193',\n\tDownarrow: '\\u21D3',\n\tdownarrow: '\\u2193',\n\tDownArrowBar: '\\u2913',\n\tDownArrowUpArrow: '\\u21F5',\n\tDownBreve: '\\u0311',\n\tdowndownarrows: '\\u21CA',\n\tdownharpoonleft: '\\u21C3',\n\tdownharpoonright: '\\u21C2',\n\tDownLeftRightVector: '\\u2950',\n\tDownLeftTeeVector: '\\u295E',\n\tDownLeftVector: '\\u21BD',\n\tDownLeftVectorBar: '\\u2956',\n\tDownRightTeeVector: '\\u295F',\n\tDownRightVector: '\\u21C1',\n\tDownRightVectorBar: '\\u2957',\n\tDownTee: '\\u22A4',\n\tDownTeeArrow: '\\u21A7',\n\tdrbkarow: '\\u2910',\n\tdrcorn: '\\u231F',\n\tdrcrop: '\\u230C',\n\tDscr: '\\uD835\\uDC9F',\n\tdscr: '\\uD835\\uDCB9',\n\tDScy: '\\u0405',\n\tdscy: '\\u0455',\n\tdsol: '\\u29F6',\n\tDstrok: '\\u0110',\n\tdstrok: '\\u0111',\n\tdtdot: '\\u22F1',\n\tdtri: '\\u25BF',\n\tdtrif: '\\u25BE',\n\tduarr: '\\u21F5',\n\tduhar: '\\u296F',\n\tdwangle: '\\u29A6',\n\tDZcy: '\\u040F',\n\tdzcy: '\\u045F',\n\tdzigrarr: '\\u27FF',\n\tEacute: '\\u00C9',\n\teacute: '\\u00E9',\n\teaster: '\\u2A6E',\n\tEcaron: '\\u011A',\n\tecaron: '\\u011B',\n\tecir: '\\u2256',\n\tEcirc: '\\u00CA',\n\tecirc: '\\u00EA',\n\tecolon: '\\u2255',\n\tEcy: '\\u042D',\n\tecy: '\\u044D',\n\teDDot: '\\u2A77',\n\tEdot: '\\u0116',\n\teDot: '\\u2251',\n\tedot: '\\u0117',\n\tee: '\\u2147',\n\tefDot: '\\u2252',\n\tEfr: '\\uD835\\uDD08',\n\tefr: '\\uD835\\uDD22',\n\teg: '\\u2A9A',\n\tEgrave: '\\u00C8',\n\tegrave: '\\u00E8',\n\tegs: '\\u2A96',\n\tegsdot: '\\u2A98',\n\tel: '\\u2A99',\n\tElement: '\\u2208',\n\telinters: '\\u23E7',\n\tell: '\\u2113',\n\tels: '\\u2A95',\n\telsdot: '\\u2A97',\n\tEmacr: '\\u0112',\n\temacr: '\\u0113',\n\tempty: '\\u2205',\n\temptyset: '\\u2205',\n\tEmptySmallSquare: '\\u25FB',\n\temptyv: '\\u2205',\n\tEmptyVerySmallSquare: '\\u25AB',\n\temsp: '\\u2003',\n\temsp13: '\\u2004',\n\temsp14: '\\u2005',\n\tENG: '\\u014A',\n\teng: '\\u014B',\n\tensp: '\\u2002',\n\tEogon: '\\u0118',\n\teogon: '\\u0119',\n\tEopf: '\\uD835\\uDD3C',\n\teopf: '\\uD835\\uDD56',\n\tepar: '\\u22D5',\n\teparsl: '\\u29E3',\n\teplus: '\\u2A71',\n\tepsi: '\\u03B5',\n\tEpsilon: '\\u0395',\n\tepsilon: '\\u03B5',\n\tepsiv: '\\u03F5',\n\teqcirc: '\\u2256',\n\teqcolon: '\\u2255',\n\teqsim: '\\u2242',\n\teqslantgtr: '\\u2A96',\n\teqslantless: '\\u2A95',\n\tEqual: '\\u2A75',\n\tequals: '\\u003D',\n\tEqualTilde: '\\u2242',\n\tequest: '\\u225F',\n\tEquilibrium: '\\u21CC',\n\tequiv: '\\u2261',\n\tequivDD: '\\u2A78',\n\teqvparsl: '\\u29E5',\n\terarr: '\\u2971',\n\terDot: '\\u2253',\n\tEscr: '\\u2130',\n\tescr: '\\u212F',\n\tesdot: '\\u2250',\n\tEsim: '\\u2A73',\n\tesim: '\\u2242',\n\tEta: '\\u0397',\n\teta: '\\u03B7',\n\tETH: '\\u00D0',\n\teth: '\\u00F0',\n\tEuml: '\\u00CB',\n\teuml: '\\u00EB',\n\teuro: '\\u20AC',\n\texcl: '\\u0021',\n\texist: '\\u2203',\n\tExists: '\\u2203',\n\texpectation: '\\u2130',\n\tExponentialE: '\\u2147',\n\texponentiale: '\\u2147',\n\tfallingdotseq: '\\u2252',\n\tFcy: '\\u0424',\n\tfcy: '\\u0444',\n\tfemale: '\\u2640',\n\tffilig: '\\uFB03',\n\tfflig: '\\uFB00',\n\tffllig: '\\uFB04',\n\tFfr: '\\uD835\\uDD09',\n\tffr: '\\uD835\\uDD23',\n\tfilig: '\\uFB01',\n\tFilledSmallSquare: '\\u25FC',\n\tFilledVerySmallSquare: '\\u25AA',\n\tfjlig: '\\u0066\\u006A',\n\tflat: '\\u266D',\n\tfllig: '\\uFB02',\n\tfltns: '\\u25B1',\n\tfnof: '\\u0192',\n\tFopf: '\\uD835\\uDD3D',\n\tfopf: '\\uD835\\uDD57',\n\tForAll: '\\u2200',\n\tforall: '\\u2200',\n\tfork: '\\u22D4',\n\tforkv: '\\u2AD9',\n\tFouriertrf: '\\u2131',\n\tfpartint: '\\u2A0D',\n\tfrac12: '\\u00BD',\n\tfrac13: '\\u2153',\n\tfrac14: '\\u00BC',\n\tfrac15: '\\u2155',\n\tfrac16: '\\u2159',\n\tfrac18: '\\u215B',\n\tfrac23: '\\u2154',\n\tfrac25: '\\u2156',\n\tfrac34: '\\u00BE',\n\tfrac35: '\\u2157',\n\tfrac38: '\\u215C',\n\tfrac45: '\\u2158',\n\tfrac56: '\\u215A',\n\tfrac58: '\\u215D',\n\tfrac78: '\\u215E',\n\tfrasl: '\\u2044',\n\tfrown: '\\u2322',\n\tFscr: '\\u2131',\n\tfscr: '\\uD835\\uDCBB',\n\tgacute: '\\u01F5',\n\tGamma: '\\u0393',\n\tgamma: '\\u03B3',\n\tGammad: '\\u03DC',\n\tgammad: '\\u03DD',\n\tgap: '\\u2A86',\n\tGbreve: '\\u011E',\n\tgbreve: '\\u011F',\n\tGcedil: '\\u0122',\n\tGcirc: '\\u011C',\n\tgcirc: '\\u011D',\n\tGcy: '\\u0413',\n\tgcy: '\\u0433',\n\tGdot: '\\u0120',\n\tgdot: '\\u0121',\n\tgE: '\\u2267',\n\tge: '\\u2265',\n\tgEl: '\\u2A8C',\n\tgel: '\\u22DB',\n\tgeq: '\\u2265',\n\tgeqq: '\\u2267',\n\tgeqslant: '\\u2A7E',\n\tges: '\\u2A7E',\n\tgescc: '\\u2AA9',\n\tgesdot: '\\u2A80',\n\tgesdoto: '\\u2A82',\n\tgesdotol: '\\u2A84',\n\tgesl: '\\u22DB\\uFE00',\n\tgesles: '\\u2A94',\n\tGfr: '\\uD835\\uDD0A',\n\tgfr: '\\uD835\\uDD24',\n\tGg: '\\u22D9',\n\tgg: '\\u226B',\n\tggg: '\\u22D9',\n\tgimel: '\\u2137',\n\tGJcy: '\\u0403',\n\tgjcy: '\\u0453',\n\tgl: '\\u2277',\n\tgla: '\\u2AA5',\n\tglE: '\\u2A92',\n\tglj: '\\u2AA4',\n\tgnap: '\\u2A8A',\n\tgnapprox: '\\u2A8A',\n\tgnE: '\\u2269',\n\tgne: '\\u2A88',\n\tgneq: '\\u2A88',\n\tgneqq: '\\u2269',\n\tgnsim: '\\u22E7',\n\tGopf: '\\uD835\\uDD3E',\n\tgopf: '\\uD835\\uDD58',\n\tgrave: '\\u0060',\n\tGreaterEqual: '\\u2265',\n\tGreaterEqualLess: '\\u22DB',\n\tGreaterFullEqual: '\\u2267',\n\tGreaterGreater: '\\u2AA2',\n\tGreaterLess: '\\u2277',\n\tGreaterSlantEqual: '\\u2A7E',\n\tGreaterTilde: '\\u2273',\n\tGscr: '\\uD835\\uDCA2',\n\tgscr: '\\u210A',\n\tgsim: '\\u2273',\n\tgsime: '\\u2A8E',\n\tgsiml: '\\u2A90',\n\tGt: '\\u226B',\n\tGT: '\\u003E',\n\tgt: '\\u003E',\n\tgtcc: '\\u2AA7',\n\tgtcir: '\\u2A7A',\n\tgtdot: '\\u22D7',\n\tgtlPar: '\\u2995',\n\tgtquest: '\\u2A7C',\n\tgtrapprox: '\\u2A86',\n\tgtrarr: '\\u2978',\n\tgtrdot: '\\u22D7',\n\tgtreqless: '\\u22DB',\n\tgtreqqless: '\\u2A8C',\n\tgtrless: '\\u2277',\n\tgtrsim: '\\u2273',\n\tgvertneqq: '\\u2269\\uFE00',\n\tgvnE: '\\u2269\\uFE00',\n\tHacek: '\\u02C7',\n\thairsp: '\\u200A',\n\thalf: '\\u00BD',\n\thamilt: '\\u210B',\n\tHARDcy: '\\u042A',\n\thardcy: '\\u044A',\n\thArr: '\\u21D4',\n\tharr: '\\u2194',\n\tharrcir: '\\u2948',\n\tharrw: '\\u21AD',\n\tHat: '\\u005E',\n\thbar: '\\u210F',\n\tHcirc: '\\u0124',\n\thcirc: '\\u0125',\n\thearts: '\\u2665',\n\theartsuit: '\\u2665',\n\thellip: '\\u2026',\n\thercon: '\\u22B9',\n\tHfr: '\\u210C',\n\thfr: '\\uD835\\uDD25',\n\tHilbertSpace: '\\u210B',\n\thksearow: '\\u2925',\n\thkswarow: '\\u2926',\n\thoarr: '\\u21FF',\n\thomtht: '\\u223B',\n\thookleftarrow: '\\u21A9',\n\thookrightarrow: '\\u21AA',\n\tHopf: '\\u210D',\n\thopf: '\\uD835\\uDD59',\n\thorbar: '\\u2015',\n\tHorizontalLine: '\\u2500',\n\tHscr: '\\u210B',\n\thscr: '\\uD835\\uDCBD',\n\thslash: '\\u210F',\n\tHstrok: '\\u0126',\n\thstrok: '\\u0127',\n\tHumpDownHump: '\\u224E',\n\tHumpEqual: '\\u224F',\n\thybull: '\\u2043',\n\thyphen: '\\u2010',\n\tIacute: '\\u00CD',\n\tiacute: '\\u00ED',\n\tic: '\\u2063',\n\tIcirc: '\\u00CE',\n\ticirc: '\\u00EE',\n\tIcy: '\\u0418',\n\ticy: '\\u0438',\n\tIdot: '\\u0130',\n\tIEcy: '\\u0415',\n\tiecy: '\\u0435',\n\tiexcl: '\\u00A1',\n\tiff: '\\u21D4',\n\tIfr: '\\u2111',\n\tifr: '\\uD835\\uDD26',\n\tIgrave: '\\u00CC',\n\tigrave: '\\u00EC',\n\tii: '\\u2148',\n\tiiiint: '\\u2A0C',\n\tiiint: '\\u222D',\n\tiinfin: '\\u29DC',\n\tiiota: '\\u2129',\n\tIJlig: '\\u0132',\n\tijlig: '\\u0133',\n\tIm: '\\u2111',\n\tImacr: '\\u012A',\n\timacr: '\\u012B',\n\timage: '\\u2111',\n\tImaginaryI: '\\u2148',\n\timagline: '\\u2110',\n\timagpart: '\\u2111',\n\timath: '\\u0131',\n\timof: '\\u22B7',\n\timped: '\\u01B5',\n\tImplies: '\\u21D2',\n\tin: '\\u2208',\n\tincare: '\\u2105',\n\tinfin: '\\u221E',\n\tinfintie: '\\u29DD',\n\tinodot: '\\u0131',\n\tInt: '\\u222C',\n\tint: '\\u222B',\n\tintcal: '\\u22BA',\n\tintegers: '\\u2124',\n\tIntegral: '\\u222B',\n\tintercal: '\\u22BA',\n\tIntersection: '\\u22C2',\n\tintlarhk: '\\u2A17',\n\tintprod: '\\u2A3C',\n\tInvisibleComma: '\\u2063',\n\tInvisibleTimes: '\\u2062',\n\tIOcy: '\\u0401',\n\tiocy: '\\u0451',\n\tIogon: '\\u012E',\n\tiogon: '\\u012F',\n\tIopf: '\\uD835\\uDD40',\n\tiopf: '\\uD835\\uDD5A',\n\tIota: '\\u0399',\n\tiota: '\\u03B9',\n\tiprod: '\\u2A3C',\n\tiquest: '\\u00BF',\n\tIscr: '\\u2110',\n\tiscr: '\\uD835\\uDCBE',\n\tisin: '\\u2208',\n\tisindot: '\\u22F5',\n\tisinE: '\\u22F9',\n\tisins: '\\u22F4',\n\tisinsv: '\\u22F3',\n\tisinv: '\\u2208',\n\tit: '\\u2062',\n\tItilde: '\\u0128',\n\titilde: '\\u0129',\n\tIukcy: '\\u0406',\n\tiukcy: '\\u0456',\n\tIuml: '\\u00CF',\n\tiuml: '\\u00EF',\n\tJcirc: '\\u0134',\n\tjcirc: '\\u0135',\n\tJcy: '\\u0419',\n\tjcy: '\\u0439',\n\tJfr: '\\uD835\\uDD0D',\n\tjfr: '\\uD835\\uDD27',\n\tjmath: '\\u0237',\n\tJopf: '\\uD835\\uDD41',\n\tjopf: '\\uD835\\uDD5B',\n\tJscr: '\\uD835\\uDCA5',\n\tjscr: '\\uD835\\uDCBF',\n\tJsercy: '\\u0408',\n\tjsercy: '\\u0458',\n\tJukcy: '\\u0404',\n\tjukcy: '\\u0454',\n\tKappa: '\\u039A',\n\tkappa: '\\u03BA',\n\tkappav: '\\u03F0',\n\tKcedil: '\\u0136',\n\tkcedil: '\\u0137',\n\tKcy: '\\u041A',\n\tkcy: '\\u043A',\n\tKfr: '\\uD835\\uDD0E',\n\tkfr: '\\uD835\\uDD28',\n\tkgreen: '\\u0138',\n\tKHcy: '\\u0425',\n\tkhcy: '\\u0445',\n\tKJcy: '\\u040C',\n\tkjcy: '\\u045C',\n\tKopf: '\\uD835\\uDD42',\n\tkopf: '\\uD835\\uDD5C',\n\tKscr: '\\uD835\\uDCA6',\n\tkscr: '\\uD835\\uDCC0',\n\tlAarr: '\\u21DA',\n\tLacute: '\\u0139',\n\tlacute: '\\u013A',\n\tlaemptyv: '\\u29B4',\n\tlagran: '\\u2112',\n\tLambda: '\\u039B',\n\tlambda: '\\u03BB',\n\tLang: '\\u27EA',\n\tlang: '\\u27E8',\n\tlangd: '\\u2991',\n\tlangle: '\\u27E8',\n\tlap: '\\u2A85',\n\tLaplacetrf: '\\u2112',\n\tlaquo: '\\u00AB',\n\tLarr: '\\u219E',\n\tlArr: '\\u21D0',\n\tlarr: '\\u2190',\n\tlarrb: '\\u21E4',\n\tlarrbfs: '\\u291F',\n\tlarrfs: '\\u291D',\n\tlarrhk: '\\u21A9',\n\tlarrlp: '\\u21AB',\n\tlarrpl: '\\u2939',\n\tlarrsim: '\\u2973',\n\tlarrtl: '\\u21A2',\n\tlat: '\\u2AAB',\n\tlAtail: '\\u291B',\n\tlatail: '\\u2919',\n\tlate: '\\u2AAD',\n\tlates: '\\u2AAD\\uFE00',\n\tlBarr: '\\u290E',\n\tlbarr: '\\u290C',\n\tlbbrk: '\\u2772',\n\tlbrace: '\\u007B',\n\tlbrack: '\\u005B',\n\tlbrke: '\\u298B',\n\tlbrksld: '\\u298F',\n\tlbrkslu: '\\u298D',\n\tLcaron: '\\u013D',\n\tlcaron: '\\u013E',\n\tLcedil: '\\u013B',\n\tlcedil: '\\u013C',\n\tlceil: '\\u2308',\n\tlcub: '\\u007B',\n\tLcy: '\\u041B',\n\tlcy: '\\u043B',\n\tldca: '\\u2936',\n\tldquo: '\\u201C',\n\tldquor: '\\u201E',\n\tldrdhar: '\\u2967',\n\tldrushar: '\\u294B',\n\tldsh: '\\u21B2',\n\tlE: '\\u2266',\n\tle: '\\u2264',\n\tLeftAngleBracket: '\\u27E8',\n\tLeftArrow: '\\u2190',\n\tLeftarrow: '\\u21D0',\n\tleftarrow: '\\u2190',\n\tLeftArrowBar: '\\u21E4',\n\tLeftArrowRightArrow: '\\u21C6',\n\tleftarrowtail: '\\u21A2',\n\tLeftCeiling: '\\u2308',\n\tLeftDoubleBracket: '\\u27E6',\n\tLeftDownTeeVector: '\\u2961',\n\tLeftDownVector: '\\u21C3',\n\tLeftDownVectorBar: '\\u2959',\n\tLeftFloor: '\\u230A',\n\tleftharpoondown: '\\u21BD',\n\tleftharpoonup: '\\u21BC',\n\tleftleftarrows: '\\u21C7',\n\tLeftRightArrow: '\\u2194',\n\tLeftrightarrow: '\\u21D4',\n\tleftrightarrow: '\\u2194',\n\tleftrightarrows: '\\u21C6',\n\tleftrightharpoons: '\\u21CB',\n\tleftrightsquigarrow: '\\u21AD',\n\tLeftRightVector: '\\u294E',\n\tLeftTee: '\\u22A3',\n\tLeftTeeArrow: '\\u21A4',\n\tLeftTeeVector: '\\u295A',\n\tleftthreetimes: '\\u22CB',\n\tLeftTriangle: '\\u22B2',\n\tLeftTriangleBar: '\\u29CF',\n\tLeftTriangleEqual: '\\u22B4',\n\tLeftUpDownVector: '\\u2951',\n\tLeftUpTeeVector: '\\u2960',\n\tLeftUpVector: '\\u21BF',\n\tLeftUpVectorBar: '\\u2958',\n\tLeftVector: '\\u21BC',\n\tLeftVectorBar: '\\u2952',\n\tlEg: '\\u2A8B',\n\tleg: '\\u22DA',\n\tleq: '\\u2264',\n\tleqq: '\\u2266',\n\tleqslant: '\\u2A7D',\n\tles: '\\u2A7D',\n\tlescc: '\\u2AA8',\n\tlesdot: '\\u2A7F',\n\tlesdoto: '\\u2A81',\n\tlesdotor: '\\u2A83',\n\tlesg: '\\u22DA\\uFE00',\n\tlesges: '\\u2A93',\n\tlessapprox: '\\u2A85',\n\tlessdot: '\\u22D6',\n\tlesseqgtr: '\\u22DA',\n\tlesseqqgtr: '\\u2A8B',\n\tLessEqualGreater: '\\u22DA',\n\tLessFullEqual: '\\u2266',\n\tLessGreater: '\\u2276',\n\tlessgtr: '\\u2276',\n\tLessLess: '\\u2AA1',\n\tlesssim: '\\u2272',\n\tLessSlantEqual: '\\u2A7D',\n\tLessTilde: '\\u2272',\n\tlfisht: '\\u297C',\n\tlfloor: '\\u230A',\n\tLfr: '\\uD835\\uDD0F',\n\tlfr: '\\uD835\\uDD29',\n\tlg: '\\u2276',\n\tlgE: '\\u2A91',\n\tlHar: '\\u2962',\n\tlhard: '\\u21BD',\n\tlharu: '\\u21BC',\n\tlharul: '\\u296A',\n\tlhblk: '\\u2584',\n\tLJcy: '\\u0409',\n\tljcy: '\\u0459',\n\tLl: '\\u22D8',\n\tll: '\\u226A',\n\tllarr: '\\u21C7',\n\tllcorner: '\\u231E',\n\tLleftarrow: '\\u21DA',\n\tllhard: '\\u296B',\n\tlltri: '\\u25FA',\n\tLmidot: '\\u013F',\n\tlmidot: '\\u0140',\n\tlmoust: '\\u23B0',\n\tlmoustache: '\\u23B0',\n\tlnap: '\\u2A89',\n\tlnapprox: '\\u2A89',\n\tlnE: '\\u2268',\n\tlne: '\\u2A87',\n\tlneq: '\\u2A87',\n\tlneqq: '\\u2268',\n\tlnsim: '\\u22E6',\n\tloang: '\\u27EC',\n\tloarr: '\\u21FD',\n\tlobrk: '\\u27E6',\n\tLongLeftArrow: '\\u27F5',\n\tLongleftarrow: '\\u27F8',\n\tlongleftarrow: '\\u27F5',\n\tLongLeftRightArrow: '\\u27F7',\n\tLongleftrightarrow: '\\u27FA',\n\tlongleftrightarrow: '\\u27F7',\n\tlongmapsto: '\\u27FC',\n\tLongRightArrow: '\\u27F6',\n\tLongrightarrow: '\\u27F9',\n\tlongrightarrow: '\\u27F6',\n\tlooparrowleft: '\\u21AB',\n\tlooparrowright: '\\u21AC',\n\tlopar: '\\u2985',\n\tLopf: '\\uD835\\uDD43',\n\tlopf: '\\uD835\\uDD5D',\n\tloplus: '\\u2A2D',\n\tlotimes: '\\u2A34',\n\tlowast: '\\u2217',\n\tlowbar: '\\u005F',\n\tLowerLeftArrow: '\\u2199',\n\tLowerRightArrow: '\\u2198',\n\tloz: '\\u25CA',\n\tlozenge: '\\u25CA',\n\tlozf: '\\u29EB',\n\tlpar: '\\u0028',\n\tlparlt: '\\u2993',\n\tlrarr: '\\u21C6',\n\tlrcorner: '\\u231F',\n\tlrhar: '\\u21CB',\n\tlrhard: '\\u296D',\n\tlrm: '\\u200E',\n\tlrtri: '\\u22BF',\n\tlsaquo: '\\u2039',\n\tLscr: '\\u2112',\n\tlscr: '\\uD835\\uDCC1',\n\tLsh: '\\u21B0',\n\tlsh: '\\u21B0',\n\tlsim: '\\u2272',\n\tlsime: '\\u2A8D',\n\tlsimg: '\\u2A8F',\n\tlsqb: '\\u005B',\n\tlsquo: '\\u2018',\n\tlsquor: '\\u201A',\n\tLstrok: '\\u0141',\n\tlstrok: '\\u0142',\n\tLt: '\\u226A',\n\tLT: '\\u003C',\n\tlt: '\\u003C',\n\tltcc: '\\u2AA6',\n\tltcir: '\\u2A79',\n\tltdot: '\\u22D6',\n\tlthree: '\\u22CB',\n\tltimes: '\\u22C9',\n\tltlarr: '\\u2976',\n\tltquest: '\\u2A7B',\n\tltri: '\\u25C3',\n\tltrie: '\\u22B4',\n\tltrif: '\\u25C2',\n\tltrPar: '\\u2996',\n\tlurdshar: '\\u294A',\n\tluruhar: '\\u2966',\n\tlvertneqq: '\\u2268\\uFE00',\n\tlvnE: '\\u2268\\uFE00',\n\tmacr: '\\u00AF',\n\tmale: '\\u2642',\n\tmalt: '\\u2720',\n\tmaltese: '\\u2720',\n\tMap: '\\u2905',\n\tmap: '\\u21A6',\n\tmapsto: '\\u21A6',\n\tmapstodown: '\\u21A7',\n\tmapstoleft: '\\u21A4',\n\tmapstoup: '\\u21A5',\n\tmarker: '\\u25AE',\n\tmcomma: '\\u2A29',\n\tMcy: '\\u041C',\n\tmcy: '\\u043C',\n\tmdash: '\\u2014',\n\tmDDot: '\\u223A',\n\tmeasuredangle: '\\u2221',\n\tMediumSpace: '\\u205F',\n\tMellintrf: '\\u2133',\n\tMfr: '\\uD835\\uDD10',\n\tmfr: '\\uD835\\uDD2A',\n\tmho: '\\u2127',\n\tmicro: '\\u00B5',\n\tmid: '\\u2223',\n\tmidast: '\\u002A',\n\tmidcir: '\\u2AF0',\n\tmiddot: '\\u00B7',\n\tminus: '\\u2212',\n\tminusb: '\\u229F',\n\tminusd: '\\u2238',\n\tminusdu: '\\u2A2A',\n\tMinusPlus: '\\u2213',\n\tmlcp: '\\u2ADB',\n\tmldr: '\\u2026',\n\tmnplus: '\\u2213',\n\tmodels: '\\u22A7',\n\tMopf: '\\uD835\\uDD44',\n\tmopf: '\\uD835\\uDD5E',\n\tmp: '\\u2213',\n\tMscr: '\\u2133',\n\tmscr: '\\uD835\\uDCC2',\n\tmstpos: '\\u223E',\n\tMu: '\\u039C',\n\tmu: '\\u03BC',\n\tmultimap: '\\u22B8',\n\tmumap: '\\u22B8',\n\tnabla: '\\u2207',\n\tNacute: '\\u0143',\n\tnacute: '\\u0144',\n\tnang: '\\u2220\\u20D2',\n\tnap: '\\u2249',\n\tnapE: '\\u2A70\\u0338',\n\tnapid: '\\u224B\\u0338',\n\tnapos: '\\u0149',\n\tnapprox: '\\u2249',\n\tnatur: '\\u266E',\n\tnatural: '\\u266E',\n\tnaturals: '\\u2115',\n\tnbsp: '\\u00A0',\n\tnbump: '\\u224E\\u0338',\n\tnbumpe: '\\u224F\\u0338',\n\tncap: '\\u2A43',\n\tNcaron: '\\u0147',\n\tncaron: '\\u0148',\n\tNcedil: '\\u0145',\n\tncedil: '\\u0146',\n\tncong: '\\u2247',\n\tncongdot: '\\u2A6D\\u0338',\n\tncup: '\\u2A42',\n\tNcy: '\\u041D',\n\tncy: '\\u043D',\n\tndash: '\\u2013',\n\tne: '\\u2260',\n\tnearhk: '\\u2924',\n\tneArr: '\\u21D7',\n\tnearr: '\\u2197',\n\tnearrow: '\\u2197',\n\tnedot: '\\u2250\\u0338',\n\tNegativeMediumSpace: '\\u200B',\n\tNegativeThickSpace: '\\u200B',\n\tNegativeThinSpace: '\\u200B',\n\tNegativeVeryThinSpace: '\\u200B',\n\tnequiv: '\\u2262',\n\tnesear: '\\u2928',\n\tnesim: '\\u2242\\u0338',\n\tNestedGreaterGreater: '\\u226B',\n\tNestedLessLess: '\\u226A',\n\tNewLine: '\\u000A',\n\tnexist: '\\u2204',\n\tnexists: '\\u2204',\n\tNfr: '\\uD835\\uDD11',\n\tnfr: '\\uD835\\uDD2B',\n\tngE: '\\u2267\\u0338',\n\tnge: '\\u2271',\n\tngeq: '\\u2271',\n\tngeqq: '\\u2267\\u0338',\n\tngeqslant: '\\u2A7E\\u0338',\n\tnges: '\\u2A7E\\u0338',\n\tnGg: '\\u22D9\\u0338',\n\tngsim: '\\u2275',\n\tnGt: '\\u226B\\u20D2',\n\tngt: '\\u226F',\n\tngtr: '\\u226F',\n\tnGtv: '\\u226B\\u0338',\n\tnhArr: '\\u21CE',\n\tnharr: '\\u21AE',\n\tnhpar: '\\u2AF2',\n\tni: '\\u220B',\n\tnis: '\\u22FC',\n\tnisd: '\\u22FA',\n\tniv: '\\u220B',\n\tNJcy: '\\u040A',\n\tnjcy: '\\u045A',\n\tnlArr: '\\u21CD',\n\tnlarr: '\\u219A',\n\tnldr: '\\u2025',\n\tnlE: '\\u2266\\u0338',\n\tnle: '\\u2270',\n\tnLeftarrow: '\\u21CD',\n\tnleftarrow: '\\u219A',\n\tnLeftrightarrow: '\\u21CE',\n\tnleftrightarrow: '\\u21AE',\n\tnleq: '\\u2270',\n\tnleqq: '\\u2266\\u0338',\n\tnleqslant: '\\u2A7D\\u0338',\n\tnles: '\\u2A7D\\u0338',\n\tnless: '\\u226E',\n\tnLl: '\\u22D8\\u0338',\n\tnlsim: '\\u2274',\n\tnLt: '\\u226A\\u20D2',\n\tnlt: '\\u226E',\n\tnltri: '\\u22EA',\n\tnltrie: '\\u22EC',\n\tnLtv: '\\u226A\\u0338',\n\tnmid: '\\u2224',\n\tNoBreak: '\\u2060',\n\tNonBreakingSpace: '\\u00A0',\n\tNopf: '\\u2115',\n\tnopf: '\\uD835\\uDD5F',\n\tNot: '\\u2AEC',\n\tnot: '\\u00AC',\n\tNotCongruent: '\\u2262',\n\tNotCupCap: '\\u226D',\n\tNotDoubleVerticalBar: '\\u2226',\n\tNotElement: '\\u2209',\n\tNotEqual: '\\u2260',\n\tNotEqualTilde: '\\u2242\\u0338',\n\tNotExists: '\\u2204',\n\tNotGreater: '\\u226F',\n\tNotGreaterEqual: '\\u2271',\n\tNotGreaterFullEqual: '\\u2267\\u0338',\n\tNotGreaterGreater: '\\u226B\\u0338',\n\tNotGreaterLess: '\\u2279',\n\tNotGreaterSlantEqual: '\\u2A7E\\u0338',\n\tNotGreaterTilde: '\\u2275',\n\tNotHumpDownHump: '\\u224E\\u0338',\n\tNotHumpEqual: '\\u224F\\u0338',\n\tnotin: '\\u2209',\n\tnotindot: '\\u22F5\\u0338',\n\tnotinE: '\\u22F9\\u0338',\n\tnotinva: '\\u2209',\n\tnotinvb: '\\u22F7',\n\tnotinvc: '\\u22F6',\n\tNotLeftTriangle: '\\u22EA',\n\tNotLeftTriangleBar: '\\u29CF\\u0338',\n\tNotLeftTriangleEqual: '\\u22EC',\n\tNotLess: '\\u226E',\n\tNotLessEqual: '\\u2270',\n\tNotLessGreater: '\\u2278',\n\tNotLessLess: '\\u226A\\u0338',\n\tNotLessSlantEqual: '\\u2A7D\\u0338',\n\tNotLessTilde: '\\u2274',\n\tNotNestedGreaterGreater: '\\u2AA2\\u0338',\n\tNotNestedLessLess: '\\u2AA1\\u0338',\n\tnotni: '\\u220C',\n\tnotniva: '\\u220C',\n\tnotnivb: '\\u22FE',\n\tnotnivc: '\\u22FD',\n\tNotPrecedes: '\\u2280',\n\tNotPrecedesEqual: '\\u2AAF\\u0338',\n\tNotPrecedesSlantEqual: '\\u22E0',\n\tNotReverseElement: '\\u220C',\n\tNotRightTriangle: '\\u22EB',\n\tNotRightTriangleBar: '\\u29D0\\u0338',\n\tNotRightTriangleEqual: '\\u22ED',\n\tNotSquareSubset: '\\u228F\\u0338',\n\tNotSquareSubsetEqual: '\\u22E2',\n\tNotSquareSuperset: '\\u2290\\u0338',\n\tNotSquareSupersetEqual: '\\u22E3',\n\tNotSubset: '\\u2282\\u20D2',\n\tNotSubsetEqual: '\\u2288',\n\tNotSucceeds: '\\u2281',\n\tNotSucceedsEqual: '\\u2AB0\\u0338',\n\tNotSucceedsSlantEqual: '\\u22E1',\n\tNotSucceedsTilde: '\\u227F\\u0338',\n\tNotSuperset: '\\u2283\\u20D2',\n\tNotSupersetEqual: '\\u2289',\n\tNotTilde: '\\u2241',\n\tNotTildeEqual: '\\u2244',\n\tNotTildeFullEqual: '\\u2247',\n\tNotTildeTilde: '\\u2249',\n\tNotVerticalBar: '\\u2224',\n\tnpar: '\\u2226',\n\tnparallel: '\\u2226',\n\tnparsl: '\\u2AFD\\u20E5',\n\tnpart: '\\u2202\\u0338',\n\tnpolint: '\\u2A14',\n\tnpr: '\\u2280',\n\tnprcue: '\\u22E0',\n\tnpre: '\\u2AAF\\u0338',\n\tnprec: '\\u2280',\n\tnpreceq: '\\u2AAF\\u0338',\n\tnrArr: '\\u21CF',\n\tnrarr: '\\u219B',\n\tnrarrc: '\\u2933\\u0338',\n\tnrarrw: '\\u219D\\u0338',\n\tnRightarrow: '\\u21CF',\n\tnrightarrow: '\\u219B',\n\tnrtri: '\\u22EB',\n\tnrtrie: '\\u22ED',\n\tnsc: '\\u2281',\n\tnsccue: '\\u22E1',\n\tnsce: '\\u2AB0\\u0338',\n\tNscr: '\\uD835\\uDCA9',\n\tnscr: '\\uD835\\uDCC3',\n\tnshortmid: '\\u2224',\n\tnshortparallel: '\\u2226',\n\tnsim: '\\u2241',\n\tnsime: '\\u2244',\n\tnsimeq: '\\u2244',\n\tnsmid: '\\u2224',\n\tnspar: '\\u2226',\n\tnsqsube: '\\u22E2',\n\tnsqsupe: '\\u22E3',\n\tnsub: '\\u2284',\n\tnsubE: '\\u2AC5\\u0338',\n\tnsube: '\\u2288',\n\tnsubset: '\\u2282\\u20D2',\n\tnsubseteq: '\\u2288',\n\tnsubseteqq: '\\u2AC5\\u0338',\n\tnsucc: '\\u2281',\n\tnsucceq: '\\u2AB0\\u0338',\n\tnsup: '\\u2285',\n\tnsupE: '\\u2AC6\\u0338',\n\tnsupe: '\\u2289',\n\tnsupset: '\\u2283\\u20D2',\n\tnsupseteq: '\\u2289',\n\tnsupseteqq: '\\u2AC6\\u0338',\n\tntgl: '\\u2279',\n\tNtilde: '\\u00D1',\n\tntilde: '\\u00F1',\n\tntlg: '\\u2278',\n\tntriangleleft: '\\u22EA',\n\tntrianglelefteq: '\\u22EC',\n\tntriangleright: '\\u22EB',\n\tntrianglerighteq: '\\u22ED',\n\tNu: '\\u039D',\n\tnu: '\\u03BD',\n\tnum: '\\u0023',\n\tnumero: '\\u2116',\n\tnumsp: '\\u2007',\n\tnvap: '\\u224D\\u20D2',\n\tnVDash: '\\u22AF',\n\tnVdash: '\\u22AE',\n\tnvDash: '\\u22AD',\n\tnvdash: '\\u22AC',\n\tnvge: '\\u2265\\u20D2',\n\tnvgt: '\\u003E\\u20D2',\n\tnvHarr: '\\u2904',\n\tnvinfin: '\\u29DE',\n\tnvlArr: '\\u2902',\n\tnvle: '\\u2264\\u20D2',\n\tnvlt: '\\u003C\\u20D2',\n\tnvltrie: '\\u22B4\\u20D2',\n\tnvrArr: '\\u2903',\n\tnvrtrie: '\\u22B5\\u20D2',\n\tnvsim: '\\u223C\\u20D2',\n\tnwarhk: '\\u2923',\n\tnwArr: '\\u21D6',\n\tnwarr: '\\u2196',\n\tnwarrow: '\\u2196',\n\tnwnear: '\\u2927',\n\tOacute: '\\u00D3',\n\toacute: '\\u00F3',\n\toast: '\\u229B',\n\tocir: '\\u229A',\n\tOcirc: '\\u00D4',\n\tocirc: '\\u00F4',\n\tOcy: '\\u041E',\n\tocy: '\\u043E',\n\todash: '\\u229D',\n\tOdblac: '\\u0150',\n\todblac: '\\u0151',\n\todiv: '\\u2A38',\n\todot: '\\u2299',\n\todsold: '\\u29BC',\n\tOElig: '\\u0152',\n\toelig: '\\u0153',\n\tofcir: '\\u29BF',\n\tOfr: '\\uD835\\uDD12',\n\tofr: '\\uD835\\uDD2C',\n\togon: '\\u02DB',\n\tOgrave: '\\u00D2',\n\tograve: '\\u00F2',\n\togt: '\\u29C1',\n\tohbar: '\\u29B5',\n\tohm: '\\u03A9',\n\toint: '\\u222E',\n\tolarr: '\\u21BA',\n\tolcir: '\\u29BE',\n\tolcross: '\\u29BB',\n\toline: '\\u203E',\n\tolt: '\\u29C0',\n\tOmacr: '\\u014C',\n\tomacr: '\\u014D',\n\tOmega: '\\u03A9',\n\tomega: '\\u03C9',\n\tOmicron: '\\u039F',\n\tomicron: '\\u03BF',\n\tomid: '\\u29B6',\n\tominus: '\\u2296',\n\tOopf: '\\uD835\\uDD46',\n\toopf: '\\uD835\\uDD60',\n\topar: '\\u29B7',\n\tOpenCurlyDoubleQuote: '\\u201C',\n\tOpenCurlyQuote: '\\u2018',\n\toperp: '\\u29B9',\n\toplus: '\\u2295',\n\tOr: '\\u2A54',\n\tor: '\\u2228',\n\torarr: '\\u21BB',\n\tord: '\\u2A5D',\n\torder: '\\u2134',\n\torderof: '\\u2134',\n\tordf: '\\u00AA',\n\tordm: '\\u00BA',\n\torigof: '\\u22B6',\n\toror: '\\u2A56',\n\torslope: '\\u2A57',\n\torv: '\\u2A5B',\n\toS: '\\u24C8',\n\tOscr: '\\uD835\\uDCAA',\n\toscr: '\\u2134',\n\tOslash: '\\u00D8',\n\toslash: '\\u00F8',\n\tosol: '\\u2298',\n\tOtilde: '\\u00D5',\n\totilde: '\\u00F5',\n\tOtimes: '\\u2A37',\n\totimes: '\\u2297',\n\totimesas: '\\u2A36',\n\tOuml: '\\u00D6',\n\touml: '\\u00F6',\n\tovbar: '\\u233D',\n\tOverBar: '\\u203E',\n\tOverBrace: '\\u23DE',\n\tOverBracket: '\\u23B4',\n\tOverParenthesis: '\\u23DC',\n\tpar: '\\u2225',\n\tpara: '\\u00B6',\n\tparallel: '\\u2225',\n\tparsim: '\\u2AF3',\n\tparsl: '\\u2AFD',\n\tpart: '\\u2202',\n\tPartialD: '\\u2202',\n\tPcy: '\\u041F',\n\tpcy: '\\u043F',\n\tpercnt: '\\u0025',\n\tperiod: '\\u002E',\n\tpermil: '\\u2030',\n\tperp: '\\u22A5',\n\tpertenk: '\\u2031',\n\tPfr: '\\uD835\\uDD13',\n\tpfr: '\\uD835\\uDD2D',\n\tPhi: '\\u03A6',\n\tphi: '\\u03C6',\n\tphiv: '\\u03D5',\n\tphmmat: '\\u2133',\n\tphone: '\\u260E',\n\tPi: '\\u03A0',\n\tpi: '\\u03C0',\n\tpitchfork: '\\u22D4',\n\tpiv: '\\u03D6',\n\tplanck: '\\u210F',\n\tplanckh: '\\u210E',\n\tplankv: '\\u210F',\n\tplus: '\\u002B',\n\tplusacir: '\\u2A23',\n\tplusb: '\\u229E',\n\tpluscir: '\\u2A22',\n\tplusdo: '\\u2214',\n\tplusdu: '\\u2A25',\n\tpluse: '\\u2A72',\n\tPlusMinus: '\\u00B1',\n\tplusmn: '\\u00B1',\n\tplussim: '\\u2A26',\n\tplustwo: '\\u2A27',\n\tpm: '\\u00B1',\n\tPoincareplane: '\\u210C',\n\tpointint: '\\u2A15',\n\tPopf: '\\u2119',\n\tpopf: '\\uD835\\uDD61',\n\tpound: '\\u00A3',\n\tPr: '\\u2ABB',\n\tpr: '\\u227A',\n\tprap: '\\u2AB7',\n\tprcue: '\\u227C',\n\tprE: '\\u2AB3',\n\tpre: '\\u2AAF',\n\tprec: '\\u227A',\n\tprecapprox: '\\u2AB7',\n\tpreccurlyeq: '\\u227C',\n\tPrecedes: '\\u227A',\n\tPrecedesEqual: '\\u2AAF',\n\tPrecedesSlantEqual: '\\u227C',\n\tPrecedesTilde: '\\u227E',\n\tpreceq: '\\u2AAF',\n\tprecnapprox: '\\u2AB9',\n\tprecneqq: '\\u2AB5',\n\tprecnsim: '\\u22E8',\n\tprecsim: '\\u227E',\n\tPrime: '\\u2033',\n\tprime: '\\u2032',\n\tprimes: '\\u2119',\n\tprnap: '\\u2AB9',\n\tprnE: '\\u2AB5',\n\tprnsim: '\\u22E8',\n\tprod: '\\u220F',\n\tProduct: '\\u220F',\n\tprofalar: '\\u232E',\n\tprofline: '\\u2312',\n\tprofsurf: '\\u2313',\n\tprop: '\\u221D',\n\tProportion: '\\u2237',\n\tProportional: '\\u221D',\n\tpropto: '\\u221D',\n\tprsim: '\\u227E',\n\tprurel: '\\u22B0',\n\tPscr: '\\uD835\\uDCAB',\n\tpscr: '\\uD835\\uDCC5',\n\tPsi: '\\u03A8',\n\tpsi: '\\u03C8',\n\tpuncsp: '\\u2008',\n\tQfr: '\\uD835\\uDD14',\n\tqfr: '\\uD835\\uDD2E',\n\tqint: '\\u2A0C',\n\tQopf: '\\u211A',\n\tqopf: '\\uD835\\uDD62',\n\tqprime: '\\u2057',\n\tQscr: '\\uD835\\uDCAC',\n\tqscr: '\\uD835\\uDCC6',\n\tquaternions: '\\u210D',\n\tquatint: '\\u2A16',\n\tquest: '\\u003F',\n\tquesteq: '\\u225F',\n\tQUOT: '\\u0022',\n\tquot: '\\u0022',\n\trAarr: '\\u21DB',\n\trace: '\\u223D\\u0331',\n\tRacute: '\\u0154',\n\tracute: '\\u0155',\n\tradic: '\\u221A',\n\traemptyv: '\\u29B3',\n\tRang: '\\u27EB',\n\trang: '\\u27E9',\n\trangd: '\\u2992',\n\trange: '\\u29A5',\n\trangle: '\\u27E9',\n\traquo: '\\u00BB',\n\tRarr: '\\u21A0',\n\trArr: '\\u21D2',\n\trarr: '\\u2192',\n\trarrap: '\\u2975',\n\trarrb: '\\u21E5',\n\trarrbfs: '\\u2920',\n\trarrc: '\\u2933',\n\trarrfs: '\\u291E',\n\trarrhk: '\\u21AA',\n\trarrlp: '\\u21AC',\n\trarrpl: '\\u2945',\n\trarrsim: '\\u2974',\n\tRarrtl: '\\u2916',\n\trarrtl: '\\u21A3',\n\trarrw: '\\u219D',\n\trAtail: '\\u291C',\n\tratail: '\\u291A',\n\tratio: '\\u2236',\n\trationals: '\\u211A',\n\tRBarr: '\\u2910',\n\trBarr: '\\u290F',\n\trbarr: '\\u290D',\n\trbbrk: '\\u2773',\n\trbrace: '\\u007D',\n\trbrack: '\\u005D',\n\trbrke: '\\u298C',\n\trbrksld: '\\u298E',\n\trbrkslu: '\\u2990',\n\tRcaron: '\\u0158',\n\trcaron: '\\u0159',\n\tRcedil: '\\u0156',\n\trcedil: '\\u0157',\n\trceil: '\\u2309',\n\trcub: '\\u007D',\n\tRcy: '\\u0420',\n\trcy: '\\u0440',\n\trdca: '\\u2937',\n\trdldhar: '\\u2969',\n\trdquo: '\\u201D',\n\trdquor: '\\u201D',\n\trdsh: '\\u21B3',\n\tRe: '\\u211C',\n\treal: '\\u211C',\n\trealine: '\\u211B',\n\trealpart: '\\u211C',\n\treals: '\\u211D',\n\trect: '\\u25AD',\n\tREG: '\\u00AE',\n\treg: '\\u00AE',\n\tReverseElement: '\\u220B',\n\tReverseEquilibrium: '\\u21CB',\n\tReverseUpEquilibrium: '\\u296F',\n\trfisht: '\\u297D',\n\trfloor: '\\u230B',\n\tRfr: '\\u211C',\n\trfr: '\\uD835\\uDD2F',\n\trHar: '\\u2964',\n\trhard: '\\u21C1',\n\trharu: '\\u21C0',\n\trharul: '\\u296C',\n\tRho: '\\u03A1',\n\trho: '\\u03C1',\n\trhov: '\\u03F1',\n\tRightAngleBracket: '\\u27E9',\n\tRightArrow: '\\u2192',\n\tRightarrow: '\\u21D2',\n\trightarrow: '\\u2192',\n\tRightArrowBar: '\\u21E5',\n\tRightArrowLeftArrow: '\\u21C4',\n\trightarrowtail: '\\u21A3',\n\tRightCeiling: '\\u2309',\n\tRightDoubleBracket: '\\u27E7',\n\tRightDownTeeVector: '\\u295D',\n\tRightDownVector: '\\u21C2',\n\tRightDownVectorBar: '\\u2955',\n\tRightFloor: '\\u230B',\n\trightharpoondown: '\\u21C1',\n\trightharpoonup: '\\u21C0',\n\trightleftarrows: '\\u21C4',\n\trightleftharpoons: '\\u21CC',\n\trightrightarrows: '\\u21C9',\n\trightsquigarrow: '\\u219D',\n\tRightTee: '\\u22A2',\n\tRightTeeArrow: '\\u21A6',\n\tRightTeeVector: '\\u295B',\n\trightthreetimes: '\\u22CC',\n\tRightTriangle: '\\u22B3',\n\tRightTriangleBar: '\\u29D0',\n\tRightTriangleEqual: '\\u22B5',\n\tRightUpDownVector: '\\u294F',\n\tRightUpTeeVector: '\\u295C',\n\tRightUpVector: '\\u21BE',\n\tRightUpVectorBar: '\\u2954',\n\tRightVector: '\\u21C0',\n\tRightVectorBar: '\\u2953',\n\tring: '\\u02DA',\n\trisingdotseq: '\\u2253',\n\trlarr: '\\u21C4',\n\trlhar: '\\u21CC',\n\trlm: '\\u200F',\n\trmoust: '\\u23B1',\n\trmoustache: '\\u23B1',\n\trnmid: '\\u2AEE',\n\troang: '\\u27ED',\n\troarr: '\\u21FE',\n\trobrk: '\\u27E7',\n\tropar: '\\u2986',\n\tRopf: '\\u211D',\n\tropf: '\\uD835\\uDD63',\n\troplus: '\\u2A2E',\n\trotimes: '\\u2A35',\n\tRoundImplies: '\\u2970',\n\trpar: '\\u0029',\n\trpargt: '\\u2994',\n\trppolint: '\\u2A12',\n\trrarr: '\\u21C9',\n\tRrightarrow: '\\u21DB',\n\trsaquo: '\\u203A',\n\tRscr: '\\u211B',\n\trscr: '\\uD835\\uDCC7',\n\tRsh: '\\u21B1',\n\trsh: '\\u21B1',\n\trsqb: '\\u005D',\n\trsquo: '\\u2019',\n\trsquor: '\\u2019',\n\trthree: '\\u22CC',\n\trtimes: '\\u22CA',\n\trtri: '\\u25B9',\n\trtrie: '\\u22B5',\n\trtrif: '\\u25B8',\n\trtriltri: '\\u29CE',\n\tRuleDelayed: '\\u29F4',\n\truluhar: '\\u2968',\n\trx: '\\u211E',\n\tSacute: '\\u015A',\n\tsacute: '\\u015B',\n\tsbquo: '\\u201A',\n\tSc: '\\u2ABC',\n\tsc: '\\u227B',\n\tscap: '\\u2AB8',\n\tScaron: '\\u0160',\n\tscaron: '\\u0161',\n\tsccue: '\\u227D',\n\tscE: '\\u2AB4',\n\tsce: '\\u2AB0',\n\tScedil: '\\u015E',\n\tscedil: '\\u015F',\n\tScirc: '\\u015C',\n\tscirc: '\\u015D',\n\tscnap: '\\u2ABA',\n\tscnE: '\\u2AB6',\n\tscnsim: '\\u22E9',\n\tscpolint: '\\u2A13',\n\tscsim: '\\u227F',\n\tScy: '\\u0421',\n\tscy: '\\u0441',\n\tsdot: '\\u22C5',\n\tsdotb: '\\u22A1',\n\tsdote: '\\u2A66',\n\tsearhk: '\\u2925',\n\tseArr: '\\u21D8',\n\tsearr: '\\u2198',\n\tsearrow: '\\u2198',\n\tsect: '\\u00A7',\n\tsemi: '\\u003B',\n\tseswar: '\\u2929',\n\tsetminus: '\\u2216',\n\tsetmn: '\\u2216',\n\tsext: '\\u2736',\n\tSfr: '\\uD835\\uDD16',\n\tsfr: '\\uD835\\uDD30',\n\tsfrown: '\\u2322',\n\tsharp: '\\u266F',\n\tSHCHcy: '\\u0429',\n\tshchcy: '\\u0449',\n\tSHcy: '\\u0428',\n\tshcy: '\\u0448',\n\tShortDownArrow: '\\u2193',\n\tShortLeftArrow: '\\u2190',\n\tshortmid: '\\u2223',\n\tshortparallel: '\\u2225',\n\tShortRightArrow: '\\u2192',\n\tShortUpArrow: '\\u2191',\n\tshy: '\\u00AD',\n\tSigma: '\\u03A3',\n\tsigma: '\\u03C3',\n\tsigmaf: '\\u03C2',\n\tsigmav: '\\u03C2',\n\tsim: '\\u223C',\n\tsimdot: '\\u2A6A',\n\tsime: '\\u2243',\n\tsimeq: '\\u2243',\n\tsimg: '\\u2A9E',\n\tsimgE: '\\u2AA0',\n\tsiml: '\\u2A9D',\n\tsimlE: '\\u2A9F',\n\tsimne: '\\u2246',\n\tsimplus: '\\u2A24',\n\tsimrarr: '\\u2972',\n\tslarr: '\\u2190',\n\tSmallCircle: '\\u2218',\n\tsmallsetminus: '\\u2216',\n\tsmashp: '\\u2A33',\n\tsmeparsl: '\\u29E4',\n\tsmid: '\\u2223',\n\tsmile: '\\u2323',\n\tsmt: '\\u2AAA',\n\tsmte: '\\u2AAC',\n\tsmtes: '\\u2AAC\\uFE00',\n\tSOFTcy: '\\u042C',\n\tsoftcy: '\\u044C',\n\tsol: '\\u002F',\n\tsolb: '\\u29C4',\n\tsolbar: '\\u233F',\n\tSopf: '\\uD835\\uDD4A',\n\tsopf: '\\uD835\\uDD64',\n\tspades: '\\u2660',\n\tspadesuit: '\\u2660',\n\tspar: '\\u2225',\n\tsqcap: '\\u2293',\n\tsqcaps: '\\u2293\\uFE00',\n\tsqcup: '\\u2294',\n\tsqcups: '\\u2294\\uFE00',\n\tSqrt: '\\u221A',\n\tsqsub: '\\u228F',\n\tsqsube: '\\u2291',\n\tsqsubset: '\\u228F',\n\tsqsubseteq: '\\u2291',\n\tsqsup: '\\u2290',\n\tsqsupe: '\\u2292',\n\tsqsupset: '\\u2290',\n\tsqsupseteq: '\\u2292',\n\tsqu: '\\u25A1',\n\tSquare: '\\u25A1',\n\tsquare: '\\u25A1',\n\tSquareIntersection: '\\u2293',\n\tSquareSubset: '\\u228F',\n\tSquareSubsetEqual: '\\u2291',\n\tSquareSuperset: '\\u2290',\n\tSquareSupersetEqual: '\\u2292',\n\tSquareUnion: '\\u2294',\n\tsquarf: '\\u25AA',\n\tsquf: '\\u25AA',\n\tsrarr: '\\u2192',\n\tSscr: '\\uD835\\uDCAE',\n\tsscr: '\\uD835\\uDCC8',\n\tssetmn: '\\u2216',\n\tssmile: '\\u2323',\n\tsstarf: '\\u22C6',\n\tStar: '\\u22C6',\n\tstar: '\\u2606',\n\tstarf: '\\u2605',\n\tstraightepsilon: '\\u03F5',\n\tstraightphi: '\\u03D5',\n\tstrns: '\\u00AF',\n\tSub: '\\u22D0',\n\tsub: '\\u2282',\n\tsubdot: '\\u2ABD',\n\tsubE: '\\u2AC5',\n\tsube: '\\u2286',\n\tsubedot: '\\u2AC3',\n\tsubmult: '\\u2AC1',\n\tsubnE: '\\u2ACB',\n\tsubne: '\\u228A',\n\tsubplus: '\\u2ABF',\n\tsubrarr: '\\u2979',\n\tSubset: '\\u22D0',\n\tsubset: '\\u2282',\n\tsubseteq: '\\u2286',\n\tsubseteqq: '\\u2AC5',\n\tSubsetEqual: '\\u2286',\n\tsubsetneq: '\\u228A',\n\tsubsetneqq: '\\u2ACB',\n\tsubsim: '\\u2AC7',\n\tsubsub: '\\u2AD5',\n\tsubsup: '\\u2AD3',\n\tsucc: '\\u227B',\n\tsuccapprox: '\\u2AB8',\n\tsucccurlyeq: '\\u227D',\n\tSucceeds: '\\u227B',\n\tSucceedsEqual: '\\u2AB0',\n\tSucceedsSlantEqual: '\\u227D',\n\tSucceedsTilde: '\\u227F',\n\tsucceq: '\\u2AB0',\n\tsuccnapprox: '\\u2ABA',\n\tsuccneqq: '\\u2AB6',\n\tsuccnsim: '\\u22E9',\n\tsuccsim: '\\u227F',\n\tSuchThat: '\\u220B',\n\tSum: '\\u2211',\n\tsum: '\\u2211',\n\tsung: '\\u266A',\n\tSup: '\\u22D1',\n\tsup: '\\u2283',\n\tsup1: '\\u00B9',\n\tsup2: '\\u00B2',\n\tsup3: '\\u00B3',\n\tsupdot: '\\u2ABE',\n\tsupdsub: '\\u2AD8',\n\tsupE: '\\u2AC6',\n\tsupe: '\\u2287',\n\tsupedot: '\\u2AC4',\n\tSuperset: '\\u2283',\n\tSupersetEqual: '\\u2287',\n\tsuphsol: '\\u27C9',\n\tsuphsub: '\\u2AD7',\n\tsuplarr: '\\u297B',\n\tsupmult: '\\u2AC2',\n\tsupnE: '\\u2ACC',\n\tsupne: '\\u228B',\n\tsupplus: '\\u2AC0',\n\tSupset: '\\u22D1',\n\tsupset: '\\u2283',\n\tsupseteq: '\\u2287',\n\tsupseteqq: '\\u2AC6',\n\tsupsetneq: '\\u228B',\n\tsupsetneqq: '\\u2ACC',\n\tsupsim: '\\u2AC8',\n\tsupsub: '\\u2AD4',\n\tsupsup: '\\u2AD6',\n\tswarhk: '\\u2926',\n\tswArr: '\\u21D9',\n\tswarr: '\\u2199',\n\tswarrow: '\\u2199',\n\tswnwar: '\\u292A',\n\tszlig: '\\u00DF',\n\tTab: '\\u0009',\n\ttarget: '\\u2316',\n\tTau: '\\u03A4',\n\ttau: '\\u03C4',\n\ttbrk: '\\u23B4',\n\tTcaron: '\\u0164',\n\ttcaron: '\\u0165',\n\tTcedil: '\\u0162',\n\ttcedil: '\\u0163',\n\tTcy: '\\u0422',\n\ttcy: '\\u0442',\n\ttdot: '\\u20DB',\n\ttelrec: '\\u2315',\n\tTfr: '\\uD835\\uDD17',\n\ttfr: '\\uD835\\uDD31',\n\tthere4: '\\u2234',\n\tTherefore: '\\u2234',\n\ttherefore: '\\u2234',\n\tTheta: '\\u0398',\n\ttheta: '\\u03B8',\n\tthetasym: '\\u03D1',\n\tthetav: '\\u03D1',\n\tthickapprox: '\\u2248',\n\tthicksim: '\\u223C',\n\tThickSpace: '\\u205F\\u200A',\n\tthinsp: '\\u2009',\n\tThinSpace: '\\u2009',\n\tthkap: '\\u2248',\n\tthksim: '\\u223C',\n\tTHORN: '\\u00DE',\n\tthorn: '\\u00FE',\n\tTilde: '\\u223C',\n\ttilde: '\\u02DC',\n\tTildeEqual: '\\u2243',\n\tTildeFullEqual: '\\u2245',\n\tTildeTilde: '\\u2248',\n\ttimes: '\\u00D7',\n\ttimesb: '\\u22A0',\n\ttimesbar: '\\u2A31',\n\ttimesd: '\\u2A30',\n\ttint: '\\u222D',\n\ttoea: '\\u2928',\n\ttop: '\\u22A4',\n\ttopbot: '\\u2336',\n\ttopcir: '\\u2AF1',\n\tTopf: '\\uD835\\uDD4B',\n\ttopf: '\\uD835\\uDD65',\n\ttopfork: '\\u2ADA',\n\ttosa: '\\u2929',\n\ttprime: '\\u2034',\n\tTRADE: '\\u2122',\n\ttrade: '\\u2122',\n\ttriangle: '\\u25B5',\n\ttriangledown: '\\u25BF',\n\ttriangleleft: '\\u25C3',\n\ttrianglelefteq: '\\u22B4',\n\ttriangleq: '\\u225C',\n\ttriangleright: '\\u25B9',\n\ttrianglerighteq: '\\u22B5',\n\ttridot: '\\u25EC',\n\ttrie: '\\u225C',\n\ttriminus: '\\u2A3A',\n\tTripleDot: '\\u20DB',\n\ttriplus: '\\u2A39',\n\ttrisb: '\\u29CD',\n\ttritime: '\\u2A3B',\n\ttrpezium: '\\u23E2',\n\tTscr: '\\uD835\\uDCAF',\n\ttscr: '\\uD835\\uDCC9',\n\tTScy: '\\u0426',\n\ttscy: '\\u0446',\n\tTSHcy: '\\u040B',\n\ttshcy: '\\u045B',\n\tTstrok: '\\u0166',\n\ttstrok: '\\u0167',\n\ttwixt: '\\u226C',\n\ttwoheadleftarrow: '\\u219E',\n\ttwoheadrightarrow: '\\u21A0',\n\tUacute: '\\u00DA',\n\tuacute: '\\u00FA',\n\tUarr: '\\u219F',\n\tuArr: '\\u21D1',\n\tuarr: '\\u2191',\n\tUarrocir: '\\u2949',\n\tUbrcy: '\\u040E',\n\tubrcy: '\\u045E',\n\tUbreve: '\\u016C',\n\tubreve: '\\u016D',\n\tUcirc: '\\u00DB',\n\tucirc: '\\u00FB',\n\tUcy: '\\u0423',\n\tucy: '\\u0443',\n\tudarr: '\\u21C5',\n\tUdblac: '\\u0170',\n\tudblac: '\\u0171',\n\tudhar: '\\u296E',\n\tufisht: '\\u297E',\n\tUfr: '\\uD835\\uDD18',\n\tufr: '\\uD835\\uDD32',\n\tUgrave: '\\u00D9',\n\tugrave: '\\u00F9',\n\tuHar: '\\u2963',\n\tuharl: '\\u21BF',\n\tuharr: '\\u21BE',\n\tuhblk: '\\u2580',\n\tulcorn: '\\u231C',\n\tulcorner: '\\u231C',\n\tulcrop: '\\u230F',\n\tultri: '\\u25F8',\n\tUmacr: '\\u016A',\n\tumacr: '\\u016B',\n\tuml: '\\u00A8',\n\tUnderBar: '\\u005F',\n\tUnderBrace: '\\u23DF',\n\tUnderBracket: '\\u23B5',\n\tUnderParenthesis: '\\u23DD',\n\tUnion: '\\u22C3',\n\tUnionPlus: '\\u228E',\n\tUogon: '\\u0172',\n\tuogon: '\\u0173',\n\tUopf: '\\uD835\\uDD4C',\n\tuopf: '\\uD835\\uDD66',\n\tUpArrow: '\\u2191',\n\tUparrow: '\\u21D1',\n\tuparrow: '\\u2191',\n\tUpArrowBar: '\\u2912',\n\tUpArrowDownArrow: '\\u21C5',\n\tUpDownArrow: '\\u2195',\n\tUpdownarrow: '\\u21D5',\n\tupdownarrow: '\\u2195',\n\tUpEquilibrium: '\\u296E',\n\tupharpoonleft: '\\u21BF',\n\tupharpoonright: '\\u21BE',\n\tuplus: '\\u228E',\n\tUpperLeftArrow: '\\u2196',\n\tUpperRightArrow: '\\u2197',\n\tUpsi: '\\u03D2',\n\tupsi: '\\u03C5',\n\tupsih: '\\u03D2',\n\tUpsilon: '\\u03A5',\n\tupsilon: '\\u03C5',\n\tUpTee: '\\u22A5',\n\tUpTeeArrow: '\\u21A5',\n\tupuparrows: '\\u21C8',\n\turcorn: '\\u231D',\n\turcorner: '\\u231D',\n\turcrop: '\\u230E',\n\tUring: '\\u016E',\n\turing: '\\u016F',\n\turtri: '\\u25F9',\n\tUscr: '\\uD835\\uDCB0',\n\tuscr: '\\uD835\\uDCCA',\n\tutdot: '\\u22F0',\n\tUtilde: '\\u0168',\n\tutilde: '\\u0169',\n\tutri: '\\u25B5',\n\tutrif: '\\u25B4',\n\tuuarr: '\\u21C8',\n\tUuml: '\\u00DC',\n\tuuml: '\\u00FC',\n\tuwangle: '\\u29A7',\n\tvangrt: '\\u299C',\n\tvarepsilon: '\\u03F5',\n\tvarkappa: '\\u03F0',\n\tvarnothing: '\\u2205',\n\tvarphi: '\\u03D5',\n\tvarpi: '\\u03D6',\n\tvarpropto: '\\u221D',\n\tvArr: '\\u21D5',\n\tvarr: '\\u2195',\n\tvarrho: '\\u03F1',\n\tvarsigma: '\\u03C2',\n\tvarsubsetneq: '\\u228A\\uFE00',\n\tvarsubsetneqq: '\\u2ACB\\uFE00',\n\tvarsupsetneq: '\\u228B\\uFE00',\n\tvarsupsetneqq: '\\u2ACC\\uFE00',\n\tvartheta: '\\u03D1',\n\tvartriangleleft: '\\u22B2',\n\tvartriangleright: '\\u22B3',\n\tVbar: '\\u2AEB',\n\tvBar: '\\u2AE8',\n\tvBarv: '\\u2AE9',\n\tVcy: '\\u0412',\n\tvcy: '\\u0432',\n\tVDash: '\\u22AB',\n\tVdash: '\\u22A9',\n\tvDash: '\\u22A8',\n\tvdash: '\\u22A2',\n\tVdashl: '\\u2AE6',\n\tVee: '\\u22C1',\n\tvee: '\\u2228',\n\tveebar: '\\u22BB',\n\tveeeq: '\\u225A',\n\tvellip: '\\u22EE',\n\tVerbar: '\\u2016',\n\tverbar: '\\u007C',\n\tVert: '\\u2016',\n\tvert: '\\u007C',\n\tVerticalBar: '\\u2223',\n\tVerticalLine: '\\u007C',\n\tVerticalSeparator: '\\u2758',\n\tVerticalTilde: '\\u2240',\n\tVeryThinSpace: '\\u200A',\n\tVfr: '\\uD835\\uDD19',\n\tvfr: '\\uD835\\uDD33',\n\tvltri: '\\u22B2',\n\tvnsub: '\\u2282\\u20D2',\n\tvnsup: '\\u2283\\u20D2',\n\tVopf: '\\uD835\\uDD4D',\n\tvopf: '\\uD835\\uDD67',\n\tvprop: '\\u221D',\n\tvrtri: '\\u22B3',\n\tVscr: '\\uD835\\uDCB1',\n\tvscr: '\\uD835\\uDCCB',\n\tvsubnE: '\\u2ACB\\uFE00',\n\tvsubne: '\\u228A\\uFE00',\n\tvsupnE: '\\u2ACC\\uFE00',\n\tvsupne: '\\u228B\\uFE00',\n\tVvdash: '\\u22AA',\n\tvzigzag: '\\u299A',\n\tWcirc: '\\u0174',\n\twcirc: '\\u0175',\n\twedbar: '\\u2A5F',\n\tWedge: '\\u22C0',\n\twedge: '\\u2227',\n\twedgeq: '\\u2259',\n\tweierp: '\\u2118',\n\tWfr: '\\uD835\\uDD1A',\n\twfr: '\\uD835\\uDD34',\n\tWopf: '\\uD835\\uDD4E',\n\twopf: '\\uD835\\uDD68',\n\twp: '\\u2118',\n\twr: '\\u2240',\n\twreath: '\\u2240',\n\tWscr: '\\uD835\\uDCB2',\n\twscr: '\\uD835\\uDCCC',\n\txcap: '\\u22C2',\n\txcirc: '\\u25EF',\n\txcup: '\\u22C3',\n\txdtri: '\\u25BD',\n\tXfr: '\\uD835\\uDD1B',\n\txfr: '\\uD835\\uDD35',\n\txhArr: '\\u27FA',\n\txharr: '\\u27F7',\n\tXi: '\\u039E',\n\txi: '\\u03BE',\n\txlArr: '\\u27F8',\n\txlarr: '\\u27F5',\n\txmap: '\\u27FC',\n\txnis: '\\u22FB',\n\txodot: '\\u2A00',\n\tXopf: '\\uD835\\uDD4F',\n\txopf: '\\uD835\\uDD69',\n\txoplus: '\\u2A01',\n\txotime: '\\u2A02',\n\txrArr: '\\u27F9',\n\txrarr: '\\u27F6',\n\tXscr: '\\uD835\\uDCB3',\n\txscr: '\\uD835\\uDCCD',\n\txsqcup: '\\u2A06',\n\txuplus: '\\u2A04',\n\txutri: '\\u25B3',\n\txvee: '\\u22C1',\n\txwedge: '\\u22C0',\n\tYacute: '\\u00DD',\n\tyacute: '\\u00FD',\n\tYAcy: '\\u042F',\n\tyacy: '\\u044F',\n\tYcirc: '\\u0176',\n\tycirc: '\\u0177',\n\tYcy: '\\u042B',\n\tycy: '\\u044B',\n\tyen: '\\u00A5',\n\tYfr: '\\uD835\\uDD1C',\n\tyfr: '\\uD835\\uDD36',\n\tYIcy: '\\u0407',\n\tyicy: '\\u0457',\n\tYopf: '\\uD835\\uDD50',\n\tyopf: '\\uD835\\uDD6A',\n\tYscr: '\\uD835\\uDCB4',\n\tyscr: '\\uD835\\uDCCE',\n\tYUcy: '\\u042E',\n\tyucy: '\\u044E',\n\tYuml: '\\u0178',\n\tyuml: '\\u00FF',\n\tZacute: '\\u0179',\n\tzacute: '\\u017A',\n\tZcaron: '\\u017D',\n\tzcaron: '\\u017E',\n\tZcy: '\\u0417',\n\tzcy: '\\u0437',\n\tZdot: '\\u017B',\n\tzdot: '\\u017C',\n\tzeetrf: '\\u2128',\n\tZeroWidthSpace: '\\u200B',\n\tZeta: '\\u0396',\n\tzeta: '\\u03B6',\n\tZfr: '\\u2128',\n\tzfr: '\\uD835\\uDD37',\n\tZHcy: '\\u0416',\n\tzhcy: '\\u0436',\n\tzigrarr: '\\u21DD',\n\tZopf: '\\u2124',\n\tzopf: '\\uD835\\uDD6B',\n\tZscr: '\\uD835\\uDCB5',\n\tzscr: '\\uD835\\uDCCF',\n\tzwj: '\\u200D',\n\tzwnj: '\\u200C',\n});\n\n/**\n * @deprecated\n * Use `HTML_ENTITIES` instead.\n * @see {@link HTML_ENTITIES}\n */\nexports.entityMap = exports.HTML_ENTITIES;\n","'use strict';\n\nvar conventions = require('./conventions');\nvar g = require('./grammar');\nvar errors = require('./errors');\n\nvar isHTMLEscapableRawTextElement = conventions.isHTMLEscapableRawTextElement;\nvar isHTMLMimeType = conventions.isHTMLMimeType;\nvar isHTMLRawTextElement = conventions.isHTMLRawTextElement;\nvar hasOwn = conventions.hasOwn;\nvar NAMESPACE = conventions.NAMESPACE;\nvar ParseError = errors.ParseError;\nvar DOMException = errors.DOMException;\n\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0; //tag name offerring\nvar S_ATTR = 1; //attr name offerring\nvar S_ATTR_SPACE = 2; //attr name end and space offer\nvar S_EQ = 3; //=space?\nvar S_ATTR_NOQUOT_VALUE = 4; //attr value(no quot value only)\nvar S_ATTR_END = 5; //attr value end and no space(quot end)\nvar S_TAG_SPACE = 6; //(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7; //closed el<el />\n\nfunction XMLReader() {}\n\nXMLReader.prototype = {\n\tparse: function (source, defaultNSMap, entityMap) {\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap, (defaultNSMap = Object.create(null)));\n\t\tparse(source, defaultNSMap, entityMap, domBuilder, this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t},\n};\n\n/**\n * Detecting everything that might be a reference,\n * including those without ending `;`, since those are allowed in HTML.\n * The entityReplacer takes care of verifying and transforming each occurrence,\n * and reports to the errorHandler on those that are not OK,\n * depending on the context.\n */\nvar ENTITY_REG = /&#?\\w+;?/g;\n\nfunction parse(source, defaultNSMapCopy, entityMap, domBuilder, errorHandler) {\n\tvar isHTML = isHTMLMimeType(domBuilder.mimeType);\n\tif (source.indexOf(g.UNICODE_REPLACEMENT_CHARACTER) >= 0) {\n\t\terrorHandler.warning('Unicode replacement character detected, source encoding issues?');\n\t}\n\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10),\n\t\t\t\tsurrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\n\tfunction entityReplacer(a) {\n\t\tvar complete = a[a.length - 1] === ';' ? a : a + ';';\n\t\tif (!isHTML && complete !== a) {\n\t\t\terrorHandler.error('EntityRef: expecting ;');\n\t\t\treturn a;\n\t\t}\n\t\tvar match = g.Reference.exec(complete);\n\t\tif (!match || match[0].length !== complete.length) {\n\t\t\terrorHandler.error('entity not matching Reference production: ' + a);\n\t\t\treturn a;\n\t\t}\n\t\tvar k = complete.slice(1, -1);\n\t\tif (hasOwn(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t} else if (k.charAt(0) === '#') {\n\t\t\treturn fixedFromCharCode(parseInt(k.substring(1).replace('x', '0x')));\n\t\t} else {\n\t\t\terrorHandler.error('entity not found:' + a);\n\t\t\treturn a;\n\t\t}\n\t}\n\n\tfunction appendText(end) {\n\t\t//has some bugs\n\t\tif (end > start) {\n\t\t\tvar xt = source.substring(start, end).replace(ENTITY_REG, entityReplacer);\n\t\t\tlocator && position(start);\n\t\t\tdomBuilder.characters(xt, 0, end - start);\n\t\t\tstart = end;\n\t\t}\n\t}\n\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /\\r\\n?|\\n|$/g;\n\tvar locator = domBuilder.locator;\n\n\tfunction position(p, m) {\n\t\twhile (p >= lineEnd && (m = linePattern.exec(source))) {\n\t\t\tlineStart = lineEnd;\n\t\t\tlineEnd = m.index + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t}\n\t\tlocator.columnNumber = p - lineStart + 1;\n\t}\n\n\tvar parseStack = [{ currentNSMap: defaultNSMapCopy }];\n\tvar unclosedTags = [];\n\tvar start = 0;\n\twhile (true) {\n\t\ttry {\n\t\t\tvar tagStart = source.indexOf('<', start);\n\t\t\tif (tagStart < 0) {\n\t\t\t\tif (!isHTML && unclosedTags.length > 0) {\n\t\t\t\t\treturn errorHandler.fatalError('unclosed xml tag(s): ' + unclosedTags.join(', '));\n\t\t\t\t}\n\t\t\t\tif (!source.substring(start).match(/^\\s*$/)) {\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t\t\t\t\tvar text = doc.createTextNode(source.substring(start));\n\t\t\t\t\tif (doc.documentElement) {\n\t\t\t\t\t\treturn errorHandler.error('Extra content at the end of the document');\n\t\t\t\t\t}\n\t\t\t\t\tdoc.appendChild(text);\n\t\t\t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (tagStart > start) {\n\t\t\t\tvar fromSource = source.substring(start, tagStart);\n\t\t\t\tif (!isHTML && unclosedTags.length === 0) {\n\t\t\t\t\tfromSource = fromSource.replace(new RegExp(g.S_OPT.source, 'g'), '');\n\t\t\t\t\tfromSource && errorHandler.error(\"Unexpected content outside root element: '\" + fromSource + \"'\");\n\t\t\t\t}\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch (source.charAt(tagStart + 1)) {\n\t\t\t\tcase '/':\n\t\t\t\t\tvar end = source.indexOf('>', tagStart + 2);\n\t\t\t\t\tvar tagNameRaw = source.substring(tagStart + 2, end > 0 ? end : undefined);\n\t\t\t\t\tif (!tagNameRaw) {\n\t\t\t\t\t\treturn errorHandler.fatalError('end tag name missing');\n\t\t\t\t\t}\n\t\t\t\t\tvar tagNameMatch = end > 0 && g.reg('^', g.QName_group, g.S_OPT, '$').exec(tagNameRaw);\n\t\t\t\t\tif (!tagNameMatch) {\n\t\t\t\t\t\treturn errorHandler.fatalError('end tag name contains invalid characters: \"' + tagNameRaw + '\"');\n\t\t\t\t\t}\n\t\t\t\t\tif (!domBuilder.currentElement && !domBuilder.doc.documentElement) {\n\t\t\t\t\t\t// not enough information to provide a helpful error message,\n\t\t\t\t\t\t// but parsing will throw since there is no root element\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar currentTagName =\n\t\t\t\t\t\tunclosedTags[unclosedTags.length - 1] ||\n\t\t\t\t\t\tdomBuilder.currentElement.tagName ||\n\t\t\t\t\t\tdomBuilder.doc.documentElement.tagName ||\n\t\t\t\t\t\t'';\n\t\t\t\t\tif (currentTagName !== tagNameMatch[1]) {\n\t\t\t\t\t\tvar tagNameLower = tagNameMatch[1].toLowerCase();\n\t\t\t\t\t\tif (!isHTML || currentTagName.toLowerCase() !== tagNameLower) {\n\t\t\t\t\t\t\treturn errorHandler.fatalError('Opening and ending tag mismatch: \"' + currentTagName + '\" != \"' + tagNameRaw + '\"');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar config = parseStack.pop();\n\t\t\t\t\tunclosedTags.pop();\n\t\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\t\tdomBuilder.endElement(config.uri, config.localName, currentTagName);\n\t\t\t\t\tif (localNSMap) {\n\t\t\t\t\t\tfor (var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (hasOwn(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tend++;\n\t\t\t\t\tbreak;\n\t\t\t\t// end element\n\t\t\t\tcase '?': // <?...?>\n\t\t\t\t\tlocator && position(tagStart);\n\t\t\t\t\tend = parseProcessingInstruction(source, tagStart, domBuilder, errorHandler);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '!': // <!doctype,<![CDATA,<!--\n\t\t\t\t\tlocator && position(tagStart);\n\t\t\t\t\tend = parseDoctypeCommentOrCData(source, tagStart, domBuilder, errorHandler, isHTML);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tlocator && position(tagStart);\n\t\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\t\tvar currentNSMap = parseStack[parseStack.length - 1].currentNSMap;\n\t\t\t\t\t//elStartEnd\n\t\t\t\t\tvar end = parseElementStartPart(source, tagStart, el, currentNSMap, entityReplacer, errorHandler, isHTML);\n\t\t\t\t\tvar len = el.length;\n\n\t\t\t\t\tif (!el.closed) {\n\t\t\t\t\t\tif (isHTML && conventions.isHTMLVoidElement(el.tagName)) {\n\t\t\t\t\t\t\tel.closed = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tunclosedTags.push(el.tagName);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (locator && len) {\n\t\t\t\t\t\tvar locator2 = copyLocator(locator, {});\n\t\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\t\ta.locator = copyLocator(locator, {});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdomBuilder.locator = locator2;\n\t\t\t\t\t\tif (appendElement(el, domBuilder, currentNSMap)) {\n\t\t\t\t\t\t\tparseStack.push(el);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (appendElement(el, domBuilder, currentNSMap)) {\n\t\t\t\t\t\t\tparseStack.push(el);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isHTML && !el.closed) {\n\t\t\t\t\t\tend = parseHtmlSpecialContent(source, end, el.tagName, entityReplacer, domBuilder);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tend++;\n\t\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t} else if (e instanceof DOMException) {\n\t\t\t\tthrow new ParseError(e.name + ': ' + e.message, domBuilder.locator, e);\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: ' + e);\n\t\t\tend = -1;\n\t\t}\n\t\tif (end > start) {\n\t\t\tstart = end;\n\t\t} else {\n\t\t\t//Possible sax fallback here, risk of positional error\n\t\t\tappendText(Math.max(tagStart, start) + 1);\n\t\t}\n\t}\n}\n\nfunction copyLocator(f, t) {\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @returns\n * end of the elementStartPart(end of elementEndPart for selfClosed el)\n * @see {@link #appendElement}\n */\nfunction parseElementStartPart(source, start, el, currentNSMap, entityReplacer, errorHandler, isHTML) {\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (hasOwn(el.attributeNames, qname)) {\n\t\t\treturn errorHandler.fatalError('Attribute ' + qname + ' redefined');\n\t\t}\n\t\tif (!isHTML && value.indexOf('<') >= 0) {\n\t\t\treturn errorHandler.fatalError(\"Unescaped '<' not allowed in attributes values\");\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(ENTITY_REG, entityReplacer),\n\t\t\tstartIndex\n\t\t);\n\t}\n\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG; //status\n\twhile (true) {\n\t\tvar c = source.charAt(p);\n\t\tswitch (c) {\n\t\t\tcase '=':\n\t\t\t\tif (s === S_ATTR) {\n\t\t\t\t\t//attrName\n\t\t\t\t\tattrName = source.slice(start, p);\n\t\t\t\t\ts = S_EQ;\n\t\t\t\t} else if (s === S_ATTR_SPACE) {\n\t\t\t\t\ts = S_EQ;\n\t\t\t\t} else {\n\t\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"'\":\n\t\t\tcase '\"':\n\t\t\t\tif (\n\t\t\t\t\ts === S_EQ ||\n\t\t\t\t\ts === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t) {\n\t\t\t\t\t//equal\n\t\t\t\t\tif (s === S_ATTR) {\n\t\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"');\n\t\t\t\t\t\tattrName = source.slice(start, p);\n\t\t\t\t\t}\n\t\t\t\t\tstart = p + 1;\n\t\t\t\t\tp = source.indexOf(c, start);\n\t\t\t\t\tif (p > 0) {\n\t\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\t\taddAttribute(attrName, value, start - 1);\n\t\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\t\tthrow new Error(\"attribute value no end '\" + c + \"' match\");\n\t\t\t\t\t}\n\t\t\t\t} else if (s == S_ATTR_NOQUOT_VALUE) {\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t\terrorHandler.warning('attribute \"' + attrName + '\" missed start quot(' + c + ')!!');\n\t\t\t\t\tstart = p + 1;\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t} else {\n\t\t\t\t\t//fatalError: no equal before\n\t\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '/':\n\t\t\t\tswitch (s) {\n\t\t\t\t\tcase S_TAG:\n\t\t\t\t\t\tel.setTagName(source.slice(start, p));\n\t\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\t\ts = S_TAG_CLOSE;\n\t\t\t\t\t\tel.closed = true;\n\t\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tcase S_ATTR:\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\t\tel.closed = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case S_EQ:\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(\"attribute invalid close char('/')\"); // No known test case\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '': //end document\n\t\t\t\terrorHandler.error('unexpected end of input');\n\t\t\t\tif (s == S_TAG) {\n\t\t\t\t\tel.setTagName(source.slice(start, p));\n\t\t\t\t}\n\t\t\t\treturn p;\n\t\t\tcase '>':\n\t\t\t\tswitch (s) {\n\t\t\t\t\tcase S_TAG:\n\t\t\t\t\t\tel.setTagName(source.slice(start, p));\n\t\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\t\tbreak; //normal\n\t\t\t\t\tcase S_ATTR_NOQUOT_VALUE: //Compatible state\n\t\t\t\t\tcase S_ATTR:\n\t\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\t\tif (value.slice(-1) === '/') {\n\t\t\t\t\t\t\tel.closed = true;\n\t\t\t\t\t\t\tvalue = value.slice(0, -1);\n\t\t\t\t\t\t}\n\t\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\t\tif (s === S_ATTR_SPACE) {\n\t\t\t\t\t\t\tvalue = attrName;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s == S_ATTR_NOQUOT_VALUE) {\n\t\t\t\t\t\t\terrorHandler.warning('attribute \"' + value + '\" missed quot(\")!');\n\t\t\t\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!isHTML) {\n\t\t\t\t\t\t\t\terrorHandler.warning('attribute \"' + value + '\" missed value!! \"' + value + '\" instead!!');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taddAttribute(value, value, start);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase S_EQ:\n\t\t\t\t\t\tif (!isHTML) {\n\t\t\t\t\t\t\treturn errorHandler.fatalError('AttValue: \\' or \" expected');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn p;\n\t\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\t\tcase '\\u0080':\n\t\t\t\tc = ' ';\n\t\t\tdefault:\n\t\t\t\tif (c <= ' ') {\n\t\t\t\t\t//space\n\t\t\t\t\tswitch (s) {\n\t\t\t\t\t\tcase S_TAG:\n\t\t\t\t\t\t\tel.setTagName(source.slice(start, p)); //tagName\n\t\t\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase S_ATTR:\n\t\t\t\t\t\t\tattrName = source.slice(start, p);\n\t\t\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\t\t\terrorHandler.warning('attribute \"' + value + '\" missed quot(\")!!');\n\t\t\t\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t\t\t//case S_EQ:\n\t\t\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t\t\t//\tvoid();break;\n\t\t\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t\t//ignore warning\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t//not space\n\t\t\t\t\t//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n\t\t\t\t\t//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\t\tswitch (s) {\n\t\t\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\t\t\tif (!isHTML) {\n\t\t\t\t\t\t\t\terrorHandler.warning('attribute \"' + attrName + '\" missed value!! \"' + attrName + '\" instead2!!');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\t\t\tstart = p;\n\t\t\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\t\t\terrorHandler.warning('attribute space is required\"' + attrName + '\"!!');\n\t\t\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\t\t\tstart = p;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase S_EQ:\n\t\t\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\t\t\tstart = p;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t} //end outer switch\n\t\tp++;\n\t}\n}\n\n/**\n * @returns\n * `true` if a new namespace has been defined.\n */\nfunction appendElement(el, domBuilder, currentNSMap) {\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\tvar i = el.length;\n\twhile (i--) {\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif (nsp > 0) {\n\t\t\tvar prefix = (a.prefix = qName.slice(0, nsp));\n\t\t\tvar localName = qName.slice(nsp + 1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName;\n\t\t} else {\n\t\t\tlocalName = qName;\n\t\t\tprefix = null;\n\t\t\tnsPrefix = qName === 'xmlns' && '';\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif (nsPrefix !== false) {\n\t\t\t//hack!!\n\t\t\tif (localNSMap == null) {\n\t\t\t\tlocalNSMap = Object.create(null);\n\t\t\t\t_copy(currentNSMap, (currentNSMap = Object.create(null)));\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS;\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value);\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile (i--) {\n\t\ta = el[i];\n\t\tif (a.prefix) {\n\t\t\t//no prefix attribute has no namespace\n\t\t\tif (a.prefix === 'xml') {\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}\n\t\t\tif (a.prefix !== 'xmlns') {\n\t\t\t\ta.uri = currentNSMap[a.prefix];\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif (nsp > 0) {\n\t\tprefix = el.prefix = tagName.slice(0, nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp + 1);\n\t} else {\n\t\tprefix = null; //important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = (el.uri = currentNSMap[prefix || '']);\n\tdomBuilder.startElement(ns, localName, tagName, el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif (el.closed) {\n\t\tdomBuilder.endElement(ns, localName, tagName);\n\t\tif (localNSMap) {\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (hasOwn(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\n\nfunction parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) {\n\t// https://html.spec.whatwg.org/#raw-text-elements\n\t// https://html.spec.whatwg.org/#escapable-raw-text-elements\n\t// https://html.spec.whatwg.org/#cdata-rcdata-restrictions:raw-text-elements\n\t// TODO: https://html.spec.whatwg.org/#cdata-rcdata-restrictions\n\tvar isEscapableRaw = isHTMLEscapableRawTextElement(tagName);\n\tif (isEscapableRaw || isHTMLRawTextElement(tagName)) {\n\t\tvar elEndStart = source.indexOf('</' + tagName + '>', elStartEnd);\n\t\tvar text = source.substring(elStartEnd + 1, elEndStart);\n\n\t\tif (isEscapableRaw) {\n\t\t\ttext = text.replace(ENTITY_REG, entityReplacer);\n\t\t}\n\t\tdomBuilder.characters(text, 0, text.length);\n\t\treturn elEndStart;\n\t}\n\treturn elStartEnd + 1;\n}\n\nfunction _copy(source, target) {\n\tfor (var n in source) {\n\t\tif (hasOwn(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\n/**\n * @typedef ParseUtils\n * @property {function(relativeIndex: number?): string | undefined} char\n * Provides look ahead access to a singe character relative to the current index.\n * @property {function(): number} getIndex\n * Provides read-only access to the current index.\n * @property {function(reg: RegExp): string | null} getMatch\n * Applies the provided regular expression enforcing that it starts at the current index and\n * returns the complete matching string,\n * and moves the current index by the length of the matching string.\n * @property {function(): string} getSource\n * Provides read-only access to the complete source.\n * @property {function(places: number?): void} skip\n * moves the current index by places (defaults to 1)\n * @property {function(): number} skipBlanks\n * Moves the current index by the amount of white space that directly follows the current index\n * and returns the amount of whitespace chars skipped (0..n),\n * or -1 if the end of the source was reached.\n * @property {function(): string} substringFromIndex\n * creates a substring from the current index to the end of `source`\n * @property {function(compareWith: string): boolean} substringStartsWith\n * Checks if `source` contains `compareWith`, starting from the current index.\n * @property {function(compareWith: string): boolean} substringStartsWithCaseInsensitive\n * Checks if `source` contains `compareWith`, starting from the current index,\n * comparing the upper case of both sides.\n * @see {@link parseUtils}\n */\n\n/**\n * A temporary scope for parsing and look ahead operations in `source`,\n * starting from index `start`.\n *\n * Some operations move the current index by a number of positions,\n * after which `getIndex` returns the new index.\n *\n * @param {string} source\n * @param {number} start\n * @returns {ParseUtils}\n */\nfunction parseUtils(source, start) {\n\tvar index = start;\n\n\tfunction char(n) {\n\t\tn = n || 0;\n\t\treturn source.charAt(index + n);\n\t}\n\n\tfunction skip(n) {\n\t\tn = n || 1;\n\t\tindex += n;\n\t}\n\n\tfunction skipBlanks() {\n\t\tvar blanks = 0;\n\t\twhile (index < source.length) {\n\t\t\tvar c = char();\n\t\t\tif (c !== ' ' && c !== '\\n' && c !== '\\t' && c !== '\\r') {\n\t\t\t\treturn blanks;\n\t\t\t}\n\t\t\tblanks++;\n\t\t\tskip();\n\t\t}\n\t\treturn -1;\n\t}\n\tfunction substringFromIndex() {\n\t\treturn source.substring(index);\n\t}\n\tfunction substringStartsWith(text) {\n\t\treturn source.substring(index, index + text.length) === text;\n\t}\n\tfunction substringStartsWithCaseInsensitive(text) {\n\t\treturn source.substring(index, index + text.length).toUpperCase() === text.toUpperCase();\n\t}\n\n\tfunction getMatch(args) {\n\t\tvar expr = g.reg('^', args);\n\t\tvar match = expr.exec(substringFromIndex());\n\t\tif (match) {\n\t\t\tskip(match[0].length);\n\t\t\treturn match[0];\n\t\t}\n\t\treturn null;\n\t}\n\treturn {\n\t\tchar: char,\n\t\tgetIndex: function () {\n\t\t\treturn index;\n\t\t},\n\t\tgetMatch: getMatch,\n\t\tgetSource: function () {\n\t\t\treturn source;\n\t\t},\n\t\tskip: skip,\n\t\tskipBlanks: skipBlanks,\n\t\tsubstringFromIndex: substringFromIndex,\n\t\tsubstringStartsWith: substringStartsWith,\n\t\tsubstringStartsWithCaseInsensitive: substringStartsWithCaseInsensitive,\n\t};\n}\n\n/**\n * @param {ParseUtils} p\n * @param {DOMHandler} errorHandler\n * @returns {string}\n */\nfunction parseDoctypeInternalSubset(p, errorHandler) {\n\t/**\n\t * @param {ParseUtils} p\n\t * @param {DOMHandler} errorHandler\n\t * @returns {string}\n\t */\n\tfunction parsePI(p, errorHandler) {\n\t\tvar match = g.PI.exec(p.substringFromIndex());\n\t\tif (!match) {\n\t\t\treturn errorHandler.fatalError('processing instruction is not well-formed at position ' + p.getIndex());\n\t\t}\n\t\tif (match[1].toLowerCase() === 'xml') {\n\t\t\treturn errorHandler.fatalError(\n\t\t\t\t'xml declaration is only allowed at the start of the document, but found at position ' + p.getIndex()\n\t\t\t);\n\t\t}\n\t\tp.skip(match[0].length);\n\t\treturn match[0];\n\t}\n\t// Parse internal subset\n\tvar source = p.getSource();\n\tif (p.char() === '[') {\n\t\tp.skip(1);\n\t\tvar intSubsetStart = p.getIndex();\n\t\twhile (p.getIndex() < source.length) {\n\t\t\tp.skipBlanks();\n\t\t\tif (p.char() === ']') {\n\t\t\t\tvar internalSubset = source.substring(intSubsetStart, p.getIndex());\n\t\t\t\tp.skip(1);\n\t\t\t\treturn internalSubset;\n\t\t\t}\n\t\t\tvar current = null;\n\t\t\t// Only in external subset\n\t\t\t// if (char() === '<' && char(1) === '!' && char(2) === '[') {\n\t\t\t// \tparseConditionalSections(p, errorHandler);\n\t\t\t// } else\n\t\t\tif (p.char() === '<' && p.char(1) === '!') {\n\t\t\t\tswitch (p.char(2)) {\n\t\t\t\t\tcase 'E': // ELEMENT | ENTITY\n\t\t\t\t\t\tif (p.char(3) === 'L') {\n\t\t\t\t\t\t\tcurrent = p.getMatch(g.elementdecl);\n\t\t\t\t\t\t} else if (p.char(3) === 'N') {\n\t\t\t\t\t\t\tcurrent = p.getMatch(g.EntityDecl);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'A': // ATTRIBUTE\n\t\t\t\t\t\tcurrent = p.getMatch(g.AttlistDecl);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'N': // NOTATION\n\t\t\t\t\t\tcurrent = p.getMatch(g.NotationDecl);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase '-': // COMMENT\n\t\t\t\t\t\tcurrent = p.getMatch(g.Comment);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (p.char() === '<' && p.char(1) === '?') {\n\t\t\t\tcurrent = parsePI(p, errorHandler);\n\t\t\t} else if (p.char() === '%') {\n\t\t\t\tcurrent = p.getMatch(g.PEReference);\n\t\t\t} else {\n\t\t\t\treturn errorHandler.fatalError('Error detected in Markup declaration');\n\t\t\t}\n\t\t\tif (!current) {\n\t\t\t\treturn errorHandler.fatalError('Error in internal subset at position ' + p.getIndex());\n\t\t\t}\n\t\t}\n\t\treturn errorHandler.fatalError('doctype internal subset is not well-formed, missing ]');\n\t}\n}\n\n/**\n * Called when the parser encounters an element starting with '<!'.\n *\n * @param {string} source\n * The xml.\n * @param {number} start\n * the start index of the '<!'\n * @param {DOMHandler} domBuilder\n * @param {DOMHandler} errorHandler\n * @param {boolean} isHTML\n * @returns {number | never}\n * The end index of the element.\n * @throws {ParseError}\n * In case the element is not well-formed.\n */\nfunction parseDoctypeCommentOrCData(source, start, domBuilder, errorHandler, isHTML) {\n\tvar p = parseUtils(source, start);\n\n\tswitch (isHTML ? p.char(2).toUpperCase() : p.char(2)) {\n\t\tcase '-':\n\t\t\t// should be a comment\n\t\t\tvar comment = p.getMatch(g.Comment);\n\t\t\tif (comment) {\n\t\t\t\tdomBuilder.comment(comment, g.COMMENT_START.length, comment.length - g.COMMENT_START.length - g.COMMENT_END.length);\n\t\t\t\treturn p.getIndex();\n\t\t\t} else {\n\t\t\t\treturn errorHandler.fatalError('comment is not well-formed at position ' + p.getIndex());\n\t\t\t}\n\t\tcase '[':\n\t\t\t// should be CDATA\n\t\t\tvar cdata = p.getMatch(g.CDSect);\n\t\t\tif (cdata) {\n\t\t\t\tif (!isHTML && !domBuilder.currentElement) {\n\t\t\t\t\treturn errorHandler.fatalError('CDATA outside of element');\n\t\t\t\t}\n\t\t\t\tdomBuilder.startCDATA();\n\t\t\t\tdomBuilder.characters(cdata, g.CDATA_START.length, cdata.length - g.CDATA_START.length - g.CDATA_END.length);\n\t\t\t\tdomBuilder.endCDATA();\n\t\t\t\treturn p.getIndex();\n\t\t\t} else {\n\t\t\t\treturn errorHandler.fatalError('Invalid CDATA starting at position ' + start);\n\t\t\t}\n\t\tcase 'D': {\n\t\t\t// should be DOCTYPE\n\t\t\tif (domBuilder.doc && domBuilder.doc.documentElement) {\n\t\t\t\treturn errorHandler.fatalError('Doctype not allowed inside or after documentElement at position ' + p.getIndex());\n\t\t\t}\n\t\t\tif (isHTML ? !p.substringStartsWithCaseInsensitive(g.DOCTYPE_DECL_START) : !p.substringStartsWith(g.DOCTYPE_DECL_START)) {\n\t\t\t\treturn errorHandler.fatalError('Expected ' + g.DOCTYPE_DECL_START + ' at position ' + p.getIndex());\n\t\t\t}\n\t\t\tp.skip(g.DOCTYPE_DECL_START.length);\n\t\t\tif (p.skipBlanks() < 1) {\n\t\t\t\treturn errorHandler.fatalError('Expected whitespace after ' + g.DOCTYPE_DECL_START + ' at position ' + p.getIndex());\n\t\t\t}\n\n\t\t\tvar doctype = {\n\t\t\t\tname: undefined,\n\t\t\t\tpublicId: undefined,\n\t\t\t\tsystemId: undefined,\n\t\t\t\tinternalSubset: undefined,\n\t\t\t};\n\t\t\t// Parse the DOCTYPE name\n\t\t\tdoctype.name = p.getMatch(g.Name);\n\t\t\tif (!doctype.name)\n\t\t\t\treturn errorHandler.fatalError('doctype name missing or contains unexpected characters at position ' + p.getIndex());\n\n\t\t\tif (isHTML && doctype.name.toLowerCase() !== 'html') {\n\t\t\t\terrorHandler.warning('Unexpected DOCTYPE in HTML document at position ' + p.getIndex());\n\t\t\t}\n\t\t\tp.skipBlanks();\n\n\t\t\t// Check for ExternalID\n\t\t\tif (p.substringStartsWith(g.PUBLIC) || p.substringStartsWith(g.SYSTEM)) {\n\t\t\t\tvar match = g.ExternalID_match.exec(p.substringFromIndex());\n\t\t\t\tif (!match) {\n\t\t\t\t\treturn errorHandler.fatalError('doctype external id is not well-formed at position ' + p.getIndex());\n\t\t\t\t}\n\t\t\t\tif (match.groups.SystemLiteralOnly !== undefined) {\n\t\t\t\t\tdoctype.systemId = match.groups.SystemLiteralOnly;\n\t\t\t\t} else {\n\t\t\t\t\tdoctype.systemId = match.groups.SystemLiteral;\n\t\t\t\t\tdoctype.publicId = match.groups.PubidLiteral;\n\t\t\t\t}\n\t\t\t\tp.skip(match[0].length);\n\t\t\t} else if (isHTML && p.substringStartsWithCaseInsensitive(g.SYSTEM)) {\n\t\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#doctype-legacy-string\n\t\t\t\tp.skip(g.SYSTEM.length);\n\t\t\t\tif (p.skipBlanks() < 1) {\n\t\t\t\t\treturn errorHandler.fatalError('Expected whitespace after ' + g.SYSTEM + ' at position ' + p.getIndex());\n\t\t\t\t}\n\t\t\t\tdoctype.systemId = p.getMatch(g.ABOUT_LEGACY_COMPAT_SystemLiteral);\n\t\t\t\tif (!doctype.systemId) {\n\t\t\t\t\treturn errorHandler.fatalError(\n\t\t\t\t\t\t'Expected ' + g.ABOUT_LEGACY_COMPAT + ' in single or double quotes after ' + g.SYSTEM + ' at position ' + p.getIndex()\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isHTML && doctype.systemId && !g.ABOUT_LEGACY_COMPAT_SystemLiteral.test(doctype.systemId)) {\n\t\t\t\terrorHandler.warning('Unexpected doctype.systemId in HTML document at position ' + p.getIndex());\n\t\t\t}\n\t\t\tif (!isHTML) {\n\t\t\t\tp.skipBlanks();\n\t\t\t\tdoctype.internalSubset = parseDoctypeInternalSubset(p, errorHandler);\n\t\t\t}\n\t\t\tp.skipBlanks();\n\t\t\tif (p.char() !== '>') {\n\t\t\t\treturn errorHandler.fatalError('doctype not terminated with > at position ' + p.getIndex());\n\t\t\t}\n\t\t\tp.skip(1);\n\t\t\tdomBuilder.startDTD(doctype.name, doctype.publicId, doctype.systemId, doctype.internalSubset);\n\t\t\tdomBuilder.endDTD();\n\t\t\treturn p.getIndex();\n\t\t}\n\t\tdefault:\n\t\t\treturn errorHandler.fatalError('Not well-formed XML starting with \"<!\" at position ' + start);\n\t}\n}\n\nfunction parseProcessingInstruction(source, start, domBuilder, errorHandler) {\n\tvar match = source.substring(start).match(g.PI);\n\tif (!match) {\n\t\treturn errorHandler.fatalError('Invalid processing instruction starting at position ' + start);\n\t}\n\tif (match[1].toLowerCase() === 'xml') {\n\t\tif (start > 0) {\n\t\t\treturn errorHandler.fatalError(\n\t\t\t\t'processing instruction at position ' + start + ' is an xml declaration which is only at the start of the document'\n\t\t\t);\n\t\t}\n\t\tif (!g.XMLDecl.test(source.substring(start))) {\n\t\t\treturn errorHandler.fatalError('xml declaration is not well-formed');\n\t\t}\n\t}\n\tdomBuilder.processingInstruction(match[1], match[2]);\n\treturn start + match[0].length;\n}\n\nfunction ElementAttributes() {\n\tthis.attributeNames = Object.create(null);\n}\n\nElementAttributes.prototype = {\n\tsetTagName: function (tagName) {\n\t\tif (!g.QName_exact.test(tagName)) {\n\t\t\tthrow new Error('invalid tagName:' + tagName);\n\t\t}\n\t\tthis.tagName = tagName;\n\t},\n\taddValue: function (qName, value, offset) {\n\t\tif (!g.QName_exact.test(qName)) {\n\t\t\tthrow new Error('invalid attribute:' + qName);\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = { qName: qName, value: value, offset: offset };\n\t},\n\tlength: 0,\n\tgetLocalName: function (i) {\n\t\treturn this[i].localName;\n\t},\n\tgetLocator: function (i) {\n\t\treturn this[i].locator;\n\t},\n\tgetQName: function (i) {\n\t\treturn this[i].qName;\n\t},\n\tgetURI: function (i) {\n\t\treturn this[i].uri;\n\t},\n\tgetValue: function (i) {\n\t\treturn this[i].value;\n\t},\n\t//\t,getIndex:function(uri, localName)){\n\t//\t\tif(localName){\n\t//\n\t//\t\t}else{\n\t//\t\t\tvar qName = uri\n\t//\t\t}\n\t//\t},\n\t//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n\t//\tgetType:function(uri,localName){}\n\t//\tgetType:function(i){},\n};\n\nexports.XMLReader = XMLReader;\nexports.parseUtils = parseUtils;\nexports.parseDoctypeCommentOrCData = parseDoctypeCommentOrCData;\n","'use strict';\n\nvar conventions = require('./conventions');\nvar dom = require('./dom');\nvar errors = require('./errors');\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar hasDefaultHTMLNamespace = conventions.hasDefaultHTMLNamespace;\nvar isHTMLMimeType = conventions.isHTMLMimeType;\nvar isValidMimeType = conventions.isValidMimeType;\nvar MIME_TYPE = conventions.MIME_TYPE;\nvar NAMESPACE = conventions.NAMESPACE;\nvar ParseError = errors.ParseError;\n\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to <https://www.w3.org/TR/xml11/#sec-line-ends>,\n * including some Unicode \"newline\" characters:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA,\n * > 2. the two-character sequence #xD #x85,\n * > 3. the single character #x85,\n * > 4. the single character #x2028,\n * > 5. the single character #x2029,\n * > 6. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n * @prettierignore\n */\nfunction normalizeLineEndings(input) {\n\treturn input.replace(/\\r[\\n\\u0085]/g, '\\n').replace(/[\\r\\u0085\\u2028\\u2029]/g, '\\n');\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {typeof assign} [assign]\n * The method to use instead of `conventions.assign`, which is used to copy values from\n * `options` before they are used for parsing.\n * @property {typeof DOMHandler} [domHandler]\n * For internal testing: The class for creating an instance for handling events from the SAX\n * parser.\n * *****Warning: By configuring a faulty implementation, the specified behavior can completely\n * be broken.*****.\n * @property {Function} [errorHandler]\n * DEPRECATED! use `onError` instead.\n * @property {function(level:ErrorLevel, message:string, context: DOMHandler):void}\n * [onError]\n * A function invoked for every error that occurs during parsing.\n *\n * If it is not provided, all errors are reported to `console.error`\n * and only `fatalError`s are thrown as a `ParseError`,\n * which prevents any further processing.\n * If the provided method throws, a `ParserError` is thrown,\n * which prevents any further processing.\n *\n * Be aware that many `warning`s are considered an error that prevents further processing in\n * most implementations.\n * @property {boolean} [locator=true]\n * Configures if the nodes created during parsing will have a `lineNumber` and a `columnNumber`\n * attribute describing their location in the XML string.\n * Default is true.\n * @property {(string) => string} [normalizeLineEndings]\n * used to replace line endings before parsing, defaults to exported `normalizeLineEndings`,\n * which normalizes line endings according to <https://www.w3.org/TR/xml11/#sec-line-ends>,\n * including some Unicode \"newline\" characters.\n * @property {Object} [xmlns]\n * The XML namespaces that should be assumed when parsing.\n * The default namespace can be provided by the key that is the empty string.\n * When the `mimeType` for HTML, XHTML or SVG are passed to `parseFromString`,\n * the default namespace that will be used,\n * will be overridden according to the specification.\n * @see {@link normalizeLineEndings}\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code from a string\n * into a DOM `Document`.\n *\n * ***xmldom is different from the spec in that it allows an `options` parameter,\n * to control the behavior***.\n *\n * @class\n * @param {DOMParserOptions} [options]\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options) {\n\toptions = options || {};\n\tif (options.locator === undefined) {\n\t\toptions.locator = true;\n\t}\n\n\t/**\n\t * The method to use instead of `conventions.assign`, which is used to copy values from\n\t * `options`\n\t * before they are used for parsing.\n\t *\n\t * @type {conventions.assign}\n\t * @private\n\t * @see {@link conventions.assign}\n\t * @readonly\n\t */\n\tthis.assign = options.assign || conventions.assign;\n\n\t/**\n\t * For internal testing: The class for creating an instance for handling events from the SAX\n\t * parser.\n\t * *****Warning: By configuring a faulty implementation, the specified behavior can completely\n\t * be broken*****.\n\t *\n\t * @type {typeof DOMHandler}\n\t * @private\n\t * @readonly\n\t */\n\tthis.domHandler = options.domHandler || DOMHandler;\n\n\t/**\n\t * A function that is invoked for every error that occurs during parsing.\n\t *\n\t * If it is not provided, all errors are reported to `console.error`\n\t * and only `fatalError`s are thrown as a `ParseError`,\n\t * which prevents any further processing.\n\t * If the provided method throws, a `ParserError` is thrown,\n\t * which prevents any further processing.\n\t *\n\t * Be aware that many `warning`s are considered an error that prevents further processing in\n\t * most implementations.\n\t *\n\t * @type {function(level:ErrorLevel, message:string, context: DOMHandler):void}\n\t * @see {@link onErrorStopParsing}\n\t * @see {@link onWarningStopParsing}\n\t */\n\tthis.onError = options.onError || options.errorHandler;\n\tif (options.errorHandler && typeof options.errorHandler !== 'function') {\n\t\tthrow new TypeError('errorHandler object is no longer supported, switch to onError!');\n\t} else if (options.errorHandler) {\n\t\toptions.errorHandler('warning', 'The `errorHandler` option has been deprecated, use `onError` instead!', this);\n\t}\n\n\t/**\n\t * used to replace line endings before parsing, defaults to `normalizeLineEndings`\n\t *\n\t * @type {(string) => string}\n\t * @readonly\n\t */\n\tthis.normalizeLineEndings = options.normalizeLineEndings || normalizeLineEndings;\n\n\t/**\n\t * Configures if the nodes created during parsing will have a `lineNumber` and a\n\t * `columnNumber`\n\t * attribute describing their location in the XML string.\n\t * Default is true.\n\t *\n\t * @type {boolean}\n\t * @readonly\n\t */\n\tthis.locator = !!options.locator;\n\n\t/**\n\t * The default namespace can be provided by the key that is the empty string.\n\t * When the `mimeType` for HTML, XHTML or SVG are passed to `parseFromString`,\n\t * the default namespace that will be used,\n\t * will be overridden according to the specification.\n\t *\n\t * @type {Readonly<Object>}\n\t * @readonly\n\t */\n\tthis.xmlns = this.assign(Object.create(null), options.xmlns);\n}\n\n/**\n * Parses `source` using the options in the way configured by the `DOMParserOptions` of `this`\n * `DOMParser`. If `mimeType` is `text/html` an HTML `Document` is created,\n * otherwise an XML `Document` is created.\n *\n * __It behaves different from the description in the living standard__:\n * - Uses the `options` passed to the `DOMParser` constructor to modify the behavior.\n * - Any unexpected input is reported to `onError` with either a `warning`,\n * `error` or `fatalError` level.\n * - Any `fatalError` throws a `ParseError` which prevents further processing.\n * - Any error thrown by `onError` is converted to a `ParseError` which prevents further\n * processing - If no `Document` was created during parsing it is reported as a `fatalError`.\n * *****Warning: By configuring a faulty DOMHandler implementation,\n * the specified behavior can completely be broken*****.\n *\n * @param {string} source\n * The XML mime type only allows string input!\n * @param {string} [mimeType='application/xml']\n * the mimeType or contentType of the document to be created determines the `type` of document\n * created (XML or HTML)\n * @returns {Document}\n * The `Document` node.\n * @throws {ParseError}\n * for any `fatalError` or anything that is thrown by `onError`\n * @throws {TypeError}\n * for any invalid `mimeType`\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString\n * @see https://html.spec.whatwg.org/#dom-domparser-parsefromstring-dev\n */\nDOMParser.prototype.parseFromString = function (source, mimeType) {\n\tif (!isValidMimeType(mimeType)) {\n\t\tthrow new TypeError('DOMParser.parseFromString: the provided mimeType \"' + mimeType + '\" is not valid.');\n\t}\n\tvar defaultNSMap = this.assign(Object.create(null), this.xmlns);\n\tvar entityMap = entities.XML_ENTITIES;\n\tvar defaultNamespace = defaultNSMap[''] || null;\n\tif (hasDefaultHTMLNamespace(mimeType)) {\n\t\tentityMap = entities.HTML_ENTITIES;\n\t\tdefaultNamespace = NAMESPACE.HTML;\n\t} else if (mimeType === MIME_TYPE.XML_SVG_IMAGE) {\n\t\tdefaultNamespace = NAMESPACE.SVG;\n\t}\n\tdefaultNSMap[''] = defaultNamespace;\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\n\tvar domBuilder = new this.domHandler({\n\t\tmimeType: mimeType,\n\t\tdefaultNamespace: defaultNamespace,\n\t\tonError: this.onError,\n\t});\n\tvar locator = this.locator ? {} : undefined;\n\tif (this.locator) {\n\t\tdomBuilder.setDocumentLocator(locator);\n\t}\n\n\tvar sax = new XMLReader();\n\tsax.errorHandler = domBuilder;\n\tsax.domBuilder = domBuilder;\n\tvar isXml = !conventions.isHTMLMimeType(mimeType);\n\tif (isXml && typeof source !== 'string') {\n\t\tsax.errorHandler.fatalError('source is not a string');\n\t}\n\tsax.parse(this.normalizeLineEndings(String(source)), defaultNSMap, entityMap);\n\tif (!domBuilder.doc.documentElement) {\n\t\tsax.errorHandler.fatalError('missing root element');\n\t}\n\treturn domBuilder.doc;\n};\n\n/**\n * @typedef DOMHandlerOptions\n * @property {string} [mimeType=MIME_TYPE.XML_APPLICATION]\n * @property {string | null} [defaultNamespace=null]\n */\n/**\n * The class that is used to handle events from the SAX parser to create the related DOM\n * elements.\n *\n * Some methods are only implemented as an empty function,\n * since they are (at least currently) not relevant for xmldom.\n *\n * @class\n * @param {DOMHandlerOptions} [options]\n * @see http://www.saxproject.org/apidoc/org/xml/sax/ext/DefaultHandler2.html\n */\nfunction DOMHandler(options) {\n\tvar opt = options || {};\n\t/**\n\t * The mime type is used to determine if the DOM handler will create an XML or HTML document.\n\t * Only if it is set to `text/html` it will create an HTML document.\n\t * It defaults to MIME_TYPE.XML_APPLICATION.\n\t *\n\t * @type {string}\n\t * @see {@link MIME_TYPE}\n\t * @readonly\n\t */\n\tthis.mimeType = opt.mimeType || MIME_TYPE.XML_APPLICATION;\n\n\t/**\n\t * The namespace to use to create an XML document.\n\t * For the following reasons this is required:\n\t * - The SAX API for `startDocument` doesn't offer any way to pass a namespace,\n\t * since at that point there is no way for the parser to know what the default namespace from\n\t * the document will be.\n\t * - When creating using `DOMImplementation.createDocument` it is required to pass a\n\t * namespace,\n\t * to determine the correct `Document.contentType`, which should match `this.mimeType`.\n\t * - When parsing an XML document with the `application/xhtml+xml` mimeType,\n\t * the HTML namespace needs to be the default namespace.\n\t *\n\t * @type {string | null}\n\t * @private\n\t * @readonly\n\t */\n\tthis.defaultNamespace = opt.defaultNamespace || null;\n\n\t/**\n\t * @type {boolean}\n\t * @private\n\t */\n\tthis.cdata = false;\n\n\t/**\n\t * The last `Element` that was created by `startElement`.\n\t * `endElement` sets it to the `currentElement.parentNode`.\n\t *\n\t * Note: The sax parser currently sets it to white space text nodes between tags.\n\t *\n\t * @type {Element | Node | undefined}\n\t * @private\n\t */\n\tthis.currentElement = undefined;\n\n\t/**\n\t * The Document that is created as part of `startDocument`,\n\t * and returned by `DOMParser.parseFromString`.\n\t *\n\t * @type {Document | undefined}\n\t * @readonly\n\t */\n\tthis.doc = undefined;\n\n\t/**\n\t * The locator is stored as part of setDocumentLocator.\n\t * It is controlled and mutated by the SAX parser to store the current parsing position.\n\t * It is used by DOMHandler to set `columnNumber` and `lineNumber`\n\t * on the DOM nodes.\n\t *\n\t * @type {Readonly<Locator> | undefined}\n\t * @private\n\t * @readonly (the\n\t * sax parser currently sometimes set's it)\n\t */\n\tthis.locator = undefined;\n\t/**\n\t * @type {function (level:ErrorLevel ,message:string, context:DOMHandler):void}\n\t * @readonly\n\t */\n\tthis.onError = opt.onError;\n}\n\nfunction position(locator, node) {\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n\nDOMHandler.prototype = {\n\t/**\n\t * Either creates an XML or an HTML document and stores it under `this.doc`.\n\t * If it is an XML document, `this.defaultNamespace` is used to create it,\n\t * and it will not contain any `childNodes`.\n\t * If it is an HTML document, it will be created without any `childNodes`.\n\t *\n\t * @see http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n\t */\n\tstartDocument: function () {\n\t\tvar impl = new DOMImplementation();\n\t\tthis.doc = isHTMLMimeType(this.mimeType) ? impl.createHTMLDocument(false) : impl.createDocument(this.defaultNamespace, '');\n\t},\n\tstartElement: function (namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t\tvar el = doc.createElementNS(namespaceURI, qName || localName);\n\t\tvar len = attrs.length;\n\t\tappendElement(this, el);\n\t\tthis.currentElement = el;\n\n\t\tthis.locator && position(this.locator, el);\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar namespaceURI = attrs.getURI(i);\n\t\t\tvar value = attrs.getValue(i);\n\t\t\tvar qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator && position(attrs.getLocator(i), attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr);\n\t\t}\n\t},\n\tendElement: function (namespaceURI, localName, qName) {\n\t\tthis.currentElement = this.currentElement.parentNode;\n\t},\n\tstartPrefixMapping: function (prefix, uri) {},\n\tendPrefixMapping: function (prefix) {},\n\tprocessingInstruction: function (target, data) {\n\t\tvar ins = this.doc.createProcessingInstruction(target, data);\n\t\tthis.locator && position(this.locator, ins);\n\t\tappendElement(this, ins);\n\t},\n\tignorableWhitespace: function (ch, start, length) {},\n\tcharacters: function (chars, start, length) {\n\t\tchars = _toString.apply(this, arguments);\n\t\t//console.log(chars)\n\t\tif (chars) {\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif (this.currentElement) {\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t} else if (/^\\s*$/.test(chars)) {\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator, charNode);\n\t\t}\n\t},\n\tskippedEntity: function (name) {},\n\tendDocument: function () {\n\t\tthis.doc.normalize();\n\t},\n\t/**\n\t * Stores the locator to be able to set the `columnNumber` and `lineNumber`\n\t * on the created DOM nodes.\n\t *\n\t * @param {Locator} locator\n\t */\n\tsetDocumentLocator: function (locator) {\n\t\tif (locator) {\n\t\t\tlocator.lineNumber = 0;\n\t\t}\n\t\tthis.locator = locator;\n\t},\n\t//LexicalHandler\n\tcomment: function (chars, start, length) {\n\t\tchars = _toString.apply(this, arguments);\n\t\tvar comm = this.doc.createComment(chars);\n\t\tthis.locator && position(this.locator, comm);\n\t\tappendElement(this, comm);\n\t},\n\n\tstartCDATA: function () {\n\t\t//used in characters() methods\n\t\tthis.cdata = true;\n\t},\n\tendCDATA: function () {\n\t\tthis.cdata = false;\n\t},\n\n\tstartDTD: function (name, publicId, systemId, internalSubset) {\n\t\tvar impl = this.doc.implementation;\n\t\tif (impl && impl.createDocumentType) {\n\t\t\tvar dt = impl.createDocumentType(name, publicId, systemId, internalSubset);\n\t\t\tthis.locator && position(this.locator, dt);\n\t\t\tappendElement(this, dt);\n\t\t\tthis.doc.doctype = dt;\n\t\t}\n\t},\n\treportError: function (level, message) {\n\t\tif (typeof this.onError === 'function') {\n\t\t\ttry {\n\t\t\t\tthis.onError(level, message, this);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new ParseError('Reporting ' + level + ' \"' + message + '\" caused ' + e, this.locator);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error('[xmldom ' + level + ']\\t' + message, _locator(this.locator));\n\t\t}\n\t},\n\t/**\n\t * @see http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning: function (message) {\n\t\tthis.reportError('warning', message);\n\t},\n\terror: function (message) {\n\t\tthis.reportError('error', message);\n\t},\n\t/**\n\t * This function reports a fatal error and throws a ParseError.\n\t *\n\t * @param {string} message\n\t * - The message to be used for reporting and throwing the error.\n\t * @returns {never}\n\t * This function always throws an error and never returns a value.\n\t * @throws {ParseError}\n\t * Always throws a ParseError with the provided message.\n\t */\n\tfatalError: function (message) {\n\t\tthis.reportError('fatalError', message);\n\t\tthrow new ParseError(message, this.locator);\n\t},\n};\n\nfunction _locator(l) {\n\tif (l) {\n\t\treturn '\\n@#[line:' + l.lineNumber + ',col:' + l.columnNumber + ']';\n\t}\n}\n\nfunction _toString(chars, start, length) {\n\tif (typeof chars == 'string') {\n\t\treturn chars.substr(start, length);\n\t} else {\n\t\t//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif (chars.length >= start + length || start) {\n\t\t\treturn new java.lang.String(chars, start, length) + '';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n *  #comment(chars, start, length)\n *  #startCDATA()\n *  #endCDATA()\n *  #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n *  #endDTD()\n *  #startEntity(name)\n *  #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n *  #elementDecl(name, model)\n *  #externalEntityDecl(name, publicId, systemId)\n *  #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n *  #resolveEntity(String name,String publicId,String baseURI,String systemId)\n *  #resolveEntity(publicId, systemId)\n *  #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n *  #notationDecl(name, publicId, systemId) {};\n *  #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n'endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl'.replace(\n\t/\\w+/g,\n\tfunction (key) {\n\t\tDOMHandler.prototype[key] = function () {\n\t\t\treturn null;\n\t\t};\n\t}\n);\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement(handler, node) {\n\tif (!handler.currentElement) {\n\t\thandler.doc.appendChild(node);\n\t} else {\n\t\thandler.currentElement.appendChild(node);\n\t}\n}\n\n/**\n * A method that prevents any further parsing when an `error`\n * with level `error` is reported during parsing.\n *\n * @see {@link DOMParserOptions.onError}\n * @see {@link onWarningStopParsing}\n */\nfunction onErrorStopParsing(level) {\n\tif (level === 'error') throw 'onErrorStopParsing';\n}\n\n/**\n * A method that prevents any further parsing when any `error` is reported during parsing.\n *\n * @see {@link DOMParserOptions.onError}\n * @see {@link onErrorStopParsing}\n */\nfunction onWarningStopParsing() {\n\tthrow 'onWarningStopParsing';\n}\n\nexports.__DOMHandler = DOMHandler;\nexports.DOMParser = DOMParser;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.onErrorStopParsing = onErrorStopParsing;\nexports.onWarningStopParsing = onWarningStopParsing;\n","'use strict';\nvar conventions = require('./conventions');\nexports.assign = conventions.assign;\nexports.hasDefaultHTMLNamespace = conventions.hasDefaultHTMLNamespace;\nexports.isHTMLMimeType = conventions.isHTMLMimeType;\nexports.isValidMimeType = conventions.isValidMimeType;\nexports.MIME_TYPE = conventions.MIME_TYPE;\nexports.NAMESPACE = conventions.NAMESPACE;\n\nvar errors = require('./errors');\nexports.DOMException = errors.DOMException;\nexports.DOMExceptionName = errors.DOMExceptionName;\nexports.ExceptionCode = errors.ExceptionCode;\nexports.ParseError = errors.ParseError;\n\nvar dom = require('./dom');\nexports.Attr = dom.Attr;\nexports.CDATASection = dom.CDATASection;\nexports.CharacterData = dom.CharacterData;\nexports.Comment = dom.Comment;\nexports.Document = dom.Document;\nexports.DocumentFragment = dom.DocumentFragment;\nexports.DocumentType = dom.DocumentType;\nexports.DOMImplementation = dom.DOMImplementation;\nexports.Element = dom.Element;\nexports.Entity = dom.Entity;\nexports.EntityReference = dom.EntityReference;\nexports.LiveNodeList = dom.LiveNodeList;\nexports.NamedNodeMap = dom.NamedNodeMap;\nexports.Node = dom.Node;\nexports.NodeList = dom.NodeList;\nexports.Notation = dom.Notation;\nexports.ProcessingInstruction = dom.ProcessingInstruction;\nexports.Text = dom.Text;\nexports.XMLSerializer = dom.XMLSerializer;\n\nvar domParser = require('./dom-parser');\nexports.DOMParser = domParser.DOMParser;\nexports.normalizeLineEndings = domParser.normalizeLineEndings;\nexports.onErrorStopParsing = domParser.onErrorStopParsing;\nexports.onWarningStopParsing = domParser.onWarningStopParsing;\n","import { DOMParser } from '@xmldom/xmldom';\n\n// During an iterative conversion (see tree-to-latex) every child is converted\n// before its parent and its LaTeX is stored in this memo. While a memo is\n// active, the helper returns the child's precomputed string instead of building\n// a converter that would recurse — keeping the call stack flat at any depth.\nlet conversionMemo = null;\n/**\n * Activates (or clears, with `null`) the memo consulted by\n * {@link mathMLElementToLaTeXConverter}.\n *\n * @param memo - the memo to make active, or `null` to disable memoization.\n * @returns the previously active memo, so callers can restore it afterwards.\n */\nconst setConversionMemo = (memo) => {\n    const previous = conversionMemo;\n    conversionMemo = memo;\n    return previous;\n};\n/**\n * Resolves the {@link ToLaTeXConverter} for an element. While a memo is active\n * and already contains the element, returns a converter that yields the\n * precomputed LaTeX (no recursion); otherwise builds the real converter.\n *\n * @param mathMLElement - the element to convert.\n * @returns a converter bound to the element.\n */\nconst mathMLElementToLaTeXConverter = (mathMLElement) => {\n    const precomputed = conversionMemo === null || conversionMemo === void 0 ? void 0 : conversionMemo.get(mathMLElement);\n    if (precomputed !== undefined)\n        return new PrecomputedConverter(precomputed);\n    return new MathMLElementToLatexConverterAdapter(mathMLElement).toLatexConverter();\n};\nclass PrecomputedConverter {\n    constructor(_latex) {\n        this._latex = _latex;\n    }\n    convert() {\n        return this._latex;\n    }\n}\n\n/**\n * Collapses every run of whitespace in the string into a single space.\n *\n * @param str - the string to normalize.\n * @returns the string with runs of whitespace reduced to single spaces.\n */\nconst normalizeWhiteSpaces = (str) => {\n    return str.replace(/\\s+/g, ' ');\n};\n\n/**\n * Converts a MathML `<math>` root element into LaTeX.\n *\n * Recursively converts every child to LaTeX, joins the results with spaces\n * and normalizes the resulting whitespace.\n *\n * @example\n * // <math><mi>x</mi><mo>=</mo><mn>1</mn></math> -> x = 1\n */\nlet Math$1 = class Math {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const unnormalizedLatex = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n        return normalizeWhiteSpaces(unnormalizedLatex);\n    }\n};\n\n/**\n * Base helper that surrounds a string with an opening and a closing delimiter.\n */\nclass Wrapper {\n    constructor(open, close) {\n        this._open = open;\n        this._close = close;\n    }\n    /** @returns `str` surrounded by the configured open/close delimiters. */\n    wrap(str) {\n        return this._open + str + this._close;\n    }\n}\n\n/**\n * Wraps a string in LaTeX curly braces (`{ ... }`), e.g. for subscript and\n * superscript arguments.\n */\nclass BracketWrapper {\n    constructor() {\n        this._open = '{';\n        this._close = '}';\n    }\n    /** @returns `str` wrapped in curly braces. */\n    wrap(str) {\n        return new Wrapper(this._open, this._close).wrap(str);\n    }\n}\n\n/**\n * Wraps a string in auto-sizing LaTeX parentheses (`\\left( ... \\right)`).\n */\nclass ParenthesisWrapper {\n    constructor() {\n        this._open = '\\\\left(';\n        this._close = '\\\\right)';\n    }\n    /** @returns `str` wrapped in `\\left(`/`\\right)`. */\n    wrap(str) {\n        return new Wrapper(this._open, this._close).wrap(str);\n    }\n    /** @returns `str` wrapped in parentheses only when it is longer than one char. */\n    wrapIfMoreThanOneChar(str) {\n        if (str.length <= 1)\n            return str;\n        return this.wrap(str);\n    }\n}\n\n/**\n * Lookup table mapping math operators, keyed by their literal HTML character\n * reference (e.g. `&#x2211;`), to the equivalent LaTeX command. Consumed by the\n * `<mo>` converter to translate operator content into LaTeX.\n */\nconst allMathOperatorsByChar = {\n    _: '\\\\underline',\n    '&#x23E1;': '\\\\underbrace',\n    '&#x23E0;': '\\\\overbrace',\n    '&#x23DF;': '\\\\underbrace',\n    '&#x23DE;': '\\\\overbrace',\n    '&#x23DD;': '\\\\underbrace',\n    '&#x23DC;': '\\\\overbrace',\n    '&#x23B5;': '\\\\underbrace',\n    '&#x23B4;': '\\\\overbrace',\n    '&#x20DC;': '\\\\square',\n    '&#x20DB;': '\\\\square',\n    '&#x2064;': '',\n    '&#x2057;': \"''''\",\n    '&#x203E;': '\\\\bar',\n    '&#x2037;': '```',\n    '&#x2036;': '``',\n    '&#x2035;': '`',\n    '&#x2034;': \"'''\",\n    '&#x2033;': \"''\",\n    '&#x201F;': '``',\n    '&#x201E;': ',,',\n    '&#x201B;': '`',\n    '&#x201A;': ',',\n    '&#x302;': '\\\\hat',\n    '&#x2F7;': '\\\\sim',\n    '&#x2DD;': '\\\\sim',\n    '&#x2DC;': '\\\\sim',\n    '&#x2DA;': '\\\\circ',\n    '&#x2D9;': '\\\\cdot',\n    '&#x2D8;': '',\n    '&#x2CD;': '\\\\_',\n    '&#x2CB;': 'ˋ',\n    '&#x2CA;': 'ˊ',\n    '&#x2C9;': 'ˉ',\n    '&#x2C7;': '',\n    '&#x2C6;': '\\\\hat',\n    '&#xBA;': 'o',\n    '&#xB9;': '1',\n    '&#xB8;': '¸',\n    '&#xB4;': '´',\n    '&#xB3;': '3',\n    '&#xB2;': '2',\n    '&#xB0;': '\\\\circ',\n    '&#xAF;': '\\\\bar',\n    '&#xAA;': 'a',\n    '&#xA8;': '\\\\cdot\\\\cdot',\n    '~': '\\\\sim',\n    '`': '`',\n    '^': '\\\\hat',\n    '--': '--',\n    '++': '++',\n    '&amp;': '\\\\&',\n    '&#x2061;': '',\n    '&#x221C;': '\\\\sqrt[4]{}',\n    '&#x221B;': '\\\\sqrt[3]{}',\n    '&#x221A;': '\\\\sqrt{}',\n    '&#x2146;': 'd',\n    '&#x2145;': '\\\\mathbb{D}',\n    '?': '?',\n    '@': '@',\n    '//': '//',\n    '!!': '!!',\n    '!': '!',\n    '&#x266F;': '\\\\#',\n    '&#x266E;': '',\n    '&#x266D;': '',\n    '&#x2032;': \"'\",\n    '&lt;>': '<>',\n    '**': '\\\\star\\\\star',\n    '&#x2207;': '\\\\nabla',\n    '&#x2202;': '\\\\partial',\n    '&#x2299;': '\\\\bigodot',\n    '&#xAC;': '\\\\neg',\n    '&#x2222;': '\\\\measuredangle',\n    '&#x2221;': '\\\\measuredangle',\n    '&#x2220;': '\\\\angle',\n    '&#xF7;': '\\\\div',\n    '/': '/',\n    '&#x2216;': '\\\\backslash',\n    '\\\\': '\\\\backslash',\n    '%': '\\\\%',\n    '&#x2297;': '\\\\bigotimes',\n    '&#xB7;': '\\\\cdot',\n    '&#x2A3F;': '\\\\coprod',\n    '&#x2A2F;': '\\\\times',\n    '&#x22C5;': '\\\\cdot',\n    '&#x22A1;': '\\\\boxdot',\n    '&#x22A0;': '\\\\boxtimes',\n    '&#x2062;': '',\n    '&#x2043;': '-',\n    '&#x2022;': '\\\\cdot',\n    '&#xD7;': '\\\\times',\n    '.': '.',\n    '*': '\\\\star',\n    '&#x222A;': '\\\\cup',\n    '&#x2229;': '\\\\cap',\n    '&#x2210;': '\\\\coprod',\n    '&#x220F;': '\\\\prod',\n    '&#x2240;': '',\n    '&#x2AFF;': '',\n    '&#x2AFC;': '\\\\mid\\\\mid\\\\mid',\n    '&#x2A09;': '\\\\times',\n    '&#x2A08;': '',\n    '&#x2A07;': '',\n    '&#x2A06;': '\\\\sqcup',\n    '&#x2A05;': '\\\\sqcap',\n    '&#x2A02;': '\\\\otimes',\n    '&#x2A00;': '\\\\odot',\n    '&#x22C2;': '\\\\cap',\n    '&#x22C1;': '\\\\vee',\n    '&#x22C0;': '\\\\wedge',\n    '&#x2A04;': '\\\\uplus',\n    '&#x2A03;': '\\\\cup',\n    '&#x22C3;': '\\\\cup',\n    '&#x2A1C;': '\\\\underline{\\\\int}',\n    '&#x2A1B;': '\\\\overline{\\\\int}',\n    '&#x2A1A;': '\\\\int',\n    '&#x2A19;': '\\\\int',\n    '&#x2A18;': '\\\\int',\n    '&#x2A17;': '\\\\int',\n    '&#x2A16;': '\\\\oint',\n    '&#x2A15;': '\\\\oint',\n    '&#x2A14;': '\\\\int',\n    '&#x2A13;': '\\\\int',\n    '&#x2A12;': '\\\\int',\n    '&#x2A11;': '\\\\int',\n    '&#x2A10;': '\\\\int',\n    '&#x2A0F;': '\\\\bcancel{\\\\int}',\n    '&#x2A0E;': '',\n    '&#x2A0D;': '\\\\hcancel{\\\\int}',\n    '&#x2A0C;': '\\\\iiiint',\n    '&#x2233;': '\\\\oint',\n    '&#x2232;': '\\\\oint',\n    '&#x2231;': '\\\\int',\n    '&#x2230;': '\\\\oiint',\n    '&#x222F;': '\\\\oiint',\n    '&#x222E;': '\\\\oint',\n    '&#x222B;': '\\\\int',\n    '&#x2A01;': '\\\\oplus',\n    '&#x2298;': '\\\\oslash',\n    '&#x2296;': '\\\\ominus',\n    '&#x2295;': '\\\\oplus',\n    '&#x222D;': '\\\\iiint',\n    '&#x222C;': '\\\\iint',\n    '&#x2A0B;': '',\n    '&#x2A0A;': '',\n    '&#x2211;': '\\\\sum',\n    '&#x229F;': '\\\\boxminus',\n    '&#x229E;': '\\\\boxplus',\n    '&#x2214;': '\\\\dot{+}',\n    '&#x2213;': '+-',\n    '&#x2212;': '-',\n    '&#xB1;': '\\\\pm',\n    '-': '-',\n    '+': '+',\n    '&#x2B46;': '\\\\Rrightarrow',\n    '&#x2B45;': '\\\\Lleftarrow',\n    '&#x29F4;': ':\\\\rightarrow',\n    '&#x29EF;': '',\n    '&#x29DF;': '\\\\bullet-\\\\bullet',\n    '&#x299F;': '\\\\angle',\n    '&#x299E;': '\\\\measuredangle',\n    '&#x299D;': '\\\\measuredangle',\n    '&#x299C;': '\\\\perp',\n    '&#x299B;': '\\\\measuredangle',\n    '&#x299A;': '',\n    '&#x2999;': '\\\\vdots',\n    '&#x297F;': '',\n    '&#x297E;': '',\n    '&#x297D;': '\\\\prec',\n    '&#x297C;': '\\\\succ',\n    '&#x297B;': '\\\\underset{\\\\rightarrow}{\\\\supset}',\n    '&#x297A;': '',\n    '&#x2979;': '\\\\underset{\\\\rightarrow}{\\\\subset}',\n    '&#x2978;': '\\\\underset{\\\\rightarrow}{>}',\n    '&#x2977;': '',\n    '&#x2976;': '\\\\underset{\\\\leftarrow}{<}',\n    '&#x2975;': '\\\\underset{\\\\approx}{\\\\rightarrow}',\n    '&#x2974;': '\\\\underset{\\\\sim}{\\\\rightarrow}',\n    '&#x2973;': '\\\\underset{\\\\sim}{\\\\leftarrow}',\n    '&#x2972;': '\\\\overset{\\\\sim}{\\\\rightarrow}',\n    '&#x2971;': '\\\\overset{=}{\\\\rightarrow}',\n    '&#x2970;': '',\n    '&#x296F;': '',\n    '&#x296E;': '',\n    '&#x296D;': '\\\\overline{\\\\rightharpoondown}',\n    '&#x296C;': '\\\\underline{\\\\rightharpoonup}',\n    '&#x296B;': '\\\\overline{\\\\leftharpoondown}',\n    '&#x296A;': '\\\\underline{\\\\leftharpoonup}',\n    '&#x2969;': '\\\\rightleftharpoons',\n    '&#x2968;': '\\\\rightleftharpoons',\n    '&#x2967;': '\\\\rightleftharpoons',\n    '&#x2966;': '\\\\rightleftharpoons',\n    '&#x2965;': '\\\\Downarrow',\n    '&#x2964;': '\\\\Rightarrow',\n    '&#x2963;': '\\\\Uparrow',\n    '&#x2962;': '\\\\Leftarrow',\n    '&#x2961;': '\\\\downarrow',\n    '&#x2960;': '\\\\uparrow',\n    '&#x295F;': '\\\\rightarrow',\n    '&#x295E;': '\\\\leftarrow',\n    '&#x295D;': '\\\\downarrow',\n    '&#x295C;': '\\\\uparrow',\n    '&#x295B;': '\\\\rightarrow',\n    '&#x295A;': '\\\\leftarrow',\n    '&#x2959;': '\\\\downarrow',\n    '&#x2958;': '\\\\uparrow',\n    '&#x2957;': '\\\\rightarrow',\n    '&#x2956;': '\\\\leftarrow',\n    '&#x2955;': '\\\\downarrow',\n    '&#x2954;': '\\\\uparrow',\n    '&#x2953;': '\\\\rightarrow',\n    '&#x2952;': '\\\\leftarrow',\n    '&#x2951;': '\\\\updownarrow',\n    '&#x2950;': '\\\\leftrightarrow',\n    '&#x294F;': '\\\\updownarrow',\n    '&#x294E;': '\\\\leftrightarrow',\n    '&#x294D;': '\\\\updownarrow',\n    '&#x294C;': '\\\\updownarrow',\n    '&#x294B;': '\\\\leftrightarrow',\n    '&#x294A;': '\\\\leftrightarrow',\n    '&#x2949;': '',\n    '&#x2948;': '\\\\leftrightarrow',\n    '&#x2947;': '\\\\nrightarrow',\n    '&#x2946;': '',\n    '&#x2945;': '',\n    '&#x2944;': '\\\\rightleftarrows',\n    '&#x2943;': '\\\\leftrightarrows',\n    '&#x2942;': '\\\\rightleftarrows',\n    '&#x2941;': '\\\\circlearrowright',\n    '&#x2940;': '\\\\circlearrowleft',\n    '&#x293F;': '\\\\rightarrow',\n    '&#x293E;': '\\\\leftarrow',\n    '&#x293D;': '',\n    '&#x293C;': '',\n    '&#x293B;': '',\n    '&#x293A;': '',\n    '&#x2939;': '',\n    '&#x2938;': '',\n    '&#x2937;': '\\\\Rsh',\n    '&#x2936;': '\\\\Lsh',\n    '&#x2935;': '\\\\downarrow',\n    '&#x2934;': '\\\\uparrow',\n    '&#x2933;': '\\\\leadsto',\n    '&#x2932;': '',\n    '&#x2931;': '',\n    '&#x2930;': '',\n    '&#x292F;': '',\n    '&#x292E;': '',\n    '&#x292D;': '',\n    '&#x292C;': '\\\\times',\n    '&#x292B;': '\\\\times',\n    '&#x292A;': '',\n    '&#x2929;': '',\n    '&#x2928;': '',\n    '&#x2927;': '',\n    '&#x2926;': '',\n    '&#x2925;': '',\n    '&#x2924;': '',\n    '&#x2923;': '',\n    '&#x2922;': '',\n    '&#x2921;': '',\n    '&#x2920;': '\\\\mapsto\\\\cdot',\n    '&#x291F;': '\\\\cdot\\\\leftarrow',\n    '&#x291E;': '\\\\rightarrow\\\\cdot',\n    '&#x291D;': '\\\\leftarrow',\n    '&#x291C;': '\\\\rightarrow',\n    '&#x291B;': '\\\\leftarrow',\n    '&#x291A;': '\\\\rightarrow',\n    '&#x2919;': '\\\\leftarrow',\n    '&#x2918;': '\\\\rightarrow',\n    '&#x2917;': '\\\\rightarrow',\n    '&#x2916;': '\\\\rightarrow',\n    '&#x2915;': '\\\\rightarrow',\n    '&#x2914;': '\\\\rightarrow',\n    '&#x2913;': '\\\\downarrow',\n    '&#x2912;': '\\\\uparrow',\n    '&#x2911;': '\\\\rightarrow',\n    '&#x2910;': '\\\\rightarrow',\n    '&#x290F;': '\\\\rightarrow',\n    '&#x290E;': '\\\\leftarrow',\n    '&#x290D;': '\\\\rightarrow',\n    '&#x290C;': '\\\\leftarrow',\n    '&#x290B;': '\\\\Downarrow',\n    '&#x290A;': '\\\\Uparrow',\n    '&#x2909;': '\\\\uparrow',\n    '&#x2908;': '\\\\downarrow',\n    '&#x2907;': '\\\\Rightarrow',\n    '&#x2906;': '\\\\Leftarrow',\n    '&#x2905;': '\\\\mapsto',\n    '&#x2904;': '\\\\nLeftrightarrow',\n    '&#x2903;': '\\\\nRightarrow',\n    '&#x2902;': '\\\\nLeftarrow',\n    '&#x2901;': '\\\\rightsquigarrow',\n    '&#x2900;': '\\\\rightsquigarrow',\n    '&#x27FF;': '\\\\rightsquigarrow',\n    '&#x27FE;': '\\\\Rightarrow',\n    '&#x27FD;': '\\\\Leftarrow',\n    '&#x27FC;': '\\\\mapsto',\n    '&#x27FB;': '\\\\leftarrow',\n    '&#x27FA;': '\\\\Longleftrightarrow',\n    '&#x27F9;': '\\\\Longrightarrow',\n    '&#x27F8;': '\\\\Longleftarrow',\n    '&#x27F7;': '\\\\leftrightarrow',\n    '&#x27F6;': '\\\\rightarrow',\n    '&#x27F5;': '\\\\leftarrow',\n    '&#x27F1;': '\\\\Downarrow',\n    '&#x27F0;': '\\\\Uparrow',\n    '&#x22B8;': '\\\\rightarrow',\n    '&#x21FF;': '\\\\leftrightarrow',\n    '&#x21FE;': '\\\\rightarrow',\n    '&#x21FD;': '\\\\leftarrow',\n    '&#x21FC;': '\\\\nleftrightarrow',\n    '&#x21FB;': '\\\\nrightarrow',\n    '&#x21FA;': '\\\\nleftarrow',\n    '&#x21F9;': '\\\\nleftrightarrow',\n    '&#x21F8;': '\\\\nrightarrow',\n    '&#x21F7;': '\\\\nleftarrow',\n    '&#x21F6;': '\\\\Rrightarrow',\n    '&#x21F5;': '',\n    '&#x21F4;': '\\\\rightarrow',\n    '&#x21F3;': '\\\\Updownarrow',\n    '&#x21F2;': '\\\\searrow',\n    '&#x21F1;': '\\\\nwarrow',\n    '&#x21F0;': '\\\\Leftarrow',\n    '&#x21EF;': '\\\\Uparrow',\n    '&#x21EE;': '\\\\Uparrow',\n    '&#x21ED;': '\\\\Uparrow',\n    '&#x21EC;': '\\\\Uparrow',\n    '&#x21EB;': '\\\\Uparrow',\n    '&#x21EA;': '\\\\Uparrow',\n    '&#x21E9;': '\\\\Downarrow',\n    '&#x21E8;': '\\\\Rightarrow',\n    '&#x21E7;': '\\\\Uparrow',\n    '&#x21E6;': '\\\\Leftarrow',\n    '&#x21E5;': '\\\\rightarrow',\n    '&#x21E4;': '\\\\leftarrow',\n    '&#x21E3;': '\\\\downarrow',\n    '&#x21E2;': '\\\\rightarrow',\n    '&#x21E1;': '\\\\uparrow',\n    '&#x21E0;': '\\\\leftarrow',\n    '&#x21DF;': '\\\\downarrow',\n    '&#x21DE;': '\\\\uparrow',\n    '&#x21DD;': '\\\\rightsquigarrow',\n    '&#x21DC;': '\\\\leftarrow',\n    '&#x21DB;': '\\\\Rrightarrow',\n    '&#x21DA;': '\\\\Lleftarrow',\n    '&#x21D9;': '\\\\swarrow',\n    '&#x21D8;': '\\\\searrow',\n    '&#x21D7;': '\\\\nearrow',\n    '&#x21D6;': '\\\\nwarrow',\n    '&#x21D5;': '\\\\Updownarrow',\n    '&#x21D4;': '\\\\Leftrightarrow',\n    '&#x21D3;': '\\\\Downarrow',\n    '&#x21D2;': '\\\\Rightarrow',\n    '&#x21D1;': '\\\\Uparrow',\n    '&#x21D0;': '\\\\Leftarrow',\n    '&#x21CF;': '\\\\nRightarrow',\n    '&#x21CE;': '\\\\nLeftrightarrow',\n    '&#x21CD;': '\\\\nLeftarrow',\n    '&#x21CC;': '\\\\rightleftharpoons',\n    '&#x21CB;': '\\\\leftrightharpoons',\n    '&#x21CA;': '\\\\downdownarrows',\n    '&#x21C9;': '\\\\rightrightarrows',\n    '&#x21C8;': '\\\\upuparrows',\n    '&#x21C7;': '\\\\leftleftarrows',\n    '&#x21C6;': '\\\\leftrightarrows',\n    '&#x21C5;': '',\n    '&#x21C4;': '\\\\rightleftarrows',\n    '&#x21C3;': '\\\\downharpoonleft',\n    '&#x21C2;': '\\\\downharpoonright',\n    '&#x21C1;': '\\\\rightharpoondown',\n    '&#x21C0;': '\\\\rightharpoonup',\n    '&#x21BF;': '\\\\upharpoonleft',\n    '&#x21BE;': '\\\\upharpoonright',\n    '&#x21BD;': '\\\\leftharpoondown',\n    '&#x21BC;': '\\\\leftharpoonup',\n    '&#x21BB;': '\\\\circlearrowright',\n    '&#x21BA;': '\\\\circlearrowleft',\n    '&#x21B9;': '\\\\leftrightarrows',\n    '&#x21B8;': '\\\\overline{\\\\nwarrow}',\n    '&#x21B7;': '\\\\curvearrowright',\n    '&#x21B6;': '\\\\curvearrowleft',\n    '&#x21B5;': '\\\\swarrow',\n    '&#x21B4;': '\\\\searrow',\n    '&#x21B3;': '\\\\Rsh',\n    '&#x21B2;': '\\\\Lsh',\n    '&#x21B1;': '\\\\Rsh',\n    '&#x21B0;': '\\\\Lsh',\n    '&#x21AF;': '\\\\swarrow',\n    '&#x21AE;': '',\n    '&#x21AD;': '\\\\leftrightsquigarrow',\n    '&#x21AC;': '\\\\looparrowright',\n    '&#x21AB;': '\\\\looparrowleft',\n    '&#x21AA;': '\\\\hookrightarrow',\n    '&#x21A9;': '\\\\hookleftarrow',\n    '&#x21A8;': '\\\\underline{\\\\updownarrow}',\n    '&#x21A7;': '\\\\downarrow',\n    '&#x21A6;': '\\\\rightarrowtail',\n    '&#x21A5;': '\\\\uparrow',\n    '&#x21A4;': '\\\\leftarrowtail',\n    '&#x21A3;': '\\\\rightarrowtail',\n    '&#x21A2;': '\\\\leftarrowtail',\n    '&#x21A1;': '\\\\downarrow',\n    '&#x21A0;': '\\\\twoheadrightarrow',\n    '&#x219F;': '\\\\uparrow',\n    '&#x219E;': '\\\\twoheadleftarrow',\n    '&#x219D;': '\\\\nearrow',\n    '&#x219C;': '\\\\nwarrow',\n    '&#x219B;': '',\n    '&#x219A;': '',\n    '&#x2199;': '\\\\swarrow',\n    '&#x2198;': '\\\\searrow',\n    '&#x2197;': '\\\\nearrow',\n    '&#x2196;': '\\\\nwarrow',\n    '&#x2195;': '\\\\updownarrow',\n    '&#x2194;': '\\\\leftrightarrow',\n    '&#x2193;': '\\\\downarrow',\n    '&#x2192;': '\\\\rightarrow',\n    '&#x2191;': '\\\\uparrow',\n    '&#x2190;': '\\\\leftarrow',\n    '|||': '\\\\left|||\\\\right.',\n    '||': '\\\\left\\\\|\\\\right.',\n    '|': '\\\\left|\\\\right.',\n    '&#x2AFE;': '',\n    '&#x2AFD;': '//',\n    '&#x2AFB;': '///',\n    '&#x2AFA;': '',\n    '&#x2AF9;': '',\n    '&#x2AF8;': '',\n    '&#x2AF7;': '',\n    '&#x2AF6;': '\\\\vdots',\n    '&#x2AF5;': '',\n    '&#x2AF4;': '',\n    '&#x2AF3;': '',\n    '&#x2AF2;': '\\\\nparallel',\n    '&#x2AF1;': '',\n    '&#x2AF0;': '',\n    '&#x2AEF;': '',\n    '&#x2AEE;': '\\\\bcancel{\\\\mid}',\n    '&#x2AED;': '',\n    '&#x2AEC;': '',\n    '&#x2AEB;': '',\n    '&#x2AEA;': '',\n    '&#x2AE9;': '',\n    '&#x2AE8;': '\\\\underline{\\\\perp}',\n    '&#x2AE7;': '\\\\overline{\\\\top}',\n    '&#x2AE6;': '',\n    '&#x2AE5;': '',\n    '&#x2AE4;': '',\n    '&#x2AE3;': '',\n    '&#x2AE2;': '',\n    '&#x2AE1;': '',\n    '&#x2AE0;': '\\\\perp',\n    '&#x2ADF;': '\\\\top',\n    '&#x2ADE;': '\\\\dashv',\n    '&#x2ADD;&#x338;': '',\n    '&#x2ADD;': '',\n    '&#x2ADB;': '\\\\pitchfork',\n    '&#x2ADA;': '',\n    '&#x2AD9;': '',\n    '&#x2AD8;': '',\n    '&#x2AD7;': '',\n    '&#x2AD6;': '',\n    '&#x2AD5;': '',\n    '&#x2AD4;': '',\n    '&#x2AD3;': '',\n    '&#x2AD2;': '',\n    '&#x2AD1;': '',\n    '&#x2AD0;': '',\n    '&#x2ACF;': '',\n    '&#x2ACE;': '',\n    '&#x2ACD;': '',\n    '&#x2ACC;': '\\\\underset{\\\\neq}{\\\\supset}',\n    '&#x2ACB;': '\\\\underset{\\\\neq}{\\\\subset}',\n    '&#x2ACA;': '\\\\underset{\\\\approx}{\\\\supset}',\n    '&#x2AC9;': '\\\\underset{\\\\approx}{\\\\subset}',\n    '&#x2AC8;': '\\\\underset{\\\\sim}{\\\\supset}',\n    '&#x2AC7;': '\\\\underset{\\\\sim}{\\\\subset}',\n    '&#x2AC6;': '\\\\supseteqq',\n    '&#x2AC5;': '\\\\subseteqq',\n    '&#x2AC4;': '\\\\dot{\\\\supseteq}',\n    '&#x2AC3;': '\\\\dot{\\\\subseteq}',\n    '&#x2AC2;': '\\\\underset{\\\\times}{\\\\supset}',\n    '&#x2AC1;': '\\\\underset{\\\\times}{\\\\subset}',\n    '&#x2AC0;': '\\\\underset{+}{\\\\supset}',\n    '&#x2ABF;': '\\\\underset{+}{\\\\subset}',\n    '&#x2ABE;': '',\n    '&#x2ABD;': '',\n    '&#x2ABC;': '\\\\gg ',\n    '&#x2ABB;': '\\\\ll',\n    '&#x2ABA;': '\\\\underset{\\\\cancel{\\\\approx}}{\\\\succ}',\n    '&#x2AB9;': '\\\\underset{\\\\cancel{\\\\approx}}{\\\\prec}',\n    '&#x2AB8;': '\\\\underset{\\\\approx}{\\\\succ}',\n    '&#x2AB7;': '\\\\underset{\\\\approx}{\\\\prec}',\n    '&#x2AB6;': '\\\\underset{\\\\cancel{=}}{\\\\succ}',\n    '&#x2AB5;': '\\\\underset{\\\\cancel{=}}{\\\\prec}',\n    '&#x2AB4;': '\\\\underset{=}{\\\\succ}',\n    '&#x2AB3;': '\\\\underset{=}{\\\\prec}',\n    '&#x2AB2;': '',\n    '&#x2AB1;': '',\n    '&#x2AAE;': '',\n    '&#x2AAD;': '\\\\underline{\\\\hcancel{>}}',\n    '&#x2AAC;': '\\\\underline{\\\\hcancel{>}}',\n    '&#x2AAB;': '\\\\hcancel{>}',\n    '&#x2AAA;': '\\\\hcancel{<}',\n    '&#x2AA9;': '',\n    '&#x2AA8;': '',\n    '&#x2AA7;': '\\\\vartriangleright',\n    '&#x2AA6;': '\\\\vartriangleleft',\n    '&#x2AA5;': '><',\n    '&#x2AA4;': '><',\n    '&#x2AA3;': '\\\\underline{\\\\ll}',\n    '&#x2AA2;&#x338;': '\\\\cancel{\\\\gg}',\n    '&#x2AA2;': '\\\\gg',\n    '&#x2AA1;&#x338;': '\\\\cancel{\\\\ll}',\n    '&#x2AA1;': '\\\\ll',\n    '&#x2AA0;': '\\\\overset{\\\\sim}{\\\\geqq}',\n    '&#x2A9F;': '\\\\overset{\\\\sim}{\\\\leqq}',\n    '&#x2A9E;': '\\\\overset{\\\\sim}{>}',\n    '&#x2A9D;': '\\\\overset{\\\\sim}{<}',\n    '&#x2A9C;': '',\n    '&#x2A9B;': '',\n    '&#x2A9A;': '\\\\overset{=}{>}',\n    '&#x2A99;': '\\\\overset{=}{<}',\n    '&#x2A98;': '',\n    '&#x2A97;': '',\n    '&#x2A96;': '',\n    '&#x2A95;': '',\n    '&#x2A94;': '',\n    '&#x2A93;': '',\n    '&#x2A92;': '\\\\underset{=}{\\\\gtrless}',\n    '&#x2A91;': '\\\\underset{=}{\\\\lessgtr}',\n    '&#x2A90;': '\\\\underset{<}{\\\\gtrsim}',\n    '&#x2A8F;': '\\\\underset{>}{\\\\lesssim}',\n    '&#x2A8E;': '\\\\underset{\\\\simeq}{>}',\n    '&#x2A8D;': '\\\\underset{\\\\simeq}{<}',\n    '&#x2A8C;': '\\\\gtreqqless',\n    '&#x2A8B;': '\\\\lesseqqgtr',\n    '&#x2A8A;': '\\\\underset{\\\\cancel{\\\\approx}}{>}',\n    '&#x2A89;': '\\\\underset{\\\\approx}{<}',\n    '&#x2A86;': '\\\\underset{\\\\approx}{>}',\n    '&#x2A85;': '\\\\underset{\\\\approx}{<}',\n    '&#x2A84;': '',\n    '&#x2A83;': '',\n    '&#x2A82;': '',\n    '&#x2A81;': '',\n    '&#x2A80;': '',\n    '&#x2A7F;': '',\n    '&#x2A7E;&#x338;': '\\\\bcancel{\\\\geq}',\n    '&#x2A7E;': '\\\\geq',\n    '&#x2A7D;&#x338;': '\\\\bcancel{\\\\leq}',\n    '&#x2A7D;': '\\\\leq',\n    '&#x2A7C;': '',\n    '&#x2A7B;': '',\n    '&#x2A7A;': '',\n    '&#x2A79;': '',\n    '&#x2A78;': '\\\\overset{\\\\dots}{\\\\equiv}',\n    '&#x2A77;': '',\n    '&#x2A76;': '===',\n    '&#x2A75;': '==',\n    '&#x2A74;': '::=',\n    '&#x2A73;': '',\n    '&#x2A72;': '\\\\underset{=}{+}',\n    '&#x2A71;': '\\\\overset{=}{+}',\n    '&#x2A70;': '\\\\overset{\\\\approx}{=}',\n    '&#x2A6F;': '\\\\overset{\\\\wedge}{=}',\n    '&#x2A6E;': '\\\\overset{*}{=}',\n    '&#x2A6D;': '\\\\dot{\\\\approx}',\n    '&#x2A6C;': '',\n    '&#x2A6B;': '',\n    '&#x2A6A;': '\\\\dot{\\\\sim}',\n    '&#x2A69;': '',\n    '&#x2A68;': '',\n    '&#x2A67;': '\\\\dot{\\\\equiv}',\n    '&#x2A66;': '\\\\underset{\\\\cdot}{=}',\n    '&#x2A65;': '',\n    '&#x2A64;': '',\n    '&#x2A63;': '\\\\underset{=}{\\\\vee}',\n    '&#x2A62;': '\\\\overset{=}{\\\\vee}',\n    '&#x2A61;': 'ul(vv)',\n    '&#x2A60;': '\\\\underset{=}{\\\\wedge}',\n    '&#x2A5F;': '\\\\underline{\\\\wedge}',\n    '&#x2A5E;': '\\\\overset{=}{\\\\wedge}',\n    '&#x2A5D;': '\\\\hcancel{\\\\vee}',\n    '&#x2A5C;': '\\\\hcancel{\\\\wedge}',\n    '&#x2A5B;': '',\n    '&#x2A5A;': '',\n    '&#x2A59;': '',\n    '&#x2A58;': '\\\\vee',\n    '&#x2A57;': '\\\\wedge',\n    '&#x2A56;': '',\n    '&#x2A55;': '',\n    '&#x2A54;': '',\n    '&#x2A53;': '',\n    '&#x2A52;': '\\\\dot{\\\\vee}',\n    '&#x2A51;': '\\\\dot{\\\\wedge}',\n    '&#x2A50;': '',\n    '&#x2A4F;': '',\n    '&#x2A4E;': '',\n    '&#x2A4D;': '\\\\overline{\\\\cap}',\n    '&#x2A4C;': '\\\\overline{\\\\cup}',\n    '&#x2A4B;': '',\n    '&#x2A4A;': '',\n    '&#x2A49;': '',\n    '&#x2A48;': '',\n    '&#x2A47;': '',\n    '&#x2A46;': '',\n    '&#x2A45;': '',\n    '&#x2A44;': '',\n    '&#x2A43;': '\\\\overline{\\\\cap}',\n    '&#x2A42;': '\\\\overline{\\\\cup}',\n    '&#x2A41;': '',\n    '&#x2A40;': '',\n    '&#x2A3E;': '',\n    '&#x2A3D;': '\\\\llcorner',\n    '&#x2A3C;': '\\\\lrcorner',\n    '&#x2A3B;': '',\n    '&#x2A3A;': '',\n    '&#x2A39;': '',\n    '&#x2A38;': '',\n    '&#x2A37;': '',\n    '&#x2A36;': '\\\\hat{\\\\otimes}',\n    '&#x2A35;': '',\n    '&#x2A34;': '',\n    '&#x2A33;': '',\n    '&#x2A32;': '\\\\underline{\\\\times}',\n    '&#x2A31;': '\\\\underline{\\\\times}',\n    '&#x2A30;': '\\\\dot{\\\\times}',\n    '&#x2A2E;': '',\n    '&#x2A2D;': '',\n    '&#x2A2C;': '',\n    '&#x2A2B;': '',\n    '&#x2A2A;': '',\n    '&#x2A29;': '',\n    '&#x2A28;': '',\n    '&#x2A27;': '',\n    '&#x2A26;': '\\\\underset{\\\\sim}{+}',\n    '&#x2A25;': '\\\\underset{\\\\circ}{+}',\n    '&#x2A24;': '\\\\overset{\\\\sim}{+}',\n    '&#x2A23;': '\\\\hat{+}',\n    '&#x2A22;': '\\\\dot{+}',\n    '&#x2A21;': '\\\\upharpoonright',\n    '&#x2A20;': '>>',\n    '&#x2A1F;': '',\n    '&#x2A1E;': '\\\\triangleleft',\n    '&#x2A1D;': '\\\\bowtie',\n    '&#x29FF;': '',\n    '&#x29FE;': '+',\n    '&#x29FB;': '\\\\hcancel{|||}',\n    '&#x29FA;': '\\\\hcancel{||}',\n    '&#x29F9;': '\\\\backslash',\n    '&#x29F8;': '/',\n    '&#x29F7;': 'hcancel{\\backslash}',\n    '&#x29F6;': '',\n    '&#x29F5;': '\\\\backslash',\n    '&#x29F2;': '\\\\Phi',\n    '&#x29F1;': '',\n    '&#x29F0;': '',\n    '&#x29EE;': '',\n    '&#x29ED;': '',\n    '&#x29EC;': '',\n    '&#x29EB;': '\\\\lozenge',\n    '&#x29EA;': '',\n    '&#x29E9;': '',\n    '&#x29E8;': '',\n    '&#x29E7;': '\\\\ddagger',\n    '&#x29E2;': '\\\\sqcup\\\\sqcup',\n    '&#x29E1;': '',\n    '&#x29E0;': '\\\\square',\n    '&#x29DE;': '',\n    '&#x29DD;': '',\n    '&#x29DC;': '',\n    '&#x29DB;': '\\\\{\\\\{',\n    '&#x29D9;': '\\\\{',\n    '&#x29D8;': '\\\\}',\n    '&#x29D7;': '',\n    '&#x29D6;': '',\n    '&#x29D5;': '\\\\bowtie',\n    '&#x29D4;': '\\\\bowtie',\n    '&#x29D3;': '\\\\bowtie',\n    '&#x29D2;': '\\\\bowtie',\n    '&#x29D1;': '\\\\bowtie',\n    '&#x29D0;&#x338;': '| \\\\not\\\\triangleright',\n    '&#x29D0;': '| \\\\triangleright',\n    '&#x29CF;&#x338;': '\\\\not\\\\triangleleft |',\n    '&#x29CF;': '\\\\triangleleft |',\n    '&#x29CE;': '',\n    '&#x29CD;': '\\\\triangle',\n    '&#x29CC;': '',\n    '&#x29CB;': '\\\\underline{\\\\triangle}',\n    '&#x29CA;': '\\\\dot{\\\\triangle}',\n    '&#x29C9;': '',\n    '&#x29C8;': '\\\\boxed{\\\\circ}',\n    '&#x29C7;': '\\\\boxed{\\\\circ}',\n    '&#x29C6;': '\\\\boxed{\\\\rightarrow}',\n    '&#x29C5;': '\\\\bcancel{\\\\square}',\n    '&#x29C4;': '\\\\cancel{\\\\square}',\n    '&#x29C3;': '\\\\odot',\n    '&#x29C2;': '\\\\odot',\n    '&#x29BF;': '\\\\odot',\n    '&#x29BE;': '\\\\odot',\n    '&#x29BD;': '\\\\varnothing',\n    '&#x29BC;': '\\\\oplus',\n    '&#x29BB;': '\\\\otimes',\n    '&#x29BA;': '',\n    '&#x29B9;': '\\\\varnothing',\n    '&#x29B8;': '\\\\varnothing',\n    '&#x29B7;': '\\\\ominus',\n    '&#x29B6;': '\\\\ominus',\n    '&#x29B5;': '\\\\ominus',\n    '&#x29B4;': '\\\\vec{\\\\varnothing}',\n    '&#x29B3;': '\\\\vec{\\\\varnothing}',\n    '&#x29B2;': '\\\\dot{\\\\varnothing}',\n    '&#x29B1;': '\\\\overline{\\\\varnothing}',\n    '&#x29B0;': '\\\\varnothing',\n    '&#x29AF;': '',\n    '&#x29AE;': '',\n    '&#x29AD;': '',\n    '&#x29AC;': '',\n    '&#x29AB;': '',\n    '&#x29AA;': '',\n    '&#x29A9;': '',\n    '&#x29A8;': '',\n    '&#x29A7;': '',\n    '&#x29A6;': '',\n    '&#x29A5;': '',\n    '&#x29A4;': '',\n    '&#x29A3;': '',\n    '&#x29A2;': '',\n    '&#x29A1;': '\\\\not\\\\lor',\n    '&#x29A0;': '\\\\bcancel{>}',\n    '&#x2982;': ':',\n    '&#x2981;': '\\\\circ',\n    '&#x2758;': '|',\n    '&#x25B2;': '\\\\bigtriangleup',\n    '&#x22FF;': '\\\\Epsilon',\n    '&#x22FE;': '\\\\overline{\\\\ni}',\n    '&#x22FD;': '\\\\overline{\\\\ni}',\n    '&#x22FC;': '\\\\in',\n    '&#x22FB;': '\\\\in',\n    '&#x22FA;': '\\\\in',\n    '&#x22F9;': '\\\\underline{\\\\in}',\n    '&#x22F8;': '\\\\underline{\\\\in}',\n    '&#x22F7;': '\\\\overline{\\\\in}',\n    '&#x22F6;': '\\\\overline{\\\\in}',\n    '&#x22F5;': '\\\\dot{\\\\in}',\n    '&#x22F4;': '\\\\in',\n    '&#x22F3;': '\\\\in',\n    '&#x22F2;': '\\\\in',\n    '&#x22F0;': '\\\\ddots',\n    '&#x22E9;': '\\\\underset{\\\\sim}{\\\\succ}',\n    '&#x22E8;': '\\\\underset{\\\\sim}{\\\\prec}',\n    '&#x22E7;': '\\\\underset{\\\\not\\\\sim}{>}',\n    '&#x22E6;': '\\\\underset{\\\\not\\\\sim}{<}',\n    '&#x22E5;': '\\\\not\\\\sqsupseteq',\n    '&#x22E4;': '\\\\not\\\\sqsubseteq',\n    '&#x22E3;': '\\\\not\\\\sqsupseteq',\n    '&#x22E2;': '\\\\not\\\\sqsubseteq',\n    '&#x22E1;': '\\\\nsucc',\n    '&#x22E0;': '\\\\nprec',\n    '&#x22DF;': '\\\\succ',\n    '&#x22DE;': '\\\\prec',\n    '&#x22DD;': '\\\\overline{>}',\n    '&#x22DC;': '\\\\overline{<}',\n    '&#x22DB;': '\\\\underset{>}{\\\\leq}',\n    '&#x22DA;': '\\\\underset{<}{\\\\geq}',\n    '&#x22D5;': '\\\\#',\n    '&#x22D3;': '\\\\cup',\n    '&#x22D2;': '\\\\cap',\n    '&#x22D1;': '\\\\supset',\n    '&#x22D0;': '\\\\subset',\n    '&#x22CF;': '\\\\wedge',\n    '&#x22CE;': '\\\\vee',\n    '&#x22CD;': '\\\\simeq',\n    '&#x22C8;': '\\\\bowtie',\n    '&#x22C7;': '\\\\ast',\n    '&#x22C6;': '\\\\star',\n    '&#x22C4;': '\\\\diamond',\n    '&#x22BF;': '\\\\triangle',\n    '&#x22BE;': '\\\\measuredangle',\n    '&#x22BD;': '\\\\overline{\\\\lor}',\n    '&#x22BC;': '\\\\overline{\\\\land}',\n    '&#x22BB;': '\\\\underline{\\\\lor}',\n    '&#x22BA;': '\\\\top',\n    '&#x22B9;': '',\n    '&#x22B7;': '\\\\circ\\\\multimap',\n    '&#x22B6;': '\\\\circ\\\\multimap',\n    '&#x22B3;': '\\\\triangleright',\n    '&#x22B2;': '\\\\triangleleft',\n    '&#x22B1;': '\\\\succ',\n    '&#x22B0;': '\\\\prec',\n    '&#x22AB;': '|\\\\models',\n    '&#x22AA;': '|\\\\models',\n    '&#x22A7;': '\\\\models',\n    '&#x22A6;': '\\\\vdash',\n    '&#x229D;': '\\\\ominus',\n    '&#x229C;': '\\\\ominus',\n    '&#x229B;': '\\\\odot',\n    '&#x229A;': '\\\\odot',\n    '&#x2294;': '\\\\sqcup',\n    '&#x2293;': '\\\\sqcap',\n    '&#x2292;': '\\\\sqsupseteq',\n    '&#x2291;': '\\\\sqsubseteq',\n    '&#x2290;&#x338;': '\\\\not\\\\sqsupset',\n    '&#x2290;': '\\\\sqsupset',\n    '&#x228F;&#x338;': '\\\\not\\\\sqsubset',\n    '&#x228F;': '\\\\sqsubset',\n    '&#x228E;': '\\\\cup',\n    '&#x228D;': '\\\\cup',\n    '&#x228C;': '\\\\cup',\n    '&#x227F;&#x338;': '\\\\not\\\\succsim',\n    '&#x227F;': '\\\\succsim',\n    '&#x227E;': '\\\\precsim',\n    '&#x2279;': '\\\\not\\\\overset{>}{<}',\n    '&#x2278;': '\\\\not\\\\overset{>}{<}',\n    '&#x2277;': '\\\\overset{>}{<}',\n    '&#x2276;': '\\\\overset{<}{>}',\n    '&#x2275;': '\\\\not\\\\geg',\n    '&#x2274;': '\\\\not\\\\leq',\n    '&#x2273;': '\\\\geg',\n    '&#x2272;': '\\\\leq',\n    '&#x226C;': '',\n    '&#x2267;': '\\\\geg',\n    '&#x2266;&#x338;': '\\\\not\\\\leq',\n    '&#x2266;': '\\\\leq',\n    '&#x2263;': '\\\\overset{=}{=} ',\n    '&#x225E;': '\\\\overset{m}{=} ',\n    '&#x225D;': '\\\\overset{def}{=}',\n    '&#x2258;': '=',\n    '&#x2256;': '=',\n    '&#x2255;': '=:',\n    '&#x2253;': '\\\\doteq',\n    '&#x2252;': '\\\\doteq',\n    '&#x2251;': '\\\\doteq',\n    '&#x2250;': '\\\\doteq',\n    '&#x224F;&#x338;': '',\n    '&#x224F;': '',\n    '&#x224E;&#x338;': '',\n    '&#x224E;': '',\n    '&#x224C;': '\\\\approx',\n    '&#x224B;': '\\\\approx',\n    '&#x224A;': '\\\\approx',\n    '&#x2242;&#x338;': '\\\\neq',\n    '&#x2242;': '=',\n    '&#x223F;': '\\\\sim',\n    '&#x223E;': '\\\\infty',\n    '&#x223D;&#x331;': '\\\\sim',\n    '&#x223D;': '\\\\sim',\n    '&#x223B;': '\\\\sim',\n    '&#x223A;': ':-:',\n    '&#x2239;': '-:',\n    '&#x2238;': '\\\\bot',\n    '&#x2237;': '::',\n    '&#x2236;': ':',\n    '&#x2223;': '|',\n    '&#x221F;': '\\\\llcorner',\n    '&#x2219;': '\\\\cdot',\n    '&#x2218;': '\\\\circ',\n    '&#x2217;': '*',\n    '&#x2215;': '/',\n    '&#x220E;': '\\\\square',\n    '&#x220D;': '\\\\ni',\n    '&#x220A;': '\\\\in',\n    '&#x2206;': '\\\\Delta',\n    '&#x2044;': '/',\n    '&#x2AB0;&#x338;': '\\\\nsucceq',\n    '&#x2AB0;': '\\\\succeq',\n    '&#x2AAF;&#x338;': '\\\\npreceq',\n    '&#x2AAF;': '\\\\preceq',\n    '&#x2A88;': '\\\\ngeqslant',\n    '&#x2A87;': '\\\\nleqslant',\n    '&#x29F3;': '\\\\Phi',\n    '&#x29E6;': '\\\\models',\n    '&#x29E5;': '\\\\not\\\\equiv',\n    '&#x29E4;': '\\\\approx\\\\neq',\n    '&#x29E3;': '\\\\neq',\n    '&#x29C1;': '\\\\circle',\n    '&#x29C0;': '\\\\circle',\n    '&#x25E6;': '\\\\circle',\n    '&#x25D7;': '\\\\circle',\n    '&#x25D6;': '\\\\circle',\n    '&#x25CF;': '\\\\circle',\n    '&#x25CE;': '\\\\circledcirc',\n    '&#x25CD;': '\\\\circledcirc',\n    '&#x25CC;': '\\\\circledcirc',\n    '&#x25C9;': '\\\\circledcirc',\n    '&#x25C8;': '\\\\diamond',\n    '&#x25C7;': '\\\\diamond',\n    '&#x25C6;': '\\\\diamond',\n    '&#x25C5;': '\\\\triangleleft',\n    '&#x25C4;': '\\\\triangleleft',\n    '&#x25C3;': '\\\\triangleleft',\n    '&#x25C2;': '\\\\triangleleft',\n    '&#x25C1;': '\\\\triangleleft',\n    '&#x25C0;': '\\\\triangleleft',\n    '&#x25BF;': '\\\\triangledown',\n    '&#x25BE;': '\\\\triangledown',\n    '&#x25BD;': '\\\\triangledown',\n    '&#x25BC;': '\\\\triangledown',\n    '&#x25B9;': '\\\\triangleright',\n    '&#x25B8;': '\\\\triangleright',\n    '&#x25B7;': '\\\\triangleright',\n    '&#x25B6;': '\\\\triangleright',\n    '&#x25B5;': '\\\\triangle',\n    '&#x25B4;': '\\\\triangle',\n    '&#x25B3;': '\\\\triangle',\n    '&#x25B1;': '\\\\square',\n    '&#x25B0;': '\\\\square',\n    '&#x25AF;': '\\\\square',\n    '&#x25AE;': '\\\\square',\n    '&#x25AD;': '\\\\square',\n    '&#x25AB;': '\\\\square',\n    '&#x25AA;': '\\\\square',\n    '&#x25A1;': '\\\\square',\n    '&#x25A0;': '\\\\square',\n    '&#x22ED;': '\\\\not\\\\triangleright',\n    '&#x22EC;': '\\\\not\\\\triangleleft',\n    '&#x22EB;': '\\\\not\\\\triangleright',\n    '&#x22EA;': '\\\\not\\\\triangleleft',\n    '&#x22D9;': '\\\\ggg',\n    '&#x22D8;': '\\\\lll',\n    '&#x22D7;': '*>',\n    '&#x22D6;': '<*',\n    '&#x22D4;': '\\\\pitchfork',\n    '&#x22CC;': '',\n    '&#x22CB;': '',\n    '&#x22CA;': '\\\\rtimes',\n    '&#x22C9;': '\\\\ltimes',\n    '&#x22B5;': '\\\\triangleright',\n    '&#x22B4;': '',\n    '&#x22A5;': '\\\\bot',\n    '&#x2281;': '\\\\nsucc',\n    '&#x2280;': '\\\\preceq',\n    '&#x227D;': '\\\\succeq',\n    '&#x227C;': '\\\\preceq',\n    '&#x227B;': '\\\\succ',\n    '&#x227A;': '\\\\prec',\n    '&#x2271;': '\\\\geq/',\n    '&#x2270;': '\\\\leq/',\n    '&#x226D;': '\\\\neq',\n    '&#x226B;&#x338;': '\\\\not\\\\gg',\n    '&#x226B;': '\\\\gg',\n    '&#x226A;&#x338;': '\\\\not\\\\ll',\n    '&#x226A;': '\\\\ll',\n    '&#x2269;': '\\\\ngeqslant',\n    '&#x2268;': '\\\\nleqslant',\n    '&#x2261;': '\\\\equiv',\n    '&#x225F;': '\\\\doteq',\n    '&#x225C;': '\\\\triangleq',\n    '&#x225B;': '\\\\doteq',\n    '&#x225A;': '\\\\triangleq',\n    '&#x2259;': '\\\\triangleq',\n    '&#x2257;': '\\\\doteq',\n    '&#x2254;': ':=',\n    '&#x224D;': '\\\\asymp',\n    '&#x2247;': '\\\\ncong',\n    '&#x2246;': '\\\\ncong',\n    '&#x2245;': '\\\\cong',\n    '&#x2244;': '\\\\not\\\\simeq',\n    '&#x2243;': '\\\\simeq',\n    '&#x2241;': '\\\\not\\\\sim',\n    '&#x2226;': '\\\\not\\\\parallel',\n    '&#x2225;': '\\\\parallel',\n    '&#x2224;': '\\\\not|',\n    '&#x221D;': '\\\\propto',\n    '==': '==',\n    '=': '=',\n    ':=': ':=',\n    '/=': '=',\n    '-=': '-=',\n    '+=': '+=',\n    '*=': '*=',\n    '!=': '!=',\n    '&#x2260;': '\\\\neq',\n    '&#x2262;': '\\\\equiv /',\n    '&#x2249;': '\\\\approx /',\n    '&#x223C;': 'sim',\n    '&#x2248;': '\\\\approx',\n    '&#x226E;': '</',\n    '&lt;': '<',\n    '&#x226F;': '>/',\n    '>=': '>=',\n    '>': '>',\n    '&#x2265;': '\\\\geq',\n    '&#x2264;': '\\\\leq',\n    '&lt;=': '<=',\n    '&#x228B;': '\\\\supsetneq',\n    '&#x228A;': '\\\\subsetneq',\n    '&#x2289;': '\\\\nsupseteq',\n    '&#x2288;': '\\\\nsubseteq',\n    '&#x2287;': '\\\\supseteq',\n    '&#x2286;': '\\\\subseteq',\n    '&#x2285;': '\\\\not\\\\supset',\n    '&#x2284;': '\\\\not\\\\subset',\n    '&#x2283;&#x20D2;': '\\\\supset |',\n    '&#x2283;': '\\\\supset',\n    '&#x2282;&#x20D2;': '\\\\subset |',\n    '&#x2282;': '\\\\subset',\n    '&#x220C;': '\\\\not\\\\in',\n    '&#x2209;': '\\\\notin',\n    '&#x2208;': '\\\\in',\n    '&#x2201;': 'C',\n    '&#x2204;': '\\\\nexists',\n    '&#x2203;': '\\\\exists',\n    '&#x2200;': '\\\\forall',\n    '&#x2227;': '\\\\land',\n    '&amp;&amp;': '\\\\&\\\\&',\n    '&#x2228;': '\\\\lor',\n    '&#x22AF;': '\\\\cancel{\\\\vDash}',\n    '&#x22AE;': '\\\\cancel{\\\\Vdash}',\n    '&#x22AD;': '\\\\nvDash',\n    '&#x22AC;': '\\\\nvDash',\n    '&#x22A9;': '\\\\Vdash',\n    '&#x22A8;': '\\\\vDash',\n    '&#x22A4;': '\\\\top',\n    '&#x22A3;': '\\\\dashv',\n    '&#x22A2;': '\\\\vdash',\n    '&#x220B;': '\\\\ni',\n    '&#x22F1;': '\\\\ddots',\n    '&#x22EF;': '\\\\hdots',\n    '&#x22EE;': '\\\\vdots',\n    '&#x2026;': '\\\\hdots',\n    '&#x3F6;': '\\\\ni',\n    ':': ':',\n    '...': '\\\\cdots',\n    '..': '..',\n    '->': '->',\n    '&#x2235;': '\\\\because',\n    '&#x2234;': '\\\\therefore ',\n    '&#x2063;': '',\n    ',': ',',\n    ';': ';',\n    '&#x29FD;': '\\\\}',\n    '&#x29FC;': '\\\\{',\n    '&#x2998;': '\\\\]',\n    '&#x2997;': '\\\\[',\n    '&#x2996;': '\\\\ll',\n    '&#x2995;': '\\\\gg',\n    '&#x2994;': '\\\\gg',\n    '&#x2993;': '\\\\ll',\n    '&#x2992;': '\\\\gg',\n    '&#x2991;': '\\\\ll',\n    '&#x2990;': '\\\\]',\n    '&#x298F;': '\\\\]',\n    '&#x298E;': '\\\\]',\n    '&#x298D;': '\\\\[',\n    '&#x298C;': '\\\\[',\n    '&#x298B;': '\\\\]',\n    '&#x298A;': '\\\\triangleright',\n    '&#x2989;': '\\\\triangleleft',\n    '&#x2988;': '|\\\\)',\n    '&#x2987;': '\\\\(|',\n    '&#x2986;': '|\\\\)',\n    '&#x2985;': '\\\\(\\\\(',\n    '&#x2984;': '|\\\\}',\n    '&#x2983;': '\\\\{|',\n    '&#x2980;': '\\\\||',\n    '&#x27EF;': '\\\\left. \\\\right]',\n    '&#x27EE;': '\\\\left[ \\\\right.',\n    '&#x27ED;': '\\\\left. \\\\right]]',\n    '&#x27EC;': '\\\\left[[ \\\\right.',\n    '&#x27EB;': '\\\\gg',\n    '&#x27EA;': '\\\\ll',\n    '&#x27E9;': '\\\\rangle',\n    '&#x27E8;': '\\\\langle',\n    '&#x27E7;': '\\\\left. \\\\right]]',\n    '&#x27E6;': '\\\\left[[ \\\\right.',\n    '&#x2773;': '\\\\left.\\\\right)',\n    '&#x2772;': '\\\\left(\\\\right.',\n    '&#x232A;': '\\\\rangle',\n    '&#x2329;': '\\\\langle',\n    '&#x230B;': '\\\\rfloor',\n    '&#x230A;': '\\\\lfloor',\n    '&#x2309;': '\\\\rceil',\n    '&#x2308;': '\\\\lceil',\n    '&#x2016;': '\\\\parallel',\n    '}': '\\\\left.\\\\right\\\\}',\n    '{': '\\\\left\\\\{\\\\right.',\n    ']': '\\\\left]\\\\right.',\n    '[': '\\\\left[\\\\right.',\n    ')': '\\\\left.\\\\right)',\n    '(': '\\\\left(\\\\right.',\n    '&#x201D;': '\"',\n    '&#x201C;': '``',\n    '&#x2019;': \"'\",\n    '&#x2018;': '`',\n    '%CE%B1': '\\\\alpha',\n    '%CE%B2': '\\\\beta',\n    '%CE%B3': '\\\\gamma',\n    '%CE%93': '\\\\Gamma',\n    '%CE%B4': '\\\\delta',\n    '%CE%94': '\\\\Delta',\n    '%CF%B5': '\\\\epsilon',\n    '%CE%B6': '\\\\zeta',\n    '%CE%B7': '\\\\eta',\n    '%CE%B8': '\\\\theta',\n    '%CE%98': '\\\\Theta',\n    '%CE%B9': '\\\\iota',\n    '%CE%BA': '\\\\kappa',\n    '%CE%BB': '\\\\lambda',\n    '%CE%BC': '\\\\mu',\n    '%CE%BD': '\\\\nu',\n    '%CE%BF': '\\\\omicron',\n    '%CF%80': '\\\\pi',\n    '%CE%A0': '\\\\Pi',\n    '%CF%81': '\\\\pho',\n    '%CF%83': '\\\\sigma',\n    '%CE%A3': '\\\\Sigma',\n    '%CF%84': '\\\\tau',\n    '%CF%85': '\\\\upsilon',\n    '%CE%A5': '\\\\Upsilon',\n    '%CF%95': '\\\\phi',\n    '%CE%A6': '\\\\Phi',\n    '%CF%87': '\\\\chi',\n    '%CF%88': '\\\\psi',\n    '%CE%A8': '\\\\Psi',\n    '%CF%89': '\\\\omega',\n    '%CE%A9': '\\\\Omega',\n};\n\n/**\n * Lookup table mapping math operators, keyed by their decoded unicode glyph\n * (e.g. `∑`), to the equivalent LaTeX command. Consumed by the `<mo>` converter\n * to translate operator content into LaTeX.\n */\nconst allMathOperatorsByGlyph = {\n    _: '\\\\underline',\n    '⏡': '\\\\underbrace',\n    '⏠': '\\\\overbrace',\n    '⏟': '\\\\underbrace',\n    '⏞': '\\\\overbrace',\n    '⏝': '\\\\underbrace',\n    '⏜': '\\\\overbrace',\n    '⎵': '\\\\underbrace',\n    '⎴': '\\\\overbrace',\n    '⃜': '\\\\square',\n    '⃛': '\\\\square',\n    '⁤': '',\n    '⁗': \"''''\",\n    '‾': '\\\\overline',\n    '‷': '```',\n    '‶': '``',\n    '‵': '`',\n    '‴': \"'''\",\n    '″': \"''\",\n    '‟': '``',\n    '„': ',,',\n    '‛': '`',\n    '‚': ',',\n    '^': '\\\\hat',\n    '˷': '\\\\sim',\n    '˝': '\\\\sim',\n    '˜': '\\\\sim',\n    '˚': '\\\\circ',\n    '˙': '\\\\cdot',\n    '˘': ' ',\n    ˍ: '\\\\_',\n    ˋ: 'ˋ',\n    ˊ: 'ˊ',\n    ˉ: 'ˉ',\n    ˇ: '',\n    ˆ: '\\\\hat',\n    º: 'o',\n    '¹': '1',\n    '¸': ',',\n    '´': '´',\n    '³': '3',\n    '²': '2',\n    '°': '\\\\circ',\n    '¯': '\\\\bar',\n    ª: 'a',\n    '↛': '\\\\nrightarrow',\n    '¨': '\\\\cdot\\\\cdot',\n    '~': '\\\\sim',\n    '`': '`',\n    '--': '--',\n    '++': '++',\n    '&': '\\\\&',\n    '∜': '\\\\sqrt[4]{}',\n    '∛': '\\\\sqrt[3]{}',\n    '√': '\\\\sqrt{}',\n    ⅆ: 'd',\n    ⅅ: '\\\\mathbb{D}',\n    '?': '?',\n    '@': '@',\n    '//': '//',\n    '!!': '!!',\n    '!': '!',\n    '♯': '\\\\#',\n    '♮': '',\n    '♭': '',\n    '′': \"'\",\n    '<>': '<>',\n    '**': '\\\\star\\\\star',\n    '∇': '\\\\nabla',\n    '∂': '\\\\partial',\n    '⊙': '\\\\bigodot',\n    '¬': '\\\\neg',\n    '∢': '\\\\measuredangle',\n    '∡': '\\\\measuredangle',\n    '∠': '\\\\angle',\n    '÷': '\\\\div',\n    '/': '/',\n    '∖': '\\\\backslash',\n    '\\\\': '\\\\backslash',\n    '%': '\\\\%',\n    '⊗': '\\\\bigotimes',\n    '·': '\\\\cdot',\n    '⨿': '\\\\coprod',\n    '⨯': '\\\\times',\n    '⋅': '\\\\cdot',\n    '⊡': '\\\\boxdot',\n    '⊠': '\\\\boxtimes',\n    '⁢': '',\n    '⁡': '',\n    '⁃': '-',\n    '•': '\\\\cdot',\n    '.': '.',\n    '*': '\\\\star',\n    '∪': '\\\\cup',\n    '∩': '\\\\cap',\n    '∐': '\\\\coprod',\n    '∏': '\\\\prod',\n    '≀': '',\n    '⫿': '',\n    '⫼': '\\\\mid\\\\mid\\\\mid',\n    '⨉': '\\\\times',\n    '⨈': '',\n    '⨇': '',\n    '⨆': '\\\\sqcup',\n    '⨅': '\\\\sqcap',\n    '⨂': '\\\\otimes',\n    '⨀': '\\\\odot',\n    '⋂': '\\\\cap',\n    '⋁': '\\\\vee',\n    '⋀': '\\\\wedge',\n    '⨄': '\\\\uplus',\n    '⨃': '\\\\cup',\n    '⋃': '\\\\cup',\n    '⨜': '\\\\underline{\\\\int}',\n    '⨛': '\\\\overline{\\\\int}',\n    '⨚': '\\\\int',\n    '⨙': '\\\\int',\n    '⨘': '\\\\int',\n    '⨗': '\\\\int',\n    '⨖': '\\\\oint',\n    '⨕': '\\\\oint',\n    '⨔': '\\\\int',\n    '⨓': '\\\\int',\n    '⨒': '\\\\int',\n    '⨑': '\\\\int',\n    '⨐': '\\\\int',\n    '⨏': '\\\\bcancel{\\\\int}',\n    '⨎': '',\n    '⨍': '\\\\hcancel{\\\\int}',\n    '⨌': '\\\\iiiint',\n    '∳': '\\\\oint',\n    '∲': '\\\\oint',\n    '∱': '\\\\int',\n    '∰': '\\\\oiint',\n    '∯': '\\\\oiint',\n    '∮': '\\\\oint',\n    '∫': '\\\\int',\n    '⨁': '\\\\oplus',\n    '⊘': '\\\\oslash',\n    '⊖': '\\\\ominus',\n    '⊕': '\\\\oplus',\n    '∭': '\\\\iiint',\n    '∬': '\\\\iint',\n    '⨋': '',\n    '⨊': '',\n    '∑': '\\\\sum',\n    '⊟': '\\\\boxminus',\n    '⊞': '\\\\boxplus',\n    '∔': '\\\\dot{+}',\n    '∓': '+-',\n    '−': '-',\n    '±': '\\\\pm',\n    '-': '-',\n    '+': '+',\n    '⭆': '\\\\Rrightarrow',\n    '⭅': '\\\\Lleftarrow',\n    '⧴': ':\\\\rightarrow',\n    '⧯': '',\n    '⧟': '\\\\bullet-\\\\bullet',\n    '⦟': '\\\\angle',\n    '⦞': '\\\\measuredangle',\n    '⦝': '\\\\measuredangle',\n    '⦜': '\\\\perp',\n    '⦛': '\\\\measuredangle',\n    '⦚': '',\n    '⦙': '\\\\vdots',\n    '⥿': '',\n    '⥾': '',\n    '⥽': '\\\\prec',\n    '⥼': '\\\\succ',\n    '⥻': '\\\\underset{\\\\rightarrow}{\\\\supset}',\n    '⥺': '',\n    '⥹': '\\\\underset{\\\\rightarrow}{\\\\subset}',\n    '⥸': '\\\\underset{\\\\rightarrow}{>}',\n    '⥷': '',\n    '⥶': '\\\\underset{\\\\leftarrow}{<}',\n    '⥵': '\\\\underset{\\\\approx}{\\\\rightarrow}',\n    '⥴': '\\\\underset{\\\\sim}{\\\\rightarrow}',\n    '⥳': '\\\\underset{\\\\sim}{\\\\leftarrow}',\n    '⥲': '\\\\overset{\\\\sim}{\\\\rightarrow}',\n    '⥱': '\\\\overset{=}{\\\\rightarrow}',\n    '⥰': '',\n    '⥯': '',\n    '⥮': '',\n    '⥭': '\\\\overline{\\\\rightharpoondown}',\n    '⥬': '\\\\underline{\\\\rightharpoonup}',\n    '⥫': '\\\\overline{\\\\leftharpoondown}',\n    '⥪': '\\\\underline{\\\\leftharpoonup}',\n    '⥩': '\\\\rightleftharpoons',\n    '⥨': '\\\\rightleftharpoons',\n    '⥧': '\\\\rightleftharpoons',\n    '⥦': '\\\\rightleftharpoons',\n    '⥥': '\\\\Downarrow',\n    '⥤': '\\\\Rightarrow',\n    '⥣': '\\\\Uparrow',\n    '⥢': '\\\\Leftarrow',\n    '⥡': '\\\\downarrow',\n    '⥠': '\\\\uparrow',\n    '⥟': '\\\\rightarrow',\n    '⥞': '\\\\leftarrow',\n    '⥝': '\\\\downarrow',\n    '⥜': '\\\\uparrow',\n    '⥛': '\\\\rightarrow',\n    '⥚': '\\\\leftarrow',\n    '⥙': '\\\\downarrow',\n    '⥘': '\\\\uparrow',\n    '⥗': '\\\\rightarrow',\n    '⥖': '\\\\leftarrow',\n    '⥕': '\\\\downarrow',\n    '⥔': '\\\\uparrow',\n    '⥓': '\\\\rightarrow',\n    '⥒': '\\\\leftarrow',\n    '⥑': '\\\\updownarrow',\n    '⥐': '\\\\leftrightarrow',\n    '⥏': '\\\\updownarrow',\n    '⥎': '\\\\leftrightarrow',\n    '⥍': '\\\\updownarrow',\n    '⥌': '\\\\updownarrow',\n    '⥋': '\\\\leftrightarrow',\n    '⥊': '\\\\leftrightarrow',\n    '⥉': '',\n    '⥈': '\\\\leftrightarrow',\n    '⥇': '\\\\nrightarrow',\n    '⥆': '',\n    '⥅': '',\n    '⥄': '\\\\rightleftarrows',\n    '⥃': '\\\\leftrightarrows',\n    '⥂': '\\\\rightleftarrows',\n    '⥁': '\\\\circlearrowright',\n    '⥀': '\\\\circlearrowleft',\n    '⤿': '\\\\rightarrow',\n    '⤾': '\\\\leftarrow',\n    '⤽': '\\\\leftarrow',\n    '⤼': '\\\\rightarrow',\n    '⤻': '\\\\rightarrow',\n    '⤺': '\\\\leftarrow',\n    '⤹': '\\\\downarrow',\n    '⤸': '\\\\downarrow',\n    '⤷': '\\\\Rsh',\n    '⤶': '\\\\Lsh',\n    '⤵': '\\\\downarrow',\n    '⤴': '\\\\uparrow',\n    '⤳': '\\\\rightarrow',\n    '⤲': '\\\\leftarrow',\n    '⤱': ' ',\n    '⤰': ' ',\n    '⤯': ' ',\n    '⤮': ' ',\n    '⤭': ' ',\n    '⤬': '\\\\times',\n    '⤫': '\\\\times',\n    '⤪': ' ',\n    '⤩': ' ',\n    '⤨': ' ',\n    '⤧': ' ',\n    '⤦': ' ',\n    '⤥': ' ',\n    '⤤': ' ',\n    '⤣': ' ',\n    '⤢': ' ',\n    '⤡': ' ',\n    '⤠': '\\\\mapsto\\\\cdot',\n    '⤟': '\\\\cdot\\\\leftarrow',\n    '⤞': '\\\\rightarrow\\\\cdot',\n    '⤝': '\\\\leftarrow',\n    '⤜': '\\\\rightarrow',\n    '⤛': '\\\\leftarrow',\n    '⤚': '\\\\rightarrow',\n    '⤙': '\\\\leftarrow',\n    '⤘': '\\\\rightarrow',\n    '⤗': '\\\\rightarrow',\n    '⤖': '\\\\rightarrow',\n    '⤕': '\\\\rightarrow',\n    '⤔': '\\\\rightarrow',\n    '⤓': '\\\\downarrow',\n    '⤒': '\\\\uparrow',\n    '⤑': '\\\\rightarrow',\n    '⤐': '\\\\rightarrow',\n    '⤏': '\\\\rightarrow',\n    '⤎': '\\\\leftarrow',\n    '⤍': '\\\\rightarrow',\n    '⤌': '\\\\leftarrow',\n    '⤋': '\\\\Downarrow',\n    '⤊': '\\\\Uparrow',\n    '⤉': '\\\\uparrow',\n    '⤈': '\\\\downarrow',\n    '⤇': '\\\\Rightarrow',\n    '⤆': '\\\\Leftarrow',\n    '⤅': '\\\\mapsto',\n    '⤄': '\\\\nLeftrightarrow',\n    '⤃': '\\\\nRightarrow',\n    '⤂': '\\\\nLeftarrow',\n    '⤁': '\\\\rightsquigarrow',\n    '⤀': '\\\\rightsquigarrow',\n    '⟿': '\\\\rightsquigarrow',\n    '⟾': '\\\\Rightarrow',\n    '⟽': '\\\\Leftarrow',\n    '⟼': '\\\\mapsto',\n    '⟻': '\\\\leftarrow',\n    '⟺': '\\\\Longleftrightarrow',\n    '⟹': '\\\\Longrightarrow',\n    '⟸': '\\\\Longleftarrow',\n    '⟷': '\\\\leftrightarrow',\n    '⟶': '\\\\rightarrow',\n    '⟵': '\\\\leftarrow',\n    '⟱': '\\\\Downarrow',\n    '⟰': '\\\\Uparrow',\n    '⊸': '\\\\rightarrow',\n    '⇿': '\\\\leftrightarrow',\n    '⇾': '\\\\rightarrow',\n    '⇽': '\\\\leftarrow',\n    '⇼': '\\\\nleftrightarrow',\n    '⇻': '\\\\nrightarrow',\n    '⇺': '\\\\nleftarrow',\n    '⇹': '\\\\nleftrightarrow',\n    '⇸': '\\\\nrightarrow',\n    '⇷': '\\\\nleftarrow',\n    '⇶': '\\\\Rrightarrow',\n    '⇵': '',\n    '⇴': '\\\\rightarrow',\n    '⇳': '\\\\Updownarrow',\n    '⇲': '\\\\searrow',\n    '⇱': '\\\\nwarrow',\n    '⇰': '\\\\Leftarrow',\n    '⇯': '\\\\Uparrow',\n    '⇮': '\\\\Uparrow',\n    '⇭': '\\\\Uparrow',\n    '⇬': '\\\\Uparrow',\n    '⇫': '\\\\Uparrow',\n    '⇪': '\\\\Uparrow',\n    '⇩': '\\\\Downarrow',\n    '⇨': '\\\\Rightarrow',\n    '⇧': '\\\\Uparrow',\n    '⇦': '\\\\Leftarrow',\n    '⇥': '\\\\rightarrow',\n    '⇤': '\\\\leftarrow',\n    '⇣': '\\\\downarrow',\n    '⇢': '\\\\rightarrow',\n    '⇡': '\\\\uparrow',\n    '⇠': '\\\\leftarrow',\n    '⇟': '\\\\downarrow',\n    '⇞': '\\\\uparrow',\n    '⇝': '\\\\rightsquigarrow',\n    '⇜': '\\\\leftarrow',\n    '⇛': '\\\\Rrightarrow',\n    '⇚': '\\\\Lleftarrow',\n    '⇙': '\\\\swarrow',\n    '⇘': '\\\\searrow',\n    '⇗': '\\\\nearrow',\n    '⇖': '\\\\nwarrow',\n    '⇕': '\\\\Updownarrow',\n    '⇔': '\\\\Leftrightarrow',\n    '⇓': '\\\\Downarrow',\n    '⇒': '\\\\Rightarrow',\n    '⇑': '\\\\Uparrow',\n    '⇐': '\\\\Leftarrow',\n    '⇏': '\\\\nRightarrow',\n    '⇎': '\\\\nLeftrightarrow',\n    '⇍': '\\\\nLeftarrow',\n    '⇌': '\\\\rightleftharpoons',\n    '⇋': '\\\\leftrightharpoons',\n    '⇊': '\\\\downdownarrows',\n    '⇉': '\\\\rightrightarrows',\n    '⇈': '\\\\upuparrows',\n    '⇇': '\\\\leftleftarrows',\n    '⇆': '\\\\leftrightarrows',\n    '⇅': '',\n    '⇄': '\\\\rightleftarrows',\n    '⇃': '\\\\downharpoonleft',\n    '⇂': '\\\\downharpoonright',\n    '⇁': '\\\\rightharpoondown',\n    '⇀': '\\\\rightharpoonup',\n    '↿': '\\\\upharpoonleft',\n    '↾': '\\\\upharpoonright',\n    '↽': '\\\\leftharpoondown',\n    '↼': '\\\\leftharpoonup',\n    '↻': '\\\\circlearrowright',\n    '↺': '\\\\circlearrowleft',\n    '↹': '\\\\leftrightarrows',\n    '↸': '\\\\overline{\\\\nwarrow}',\n    '↷': '\\\\curvearrowright',\n    '↶': '\\\\curvearrowleft',\n    '↵': '\\\\swarrow',\n    '↴': '\\\\searrow',\n    '↳': '\\\\Rsh',\n    '↲': '\\\\Lsh',\n    '↱': '\\\\Rsh',\n    '↰': '\\\\Lsh',\n    '↯': '\\\\swarrow',\n    '↮': '',\n    '↭': '\\\\leftrightsquigarrow',\n    '↬': '\\\\looparrowright',\n    '↫': '\\\\looparrowleft',\n    '↪': '\\\\hookrightarrow',\n    '↩': '\\\\hookleftarrow',\n    '↨': '\\\\underline{\\\\updownarrow}',\n    '↧': '\\\\downarrow',\n    '↦': '\\\\mapsto',\n    '↥': '\\\\uparrow',\n    '↤': '\\\\leftarrowtail',\n    '↣': '\\\\rightarrowtail',\n    '↢': '\\\\leftarrowtail',\n    '↡': '\\\\downarrow',\n    '↠': '\\\\twoheadrightarrow',\n    '↟': '\\\\uparrow',\n    '↞': '\\\\twoheadleftarrow',\n    '↝': '\\\\nearrow',\n    '↜': '\\\\nwarrow',\n    '↚': '',\n    '↙': '\\\\swarrow',\n    '↘': '\\\\searrow',\n    '↗': '\\\\nearrow',\n    '↖': '\\\\nwarrow',\n    '↕': '\\\\updownarrow',\n    '↔': '\\\\leftrightarrow',\n    '↓': '\\\\downarrow',\n    '→': '\\\\rightarrow',\n    '↑': '\\\\uparrow',\n    '←': '\\\\leftarrow',\n    '|||': '\\\\left|||\\\\right.',\n    '||': '\\\\left\\\\|\\\\right.',\n    '|': '\\\\mid',\n    '⫾': '',\n    '⫽': '//',\n    '⫻': '///',\n    '⫺': '',\n    '⫹': '',\n    '⫸': '',\n    '⫷': '',\n    '⫶': '\\\\vdots',\n    '⫵': '',\n    '⫴': '',\n    '⫳': '',\n    '⫲': '\\\\nparallel',\n    '⫱': '',\n    '⫰': '',\n    '⫯': '',\n    '⫮': '\\\\bcancel{\\\\mid}',\n    '⫭': '',\n    '⫬': '',\n    '⫫': '',\n    '⫪': '',\n    '⫩': '',\n    '⫨': '\\\\underline{\\\\perp}',\n    '⫧': '\\\\overline{\\\\top}',\n    '⫦': '',\n    '⫥': '',\n    '⫤': '',\n    '⫣': '',\n    '⫢': '',\n    '⫡': '',\n    '⫠': '\\\\perp',\n    '⫟': '\\\\top',\n    '⫞': '\\\\dashv',\n    '⫝̸': '',\n    '⫝': '',\n    '⫛': '\\\\pitchfork',\n    '⫚': '',\n    '⫙': '',\n    '⫘': '',\n    '⫗': '',\n    '⫖': '',\n    '⫕': '',\n    '⫔': '',\n    '⫓': '',\n    '⫒': '',\n    '⫑': '',\n    '⫐': '',\n    '⫏': '',\n    '⫎': '',\n    '⫍': '',\n    '⫌': '\\\\underset{\\\\neq}{\\\\supset}',\n    '⫋': '\\\\underset{\\\\neq}{\\\\subset}',\n    '⫊': '\\\\underset{\\\\approx}{\\\\supset}',\n    '⫉': '\\\\underset{\\\\approx}{\\\\subset}',\n    '⫈': '\\\\underset{\\\\sim}{\\\\supset}',\n    '⫇': '\\\\underset{\\\\sim}{\\\\subset}',\n    '⫆': '\\\\supseteqq',\n    '⫅': '\\\\subseteqq',\n    '⫄': '\\\\dot{\\\\supseteq}',\n    '⫃': '\\\\dot{\\\\subseteq}',\n    '⫂': '\\\\underset{\\\\times}{\\\\supset}',\n    '⫁': '\\\\underset{\\\\times}{\\\\subset}',\n    '⫀': '\\\\underset{+}{\\\\supset}',\n    '⪿': '\\\\underset{+}{\\\\subset}',\n    '⪾': '',\n    '⪽': '',\n    '⪼': '\\\\gg ',\n    '⪻': '\\\\ll',\n    '⪺': '\\\\underset{\\\\cancel{\\\\approx}}{\\\\succ}',\n    '⪹': '\\\\underset{\\\\cancel{\\\\approx}}{\\\\prec}',\n    '⪸': '\\\\underset{\\\\approx}{\\\\succ}',\n    '⪷': '\\\\underset{\\\\approx}{\\\\prec}',\n    '⪶': '\\\\underset{\\\\cancel{=}}{\\\\succ}',\n    '⪵': '\\\\underset{\\\\cancel{=}}{\\\\prec}',\n    '⪴': '\\\\underset{=}{\\\\succ}',\n    '⪳': '\\\\underset{=}{\\\\prec}',\n    '⪲': '',\n    '⪱': '',\n    '⪮': '',\n    '⪭': '\\\\underline{\\\\hcancel{>}}',\n    '⪬': '\\\\underline{\\\\hcancel{>}}',\n    '⪫': '\\\\hcancel{>}',\n    '⪪': '\\\\hcancel{<}',\n    '⪩': '',\n    '⪨': '',\n    '⪧': '\\\\vartriangleright',\n    '⪦': '\\\\vartriangleleft',\n    '⪥': '><',\n    '⪤': '><',\n    '⪣': '\\\\underline{\\\\ll}',\n    '⪢̸': '\\\\cancel{\\\\gg}',\n    '⪢': '\\\\gg',\n    '⪡̸': '\\\\cancel{\\\\ll}',\n    '⪡': '\\\\ll',\n    '⪠': '\\\\overset{\\\\sim}{\\\\geqq}',\n    '⪟': '\\\\overset{\\\\sim}{\\\\leqq}',\n    '⪞': '\\\\overset{\\\\sim}{>}',\n    '⪝': '\\\\overset{\\\\sim}{<}',\n    '⪜': '',\n    '⪛': '',\n    '⪚': '\\\\overset{=}{>}',\n    '⪙': '\\\\overset{=}{<}',\n    '⪘': '',\n    '⪗': '',\n    '⪖': '',\n    '⪕': '',\n    '⪔': '',\n    '⪓': '',\n    '⪒': '\\\\underset{=}{\\\\gtrless}',\n    '⪑': '\\\\underset{=}{\\\\lessgtr}',\n    '⪐': '\\\\underset{<}{\\\\gtrsim}',\n    '⪏': '\\\\underset{>}{\\\\lesssim}',\n    '⪎': '\\\\underset{\\\\simeq}{>}',\n    '⪍': '\\\\underset{\\\\simeq}{<}',\n    '⪌': '\\\\gtreqqless',\n    '⪋': '\\\\lesseqqgtr',\n    '⪊': '\\\\underset{\\\\cancel{\\\\approx}}{>}',\n    '⪉': '\\\\underset{\\\\approx}{<}',\n    '⪆': '\\\\underset{\\\\approx}{>}',\n    '⪅': '\\\\underset{\\\\approx}{<}',\n    '⪄': '',\n    '⪃': '',\n    '⪂': '',\n    '⪁': '',\n    '⪀': '',\n    '⩿': '',\n    '⩾̸': '\\\\bcancel{\\\\geq}',\n    '⩾': '\\\\geq',\n    '⩽̸': '\\\\bcancel{\\\\leq}',\n    '⩽': '\\\\leq',\n    '⩼': '',\n    '⩻': '',\n    '⩺': '',\n    '⩹': '',\n    '⩸': '\\\\overset{\\\\dots}{\\\\equiv}',\n    '⩷': '',\n    '⩶': '===',\n    '⩵': '==',\n    '⩴': '::=',\n    '⩳': '',\n    '⩲': '\\\\underset{=}{+}',\n    '⩱': '\\\\overset{=}{+}',\n    '⩰': '\\\\overset{\\\\approx}{=}',\n    '⩯': '\\\\overset{\\\\wedge}{=}',\n    '⩮': '\\\\overset{*}{=}',\n    '⩭': '\\\\dot{\\\\approx}',\n    '⩬': '',\n    '⩫': '',\n    '⩪': '\\\\dot{\\\\sim}',\n    '⩩': '',\n    '⩨': '',\n    '⩧': '\\\\dot{\\\\equiv}',\n    '⩦': '\\\\underset{\\\\cdot}{=}',\n    '⩥': '',\n    '⩤': '',\n    '⩣': '\\\\underset{=}{\\\\vee}',\n    '⩢': '\\\\overset{=}{\\\\vee}',\n    '⩡': 'ul(vv)',\n    '⩠': '\\\\underset{=}{\\\\wedge}',\n    '⩟': '\\\\underline{\\\\wedge}',\n    '⩞': '\\\\overset{=}{\\\\wedge}',\n    '⩝': '\\\\hcancel{\\\\vee}',\n    '⩜': '\\\\hcancel{\\\\wedge}',\n    '⩛': '',\n    '⩚': '',\n    '⩙': '',\n    '⩘': '\\\\vee',\n    '⩗': '\\\\wedge',\n    '⩖': '',\n    '⩕': '',\n    '⩔': '',\n    '⩓': '',\n    '⩒': '\\\\dot{\\\\vee}',\n    '⩑': '\\\\dot{\\\\wedge}',\n    '⩐': '',\n    '⩏': '',\n    '⩎': '',\n    '⩍': '\\\\overline{\\\\cap}',\n    '⩌': '\\\\overline{\\\\cup}',\n    '⩋': '',\n    '⩊': '',\n    '⩉': '',\n    '⩈': '',\n    '⩇': '',\n    '⩆': '',\n    '⩅': '',\n    '⩄': '',\n    '⩃': '\\\\overline{\\\\cap}',\n    '⩂': '\\\\overline{\\\\cup}',\n    '⩁': '',\n    '⩀': '',\n    '⨾': '',\n    '⨽': '\\\\llcorner',\n    '⨼': '\\\\lrcorner',\n    '⨻': '',\n    '⨺': '',\n    '⨹': '',\n    '⨸': '',\n    '⨷': '',\n    '⨶': '\\\\hat{\\\\otimes}',\n    '⨵': '',\n    '⨴': '',\n    '⨳': '',\n    '⨲': '\\\\underline{\\\\times}',\n    '⨱': '\\\\underline{\\\\times}',\n    '⨰': '\\\\dot{\\\\times}',\n    '⨮': '\\\\bigodot',\n    '⨭': '\\\\bigodot',\n    '⨬': '',\n    '⨫': '',\n    '⨪': '',\n    '⨩': '',\n    '⨨': '',\n    '⨧': '',\n    '◻': '\\\\Box',\n    '⨦': '\\\\underset{\\\\sim}{+}',\n    '⨥': '\\\\underset{\\\\circ}{+}',\n    '⨤': '\\\\overset{\\\\sim}{+}',\n    '⨣': '\\\\hat{+}',\n    '⨢': '\\\\dot{+}',\n    '⨡': '\\\\upharpoonright',\n    '⨠': '>>',\n    '⨟': '',\n    '⨞': '\\\\triangleleft',\n    '⨝': '\\\\bowtie',\n    '⧿': '',\n    '⧾': '+',\n    '⧻': '\\\\hcancel{|||}',\n    '⧺': '\\\\hcancel{||}',\n    '⧹': '\\\\backslash',\n    '⧸': '/',\n    '⧷': 'hcancel{\\backslash}',\n    '⧶': '',\n    '⧵': '\\\\backslash',\n    '⧲': '\\\\Phi',\n    '⧱': '',\n    '⧰': '',\n    '⧮': '',\n    '⧭': '',\n    '⧬': '',\n    '⧫': '\\\\lozenge',\n    '⧪': '',\n    '⧩': '',\n    '⧨': '',\n    '⧧': '\\\\ddagger',\n    '⧢': '\\\\sqcup\\\\sqcup',\n    '⧡': '',\n    '⧠': '\\\\square',\n    '⧞': '',\n    '⧝': '',\n    '⧜': '',\n    '⧛': '\\\\{\\\\{',\n    '⧙': '\\\\{',\n    '⧘': '\\\\}',\n    '⧗': '',\n    '⧖': '',\n    '⧕': '\\\\bowtie',\n    '⧔': '\\\\bowtie',\n    '⧓': '\\\\bowtie',\n    '⧒': '\\\\bowtie',\n    '⧑': '\\\\bowtie',\n    '⧐̸': '| \\\\not\\\\triangleright',\n    '⧐': '| \\\\triangleright',\n    '⧏̸': '\\\\not\\\\triangleleft |',\n    '⧏': '\\\\triangleleft |',\n    '⧎': '',\n    '⧍': '\\\\triangle',\n    '⧌': '',\n    '⧋': '\\\\underline{\\\\triangle}',\n    '⧊': '\\\\dot{\\\\triangle}',\n    '⧉': '',\n    '⧈': '\\\\boxed{\\\\circ}',\n    '⧇': '\\\\boxed{\\\\circ}',\n    '⧆': '\\\\boxed{\\\\rightarrow}',\n    '⧅': '\\\\bcancel{\\\\square}',\n    '⧄': '\\\\cancel{\\\\square}',\n    '⧃': '\\\\odot',\n    '⧂': '\\\\odot',\n    '⦿': '\\\\odot',\n    '⦾': '\\\\odot',\n    '⦽': '\\\\varnothing',\n    '⦼': '\\\\oplus',\n    '⦻': '\\\\otimes',\n    '⦺': '',\n    '⦹': '\\\\varnothing',\n    '⦸': '\\\\varnothing',\n    '⦷': '\\\\ominus',\n    '⦶': '\\\\ominus',\n    '⦵': '\\\\ominus',\n    '⦴': '\\\\vec{\\\\varnothing}',\n    '⦳': '\\\\vec{\\\\varnothing}',\n    '⦲': '\\\\dot{\\\\varnothing}',\n    '⦱': '\\\\overline{\\\\varnothing}',\n    '⦰': '\\\\varnothing',\n    '⦯': '\\\\measuredangle',\n    '⦮': '\\\\measuredangle',\n    '⦭': '\\\\measuredangle',\n    '⦬': '\\\\measuredangle',\n    '⦫': '\\\\measuredangle',\n    '⦪': '\\\\measuredangle',\n    '⦩': '\\\\measuredangle',\n    '⦨': '\\\\measuredangle',\n    '⦧': '',\n    '⦦': '',\n    '⦥': '',\n    '⦤': '',\n    '⦣': '\\\\ulcorner',\n    '⦢': '\\\\measuredangle',\n    '⦡': '\\\\not\\\\lor',\n    '⦠': '\\\\bcancel{>}',\n    '⦂': ':',\n    '⦁': '\\\\cdot',\n    '❘': '\\\\mid',\n    '▲': '\\\\bigtriangleup',\n    '⋿': '\\\\Epsilon',\n    '⋾': '\\\\overline{\\\\ni}',\n    '⋽': '\\\\overline{\\\\ni}',\n    '⋼': '\\\\in',\n    '⋻': '\\\\in',\n    '⋺': '\\\\in',\n    '⋹': '\\\\underline{\\\\in}',\n    '⋸': '\\\\underline{\\\\in}',\n    '⋷': '\\\\overline{\\\\in}',\n    '⋶': '\\\\overline{\\\\in}',\n    '⋵': '\\\\dot{\\\\in}',\n    '⋴': '\\\\in',\n    '⋳': '\\\\in',\n    '⋲': '\\\\in',\n    '⋰': '\\\\ddots',\n    '։': ':',\n    '⋩': '\\\\underset{\\\\sim}{\\\\succ}',\n    '⋨': '\\\\underset{\\\\sim}{\\\\prec}',\n    '⋧': '\\\\underset{\\\\not\\\\sim}{>}',\n    '⋦': '\\\\underset{\\\\not\\\\sim}{<}',\n    '⋥': '\\\\not\\\\sqsupseteq',\n    '⋤': '\\\\not\\\\sqsubseteq',\n    '⋣': '\\\\not\\\\sqsupseteq',\n    '⋢': '\\\\not\\\\sqsubseteq',\n    '⋡': '\\\\nsucc',\n    '⋠': '\\\\nprec',\n    '⋟': '\\\\succ',\n    '⋞': '\\\\prec',\n    '⋝': '\\\\overline{>}',\n    '⋜': '\\\\overline{<}',\n    '⋛': '\\\\underset{>}{\\\\leq}',\n    '⋚': '\\\\underset{<}{\\\\geq}',\n    '⋕': '\\\\#',\n    '⋓': '\\\\cup',\n    '⋒': '\\\\cap',\n    '⋑': '\\\\supset',\n    '⋐': '\\\\subset',\n    '⋏': '\\\\wedge',\n    '⋎': '\\\\vee',\n    '⋍': '\\\\simeq',\n    '⋈': '\\\\Join',\n    '⋇': '\\\\ast',\n    '⋆': '\\\\star',\n    '⋄': '\\\\diamond',\n    '⊿': '\\\\triangle',\n    '⊾': '\\\\measuredangle',\n    '⊽': '\\\\overline{\\\\lor}',\n    '⊼': '\\\\overline{\\\\land}',\n    '⊻': '\\\\underline{\\\\lor}',\n    '⊺': '\\\\top',\n    土: '\\\\pm',\n    十: '+',\n    '⊹': '',\n    '⊷': '\\\\circ\\\\multimap',\n    '⊶': '\\\\circ\\\\multimap',\n    '⊳': '\\\\triangleright',\n    '⊲': '\\\\triangleleft',\n    '⊱': '\\\\succ',\n    '⊰': '\\\\prec',\n    '⊫': '|\\\\models',\n    '⊪': '|\\\\models',\n    '⊧': '\\\\models',\n    '⊦': '\\\\vdash',\n    '⊝': '\\\\ominus',\n    '⊜': '\\\\ominus',\n    '⊛': '\\\\odot',\n    '⊚': '\\\\odot',\n    '⊔': '\\\\sqcup',\n    '⊓': '\\\\sqcap',\n    '⊒': '\\\\sqsupseteq',\n    '⊑': '\\\\sqsubseteq',\n    '⊐̸': '\\\\not\\\\sqsupset',\n    '⊐': '\\\\sqsupset',\n    '⊏̸': '\\\\not\\\\sqsubset',\n    '⊏': '\\\\sqsubset',\n    '⊎': '\\\\cup',\n    '⊍': '\\\\cup',\n    '⊌': '\\\\cup',\n    '≿̸': '\\\\not\\\\succsim',\n    '≿': '\\\\succsim',\n    '≾': '\\\\precsim',\n    '≹': '\\\\not\\\\overset{>}{<}',\n    '≸': '\\\\not\\\\overset{>}{<}',\n    '≷': '\\\\overset{>}{<}',\n    '≶': '\\\\overset{<}{>}',\n    '≵': '\\\\not\\\\geg',\n    '≴': '\\\\not\\\\leq',\n    '≳': '\\\\geg',\n    '≲': '\\\\leq',\n    '≬': '',\n    '≧': '\\\\geqq',\n    '≦̸': '\\\\not\\\\leq',\n    '≦': '\\\\leq',\n    '≣': '\\\\overset{=}{=} ',\n    '≞': '\\\\overset{m}{=} ',\n    '≝': '\\\\overset{def}{=}',\n    '≘': '=',\n    '≖': '=',\n    '≕': '=:',\n    '≓': '\\\\doteq',\n    '≒': '\\\\doteq',\n    '≑': '\\\\doteq',\n    '≐': '\\\\doteq',\n    '≏̸': '',\n    '≏': '',\n    '≎̸': '',\n    '≎': '',\n    '≌': '\\\\approx',\n    '≋': '\\\\approx',\n    '≊': '\\\\approx',\n    '≂̸': '\\\\neq',\n    '≂': '=',\n    '∿': '\\\\sim',\n    '∾': '\\\\infty',\n    '∽̱': '\\\\sim',\n    '∽': '\\\\sim',\n    '∻': '\\\\sim',\n    '∺': ':-:',\n    '∹': '-:',\n    '∸': '\\\\bot',\n    '∷': '::',\n    '∶': ':',\n    '∣': '\\\\mid',\n    '∟': '\\\\llcorner',\n    '∘': '\\\\circ',\n    '∗': '*',\n    '∕': '/',\n    '∎': '\\\\square',\n    '∍': '\\\\ni',\n    '∊': '\\\\in',\n    '∆': '\\\\Delta',\n    '⁄': '/',\n    '⪰̸': '\\\\nsucceq',\n    '⪰': '\\\\succeq',\n    '⪯̸': '\\\\npreceq',\n    '⪯': '\\\\preceq',\n    '⪈': '\\\\ngeqslant',\n    '⪇': '\\\\nleqslant',\n    '⧳': '\\\\Phi',\n    '⧦': '\\\\models',\n    '⧥': '\\\\not\\\\equiv',\n    '⧤': '\\\\approx\\\\neq',\n    '⧣': '\\\\neq',\n    '⧁': '\\\\circle',\n    '⧀': '\\\\circle',\n    '◦': '\\\\circle',\n    '◗': '\\\\circle',\n    '◖': '\\\\circle',\n    '●': '\\\\circle',\n    '◎': '\\\\circledcirc',\n    '◍': '\\\\circledcirc',\n    '◌': '\\\\circledcirc',\n    '◉': '\\\\circledcirc',\n    '◈': '\\\\diamond',\n    '◇': '\\\\diamond',\n    '◆': '\\\\diamond',\n    '◅': '\\\\triangleleft',\n    '◄': '\\\\triangleleft',\n    '◃': '\\\\triangleleft',\n    '◂': '\\\\triangleleft',\n    '◁': '\\\\triangleleft',\n    '◀': '\\\\triangleleft',\n    '▿': '\\\\triangledown',\n    '▾': '\\\\triangledown',\n    '▽': '\\\\triangledown',\n    '▼': '\\\\triangledown',\n    '▹': '\\\\triangleright',\n    '▸': '\\\\triangleright',\n    '▷': '\\\\triangleright',\n    '▶': '\\\\triangleright',\n    '▵': '\\\\triangle',\n    '▴': '\\\\triangle',\n    '△': '\\\\triangle',\n    '▱': '\\\\square',\n    '▰': '\\\\blacksquare',\n    '▯': '\\\\square',\n    '▮': '\\\\blacksquare',\n    '▭': '\\\\square',\n    '▫': '\\\\square',\n    '▪': '\\\\square',\n    '□': '\\\\square',\n    '■': '\\\\blacksquare',\n    '⋭': '\\\\not\\\\triangleright',\n    '⋬': '\\\\not\\\\triangleleft',\n    '⋫': '\\\\not\\\\triangleright',\n    '⋪': '\\\\not\\\\triangleleft',\n    '⋙': '\\\\ggg',\n    '⋘': '\\\\lll',\n    '⋗': '*>',\n    '⋖': '<*',\n    '⋔': '\\\\pitchfork',\n    '⋌': '',\n    '⋋': '\\\\bowtie',\n    '⋊': '\\\\ltimes',\n    '⋉': '\\\\rtimes',\n    '⊵': '\\\\triangleright',\n    '\\\\triangleleft': '',\n    '⊥': '\\\\bot',\n    '⊁': '\\\\nsucc',\n    '⊀': '\\\\preceq',\n    '≽': '\\\\succeq',\n    '≼': '\\\\preceq',\n    '≻': '\\\\succ',\n    '≺': '\\\\prec',\n    '≱': '\\\\geq/',\n    '≰': '\\\\leq/',\n    '≭': '\\\\neq',\n    '≫̸': '\\\\not\\\\gg',\n    '≫': '\\\\gg',\n    '≪̸': '\\\\not\\\\ll',\n    '≪': '\\\\ll',\n    '≩': '\\\\ngeqslant',\n    '≨': '\\\\nleqslant',\n    '≡': '\\\\equiv',\n    '≟': '\\\\doteq',\n    '≜': '\\\\triangleq',\n    '≛': '\\\\doteq',\n    '≚': '\\\\triangleq',\n    '≙': '\\\\triangleq',\n    '≗': '\\\\doteq',\n    '≔': ':=',\n    '≍': '\\\\asymp',\n    '≇': '\\\\ncong',\n    '≆': '\\\\ncong',\n    '≅': '\\\\cong',\n    '≄': '\\\\not\\\\simeq',\n    '≃': '\\\\simeq',\n    '≁': '\\\\not\\\\sim',\n    '∦': '\\\\not\\\\parallel',\n    '∥': '\\\\parallel',\n    '∤': '\\\\not|',\n    '∝': '\\\\propto',\n    '==': '==',\n    '=': '=',\n    ':=': ':=',\n    '/=': '=',\n    '-=': '-=',\n    '+=': '+=',\n    '*=': '*=',\n    '!=': '!=',\n    '≠': '\\\\neq',\n    '≢': '\\\\equiv /',\n    '≉': '\\\\approx /',\n    '∼': '\\\\sim',\n    '≈': '\\\\approx',\n    '≮': '</',\n    '<': '<',\n    '≯': '>/',\n    '>=': '>=',\n    '>': '>',\n    '≥': '\\\\geq',\n    '≤': '\\\\leq',\n    '<=': '<=',\n    '⊋': '\\\\supsetneq',\n    '⊊': '\\\\subsetneq',\n    '⊉': '\\\\nsupseteq',\n    '⊈': '\\\\nsubseteq',\n    '⊇': '\\\\supseteq',\n    '⊆': '\\\\subseteq',\n    '⊅': '\\\\not\\\\supset',\n    '⊄': '\\\\not\\\\subset',\n    '⊃⃒': '\\\\supset |',\n    '⊃': '\\\\supset',\n    '⊂⃒': '\\\\subset |',\n    '⊂': '\\\\subset',\n    '∌': '\\\\not\\\\in',\n    '∉': '\\\\notin',\n    '∈': '\\\\in',\n    '∁': 'C',\n    '∄': '\\\\nexists',\n    '∃': '\\\\exists',\n    '∀': '\\\\forall',\n    '∧': '\\\\land',\n    '&&': '\\\\&\\\\&',\n    '∨': '\\\\lor',\n    '⊯': '\\\\cancel{\\\\vDash}',\n    '⊮': '\\\\cancel{\\\\Vdash}',\n    '⊭': '\\\\nvDash',\n    '⊬': '\\\\nvDash',\n    '⊩': '\\\\Vdash',\n    '⊨': '\\\\vDash',\n    '⊤': '\\\\top',\n    '⊣': '\\\\dashv',\n    '⊢': '\\\\vdash',\n    '∋': '\\\\ni',\n    '⋱': '\\\\ddots',\n    '⋯': '\\\\hdots',\n    '⋮': '\\\\vdots',\n    '϶': '\\\\ni',\n    ':': ':',\n    '...': '\\\\cdots',\n    '..': '..',\n    '->': '->',\n    '∵': '\\\\because',\n    '∴': '\\\\therefore ',\n    '⁣': '',\n    ',': ',',\n    ';': ';',\n    '⧽': '\\\\}',\n    '⧼': '\\\\{',\n    '⦘': '\\\\]',\n    '⦗': '\\\\[',\n    '⦖': '\\\\ll',\n    '⦕': '\\\\gg',\n    '⦔': '\\\\gg',\n    '⦓': '\\\\ll',\n    '⦒': '\\\\gg',\n    '⦑': '\\\\ll',\n    '⦐': '\\\\]',\n    '⦏': '\\\\]',\n    '⦎': '\\\\]',\n    '⦍': '\\\\[',\n    '⦌': '\\\\[',\n    '⦋': '\\\\]',\n    '⦊': '\\\\triangleright',\n    '⦉': '\\\\triangleleft',\n    '⦈': '|\\\\)',\n    '⦇': '\\\\(|',\n    '⦆': '|\\\\)',\n    '⦅': '\\\\(\\\\(',\n    '⦄': '|\\\\}',\n    '⦃': '\\\\{|',\n    '⦀': '\\\\||',\n    '⟯': '\\\\left. \\\\right]',\n    '⟮': '\\\\left[ \\\\right.',\n    '⟭': '\\\\left. \\\\right]]',\n    '⟬': '\\\\left[[ \\\\right.',\n    '⟫': '\\\\gg',\n    '⟪': '\\\\ll',\n    '⟧': '\\\\)|',\n    '⟦': '\\\\(|',\n    '❳': '\\\\left.\\\\right)',\n    '❲': '\\\\left(\\\\right.',\n    '〉': '\\\\rangle',\n    '〈': '\\\\langle',\n    '⌋': '\\\\rfloor',\n    '⌊': '\\\\lfloor',\n    '⌉': '\\\\rceil',\n    '⌈': '\\\\lceil',\n    '‖': '\\\\parallel',\n    '}': '\\\\left.\\\\right\\\\}',\n    '{': '\\\\left\\\\{\\\\right.',\n    ']': '\\\\left]\\\\right.',\n    '[': '\\\\left[\\\\right.',\n    ')': '\\\\left.\\\\right)',\n    '(': '\\\\left(\\\\right.',\n    '”': '\\\\\"',\n    '“': '\\\\text{``}',\n    '’': \"'\",\n    '‘': '`',\n    α: '\\\\alpha',\n    β: '\\\\beta',\n    γ: '\\\\gamma',\n    Γ: '\\\\Gamma',\n    δ: '\\\\delta',\n    Δ: '\\\\Delta',\n    ϵ: '\\\\epsilon',\n    ζ: '\\\\zeta',\n    η: '\\\\eta',\n    θ: '\\\\theta',\n    Θ: '\\\\Theta',\n    ι: '\\\\iota',\n    κ: '\\\\kappa',\n    λ: '\\\\lambda',\n    ν: '\\\\nu',\n    ο: '\\\\omicron',\n    π: '\\\\pi',\n    Π: '\\\\Pi',\n    ρ: '\\\\rho',\n    σ: '\\\\sigma',\n    Σ: '\\\\Sigma',\n    τ: '\\\\tau',\n    υ: '\\\\upsilon',\n    Υ: '\\\\Upsilon',\n    ϕ: '\\\\phi',\n    Φ: '\\\\Phi',\n    χ: '\\\\chi',\n    ψ: '\\\\psi',\n    Ψ: '\\\\Psi',\n    ω: '\\\\omega',\n    Ω: '\\\\Omega',\n    Ω: '\\\\Omega',\n    '∅': '\\\\emptyset',\n    '⟲': '\\\\circlearrowleft',\n    '⟳': '\\\\circlearrowright',\n    '×': '\\\\times',\n    '½': '\\\\dfrac{1}{2}',\n    μ: '\\\\mu',\n    Ө: '\\\\theta',\n    '✓': '\\\\checkmark',\n    '⟩': '\\\\rangle',\n    '⟨': '\\\\langle',\n    '¼': '\\\\dfrac{1}{4}',\n    '…': '\\\\ldots',\n    ℏ: '\\\\hbar',\n    ℜ: '\\\\mathfrak{R}',\n    Ѳ: '\\\\theta',\n    Ø: '\\\\emptyset',\n    ϱ: '\\\\varrho',\n    ф: '\\\\phi',\n    ℇ: '\\\\varepsilon',\n    T: 'T',\n    '∙': '\\\\cdot',\n    Ρ: 'P',\n    '∞': '\\\\infty',\n    ᐁ: '\\\\nabla',\n    ƞ: '\\\\eta',\n    '⁺': '^{+}',\n    '⁻': '^{-}',\n    '⁼': '^{=}',\n    '⁽': '^{(}',\n    '⁾': '^{)}',\n    '〗': '\\\\)|',\n    '〖': '\\\\langle',\n    ';': ';',\n    '൦': '\\\\circ',\n    '┴': '\\\\perp',\n    '✕': '\\\\times',\n    '⎻': '-',\n    '»': '\\\\gg',\n    '⬆': '\\\\uparrow',\n    '⬇': '\\\\downarrow',\n    '⬅': '\\\\leftarrow',\n    '➡': '\\\\rightarrow',\n    '⎼': '-',\n    '⎜': '\\\\mid',\n    '⎥': '\\\\mid',\n    ħ: '\\\\hbar',\n    '⮕': '\\\\rightarrow',\n    '・': '\\\\cdot',\n    '¦': '\\\\mid',\n    '£': '\\\\pounds',\n    '¥': '\\\\yen',\n    '✗': '\\\\times',\n    '✔': '\\\\checkmark',\n    ⁿ: '^{n}',\n    '«': '\\\\ll',\n    เ: '\\\\prime',\n    '†': '\\\\dagger',\n    '│': '\\\\mid',\n    $: '\\\\$',\n    '#': '\\\\#',\n    '℃': '\\\\text{\\\\textdegree C}',\n    '℉': '\\\\text{\\\\textdegree F}',\n    '█': '\\\\blacksquare',\n    '℧': '\\\\mho',\n    ⅇ: '\\\\text{e}',\n    ɼ: 'r',\n    '‡': '\\\\ddagger',\n    ἱ: 'i',\n    ϒ: '\\\\Upsilon',\n    '𝛿': '\\\\delta',\n    '˳': '\\\\cdot',\n    ѳ: '\\\\theta',\n    '𝜙': '\\\\phi',\n    П: '\\\\prod',\n    о: 'o',\n    ђ: '\\\\hbar',\n    Ʌ: '\\\\Lambda',\n    '।': '\\\\mid',\n    '€': '\\\\euro',\n    ῡ: '\\\\bar{u}',\n    φ: '\\\\varphi',\n    ȼ: 'c',\n    '𝞮': '\\\\epsilon',\n    Χ: '\\\\mathsf{X}',\n    ₙ: '_{n}',\n};\n\n/**\n * Lookup table mapping math symbols, keyed by their literal HTML character\n * reference (e.g. `&#x2200;`), to the equivalent LaTeX command. Consumed by the\n * `<mi>`/`<mo>` converters to translate symbol content into LaTeX.\n */\nconst allMathSymbolsByChar = {\n    '&#xA0;': '\\\\textrm{ }',\n    '&#x2203;': '\\\\exists',\n    '&#x2200;': '\\\\forall',\n    '&#x21D4;': '\\\\iff',\n    '&#x21D2;': '=>',\n    '&#xAC;': '\\\\neg',\n    '&#x2124;': '\\\\mathbb{Z}',\n    '&#x211D;': '\\\\mathbb{R}',\n    '&#x211A;': '\\\\mathbb{Q}',\n    '&#x2115;': '\\\\mathbb{N}',\n    '&#x2102;': 'CC',\n    '&#x25A1;': '\\\\square',\n    '&#x22C4;': '\\\\diamond',\n    '&#x25B3;': '\\\\triangle',\n    '&#x2322;': '\\\\frown',\n    '&#x2220;': '\\\\angle',\n    '&#x22F1;': '\\\\ddots',\n    '&#x22EE;': '\\\\vdots',\n    '&#x2235;': '\\\\because',\n    '&#x2234;': '\\\\therefore',\n    '&#x2135;': '\\\\aleph',\n    '&#x2205;': '\\\\oslash',\n    '&#xB1;': '\\\\pm',\n    '&#x2207;': '\\\\nabla',\n    '&#x2202;': '\\\\partial',\n    '&#x222E;': '\\\\oint',\n    '&#x222B;': '\\\\int',\n    '&#x22C3;': '\\\\cup',\n    '&#x222A;': '\\\\cup',\n    '&#x22C2;': '\\\\cap',\n    '&#x2229;': '\\\\cap',\n    '&#x22C1;': '\\\\vee',\n    '&#x2228;': '\\\\vee',\n    '&#x22C0;': '\\\\wedge',\n    '&#x2227;': '\\\\wedge',\n    '&#x220F;': '\\\\prod',\n    '&#x2211;': '\\\\sum',\n    '&#x2299;': '\\\\bigodot',\n    '&#x2297;': '\\\\bigoplus',\n    '&#x2295;': 'o+',\n    '&#x2218;': '@',\n    '&#x22C8;': '\\\\bowtie',\n    '&#x22CA;': '\\\\rtimes',\n    '&#x22C9;': '\\\\ltimes',\n    '&#xF7;': '\\\\div',\n    '&#xD7;': '\\\\times',\n    '\\\\': '\\\\backslash',\n    '&#x22C6;': '\\\\star',\n    '&#x2217;': '\\\\star',\n    '&#x22C5;': '\\\\cdot',\n    '&#x3A9;': '\\\\Omega',\n    '&#x3C9;': '\\\\omega',\n    '&#x3A8;': '\\\\Psi',\n    '&#x3C8;': '\\\\psi',\n    '&#x3C7;': '\\\\chi',\n    '&#x3C6;': '\\\\varphi',\n    '&#x3A6;': '\\\\Phi',\n    '&#x3D5;': '\\\\phi',\n    '&#x3C5;': '\\\\upsilon',\n    '&#x3C4;': '\\\\tau',\n    '&#x3A3;': '\\\\Sigma',\n    '&#x3C3;': '\\\\sigma',\n    '&#x3C1;': '\\\\rho',\n    '&#x3A0;': '\\\\Pi',\n    '&#x3C0;': '\\\\pi',\n    '&#x39E;': '\\\\Xi',\n    '&#x3BE;': '\\\\xi',\n    '&#x3BD;': '\\\\nu',\n    '&#x3BC;': '\\\\mu',\n    '&#x39B;': '\\\\Lambda',\n    '&#x3BB;': '\\\\lambda',\n    '&#x3BA;': '\\\\kappa',\n    '&#x3B9;': '\\\\iota',\n    '&#x3D1;': '\\\\vartheta',\n    '&#x398;': '\\\\Theta',\n    '&#x3B8;': '\\\\theta',\n    '&#x3B7;': '\\\\eta',\n    '&#x3B6;': '\\\\zeta',\n    '&#x25B;': '\\\\varepsilon',\n    '&#x3B5;': '\\\\epsilon',\n    '&#x394;': '\\\\Delta',\n    '&#x3B4;': '\\\\delta',\n    '&#x393;': '\\\\Gamma',\n    '&#x3B3;': '\\\\gamma',\n    '&#x3B2;': '\\\\beta',\n    '&#x3B1;': '\\\\alpha',\n    '&#x221E;': '\\\\infty',\n    '\\u202c': '\\\\text{\\\\textdir TRT}',\n    '\\u200e': '\\\\text{\\\\textdir LTR}',\n};\n\n/**\n * Lookup table mapping math symbols, keyed by their decoded unicode glyph\n * (e.g. `∀`), to the equivalent LaTeX command. Consumed by the `<mi>`/`<mo>`\n * converters to translate symbol content into LaTeX.\n */\nconst allMathSymbolsByGlyph = {\n    ' ': '\\\\textrm{ }',\n    // Invisible operators (U+2061-U+2064): no visual rendering in LaTeX.\n    '⁡': '',\n    '⁢': '',\n    '⁣': '',\n    '⁤': '',\n    '∃': '\\\\exists',\n    '∀': '\\\\forall',\n    '⇔': '\\\\iff',\n    '⇒': '\\\\Rightarrow',\n    '¬': '\\\\neg',\n    '□': '\\\\square',\n    '⋄': '\\\\diamond',\n    '△': '\\\\triangle',\n    '⌢': '\\\\frown',\n    '∠': '\\\\angle',\n    '⋱': '\\\\ddots',\n    '⋮': '\\\\vdots',\n    '∵': '\\\\because',\n    '∴': '\\\\therefore',\n    ℵ: '\\\\aleph',\n    '∅': '\\\\emptyset',\n    '±': '\\\\pm',\n    '∇': '\\\\nabla',\n    '∂': '\\\\partial',\n    '∮': '\\\\oint',\n    '∫': '\\\\int',\n    '⋃': '\\\\cup',\n    '∪': '\\\\cup',\n    '⋂': '\\\\cap',\n    '∩': '\\\\cap',\n    '⋁': '\\\\vee',\n    '∨': '\\\\vee',\n    '⋀': '\\\\wedge',\n    '∧': '\\\\wedge',\n    '∏': '\\\\prod',\n    '∑': '\\\\sum',\n    '⊙': '\\\\bigodot',\n    '⊗': '\\\\bigoplus',\n    '⊕': 'o+',\n    '∘': '@',\n    '⋈': '\\\\bowtie',\n    '⋊': '\\\\rtimes',\n    '⋉': '\\\\ltimes',\n    '÷': '\\\\div',\n    '×': '\\\\times',\n    '\\\\': '\\\\backslash',\n    '⋆': '\\\\star',\n    '∗': '\\\\star',\n    '⋅': '\\\\cdot',\n    Ω: '\\\\Omega',\n    ω: '\\\\omega',\n    Ψ: '\\\\Psi',\n    ψ: '\\\\psi',\n    χ: '\\\\chi',\n    φ: '\\\\varphi',\n    Φ: '\\\\Phi',\n    ϕ: '\\\\phi',\n    υ: '\\\\upsilon',\n    τ: '\\\\tau',\n    Σ: '\\\\Sigma',\n    σ: '\\\\sigma',\n    ρ: '\\\\rho',\n    Π: '\\\\Pi',\n    π: '\\\\pi',\n    Ξ: '\\\\Xi',\n    ξ: '\\\\xi',\n    ν: '\\\\nu',\n    μ: '\\\\mu',\n    Λ: '\\\\Lambda',\n    λ: '\\\\lambda',\n    κ: '\\\\kappa',\n    ι: '\\\\iota',\n    ϑ: '\\\\vartheta',\n    Θ: '\\\\Theta',\n    θ: '\\\\theta',\n    η: '\\\\eta',\n    ζ: '\\\\zeta',\n    ɛ: '\\\\varepsilon',\n    ε: '\\\\epsilon',\n    Δ: '\\\\Delta',\n    δ: '\\\\delta',\n    Γ: '\\\\Gamma',\n    γ: '\\\\gamma',\n    β: '\\\\beta',\n    α: '\\\\alpha',\n    '∞': '\\\\infty',\n    ϵ: '\\\\epsilon',\n    µ: '\\\\mu',\n    '²': '^{2}',\n    ı: '\\\\imath',\n    '∎': '\\\\blacksquare',\n    ม: '\\\\mathbf{m}',\n    Ω: '\\\\Omega',\n    '⟲': '\\\\circlearrowleft',\n    '⟳': '\\\\circlearrowright',\n    त: ' ',\n    '¥': '\\\\yen',\n    '⁽': '^{(}',\n    '⁾': '^{)}',\n    ß: '\\\\ss',\n    Ћ: '\\\\hbar',\n    '⦵': '\\\\ominus',\n    '⊿': '\\\\bigtriangleup',\n    \"↛'\": '\\\\nrightarrow',\n    '†': '\\\\dagger',\n    เ: '\\\\prime',\n    白: ' ',\n    '⿱': ' ',\n    ℸ: '\\\\wp',\n    퓰: ' ',\n    ⁿ: '^{n}',\n    '✔': '\\\\checkmark',\n    '✗': '\\\\times',\n    '½': '\\\\dfrac{1}{2}',\n    Ө: '\\\\theta',\n    '✓': '\\\\checkmark',\n    '⟩': '\\\\rangle',\n    '⟨': '\\\\langle',\n    '〈': '\\\\langle',\n    '¼': '\\\\dfrac{1}{4}',\n    '…': '\\\\ldots',\n    ℏ: '\\\\hbar',\n    ℜ: '\\\\mathfrak{R}',\n    Ѳ: '\\\\theta',\n    Ø: '\\\\emptyset',\n    ϱ: '\\\\varrho',\n    ф: '\\\\phi',\n    T: 'T',\n    '∙': '\\\\cdot',\n    Ρ: 'P',\n    ᐁ: '\\\\nabla',\n    ƞ: '\\\\eta',\n    ɣ: '\\\\gamma',\n    ћ: '\\\\hbar',\n    Ɛ: '\\\\varepsilon',\n    ⅅ: '\\\\_{D}',\n    𝜆: '\\\\lambda',\n    '〗': '\\\\rangle',\n    '〖': '\\\\langle',\n    ';': ';',\n    𝑥: 'x',\n    𝑦: 'y',\n    𝑧: 'z',\n    𝑖: 'i',\n    𝑗: 'j',\n    𝑘: 'k',\n    𝑚: 'm',\n    𝑒: 'e',\n    𝑟: 'r',\n    ɳ: '\\\\eta',\n    '𝛽': '\\\\beta',\n    '⍵': '\\\\omega',\n    '℘': '\\\\wp',\n    '𝜋': '\\\\pi',\n    Є: '\\\\epsilon',\n    є: '\\\\epsilon',\n    𝜀: '\\\\epsilon',\n    п: '\\\\pi',\n    Ν: '\\\\nu',\n    ɵ: '\\\\theta',\n    '𝜓': '\\\\psi',\n    ϴ: '\\\\theta',\n    ɸ: '\\\\phi',\n    Ӷ: '\\\\Gamma',\n    ɭ: '\\\\ell',\n    ʋ: '\\\\upsilon',\n    𝛟: '\\\\varphi',\n    '⍬': '\\\\theta',\n    Ф: '\\\\Phi',\n    '𝜑': '\\\\varphi',\n    ⅈ: 'i',\n    ο: 'o',\n    ơ: 'o',\n    ƒ: 'f',\n    '⍴': '\\\\rho',\n    '🇽': 'x',\n    '𝑝': 'p',\n    '𝑞': 'q',\n    '𝑠': 's',\n    '𝑡': 't',\n    '𝑢': 'u',\n    '𝑣': 'v',\n    '𝑤': 'w',\n    '𝑎': 'a',\n    '𝑏': 'b',\n    '𝑐': 'c',\n    '𝑑': 'd',\n    '𝑓': 'f',\n    '𝑔': 'g',\n    '𝑙': 'l',\n    '𝑛': 'n',\n    '𝑜': 'o',\n    '𝔀': 'w',\n    '𝚟': 'v',\n    ṁ: 'm',\n    '൦': '\\\\circ',\n    '┴': '\\\\perp',\n    '✕': '\\\\times',\n    '∣': '\\\\mid',\n    Փ: '\\\\Phi',\n    '⎜': '\\\\mid',\n    ħ: '\\\\hbar',\n    ፈ: ' ',\n    '⦨': '\\\\llbracket',\n    ế: '\\\\hat{e}',\n    '¢': '\\\\cent',\n    '⤹': '\\\\downarrow',\n    '⤸': '\\\\downarrow',\n    '⤷': '\\\\Rsh',\n    '⤶': '\\\\Lsh',\n    '⤵': '\\\\downarrow',\n    '⤴': '\\\\uparrow',\n    '⤳': '\\\\rightarrow',\n    '|': '\\\\mid',\n    '⎥': '\\\\mid',\n    '♥': '\\\\heartsuit',\n    О: '0',\n    Υ: 'Y',\n    х: 'x',\n    𝓏: 'z',\n    𝓎: 'y',\n    𝓍: 'x',\n    р: 'p',\n    а: 'a',\n    '£': '\\\\pounds',\n    m: 'm',\n    '𝚵': '\\\\Xi',\n    '⓪': '\\\\textcircled{0}',\n    '①': '\\\\textcircled{1}',\n    '②': '\\\\textcircled{2}',\n    '③': '\\\\textcircled{3}',\n    '④': '\\\\textcircled{4}',\n    '⑤': '\\\\textcircled{5}',\n    '⑥': '\\\\textcircled{6}',\n    '⑦': '\\\\textcircled{7}',\n    '⑧': '\\\\textcircled{8}',\n    '⑨': '\\\\textcircled{9}',\n    '⑩': '\\\\textcircled{10}',\n    '⑪': '\\\\textcircled{11}',\n    '⑫': '\\\\textcircled{12}',\n    '⑬': '\\\\textcircled{13}',\n    '⑭': '\\\\textcircled{14}',\n    '⑮': '\\\\textcircled{15}',\n    '⑯': '\\\\textcircled{16}',\n    '⑰': '\\\\textcircled{17}',\n    '⑱': '\\\\textcircled{18}',\n    '⑲': '\\\\textcircled{19}',\n    '⑳': '\\\\textcircled{20}',\n    '㉑': '\\\\textcircled{21}',\n    '㉒': '\\\\textcircled{22}',\n    '㉓': '\\\\textcircled{23}',\n    '㉔': '\\\\textcircled{24}',\n    '㉕': '\\\\textcircled{25}',\n    '㉖': '\\\\textcircled{26}',\n    '㉗': '\\\\textcircled{27}',\n    '㉘': '\\\\textcircled{28}',\n    '㉙': '\\\\textcircled{29}',\n    '㉚': '\\\\textcircled{30}',\n    '㉛': '\\\\textcircled{31}',\n    '㉜': '\\\\textcircled{32}',\n    '㉝': '\\\\textcircled{33}',\n    '㉞': '\\\\textcircled{34}',\n    '㉟': '\\\\textcircled{35}',\n    '㊱': '\\\\textcircled{36}',\n    '㊲': '\\\\textcircled{37}',\n    '㊳': '\\\\textcircled{38}',\n    '㊴': '\\\\textcircled{39}',\n    '㊵': '\\\\textcircled{40}',\n    '㊶': '\\\\textcircled{41}',\n    '㊷': '\\\\textcircled{42}',\n    '㊸': '\\\\textcircled{43}',\n    '㊹': '\\\\textcircled{44}',\n    '㊺': '\\\\textcircled{45}',\n    '㊻': '\\\\textcircled{46}',\n    '㊼': '\\\\textcircled{47}',\n    '㊽': '\\\\textcircled{48}',\n    '㊾': '\\\\textcircled{49}',\n    '㊿': '\\\\textcircled{50}',\n    '&': '\\\\&',\n    '‖': '\\\\parallel',\n    '%': '\\\\%',\n    '“': '\\\\text{``}',\n    $: '\\\\$',\n    '#': '\\\\#',\n    '℃': '\\\\text{\\\\textdegree C}',\n    '℉': '\\\\text{\\\\textdegree F}',\n    '█': '\\\\blacksquare',\n    '℧': '\\\\mho',\n    '⌋': '\\\\rfloor',\n    '⌊': '\\\\lfloor',\n    '⌉': '\\\\rceil',\n    '⌈': '\\\\lceil',\n    ℇ: '\\\\varepsilon',\n    ⅇ: '\\\\text{e}',\n    ɼ: 'r',\n    '↛': '\\\\nrightarrow',\n    ˆ: '\\\\hat{}',\n    '‾': '\\\\overline',\n    '→': '\\\\rightarrow',\n    '‡': '\\\\ddagger',\n    '・': '\\\\cdot',\n    '▱': '\\\\square',\n    '∆': '\\\\Delta',\n    ἱ: 'i',\n    '∡': '\\\\angle',\n    ϒ: '\\\\Upsilon',\n    '↓': '\\\\downarrow',\n    '↑': '\\\\uparrow',\n    '»': '\\\\gg',\n    '⊤': '\\\\top',\n    '⧸': '/',\n    '𝛿': '\\\\delta',\n    '˳': '\\\\cdot',\n    '։': ':',\n    '⦪': '\\\\measuredangle',\n    '⦩': '\\\\measuredangle',\n    '⦫': '\\\\measuredangle',\n    '⦁': '\\\\cdot',\n    ѳ: '\\\\theta',\n    '⦢': '\\\\measuredangle',\n    '¸': ',',\n    '⎻': '\\\\overline',\n    '⟦': '\\\\llbracket',\n    '𝜙': '\\\\phi',\n    П: '\\\\prod',\n    о: 'o',\n    '≈': '\\\\approx',\n    '≤': '\\\\leq',\n    ђ: '\\\\hbar',\n    Ʌ: '\\\\Lambda',\n    土: '\\\\pm',\n    '⎼': '-',\n    十: '+',\n    '≠': '\\\\neq',\n    '←': '\\\\leftarrow',\n    '।': '\\\\mid',\n    '€': '\\\\euro',\n    '˘': ' ',\n    ῡ: '\\\\bar{u}',\n    '∥': '\\\\parallel',\n    '↔': '\\\\leftrightarrow',\n    '√': '\\\\sqrt{}',\n    ȼ: 'c',\n    '𝞮': '\\\\epsilon',\n    '·': '\\\\cdot',\n    '⦬': '\\\\measuredangle',\n    '⦮': '\\\\measuredangle',\n    '⦭': '\\\\measuredangle',\n    '«': '\\\\ll',\n    Χ: '\\\\mathsf{X}',\n    '│': '\\\\mid',\n    '〉': '\\\\rangle',\n    ₙ: '_{n}',\n    '▫': '\\\\square',\n    '●': '\\\\circle',\n    '”': '\\\\\"',\n};\n\n/**\n * The glyphs MathML uses for double-bar (norm) fences: the ascii digraph and\n * the unicode characters `‖` (U+2016) and `∥` (U+2225), as in issue #43.\n *\n * Centralized so every consumer stays in sync: the fence normalizer (sibling\n * pairing), the generic wrapper (translation to the `\\|` delimiter) and the\n * mfenced separators (Vmatrix classification).\n */\nconst doubleBarFenceGlyphs = new Set(['||', '‖', '∥']);\n\n/**\n * List of LaTeX accent commands that wrap their argument directly (e.g.\n * `\\hat{x}`). Consumed by the under/over converters to decide whether an accent\n * should be applied as a command rather than via `\\overset`/`\\underset`.\n */\nconst latexAccents = ['\\\\hat', '\\\\bar', '\\\\underbrace', '\\\\overbrace'];\n\n/**\n * Lookup table mapping unicode sub/superscript digit glyphs (e.g. `₀`, `⁰`),\n * keyed by glyph, to their LaTeX subscript/superscript form. Consumed by the\n * `<mi>`/`<mn>` converters to translate numeric script glyphs into LaTeX.\n */\nconst mathNumberByGlyph = {\n    '₀': '_{0}',\n    '₁': '_{1}',\n    '₂': '_{2}',\n    '₃': '_{3}',\n    '₄': '_{4}',\n    '₅': '_{5}',\n    '₆': '_{6}',\n    '₇': '_{7}',\n    '₈': '_{8}',\n    '₉': '_{9}',\n    '⁰': '^{0}',\n    '¹': '^{1}',\n    '²': '^{2}',\n    '³': '^{3}',\n    '⁴': '^{4}',\n    '⁵': '^{5}',\n    '⁶': '^{6}',\n    '⁷': '^{7}',\n    '⁸': '^{8}',\n    '⁹': '^{9}',\n    ⁿ: '^{n}',\n    ₙ: '_{n}',\n    '⓪': '\\\\textcircled{0}',\n    '①': '\\\\textcircled{1}',\n    '②': '\\\\textcircled{2}',\n    '③': '\\\\textcircled{3}',\n    '④': '\\\\textcircled{4}',\n    '⑤': '\\\\textcircled{5}',\n    '⑥': '\\\\textcircled{6}',\n    '⑦': '\\\\textcircled{7}',\n    '⑧': '\\\\textcircled{8}',\n    '⑨': '\\\\textcircled{9}',\n    '⑩': '\\\\textcircled{10}',\n    '⑪': '\\\\textcircled{11}',\n    '⑫': '\\\\textcircled{12}',\n    '⑬': '\\\\textcircled{13}',\n    '⑭': '\\\\textcircled{14}',\n    '⑮': '\\\\textcircled{15}',\n    '⑯': '\\\\textcircled{16}',\n    '⑰': '\\\\textcircled{17}',\n    '⑱': '\\\\textcircled{18}',\n    '⑲': '\\\\textcircled{19}',\n    '⑳': '\\\\textcircled{20}',\n    '㉑': '\\\\textcircled{21}',\n    '㉒': '\\\\textcircled{22}',\n    '㉓': '\\\\textcircled{23}',\n    '㉔': '\\\\textcircled{24}',\n    '㉕': '\\\\textcircled{25}',\n    '㉖': '\\\\textcircled{26}',\n    '㉗': '\\\\textcircled{27}',\n    '㉘': '\\\\textcircled{28}',\n    '㉙': '\\\\textcircled{29}',\n    '㉚': '\\\\textcircled{30}',\n    '㉛': '\\\\textcircled{31}',\n    '㉜': '\\\\textcircled{32}',\n    '㉝': '\\\\textcircled{33}',\n    '㉞': '\\\\textcircled{34}',\n    '㉟': '\\\\textcircled{35}',\n    '㊱': '\\\\textcircled{36}',\n    '㊲': '\\\\textcircled{37}',\n    '㊳': '\\\\textcircled{38}',\n    '㊴': '\\\\textcircled{39}',\n    '㊵': '\\\\textcircled{40}',\n    '㊶': '\\\\textcircled{41}',\n    '㊷': '\\\\textcircled{42}',\n    '㊸': '\\\\textcircled{43}',\n    '㊹': '\\\\textcircled{44}',\n    '㊺': '\\\\textcircled{45}',\n    '㊻': '\\\\textcircled{46}',\n    '㊼': '\\\\textcircled{47}',\n    '㊽': '\\\\textcircled{48}',\n    '㊾': '\\\\textcircled{49}',\n    '㊿': '\\\\textcircled{50}',\n    '½': '\\\\dfrac{1}{2}',\n    '⅓': '\\\\dfrac{1}{3}',\n    '⅔': '\\\\dfrac{2}{3}',\n    '¼': '\\\\dfrac{1}{4}',\n    '¾': '\\\\dfrac{3}{4}',\n    '⅕': '\\\\dfrac{1}{5}',\n    '⅖': '\\\\dfrac{2}{5}',\n    '⅗': '\\\\dfrac{3}{5}',\n    '⅘': '\\\\dfrac{4}{5}',\n    '⅙': '\\\\dfrac{1}{6}',\n    '⅚': '\\\\dfrac{5}{6}',\n    '⅐': '\\\\dfrac{1}{7}',\n    '⅛': '\\\\dfrac{1}{8}',\n    '⅜': '\\\\dfrac{3}{8}',\n    '⅝': '\\\\dfrac{5}{8}',\n    '⅞': '\\\\dfrac{7}{8}',\n    '⅑': '\\\\dfrac{1}{9}',\n    '⅒': '\\\\dfrac{1}{10}',\n};\n\n/**\n * This class is used to convert some accents and special characters from utf-8 to latex math commands\n */\nclass HashUTF8ToLtXConverter {\n    convert(char) {\n        const isAlphanumeric = char.match(/[a-z0-9]/i);\n        if (isAlphanumeric) {\n            return char;\n        }\n        const accentChar = vowelsWithAccents[char];\n        if (accentChar) {\n            const lxtCmd = this.convertAccentCharToLtX(accentChar);\n            if (lxtCmd) {\n                return lxtCmd;\n            }\n            return char;\n        }\n        const specialChar = this.convertSpecialCharToLtX(char);\n        if (specialChar) {\n            return specialChar;\n        }\n        return char;\n    }\n    convertAccentCharToLtX(char) {\n        const { char: vowel, accent } = char;\n        const cmd = accentToLTXCmd[accent];\n        if (!cmd) {\n            return null;\n        }\n        return `\\\\${cmd}{${vowel}}`;\n    }\n    convertSpecialCharToLtX(char) {\n        const specialFontChar = specialFontChars[char];\n        if (!specialFontChar) {\n            return null;\n        }\n        const { letter, fontCmd } = specialFontChar;\n        return `\\\\${fontCmd}{${letter}}`;\n    }\n}\nconst vowelsWithAccents = {\n    á: { char: 'a', accent: '´' },\n    à: { char: 'a', accent: '`' },\n    â: { char: 'a', accent: '^' },\n    ã: { char: 'a', accent: '~' },\n    ä: { char: 'a', accent: '¨' },\n    å: { char: 'a', accent: '˚' },\n    ą: { char: 'a', accent: '˙' },\n    ă: { char: 'a', accent: '˘' },\n    ǎ: { char: 'a', accent: 'ˇ' },\n    ǟ: { char: 'a', accent: 'ˆ' },\n    ǻ: { char: 'a', accent: '˙' },\n    ǡ: { char: 'a', accent: '-' },\n    ā: { char: 'a', accent: '-' },\n    é: { char: 'e', accent: '´' },\n    è: { char: 'e', accent: '`' },\n    ê: { char: 'e', accent: '^' },\n    ë: { char: 'e', accent: '¨' },\n    ę: { char: 'e', accent: '˙' },\n    ě: { char: 'e', accent: 'ˇ' },\n    ȇ: { char: 'i', accent: '^' },\n    ё: { char: 'e', accent: '¨' },\n    ē: { char: 'e', accent: '-' },\n    í: { char: 'i', accent: '´' },\n    ì: { char: 'i', accent: '`' },\n    î: { char: 'i', accent: '^' },\n    ï: { char: 'i', accent: '¨' },\n    į: { char: 'i', accent: '˙' },\n    ǐ: { char: 'i', accent: 'ˇ' },\n    ȉ: { char: 'i', accent: '`' },\n    ȋ: { char: 'i', accent: '¨' },\n    ī: { char: 'i', accent: '-' },\n    ó: { char: 'o', accent: '´' },\n    ò: { char: 'o', accent: '`' },\n    ô: { char: 'o', accent: '^' },\n    õ: { char: 'o', accent: '~' },\n    ö: { char: 'o', accent: '¨' },\n    ő: { char: 'o', accent: '˝' },\n    ǒ: { char: 'o', accent: 'ˇ' },\n    ȍ: { char: 'o', accent: '`' },\n    ȏ: { char: 'o', accent: '¨' },\n    ȫ: { char: 'o', accent: '˘' },\n    ȭ: { char: 'o', accent: '˝' },\n    ȯ: { char: 'o', accent: '˙' },\n    ō: { char: 'o', accent: '-' },\n    ú: { char: 'u', accent: '´' },\n    ù: { char: 'u', accent: '`' },\n    û: { char: 'u', accent: '^' },\n    ü: { char: 'u', accent: '¨' },\n    ű: { char: 'u', accent: '˝' },\n    ǔ: { char: 'u', accent: 'ˇ' },\n    ǖ: { char: 'u', accent: '¨' },\n    ǘ: { char: 'u', accent: '¨' },\n    ǚ: { char: 'u', accent: '¨' },\n    ǜ: { char: 'u', accent: '¨' },\n    ȕ: { char: 'u', accent: '`' },\n    ȗ: { char: 'u', accent: '¨' },\n    ū: { char: 'u', accent: '-' },\n    ý: { char: 'y', accent: '´' },\n    ỳ: { char: 'y', accent: '`' },\n    ŷ: { char: 'y', accent: '^' },\n    ÿ: { char: 'y', accent: '¨' },\n    ȳ: { char: 'y', accent: '-' },\n    Á: { char: 'A', accent: '´' },\n    À: { char: 'A', accent: '`' },\n    Â: { char: 'A', accent: '^' },\n    Ã: { char: 'A', accent: '~' },\n    Ä: { char: 'A', accent: '¨' },\n    Å: { char: 'A', accent: '˚' },\n    Å: { char: 'A', accent: '˚' },\n    Ȧ: { char: 'A', accent: '˙' },\n    Ă: { char: 'A', accent: '˘' },\n    Ǎ: { char: 'A', accent: 'ˇ' },\n    Ǟ: { char: 'A', accent: '˝' },\n    Ǻ: { char: 'A', accent: '˚' },\n    Ǡ: { char: 'A', accent: '-' },\n    Ā: { char: 'A', accent: '-' },\n    É: { char: 'E', accent: '´' },\n    È: { char: 'E', accent: '`' },\n    Ė: { char: 'E', accent: '˙' },\n    Ê: { char: 'E', accent: '^' },\n    Ë: { char: 'E', accent: '¨' },\n    Ě: { char: 'E', accent: 'ˇ' },\n    Ȅ: { char: 'E', accent: '`' },\n    Ȇ: { char: 'E', accent: '¨' },\n    Ē: { char: 'E', accent: '-' },\n    Í: { char: 'I', accent: '´' },\n    Ì: { char: 'I', accent: '`' },\n    Î: { char: 'I', accent: '^' },\n    Ï: { char: 'I', accent: '¨' },\n    Ĭ: { char: 'I', accent: '˘' },\n    Ǐ: { char: 'I', accent: 'ˇ' },\n    Ȉ: { char: 'I', accent: '`' },\n    Ȋ: { char: 'I', accent: '¨' },\n    Ī: { char: 'I', accent: '-' },\n    Ó: { char: 'O', accent: '´' },\n    Ò: { char: 'O', accent: '`' },\n    Ô: { char: 'O', accent: '^' },\n    Õ: { char: 'O', accent: '~' },\n    Ö: { char: 'O', accent: '¨' },\n    Ő: { char: 'O', accent: '˝' },\n    Ǒ: { char: 'O', accent: 'ˇ' },\n    Ȍ: { char: 'O', accent: '`' },\n    Ȏ: { char: 'O', accent: '¨' },\n    Ȫ: { char: 'O', accent: '˘' },\n    Ȭ: { char: 'O', accent: '˝' },\n    Ȯ: { char: 'O', accent: '˙' },\n    Ō: { char: 'O', accent: '-' },\n    Ú: { char: 'U', accent: '´' },\n    Ù: { char: 'U', accent: '`' },\n    Û: { char: 'U', accent: '^' },\n    Ü: { char: 'U', accent: '¨' },\n    Ű: { char: 'U', accent: '˝' },\n    Ǔ: { char: 'U', accent: 'ˇ' },\n    Ǖ: { char: 'U', accent: '¨' },\n    Ȕ: { char: 'U', accent: '`' },\n    Ȗ: { char: 'U', accent: '¨' },\n    Ū: { char: 'U', accent: '-' },\n    Ý: { char: 'Y', accent: '´' },\n    Ỳ: { char: 'Y', accent: '`' },\n    Ŷ: { char: 'Y', accent: '^' },\n    Ÿ: { char: 'Y', accent: '¨' },\n    Ȳ: { char: 'Y', accent: '-' },\n    ñ: { char: 'n', accent: '~' },\n    Ñ: { char: 'N', accent: '~' },\n    ç: { char: 'c', accent: '˙' },\n    Ç: { char: 'C', accent: '˙' },\n    ṽ: { char: 'v', accent: '~' },\n    Ṽ: { char: 'V', accent: '~' },\n    ĵ: { char: 'j', accent: '^' },\n    Ĵ: { char: 'J', accent: '^' },\n    ź: { char: 'z', accent: '´' },\n    Ź: { char: 'Z', accent: '´' },\n    Ż: { char: 'Z', accent: '^' },\n    ż: { char: 'z', accent: '^' },\n    Ž: { char: 'Z', accent: 'ˇ' },\n    ž: { char: 'z', accent: 'ˇ' },\n    ẑ: { char: 'z', accent: 'ˆ' },\n};\nconst accentToLTXCmd = {\n    '´': 'acute',\n    '`': 'grave',\n    '^': 'hat',\n    '~': 'tilde',\n    '¨': 'ddot',\n    '˚': 'mathring',\n    '˘': 'breve',\n    ˇ: 'check',\n    '˝': 'H',\n    '˙': 'dot',\n    '-': 'bar',\n    ˆ: 'hat',\n    '˜': 'tilde',\n};\nconst specialFontChars = {\n    // letter A mathbf\n    𝐀: { letter: 'A', fontCmd: 'mathbf' },\n    𝐁: { letter: 'B', fontCmd: 'mathbf' },\n    𝐂: { letter: 'C', fontCmd: 'mathbf' },\n    𝐃: { letter: 'D', fontCmd: 'mathbf' },\n    𝐄: { letter: 'E', fontCmd: 'mathbf' },\n    Ε: { letter: 'E', fontCmd: 'mathbf' },\n    𝐅: { letter: 'F', fontCmd: 'mathbf' },\n    𝐆: { letter: 'G', fontCmd: 'mathbf' },\n    𝐇: { letter: 'H', fontCmd: 'mathbf' },\n    𝐈: { letter: 'I', fontCmd: 'mathbf' },\n    𝐉: { letter: 'J', fontCmd: 'mathbf' },\n    𝐊: { letter: 'K', fontCmd: 'mathbf' },\n    𝐋: { letter: 'L', fontCmd: 'mathbf' },\n    𝐌: { letter: 'M', fontCmd: 'mathbf' },\n    𝐍: { letter: 'N', fontCmd: 'mathbf' },\n    𝐎: { letter: 'O', fontCmd: 'mathbf' },\n    𝐏: { letter: 'P', fontCmd: 'mathbf' },\n    𝐐: { letter: 'Q', fontCmd: 'mathbf' },\n    𝐑: { letter: 'R', fontCmd: 'mathbf' },\n    𝐒: { letter: 'S', fontCmd: 'mathbf' },\n    𝐓: { letter: 'T', fontCmd: 'mathbf' },\n    𝐔: { letter: 'U', fontCmd: 'mathbf' },\n    𝐕: { letter: 'V', fontCmd: 'mathbf' },\n    𝐖: { letter: 'W', fontCmd: 'mathbf' },\n    𝐗: { letter: 'X', fontCmd: 'mathbf' },\n    𝞆: { letter: 'X', fontCmd: 'mathbf' },\n    𝐘: { letter: 'Y', fontCmd: 'mathbf' },\n    𝐙: { letter: 'Z', fontCmd: 'mathbf' },\n    '𝟎': { letter: '0', fontCmd: 'mathbf' },\n    '𝟏': { letter: '1', fontCmd: 'mathbf' },\n    '𝟐': { letter: '2', fontCmd: 'mathbf' },\n    '𝟑': { letter: '3', fontCmd: 'mathbf' },\n    '𝟒': { letter: '4', fontCmd: 'mathbf' },\n    '𝟓': { letter: '5', fontCmd: 'mathbf' },\n    '𝟔': { letter: '6', fontCmd: 'mathbf' },\n    '𝟕': { letter: '7', fontCmd: 'mathbf' },\n    '𝟖': { letter: '8', fontCmd: 'mathbf' },\n    '𝟗': { letter: '9', fontCmd: 'mathbf' },\n    // letter A mathit\n    𝐴: { letter: 'A', fontCmd: 'mathit' },\n    𝐵: { letter: 'B', fontCmd: 'mathit' },\n    𝐶: { letter: 'C', fontCmd: 'mathit' },\n    𝐷: { letter: 'D', fontCmd: 'mathit' },\n    𝐸: { letter: 'E', fontCmd: 'mathit' },\n    𝐹: { letter: 'F', fontCmd: 'mathit' },\n    𝐺: { letter: 'G', fontCmd: 'mathit' },\n    𝐻: { letter: 'H', fontCmd: 'mathit' },\n    𝐼: { letter: 'I', fontCmd: 'mathit' },\n    Ι: { letter: 'I', fontCmd: 'mathit' },\n    𝐽: { letter: 'J', fontCmd: 'mathit' },\n    𝐾: { letter: 'K', fontCmd: 'mathit' },\n    𝐿: { letter: 'L', fontCmd: 'mathit' },\n    𝑀: { letter: 'M', fontCmd: 'mathit' },\n    𝑁: { letter: 'N', fontCmd: 'mathit' },\n    𝑂: { letter: 'O', fontCmd: 'mathit' },\n    𝑃: { letter: 'P', fontCmd: 'mathit' },\n    𝑄: { letter: 'Q', fontCmd: 'mathit' },\n    𝑅: { letter: 'R', fontCmd: 'mathit' },\n    𝑆: { letter: 'S', fontCmd: 'mathit' },\n    𝑇: { letter: 'T', fontCmd: 'mathit' },\n    𝑈: { letter: 'U', fontCmd: 'mathit' },\n    𝑉: { letter: 'V', fontCmd: 'mathit' },\n    𝑊: { letter: 'W', fontCmd: 'mathit' },\n    𝑋: { letter: 'X', fontCmd: 'mathit' },\n    𝑌: { letter: 'Y', fontCmd: 'mathit' },\n    𝑍: { letter: 'Z', fontCmd: 'mathit' },\n    // letter A mathbb\n    𝔸: { letter: 'A', fontCmd: 'mathbb' },\n    𝔹: { letter: 'B', fontCmd: 'mathbb' },\n    ℂ: { letter: 'C', fontCmd: 'mathbb' },\n    𝔻: { letter: 'D', fontCmd: 'mathbb' },\n    𝔼: { letter: 'E', fontCmd: 'mathbb' },\n    𝔽: { letter: 'F', fontCmd: 'mathbb' },\n    𝔾: { letter: 'G', fontCmd: 'mathbb' },\n    ℍ: { letter: 'H', fontCmd: 'mathbb' },\n    𝕀: { letter: 'I', fontCmd: 'mathbb' },\n    𝕁: { letter: 'J', fontCmd: 'mathbb' },\n    𝕂: { letter: 'K', fontCmd: 'mathbb' },\n    𝕃: { letter: 'L', fontCmd: 'mathbb' },\n    𝕄: { letter: 'M', fontCmd: 'mathbb' },\n    ℕ: { letter: 'N', fontCmd: 'mathbb' },\n    𝕆: { letter: 'O', fontCmd: 'mathbb' },\n    ℙ: { letter: 'P', fontCmd: 'mathbb' },\n    ℚ: { letter: 'Q', fontCmd: 'mathbb' },\n    ℝ: { letter: 'R', fontCmd: 'mathbb' },\n    𝕊: { letter: 'S', fontCmd: 'mathbb' },\n    𝕋: { letter: 'T', fontCmd: 'mathbb' },\n    𝕌: { letter: 'U', fontCmd: 'mathbb' },\n    𝕍: { letter: 'V', fontCmd: 'mathbb' },\n    𝕎: { letter: 'W', fontCmd: 'mathbb' },\n    𝕏: { letter: 'X', fontCmd: 'mathbb' },\n    𝕐: { letter: 'Y', fontCmd: 'mathbb' },\n    ℤ: { letter: 'Z', fontCmd: 'mathbb' },\n    '𝟘': { letter: '0', fontCmd: 'mathbb' },\n    '𝟙': { letter: '1', fontCmd: 'mathbb' },\n    '𝟚': { letter: '2', fontCmd: 'mathbb' },\n    '𝟛': { letter: '3', fontCmd: 'mathbb' },\n    '𝟜': { letter: '4', fontCmd: 'mathbb' },\n    '𝟝': { letter: '5', fontCmd: 'mathbb' },\n    '𝟞': { letter: '6', fontCmd: 'mathbb' },\n    '𝟟': { letter: '7', fontCmd: 'mathbb' },\n    '𝟠': { letter: '8', fontCmd: 'mathbb' },\n    '𝟡': { letter: '9', fontCmd: 'mathbb' },\n    // letter A mathcal\n    𝒜: { letter: 'A', fontCmd: 'mathcal' },\n    𝓐: { letter: 'A', fontCmd: 'mathcal' },\n    ℬ: { letter: 'B', fontCmd: 'mathcal' },\n    𝒞: { letter: 'C', fontCmd: 'mathcal' },\n    𝒟: { letter: 'D', fontCmd: 'mathcal' },\n    𝓓: { letter: 'D', fontCmd: 'mathcal' },\n    ℰ: { letter: 'E', fontCmd: 'mathcal' },\n    ℱ: { letter: 'F', fontCmd: 'mathcal' },\n    𝓕: { letter: 'F', fontCmd: 'mathcal' },\n    𝒢: { letter: 'G', fontCmd: 'mathcal' },\n    ℋ: { letter: 'H', fontCmd: 'mathcal' },\n    ℐ: { letter: 'I', fontCmd: 'mathcal' },\n    𝒥: { letter: 'J', fontCmd: 'mathcal' },\n    𝒦: { letter: 'K', fontCmd: 'mathcal' },\n    ℒ: { letter: 'L', fontCmd: 'mathcal' },\n    𝓛: { letter: 'L', fontCmd: 'mathcal' },\n    ℳ: { letter: 'M', fontCmd: 'mathcal' },\n    𝒩: { letter: 'N', fontCmd: 'mathcal' },\n    𝒪: { letter: 'O', fontCmd: 'mathcal' },\n    𝓞: { letter: 'O', fontCmd: 'mathcal' },\n    𝒫: { letter: 'P', fontCmd: 'mathcal' },\n    𝒬: { letter: 'Q', fontCmd: 'mathcal' },\n    ℛ: { letter: 'R', fontCmd: 'mathcal' },\n    𝕽: { letter: 'R', fontCmd: 'mathcal' },\n    '℟': { letter: 'R', fontCmd: 'mathcal' },\n    𝒮: { letter: 'S', fontCmd: 'mathcal' },\n    𝒯: { letter: 'T', fontCmd: 'mathcal' },\n    𝒰: { letter: 'U', fontCmd: 'mathcal' },\n    𝒱: { letter: 'V', fontCmd: 'mathcal' },\n    𝒲: { letter: 'W', fontCmd: 'mathcal' },\n    𝒳: { letter: 'X', fontCmd: 'mathcal' },\n    𝒴: { letter: 'Y', fontCmd: 'mathcal' },\n    𝒵: { letter: 'Z', fontCmd: 'mathcal' },\n    // letter A mathfrak\n    𝔄: { letter: 'A', fontCmd: 'mathfrak' },\n    𝔅: { letter: 'B', fontCmd: 'mathfrak' },\n    ℭ: { letter: 'C', fontCmd: 'mathfrak' },\n    𝔇: { letter: 'D', fontCmd: 'mathfrak' },\n    𝔈: { letter: 'E', fontCmd: 'mathfrak' },\n    𝔉: { letter: 'F', fontCmd: 'mathfrak' },\n    𝔊: { letter: 'G', fontCmd: 'mathfrak' },\n    ℌ: { letter: 'H', fontCmd: 'mathfrak' },\n    ℑ: { letter: 'I', fontCmd: 'mathfrak' },\n    𝔍: { letter: 'J', fontCmd: 'mathfrak' },\n    𝔎: { letter: 'K', fontCmd: 'mathfrak' },\n    𝔏: { letter: 'L', fontCmd: 'mathfrak' },\n    𝔐: { letter: 'M', fontCmd: 'mathfrak' },\n    𝔑: { letter: 'N', fontCmd: 'mathfrak' },\n    𝔒: { letter: 'O', fontCmd: 'mathfrak' },\n    𝔓: { letter: 'P', fontCmd: 'mathfrak' },\n    𝔔: { letter: 'Q', fontCmd: 'mathfrak' },\n    ℜ: { letter: 'R', fontCmd: 'mathfrak' },\n    𝔖: { letter: 'S', fontCmd: 'mathfrak' },\n    𝔗: { letter: 'T', fontCmd: 'mathfrak' },\n    𝔘: { letter: 'U', fontCmd: 'mathfrak' },\n    𝔙: { letter: 'V', fontCmd: 'mathfrak' },\n    𝔚: { letter: 'W', fontCmd: 'mathfrak' },\n    𝔛: { letter: 'X', fontCmd: 'mathfrak' },\n    𝔜: { letter: 'Y', fontCmd: 'mathfrak' },\n    ℨ: { letter: 'Z', fontCmd: 'mathfrak' },\n    // letter A mathsf\n    𝖠: { letter: 'A', fontCmd: 'mathsf' },\n    Α: { letter: 'A', fontCmd: 'mathsf' },\n    𝖡: { letter: 'B', fontCmd: 'mathsf' },\n    Β: { letter: 'B', fontCmd: 'mathsf' },\n    𝖢: { letter: 'C', fontCmd: 'mathsf' },\n    𝖣: { letter: 'D', fontCmd: 'mathsf' },\n    𝖤: { letter: 'E', fontCmd: 'mathsf' },\n    𝖥: { letter: 'F', fontCmd: 'mathsf' },\n    𝖦: { letter: 'G', fontCmd: 'mathsf' },\n    𝖧: { letter: 'H', fontCmd: 'mathsf' },\n    𝖨: { letter: 'I', fontCmd: 'mathsf' },\n    𝖩: { letter: 'J', fontCmd: 'mathsf' },\n    ȷ: { letter: 'J', fontCmd: 'mathsf' },\n    𝖪: { letter: 'K', fontCmd: 'mathsf' },\n    Κ: { letter: 'K', fontCmd: 'mathsf' },\n    𝖫: { letter: 'L', fontCmd: 'mathsf' },\n    𝖬: { letter: 'M', fontCmd: 'mathsf' },\n    𝖭: { letter: 'N', fontCmd: 'mathsf' },\n    𝖮: { letter: 'O', fontCmd: 'mathsf' },\n    𝖯: { letter: 'P', fontCmd: 'mathsf' },\n    𝖰: { letter: 'Q', fontCmd: 'mathsf' },\n    𝖱: { letter: 'R', fontCmd: 'mathsf' },\n    𝖲: { letter: 'S', fontCmd: 'mathsf' },\n    𝖳: { letter: 'T', fontCmd: 'mathsf' },\n    𝖴: { letter: 'U', fontCmd: 'mathsf' },\n    𝖵: { letter: 'V', fontCmd: 'mathsf' },\n    𝖶: { letter: 'W', fontCmd: 'mathsf' },\n    𝖷: { letter: 'X', fontCmd: 'mathsf' },\n    Χ: { letter: 'X', fontCmd: 'mathsf' },\n    𝖸: { letter: 'Y', fontCmd: 'mathsf' },\n    𝖹: { letter: 'Z', fontCmd: 'mathsf' },\n    // letter A mathtt\n    𝚨: { letter: 'A', fontCmd: 'mathtt' },\n    𝚩: { letter: 'B', fontCmd: 'mathtt' },\n    𝚪: { letter: '\\\\Gamma', fontCmd: 'mathtt' },\n    𝚫: { letter: '\\\\Delta', fontCmd: 'mathtt' },\n    𝚬: { letter: 'E', fontCmd: 'mathtt' },\n    𝚭: { letter: 'F', fontCmd: 'mathtt' },\n    𝚮: { letter: 'G', fontCmd: 'mathtt' },\n    𝚯: { letter: '\\\\Theta', fontCmd: 'mathtt' },\n    𝚰: { letter: 'I', fontCmd: 'mathtt' },\n    𝚱: { letter: 'J', fontCmd: 'mathtt' },\n    𝚲: { letter: '\\\\Lambda', fontCmd: 'mathtt' },\n    𝚳: { letter: 'L', fontCmd: 'mathtt' },\n    𝚴: { letter: 'M', fontCmd: 'mathtt' },\n    𝚵: { letter: '\\\\Pi', fontCmd: 'mathtt' },\n    𝚶: { letter: 'O', fontCmd: 'mathtt' },\n    𝚷: { letter: '\\\\Pi', fontCmd: 'mathtt' },\n    𝚸: { letter: 'Q', fontCmd: 'mathtt' },\n    𝚹: { letter: 'R', fontCmd: 'mathtt' },\n    𝚺: { letter: 'S', fontCmd: 'mathtt' },\n    𝚻: { letter: 'T', fontCmd: 'mathtt' },\n    𝚼: { letter: 'U', fontCmd: 'mathtt' },\n    𝚽: { letter: '\\\\Phi', fontCmd: 'mathtt' },\n    𝚾: { letter: 'W', fontCmd: 'mathtt' },\n    𝚿: { letter: '\\\\Psi', fontCmd: 'mathtt' },\n    𝛀: { letter: '\\\\Omega', fontCmd: 'mathtt' },\n};\n\n/**\n * Wraps a string with auto-sizing LaTeX delimiters, prefixing the given\n * open/close characters with `\\left` and `\\right` (e.g. `\\left( ... \\right)`).\n */\nclass GenericWrapper {\n    constructor(open, close) {\n        this._open = '\\\\left' + this._toLatexDelimiter(open);\n        this._close = '\\\\right' + this._toLatexDelimiter(close);\n    }\n    /** @returns `str` wrapped in `\\left`/`\\right` delimiters. */\n    wrap(str) {\n        return new Wrapper(this._open, this._close).wrap(str);\n    }\n    /** Maps a MathML fence character to its valid `\\left`/`\\right` delimiter form. */\n    _toLatexDelimiter(delimiter) {\n        var _a;\n        return (_a = DELIMITER_TRANSLATIONS.get(delimiter)) !== null && _a !== void 0 ? _a : delimiter;\n    }\n}\n/**\n * MathML fence characters that are not valid `\\left`/`\\right` delimiters as-is:\n * braces are grouping characters (need `\\{`/`\\}`) and the double-bar family\n * is the norm delimiter `\\|` (a bare `\\left||` is a stretchy bar followed by a\n * literal one, and the unicode glyphs are not delimiters LaTeX knows at all,\n * as in issue #43).\n */\nconst DELIMITER_TRANSLATIONS = new Map([\n    ['{', '\\\\{'],\n    ['}', '\\\\}'],\n    ...[...doubleBarFenceGlyphs].map((glyph) => [glyph, '\\\\|']),\n]);\n\n/**\n * Joins a list of strings using a list of separators, one per gap. When there\n * are more gaps than separators the last separator is reused; when no\n * separators are given, `defaultSeparator` is used. Used by `<mfenced>` to honor\n * its `separators` attribute.\n */\nclass JoinWithManySeparators {\n    constructor(separators) {\n        this._separators = separators;\n    }\n    /**\n     * @param arr - the strings to join.\n     * @param separators - the separators to place between items, in order.\n     * @param defaultSeparator - separator used when `separators` is empty.\n     * @returns the joined string.\n     */\n    static join(arr, separators, defaultSeparator = '') {\n        const effectiveSeparators = separators.length > 0 ? separators : defaultSeparator !== undefined ? [defaultSeparator] : [];\n        return new JoinWithManySeparators(effectiveSeparators)._join(arr);\n    }\n    _join(arr) {\n        return arr.reduce((joinedStr, currentStr, currentIndex, strArr) => {\n            const separator = currentIndex === strArr.length - 1 ? '' : this._get(currentIndex);\n            return joinedStr + currentStr + separator;\n        }, '');\n    }\n    _get(index) {\n        if (!this._separators[index])\n            return this._separators[this._separators.length - 1];\n        return this._separators[index];\n    }\n}\n\n/**\n * Looks a key up in a lookup table, returning `undefined` for keys that are not\n * own properties (e.g. `constructor`, `toString`, `__proto__`) instead of\n * resolving them through the object's prototype chain. This keeps element text\n * that happens to collide with `Object.prototype` members from leaking\n * unexpected values into the output.\n *\n * @param table - the lookup table.\n * @param key - the key to look up.\n * @returns the mapped value, or `undefined` when the key is not an own property.\n */\nconst ownLookup = (table, key) => Object.prototype.hasOwnProperty.call(table, key) ? table[key] : undefined;\n\n/** Resolves a single identifier value to its LaTeX command via symbol lookup tables, falling back to UTF-8 conversion. */\nclass Character {\n    constructor(value) {\n        this._value = value;\n    }\n    static apply(value) {\n        return new Character(value)._apply();\n    }\n    _apply() {\n        var _a, _b, _c;\n        // `??` instead of `||`: entries mapped to an empty string (e.g. the\n        // invisible operators U+2061-U+2064) are valid results, not lookup misses.\n        return ((_c = (_b = (_a = this._findByCharacter()) !== null && _a !== void 0 ? _a : this._findByGlyph()) !== null && _b !== void 0 ? _b : this._findByNumber()) !== null && _c !== void 0 ? _c : new HashUTF8ToLtXConverter().convert(this._value));\n    }\n    _findByCharacter() {\n        return ownLookup(allMathSymbolsByChar, this._value);\n    }\n    _findByGlyph() {\n        return ownLookup(allMathSymbolsByGlyph, this._value);\n    }\n    _findByNumber() {\n        return ownLookup(mathNumberByGlyph, this._value);\n    }\n}\n\n/**\n * Converts a MathML `<mi>` (identifier) element into LaTeX.\n *\n * Maps known math symbols/glyphs to their LaTeX commands (falling back to UTF-8\n * conversion), then wraps the result according to the `mathvariant` attribute.\n *\n * @example\n * // <mi mathvariant=\"bold\">x</mi> -> \\mathbf{x}\n */\nclass MI {\n    constructor(mathElement) {\n        this.utf8Converter = new HashUTF8ToLtXConverter();\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const normalizedValue = normalizeWhiteSpaces(this._mathmlElement.value);\n        if (normalizedValue === ' ')\n            return Character.apply(normalizedValue);\n        const trimmedValue = normalizedValue.trim();\n        const convertedChar = Character.apply(trimmedValue);\n        const parsedChar = this.utf8Converter.convert(convertedChar);\n        if (parsedChar !== convertedChar)\n            return parsedChar;\n        return this.wrapInMathVariant(convertedChar, this.getMathVariant(this._mathmlElement.attributes));\n    }\n    /** Extracts the `mathvariant` attribute value, or undefined when absent. */\n    getMathVariant(attributes) {\n        if (!attributes || !attributes.mathvariant)\n            return undefined;\n        return attributes.mathvariant;\n    }\n    /** Wraps the value in the LaTeX font command matching the given `mathvariant`. */\n    wrapInMathVariant(value, mathVariant) {\n        switch (mathVariant) {\n            case 'bold':\n                return `\\\\mathbf{${value}}`;\n            case 'italic':\n                return `\\\\mathit{${value}}`;\n            case 'bold-italic':\n                return `\\\\mathbf{\\\\mathit{${value}}}`;\n            case 'double-struck':\n                return `\\\\mathbb{${value}}`;\n            case 'bold-fraktur':\n                return `\\\\mathbf{\\\\mathfrak{${value}}}`;\n            case 'script':\n                return `\\\\mathcal{${value}}`;\n            case 'bold-script':\n                return `\\\\mathbf{\\\\mathcal{${value}}}`;\n            case 'fraktur':\n                return `\\\\mathfrak{${value}}`;\n            case 'sans-serif':\n                return `\\\\mathsf{${value}}`;\n            case 'bold-sans-serif':\n                return `\\\\mathbf{\\\\mathsf{${value}}}`;\n            case 'sans-serif-italic':\n                return `\\\\mathsf{\\\\mathit{${value}}}`;\n            case 'sans-serif-bold-italic':\n                return `\\\\mathbf{\\\\mathsf{\\\\mathit{${value}}}}`;\n            case 'monospace':\n                return `\\\\mathtt{${value}}`;\n            default:\n                return value;\n        }\n    }\n}\n\n/** Resolves a single operator value to its LaTeX command via operator lookup tables, falling back to UTF-8 conversion. */\nclass Operator {\n    constructor(value) {\n        this._value = value;\n    }\n    static operate(value) {\n        return new Operator(value)._operate();\n    }\n    _operate() {\n        var _a, _b, _c;\n        // `??` instead of `||`: entries mapped to an empty string (e.g. the\n        // invisible operators U+2061-U+2064) are valid results, not lookup misses.\n        return ((_c = (_b = (_a = this._findByCharacter()) !== null && _a !== void 0 ? _a : this._findByGlyph()) !== null && _b !== void 0 ? _b : this._findByNumber()) !== null && _c !== void 0 ? _c : new HashUTF8ToLtXConverter().convert(this._value));\n    }\n    _findByCharacter() {\n        return ownLookup(allMathOperatorsByChar, this._value);\n    }\n    _findByGlyph() {\n        return ownLookup(allMathOperatorsByGlyph, this._value);\n    }\n    _findByNumber() {\n        return ownLookup(mathNumberByGlyph, this._value);\n    }\n}\n\n/**\n * Converts a MathML `<mo>` (operator) element into LaTeX.\n *\n * Normalizes/trims the value and resolves it to a LaTeX command through the\n * operator lookup tables, falling back to UTF-8 conversion.\n *\n * @example\n * // <mo>&#x2211;</mo> -> \\sum\n */\nclass MO {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const normalizedValue = normalizeWhiteSpaces(this._mathmlElement.value);\n        const trimmedValue = normalizedValue.trim();\n        return Operator.operate(trimmedValue);\n    }\n}\n\n/**\n * Converts a MathML `<mn>` (number) element into LaTeX.\n *\n * Normalizes/trims the value and maps it through the number-by-glyph table,\n * returning the raw normalized value when no mapping exists.\n *\n * @example\n * // <mn>42</mn> -> 42\n */\nclass MN {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const normalizedValue = normalizeWhiteSpaces(this._mathmlElement.value).trim();\n        const convertedValue = ownLookup(mathNumberByGlyph, normalizedValue);\n        return convertedValue || normalizedValue;\n    }\n}\n\n/**\n * Converts a MathML `<msqrt>` element into a LaTeX square root.\n *\n * Recursively converts every child, joins the results with spaces and wraps\n * them in `\\sqrt{...}`.\n *\n * @example\n * // <msqrt><mn>2</mn></msqrt> -> \\sqrt{2}\n */\nclass MSqrt {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const latexJoinedChildren = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n        return `\\\\sqrt{${latexJoinedChildren}}`;\n    }\n}\n\n/** Joins the converted children with the requested separators and wraps them in the open/close fences. */\nclass Vector {\n    constructor(open, close, separators, defaultSeparator) {\n        this.separators = separators;\n        this.defaultSeparator = defaultSeparator;\n        this.open = open || '(';\n        this.close = close || ')';\n    }\n    apply(latexContents) {\n        const contentWithoutWrapper = JoinWithManySeparators.join(latexContents, this.separators, this.defaultSeparator);\n        return new GenericWrapper(this.open, this.close).wrap(contentWithoutWrapper);\n    }\n}\n\n/** Classifies a pair of open/close fences and wraps content in them. */\nclass Separators {\n    constructor(open, close) {\n        this.open = open;\n        this.close = close;\n    }\n    wrap(str) {\n        return new GenericWrapper(this.open, this.close).wrap(str);\n    }\n    areParentheses() {\n        return this._compare('(', ')');\n    }\n    areSquareBrackets() {\n        return this._compare('[', ']');\n    }\n    areBrackets() {\n        return this._compare('{', '}');\n    }\n    areDivides() {\n        return this._compare('|', '|');\n    }\n    areParallels() {\n        return this.open === this.close && doubleBarFenceGlyphs.has(this.open);\n    }\n    areNotEqual() {\n        return this.open !== this.close;\n    }\n    _compare(openToCompare, closeToCompare) {\n        return this.open === openToCompare && this.close === closeToCompare;\n    }\n}\n\n/** Renders the converted children as a LaTeX matrix environment chosen from the open/close fences. */\nclass Matrix {\n    constructor(open, close) {\n        this._genericCommand = 'matrix';\n        this.separators = new Separators(open, close);\n    }\n    apply(latexContents) {\n        const command = this._command;\n        const matrix = `\\\\begin{${command}}\\n${latexContents.join('')}\\n\\\\end{${command}}`;\n        return command === this._genericCommand ? this.separators.wrap(matrix) : matrix;\n    }\n    get _command() {\n        if (this.separators.areParentheses())\n            return 'pmatrix';\n        if (this.separators.areSquareBrackets())\n            return 'bmatrix';\n        if (this.separators.areBrackets())\n            return 'Bmatrix';\n        if (this.separators.areDivides())\n            return 'vmatrix';\n        if (this.separators.areParallels())\n            return 'Vmatrix';\n        if (this.separators.areNotEqual())\n            return this._genericCommand;\n        return 'bmatrix';\n    }\n}\n\n/**\n * Converts a MathML `<mfenced>` element into LaTeX delimited content.\n *\n * Children are converted and either wrapped as a matrix (when a descendant\n * `<mtable>` is present, picking the environment from the open/close fences) or\n * joined with the `separators`/`open`/`close` attributes as a delimited vector.\n *\n * @example\n * // <mfenced open=\"(\" close=\")\"><mi>a</mi><mi>b</mi></mfenced> -> \\left(a,b\\right)\n */\nclass MFenced {\n    constructor(mathmlElement) {\n        this._mathmlElement = mathmlElement;\n        this.open = this._mathmlElement.attributes.open || '';\n        this.close = this._mathmlElement.attributes.close || '';\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const latexChildren = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert());\n        if (this._isThereRelativeOfName(this._mathmlElement.children, 'mtable'))\n            return new Matrix(this.open, this.close).apply(latexChildren);\n        const separatorsAttr = this._mathmlElement.attributes.separators;\n        const hasSeparatorsAttribute = separatorsAttr !== undefined;\n        const separatorsArray = separatorsAttr ? Array.from(separatorsAttr) : [];\n        // Use comma default only if no separators **attribute** was provided\n        const defaultSeparator = !hasSeparatorsAttribute ? ',' : '';\n        return new Vector(this.open, this.close, separatorsArray, defaultSeparator).apply(latexChildren);\n    }\n    /** Depth-first searches the subtree for any descendant element with the given name. */\n    _isThereRelativeOfName(mathmlElements, elementName) {\n        var _a;\n        // Iterative depth-first search so a deeply nested subtree cannot overflow\n        // the call stack.\n        const stack = [...mathmlElements];\n        while (stack.length > 0) {\n            const element = stack.pop();\n            if (element.name === elementName)\n                return true;\n            stack.push(...((_a = element.children) !== null && _a !== void 0 ? _a : []));\n        }\n        return false;\n    }\n}\n\n/**\n * Thrown when a MathML element does not have the number of children its\n * converter requires (e.g. `<mfrac>` needs exactly two).\n */\nclass InvalidNumberOfChildrenError extends Error {\n    /**\n     * @param tagName - the offending element's tag name.\n     * @param expectedNumberOfChild - the number of children the converter expects.\n     * @param currentNumberOfChild - the number of children actually present.\n     * @param comparison - how to read the expectation (e.g. `exactly`, `at least`).\n     */\n    constructor(tagName, expectedNumberOfChild, currentNumberOfChild, comparison = 'exactly') {\n        super(`${tagName} tag must have ${comparison} ${expectedNumberOfChild} children. It's actually ${currentNumberOfChild}`);\n        this.name = 'InvalidNumberOfChildrenError';\n    }\n}\n\n/**\n * Value object that interprets a MathML `<mfrac>` `linethickness` attribute and\n * resolves it to a LaTeX bar thickness usable in `\\genfrac`.\n *\n * Mappings that LaTeX cannot reproduce exactly are approximated in points:\n * unitless multipliers of the (renderer-defined) default rule thickness, the\n * `thin`/`thick` keywords, percentages and pixels.\n *\n * @example\n * // new LineThickness(undefined).toLaTeX() -> null   (default \\frac bar)\n * @example\n * // new LineThickness('0').toLaTeX()       -> '0pt'  (bar-less)\n * @example\n * // new LineThickness('2pt').toLaTeX()     -> '2pt'  (absolute, passed through)\n * @example\n * // new LineThickness('2').toLaTeX()       -> '0.8pt' (2x the default thickness)\n */\nclass LineThickness {\n    constructor(raw) {\n        this._raw = raw;\n    }\n    /**\n     * @returns the LaTeX dimension to use as the fraction bar thickness, or `null`\n     * to keep the default-thickness `\\frac` bar.\n     */\n    toLaTeX() {\n        if (!this._raw)\n            return null;\n        const value = this._raw.trim().toLowerCase();\n        // Keywords. `medium` equals the default bar; `thin`/`thick` are renderer-defined.\n        if (value === 'medium')\n            return null;\n        if (value === 'thin')\n            return formatPoints(DEFAULT_RULE_THICKNESS_PT * 0.5);\n        if (value === 'thick')\n            return formatPoints(DEFAULT_RULE_THICKNESS_PT * 2);\n        const match = value.match(/^(-?\\d*\\.?\\d+)\\s*([a-z%]*)$/);\n        if (!match)\n            return null;\n        const amount = parseFloat(match[1]);\n        const unit = match[2];\n        if (amount === 0)\n            return '0pt';\n        // Unitless number: a multiplier of the (renderer-defined) default rule thickness.\n        if (unit === '')\n            return amount === 1 ? null : formatPoints(amount * DEFAULT_RULE_THICKNESS_PT);\n        // Pixels: not a TeX unit, approximated with points (1px = 0.75pt at 96dpi).\n        if (unit === 'px')\n            return formatPoints(amount * PT_PER_PX);\n        // Percentage: relative to the default rule thickness.\n        if (unit === '%')\n            return formatPoints((amount / 100) * DEFAULT_RULE_THICKNESS_PT);\n        // Absolute lengths LaTeX understands: pass through unchanged.\n        if (TEX_LENGTH_UNITS.includes(unit))\n            return `${amount}${unit}`;\n        // Unknown unit: fall back to the default bar.\n        return null;\n    }\n}\n/** Approximation of the default fraction rule thickness, which MathML leaves unspecified. */\nconst DEFAULT_RULE_THICKNESS_PT = 0.4;\n/** Points per CSS pixel at 96dpi (1px = 1/96in, 1pt = 1/72in). */\nconst PT_PER_PX = 0.75;\n/** Length units LaTeX can consume directly inside a `\\genfrac` thickness slot. */\nconst TEX_LENGTH_UNITS = ['pt', 'pc', 'in', 'cm', 'mm', 'em', 'ex', 'bp', 'dd', 'cc'];\n/** Formats a point value, trimming floating-point noise (e.g. `0.8pt`). */\nfunction formatPoints(valuePt) {\n    return `${Math.round(valuePt * 10000) / 10000}pt`;\n}\n\n/**\n * Converts a MathML `<mfrac>` element into a LaTeX fraction.\n *\n * Produces `\\frac{numerator}{denominator}` for a default-thickness bar, or the\n * bevelled form `numerator/denominator` (each side wrapped in parentheses when\n * longer than one character) when the `bevelled` attribute is set.\n *\n * When `linethickness` requests a non-default bar, the `\\genfrac` form is used so\n * the thickness is preserved: `\\genfrac{}{}{<thickness>}{}{numerator}{denominator}`.\n * A zero thickness renders without the bar (used, for instance, inside binomial\n * coefficients). The surrounding parentheses of a binomial coefficient are not\n * added here: in canonical MathML they come from sibling `<mo>`/`<mfenced>`\n * elements and are converted independently. Thickness parsing is delegated to\n * {@link LineThickness}.\n *\n * @example\n * // <mfrac><mn>1</mn><mn>2</mn></mfrac> -> \\frac{1}{2}\n * @example\n * // <mfrac bevelled=\"true\"><mn>1</mn><mn>2</mn></mfrac> -> 1/2\n * @example\n * // <mfrac linethickness=\"0\"><mi>n</mi><mi>k</mi></mfrac> -> \\genfrac{}{}{0pt}{}{n}{k}\n * @example\n * // <mfrac linethickness=\"2pt\"><mn>1</mn><mn>2</mn></mfrac> -> \\genfrac{}{}{2pt}{}{1}{2}\n */\nclass MFrac {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 2 children.\n     */\n    convert() {\n        const { children, name } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 2)\n            throw new InvalidNumberOfChildrenError(name, 2, childrenLength);\n        const num = mathMLElementToLaTeXConverter(children[0]).convert();\n        const den = mathMLElementToLaTeXConverter(children[1]).convert();\n        if (this._isBevelled())\n            return `${this._wrapIfMoreThanOneChar(num)}/${this._wrapIfMoreThanOneChar(den)}`;\n        const thickness = new LineThickness(this._mathmlElement.attributes.linethickness).toLaTeX();\n        if (thickness !== null)\n            return `\\\\genfrac{}{}{${thickness}}{}{${num}}{${den}}`;\n        return `\\\\frac{${num}}{${den}}`;\n    }\n    /** Wraps the bevelled-fraction side in parentheses when it is longer than one character. */\n    _wrapIfMoreThanOneChar(str) {\n        return new ParenthesisWrapper().wrapIfMoreThanOneChar(str);\n    }\n    /** Whether the `bevelled` attribute requests the inline `a/b` form. */\n    _isBevelled() {\n        return !!this._mathmlElement.attributes.bevelled;\n    }\n}\n\n/**\n * Converts a MathML `<mroot>` element into a LaTeX n-th root.\n *\n * Converts the first child as the radicand and the second child as the index,\n * producing `\\sqrt[index]{content}`.\n *\n * @example\n * // <mroot><mn>8</mn><mn>3</mn></mroot> -> \\sqrt[3]{8}\n */\nclass MRoot {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 2 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 2)\n            throw new InvalidNumberOfChildrenError(name, 2, childrenLength);\n        const content = mathMLElementToLaTeXConverter(children[0]).convert();\n        const rootIndex = mathMLElementToLaTeXConverter(children[1]).convert();\n        return `\\\\sqrt[${rootIndex}]{${content}}`;\n    }\n}\n\n/**\n * Converts a MathML `<maction>` element into LaTeX.\n *\n * For toggle actions (or when `actiontype` is absent) it joins all child\n * conversions with `\\Longrightarrow`; otherwise it converts only the first child.\n *\n * @example\n * // <maction actiontype=\"toggle\"><mi>a</mi><mi>b</mi></maction> -> a \\Longrightarrow b\n */\nclass MAction {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const { children } = this._mathmlElement;\n        if (this._isToggle())\n            return children\n                .map((child) => mathMLElementToLaTeXConverter(child))\n                .map((converter) => converter.convert())\n                .join(' \\\\Longrightarrow ');\n        return mathMLElementToLaTeXConverter(children[0]).convert();\n    }\n    /** True when the action is a toggle, i.e. `actiontype` is 'toggle' or unset. */\n    _isToggle() {\n        const { actiontype } = this._mathmlElement.attributes;\n        return actiontype === 'toggle' || !actiontype;\n    }\n}\n\n/**\n * Converts a MathML `<menclose>` element into LaTeX.\n *\n * Recursively converts its children and wraps them in the LaTeX construct that\n * matches the `notation` attribute (e.g. radical, box, strike), defaulting to a\n * long-division style overline when `notation` is absent or unrecognized.\n *\n * @example\n * // <menclose notation=\"radical\"><mi>x</mi></menclose> -> \\sqrt{x}\n */\nclass MEnclose {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const latexJoinedChildren = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n        if (this._notation === 'actuarial')\n            return `\\\\overline{\\\\left.${latexJoinedChildren}\\\\right|}`;\n        if (this._notation === 'radical')\n            return `\\\\sqrt{${latexJoinedChildren}}`;\n        if (['box', 'roundedbox', 'circle'].includes(this._notation))\n            return `\\\\boxed{${latexJoinedChildren}}`;\n        if (this._notation === 'left')\n            return `\\\\left|${latexJoinedChildren}`;\n        if (this._notation === 'right')\n            return `${latexJoinedChildren}\\\\right|`;\n        if (this._notation === 'top')\n            return `\\\\overline{${latexJoinedChildren}}`;\n        if (this._notation === 'bottom')\n            return `\\\\underline{${latexJoinedChildren}}`;\n        if (this._notation === 'updiagonalstrike')\n            return `\\\\cancel{${latexJoinedChildren}}`;\n        if (this._notation === 'downdiagonalstrike')\n            return `\\\\bcancel{${latexJoinedChildren}}`;\n        if (this._notation === 'updiagonalarrow')\n            return `\\\\cancelto{}{${latexJoinedChildren}}`;\n        if (['verticalstrike', 'horizontalstrike'].includes(this._notation))\n            return `\\\\hcancel{${latexJoinedChildren}}`;\n        if (this._notation === 'madruwb')\n            return `\\\\underline{${latexJoinedChildren}\\\\right|}`;\n        if (this._notation === 'phasorangle')\n            return `{\\\\angle \\\\underline{${latexJoinedChildren}}}`;\n        return `\\\\overline{\\\\left.\\\\right)${latexJoinedChildren}}`;\n    }\n    /** Returns the `notation` attribute, defaulting to 'longdiv'. */\n    get _notation() {\n        return this._mathmlElement.attributes.notation || 'longdiv';\n    }\n}\n\n/**\n * Converts a MathML `<merror>` element into LaTeX.\n *\n * Recursively converts its children, joins them with spaces, and wraps the\n * result in a red `\\color` group.\n *\n * @example\n * // <merror><mi>x</mi></merror> -> \\color{red}{x}\n */\nclass MError {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const latexJoinedChildren = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n        return `\\\\color{red}{${latexJoinedChildren}}`;\n    }\n}\n\n/**\n * Converts a MathML `<mphantom>` element into LaTeX.\n *\n * The element reserves layout space without rendering content, so it produces\n * an empty string.\n *\n * @example\n * // <mphantom>x</mphantom> -> ''\n */\nclass MPhantom {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        return '';\n    }\n}\n\n/**\n * Converts a MathML `<msup>` element into a LaTeX superscript.\n *\n * Produces `base^{exponent}`. The base is parenthesized when it has more than\n * one child (and is longer than one character); the exponent is always wrapped\n * in braces.\n *\n * @example\n * // <msup><mi>x</mi><mn>2</mn></msup> -> x^{2}\n */\nclass MSup {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 2 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 2)\n            throw new InvalidNumberOfChildrenError(name, 2, childrenLength);\n        const baseChild = children[0];\n        const exponentChild = children[1];\n        return `${this._handleBaseChild(baseChild)}^${this._handleExponentChild(exponentChild)}`;\n    }\n    /** Converts the base, parenthesizing it when it groups more than one child. */\n    _handleBaseChild(base) {\n        const baseChildren = base.children;\n        const baseStr = mathMLElementToLaTeXConverter(base).convert();\n        if (baseChildren.length <= 1) {\n            return baseStr;\n        }\n        return new ParenthesisWrapper().wrapIfMoreThanOneChar(baseStr);\n    }\n    /** Converts the exponent and wraps it in braces. */\n    _handleExponentChild(exponent) {\n        const exponentStr = mathMLElementToLaTeXConverter(exponent).convert();\n        return new BracketWrapper().wrap(exponentStr);\n    }\n}\n\n/**\n * Converts a MathML `<msub>` element into a LaTeX subscript.\n *\n * Produces `base_{subscript}`. The base is parenthesized when it has more than\n * one child (and is longer than one character); the subscript is always wrapped\n * in braces.\n *\n * @example\n * // <msub><mi>x</mi><mn>1</mn></msub> -> x_{1}\n */\nclass MSub {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 2 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 2)\n            throw new InvalidNumberOfChildrenError(name, 2, childrenLength);\n        const baseChild = children[0];\n        const subscriptChild = children[1];\n        return `${this._handleBaseChild(baseChild)}_${this._handleSubscriptChild(subscriptChild)}`;\n    }\n    /** Converts the base, parenthesizing it when it groups more than one child. */\n    _handleBaseChild(base) {\n        const baseChildren = base.children;\n        const baseStr = mathMLElementToLaTeXConverter(base).convert();\n        if (baseChildren.length <= 1) {\n            return baseStr;\n        }\n        return new ParenthesisWrapper().wrapIfMoreThanOneChar(baseStr);\n    }\n    /** Converts the subscript and wraps it in braces. */\n    _handleSubscriptChild(subscript) {\n        const subscriptStr = mathMLElementToLaTeXConverter(subscript).convert();\n        return new BracketWrapper().wrap(subscriptStr);\n    }\n}\n\n/**\n * Converts a MathML `<msubsup>` element into a combined LaTeX subscript and superscript.\n *\n * Produces `base_{subscript}^{superscript}`. The base is parenthesized when it\n * has more than one child (and is longer than one character); both the subscript\n * and superscript are always wrapped in braces.\n *\n * @example\n * // <msubsup><mi>x</mi><mn>1</mn><mn>2</mn></msubsup> -> x_{1}^{2}\n */\nclass MSubsup {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 3 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 3)\n            throw new InvalidNumberOfChildrenError(name, 3, childrenLength);\n        const baseChild = children[0];\n        const subscriptChild = children[1];\n        const superscriptChild = children[2];\n        return `${this._handleBaseChild(baseChild)}_${this._handleSubscriptChild(subscriptChild)}^${this._handleSuperscriptChild(superscriptChild)}`;\n    }\n    /** Converts the base, parenthesizing it when it groups more than one child. */\n    _handleBaseChild(base) {\n        const baseChildren = base.children;\n        const baseStr = mathMLElementToLaTeXConverter(base).convert();\n        if (baseChildren.length <= 1) {\n            return baseStr;\n        }\n        return new ParenthesisWrapper().wrapIfMoreThanOneChar(baseStr);\n    }\n    /** Converts the subscript and wraps it in braces. */\n    _handleSubscriptChild(subscript) {\n        const subscriptStr = mathMLElementToLaTeXConverter(subscript).convert();\n        return new BracketWrapper().wrap(subscriptStr);\n    }\n    /** Converts the superscript and wraps it in braces. */\n    _handleSuperscriptChild(superscript) {\n        const superscriptStr = mathMLElementToLaTeXConverter(superscript).convert();\n        return new BracketWrapper().wrap(superscriptStr);\n    }\n}\n\n/**\n * Converts a MathML `<mmultiscripts>` element into LaTeX.\n *\n * Parses the structure the spec defines, `base (sub sup)* [mprescripts\n * (presub presup)*]`, accepting the `<mprescripts/>` marker at any position:\n * every prescript pair is emitted as `{}_{sub}^{sup}` before the base and\n * every postscript pair after it, with `{}` atoms separating consecutive\n * pairs so multiple pairs never produce a LaTeX double-subscript error.\n * `<none/>` placeholders and missing trailing scripts are omitted instead of\n * emitting empty `_{}`/`^{}`.\n *\n * @example\n * // <mmultiscripts><mi>X</mi><mprescripts/><mn>1</mn><mn>2</mn></mmultiscripts> -> {}_{1}^{2}X\n * @example\n * // <mmultiscripts><mi>F</mi><mn>1</mn><mn>2</mn><mn>3</mn><mn>4</mn></mmultiscripts> -> F_{1}^{2}{}_{3}^{4}\n */\nclass MMultiscripts {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} when the base child is missing.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        if (children.length === 0)\n            throw new InvalidNumberOfChildrenError(name, 1, 0, 'at least');\n        const base = this._baseLatex(children[0]);\n        const { prescripts, postscripts } = this._splitScripts(children.slice(1));\n        return this._pairsLatex(prescripts, true) + base + this._pairsLatex(postscripts, false);\n    }\n    /**\n     * Converts the base, grouping a multi-token result with braces so the\n     * scripts attach to all of it (and never collide with the base's own\n     * scripts, e.g. a `msub` base). An empty base becomes an empty atom so the\n     * surrounding scripts still have something valid to attach to.\n     */\n    _baseLatex(base) {\n        const latex = mathMLElementToLaTeXConverter(base).convert();\n        if (latex === '')\n            return '{}';\n        return latex.length === 1 ? latex : `{${latex}}`;\n    }\n    /** Splits the script children at the `<mprescripts/>` marker, wherever it is. */\n    _splitScripts(scripts) {\n        const markerIndex = scripts.findIndex((child) => child.name === 'mprescripts');\n        const postscripts = markerIndex === -1 ? scripts : scripts.slice(0, markerIndex);\n        const prescripts = markerIndex === -1 ? [] : scripts.slice(markerIndex + 1);\n        return { prescripts: this._toPairs(prescripts), postscripts: this._toPairs(postscripts) };\n    }\n    _toPairs(elements) {\n        const pairs = [];\n        for (let i = 0; i < elements.length; i += 2) {\n            pairs.push({ sub: this._scriptLatex(elements[i]), sup: this._scriptLatex(elements[i + 1]) });\n        }\n        return pairs;\n    }\n    /** `<none/>` placeholders and missing trailing scripts become empty scripts. */\n    _scriptLatex(element) {\n        if (element === undefined || element.name === 'none')\n            return '';\n        return mathMLElementToLaTeXConverter(element).convert();\n    }\n    /**\n     * Renders the pairs. Prescript pairs always hang off their own empty `{}`\n     * atom; the first postscript pair attaches straight to the base and every\n     * following pair gets a `{}` atom, which is what prevents double-subscript\n     * errors. Fully empty pairs have no LaTeX representation and are skipped.\n     */\n    _pairsLatex(pairs, isPrescript) {\n        let latex = '';\n        let attachesToBase = !isPrescript;\n        for (const pair of pairs) {\n            const scripts = (pair.sub ? `_{${pair.sub}}` : '') + (pair.sup ? `^{${pair.sup}}` : '');\n            if (scripts === '')\n                continue;\n            latex += (attachesToBase ? '' : '{}') + scripts;\n            attachesToBase = false;\n        }\n        return latex;\n    }\n}\n\n/** Wraps a text value in the LaTeX text/font command(s) matching the given `mathvariant`. */\nclass TextCommand {\n    constructor(mathvariant) {\n        this._mathvariant = mathvariant || 'normal';\n    }\n    apply(value) {\n        return this._commands.reduce((acc, command, index) => {\n            if (index === 0)\n                return `${command}{${value}}`;\n            return `${command}{${acc}}`;\n        }, '');\n    }\n    get _commands() {\n        switch (this._mathvariant) {\n            case 'bold':\n                return ['\\\\textbf'];\n            case 'italic':\n                return ['\\\\textit'];\n            case 'bold-italic':\n                return ['\\\\textit', '\\\\textbf'];\n            case 'double-struck':\n                return ['\\\\mathbb'];\n            case 'monospace':\n                return ['\\\\mathtt'];\n            case 'bold-fraktur':\n            case 'fraktur':\n                return ['\\\\mathfrak'];\n            default:\n                return ['\\\\text'];\n        }\n    }\n}\n\n/**\n * Converts a MathML `<mtext>` element into LaTeX.\n *\n * Splits the text into runs of alphanumeric/space characters and standalone\n * symbols: alphanumeric runs are wrapped by the `mathvariant` text command while\n * each symbol is delegated to the `<mi>` converter.\n *\n * @example\n * // <mtext mathvariant=\"bold\">hi</mtext> -> \\textbf{hi}\n */\nclass MText {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const { attributes, value } = this._mathmlElement;\n        return [...value]\n            .map((char) => {\n            // if is a letter, number or space, return it\n            if (/^[a-zA-Z0-9]$/.test(char) || char === ' ')\n                return {\n                    value: char,\n                    isAlphanumeric: true,\n                };\n            // if is a symbol, set it to mi parser\n            return {\n                value: char,\n                isAlphanumeric: false,\n            };\n        })\n            .reduce((acc, char) => {\n            // merge consecutive alphanumeric characters\n            if (char.isAlphanumeric) {\n                const lastChar = acc[acc.length - 1];\n                if (lastChar && lastChar.isAlphanumeric) {\n                    lastChar.value += char.value;\n                    return acc;\n                }\n            }\n            return [...acc, char];\n        }, [])\n            .map((char) => {\n            if (!char.isAlphanumeric) {\n                return new MI({\n                    name: 'mi',\n                    attributes: {},\n                    children: [],\n                    value: char.value,\n                }).convert();\n            }\n            return new TextCommand(attributes.mathvariant).apply(char.value);\n        })\n            .join('');\n    }\n}\n\n/**\n * Converts a MathML `<munderover>` element into LaTeX under/over scripts.\n *\n * Converts the three children as base, under-content and over-content,\n * producing `base_{under}^{over}`.\n *\n * @example\n * // <munderover><mo>∑</mo><mi>i</mi><mi>n</mi></munderover> -> \\sum_{i}^{n}\n */\nclass MUnderover {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} if the element does not have exactly 3 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 3)\n            throw new InvalidNumberOfChildrenError(name, 3, childrenLength);\n        const base = mathMLElementToLaTeXConverter(children[0]).convert();\n        const underContent = mathMLElementToLaTeXConverter(children[1]).convert();\n        const overContent = mathMLElementToLaTeXConverter(children[2]).convert();\n        return `${base}_{${underContent}}^{${overContent}}`;\n    }\n}\n\n/**\n * Detects whether a `<mtable>` declares multiline equation alignment, the\n * shape LaTeX-to-MathML emitters (MathJax, LaTeXML) produce for `align`: a\n * `columnalign` declaration, on the table or spread over its rows/cells,\n * mixing `right` and `left` columns.\n *\n * The decision deliberately reads formatting metadata only, never cell\n * content: per the MathML spec a table without `columnalign` defaults to\n * centered columns, so inferring alignment from what the cells contain would\n * contradict the declared presentation.\n *\n * Used by the `<mtable>` converter to pick `aligned` over `matrix` when it has\n * to wrap a bare table in an environment.\n */\nclass EquationAlignment {\n    constructor(table) {\n        this._table = table;\n    }\n    /** @returns true when the table declares mixed right/left column alignment. */\n    static matches(table) {\n        return new EquationAlignment(table)._matches();\n    }\n    _matches() {\n        const tokens = new Set(this._columnAlignTokens());\n        return tokens.has('right') && tokens.has('left');\n    }\n    _columnAlignTokens() {\n        const rows = this._rows();\n        const cells = rows.reduce((acc, row) => acc.concat(this._cells(row)), []);\n        return [this._table, ...rows, ...cells]\n            .map((element) => element.attributes.columnalign)\n            .filter((value) => !!value)\n            .reduce((acc, value) => acc.concat(value.trim().split(/\\s+/)), []);\n    }\n    _rows() {\n        return this._table.children.filter((child) => child.name === 'mtr');\n    }\n    _cells(row) {\n        return row.children.filter((child) => child.name === 'mtd');\n    }\n}\n\n/**\n * Converts a MathML `<mtable>` element into LaTeX matrix rows.\n *\n * Each row child is converted and the results are joined with `\\\\` row\n * separators. Flags set by the tree pre-pass control the wrapper: `innerTable`\n * (table nested in another table) wraps the rows in a `matrix` environment, and\n * `bareTable` (table that no other converter wraps) wraps them in `matrix`, or\n * in `aligned` when {@link EquationAlignment} recognizes the input tree as\n * multiline equation alignment, so `&`/`\\\\` never end up outside an environment.\n *\n * @example\n * // <mtable><mtr><mtd><mn>1</mn></mtd></mtr></mtable> -> \\begin{matrix}1\\end{matrix}\n */\nclass MTable {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const tableContent = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' \\\\\\\\\\n');\n        // Both flags are set by the iterative pre-pass in tree-to-latex.\n        if (this._hasFlag('innerTable'))\n            return this._wrap(tableContent, 'matrix');\n        if (this._hasFlag('bareTable')) {\n            return this._wrap(tableContent, EquationAlignment.matches(this._mathmlElement) ? 'aligned' : 'matrix');\n        }\n        return tableContent;\n    }\n    /** Wraps the rows in the given LaTeX environment. */\n    _wrap(latex, environment) {\n        return `\\\\begin{${environment}}${latex}\\\\end{${environment}}`;\n    }\n    /** Checks whether the given boolean flag attribute is present and truthy. */\n    _hasFlag(flag) {\n        return !!this._mathmlElement.attributes[flag];\n    }\n}\n\n/**\n * Converts a MathML `<mtr>` (table row) element into LaTeX.\n *\n * Each cell child is converted and the results are joined with the `&` column\n * separator used inside LaTeX matrix environments. When the row carries the\n * `bareRow` flag (set by the tree pre-pass for rows with no `<mtable>`\n * ancestor) it wraps itself in a `matrix` environment, so the `&` separators\n * never end up outside an environment.\n *\n * @example\n * // <mtr><mtd><mn>1</mn></mtd><mtd><mn>2</mn></mtd></mtr> -> 1 & 2\n */\nclass MTr {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const row = this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' & ');\n        // The `bareRow` flag is set by the iterative pre-pass in tree-to-latex.\n        return this._mathmlElement.attributes['bareRow'] ? `\\\\begin{matrix}${row}\\\\end{matrix}` : row;\n    }\n}\n\n/**\n * Fallback converter that recursively converts every child and joins the\n * results with single spaces.\n *\n * Used for container-like MathML elements that have no special LaTeX rendering\n * of their own and simply pass their children through.\n *\n * @example\n * // <mtd><mi>a</mi><mo>+</mo><mi>b</mi></mtd> -> a + b\n */\nclass GenericSpacingWrapper {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        return this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n    }\n}\n\n/** Applies the accent to the content as a LaTeX accent command, or wraps it with `\\underset`/`\\overset`. */\nclass UnderOverSetter {\n    constructor(type) {\n        this._type = type;\n    }\n    apply(content, accent) {\n        return latexAccents.includes(accent) ? `${accent}{${content}}` : `${this._defaultCommand}{${accent}}{${content}}`;\n    }\n    get _defaultCommand() {\n        if (this._type === TagTypes.Under)\n            return '\\\\underset';\n        return '\\\\overset';\n    }\n}\nvar TagTypes;\n(function (TagTypes) {\n    TagTypes[TagTypes[\"Under\"] = 0] = \"Under\";\n    TagTypes[TagTypes[\"Over\"] = 1] = \"Over\";\n})(TagTypes || (TagTypes = {}));\n\n/**\n * Converts a MathML `<mover>` or `<munder>` element into LaTeX.\n *\n * Converts the base and the accent, then either applies the accent as a LaTeX\n * accent command (when it is a known accent) or wraps it with `\\overset`/\n * `\\underset` depending on whether the element name contains `under`.\n *\n * @example\n * // <munder><mi>x</mi><mo>+</mo></munder> -> \\underset{+}{x}\n */\nclass GenericUnderOver {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     * @throws {InvalidNumberOfChildrenError} when the element does not have exactly 2 children.\n     */\n    convert() {\n        const { name, children } = this._mathmlElement;\n        const childrenLength = children.length;\n        if (childrenLength !== 2)\n            throw new InvalidNumberOfChildrenError(name, 2, childrenLength);\n        const content = mathMLElementToLaTeXConverter(children[0]).convert();\n        const accent = mathMLElementToLaTeXConverter(children[1]).convert();\n        return this._applyCommand(content, accent);\n    }\n    /** Chooses the under/over command based on the element name and applies it to the content and accent. */\n    _applyCommand(content, accent) {\n        const type = this._mathmlElement.name.match(/under/) ? TagTypes.Under : TagTypes.Over;\n        return new UnderOverSetter(type).apply(content, accent);\n    }\n}\n\n/**\n * Detects the linear-system/piecewise shape emitted by editors and MathJax:\n * an `<mrow>` holding an opening `{` operator and an `<mtable>`, optionally\n * followed by an empty closing `<mo>`. The `<mrow>` converter renders this\n * shape as a LaTeX `cases` environment, so the inner table must not receive\n * another environment wrapper of its own.\n */\nclass LinearSystemPattern {\n    constructor(element) {\n        this._element = element;\n    }\n    /** @returns true when the element matches the pattern. */\n    static matches(element) {\n        return new LinearSystemPattern(element)._matches();\n    }\n    _matches() {\n        var _a;\n        if (this._element.name !== 'mrow')\n            return false;\n        const children = (_a = this._element.children) !== null && _a !== void 0 ? _a : [];\n        if (children.length !== 2 && children.length !== 3)\n            return false;\n        return this._isOpeningBrace(children[0]) && this._isTable(children[1]) && this._isEmptyClosing(children[2]);\n    }\n    _isOpeningBrace(child) {\n        return child.name === 'mo' && child.value.trim() === '{';\n    }\n    _isTable(child) {\n        return child.name === 'mtable';\n    }\n    _isEmptyClosing(child) {\n        return child === undefined || (child.name === 'mo' && child.value.trim() === '');\n    }\n}\n\n/**\n * Converts a MathML `<mrow>` grouping element into LaTeX.\n *\n * By default it recursively converts every child and joins the results with\n * spaces. As a special case, when the row matches the linear-system pattern\n * (an opening `{` operator and an `<mtable>`, optionally followed by an empty\n * closing operator) it is rendered as a LaTeX `cases` environment.\n *\n * @example\n * // <mrow><mi>a</mi><mo>+</mo><mi>b</mi></mrow> -> a + b\n * @example\n * // <mrow><mo>{</mo><mtable>...</mtable><mo></mo></mrow> -> \\begin{cases} ... \\end{cases}\n */\nclass MRow {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        // Linear system pattern: { + mtable, optionally closed by an empty operator\n        if (LinearSystemPattern.matches(this._mathmlElement)) {\n            return this._convertAsLinearSystem();\n        }\n        return this._mathmlElement.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' ');\n    }\n    /** Renders the inner `<mtable>` rows as a LaTeX `cases` environment. */\n    _convertAsLinearSystem() {\n        const mtableChild = this._mathmlElement.children[1];\n        const tableContent = mtableChild.children\n            .map((child) => mathMLElementToLaTeXConverter(child))\n            .map((converter) => converter.convert())\n            .join(' \\\\\\\\ ');\n        return `\\\\begin{cases} ${tableContent} \\\\end{cases}`;\n    }\n}\n\n/**\n * Converts a MathML `<mspace>` element into LaTeX.\n *\n * Emits a LaTeX line break when `linebreak=\"newline\"`, otherwise a single space.\n *\n * @example\n * // <mspace linebreak=\"newline\" /> ->  \\\\\n */\nclass MSpace {\n    constructor(mathElement) {\n        this._mathmlElement = mathElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        const { linebreak } = this._mathmlElement.attributes;\n        if (linebreak === 'newline') {\n            return ' \\\\\\\\ ';\n        }\n        return ' ';\n    }\n}\n\n/**\n * No-op converter for MathML elements that have no LaTeX representation.\n *\n * Always produces an empty string, used as a fallback/placeholder converter.\n *\n * @example\n * // any element -> ''\n */\nclass Void {\n    constructor(_mathmlElement) {\n        this._mathmlElement = _mathmlElement;\n    }\n    /**\n     * @returns the LaTeX representation of this element.\n     */\n    convert() {\n        return '';\n    }\n}\n\n/**\n * Null-object {@link MathMLElement} used as a safe fallback when no element is\n * available, so converters never have to guard against `null`/`undefined`.\n */\nclass VoidMathMLElement {\n    constructor() {\n        this.name = 'void';\n        this.value = '';\n        this.children = [];\n        this.attributes = {};\n    }\n}\n\n/**\n * Maps a {@link MathMLElement} to the concrete {@link ToLaTeXConverter} that\n * knows how to render it, based on the element's tag name. Unknown tags fall\n * back to the generic spacing wrapper that simply joins the children.\n */\nclass MathMLElementToLatexConverterAdapter {\n    constructor(mathMLElement) {\n        this._mathMLElement = mathMLElement !== null && mathMLElement !== void 0 ? mathMLElement : new VoidMathMLElement();\n    }\n    /** @returns a converter instance bound to the wrapped element. */\n    toLatexConverter() {\n        const { name } = this._mathMLElement;\n        const Converter = fromMathMLElementToLatexConverter[name] || GenericSpacingWrapper;\n        return new Converter(this._mathMLElement);\n    }\n}\n/** Registry mapping each supported MathML tag name to its converter class. */\nconst fromMathMLElementToLatexConverter = {\n    math: Math$1,\n    mi: MI,\n    mo: MO,\n    mn: MN,\n    msqrt: MSqrt,\n    mfenced: MFenced,\n    mfrac: MFrac,\n    mroot: MRoot,\n    maction: MAction,\n    menclose: MEnclose,\n    merror: MError,\n    mphantom: MPhantom,\n    msup: MSup,\n    msub: MSub,\n    msubsup: MSubsup,\n    mmultiscripts: MMultiscripts,\n    mtext: MText,\n    munderover: MUnderover,\n    mtable: MTable,\n    mtr: MTr,\n    mover: GenericUnderOver,\n    munder: GenericUnderOver,\n    mrow: MRow,\n    mspace: MSpace,\n    mpadded: GenericSpacingWrapper,\n    void: Void,\n};\n\n/**\n * Normalizes bare fence operators into `<mfenced>` elements, in place.\n *\n * MathML often delimits content with standalone `<mo>` operators (`<mo>(</mo>\n * ... <mo>)</mo>`). Converted in isolation, each becomes a self-balanced\n * `\\left(\\right.` / `\\left.\\right)` (a lone `\\left(` is invalid LaTeX), which\n * leaves dangling `\\right.`/`\\left.` fillers in the output. This pass pairs the\n * fence operators that are real siblings and rewrites each pair into an\n * `<mfenced>`, so the existing converter produces a single stretchy\n * `\\left( ... \\right)` pair, and a parenthesized `<mtable>` naturally becomes a\n * `pmatrix`.\n *\n * Pairing is positional (a closer matches the nearest open fence) and may mix\n * types (`(` with `]`), which `<mfenced>` renders as valid asymmetric\n * delimiters. Parentheses, square brackets and braces are directional. Vertical\n * bars (`|`) and double bars (`||`) share one glyph for both sides, so they\n * toggle: a bar opens a pair unless a same-glyph bar is already open at the\n * current level, in which case it closes it (so `|x|` becomes `\\left|x\\right|`\n * and `||x||` becomes the norm `\\left\\|x\\right\\|`). Any fence that does not find\n * a match is left untouched as a valid self-balanced delimiter.\n */\nclass FenceNormalizer {\n    constructor(root) {\n        this._root = root;\n    }\n    /** Rewrites the subtree in place, pairing sibling fence operators into `<mfenced>`. */\n    normalize() {\n        const stack = [this._root];\n        while (stack.length > 0) {\n            const node = stack.pop();\n            const children = node.children;\n            if (!children || children.length === 0)\n                continue;\n            const paired = new FencePairing(children).pair();\n            if (paired !== children)\n                children.splice(0, children.length, ...paired);\n            for (const child of children)\n                stack.push(child);\n        }\n    }\n}\n/** Pairs the fence operators within a single list of sibling nodes. */\nclass FencePairing {\n    constructor(children) {\n        this._children = children;\n    }\n    /**\n     * @returns a rewritten list with each matched pair nested into an `<mfenced>`,\n     * or the original list (same reference) when nothing pairs.\n     *\n     * Single left-to-right pass: an opener starts a frame that collects its\n     * content, a closer turns the innermost open frame into an `<mfenced>`, and any\n     * frame still open at the end (an unmatched opener) is spilled back so it stays\n     * a plain self-balanced delimiter. No recursion and no per-pop copying, so it\n     * stays `O(n)` even for deeply nested or unbalanced input.\n     */\n    pair() {\n        const root = [];\n        const openFrames = [];\n        let current = root;\n        let paired = false;\n        for (const child of this._children) {\n            const top = openFrames[openFrames.length - 1];\n            if (this._opensFrame(child, top)) {\n                const frame = { opener: child, content: [] };\n                openFrames.push(frame);\n                current = frame.content;\n                continue;\n            }\n            if (this._closesFrame(child, top)) {\n                const frame = openFrames.pop();\n                current = openFrames.length > 0 ? openFrames[openFrames.length - 1].content : root;\n                current.push(this._makeFence(frame.opener, child, frame.content));\n                paired = true;\n                continue;\n            }\n            const scriptCloser = this._scriptBaseCloser(child, top);\n            if (scriptCloser !== undefined) {\n                const frame = openFrames.pop();\n                current = openFrames.length > 0 ? openFrames[openFrames.length - 1].content : root;\n                const fence = this._makeFence(frame.opener, scriptCloser, frame.content);\n                current.push(Object.assign(Object.assign({}, child), { children: [fence, ...child.children.slice(1)] }));\n                paired = true;\n                continue;\n            }\n            current.push(child);\n        }\n        if (!paired)\n            return this._children;\n        for (const frame of openFrames)\n            this._spill(frame, root);\n        return root;\n    }\n    /** Spills an unmatched opener and its collected content back into the result, keeping source order. */\n    _spill(frame, target) {\n        target.push(frame.opener);\n        for (const node of frame.content)\n            target.push(node);\n    }\n    /** Builds an `<mfenced>` around the paired content, passing a lone child directly to preserve matrix mode. */\n    _makeFence(opener, closer, content) {\n        return {\n            name: 'mfenced',\n            value: '',\n            children: [content.length === 1 ? content[0] : this._wrapInRow(content)],\n            attributes: { open: opener.value.trim(), close: closer.value.trim() },\n        };\n    }\n    /** Wraps several nodes in a single `<mrow>` so `<mfenced>` does not insert separators between them. */\n    _wrapInRow(children) {\n        return { name: 'mrow', value: '', children, attributes: {} };\n    }\n    /**\n     * Detects the closing bar of a scripted norm, the shape editors emit for\n     * `‖P‖_F^2`: a script element whose base holds only the bar that matches the\n     * open bar frame (`<mo>∥</mo><mi>P</mi><msubsup><mrow><mo>∥</mo></mrow>F 2`,\n     * issue #43). Without this, the nested closer is invisible to the sibling\n     * pass and the opener would pair with the *next* norm's opener, fencing the\n     * wrong span. The frame content becomes the fence and the script attaches to\n     * it: `msubsup(mfenced(P), F, 2)`.\n     *\n     * @returns the matching bar, or undefined when the child is not this shape.\n     */\n    _scriptBaseCloser(child, top) {\n        if (top === undefined || !this._isBar(top.opener))\n            return undefined;\n        if (!SCRIPT_ELEMENTS.has(child.name) || child.children.length === 0)\n            return undefined;\n        const base = child.children[0];\n        const bar = base.name === 'mrow' && base.children.length === 1 ? base.children[0] : base;\n        if (bar.name !== 'mo' || bar.value.trim() !== top.opener.value.trim())\n            return undefined;\n        return bar;\n    }\n    /** A directional opener, or a vertical bar that does not close the current frame. */\n    _opensFrame(child, top) {\n        if (this._isOpener(child))\n            return true;\n        return this._isBar(child) && !this._closesBar(child, top);\n    }\n    /** A directional closer matching a directional frame, or a bar closing a same-glyph bar frame. */\n    _closesFrame(child, top) {\n        if (top === undefined)\n            return false;\n        if (this._isCloser(child) && this._isOpener(top.opener))\n            return true;\n        return this._closesBar(child, top);\n    }\n    /** Whether `child` is a bar that closes `top`, i.e. `top` is a bar frame opened by the same glyph. */\n    _closesBar(child, top) {\n        if (top === undefined || !this._isBar(child) || !this._isBar(top.opener))\n            return false;\n        return top.opener.value.trim() === child.value.trim();\n    }\n    _isOpener(element) {\n        return element.name === 'mo' && OPENERS.has(element.value.trim());\n    }\n    _isCloser(element) {\n        return element.name === 'mo' && CLOSERS.has(element.value.trim());\n    }\n    _isBar(element) {\n        return element.name === 'mo' && BARS.has(element.value.trim());\n    }\n}\nconst OPENERS = new Set(['(', '[', '{']);\nconst CLOSERS = new Set([')', ']', '}']);\n// Single bar plus the double-bar family: bars toggle, so a sibling pair is\n// read as an absolute value or norm (issue #43), while an odd leftover spills\n// back and keeps its standalone meaning (`\\mid`, `\\parallel`).\nconst BARS = new Set(['|', ...doubleBarFenceGlyphs]);\n/** Script elements whose base can hide the closing bar of a norm. */\nconst SCRIPT_ELEMENTS = new Set(['msub', 'msup', 'msubsup']);\n\n/**\n * Pre-pass that flags tables and rows for their converters, in a single\n * iterative top-down walk (so it cannot overflow the call stack):\n *\n * - `innerTable`: every mtable nested inside another mtable;\n * - `bareTable`: every mtable that no other converter wraps in an environment\n *   (not inside an mfenced, not the table of a linear-system row);\n * - `bareRow`: every mtr with no mtable ancestor.\n *\n * The flagged converters then emit a valid environment themselves, keeping the\n * invariant that `&`/`\\\\` alignment markers never appear outside one.\n */\nclass TableAnnotator {\n    constructor(root) {\n        this._root = root;\n    }\n    /** Walks the tree and stamps the wrapper flags in place. */\n    normalize() {\n        const stack = [{ node: this._root, insideMtable: false, wrapped: false }];\n        while (stack.length > 0) {\n            const frame = stack.pop();\n            this._annotate(frame);\n            this._pushChildren(frame, stack);\n        }\n    }\n    _annotate({ node, insideMtable, wrapped }) {\n        if (node.name === 'mtable') {\n            if (insideMtable)\n                node.attributes['innerTable'] = 'innerTable';\n            else if (!wrapped)\n                node.attributes['bareTable'] = 'bareTable';\n        }\n        if (node.name === 'mtr' && !insideMtable)\n            node.attributes['bareRow'] = 'bareRow';\n    }\n    _pushChildren({ node, insideMtable, wrapped }, stack) {\n        var _a;\n        const childInsideMtable = insideMtable || node.name === 'mtable';\n        const childWrapped = wrapped || node.name === 'mfenced';\n        const linearSystemTable = LinearSystemPattern.matches(node) ? node.children[1] : undefined;\n        const children = (_a = node.children) !== null && _a !== void 0 ? _a : [];\n        for (let i = 0; i < children.length; i++) {\n            stack.push({\n                node: children[i],\n                insideMtable: childInsideMtable,\n                wrapped: childWrapped || children[i] === linearSystemTable,\n            });\n        }\n    }\n}\n\n/**\n * Converts a MathML element tree to LaTeX iteratively, using an explicit stack\n * instead of recursion so arbitrarily deep nesting cannot overflow the call\n * stack. Nodes are evaluated post-order (children before parents) and each\n * result is memoized; converters then read their children's precomputed strings\n * through {@link mathMLElementToLaTeXConverter} instead of recursing.\n *\n * Before the conversion loop, every {@link TreeNormalizer} in the pipeline runs\n * over the tree in order. New pre-passes are added to {@link makeTreeNormalizers}\n * without modifying the loop or the existing passes.\n *\n * @param root - the root element of the tree to convert.\n * @returns the LaTeX string for the whole tree.\n */\nconst convertTreeToLatex = (root) => {\n    var _a, _b;\n    for (const normalizer of makeTreeNormalizers(root))\n        normalizer.normalize();\n    const memo = new Map();\n    const stack = [{ node: root, visited: false }];\n    const previousMemo = setConversionMemo(memo);\n    try {\n        while (stack.length > 0) {\n            const frame = stack[stack.length - 1];\n            if (!frame.visited) {\n                frame.visited = true;\n                const children = (_a = frame.node.children) !== null && _a !== void 0 ? _a : [];\n                for (let i = children.length - 1; i >= 0; i--)\n                    stack.push({ node: children[i], visited: false });\n                continue;\n            }\n            stack.pop();\n            memo.set(frame.node, new MathMLElementToLatexConverterAdapter(frame.node).toLatexConverter().convert());\n        }\n    }\n    finally {\n        setConversionMemo(previousMemo);\n    }\n    return (_b = memo.get(root)) !== null && _b !== void 0 ? _b : '';\n};\n/** The normalization pipeline, in execution order. */\nconst makeTreeNormalizers = (root) => [\n    new FenceNormalizer(root),\n    new TableAnnotator(root),\n];\n\n/**\n * Parses a MathML/XML string into an array of internal {@link MathMLElement}\n * trees (one per `<math>` element).\n *\n * It cleans up MS Word artefacts (line breaks, `mml:` prefixes), tolerates\n * malformed attributes through {@link ErrorHandler}, and delegates the DOM →\n * {@link MathMLElement} mapping to {@link ElementsToMathMLAdapter}.\n */\nclass XmlToMathMLAdapter {\n    constructor(elementsConvertor, errorHandler) {\n        this._xml = '';\n        this._elementsConvertor = elementsConvertor;\n        this._errorHandler = errorHandler;\n        // Since @xmldom/xmldom 0.9 the deprecated `errorHandler`/`locator` object\n        // options were replaced by a single `onError(level, message)` callback.\n        this._xmlDOM = new DOMParser({\n            onError: (_level, message) => this._fixError(message),\n        });\n    }\n    /**\n     * Parses the given markup and returns its `<math>` elements as trees.\n     *\n     * @param xml - the MathML/XML markup to parse.\n     * @returns one {@link MathMLElement} tree per `<math>` element found.\n     */\n    convert(xml) {\n        this._xml = this._removeLineBreaks(xml);\n        this._xml = this._removeMsWordPrefixes(this._xml);\n        return this._elementsConvertor.convert(this._mathMLElements);\n    }\n    _fixError(errorMessage) {\n        this._xml = this._errorHandler.fixError(this._xml, errorMessage);\n    }\n    _removeLineBreaks(xml) {\n        const LINE_BREAK = /\\n|\\r\\n|\\r/g;\n        return xml.replace(LINE_BREAK, '');\n    }\n    _removeMsWordPrefixes(xml) {\n        const MS_WORD_PREFIX = /mml:/g;\n        return xml.replace(MS_WORD_PREFIX, '');\n    }\n    get _mathMLElements() {\n        let document = this._parse();\n        if (this._errorHandler.isThereAnyErrors()) {\n            this._errorHandler.cleanErrors();\n            document = this._parse();\n        }\n        const elements = document === null || document === void 0 ? void 0 : document.getElementsByTagName('math');\n        // xmldom 0.9 exposes its own Element type, which is structurally compatible\n        // with the DOM Element used downstream but does not overlap for TS, so the\n        // cast must go through `unknown`.\n        return elements ? Array.from(elements) : [];\n    }\n    _parse() {\n        try {\n            return this._xmlDOM.parseFromString(this._xml, 'text/xml');\n        }\n        catch (_a) {\n            // Since xmldom 0.9 a fatalError (e.g. a value-less attribute) aborts\n            // parsing and is thrown as a ParseError. `onError` has already recorded\n            // and fixed it on `this._xml`, so the caller re-parses the corrected XML.\n            return undefined;\n        }\n    }\n}\n\n/**\n * Recovers from the malformed-attribute errors commonly produced by MS Word\n * exports (e.g. `<mfenced open='{' close= >`). It inspects the parser error\n * message and rewrites the offending value-less attribute out of the XML so the\n * markup can be re-parsed successfully.\n */\nclass ErrorHandler {\n    constructor() {\n        this._errors = [];\n    }\n    /**\n     * If the parser error is a recoverable missing-attribute-value error, records\n     * it and returns the XML with the offending attribute stripped; otherwise\n     * returns the XML unchanged.\n     *\n     * @param xml - the current (possibly malformed) XML.\n     * @param errorMessage - the message reported by the parser.\n     * @returns the (possibly corrected) XML.\n     */\n    fixError(xml, errorMessage) {\n        if (!this._isMissingAttributeValueError(errorMessage))\n            return xml;\n        this._errors.push(errorMessage);\n        return this._fixMissingAttribute(errorMessage, xml);\n    }\n    isThereAnyErrors() {\n        return this._errors.length > 0;\n    }\n    cleanErrors() {\n        this._errors = [];\n    }\n    _fixMissingAttribute(errorMessage, xml) {\n        const missingAttribute = this._attributeNameFromError(errorMessage);\n        if (missingAttribute)\n            return xml.replace(this._matchMissingValueForAttribute(missingAttribute), '');\n        while (this._mathGenericMissingValue().exec(xml)) {\n            xml = xml.replace(this._mathGenericMissingValue(), '$1$3');\n        }\n        return xml;\n    }\n    // Only the \"missed value\" warning carries the offending attribute name. The\n    // \"AttValue: ' or \\\" expected\" fatalError does not, so it falls back to the\n    // generic strip above.\n    _attributeNameFromError(errorMessage) {\n        var _a;\n        return (_a = errorMessage.match(/attribute \"([^\"]+)\" missed value/)) === null || _a === void 0 ? void 0 : _a[1];\n    }\n    _matchMissingValueForAttribute(attribute) {\n        return new RegExp(`(${attribute}=(?!(\\\"|\\')))|(${attribute}(?!(\\\"|\\')))`, 'gm');\n    }\n    _mathGenericMissingValue() {\n        return /(\\<.* )(\\w+=(?!\\\"|\\'))(.*\\>)/gm;\n    }\n    _isMissingAttributeValueError(errorMessage) {\n        return ((!!errorMessage.includes('attribute') && !!errorMessage.includes('missed')) ||\n            errorMessage.includes('attribute value missed') ||\n            // Since xmldom 0.9 a value-less attribute written as `attr=` is reported\n            // as this fatalError instead of a recoverable warning.\n            errorMessage.includes('AttValue: \\' or \" expected'));\n    }\n}\n\n/**\n * Maps parsed DOM {@link Element}s into the library's internal\n * {@link MathMLElement} tree. The mapping is iterative (explicit stack) so very\n * deeply nested markup cannot overflow the call stack.\n */\nclass ElementsToMathMLAdapter {\n    /**\n     * Builds {@link MathMLElement} trees from the given DOM elements.\n     *\n     * @param els - the root DOM elements to convert (e.g. the `<math>` elements).\n     * @returns the corresponding internal element trees, in document order.\n     */\n    convert(els) {\n        const result = [];\n        // Iterative depth-first build with an explicit stack, so deeply nested\n        // markup cannot overflow the call stack. Each node is linked into its\n        // parent's `children` array by reference; children are pushed in reverse so\n        // they are appended in document order.\n        const stack = [];\n        for (let i = els.length - 1; i >= 0; i--)\n            stack.push({ el: els[i], target: result });\n        while (stack.length > 0) {\n            const { el, target } = stack.pop();\n            if (el.tagName === undefined)\n                continue;\n            const node = this._convertElement(el);\n            target.push(node);\n            if (!this._hasElementChild(el))\n                continue;\n            const children = Array.from(el.childNodes);\n            for (let i = children.length - 1; i >= 0; i--)\n                stack.push({ el: children[i], target: node.children });\n        }\n        return result;\n    }\n    _convertElement(el) {\n        return {\n            name: el.tagName,\n            attributes: this._convertElementAttributes(el.attributes),\n            value: this._hasElementChild(el) ? '' : el.textContent || '',\n            children: [],\n        };\n    }\n    _convertElementAttributes(attributes) {\n        return Array.from(attributes).reduce((acc, attr) => Object.assign({ [attr.nodeName]: attr.nodeValue === attr.nodeName ? '' : attr.nodeValue }, acc), {});\n    }\n    _hasElementChild(el) {\n        const childNodes = el.childNodes;\n        return !!childNodes && childNodes.length !== 0 && this._isThereAnyNoTextNode(childNodes);\n    }\n    _isThereAnyNoTextNode(children) {\n        return Array.from(children).some((child) => child.nodeName !== '#text');\n    }\n}\n\n/**\n * Wires up and returns the parser that turns a MathML string into element\n * trees, with its element mapper and error handler.\n *\n * @returns a ready-to-use {@link XmlToMathMLAdapter}.\n */\nconst makeToMathElementsConverter = () => {\n    const elementsToMathMLAdapter = new ElementsToMathMLAdapter();\n    const errorHandler = new ErrorHandler();\n    return new XmlToMathMLAdapter(elementsToMathMLAdapter, errorHandler);\n};\n\n/**\n * Public entry point of the library: converts a MathML string into LaTeX.\n *\n * The conversion runs in two stages — the MathML is parsed into an internal\n * element tree (see {@link makeToMathElementsConverter}), then each top-level\n * element tree is converted to LaTeX iteratively (see {@link convertTreeToLatex}).\n *\n * @example\n * MathMLToLaTeX.convert('<math><mrow><mn>a</mn><mo>+</mo><mn>b</mn></mrow></math>');\n * // => 'a + b'\n */\nclass MathMLToLaTeX {\n    /**\n     * Converts a MathML string to its LaTeX representation.\n     *\n     * @param mathml - the MathML markup to convert.\n     * @returns the equivalent LaTeX string (trimmed).\n     */\n    static convert(mathml) {\n        const mathmlElements = makeToMathElementsConverter().convert(mathml);\n        return mathmlElements\n            .map((mathMLElement) => convertTreeToLatex(mathMLElement))\n            .join('')\n            .trim();\n    }\n}\n\nexport { MathMLToLaTeX };\n",null,"'use strict';\n\n/**\n * This is the ParseError class, which is the main error thrown by Temml\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n */\nclass ParseError {\n  constructor(\n    message, // The error message\n    token // An object providing position information\n  ) {\n    let error = \" \" + message;\n    let start;\n\n    const loc = token && token.loc;\n    if (loc && loc.start <= loc.end) {\n      // If we have the input and a position, make the error a bit fancier\n\n      // Get the input\n      const input = loc.lexer.input;\n\n      // Prepend some information\n      start = loc.start;\n      const end = loc.end;\n      if (start === input.length) {\n        error += \" at end of input: \";\n      } else {\n        error += \" at position \" + (start + 1) + \": \\n\";\n      }\n\n      // Underline token in question using combining underscores\n      const underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\");\n\n      // Extract some context from the input and add it to the error\n      let left;\n      if (start > 15) {\n        left = \"…\" + input.slice(start - 15, start);\n      } else {\n        left = input.slice(0, start);\n      }\n      let right;\n      if (end + 15 < input.length) {\n        right = input.slice(end, end + 15) + \"…\";\n      } else {\n        right = input.slice(end);\n      }\n      error += left + underlined + right;\n    }\n\n    // Some hackery to make ParseError a prototype of Error\n    // See http://stackoverflow.com/a/8460753\n    const self = new Error(error);\n    self.name = \"ParseError\";\n    self.__proto__ = ParseError.prototype;\n    self.position = start;\n    return self;\n  }\n}\n\nParseError.prototype.__proto__ = Error.prototype;\n\n//\n/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Provide a default value if a setting is undefined\n */\nconst deflt = function(setting, defaultIfUndefined) {\n  return setting === undefined ? defaultIfUndefined : setting;\n};\n\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\n\nconst uppercase = /([A-Z])/g;\nconst hyphenate = function(str) {\n  return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nconst ESCAPE_LOOKUP = {\n  \"&\": \"&amp;\",\n  \">\": \"&gt;\",\n  \"<\": \"&lt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#x27;\"\n};\n\nconst ESCAPE_REGEX = /[&><\"']/g;\n\n/**\n * Escapes text to prevent scripting attacks.\n */\nfunction escape(text) {\n  return String(text).replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\n\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nconst getBaseElem = function(group) {\n  if (group.type === \"ordgroup\") {\n    if (group.body.length === 1) {\n      return getBaseElem(group.body[0]);\n    } else {\n      return group;\n    }\n  } else if (group.type === \"color\") {\n    if (group.body.length === 1) {\n      return getBaseElem(group.body[0]);\n    } else {\n      return group;\n    }\n  } else if (group.type === \"font\") {\n    return getBaseElem(group.body);\n  } else {\n    return group;\n  }\n};\n\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nconst isCharacterBox = function(group) {\n  const baseElem = getBaseElem(group);\n\n  // These are all the types of groups which hold single characters\n  return baseElem.type === \"mathord\" || baseElem.type === \"textord\" || baseElem.type === \"atom\"\n};\n\nconst assert = function(value) {\n  if (!value) {\n    throw new Error(\"Expected non-null, but got \" + String(value));\n  }\n  return value;\n};\n\n/**\n * Return the protocol of a URL, or \"_relative\" if the URL does not specify a\n * protocol (and thus is relative), or `null` if URL has invalid protocol\n * (so should be outright rejected).\n */\nconst protocolFromUrl = function(url) {\n  // Check for possible leading protocol.\n  // https://url.spec.whatwg.org/#url-parsing strips leading whitespace\n  // (\\x00) or C0 control (\\x00-\\x1F) characters.\n  // eslint-disable-next-line no-control-regex\n  const protocol = /^[\\x00-\\x20]*([^\\\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(url);\n  if (!protocol) {\n    return \"_relative\";\n  }\n  // Reject weird colons\n  if (protocol[2] !== \":\") {\n    return null;\n  }\n  // Reject invalid characters in scheme according to\n  // https://datatracker.ietf.org/doc/html/rfc3986#section-3.1\n  if (!/^[a-zA-Z][a-zA-Z0-9+\\-.]*$/.test(protocol[1])) {\n    return null;\n  }\n  // Lowercase the protocol\n  return protocol[1].toLowerCase();\n};\n\n/**\n * Round `n` to 4 decimal places, or to the nearest 1/10,000th em. The TeXbook\n * gives an acceptable rounding error of 100sp (which would be the nearest\n * 1/6551.6em with our ptPerEm = 10):\n * http://www.ctex.org/documents/shredder/src/texbook.pdf#page=69\n */\nconst round = function(n) {\n  return +n.toFixed(4);\n};\n\n// Identify short letters. Used for accents and \\cancelto.\nconst smalls = \"acegıȷmnopqrsuvwxyzαγεηικμνοπρςστυχωϕ𝐚𝐜𝐞𝐠𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐮𝐯𝐰𝐱𝐲𝐳\";\n\n/**\n * This is a module for storing settings passed into Temml. It correctly handles\n * default settings.\n */\n\n\n/**\n * The main Settings object\n */\nclass Settings {\n  constructor(options) {\n    // allow null options\n    options = options || {};\n    this.displayMode = deflt(options.displayMode, false);    // boolean\n    this.annotate = deflt(options.annotate, false);           // boolean\n    this.leqno = deflt(options.leqno, false);                // boolean\n    this.throwOnError = deflt(options.throwOnError, false);  // boolean\n    this.errorColor = deflt(options.errorColor, \"#b22222\");  // string\n    this.macros = options.macros || {};\n    this.wrap = deflt(options.wrap, \"none\");                   // \"none\" | \"tex\" | \"=\"\n    this.xml = deflt(options.xml, false);                     // boolean\n    this.colorIsTextColor = deflt(options.colorIsTextColor, false);  // boolean\n    this.strict = deflt(options.strict, false);    // boolean\n    this.trust = deflt(options.trust, false);  // trust context. See html.js.\n    this.maxSize = (options.maxSize === undefined\n      ? [Infinity, Infinity]\n      : Array.isArray(options.maxSize)\n      ? options.maxSize\n      : [Infinity, Infinity]\n    );\n    this.maxExpand = Math.max(0, deflt(options.maxExpand, 1000)); // number\n    this.wrapDelimiterPairs = true; // boolean\n  }\n\n  /**\n   * Check whether to test potentially dangerous input, and return\n   * `true` (trusted) or `false` (untrusted).  The sole argument `context`\n   * should be an object with `command` field specifying the relevant LaTeX\n   * command (as a string starting with `\\`), and any other arguments, etc.\n   * If `context` has a `url` field, a `protocol` field will automatically\n   * get added by this function (changing the specified object).\n   */\n  isTrusted(context) {\n    if (context.url && !context.protocol) {\n      const protocol = protocolFromUrl(context.url);\n      if (protocol == null) {\n        return false\n      }\n      context.protocol = protocol;\n    }\n    const trust = typeof this.trust === \"function\" ? this.trust(context) : this.trust;\n    return Boolean(trust);\n  }\n}\n\n/**\n * All registered functions.\n * `functions.js` just exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary.\n */\nconst _functions = {};\n\n/**\n * All MathML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\nconst _mathmlGroupBuilders = {};\n\nfunction defineFunction({\n  type,\n  names,\n  props,\n  handler,\n  mathmlBuilder\n}) {\n  // Set default values of functions\n  const data = {\n    type,\n    numArgs: props.numArgs,\n    argTypes: props.argTypes,\n    allowedInArgument: !!props.allowedInArgument,\n    allowedInText: !!props.allowedInText,\n    allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,\n    numOptionalArgs: props.numOptionalArgs || 0,\n    infix: !!props.infix,\n    primitive: !!props.primitive,\n    handler: handler\n  };\n  for (let i = 0; i < names.length; ++i) {\n    _functions[names[i]] = data;\n  }\n  if (type) {\n    if (mathmlBuilder) {\n      _mathmlGroupBuilders[type] = mathmlBuilder;\n    }\n  }\n}\n\n/**\n * Use this to register only the MathML builder for a function(e.g.\n * if the function's ParseNode is generated in Parser.js rather than via a\n * stand-alone handler provided to `defineFunction`).\n */\nfunction defineFunctionBuilders({ type, mathmlBuilder }) {\n  defineFunction({\n    type,\n    names: [],\n    props: { numArgs: 0 },\n    handler() {\n      throw new Error(\"Should never be called.\")\n    },\n    mathmlBuilder\n  });\n}\n\nconst normalizeArgument = function(arg) {\n  return arg.type === \"ordgroup\" && arg.body.length === 1 ? arg.body[0] : arg\n};\n\n// Since the corresponding buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\nconst ordargument = function(arg) {\n  return arg.type === \"ordgroup\" ? arg.body : [arg]\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. It only contains\n * children and doesn't have any DOM node properties.\n */\nclass DocumentFragment {\n  constructor(children) {\n    this.children = children;\n    this.classes = [];\n    this.style = {};\n  }\n\n  hasClass(className) {\n    return this.classes.includes(className);\n  }\n\n  /** Convert the fragment into a node. */\n  toNode() {\n    const frag = document.createDocumentFragment();\n\n    for (let i = 0; i < this.children.length; i++) {\n      frag.appendChild(this.children[i].toNode());\n    }\n\n    return frag;\n  }\n\n  /** Convert the fragment into HTML markup. */\n  toMarkup() {\n    let markup = \"\";\n\n    // Simply concatenate the markup for the children together.\n    for (let i = 0; i < this.children.length; i++) {\n      markup += this.children[i].toMarkup();\n    }\n\n    return markup;\n  }\n\n  /**\n   * Converts the math node into a string, similar to innerText. Applies to\n   * MathDomNode's only.\n   */\n  toText() {\n    // To avoid this, we would subclass documentFragment separately for\n    // MathML, but polyfills for subclassing is expensive per PR 1469.\n    const toText = (child) => child.toText();\n    return this.children.map(toText).join(\"\");\n  }\n}\n\n/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n *\n */\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove empty classes.\n */\nconst createClass = function(classes) {\n  return classes.filter((cls) => cls).join(\" \");\n};\n\nconst initNode = function(classes, style) {\n  this.classes = classes || [];\n  this.attributes = {};\n  this.style = style || {};\n};\n\n/**\n * Convert into an HTML node\n */\nconst toNode = function(tagName) {\n  const node = document.createElement(tagName);\n\n  // Apply the class\n  node.className = createClass(this.classes);\n\n  // Apply inline styles\n  for (const style in this.style) {\n    if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n      node.style[style] = this.style[style];\n    }\n  }\n\n  // Apply attributes\n  for (const attr in this.attributes) {\n    if (Object.prototype.hasOwnProperty.call(this.attributes, attr )) {\n      node.setAttribute(attr, this.attributes[attr]);\n    }\n  }\n\n  // Append the children, also as HTML nodes\n  for (let i = 0; i < this.children.length; i++) {\n    node.appendChild(this.children[i].toNode());\n  }\n\n  return node;\n};\n\n/**\n * Convert into an HTML markup string\n */\nconst toMarkup = function(tagName) {\n  let markup = `<${tagName}`;\n\n  // Add the class\n  if (this.classes.length) {\n    markup += ` class=\"${escape(createClass(this.classes))}\"`;\n  }\n\n  let styles = \"\";\n\n  // Add the styles, after hyphenation\n  for (const style in this.style) {\n    if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n      styles += `${hyphenate(style)}:${this.style[style]};`;\n    }\n  }\n\n  if (styles) {\n    markup += ` style=\"${styles}\"`;\n  }\n\n  // Add the attributes\n  for (const attr in this.attributes) {\n    if (Object.prototype.hasOwnProperty.call(this.attributes, attr )) {\n      markup += ` ${attr}=\"${escape(this.attributes[attr])}\"`;\n    }\n  }\n\n  markup += \">\";\n\n  // Add the markup of the children, also as markup\n  for (let i = 0; i < this.children.length; i++) {\n    markup += this.children[i].toMarkup();\n  }\n\n  markup += `</${tagName}>`;\n\n  return markup;\n};\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style.\n *\n */\nclass Span {\n  constructor(classes, children, style) {\n    initNode.call(this, classes, style);\n    this.children = children || [];\n  }\n\n  setAttribute(attribute, value) {\n    this.attributes[attribute] = value;\n  }\n\n  toNode() {\n    return toNode.call(this, \"span\");\n  }\n\n  toMarkup() {\n    return toMarkup.call(this, \"span\");\n  }\n}\n\nlet TextNode$1 = class TextNode {\n  constructor(text) {\n    this.text = text;\n  }\n  toNode() {\n    return document.createTextNode(this.text);\n  }\n  toMarkup() {\n    return escape(this.text);\n  }\n};\n\n// Create an <a href=\"…\"> node.\nclass AnchorNode {\n  constructor(href, classes, children) {\n    this.href = href;\n    this.classes = classes;\n    this.children = children || [];\n  }\n\n  toNode() {\n    const node = document.createElement(\"a\");\n    node.setAttribute(\"href\", this.href);\n    if (this.classes.length > 0) {\n      node.className = createClass(this.classes);\n    }\n    for (let i = 0; i < this.children.length; i++) {\n      node.appendChild(this.children[i].toNode());\n    }\n    return node\n  }\n\n  toMarkup() {\n    let markup = `<a href='${escape(this.href)}'`;\n    if (this.classes.length > 0) {\n      markup += ` class=\"${escape(createClass(this.classes))}\"`;\n    }\n    markup += \">\";\n    for (let i = 0; i < this.children.length; i++) {\n      markup += this.children[i].toMarkup();\n    }\n    markup += \"</a>\";\n    return markup\n  }\n}\n\n/*\n * This node represents an image embed (<img>) element.\n */\nclass Img {\n  constructor(src, alt, style) {\n    this.alt = alt;\n    this.src = src;\n    this.classes = [\"mord\"];\n    this.style = style;\n  }\n\n  hasClass(className) {\n    return this.classes.includes(className);\n  }\n\n  toNode() {\n    const node = document.createElement(\"img\");\n    node.src = this.src;\n    node.alt = this.alt;\n    node.className = \"mord\";\n\n    // Apply inline styles\n    for (const style in this.style) {\n      if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n        node.style[style] = this.style[style];\n      }\n    }\n\n    return node;\n  }\n\n  toMarkup() {\n    let markup = `<img src='${this.src}' alt='${this.alt}'`;\n\n    // Add the styles, after hyphenation\n    let styles = \"\";\n    for (const style in this.style) {\n      if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n        styles += `${hyphenate(style)}:${this.style[style]};`;\n      }\n    }\n    if (styles) {\n      markup += ` style=\"${escape(styles)}\"`;\n    }\n\n    markup += \">\";\n    return markup;\n  }\n}\n\n//\n/**\n * These objects store data about MathML nodes.\n * The `toNode` and `toMarkup` functions  create namespaced DOM nodes and\n * HTML text markup respectively.\n */\n\n\nfunction newDocumentFragment(children) {\n  return new DocumentFragment(children);\n}\n\n/**\n * This node represents a general purpose MathML node of any type,\n * for example, `\"mo\"` or `\"mspace\"`, corresponding to `<mo>` and\n * `<mspace>` tags).\n */\nclass MathNode {\n  constructor(type, children, classes, style) {\n    this.type = type;\n    this.attributes = {};\n    this.children = children || [];\n    this.classes = classes || [];\n    this.style = style || {};   // Used for <mstyle> elements\n    this.label = \"\";\n  }\n\n  /**\n   * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n   * semantic content, so this is used heavily.\n   */\n  setAttribute(name, value) {\n    this.attributes[name] = value;\n  }\n\n  /**\n   * Gets an attribute on a MathML node.\n   */\n  getAttribute(name) {\n    return this.attributes[name];\n  }\n\n  setLabel(value) {\n    this.label = value;\n  }\n\n  /**\n   * Converts the math node into a MathML-namespaced DOM element.\n   */\n  toNode() {\n    const node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", this.type);\n\n    for (const attr in this.attributes) {\n      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n        node.setAttribute(attr, this.attributes[attr]);\n      }\n    }\n\n    if (this.classes.length > 0) {\n      node.className = createClass(this.classes);\n    }\n\n    // Apply inline styles\n    for (const style in this.style) {\n      if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n        node.style[style] = this.style[style];\n      }\n    }\n\n    for (let i = 0; i < this.children.length; i++) {\n      node.appendChild(this.children[i].toNode());\n    }\n\n    return node;\n  }\n\n  /**\n   * Converts the math node into an HTML markup string.\n   */\n  toMarkup() {\n    let markup = \"<\" + this.type;\n\n    // Add the attributes\n    for (const attr in this.attributes) {\n      if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n        markup += \" \" + attr + '=\"';\n        markup += escape(this.attributes[attr]);\n        markup += '\"';\n      }\n    }\n\n    if (this.classes.length > 0) {\n      markup += ` class=\"${escape(createClass(this.classes))}\"`;\n    }\n\n    let styles = \"\";\n\n    // Add the styles, after hyphenation\n    for (const style in this.style) {\n      if (Object.prototype.hasOwnProperty.call(this.style, style )) {\n        styles += `${hyphenate(style)}:${this.style[style]};`;\n      }\n    }\n\n    if (styles) {\n      markup += ` style=\"${styles}\"`;\n    }\n\n    markup += \">\";\n\n    for (let i = 0; i < this.children.length; i++) {\n      markup += this.children[i].toMarkup();\n    }\n\n    markup += \"</\" + this.type + \">\";\n\n    return markup;\n  }\n\n  /**\n   * Converts the math node into a string, similar to innerText, but escaped.\n   */\n  toText() {\n    return this.children.map((child) => child.toText()).join(\"\");\n  }\n}\n\n/**\n * This node represents a piece of text.\n */\nclass TextNode {\n  constructor(text) {\n    this.text = text;\n  }\n\n  /**\n   * Converts the text node into a DOM text node.\n   */\n  toNode() {\n    return document.createTextNode(this.text);\n  }\n\n  /**\n   * Converts the text node into escaped HTML markup\n   * (representing the text itself).\n   */\n  toMarkup() {\n    return escape(this.toText());\n  }\n\n  /**\n   * Converts the text node into a string\n   * (representing the text itself).\n   */\n  toText() {\n    return this.text;\n  }\n}\n\n// Do not make an <mrow> the only child of a <mstyle>.\n// An <mstyle> acts as its own implicit <mrow>.\nconst wrapWithMstyle = expression => {\n  let node;\n  if (expression.length === 1 && expression[0].type === \"mrow\") {\n    node = expression.pop();\n    node.type = \"mstyle\";\n  } else {\n    node = new MathNode(\"mstyle\", expression);\n  }\n  return node\n};\n\n/**\n * This file provides support for building horizontal stretchy elements.\n */\n\n\n// TODO: Remove when Chromium stretches \\widetilde & \\widehat\nconst estimatedWidth = node => {\n  let width = 0;\n  if (node.body && Array.isArray(node.body)) {\n    for (const item of node.body) {\n      width += estimatedWidth(item);\n    }\n  } else if (node.body) {\n    width += estimatedWidth(node.body);\n  } else if (node.type === \"supsub\") {\n    width += estimatedWidth(node.base);\n    if (node.sub) { width += 0.7 * estimatedWidth(node.sub); }\n    if (node.sup) { width += 0.7 * estimatedWidth(node.sup); }\n  } else if (node.type === \"mathord\" || node.type === \"textord\") {\n    for (const ch of node.text.split('')) {\n      const codePoint = ch.codePointAt(0);\n      if ((0x60 < codePoint && codePoint < 0x7B) || (0x03B0 < codePoint && codePoint < 0x3CA)) {\n        width += 0.56; // lower case latin or greek. Use advance width of letter n\n      } else if (0x2F < codePoint && codePoint < 0x3A) {\n        width += 0.50; // numerals.\n      } else {\n        width += 0.92; // advance width of letter M\n      }\n    }\n  } else {\n    width += 1.0;\n  }\n  return width\n};\n\nconst stretchyCodePoint = {\n  widehat: \"\\u02c6\", // Shorter than \\u005e, which is appropriate for an accent.\n  widecheck: \"ˇ\",\n  widetilde: \"~\",\n  wideparen: \"⏜\", // \\u23dc\n  utilde: \"~\",\n  overleftarrow: \"\\u2190\",\n  underleftarrow: \"\\u2190\",\n  xleftarrow: \"\\u2190\",\n  overrightarrow: \"\\u2192\",\n  underrightarrow: \"\\u2192\",\n  xrightarrow: \"\\u2192\",\n  underbrace: \"\\u23df\",\n  overbrace: \"\\u23de\",\n  overbracket: \"\\u23b4\",\n  underbracket: \"\\u23b5\",\n  overgroup: \"\\u23e0\",\n  overparen: \"⏜\",\n  undergroup: \"\\u23e1\",\n  underparen: \"\\u23dd\",\n  overleftrightarrow: \"\\u2194\",\n  underleftrightarrow: \"\\u2194\",\n  xleftrightarrow: \"\\u2194\",\n  Overrightarrow: \"\\u21d2\",\n  xRightarrow: \"\\u21d2\",\n  overleftharpoon: \"\\u21bc\",\n  xleftharpoonup: \"\\u21bc\",\n  overrightharpoon: \"\\u21c0\",\n  xrightharpoonup: \"\\u21c0\",\n  xLeftarrow: \"\\u21d0\",\n  xLeftrightarrow: \"\\u21d4\",\n  xhookleftarrow: \"\\u21a9\",\n  xhookrightarrow: \"\\u21aa\",\n  xmapsto: \"\\u21a6\",\n  xrightharpoondown: \"\\u21c1\",\n  xleftharpoondown: \"\\u21bd\",\n  xtwoheadleftarrow: \"\\u219e\",\n  xtwoheadrightarrow: \"\\u21a0\",\n  xlongequal: \"=\",\n  xrightleftarrows: \"\\u21c4\",\n  xtofrom: \"\\u21c4\",\n  xleftrightharpoons: \"\\u21cb\",\n  xrightleftharpoons: \"\\u21cc\",\n  yields: \"\\u2192\",\n  yieldsLeft: \"\\u2190\",\n  mesomerism: \"\\u2194\",\n  longrightharpoonup: \"\\u21c0\",\n  longleftharpoondown: \"\\u21bd\",\n  eqrightharpoonup: \"\\u21c0\",\n  eqleftharpoondown: \"\\u21bd\",\n  \"\\\\cdrightarrow\": \"\\u2192\",\n  \"\\\\cdleftarrow\": \"\\u2190\",\n  \"\\\\cdlongequal\": \"=\",\n  yieldsLeftRight: \"\\u21c4\",\n  chemequilibrium: \"\\u21cc\"\n};\n\nconst mathMLnode = function(label) {\n  const child = new TextNode(stretchyCodePoint[label.slice(1)]);\n  const node = new MathNode(\"mo\", [child]);\n  node.setAttribute(\"stretchy\", \"true\");\n  return node\n};\n\nconst wideHats = [\"\\\\widehat\", \"\\\\widecheck\"];\n\n// TODO: Remove if/when Chromium stretches \\widetilde & \\widehat\nconst accentNode = (group) => {\n  const mo = mathMLnode(group.label);\n  if (group.label.indexOf(\"tilde\") > -1) {\n    const width = estimatedWidth(group.base);\n    if (1 < width && width < 1.6) {\n      mo.classes.push(\"tml-tilde-2\");\n    } else if (1.6 <= width && width < 2.5) {\n      mo.classes.push(\"tml-tilde-3\");\n    } else if (2.5 <= width) {\n      mo.classes.push(\"tml-tilde-4\");\n    }\n  } else if (wideHats.includes(group.label)) {\n    const width = estimatedWidth(group.base);\n    if (0 < width && width <= 1) {\n      mo.classes.push(\"tml-hat-1\");\n    } else if (1 < width && width < 1.6) {\n      mo.classes.push(\"tml-hat-2\");\n    } else if (1.6 <= width && width < 2.5) {\n      mo.classes.push(\"tml-hat-3\");\n    } else if (2.5 <= width) {\n      mo.classes.push(\"tml-hat-4\");\n    }\n  }\n  return mo\n};\n\n/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are two properties they can have:\n * - group (required): the ParseNode group type the symbol should have (i.e.\n     \"textord\", \"mathord\", etc).\n * - replace: the character that this symbol or function should be\n *   replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n *   character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n\n// Some of these have a \"-token\" suffix since these are also used as `ParseNode`\n// types for raw text tokens, and we want to avoid conflicts with higher-level\n// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by\n// looking up the `symbols` map.\nconst ATOMS = {\n  bin: 1,\n  close: 1,\n  inner: 1,\n  open: 1,\n  punct: 1,\n  rel: 1\n};\nconst NON_ATOMS = {\n  \"accent-token\": 1,\n  mathord: 1,\n  \"op-token\": 1,\n  spacing: 1,\n  textord: 1\n};\n\nconst symbols = {\n  math: {},\n  text: {}\n};\n\n/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */\nfunction defineSymbol(mode, group, replace, name, acceptUnicodeChar) {\n  symbols[mode][name] = { group, replace };\n\n  if (acceptUnicodeChar && replace) {\n    symbols[mode][replace] = symbols[mode][name];\n  }\n}\n\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n\n// modes:\nconst math = \"math\";\nconst text = \"text\";\n\n// groups:\nconst accent = \"accent-token\";\nconst bin = \"bin\";\nconst close = \"close\";\nconst inner = \"inner\";\nconst mathord = \"mathord\";\nconst op = \"op-token\";\nconst open = \"open\";\nconst punct = \"punct\";\nconst rel = \"rel\";\nconst spacing = \"spacing\";\nconst textord = \"textord\";\n\n// Now comes the symbol table\n\n// Relation Symbols\ndefineSymbol(math, rel, \"\\u2261\", \"\\\\equiv\", true);\ndefineSymbol(math, rel, \"\\u227a\", \"\\\\prec\", true);\ndefineSymbol(math, rel, \"\\u227b\", \"\\\\succ\", true);\ndefineSymbol(math, rel, \"\\u223c\", \"\\\\sim\", true);\ndefineSymbol(math, rel, \"\\u27c2\", \"\\\\perp\", true);\ndefineSymbol(math, rel, \"\\u2aaf\", \"\\\\preceq\", true);\ndefineSymbol(math, rel, \"\\u2ab0\", \"\\\\succeq\", true);\ndefineSymbol(math, rel, \"\\u2243\", \"\\\\simeq\", true);\ndefineSymbol(math, rel, \"\\u224c\", \"\\\\backcong\", true);\ndefineSymbol(math, rel, \"|\", \"\\\\mid\", true);\ndefineSymbol(math, rel, \"\\u226a\", \"\\\\ll\", true);\ndefineSymbol(math, rel, \"\\u226b\", \"\\\\gg\", true);\ndefineSymbol(math, rel, \"\\u224d\", \"\\\\asymp\", true);\ndefineSymbol(math, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, rel, \"\\u2323\", \"\\\\smile\", true);\ndefineSymbol(math, rel, \"\\u2291\", \"\\\\sqsubseteq\", true);\ndefineSymbol(math, rel, \"\\u2292\", \"\\\\sqsupseteq\", true);\ndefineSymbol(math, rel, \"\\u2250\", \"\\\\doteq\", true);\ndefineSymbol(math, rel, \"\\u2322\", \"\\\\frown\", true);\ndefineSymbol(math, rel, \"\\u220b\", \"\\\\ni\", true);\ndefineSymbol(math, rel, \"\\u220c\", \"\\\\notni\", true);\ndefineSymbol(math, rel, \"\\u221d\", \"\\\\propto\", true);\ndefineSymbol(math, rel, \"\\u22a2\", \"\\\\vdash\", true);\ndefineSymbol(math, rel, \"\\u22a3\", \"\\\\dashv\", true);\ndefineSymbol(math, rel, \"\\u220b\", \"\\\\owns\");\ndefineSymbol(math, rel, \"\\u2258\", \"\\\\arceq\", true);\ndefineSymbol(math, rel, \"\\u2259\", \"\\\\wedgeq\", true);\ndefineSymbol(math, rel, \"\\u225a\", \"\\\\veeeq\", true);\ndefineSymbol(math, rel, \"\\u225b\", \"\\\\stareq\", true);\ndefineSymbol(math, rel, \"\\u225d\", \"\\\\eqdef\", true);\ndefineSymbol(math, rel, \"\\u225e\", \"\\\\measeq\", true);\ndefineSymbol(math, rel, \"\\u225f\", \"\\\\questeq\", true);\ndefineSymbol(math, rel, \"\\u2260\", \"\\\\ne\", true);\ndefineSymbol(math, rel, \"\\u2260\", \"\\\\neq\");\n// unicodemath\ndefineSymbol(math, rel, \"\\u2a75\", \"\\\\eqeq\", true);\ndefineSymbol(math, rel, \"\\u2a76\", \"\\\\eqeqeq\", true);\n// mathtools.sty\ndefineSymbol(math, rel, \"\\u2237\", \"\\\\dblcolon\", true);\ndefineSymbol(math, rel, \"\\u2254\", \"\\\\coloneqq\", true);\ndefineSymbol(math, rel, \"\\u2255\", \"\\\\eqqcolon\", true);\ndefineSymbol(math, rel, \"\\u2239\", \"\\\\eqcolon\", true);\ndefineSymbol(math, rel, \"\\u2A74\", \"\\\\Coloneqq\", true);\n\n// Punctuation\ndefineSymbol(math, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, punct, \"\\u00b7\", \"\\\\cdotp\");\n\n// Misc Symbols\ndefineSymbol(math, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(text, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(text, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, textord, \"\\u2135\", \"\\\\aleph\", true);\ndefineSymbol(math, textord, \"\\u2200\", \"\\\\forall\", true);\ndefineSymbol(math, textord, \"\\u210f\", \"\\\\hbar\", true);\ndefineSymbol(math, textord, \"\\u2203\", \"\\\\exists\", true);\ndefineSymbol(math, open, \"\\u2207\", \"\\\\nabla\", true);\ndefineSymbol(math, textord, \"\\u266d\", \"\\\\flat\", true);\ndefineSymbol(math, textord, \"\\u2113\", \"\\\\ell\", true);\ndefineSymbol(math, textord, \"\\u266e\", \"\\\\natural\", true);\ndefineSymbol(math, textord, \"Å\", \"\\\\Angstrom\", true);\ndefineSymbol(text, textord, \"Å\", \"\\\\Angstrom\", true);\ndefineSymbol(math, textord, \"\\u2663\", \"\\\\clubsuit\", true);\ndefineSymbol(math, textord, \"\\u2667\", \"\\\\varclubsuit\", true);\ndefineSymbol(math, textord, \"\\u2118\", \"\\\\wp\", true);\ndefineSymbol(math, textord, \"\\u266f\", \"\\\\sharp\", true);\ndefineSymbol(math, textord, \"\\u2662\", \"\\\\diamondsuit\", true);\ndefineSymbol(math, textord, \"\\u2666\", \"\\\\vardiamondsuit\", true);\ndefineSymbol(math, textord, \"\\u211c\", \"\\\\Re\", true);\ndefineSymbol(math, textord, \"\\u2661\", \"\\\\heartsuit\", true);\ndefineSymbol(math, textord, \"\\u2665\", \"\\\\varheartsuit\", true);\ndefineSymbol(math, textord, \"\\u2111\", \"\\\\Im\", true);\ndefineSymbol(math, textord, \"\\u2660\", \"\\\\spadesuit\", true);\ndefineSymbol(math, textord, \"\\u2664\", \"\\\\varspadesuit\", true);\ndefineSymbol(math, textord, \"\\u2640\", \"\\\\female\", true);\ndefineSymbol(math, textord, \"\\u2642\", \"\\\\male\", true);\ndefineSymbol(math, textord, \"\\u00a7\", \"\\\\S\", true);\ndefineSymbol(text, textord, \"\\u00a7\", \"\\\\S\");\ndefineSymbol(math, textord, \"\\u00b6\", \"\\\\P\", true);\ndefineSymbol(text, textord, \"\\u00b6\", \"\\\\P\");\ndefineSymbol(text, textord, \"\\u263a\", \"\\\\smiley\", true);\ndefineSymbol(math, textord, \"\\u263a\", \"\\\\smiley\", true);\n\n// Math and Text\ndefineSymbol(math, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, textord, \"\\u2020\", \"\\\\textdagger\");\ndefineSymbol(math, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, textord, \"\\u2021\", \"\\\\textdaggerdbl\");\n\n// Large Delimiters\ndefineSymbol(math, close, \"\\u23b1\", \"\\\\rmoustache\", true);\ndefineSymbol(math, open, \"\\u23b0\", \"\\\\lmoustache\", true);\ndefineSymbol(math, close, \"\\u27ef\", \"\\\\rgroup\", true);\ndefineSymbol(math, open, \"\\u27ee\", \"\\\\lgroup\", true);\n\n// Binary Operators\ndefineSymbol(math, bin, \"\\u2213\", \"\\\\mp\", true);\ndefineSymbol(math, bin, \"\\u2296\", \"\\\\ominus\", true);\ndefineSymbol(math, bin, \"\\u228e\", \"\\\\uplus\", true);\ndefineSymbol(math, bin, \"\\u2293\", \"\\\\sqcap\", true);\ndefineSymbol(math, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, bin, \"\\u2294\", \"\\\\sqcup\", true);\ndefineSymbol(math, bin, \"\\u25ef\", \"\\\\bigcirc\", true);\ndefineSymbol(math, bin, \"\\u2219\", \"\\\\bullet\", true);\ndefineSymbol(math, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, bin, \"\\u2240\", \"\\\\wr\", true);\ndefineSymbol(math, bin, \"\\u2a3f\", \"\\\\amalg\");\ndefineSymbol(math, bin, \"\\u0026\", \"\\\\And\"); // from amsmath\ndefineSymbol(math, bin, \"\\u2AFD\", \"\\\\sslash\", true); // from stmaryrd\n\n// Arrow Symbols\ndefineSymbol(math, rel, \"\\u27f5\", \"\\\\longleftarrow\", true);\ndefineSymbol(math, rel, \"\\u21d0\", \"\\\\Leftarrow\", true);\ndefineSymbol(math, rel, \"\\u27f8\", \"\\\\Longleftarrow\", true);\ndefineSymbol(math, rel, \"\\u27f6\", \"\\\\longrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21d2\", \"\\\\Rightarrow\", true);\ndefineSymbol(math, rel, \"\\u27f9\", \"\\\\Longrightarrow\", true);\ndefineSymbol(math, rel, \"\\u2194\", \"\\\\leftrightarrow\", true);\ndefineSymbol(math, rel, \"\\u27f7\", \"\\\\longleftrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21d4\", \"\\\\Leftrightarrow\", true);\ndefineSymbol(math, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21a4\", \"\\\\mapsfrom\", true);\ndefineSymbol(math, rel, \"\\u21a6\", \"\\\\mapsto\", true);\ndefineSymbol(math, rel, \"\\u27fc\", \"\\\\longmapsto\", true);\ndefineSymbol(math, rel, \"\\u2197\", \"\\\\nearrow\", true);\ndefineSymbol(math, rel, \"\\u21a9\", \"\\\\hookleftarrow\", true);\ndefineSymbol(math, rel, \"\\u21aa\", \"\\\\hookrightarrow\", true);\ndefineSymbol(math, rel, \"\\u2198\", \"\\\\searrow\", true);\ndefineSymbol(math, rel, \"\\u21bc\", \"\\\\leftharpoonup\", true);\ndefineSymbol(math, rel, \"\\u21c0\", \"\\\\rightharpoonup\", true);\ndefineSymbol(math, rel, \"\\u2199\", \"\\\\swarrow\", true);\ndefineSymbol(math, rel, \"\\u21bd\", \"\\\\leftharpoondown\", true);\ndefineSymbol(math, rel, \"\\u21c1\", \"\\\\rightharpoondown\", true);\ndefineSymbol(math, rel, \"\\u2196\", \"\\\\nwarrow\", true);\ndefineSymbol(math, rel, \"\\u21cc\", \"\\\\rightleftharpoons\", true);\ndefineSymbol(math, mathord, \"\\u21af\", \"\\\\lightning\", true);\ndefineSymbol(math, mathord, \"\\u220E\", \"\\\\QED\", true);\ndefineSymbol(math, mathord, \"\\u2030\", \"\\\\permil\", true);\ndefineSymbol(text, textord, \"\\u2030\", \"\\\\permil\");\ndefineSymbol(math, mathord, \"\\u2609\", \"\\\\astrosun\", true);\ndefineSymbol(math, mathord, \"\\u263c\", \"\\\\sun\", true);\ndefineSymbol(math, mathord, \"\\u263e\", \"\\\\leftmoon\", true);\ndefineSymbol(math, mathord, \"\\u263d\", \"\\\\rightmoon\", true);\ndefineSymbol(math, mathord, \"\\u2295\", \"\\\\Earth\");\n\n// AMS Negated Binary Relations\ndefineSymbol(math, rel, \"\\u226e\", \"\\\\nless\", true);\n// Symbol names preceded by \"@\" each have a corresponding macro.\ndefineSymbol(math, rel, \"\\u2a87\", \"\\\\lneq\", true);\ndefineSymbol(math, rel, \"\\u2268\", \"\\\\lneqq\", true);\ndefineSymbol(math, rel, \"\\u2268\\ufe00\", \"\\\\lvertneqq\");\ndefineSymbol(math, rel, \"\\u22e6\", \"\\\\lnsim\", true);\ndefineSymbol(math, rel, \"\\u2a89\", \"\\\\lnapprox\", true);\ndefineSymbol(math, rel, \"\\u2280\", \"\\\\nprec\", true);\n// unicode-math maps \\u22e0 to \\npreccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u22e0\", \"\\\\npreceq\", true);\ndefineSymbol(math, rel, \"\\u22e8\", \"\\\\precnsim\", true);\ndefineSymbol(math, rel, \"\\u2ab9\", \"\\\\precnapprox\", true);\ndefineSymbol(math, rel, \"\\u2241\", \"\\\\nsim\", true);\ndefineSymbol(math, rel, \"\\u2224\", \"\\\\nmid\", true);\ndefineSymbol(math, rel, \"\\u2224\", \"\\\\nshortmid\");\ndefineSymbol(math, rel, \"\\u22ac\", \"\\\\nvdash\", true);\ndefineSymbol(math, rel, \"\\u22ad\", \"\\\\nvDash\", true);\ndefineSymbol(math, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\", true);\ndefineSymbol(math, rel, \"\\u2284\", \"\\\\nsubset\", true);\ndefineSymbol(math, rel, \"\\u2285\", \"\\\\nsupset\", true);\ndefineSymbol(math, rel, \"\\u228a\", \"\\\\subsetneq\", true);\ndefineSymbol(math, rel, \"\\u228a\\ufe00\", \"\\\\varsubsetneq\");\ndefineSymbol(math, rel, \"\\u2acb\", \"\\\\subsetneqq\", true);\ndefineSymbol(math, rel, \"\\u2acb\\ufe00\", \"\\\\varsubsetneqq\");\ndefineSymbol(math, rel, \"\\u226f\", \"\\\\ngtr\", true);\ndefineSymbol(math, rel, \"\\u2a88\", \"\\\\gneq\", true);\ndefineSymbol(math, rel, \"\\u2269\", \"\\\\gneqq\", true);\ndefineSymbol(math, rel, \"\\u2269\\ufe00\", \"\\\\gvertneqq\");\ndefineSymbol(math, rel, \"\\u22e7\", \"\\\\gnsim\", true);\ndefineSymbol(math, rel, \"\\u2a8a\", \"\\\\gnapprox\", true);\ndefineSymbol(math, rel, \"\\u2281\", \"\\\\nsucc\", true);\n// unicode-math maps \\u22e1 to \\nsucccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u22e1\", \"\\\\nsucceq\", true);\ndefineSymbol(math, rel, \"\\u22e9\", \"\\\\succnsim\", true);\ndefineSymbol(math, rel, \"\\u2aba\", \"\\\\succnapprox\", true);\n// unicode-math maps \\u2246 to \\simneqq. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u2246\", \"\\\\ncong\", true);\ndefineSymbol(math, rel, \"\\u2226\", \"\\\\nparallel\", true);\ndefineSymbol(math, rel, \"\\u2226\", \"\\\\nshortparallel\");\ndefineSymbol(math, rel, \"\\u22af\", \"\\\\nVDash\", true);\ndefineSymbol(math, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\", true);\ndefineSymbol(math, rel, \"\\u228b\", \"\\\\supsetneq\", true);\ndefineSymbol(math, rel, \"\\u228b\", \"\\\\varsupsetneq\");\ndefineSymbol(math, rel, \"\\u2acc\", \"\\\\supsetneqq\", true);\ndefineSymbol(math, rel, \"\\u2acc\\ufe00\", \"\\\\varsupsetneqq\");\ndefineSymbol(math, rel, \"\\u22ae\", \"\\\\nVdash\", true);\ndefineSymbol(math, rel, \"\\u2ab5\", \"\\\\precneqq\", true);\ndefineSymbol(math, rel, \"\\u2ab6\", \"\\\\succneqq\", true);\ndefineSymbol(math, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, bin, \"\\u22b5\", \"\\\\unrhd\");\n\n// AMS Negated Arrows\ndefineSymbol(math, rel, \"\\u219a\", \"\\\\nleftarrow\", true);\ndefineSymbol(math, rel, \"\\u219b\", \"\\\\nrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21cd\", \"\\\\nLeftarrow\", true);\ndefineSymbol(math, rel, \"\\u21cf\", \"\\\\nRightarrow\", true);\ndefineSymbol(math, rel, \"\\u21ae\", \"\\\\nleftrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\", true);\n\n// AMS Misc\ndefineSymbol(math, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, textord, \"\\u00ae\", \"\\\\circledR\", true);\ndefineSymbol(text, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(text, textord, \"\\u00ae\", \"\\\\textregistered\");\ndefineSymbol(math, textord, \"\\u2221\", \"\\\\measuredangle\", true);\ndefineSymbol(math, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, textord, \"\\u2132\", \"\\\\Finv\", true);\ndefineSymbol(math, textord, \"\\u2141\", \"\\\\Game\", true);\ndefineSymbol(math, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, textord, \"\\u2036\", \"\\\\backdprime\");\ndefineSymbol(math, textord, \"\\u2037\", \"\\\\backtrprime\");\ndefineSymbol(math, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, textord, \"\\u2222\", \"\\\\sphericalangle\", true);\ndefineSymbol(math, textord, \"\\u2201\", \"\\\\complement\", true);\ndefineSymbol(math, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, textord, \"\\u25ca\", \"\\\\Diamond\");\n// unicode-math maps U+A5 to \\mathyen. We map to AMS function \\yen\ndefineSymbol(math, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(text, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(math, textord, \"\\u2713\", \"\\\\checkmark\", true);\ndefineSymbol(text, textord, \"\\u2713\", \"\\\\checkmark\");\ndefineSymbol(math, textord, \"\\u2717\", \"\\\\ballotx\", true);\ndefineSymbol(text, textord, \"\\u2717\", \"\\\\ballotx\");\ndefineSymbol(text, textord, \"\\u2022\", \"\\\\textbullet\");\n\n// AMS Hebrew\ndefineSymbol(math, textord, \"\\u2136\", \"\\\\beth\", true);\ndefineSymbol(math, textord, \"\\u2138\", \"\\\\daleth\", true);\ndefineSymbol(math, textord, \"\\u2137\", \"\\\\gimel\", true);\n\n// AMS Greek\ndefineSymbol(math, textord, \"\\u03dd\", \"\\\\digamma\", true);\ndefineSymbol(math, textord, \"\\u03f0\", \"\\\\varkappa\");\n\n// AMS Delimiters\ndefineSymbol(math, open, \"\\u231C\", \"\\\\ulcorner\", true);\ndefineSymbol(math, close, \"\\u231D\", \"\\\\urcorner\", true);\ndefineSymbol(math, open, \"\\u231E\", \"\\\\llcorner\", true);\ndefineSymbol(math, close, \"\\u231F\", \"\\\\lrcorner\", true);\n\n// AMS Binary Relations\ndefineSymbol(math, rel, \"\\u2266\", \"\\\\leqq\", true);\ndefineSymbol(math, rel, \"\\u2a7d\", \"\\\\leqslant\", true);\ndefineSymbol(math, rel, \"\\u2a95\", \"\\\\eqslantless\", true);\ndefineSymbol(math, rel, \"\\u2272\", \"\\\\lesssim\", true);\ndefineSymbol(math, rel, \"\\u2a85\", \"\\\\lessapprox\", true);\ndefineSymbol(math, rel, \"\\u224a\", \"\\\\approxeq\", true);\ndefineSymbol(math, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, rel, \"\\u22d8\", \"\\\\lll\", true);\ndefineSymbol(math, rel, \"\\u2276\", \"\\\\lessgtr\", true);\ndefineSymbol(math, rel, \"\\u22da\", \"\\\\lesseqgtr\", true);\ndefineSymbol(math, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\", true);\ndefineSymbol(math, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, rel, \"\\u2253\", \"\\\\risingdotseq\", true);\ndefineSymbol(math, rel, \"\\u2252\", \"\\\\fallingdotseq\", true);\ndefineSymbol(math, rel, \"\\u223d\", \"\\\\backsim\", true);\ndefineSymbol(math, rel, \"\\u22cd\", \"\\\\backsimeq\", true);\ndefineSymbol(math, rel, \"\\u2ac5\", \"\\\\subseteqq\", true);\ndefineSymbol(math, rel, \"\\u22d0\", \"\\\\Subset\", true);\ndefineSymbol(math, rel, \"\\u228f\", \"\\\\sqsubset\", true);\ndefineSymbol(math, rel, \"\\u227c\", \"\\\\preccurlyeq\", true);\ndefineSymbol(math, rel, \"\\u22de\", \"\\\\curlyeqprec\", true);\ndefineSymbol(math, rel, \"\\u227e\", \"\\\\precsim\", true);\ndefineSymbol(math, rel, \"\\u2ab7\", \"\\\\precapprox\", true);\ndefineSymbol(math, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, rel, \"\\u22a8\", \"\\\\vDash\", true);\ndefineSymbol(math, rel, \"\\u22ab\", \"\\\\VDash\", true);\ndefineSymbol(math, rel, \"\\u22aa\", \"\\\\Vvdash\", true);\ndefineSymbol(math, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, rel, \"\\u224f\", \"\\\\bumpeq\", true);\ndefineSymbol(math, rel, \"\\u224e\", \"\\\\Bumpeq\", true);\ndefineSymbol(math, rel, \"\\u2267\", \"\\\\geqq\", true);\ndefineSymbol(math, rel, \"\\u2a7e\", \"\\\\geqslant\", true);\ndefineSymbol(math, rel, \"\\u2a96\", \"\\\\eqslantgtr\", true);\ndefineSymbol(math, rel, \"\\u2273\", \"\\\\gtrsim\", true);\ndefineSymbol(math, rel, \"\\u2a86\", \"\\\\gtrapprox\", true);\ndefineSymbol(math, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, rel, \"\\u22d9\", \"\\\\ggg\", true);\ndefineSymbol(math, rel, \"\\u2277\", \"\\\\gtrless\", true);\ndefineSymbol(math, rel, \"\\u22db\", \"\\\\gtreqless\", true);\ndefineSymbol(math, rel, \"\\u2a8c\", \"\\\\gtreqqless\", true);\ndefineSymbol(math, rel, \"\\u2256\", \"\\\\eqcirc\", true);\ndefineSymbol(math, rel, \"\\u2257\", \"\\\\circeq\", true);\ndefineSymbol(math, rel, \"\\u225c\", \"\\\\triangleq\", true);\ndefineSymbol(math, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, rel, \"\\u2ac6\", \"\\\\supseteqq\", true);\ndefineSymbol(math, rel, \"\\u22d1\", \"\\\\Supset\", true);\ndefineSymbol(math, rel, \"\\u2290\", \"\\\\sqsupset\", true);\ndefineSymbol(math, rel, \"\\u227d\", \"\\\\succcurlyeq\", true);\ndefineSymbol(math, rel, \"\\u22df\", \"\\\\curlyeqsucc\", true);\ndefineSymbol(math, rel, \"\\u227f\", \"\\\\succsim\", true);\ndefineSymbol(math, rel, \"\\u2ab8\", \"\\\\succapprox\", true);\ndefineSymbol(math, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, rel, \"\\u22a9\", \"\\\\Vdash\", true);\ndefineSymbol(math, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, rel, \"\\u226c\", \"\\\\between\", true);\ndefineSymbol(math, rel, \"\\u22d4\", \"\\\\pitchfork\", true);\ndefineSymbol(math, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\n// unicode-math says that \\therefore is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, rel, \"\\u2234\", \"\\\\therefore\", true);\ndefineSymbol(math, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\n// unicode-math says that \\because is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, rel, \"\\u2235\", \"\\\\because\", true);\ndefineSymbol(math, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, rel, \"\\u2242\", \"\\\\eqsim\", true);\ndefineSymbol(math, rel, \"\\u2251\", \"\\\\Doteq\", true);\ndefineSymbol(math, rel, \"\\u297d\", \"\\\\strictif\", true);\ndefineSymbol(math, rel, \"\\u297c\", \"\\\\strictfi\", true);\n\n// AMS Binary Operators\ndefineSymbol(math, bin, \"\\u2214\", \"\\\\dotplus\", true);\ndefineSymbol(math, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, bin, \"\\u22d2\", \"\\\\Cap\", true);\ndefineSymbol(math, bin, \"\\u22d3\", \"\\\\Cup\", true);\ndefineSymbol(math, bin, \"\\u2a5e\", \"\\\\doublebarwedge\", true);\ndefineSymbol(math, bin, \"\\u229f\", \"\\\\boxminus\", true);\ndefineSymbol(math, bin, \"\\u229e\", \"\\\\boxplus\", true);\ndefineSymbol(math, bin, \"\\u29C4\", \"\\\\boxslash\", true);\ndefineSymbol(math, bin, \"\\u22c7\", \"\\\\divideontimes\", true);\ndefineSymbol(math, bin, \"\\u22c9\", \"\\\\ltimes\", true);\ndefineSymbol(math, bin, \"\\u22ca\", \"\\\\rtimes\", true);\ndefineSymbol(math, bin, \"\\u22cb\", \"\\\\leftthreetimes\", true);\ndefineSymbol(math, bin, \"\\u22cc\", \"\\\\rightthreetimes\", true);\ndefineSymbol(math, bin, \"\\u22cf\", \"\\\\curlywedge\", true);\ndefineSymbol(math, bin, \"\\u22ce\", \"\\\\curlyvee\", true);\ndefineSymbol(math, bin, \"\\u229d\", \"\\\\circleddash\", true);\ndefineSymbol(math, bin, \"\\u229b\", \"\\\\circledast\", true);\ndefineSymbol(math, bin, \"\\u22ba\", \"\\\\intercal\", true);\ndefineSymbol(math, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, bin, \"\\u22a0\", \"\\\\boxtimes\", true);\ndefineSymbol(math, bin, \"\\u22c8\", \"\\\\bowtie\", true);\ndefineSymbol(math, bin, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, bin, \"\\u27d5\", \"\\\\leftouterjoin\", true);\ndefineSymbol(math, bin, \"\\u27d6\", \"\\\\rightouterjoin\", true);\ndefineSymbol(math, bin, \"\\u27d7\", \"\\\\fullouterjoin\", true);\n\n// stix Binary Operators\ndefineSymbol(math, bin, \"\\u2238\", \"\\\\dotminus\", true);\ndefineSymbol(math, bin, \"\\u27D1\", \"\\\\wedgedot\", true);\ndefineSymbol(math, bin, \"\\u27C7\", \"\\\\veedot\", true);\ndefineSymbol(math, bin, \"\\u2A62\", \"\\\\doublebarvee\", true);\ndefineSymbol(math, bin, \"\\u2A63\", \"\\\\veedoublebar\", true);\ndefineSymbol(math, bin, \"\\u2A5F\", \"\\\\wedgebar\", true);\ndefineSymbol(math, bin, \"\\u2A60\", \"\\\\wedgedoublebar\", true);\ndefineSymbol(math, bin, \"\\u2A54\", \"\\\\Vee\", true);\ndefineSymbol(math, bin, \"\\u2A53\", \"\\\\Wedge\", true);\ndefineSymbol(math, bin, \"\\u2A43\", \"\\\\barcap\", true);\ndefineSymbol(math, bin, \"\\u2A42\", \"\\\\barcup\", true);\ndefineSymbol(math, bin, \"\\u2A48\", \"\\\\capbarcup\", true);\ndefineSymbol(math, bin, \"\\u2A40\", \"\\\\capdot\", true);\ndefineSymbol(math, bin, \"\\u2A47\", \"\\\\capovercup\", true);\ndefineSymbol(math, bin, \"\\u2A46\", \"\\\\cupovercap\", true);\ndefineSymbol(math, bin, \"\\u2A4D\", \"\\\\closedvarcap\", true);\ndefineSymbol(math, bin, \"\\u2A4C\", \"\\\\closedvarcup\", true);\ndefineSymbol(math, bin, \"\\u2A2A\", \"\\\\minusdot\", true);\ndefineSymbol(math, bin, \"\\u2A2B\", \"\\\\minusfdots\", true);\ndefineSymbol(math, bin, \"\\u2A2C\", \"\\\\minusrdots\", true);\ndefineSymbol(math, bin, \"\\u22BB\", \"\\\\Xor\", true);\ndefineSymbol(math, bin, \"\\u22BC\", \"\\\\Nand\", true);\ndefineSymbol(math, bin, \"\\u22BD\", \"\\\\Nor\", true);\ndefineSymbol(math, bin, \"\\u22BD\", \"\\\\barvee\");\ndefineSymbol(math, bin, \"\\u2AF4\", \"\\\\interleave\", true);\ndefineSymbol(math, bin, \"\\u29E2\", \"\\\\shuffle\", true);\ndefineSymbol(math, bin, \"\\u2AF6\", \"\\\\threedotcolon\", true);\ndefineSymbol(math, bin, \"\\u2982\", \"\\\\typecolon\", true);\ndefineSymbol(math, bin, \"\\u223E\", \"\\\\invlazys\", true);\ndefineSymbol(math, bin, \"\\u2A4B\", \"\\\\twocaps\", true);\ndefineSymbol(math, bin, \"\\u2A4A\", \"\\\\twocups\", true);\ndefineSymbol(math, bin, \"\\u2A4E\", \"\\\\Sqcap\", true);\ndefineSymbol(math, bin, \"\\u2A4F\", \"\\\\Sqcup\", true);\ndefineSymbol(math, bin, \"\\u2A56\", \"\\\\veeonvee\", true);\ndefineSymbol(math, bin, \"\\u2A55\", \"\\\\wedgeonwedge\", true);\ndefineSymbol(math, bin, \"\\u29D7\", \"\\\\blackhourglass\", true);\ndefineSymbol(math, bin, \"\\u29C6\", \"\\\\boxast\", true);\ndefineSymbol(math, bin, \"\\u29C8\", \"\\\\boxbox\", true);\ndefineSymbol(math, bin, \"\\u29C7\", \"\\\\boxcircle\", true);\ndefineSymbol(math, bin, \"\\u229C\", \"\\\\circledequal\", true);\ndefineSymbol(math, bin, \"\\u29B7\", \"\\\\circledparallel\", true);\ndefineSymbol(math, bin, \"\\u29B6\", \"\\\\circledvert\", true);\ndefineSymbol(math, bin, \"\\u29B5\", \"\\\\circlehbar\", true);\ndefineSymbol(math, bin, \"\\u27E1\", \"\\\\concavediamond\", true);\ndefineSymbol(math, bin, \"\\u27E2\", \"\\\\concavediamondtickleft\", true);\ndefineSymbol(math, bin, \"\\u27E3\", \"\\\\concavediamondtickright\", true);\ndefineSymbol(math, bin, \"\\u22C4\", \"\\\\diamond\", true);\ndefineSymbol(math, bin, \"\\u29D6\", \"\\\\hourglass\", true);\ndefineSymbol(math, bin, \"\\u27E0\", \"\\\\lozengeminus\", true);\ndefineSymbol(math, bin, \"\\u233D\", \"\\\\obar\", true);\ndefineSymbol(math, bin, \"\\u29B8\", \"\\\\obslash\", true);\ndefineSymbol(math, bin, \"\\u2A38\", \"\\\\odiv\", true);\ndefineSymbol(math, bin, \"\\u29C1\", \"\\\\ogreaterthan\", true);\ndefineSymbol(math, bin, \"\\u29C0\", \"\\\\olessthan\", true);\ndefineSymbol(math, bin, \"\\u29B9\", \"\\\\operp\", true);\ndefineSymbol(math, bin, \"\\u2A37\", \"\\\\Otimes\", true);\ndefineSymbol(math, bin, \"\\u2A36\", \"\\\\otimeshat\", true);\ndefineSymbol(math, bin, \"\\u22C6\", \"\\\\star\", true);\ndefineSymbol(math, bin, \"\\u25B3\", \"\\\\triangle\", true);\ndefineSymbol(math, bin, \"\\u2A3A\", \"\\\\triangleminus\", true);\ndefineSymbol(math, bin, \"\\u2A39\", \"\\\\triangleplus\", true);\ndefineSymbol(math, bin, \"\\u2A3B\", \"\\\\triangletimes\", true);\ndefineSymbol(math, bin, \"\\u27E4\", \"\\\\whitesquaretickleft\", true);\ndefineSymbol(math, bin, \"\\u27E5\", \"\\\\whitesquaretickright\", true);\ndefineSymbol(math, bin, \"\\u2A33\", \"\\\\smashtimes\", true);\n\n// AMS Arrows\n// Note: unicode-math maps \\u21e2 to their own function \\rightdasharrow.\n// We'll map it to AMS function \\dashrightarrow. It produces the same atom.\ndefineSymbol(math, rel, \"\\u21e2\", \"\\\\dashrightarrow\", true);\n// unicode-math maps \\u21e0 to \\leftdasharrow. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u21e0\", \"\\\\dashleftarrow\", true);\ndefineSymbol(math, rel, \"\\u21c7\", \"\\\\leftleftarrows\", true);\ndefineSymbol(math, rel, \"\\u21c6\", \"\\\\leftrightarrows\", true);\ndefineSymbol(math, rel, \"\\u21da\", \"\\\\Lleftarrow\", true);\ndefineSymbol(math, rel, \"\\u219e\", \"\\\\twoheadleftarrow\", true);\ndefineSymbol(math, rel, \"\\u21a2\", \"\\\\leftarrowtail\", true);\ndefineSymbol(math, rel, \"\\u21ab\", \"\\\\looparrowleft\", true);\ndefineSymbol(math, rel, \"\\u21cb\", \"\\\\leftrightharpoons\", true);\ndefineSymbol(math, rel, \"\\u21b6\", \"\\\\curvearrowleft\", true);\n// unicode-math maps \\u21ba to \\acwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u21ba\", \"\\\\circlearrowleft\", true);\ndefineSymbol(math, rel, \"\\u21b0\", \"\\\\Lsh\", true);\ndefineSymbol(math, rel, \"\\u21c8\", \"\\\\upuparrows\", true);\ndefineSymbol(math, rel, \"\\u21bf\", \"\\\\upharpoonleft\", true);\ndefineSymbol(math, rel, \"\\u21c3\", \"\\\\downharpoonleft\", true);\ndefineSymbol(math, rel, \"\\u22b6\", \"\\\\origof\", true);\ndefineSymbol(math, rel, \"\\u22b7\", \"\\\\imageof\", true);\ndefineSymbol(math, rel, \"\\u22b8\", \"\\\\multimap\", true);\ndefineSymbol(math, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\", true);\ndefineSymbol(math, rel, \"\\u21c9\", \"\\\\rightrightarrows\", true);\ndefineSymbol(math, rel, \"\\u21c4\", \"\\\\rightleftarrows\", true);\ndefineSymbol(math, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21a3\", \"\\\\rightarrowtail\", true);\ndefineSymbol(math, rel, \"\\u21ac\", \"\\\\looparrowright\", true);\ndefineSymbol(math, rel, \"\\u21b7\", \"\\\\curvearrowright\", true);\n// unicode-math maps \\u21bb to \\cwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, rel, \"\\u21bb\", \"\\\\circlearrowright\", true);\ndefineSymbol(math, rel, \"\\u21b1\", \"\\\\Rsh\", true);\ndefineSymbol(math, rel, \"\\u21ca\", \"\\\\downdownarrows\", true);\ndefineSymbol(math, rel, \"\\u21be\", \"\\\\upharpoonright\", true);\ndefineSymbol(math, rel, \"\\u21c2\", \"\\\\downharpoonright\", true);\ndefineSymbol(math, rel, \"\\u21dd\", \"\\\\rightsquigarrow\", true);\ndefineSymbol(math, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, rel, \"\\u21db\", \"\\\\Rrightarrow\", true);\ndefineSymbol(math, rel, \"\\u21be\", \"\\\\restriction\");\n\ndefineSymbol(math, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, textord, \"$\", \"\\\\textdollar\");\ndefineSymbol(math, textord, \"¢\", \"\\\\cent\");\ndefineSymbol(text, textord, \"¢\", \"\\\\cent\");\ndefineSymbol(math, textord, \"%\", \"\\\\%\");\ndefineSymbol(text, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, textord, \"_\", \"\\\\textunderscore\");\ndefineSymbol(text, textord, \"\\u2423\", \"\\\\textvisiblespace\", true);\ndefineSymbol(math, textord, \"\\u2220\", \"\\\\angle\", true);\ndefineSymbol(math, textord, \"\\u221e\", \"\\\\infty\", true);\ndefineSymbol(math, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, textord, \"\\u2033\", \"\\\\dprime\");\ndefineSymbol(math, textord, \"\\u2034\", \"\\\\trprime\");\ndefineSymbol(math, textord, \"\\u2057\", \"\\\\qprime\");\ndefineSymbol(math, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(text, textord, \"\\u0391\", \"\\\\Alpha\", true);\ndefineSymbol(text, textord, \"\\u0392\", \"\\\\Beta\", true);\ndefineSymbol(text, textord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(text, textord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(text, textord, \"\\u0395\", \"\\\\Epsilon\", true);\ndefineSymbol(text, textord, \"\\u0396\", \"\\\\Zeta\", true);\ndefineSymbol(text, textord, \"\\u0397\", \"\\\\Eta\", true);\ndefineSymbol(text, textord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(text, textord, \"\\u0399\", \"\\\\Iota\", true);\ndefineSymbol(text, textord, \"\\u039a\", \"\\\\Kappa\", true);\ndefineSymbol(text, textord, \"\\u039b\", \"\\\\Lambda\", true);\ndefineSymbol(text, textord, \"\\u039c\", \"\\\\Mu\", true);\ndefineSymbol(text, textord, \"\\u039d\", \"\\\\Nu\", true);\ndefineSymbol(text, textord, \"\\u039e\", \"\\\\Xi\", true);\ndefineSymbol(text, textord, \"\\u039f\", \"\\\\Omicron\", true);\ndefineSymbol(text, textord, \"\\u03a0\", \"\\\\Pi\", true);\ndefineSymbol(text, textord, \"\\u03a1\", \"\\\\Rho\", true);\ndefineSymbol(text, textord, \"\\u03a3\", \"\\\\Sigma\", true);\ndefineSymbol(text, textord, \"\\u03a4\", \"\\\\Tau\", true);\ndefineSymbol(text, textord, \"\\u03a5\", \"\\\\Upsilon\", true);\ndefineSymbol(text, textord, \"\\u03a6\", \"\\\\Phi\", true);\ndefineSymbol(text, textord, \"\\u03a7\", \"\\\\Chi\", true);\ndefineSymbol(text, textord, \"\\u03a8\", \"\\\\Psi\", true);\ndefineSymbol(text, textord, \"\\u03a9\", \"\\\\Omega\", true);\ndefineSymbol(math, mathord, \"\\u0391\", \"\\\\Alpha\", true);\ndefineSymbol(math, mathord, \"\\u0392\", \"\\\\Beta\", true);\ndefineSymbol(math, mathord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(math, mathord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(math, mathord, \"\\u0395\", \"\\\\Epsilon\", true);\ndefineSymbol(math, mathord, \"\\u0396\", \"\\\\Zeta\", true);\ndefineSymbol(math, mathord, \"\\u0397\", \"\\\\Eta\", true);\ndefineSymbol(math, mathord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(math, mathord, \"\\u0399\", \"\\\\Iota\", true);\ndefineSymbol(math, mathord, \"\\u039a\", \"\\\\Kappa\", true);\ndefineSymbol(math, mathord, \"\\u039b\", \"\\\\Lambda\", true);\ndefineSymbol(math, mathord, \"\\u039c\", \"\\\\Mu\", true);\ndefineSymbol(math, mathord, \"\\u039d\", \"\\\\Nu\", true);\ndefineSymbol(math, mathord, \"\\u039e\", \"\\\\Xi\", true);\ndefineSymbol(math, mathord, \"\\u039f\", \"\\\\Omicron\", true);\ndefineSymbol(math, mathord, \"\\u03a0\", \"\\\\Pi\", true);\ndefineSymbol(math, mathord, \"\\u03a1\", \"\\\\Rho\", true);\ndefineSymbol(math, mathord, \"\\u03a3\", \"\\\\Sigma\", true);\ndefineSymbol(math, mathord, \"\\u03a4\", \"\\\\Tau\", true);\ndefineSymbol(math, mathord, \"\\u03a5\", \"\\\\Upsilon\", true);\ndefineSymbol(math, mathord, \"\\u03a6\", \"\\\\Phi\", true);\ndefineSymbol(math, mathord, \"\\u03a7\", \"\\\\Chi\", true);\ndefineSymbol(math, mathord, \"\\u03a8\", \"\\\\Psi\", true);\ndefineSymbol(math, mathord, \"\\u03a9\", \"\\\\Omega\", true);\ndefineSymbol(math, open, \"\\u00ac\", \"\\\\neg\", true);\ndefineSymbol(math, open, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, textord, \"\\u2300\", \"\\\\varnothing\");\ndefineSymbol(math, mathord, \"\\u03b1\", \"\\\\alpha\", true);\ndefineSymbol(math, mathord, \"\\u03b2\", \"\\\\beta\", true);\ndefineSymbol(math, mathord, \"\\u03b3\", \"\\\\gamma\", true);\ndefineSymbol(math, mathord, \"\\u03b4\", \"\\\\delta\", true);\ndefineSymbol(math, mathord, \"\\u03f5\", \"\\\\epsilon\", true);\ndefineSymbol(math, mathord, \"\\u03b6\", \"\\\\zeta\", true);\ndefineSymbol(math, mathord, \"\\u03b7\", \"\\\\eta\", true);\ndefineSymbol(math, mathord, \"\\u03b8\", \"\\\\theta\", true);\ndefineSymbol(math, mathord, \"\\u03b9\", \"\\\\iota\", true);\ndefineSymbol(math, mathord, \"\\u03ba\", \"\\\\kappa\", true);\ndefineSymbol(math, mathord, \"\\u03bb\", \"\\\\lambda\", true);\ndefineSymbol(math, mathord, \"\\u03bc\", \"\\\\mu\", true);\ndefineSymbol(math, mathord, \"\\u03bd\", \"\\\\nu\", true);\ndefineSymbol(math, mathord, \"\\u03be\", \"\\\\xi\", true);\ndefineSymbol(math, mathord, \"\\u03bf\", \"\\\\omicron\", true);\ndefineSymbol(math, mathord, \"\\u03c0\", \"\\\\pi\", true);\ndefineSymbol(math, mathord, \"\\u03c1\", \"\\\\rho\", true);\ndefineSymbol(math, mathord, \"\\u03c3\", \"\\\\sigma\", true);\ndefineSymbol(math, mathord, \"\\u03c4\", \"\\\\tau\", true);\ndefineSymbol(math, mathord, \"\\u03c5\", \"\\\\upsilon\", true);\ndefineSymbol(math, mathord, \"\\u03d5\", \"\\\\phi\", true);\ndefineSymbol(math, mathord, \"\\u03c7\", \"\\\\chi\", true);\ndefineSymbol(math, mathord, \"\\u03c8\", \"\\\\psi\", true);\ndefineSymbol(math, mathord, \"\\u03c9\", \"\\\\omega\", true);\ndefineSymbol(math, mathord, \"\\u03b5\", \"\\\\varepsilon\", true);\ndefineSymbol(math, mathord, \"\\u03d1\", \"\\\\vartheta\", true);\ndefineSymbol(math, mathord, \"\\u03d6\", \"\\\\varpi\", true);\ndefineSymbol(math, mathord, \"\\u03f1\", \"\\\\varrho\", true);\ndefineSymbol(math, mathord, \"\\u03c2\", \"\\\\varsigma\", true);\ndefineSymbol(math, mathord, \"\\u03c6\", \"\\\\varphi\", true);\ndefineSymbol(math, mathord, \"\\u03d8\", \"\\\\Coppa\", true);\ndefineSymbol(math, mathord, \"\\u03d9\", \"\\\\coppa\", true);\ndefineSymbol(math, mathord, \"\\u03d9\", \"\\\\varcoppa\", true);\ndefineSymbol(math, mathord, \"\\u03de\", \"\\\\Koppa\", true);\ndefineSymbol(math, mathord, \"\\u03df\", \"\\\\koppa\", true);\ndefineSymbol(math, mathord, \"\\u03e0\", \"\\\\Sampi\", true);\ndefineSymbol(math, mathord, \"\\u03e1\", \"\\\\sampi\", true);\ndefineSymbol(math, mathord, \"\\u03da\", \"\\\\Stigma\", true);\ndefineSymbol(math, mathord, \"\\u03db\", \"\\\\stigma\", true);\ndefineSymbol(math, mathord, \"\\u2aeb\", \"\\\\Bot\");\n\n// unicode-math maps U+F0 to \\matheth. We map to AMS function \\eth\ndefineSymbol(math, textord, \"\\u00f0\", \"\\\\eth\", true); // ð\ndefineSymbol(text, textord, \"\\u00f0\", \"\\u00f0\");\n// Extended ASCII and non-ASCII Letters\ndefineSymbol(math, textord, \"\\u00C5\", \"\\\\AA\"); // Å\ndefineSymbol(text, textord, \"\\u00C5\", \"\\\\AA\", true);\ndefineSymbol(math, textord, \"\\u00C6\", \"\\\\AE\", true); // Æ\ndefineSymbol(text, textord, \"\\u00C6\", \"\\\\AE\", true);\ndefineSymbol(math, textord, \"\\u00D0\", \"\\\\DH\", true); // Ð\ndefineSymbol(text, textord, \"\\u00D0\", \"\\\\DH\", true);\ndefineSymbol(math, textord, \"\\u00DE\", \"\\\\TH\", true); // Þ\ndefineSymbol(text, textord, \"\\u00DE\", \"\\\\TH\", true);\ndefineSymbol(math, textord, \"\\u00DF\", \"\\\\ss\", true); // ß\ndefineSymbol(text, textord, \"\\u00DF\", \"\\\\ss\", true);\ndefineSymbol(math, textord, \"\\u00E5\", \"\\\\aa\"); // å\ndefineSymbol(text, textord, \"\\u00E5\", \"\\\\aa\", true);\ndefineSymbol(math, textord, \"\\u00E6\", \"\\\\ae\", true); // æ\ndefineSymbol(text, textord, \"\\u00E6\", \"\\\\ae\", true);\ndefineSymbol(math, textord, \"\\u00F0\", \"\\\\dh\"); // ð\ndefineSymbol(text, textord, \"\\u00F0\", \"\\\\dh\", true);\ndefineSymbol(math, textord, \"\\u00FE\", \"\\\\th\", true); // þ\ndefineSymbol(text, textord, \"\\u00FE\", \"\\\\th\", true);\ndefineSymbol(math, textord, \"\\u0110\", \"\\\\DJ\", true); // Đ\ndefineSymbol(text, textord, \"\\u0110\", \"\\\\DJ\", true);\ndefineSymbol(math, textord, \"\\u0111\", \"\\\\dj\", true); // đ\ndefineSymbol(text, textord, \"\\u0111\", \"\\\\dj\", true);\ndefineSymbol(math, textord, \"\\u0141\", \"\\\\L\", true); // Ł\ndefineSymbol(text, textord, \"\\u0141\", \"\\\\L\", true);\ndefineSymbol(math, textord, \"\\u0141\", \"\\\\l\", true); // ł\ndefineSymbol(text, textord, \"\\u0141\", \"\\\\l\", true);\ndefineSymbol(math, textord, \"\\u014A\", \"\\\\NG\", true); // Ŋ\ndefineSymbol(text, textord, \"\\u014A\", \"\\\\NG\", true);\ndefineSymbol(math, textord, \"\\u014B\", \"\\\\ng\", true); // ŋ\ndefineSymbol(text, textord, \"\\u014B\", \"\\\\ng\", true);\ndefineSymbol(math, textord, \"\\u0152\", \"\\\\OE\", true); // Œ\ndefineSymbol(text, textord, \"\\u0152\", \"\\\\OE\", true);\ndefineSymbol(math, textord, \"\\u0153\", \"\\\\oe\", true); // œ\ndefineSymbol(text, textord, \"\\u0153\", \"\\\\oe\", true);\n\ndefineSymbol(math, bin, \"\\u2217\", \"\\u2217\", true);\ndefineSymbol(math, bin, \"+\", \"+\");\ndefineSymbol(math, bin, \"\\u2217\", \"*\");\ndefineSymbol(math, bin, \"\\u2044\", \"/\", true);\ndefineSymbol(math, bin, \"\\u2044\", \"\\u2044\");\ndefineSymbol(math, bin, \"\\u2212\", \"-\", true);\ndefineSymbol(math, bin, \"\\u22c5\", \"\\\\cdot\", true);\ndefineSymbol(math, bin, \"\\u2218\", \"\\\\circ\", true);\ndefineSymbol(math, bin, \"\\u00f7\", \"\\\\div\", true);\ndefineSymbol(math, bin, \"\\u00b1\", \"\\\\pm\", true);\ndefineSymbol(math, bin, \"\\u00d7\", \"\\\\times\", true);\ndefineSymbol(math, bin, \"\\u2229\", \"\\\\cap\", true);\ndefineSymbol(math, bin, \"\\u222a\", \"\\\\cup\", true);\ndefineSymbol(math, bin, \"\\u2216\", \"\\\\setminus\", true);\ndefineSymbol(math, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, bin, \"\\u2227\", \"\\\\wedge\", true);\ndefineSymbol(math, bin, \"\\u2228\", \"\\\\vee\", true);\ndefineSymbol(math, open, \"\\u27e6\", \"\\\\llbracket\", true); // stmaryrd/semantic packages\ndefineSymbol(math, close, \"\\u27e7\", \"\\\\rrbracket\", true);\ndefineSymbol(math, open, \"\\u27e8\", \"\\\\langle\", true);\ndefineSymbol(math, open, \"\\u27ea\", \"\\\\lAngle\", true);\ndefineSymbol(math, open, \"\\u2989\", \"\\\\llangle\", true);\ndefineSymbol(math, open, \"|\", \"\\\\lvert\");\ndefineSymbol(math, open, \"\\u2016\", \"\\\\lVert\", true);\ndefineSymbol(math, textord, \"!\", \"\\\\oc\"); // cmll package\ndefineSymbol(math, textord, \"?\", \"\\\\wn\");\ndefineSymbol(math, textord, \"\\u2193\", \"\\\\shpos\");\ndefineSymbol(math, textord, \"\\u2195\", \"\\\\shift\");\ndefineSymbol(math, textord, \"\\u2191\", \"\\\\shneg\");\ndefineSymbol(math, close, \"?\", \"?\");\ndefineSymbol(math, close, \"!\", \"!\");\ndefineSymbol(math, close, \"‼\", \"‼\");\ndefineSymbol(math, close, \"\\u27e9\", \"\\\\rangle\", true);\ndefineSymbol(math, close, \"\\u27eb\", \"\\\\rAngle\", true);\ndefineSymbol(math, close, \"\\u298a\", \"\\\\rrangle\", true);\ndefineSymbol(math, close, \"|\", \"\\\\rvert\");\ndefineSymbol(math, close, \"\\u2016\", \"\\\\rVert\");\ndefineSymbol(math, open, \"\\u2983\", \"\\\\lBrace\", true); // stmaryrd/semantic packages\ndefineSymbol(math, close, \"\\u2984\", \"\\\\rBrace\", true);\ndefineSymbol(math, rel, \"=\", \"\\\\equal\", true);\ndefineSymbol(math, rel, \":\", \":\");\ndefineSymbol(math, rel, \"\\u2248\", \"\\\\approx\", true);\ndefineSymbol(math, rel, \"\\u2245\", \"\\\\cong\", true);\ndefineSymbol(math, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, rel, \"\\u2265\", \"\\\\geq\", true);\ndefineSymbol(math, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, rel, \">\", \"\\\\gt\", true);\ndefineSymbol(math, rel, \"\\u2208\", \"\\\\in\", true);\ndefineSymbol(math, rel, \"\\u2209\", \"\\\\notin\", true);\ndefineSymbol(math, rel, \"\\ue020\", \"\\\\@not\");\ndefineSymbol(math, rel, \"\\u2282\", \"\\\\subset\", true);\ndefineSymbol(math, rel, \"\\u2283\", \"\\\\supset\", true);\ndefineSymbol(math, rel, \"\\u2286\", \"\\\\subseteq\", true);\ndefineSymbol(math, rel, \"\\u2287\", \"\\\\supseteq\", true);\ndefineSymbol(math, rel, \"\\u2288\", \"\\\\nsubseteq\", true);\ndefineSymbol(math, rel, \"\\u2288\", \"\\\\nsubseteqq\");\ndefineSymbol(math, rel, \"\\u2289\", \"\\\\nsupseteq\", true);\ndefineSymbol(math, rel, \"\\u2289\", \"\\\\nsupseteqq\");\ndefineSymbol(math, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, rel, \"\\u2190\", \"\\\\leftarrow\", true);\ndefineSymbol(math, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, rel, \"\\u2264\", \"\\\\leq\", true);\ndefineSymbol(math, rel, \"<\", \"\\\\lt\", true);\ndefineSymbol(math, rel, \"\\u2192\", \"\\\\rightarrow\", true);\ndefineSymbol(math, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, rel, \"\\u2271\", \"\\\\ngeq\", true);\ndefineSymbol(math, rel, \"\\u2271\", \"\\\\ngeqq\");\ndefineSymbol(math, rel, \"\\u2271\", \"\\\\ngeqslant\");\ndefineSymbol(math, rel, \"\\u2270\", \"\\\\nleq\", true);\ndefineSymbol(math, rel, \"\\u2270\", \"\\\\nleqq\");\ndefineSymbol(math, rel, \"\\u2270\", \"\\\\nleqslant\");\ndefineSymbol(math, rel, \"\\u2aeb\", \"\\\\Perp\", true); //cmll package\ndefineSymbol(math, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, spacing, \"\\u00a0\", \"\\\\space\");\n// Ref: LaTeX Source 2e: \\DeclareRobustCommand{\\nobreakspace}{%\ndefineSymbol(math, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(text, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(text, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(math, spacing, null, \"\\\\nobreak\");\ndefineSymbol(math, spacing, null, \"\\\\allowbreak\");\ndefineSymbol(math, punct, \",\", \",\");\ndefineSymbol(text, punct, \":\", \":\");\ndefineSymbol(math, punct, \";\", \";\");\ndefineSymbol(math, bin, \"\\u22bc\", \"\\\\barwedge\");\ndefineSymbol(math, bin, \"\\u22bb\", \"\\\\veebar\");\ndefineSymbol(math, bin, \"\\u2299\", \"\\\\odot\", true);\n// Firefox turns ⊕ into an emoji. So append \\uFE0E. Define Unicode character in macros, not here.\ndefineSymbol(math, bin, \"\\u2295\\uFE0E\", \"\\\\oplus\");\ndefineSymbol(math, bin, \"\\u2297\", \"\\\\otimes\", true);\ndefineSymbol(math, textord, \"\\u2202\", \"\\\\partial\", true);\ndefineSymbol(math, bin, \"\\u2298\", \"\\\\oslash\", true);\ndefineSymbol(math, bin, \"\\u229a\", \"\\\\circledcirc\", true);\ndefineSymbol(math, bin, \"\\u22a1\", \"\\\\boxdot\", true);\ndefineSymbol(math, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, open, \"{\", \"\\\\{\");\ndefineSymbol(text, textord, \"{\", \"\\\\{\");\ndefineSymbol(text, textord, \"{\", \"\\\\textbraceleft\");\ndefineSymbol(math, close, \"}\", \"\\\\}\");\ndefineSymbol(text, textord, \"}\", \"\\\\}\");\ndefineSymbol(text, textord, \"}\", \"\\\\textbraceright\");\ndefineSymbol(math, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, open, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(text, textord, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(math, close, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(text, textord, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(math, open, \"(\", \"\\\\lparen\", true);\ndefineSymbol(math, close, \")\", \"\\\\rparen\", true);\ndefineSymbol(math, open, \"⦇\", \"\\\\llparenthesis\", true);\ndefineSymbol(math, close, \"⦈\", \"\\\\rrparenthesis\", true);\ndefineSymbol(text, textord, \"<\", \"\\\\textless\", true); // in T1 fontenc\ndefineSymbol(text, textord, \">\", \"\\\\textgreater\", true); // in T1 fontenc\ndefineSymbol(math, open, \"\\u230a\", \"\\\\lfloor\", true);\ndefineSymbol(math, close, \"\\u230b\", \"\\\\rfloor\", true);\ndefineSymbol(math, open, \"\\u2308\", \"\\\\lceil\", true);\ndefineSymbol(math, close, \"\\u2309\", \"\\\\rceil\", true);\ndefineSymbol(math, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, textord, \"|\", \"|\");\ndefineSymbol(math, textord, \"|\", \"\\\\vert\");\ndefineSymbol(text, textord, \"|\", \"\\\\textbar\", true); // in T1 fontenc\ndefineSymbol(math, textord, \"\\u2016\", \"\\\\|\");\ndefineSymbol(math, textord, \"\\u2016\", \"\\\\Vert\");\ndefineSymbol(text, textord, \"\\u2016\", \"\\\\textbardbl\");\ndefineSymbol(text, textord, \"~\", \"\\\\textasciitilde\");\ndefineSymbol(text, textord, \"\\\\\", \"\\\\textbackslash\");\ndefineSymbol(text, textord, \"^\", \"\\\\textasciicircum\");\ndefineSymbol(math, rel, \"\\u2191\", \"\\\\uparrow\", true);\ndefineSymbol(math, rel, \"\\u21d1\", \"\\\\Uparrow\", true);\ndefineSymbol(math, rel, \"\\u2193\", \"\\\\downarrow\", true);\ndefineSymbol(math, rel, \"\\u21d3\", \"\\\\Downarrow\", true);\ndefineSymbol(math, rel, \"\\u2195\", \"\\\\updownarrow\", true);\ndefineSymbol(math, rel, \"\\u21d5\", \"\\\\Updownarrow\", true);\ndefineSymbol(math, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, op, \"\\u2a04\", \"\\\\bigcupplus\");\ndefineSymbol(math, op, \"\\u2a03\", \"\\\\bigcupdot\");\ndefineSymbol(math, op, \"\\u2a07\", \"\\\\bigdoublevee\");\ndefineSymbol(math, op, \"\\u2a08\", \"\\\\bigdoublewedge\");\ndefineSymbol(math, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, op, \"\\u2a09\", \"\\\\bigtimes\");\ndefineSymbol(math, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, op, \"\\u222f\", \"\\\\oiint\");\ndefineSymbol(math, op, \"\\u2230\", \"\\\\oiiint\");\ndefineSymbol(math, op, \"\\u2231\", \"\\\\intclockwise\");\ndefineSymbol(math, op, \"\\u2232\", \"\\\\varointclockwise\");\ndefineSymbol(math, op, \"\\u2a0c\", \"\\\\iiiint\");\ndefineSymbol(math, op, \"\\u2a0d\", \"\\\\intbar\");\ndefineSymbol(math, op, \"\\u2a0e\", \"\\\\intBar\");\ndefineSymbol(math, op, \"\\u2a0f\", \"\\\\fint\");\ndefineSymbol(math, op, \"\\u2a12\", \"\\\\rppolint\");\ndefineSymbol(math, op, \"\\u2a13\", \"\\\\scpolint\");\ndefineSymbol(math, op, \"\\u2a15\", \"\\\\pointint\");\ndefineSymbol(math, op, \"\\u2a16\", \"\\\\sqint\");\ndefineSymbol(math, op, \"\\u2a17\", \"\\\\intlarhk\");\ndefineSymbol(math, op, \"\\u2a18\", \"\\\\intx\");\ndefineSymbol(math, op, \"\\u2a19\", \"\\\\intcap\");\ndefineSymbol(math, op, \"\\u2a1a\", \"\\\\intcup\");\ndefineSymbol(math, op, \"\\u2a05\", \"\\\\bigsqcap\");\ndefineSymbol(math, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(text, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(text, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, inner, \"\\u22f0\", \"\\\\iddots\", true);\ndefineSymbol(math, inner, \"\\u22ef\", \"\\\\@cdots\", true);\ndefineSymbol(math, inner, \"\\u22f1\", \"\\\\ddots\", true);\ndefineSymbol(math, textord, \"\\u22ee\", \"\\\\varvdots\"); // \\vdots is a macro\ndefineSymbol(text, textord, \"\\u22ee\", \"\\\\varvdots\");\ndefineSymbol(math, accent, \"\\u00b4\", \"\\\\acute\");\ndefineSymbol(math, accent, \"\\u0060\", \"\\\\grave\");\ndefineSymbol(math, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, accent, \"\\u2026\", \"\\\\dddot\");\ndefineSymbol(math, accent, \"\\u2026\\u002e\", \"\\\\ddddot\");\ndefineSymbol(math, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, accent, \"\\u203e\", \"\\\\bar\");\ndefineSymbol(math, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, accent, \"\\u02c6\", \"\\\\hat\");\ndefineSymbol(math, accent, \"\\u2192\", \"\\\\vec\");\ndefineSymbol(math, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, accent, \"\\u02da\", \"\\\\mathring\");\ndefineSymbol(math, mathord, \"\\u0131\", \"\\\\imath\", true);\ndefineSymbol(math, mathord, \"\\u0237\", \"\\\\jmath\", true);\ndefineSymbol(math, textord, \"\\u0131\", \"\\u0131\");\ndefineSymbol(math, textord, \"\\u0237\", \"\\u0237\");\ndefineSymbol(text, textord, \"\\u0131\", \"\\\\i\", true);\ndefineSymbol(text, textord, \"\\u0237\", \"\\\\j\", true);\ndefineSymbol(text, textord, \"\\u00f8\", \"\\\\o\", true);\ndefineSymbol(math, mathord, \"\\u00f8\", \"\\\\o\", true);\ndefineSymbol(text, textord, \"\\u00d8\", \"\\\\O\", true);\ndefineSymbol(math, mathord, \"\\u00d8\", \"\\\\O\", true);\ndefineSymbol(text, accent, \"\\u02ca\", \"\\\\'\"); // acute\ndefineSymbol(text, accent, \"\\u02cb\", \"\\\\`\"); // grave\ndefineSymbol(text, accent, \"\\u02c6\", \"\\\\^\"); // circumflex\ndefineSymbol(text, accent, \"\\u007e\", \"\\\\~\"); // tilde\ndefineSymbol(text, accent, \"\\u02c9\", \"\\\\=\"); // macron\ndefineSymbol(text, accent, \"\\u02d8\", \"\\\\u\"); // breve\ndefineSymbol(text, accent, \"\\u02d9\", \"\\\\.\"); // dot above\ndefineSymbol(text, accent, \"\\u00b8\", \"\\\\c\"); // cedilla\ndefineSymbol(text, accent, \"\\u02da\", \"\\\\r\"); // ring above\ndefineSymbol(text, accent, \"\\u02c7\", \"\\\\v\"); // caron\ndefineSymbol(text, accent, \"\\u00a8\", '\\\\\"'); // diaeresis\ndefineSymbol(text, accent, \"\\u02dd\", \"\\\\H\"); // double acute\ndefineSymbol(math, accent, \"\\u02ca\", \"\\\\'\"); // acute\ndefineSymbol(math, accent, \"\\u02cb\", \"\\\\`\"); // grave\ndefineSymbol(math, accent, \"\\u02c6\", \"\\\\^\"); // circumflex\ndefineSymbol(math, accent, \"\\u007e\", \"\\\\~\"); // tilde\ndefineSymbol(math, accent, \"\\u02c9\", \"\\\\=\"); // macron\ndefineSymbol(math, accent, \"\\u02d8\", \"\\\\u\"); // breve\ndefineSymbol(math, accent, \"\\u02d9\", \"\\\\.\"); // dot above\ndefineSymbol(math, accent, \"\\u00b8\", \"\\\\c\"); // cedilla\ndefineSymbol(math, accent, \"\\u02da\", \"\\\\r\"); // ring above\ndefineSymbol(math, accent, \"\\u02c7\", \"\\\\v\"); // caron\ndefineSymbol(math, accent, \"\\u00a8\", '\\\\\"'); // diaeresis\ndefineSymbol(math, accent, \"\\u02dd\", \"\\\\H\"); // double acute\n\n// These ligatures are detected and created in Parser.js's `formLigatures`.\nconst ligatures = {\n  \"--\": true,\n  \"---\": true,\n  \"``\": true,\n  \"''\": true\n};\n\ndefineSymbol(text, textord, \"\\u2013\", \"--\", true);\ndefineSymbol(text, textord, \"\\u2013\", \"\\\\textendash\");\ndefineSymbol(text, textord, \"\\u2014\", \"---\", true);\ndefineSymbol(text, textord, \"\\u2014\", \"\\\\textemdash\");\ndefineSymbol(text, textord, \"\\u2018\", \"`\", true);\ndefineSymbol(text, textord, \"\\u2018\", \"\\\\textquoteleft\");\ndefineSymbol(text, textord, \"\\u2019\", \"'\", true);\ndefineSymbol(text, textord, \"\\u2019\", \"\\\\textquoteright\");\ndefineSymbol(text, textord, \"\\u201c\", \"``\", true);\ndefineSymbol(text, textord, \"\\u201c\", \"\\\\textquotedblleft\");\ndefineSymbol(text, textord, \"\\u201d\", \"''\", true);\ndefineSymbol(text, textord, \"\\u201d\", \"\\\\textquotedblright\");\n//  \\degree from gensymb package\ndefineSymbol(math, textord, \"\\u00b0\", \"\\\\degree\", true);\ndefineSymbol(text, textord, \"\\u00b0\", \"\\\\degree\");\n// \\textdegree from inputenc package\ndefineSymbol(text, textord, \"\\u00b0\", \"\\\\textdegree\", true);\n// TODO: In LaTeX, \\pounds can generate a different character in text and math\n// mode, but among our fonts, only Main-Regular defines this character \"163\".\ndefineSymbol(math, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(math, textord, \"\\u00a3\", \"\\\\mathsterling\", true);\ndefineSymbol(text, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(text, textord, \"\\u00a3\", \"\\\\textsterling\", true);\ndefineSymbol(math, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(text, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(math, textord, \"\\u20ac\", \"\\\\euro\", true);\ndefineSymbol(text, textord, \"\\u20ac\", \"\\\\euro\", true);\ndefineSymbol(text, textord, \"\\u20ac\", \"\\\\texteuro\");\ndefineSymbol(math, textord, \"\\u00a9\", \"\\\\copyright\", true);\ndefineSymbol(text, textord, \"\\u00a9\", \"\\\\textcopyright\");\ndefineSymbol(math, textord, \"\\u2300\", \"\\\\diameter\", true);\ndefineSymbol(text, textord, \"\\u2300\", \"\\\\diameter\");\n\n// Italic Greek\ndefineSymbol(math, textord, \"𝛤\", \"\\\\varGamma\");\ndefineSymbol(math, textord, \"𝛥\", \"\\\\varDelta\");\ndefineSymbol(math, textord, \"𝛩\", \"\\\\varTheta\");\ndefineSymbol(math, textord, \"𝛬\", \"\\\\varLambda\");\ndefineSymbol(math, textord, \"𝛯\", \"\\\\varXi\");\ndefineSymbol(math, textord, \"𝛱\", \"\\\\varPi\");\ndefineSymbol(math, textord, \"𝛴\", \"\\\\varSigma\");\ndefineSymbol(math, textord, \"𝛶\", \"\\\\varUpsilon\");\ndefineSymbol(math, textord, \"𝛷\", \"\\\\varPhi\");\ndefineSymbol(math, textord, \"𝛹\", \"\\\\varPsi\");\ndefineSymbol(math, textord, \"𝛺\", \"\\\\varOmega\");\ndefineSymbol(text, textord, \"𝛤\", \"\\\\varGamma\");\ndefineSymbol(text, textord, \"𝛥\", \"\\\\varDelta\");\ndefineSymbol(text, textord, \"𝛩\", \"\\\\varTheta\");\ndefineSymbol(text, textord, \"𝛬\", \"\\\\varLambda\");\ndefineSymbol(text, textord, \"𝛯\", \"\\\\varXi\");\ndefineSymbol(text, textord, \"𝛱\", \"\\\\varPi\");\ndefineSymbol(text, textord, \"𝛴\", \"\\\\varSigma\");\ndefineSymbol(text, textord, \"𝛶\", \"\\\\varUpsilon\");\ndefineSymbol(text, textord, \"𝛷\", \"\\\\varPhi\");\ndefineSymbol(text, textord, \"𝛹\", \"\\\\varPsi\");\ndefineSymbol(text, textord, \"𝛺\", \"\\\\varOmega\");\n\n\n// There are lots of symbols which are the same, so we add them in afterwards.\n// All of these are textords in math mode\nconst mathTextSymbols = '0123456789/@.\"';\nfor (let i = 0; i < mathTextSymbols.length; i++) {\n  const ch = mathTextSymbols.charAt(i);\n  defineSymbol(math, textord, ch, ch);\n}\n\n// All of these are textords in text mode\nconst textSymbols = '0123456789!@*()-=+\";:?/.,';\nfor (let i = 0; i < textSymbols.length; i++) {\n  const ch = textSymbols.charAt(i);\n  defineSymbol(text, textord, ch, ch);\n}\n\n// All of these are textords in text mode, and mathords in math mode\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nfor (let i = 0; i < letters.length; i++) {\n  const ch = letters.charAt(i);\n  defineSymbol(math, mathord, ch, ch);\n  defineSymbol(text, textord, ch, ch);\n}\n\n// Some more letters in Unicode Basic Multilingual Plane.\nconst narrow = \"ÇÐÞçþℂℍℕℙℚℝℤℎℏℊℋℌℐℑℒℓ℘ℛℜℬℰℱℳℭℨ\";\nfor (let i = 0; i < narrow.length; i++) {\n  const ch = narrow.charAt(i);\n  defineSymbol(math, mathord, ch, ch);\n  defineSymbol(text, textord, ch, ch);\n}\n\n// The next loop loads wide (surrogate pair) characters.\n// We support some letters in the Unicode range U+1D400 to U+1D7FF,\n// Mathematical Alphanumeric Symbols.\nlet wideChar = \"\";\nfor (let i = 0; i < letters.length; i++) {\n  // The hex numbers in the next line are a surrogate pair.\n  // 0xD835 is the high surrogate for all letters in the range we support.\n  // 0xDC00 is the low surrogate for bold A.\n  wideChar = String.fromCharCode(0xd835, 0xdc00 + i); // A-Z a-z bold\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdc34 + i); // A-Z a-z italic\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdc68 + i); // A-Z a-z bold italic\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdd04 + i); // A-Z a-z Fractur\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdda0 + i); // A-Z a-z sans-serif\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xddd4 + i); // A-Z a-z sans bold\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xde08 + i); // A-Z a-z sans italic\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xde70 + i); // A-Z a-z monospace\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdd38 + i); // A-Z a-z double struck\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  const ch = letters.charAt(i);\n  wideChar = String.fromCharCode(0xd835, 0xdc9c + i); // A-Z a-z calligraphic\n  defineSymbol(math, mathord, ch, wideChar);\n  defineSymbol(text, textord, ch, wideChar);\n}\n\n// Next, some wide character numerals\nfor (let i = 0; i < 10; i++) {\n  wideChar = String.fromCharCode(0xd835, 0xdfce + i); // 0-9 bold\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdfe2 + i); // 0-9 sans serif\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdfec + i); // 0-9 bold sans\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n\n  wideChar = String.fromCharCode(0xd835, 0xdff6 + i); // 0-9 monospace\n  defineSymbol(math, mathord, wideChar, wideChar);\n  defineSymbol(text, textord, wideChar, wideChar);\n}\n\n/*\n * Neither Firefox nor Chrome support hard line breaks or soft line breaks.\n * (Despite https://www.w3.org/Math/draft-spec/mathml.html#chapter3_presm.lbattrs)\n * So Temml has work-arounds for both hard and soft breaks.\n * The work-arounds sadly do not work simultaneously. Any top-level hard\n * break makes soft line breaks impossible.\n *\n * Hard breaks are simulated by creating a <mtable> and putting each line in its own <mtr>.\n *\n * To create soft line breaks, Temml avoids using the <semantics> and <annotation> tags.\n * Then the top level of a <math> element can be occupied by <mrow> elements, and the browser\n * will break after a <mrow> if the expression extends beyond the container limit.\n *\n * The default is for soft line breaks after each top-level binary or\n * relational operator, per TeXbook p. 173. So we gather the expression into <mrow>s so that\n * each <mrow> ends in a binary or relational operator.\n *\n * An option is for soft line breaks before an \"=\" sign. That changes the <mrow>s.\n *\n * Soft line breaks will not work in Chromium and Safari, only Firefox.\n *\n * Hopefully browsers will someday do their own linebreaking and we will be able to delete\n * much of this module.\n */\n\nfunction setLineBreaks(expression, wrapMode, isDisplayMode) {\n  const mtrs = [];\n  let mrows = [];\n  let block = [];\n  let numTopLevelEquals = 0;\n  let i = 0;\n  while (i < expression.length) {\n    while (expression[i] instanceof DocumentFragment) {\n      expression.splice(i, 1, ...expression[i].children); // Expand the fragment.\n    }\n    const node = expression[i];\n    if (node.attributes && node.attributes.linebreak &&\n      node.attributes.linebreak === \"newline\") {\n      // A hard line break. Create a <mtr> for the current block.\n      if (block.length > 0) {\n        mrows.push(new MathNode(\"mrow\", block));\n      }\n      mrows.push(node);\n      block = [];\n      const mtd = new MathNode(\"mtd\", mrows);\n      mtd.style.textAlign = \"left\";\n      mtrs.push(new MathNode(\"mtr\", [mtd]));\n      mrows = [];\n      i += 1;\n      continue\n    }\n    block.push(node);\n    if (node.type && node.type === \"mo\" && node.children.length === 1 &&\n        !(node.attributes.form && node.attributes.form === \"prefix\") && // unary operators\n        !Object.prototype.hasOwnProperty.call(node.attributes, \"movablelimits\")) {\n      const ch = node.children[0].text;\n      if (wrapMode === \"=\" && ch === \"=\") {\n        numTopLevelEquals += 1;\n        if (numTopLevelEquals > 1) {\n          block.pop();\n          // Start a new block. (Insert a soft linebreak.)\n          const element = new MathNode(\"mrow\", block);\n          mrows.push(element);\n          block = [node];\n        }\n      } else if (wrapMode === \"tex\") {\n        // Check if the following node is a \\nobreak text node, e.g. \"~\"\"\n        const next = i < expression.length - 1 ? expression[i + 1] : null;\n        let glueIsFreeOfNobreak = true;\n        if (\n          !(\n            next &&\n            next.type === \"mtext\" &&\n            next.attributes.linebreak &&\n            next.attributes.linebreak === \"nobreak\"\n          )\n        ) {\n          // We may need to start a new block.\n          // First, put any post-operator glue on same line as operator.\n          for (let j = i + 1; j < expression.length; j++) {\n            const nd = expression[j];\n            if (\n              nd.type &&\n              nd.type === \"mspace\" &&\n              !(nd.attributes.linebreak && nd.attributes.linebreak === \"newline\")\n            ) {\n              block.push(nd);\n              i += 1;\n              if (\n                nd.attributes &&\n                nd.attributes.linebreak &&\n                nd.attributes.linebreak === \"nobreak\"\n              ) {\n                glueIsFreeOfNobreak = false;\n              }\n            } else {\n              break;\n            }\n          }\n        }\n        if (glueIsFreeOfNobreak) {\n          // Start a new block. (Insert a soft linebreak.)\n          const element = new MathNode(\"mrow\", block);\n          mrows.push(element);\n          block = [];\n        }\n      }\n    }\n    i += 1;\n  }\n  if (block.length > 0) {\n    const element = new MathNode(\"mrow\", block);\n    mrows.push(element);\n  }\n  if (mtrs.length > 0) {\n    const mtd = new MathNode(\"mtd\", mrows);\n    mtd.style.textAlign = \"left\";\n    const mtr = new MathNode(\"mtr\", [mtd]);\n    mtrs.push(mtr);\n    const mtable = new MathNode(\"mtable\", mtrs);\n    if (!isDisplayMode) {\n      mtable.setAttribute(\"columnalign\", \"left\");\n      mtable.setAttribute(\"rowspacing\", \"0em\");\n    }\n    return mtable\n  }\n  return newDocumentFragment(mrows);\n}\n\n/**\n * This file converts a parse tree into a corresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nconst makeText = function(text, mode, style) {\n  if (\n    symbols[mode][text] &&\n    symbols[mode][text].replace &&\n    text.charCodeAt(0) !== 0xd835 &&\n    !(\n      Object.prototype.hasOwnProperty.call(ligatures, text) &&\n      style &&\n      ((style.fontFamily && style.fontFamily.slice(4, 6) === \"tt\") ||\n        (style.font && style.font.slice(4, 6) === \"tt\"))\n    )\n  ) {\n    text = symbols[mode][text].replace;\n  }\n\n  return new TextNode(text);\n};\n\nconst copyChar = (newRow, child) => {\n  if (newRow.children.length === 0 ||\n      newRow.children[newRow.children.length - 1].type !== \"mtext\") {\n    const mtext = new MathNode(\n      \"mtext\",\n      [new TextNode(child.children[0].text)]\n    );\n    newRow.children.push(mtext);\n  } else {\n    newRow.children[newRow.children.length - 1].children[0].text += child.children[0].text;\n  }\n};\n\nconst consolidateText = mrow => {\n  // If possible, consolidate adjacent <mtext> elements into a single element.\n  if (mrow.type !== \"mrow\" && mrow.type !== \"mstyle\") { return mrow }\n  if (mrow.children.length === 0) { return mrow } // empty group, e.g., \\text{}\n  const newRow = new MathNode(\"mrow\");\n  for (let i = 0; i < mrow.children.length; i++) {\n    const child = mrow.children[i];\n    if (child.type === \"mtext\" && Object.keys(child.attributes).length === 0) {\n      copyChar(newRow, child);\n    } else if (child.type === \"mrow\") {\n      // We'll also check the children of an mrow. One level only. No recursion.\n      let canConsolidate = true;\n      for (let j = 0; j < child.children.length; j++) {\n        const grandChild = child.children[j];\n        if (grandChild.type !== \"mtext\" || Object.keys(child.attributes).length !== 0) {\n          canConsolidate = false;\n          break\n        }\n      }\n      if (canConsolidate) {\n        for (let j = 0; j < child.children.length; j++) {\n          const grandChild = child.children[j];\n          copyChar(newRow, grandChild);\n        }\n      } else {\n        newRow.children.push(child);\n      }\n    } else {\n      newRow.children.push(child);\n    }\n  }\n  for (let i = 0; i < newRow.children.length; i++) {\n    if (newRow.children[i].type === \"mtext\") {\n      const mtext = newRow.children[i];\n      // Firefox does not render a space at either end of an <mtext> string.\n      // To get proper rendering, we replace leading or trailing spaces with no-break spaces.\n      if (mtext.children[0].text.charAt(0) === \" \") {\n        mtext.children[0].text = \"\\u00a0\" + mtext.children[0].text.slice(1);\n      }\n      const L = mtext.children[0].text.length;\n      if (L > 0 && mtext.children[0].text.charAt(L - 1) === \" \") {\n        mtext.children[0].text = mtext.children[0].text.slice(0, -1) + \"\\u00a0\";\n      }\n      for (const [key, value] of Object.entries(mrow.attributes)) {\n        mtext.attributes[key] = value;\n      }\n    }\n  }\n  if (newRow.children.length === 1 && newRow.children[0].type === \"mtext\") {\n    return newRow.children[0]; // A consolidated <mtext>\n  } else {\n    return newRow\n  }\n};\n\n/**\n * Wrap the given array of nodes in an <mrow> node if needed, i.e.,\n * unless the array has length 1.  Always returns a single node.\n */\nconst makeRow = function(body, semisimple = false) {\n  if (body.length === 1 && !(body[0] instanceof DocumentFragment)) {\n    return body[0];\n  } else if (!semisimple) {\n    // Suppress spacing on <mo> nodes at both ends of the row.\n    if (body[0] instanceof MathNode && body[0].type === \"mo\" && !body[0].attributes.fence) {\n      body[0].attributes.lspace = \"0em\";\n      body[0].attributes.rspace = \"0em\";\n    }\n    const end = body.length - 1;\n    if (body[end] instanceof MathNode && body[end].type === \"mo\" && !body[end].attributes.fence) {\n      body[end].attributes.lspace = \"0em\";\n      body[end].attributes.rspace = \"0em\";\n    }\n  }\n  return new MathNode(\"mrow\", body);\n};\n\n/**\n * Check for <mi>.</mi> which is how a dot renders in MathML,\n * or <mo separator=\"true\" lspace=\"0em\" rspace=\"0em\">,</mo>\n * which is how a braced comma {,} renders in MathML\n */\nfunction isNumberPunctuation(group) {\n  if (!group) {\n    return false\n  }\n  if (group.type === 'mi' && group.children.length === 1) {\n    const child = group.children[0];\n    return child instanceof TextNode && child.text === '.'\n  } else if (group.type === \"mtext\" && group.children.length === 1) {\n    const child = group.children[0];\n    return child instanceof TextNode && child.text === '\\u2008' // punctuation space\n  } else if (group.type === 'mo' && group.children.length === 1 &&\n    group.getAttribute('separator') === 'true' &&\n    group.getAttribute('lspace') === '0em' &&\n    group.getAttribute('rspace') === '0em') {\n    const child = group.children[0];\n    return child instanceof TextNode && child.text === ','\n  } else {\n    return false\n  }\n}\nconst isComma = (expression, i) => {\n  const node = expression[i];\n  const followingNode = expression[i + 1];\n  return (node.type === \"atom\" && node.text === \",\") &&\n    // Don't consolidate if there is a space after the comma.\n    node.loc && followingNode.loc && node.loc.end === followingNode.loc.start\n};\n\nconst isRel = item => {\n  return (item.type === \"atom\" && item.family === \"rel\") ||\n      (item.type === \"mclass\" && item.mclass === \"mrel\")\n};\n\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes.  Also do a couple chores along the way:\n * (1) Suppress spacing when an author wraps an operator w/braces, as in {=}.\n * (2) Suppress spacing between two adjacent relations.\n */\nconst buildExpression = function(expression, style, semisimple = false) {\n  if (!semisimple && expression.length === 1) {\n    const group = buildGroup$1(expression[0], style);\n    if (group instanceof MathNode && group.type === \"mo\") {\n      // When TeX writers want to suppress spacing on an operator,\n      // they often put the operator by itself inside braces.\n      group.setAttribute(\"lspace\", \"0em\");\n      group.setAttribute(\"rspace\", \"0em\");\n    }\n    return [group];\n  }\n\n  const groups = [];\n  const groupArray = [];\n  let lastGroup;\n  for (let i = 0; i < expression.length; i++) {\n    groupArray.push(buildGroup$1(expression[i], style));\n  }\n\n  for (let i = 0; i < groupArray.length; i++) {\n    const group = groupArray[i];\n\n    // Suppress spacing between adjacent relations\n    if (i < expression.length - 1 && isRel(expression[i]) && isRel(expression[i + 1])) {\n      group.setAttribute(\"rspace\", \"0em\");\n    }\n    if (i > 0 && isRel(expression[i]) && isRel(expression[i - 1])) {\n      group.setAttribute(\"lspace\", \"0em\");\n    }\n\n    // Concatenate numbers\n    if (group.type === 'mn' && lastGroup && lastGroup.type === 'mn') {\n      // Concatenate <mn>...</mn> followed by <mi>.</mi>\n      lastGroup.children.push(...group.children);\n      continue\n    } else if (isNumberPunctuation(group) && lastGroup && lastGroup.type === 'mn') {\n      // Concatenate <mn>...</mn> followed by <mi>.</mi>\n      lastGroup.children.push(...group.children);\n      continue\n    } else if (lastGroup && lastGroup.type === \"mn\" && i < groupArray.length - 1 &&\n      groupArray[i + 1].type === \"mn\" && isComma(expression, i)) {\n      lastGroup.children.push(...group.children);\n      continue\n    } else if (group.type === 'mn' && isNumberPunctuation(lastGroup)) {\n      // Concatenate <mi>.</mi> followed by <mn>...</mn>\n      group.children = [...lastGroup.children, ...group.children];\n      groups.pop();\n    } else if ((group.type === 'msup' || group.type === 'msub') &&\n        group.children.length >= 1 && lastGroup &&\n        (lastGroup.type === 'mn' || isNumberPunctuation(lastGroup))) {\n      // Put preceding <mn>...</mn> or <mi>.</mi> inside base of\n      // <msup><mn>...base...</mn>...exponent...</msup> (or <msub>)\n      const base = group.children[0];\n      if (base instanceof MathNode && base.type === 'mn' && lastGroup) {\n        base.children = [...lastGroup.children, ...base.children];\n        groups.pop();\n      }\n    }\n    groups.push(group);\n    lastGroup = group;\n  }\n  return groups\n};\n\n/**\n * Equivalent to buildExpression, but wraps the elements in an <mrow>\n * if there's more than one.  Returns a single node instead of an array.\n */\nconst buildExpressionRow = function(expression, style, semisimple = false) {\n  return makeRow(buildExpression(expression, style, semisimple), semisimple);\n};\n\n/**\n * Takes a group from the parser and calls the appropriate groupBuilders function\n * on it to produce a MathML node.\n */\nconst buildGroup$1 = function(group, style) {\n  if (!group) {\n    return new MathNode(\"mrow\");\n  }\n\n  if (_mathmlGroupBuilders[group.type]) {\n    // Call the groupBuilders function\n    const result = _mathmlGroupBuilders[group.type](group, style);\n    return result;\n  } else {\n    throw new ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n  }\n};\n\nconst glue$1 = _ => {\n  return new MathNode(\"mtd\", [], [], { padding: \"0\", width: \"50%\" })\n};\n\nconst labelContainers = [\"mrow\", \"mtd\", \"mtable\", \"mtr\"];\nconst getLabel = parent => {\n  for (const node of parent.children) {\n    if (node.type && labelContainers.includes(node.type)) {\n      if (node.classes && node.classes[0] === \"tml-label\") {\n        const label = node.label;\n        return label\n      } else {\n        const label = getLabel(node);\n        if (label) { return label }\n      }\n    } else if (!node.type) {\n      const label = getLabel(node);\n      if (label) { return label }\n    }\n  }\n};\n\nconst taggedExpression = (expression, tag, style, leqno) => {\n  tag = buildExpressionRow(tag[0].body, style);\n  tag = consolidateText(tag);  // tag is now an <mtext> element\n  tag.classes.push(\"tml-tag\"); // to be available for \\ref\n\n  const label = getLabel(expression); // from a \\label{} function.\n  expression = new MathNode(\"mtd\", [expression]);\n  const rowArray = [glue$1(), expression, glue$1()];\n  rowArray[leqno ? 0 : 2].children.push(tag);\n  const mtr = new MathNode(\"mtr\", rowArray, [\"tml-tageqn\"]);\n  if (label) { mtr.setAttribute(\"id\", label); }\n  const table = new MathNode(\"mtable\", [mtr]);\n  table.style.width = \"100%\";\n  table.setAttribute(\"displaystyle\", \"true\");\n  return table\n};\n\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it.\n */\nfunction buildMathML(tree, texExpression, style, settings) {\n  // Strip off outer tag wrapper for processing below.\n  let tag = null;\n  if (tree.length === 1 && tree[0].type === \"tag\") {\n    tag = tree[0].tag;\n    tree = tree[0].body;\n  }\n\n  const expression = buildExpression(tree, style);\n\n  if (expression.length === 1 && expression[0] instanceof AnchorNode) {\n    return expression[0]\n  }\n\n  const wrap = (settings.displayMode || settings.annotate) ? \"none\" : settings.wrap;\n\n  const n1 = expression.length === 0 ? null : expression[0];\n  let wrapper = expression.length === 1 && tag === null && (n1 instanceof MathNode)\n      ? expression[0]\n      : setLineBreaks(expression, wrap, settings.displayMode);\n\n  if (tag) {\n    wrapper = taggedExpression(wrapper, tag, style, settings.leqno);\n  }\n\n  if (settings.annotate) {\n    // Build a TeX annotation of the source\n    const annotation = new MathNode(\n      \"annotation\", [new TextNode(texExpression)]);\n    annotation.setAttribute(\"encoding\", \"application/x-tex\");\n    wrapper = new MathNode(\"semantics\", [wrapper, annotation]);\n  }\n\n  const math = new MathNode(\"math\", [wrapper]);\n\n  if (settings.xml) {\n    math.setAttribute(\"xmlns\", \"http://www.w3.org/1998/Math/MathML\");\n  }\n  if (settings.displayMode) {\n    math.setAttribute(\"display\", \"block\");\n    math.style.display = \"block math\"; // necessary in Chromium.\n    // Firefox and Safari do not recognize display: \"block math\".\n    // Set a class so that the CSS file can set display: block.\n    math.classes = [\"tml-display\"];\n  }\n  return math;\n}\n\n// From the KaTeX font metrics, identify letters whose accents need a italic correction.\nconst smallNudge = \"DHKLUcegorsuvxyzΠΥΨαδηιμνοτυχϵ\";\nconst mediumNudge = \"BCEGIMNOPQRSTXZlpqtwΓΘΞΣΦΩβεζθξρςφψϑϕϱ\";\nconst largeNudge = \"AFJdfΔΛ\";\n\nconst mathmlBuilder$a = (group, style) => {\n  const accentNode$1 = group.isStretchy\n    ? accentNode(group)\n    : new MathNode(\"mo\", [makeText(group.label, group.mode)]);\n  if (!group.isStretchy) {\n    accentNode$1.setAttribute(\"stretchy\", \"false\"); // Keep Firefox from stretching \\check\n  }\n  if (group.label !== \"\\\\vec\") {\n    accentNode$1.style.mathDepth = \"0\"; // not scriptstyle\n    // Don't use attribute accent=\"true\" because MathML Core eliminates a needed space.\n  }\n  const tag = group.label === \"\\\\c\" ? \"munder\" : \"mover\";\n  const needsWbkVertShift = needsWebkitVerticalShift.has(group.label);\n  if (tag === \"mover\" && group.mode === \"math\" && (!group.isStretchy) && group.base.text\n      && group.base.text.length === 1) {\n    const text = group.base.text;\n    const isVec = group.label === \"\\\\vec\";\n    const vecPostfix = isVec === \"\\\\vec\" ? \"-vec\" : \"\";\n    if (isVec) {\n      accentNode$1.classes.push(\"tml-vec\"); // Firefox sizing of \\vec arrow\n    }\n    const wbkPostfix = isVec ? \"-vec\" : needsWbkVertShift ? \"-acc\" : \"\";\n    if (smallNudge.indexOf(text) > -1) {\n      accentNode$1.classes.push(`chr-sml${vecPostfix}`);\n      accentNode$1.classes.push(`wbk-sml${wbkPostfix}`);\n    } else if (mediumNudge.indexOf(text) > -1) {\n      accentNode$1.classes.push(`chr-med${vecPostfix}`);\n      accentNode$1.classes.push(`wbk-med${wbkPostfix}`);\n    } else if (largeNudge.indexOf(text) > -1) {\n      accentNode$1.classes.push(`chr-lrg${vecPostfix}`);\n      accentNode$1.classes.push(`wbk-lrg${wbkPostfix}`);\n    } else if (isVec) {\n      accentNode$1.classes.push(`wbk-vec`);\n    } else if (needsWbkVertShift) {\n      accentNode$1.classes.push(`wbk-acc`);\n    }\n  } else if (needsWbkVertShift) {\n    // text-mode accents\n    accentNode$1.classes.push(\"wbk-acc\");\n  }\n  const node = new MathNode(tag, [buildGroup$1(group.base, style), accentNode$1]);\n  return node;\n};\n\nconst nonStretchyAccents = new Set([\n  \"\\\\acute\",\n  \"\\\\check\",\n  \"\\\\grave\",\n  \"\\\\ddot\",\n  \"\\\\dddot\",\n  \"\\\\ddddot\",\n  \"\\\\tilde\",\n  \"\\\\bar\",\n  \"\\\\breve\",\n  \"\\\\check\",\n  \"\\\\hat\",\n  \"\\\\vec\",\n  \"\\\\dot\",\n  \"\\\\mathring\"\n]);\n\nconst needsWebkitVerticalShift = new Set([\n  \"\\\\acute\",\n  \"\\\\bar\",\n  \"\\\\breve\",\n  \"\\\\check\",\n  \"\\\\dot\",\n  \"\\\\ddot\",\n  \"\\\\grave\",\n  \"\\\\hat\",\n  \"\\\\mathring\",\n  \"\\\\`\", \"\\\\'\", \"\\\\^\", \"\\\\=\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\r\", \"\\\\H\", \"\\\\v\"\n]);\n\nconst combiningChar = {\n  \"\\\\`\": \"\\u0300\",\n  \"\\\\'\": \"\\u0301\",\n  \"\\\\^\": \"\\u0302\",\n  \"\\\\~\": \"\\u0303\",\n  \"\\\\=\": \"\\u0304\",\n  \"\\\\u\": \"\\u0306\",\n  \"\\\\.\": \"\\u0307\",\n  '\\\\\"': \"\\u0308\",\n  \"\\\\r\": \"\\u030A\",\n  \"\\\\H\": \"\\u030B\",\n  \"\\\\v\": \"\\u030C\",\n  \"\\\\c\": \"\\u0327\"\n};\n\n// Accents\ndefineFunction({\n  type: \"accent\",\n  names: [\n    \"\\\\acute\",\n    \"\\\\grave\",\n    \"\\\\ddot\",\n    \"\\\\dddot\",\n    \"\\\\ddddot\",\n    \"\\\\tilde\",\n    \"\\\\bar\",\n    \"\\\\breve\",\n    \"\\\\check\",\n    \"\\\\hat\",\n    \"\\\\vec\",\n    \"\\\\dot\",\n    \"\\\\mathring\",\n    \"\\\\overparen\",\n    \"\\\\widecheck\",\n    \"\\\\widehat\",\n    \"\\\\wideparen\",\n    \"\\\\widetilde\",\n    \"\\\\overrightarrow\",\n    \"\\\\overleftarrow\",\n    \"\\\\Overrightarrow\",\n    \"\\\\overleftrightarrow\",\n    \"\\\\overgroup\",\n    \"\\\\overleftharpoon\",\n    \"\\\\overrightharpoon\"\n  ],\n  props: {\n    numArgs: 1\n  },\n  handler: (context, args) => {\n    const base = normalizeArgument(args[0]);\n\n    const isStretchy = !nonStretchyAccents.has(context.funcName);\n\n    return {\n      type: \"accent\",\n      mode: context.parser.mode,\n      label: context.funcName,\n      isStretchy,\n      base\n    };\n  },\n  mathmlBuilder: mathmlBuilder$a\n});\n\n// Text-mode accents\ndefineFunction({\n  type: \"accent\",\n  names: [\"\\\\'\", \"\\\\`\", \"\\\\^\", \"\\\\~\", \"\\\\=\", \"\\\\c\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\r\", \"\\\\H\", \"\\\\v\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true,\n    allowedInMath: true,\n    argTypes: [\"primitive\"]\n  },\n  handler: (context, args) => {\n    const base = normalizeArgument(args[0]);\n    const mode = context.parser.mode;\n\n    if (mode === \"math\" && context.parser.settings.strict) {\n      // LaTeX only writes a warning. It doesn't stop. We'll issue the same warning.\n      // eslint-disable-next-line no-console\n      console.log(`Temml parse error: Command ${context.funcName} is invalid in math mode.`);\n    }\n\n    if (mode === \"text\" && base.text && base.text.length === 1\n        && context.funcName in combiningChar && smalls.indexOf(base.text) > -1) {\n      // Return a combining accent character\n      return {\n        type: \"textord\",\n        mode: \"text\",\n        text: base.text + combiningChar[context.funcName]\n      }\n    } else if (context.funcName === \"\\\\c\" && mode === \"text\" && base.text\n        && base.text.length === 1) {\n      // combining cedilla\n      return { type: \"textord\", mode: \"text\", text: base.text + \"\\u0327\" }\n    } else {\n      // Build up the accent\n      return {\n        type: \"accent\",\n        mode,\n        label: context.funcName,\n        isStretchy: false,\n        base\n      }\n    }\n  },\n  mathmlBuilder: mathmlBuilder$a\n});\n\ndefineFunction({\n  type: \"accentUnder\",\n  names: [\n    \"\\\\underleftarrow\",\n    \"\\\\underrightarrow\",\n    \"\\\\underleftrightarrow\",\n    \"\\\\undergroup\",\n    \"\\\\underparen\",\n    \"\\\\utilde\"\n  ],\n  props: {\n    numArgs: 1\n  },\n  handler: ({ parser, funcName }, args) => {\n    const base = args[0];\n    return {\n      type: \"accentUnder\",\n      mode: parser.mode,\n      label: funcName,\n      base: base\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const accentNode$1 = accentNode(group);\n    accentNode$1.style[\"math-depth\"] = 0;\n    const node = new MathNode(\"munder\", [\n      buildGroup$1(group.base, style),\n      accentNode$1\n    ]);\n    return node;\n  }\n});\n\n/**\n * This file does conversion between units.  In particular, it provides\n * calculateSize to convert other units into CSS units.\n */\n\n\nconst ptPerUnit = {\n  // Convert to CSS (Postscipt) points, not TeX points\n  // https://en.wikibooks.org/wiki/LaTeX/Lengths and\n  // https://tex.stackexchange.com/a/8263\n  pt: 800 / 803, // convert TeX point to CSS (Postscript) point\n  pc: (12 * 800) / 803, // pica\n  dd: ((1238 / 1157) * 800) / 803, // didot\n  cc: ((14856 / 1157) * 800) / 803, // cicero (12 didot)\n  nd: ((685 / 642) * 800) / 803, // new didot\n  nc: ((1370 / 107) * 800) / 803, // new cicero (12 new didot)\n  sp: ((1 / 65536) * 800) / 803, // scaled point (TeX's internal smallest unit)\n  mm: (25.4 / 72),\n  cm: (2.54 / 72),\n  in: (1 / 72),\n  px: (96 / 72)\n};\n\n/**\n * Determine whether the specified unit (either a string defining the unit\n * or a \"size\" parse node containing a unit field) is valid.\n */\nconst validUnits = [\n  \"em\",\n  \"ex\",\n  \"mu\",\n  \"pt\",\n  \"mm\",\n  \"cm\",\n  \"in\",\n  \"px\",\n  \"bp\",\n  \"pc\",\n  \"dd\",\n  \"cc\",\n  \"nd\",\n  \"nc\",\n  \"sp\"\n];\n\nconst validUnit = function(unit) {\n  if (typeof unit !== \"string\") {\n    unit = unit.unit;\n  }\n  return validUnits.indexOf(unit) > -1\n};\n\nconst emScale = styleLevel => {\n  const scriptLevel = Math.max(styleLevel - 1, 0);\n  return [1, 0.7, 0.5][scriptLevel]\n};\n\n/*\n * Convert a \"size\" parse node (with numeric \"number\" and string \"unit\" fields,\n * as parsed by functions.js argType \"size\") into a CSS value.\n */\nconst calculateSize = function(sizeValue, style) {\n  let number = sizeValue.number;\n  if (style.maxSize[0] < 0 && number > 0) {\n    return { number: 0, unit: \"em\" }\n  }\n  const unit = sizeValue.unit;\n  switch (unit) {\n    case \"mm\":\n    case \"cm\":\n    case \"in\":\n    case \"px\": {\n      const numInCssPts = number * ptPerUnit[unit];\n      if (numInCssPts > style.maxSize[1]) {\n        return { number: style.maxSize[1], unit: \"pt\" }\n      }\n      return { number, unit }; // absolute CSS units.\n    }\n    case \"em\":\n    case \"ex\": {\n      // In TeX, em and ex do not change size in \\scriptstyle.\n      if (unit === \"ex\") { number *= 0.431; }\n      number = Math.min(number / emScale(style.level), style.maxSize[0]);\n      return { number: round(number), unit: \"em\" };\n    }\n    case \"bp\": {\n      if (number > style.maxSize[1]) { number = style.maxSize[1]; }\n      return { number, unit: \"pt\" }; // TeX bp is a CSS pt. (1/72 inch).\n    }\n    case \"pt\":\n    case \"pc\":\n    case \"dd\":\n    case \"cc\":\n    case \"nd\":\n    case \"nc\":\n    case \"sp\": {\n      number = Math.min(number * ptPerUnit[unit], style.maxSize[1]);\n      return { number: round(number), unit: \"pt\" }\n    }\n    case \"mu\": {\n      number = Math.min(number / 18, style.maxSize[0]);\n      return { number: round(number), unit: \"em\" }\n    }\n    default:\n      throw new ParseError(\"Invalid unit: '\" + unit + \"'\")\n  }\n};\n\n// Helper functions\n\nconst padding = width => {\n  const node = new MathNode(\"mspace\");\n  node.setAttribute(\"width\", width + \"em\");\n  return node\n};\n\nconst paddedNode = (group, lspace = 0.3, rspace = 0, mustSmash = false) => {\n  if (group == null && rspace === 0) { return padding(lspace) }\n  const row = group ? [group] : [];\n  if (lspace !== 0)   { row.unshift(padding(lspace)); }\n  if (rspace > 0) { row.push(padding(rspace)); }\n  if (mustSmash) {\n    // Used for the bottom arrow in a {CD} environment\n    const mpadded = new MathNode(\"mpadded\", row);\n    mpadded.setAttribute(\"height\", \"0.1px\"); // Don't use 0. WebKit would hide it.\n    return mpadded\n  } else {\n    return new MathNode(\"mrow\", row)\n  }\n};\n\nconst labelSize = (size, scriptLevel) =>  Number(size) / emScale(scriptLevel);\n\nconst munderoverNode = (fName, body, below, style) => {\n  const arrowNode = mathMLnode(fName);\n  // Is this the short part of a mhchem equilibrium arrow?\n  const isEq = fName.slice(1, 3) === \"eq\";\n  const minWidth = fName.charAt(1) === \"x\"\n    ? \"1.75\"  // mathtools extensible arrows are ≥ 1.75em long\n    : fName.slice(2, 4) === \"cd\"\n    ? \"3.0\"  // cd package arrows\n    : isEq\n    ? \"1.0\"  // The shorter harpoon of a mhchem equilibrium arrow\n    : \"2.0\"; // other mhchem arrows\n  // TODO: When Firefox supports minsize, use the next line.\n  //arrowNode.setAttribute(\"minsize\", String(minWidth) + \"em\")\n  arrowNode.setAttribute(\"lspace\", \"0\");\n  arrowNode.setAttribute(\"rspace\", (isEq ? \"0.5em\" : \"0\"));\n\n  // <munderover> upper and lower labels are set to scriptlevel by MathML\n  // So we have to adjust our label dimensions accordingly.\n  const labelStyle = style.withLevel(style.level < 2 ? 2 : 3);\n  const minArrowWidth = labelSize(minWidth, labelStyle.level);\n  // The dummyNode will be inside a <mover> inside a <mover>\n  // So it will be at scriptlevel 3\n  const dummyWidth = labelSize(minWidth, 3);\n  const emptyLabel = paddedNode(null, minArrowWidth.toFixed(4), 0);\n  const dummyNode = paddedNode(null, dummyWidth.toFixed(4), 0);\n  // The arrow is a little longer than the label. Set a spacer length.\n  const space = labelSize((isEq ? 0 : 0.3), labelStyle.level).toFixed(4);\n  let upperNode;\n  let lowerNode;\n\n  const gotUpper = (body && body.body &&\n    // \\hphantom        visible content\n    (body.body.body || body.body.length > 0));\n  if (gotUpper) {\n    let label =  buildGroup$1(body, labelStyle);\n    const mustSmash = (fName === \"\\\\\\\\cdrightarrow\" || fName === \"\\\\\\\\cdleftarrow\");\n    label = paddedNode(label, space, space, mustSmash);\n    // Since Firefox does not support minsize, stack a invisible node\n    // on top of the label. Its width will serve as a min-width.\n    // TODO: Refactor this after Firefox supports minsize.\n    upperNode = new MathNode(\"mover\", [label, dummyNode]);\n  }\n  const gotLower = (below && below.body &&\n    (below.body.body || below.body.length > 0));\n  if (gotLower) {\n    let label =  buildGroup$1(below, labelStyle);\n    label = paddedNode(label, space, space);\n    lowerNode = new MathNode(\"munder\", [label, dummyNode]);\n  }\n\n  let node;\n  if (!gotUpper && !gotLower) {\n    node = new MathNode(\"mover\", [arrowNode, emptyLabel]);\n  } else if (gotUpper && gotLower) {\n    node = new MathNode(\"munderover\", [arrowNode, lowerNode, upperNode]);\n  } else if (gotUpper) {\n    node = new MathNode(\"mover\", [arrowNode, upperNode]);\n  } else {\n    node = new MathNode(\"munder\", [arrowNode, lowerNode]);\n  }\n  if (minWidth === \"3.0\") { node.style.height = \"1em\"; } // CD environment\n  node.setAttribute(\"accent\", \"false\"); // Necessary for MS Word\n  return node\n};\n\n// Stretchy arrows with an optional argument\ndefineFunction({\n  type: \"xArrow\",\n  names: [\n    \"\\\\xleftarrow\",\n    \"\\\\xrightarrow\",\n    \"\\\\xLeftarrow\",\n    \"\\\\xRightarrow\",\n    \"\\\\xleftrightarrow\",\n    \"\\\\xLeftrightarrow\",\n    \"\\\\xhookleftarrow\",\n    \"\\\\xhookrightarrow\",\n    \"\\\\xmapsto\",\n    \"\\\\xrightharpoondown\",\n    \"\\\\xrightharpoonup\",\n    \"\\\\xleftharpoondown\",\n    \"\\\\xleftharpoonup\",\n    \"\\\\xlongequal\",\n    \"\\\\xtwoheadrightarrow\",\n    \"\\\\xtwoheadleftarrow\",\n    \"\\\\xtofrom\",              // expfeil\n    \"\\\\xleftrightharpoons\",   // mathtools\n    \"\\\\xrightleftharpoons\",   // mathtools\n    // The next 7 functions are here only to support mhchem\n    \"\\\\yields\",\n    \"\\\\yieldsLeft\",\n    \"\\\\mesomerism\",\n    \"\\\\longrightharpoonup\",\n    \"\\\\longleftharpoondown\",\n    \"\\\\yieldsLeftRight\",\n    \"\\\\chemequilibrium\",\n    // The next 3 functions are here only to support the {CD} environment.\n    \"\\\\\\\\cdrightarrow\",\n    \"\\\\\\\\cdleftarrow\",\n    \"\\\\\\\\cdlongequal\"\n  ],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1\n  },\n  handler({ parser, funcName }, args, optArgs) {\n    return {\n      type: \"xArrow\",\n      mode: parser.mode,\n      name: funcName,\n      body: args[0],\n      below: optArgs[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    // Build the arrow and its labels.\n    const node = munderoverNode(group.name, group.body, group.below, style);\n    // Create operator spacing for a relation.\n    const row = [node];\n    row.unshift(padding(0.2778));\n    row.push(padding(0.2778));\n    return new MathNode(\"mrow\", row)\n  }\n});\n\nconst arrowComponent = {\n  \"\\\\equilibriumRight\": [\"\\\\longrightharpoonup\", \"\\\\eqleftharpoondown\"],\n  \"\\\\equilibriumLeft\": [\"\\\\eqrightharpoonup\", \"\\\\longleftharpoondown\"]\n};\n\n// Math fonts do not have a single glyph for these two mhchem functions.\n// So we stack a pair of single harpoons.\ndefineFunction({\n  type: \"stackedArrow\",\n  names: [\n    \"\\\\equilibriumRight\",\n    \"\\\\equilibriumLeft\"\n  ],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1\n  },\n  handler({ parser, funcName }, args, optArgs) {\n    const lowerArrowBody = args[0]\n      ? {\n        type: \"hphantom\",\n        mode: parser.mode,\n        body: args[0]\n      }\n      : null;\n    const upperArrowBelow = optArgs[0]\n      ? {\n        type: \"hphantom\",\n        mode: parser.mode,\n        body: optArgs[0]\n      }\n      : null;\n    return {\n      type: \"stackedArrow\",\n      mode: parser.mode,\n      name: funcName,\n      body: args[0],\n      upperArrowBelow,\n      lowerArrowBody,\n      below: optArgs[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    const topLabel = arrowComponent[group.name][0];\n    const botLabel = arrowComponent[group.name][1];\n    const topArrow = munderoverNode(topLabel, group.body, group.upperArrowBelow, style);\n    const botArrow = munderoverNode(botLabel, group.lowerArrowBody, group.below, style);\n    let wrapper;\n\n    const raiseNode = new MathNode(\"mpadded\", [topArrow]);\n    raiseNode.setAttribute(\"voffset\", \"0.3em\");\n    raiseNode.setAttribute(\"height\", \"+0.3em\");\n    raiseNode.setAttribute(\"depth\", \"-0.3em\");\n    // One of the arrows is given ~zero width. so the other has the same horzontal alignment.\n    if (group.name === \"\\\\equilibriumLeft\") {\n      const botNode =  new MathNode(\"mpadded\", [botArrow]);\n      botNode.setAttribute(\"width\", \"0.5em\");\n      wrapper = new MathNode(\n        \"mpadded\",\n        [padding(0.2778), botNode, raiseNode, padding(0.2778)]\n      );\n    } else {\n      raiseNode.setAttribute(\"width\", (group.name === \"\\\\equilibriumRight\" ? \"0.5em\" : \"0\"));\n      wrapper = new MathNode(\n        \"mpadded\",\n        [padding(0.2778), raiseNode, botArrow, padding(0.2778)]\n      );\n    }\n\n    wrapper.setAttribute(\"voffset\", \"-0.18em\");\n    wrapper.setAttribute(\"height\", \"-0.18em\");\n    wrapper.setAttribute(\"depth\", \"+0.18em\");\n    return wrapper\n  }\n});\n\n/**\n * All registered environments.\n * `environments.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `environments.js`.\n */\nconst _environments = {};\n\nfunction defineEnvironment({ type, names, props, handler, mathmlBuilder }) {\n  // Set default values of environments.\n  const data = {\n    type,\n    numArgs: props.numArgs || 0,\n    allowedInText: false,\n    numOptionalArgs: 0,\n    handler\n  };\n  for (let i = 0; i < names.length; ++i) {\n    _environments[names[i]] = data;\n  }\n  if (mathmlBuilder) {\n    _mathmlGroupBuilders[type] = mathmlBuilder;\n  }\n}\n\n/**\n * Asserts that the node is of the given type and returns it with stricter\n * typing. Throws if the node's type does not match.\n */\nfunction assertNodeType(node, type) {\n  if (!node || node.type !== type) {\n    throw new Error(\n      `Expected node of type ${type}, but got ` +\n        (node ? `node of type ${node.type}` : String(node))\n    );\n  }\n  return node;\n}\n\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction assertSymbolNodeType(node) {\n  const typedNode = checkSymbolNodeType(node);\n  if (!typedNode) {\n    throw new Error(\n      `Expected node of symbol group type, but got ` +\n        (node ? `node of type ${node.type}` : String(node))\n    );\n  }\n  return typedNode;\n}\n\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction checkSymbolNodeType(node) {\n  if (node && (node.type === \"atom\" || node.type === \"delimiter\" ||\n      Object.prototype.hasOwnProperty.call(NON_ATOMS, node.type))) {\n    return node;\n  }\n  return null;\n}\n\nconst cdArrowFunctionName = {\n  \">\": \"\\\\\\\\cdrightarrow\",\n  \"<\": \"\\\\\\\\cdleftarrow\",\n  \"=\": \"\\\\\\\\cdlongequal\",\n  A: \"\\\\uparrow\",\n  V: \"\\\\downarrow\",\n  \"|\": \"\\\\Vert\",\n  \".\": \"no arrow\"\n};\n\nconst newCell = () => {\n  // Create an empty cell, to be filled below with parse nodes.\n  return { type: \"styling\", body: [], mode: \"math\", scriptLevel: \"display\" };\n};\n\nconst isStartOfArrow = (node) => {\n  return node.type === \"textord\" && node.text === \"@\";\n};\n\nconst isLabelEnd = (node, endChar) => {\n  return (node.type === \"mathord\" || node.type === \"atom\") && node.text === endChar;\n};\n\nfunction cdArrow(arrowChar, labels, parser) {\n  // Return a parse tree of an arrow and its labels.\n  // This acts in a way similar to a macro expansion.\n  const funcName = cdArrowFunctionName[arrowChar];\n  switch (funcName) {\n    case \"\\\\\\\\cdrightarrow\":\n    case \"\\\\\\\\cdleftarrow\":\n      return parser.callFunction(funcName, [labels[0]], [labels[1]]);\n    case \"\\\\uparrow\":\n    case \"\\\\downarrow\": {\n      const leftLabel = parser.callFunction(\"\\\\\\\\cdleft\", [labels[0]], []);\n      const bareArrow = {\n        type: \"atom\",\n        text: funcName,\n        mode: \"math\",\n        family: \"rel\"\n      };\n      const sizedArrow = parser.callFunction(\"\\\\Big\", [bareArrow], []);\n      const rightLabel = parser.callFunction(\"\\\\\\\\cdright\", [labels[1]], []);\n      const arrowGroup = {\n        type: \"ordgroup\",\n        mode: \"math\",\n        body: [leftLabel, sizedArrow, rightLabel],\n        semisimple: true\n      };\n      return parser.callFunction(\"\\\\\\\\cdparent\", [arrowGroup], []);\n    }\n    case \"\\\\\\\\cdlongequal\":\n      return parser.callFunction(\"\\\\\\\\cdlongequal\", [], []);\n    case \"\\\\Vert\": {\n      const arrow = { type: \"textord\", text: \"\\\\Vert\", mode: \"math\" };\n      return parser.callFunction(\"\\\\Big\", [arrow], []);\n    }\n    default:\n      return { type: \"textord\", text: \" \", mode: \"math\" };\n  }\n}\n\nfunction parseCD(parser) {\n  // Get the array's parse nodes with \\\\ temporarily mapped to \\cr.\n  const parsedRows = [];\n  parser.gullet.beginGroup();\n  parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n  parser.gullet.beginGroup();\n  while (true) {\n    // Get the parse nodes for the next row.\n    parsedRows.push(parser.parseExpression(false, \"\\\\\\\\\"));\n    parser.gullet.endGroup();\n    parser.gullet.beginGroup();\n    const next = parser.fetch().text;\n    if (next === \"&\" || next === \"\\\\\\\\\") {\n      parser.consume();\n    } else if (next === \"\\\\end\") {\n      if (parsedRows[parsedRows.length - 1].length === 0) {\n        parsedRows.pop(); // final row ended in \\\\\n      }\n      break;\n    } else {\n      throw new ParseError(\"Expected \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n    }\n  }\n\n  let row = [];\n  const body = [row];\n\n  // Loop thru the parse nodes. Collect them into cells and arrows.\n  for (let i = 0; i < parsedRows.length; i++) {\n    // Start a new row.\n    const rowNodes = parsedRows[i];\n    // Create the first cell.\n    let cell = newCell();\n\n    for (let j = 0; j < rowNodes.length; j++) {\n      if (!isStartOfArrow(rowNodes[j])) {\n        // If a parseNode is not an arrow, it goes into a cell.\n        cell.body.push(rowNodes[j]);\n      } else {\n        // Parse node j is an \"@\", the start of an arrow.\n        // Before starting on the arrow, push the cell into `row`.\n        row.push(cell);\n\n        // Now collect parseNodes into an arrow.\n        // The character after \"@\" defines the arrow type.\n        j += 1;\n        const arrowChar = assertSymbolNodeType(rowNodes[j]).text;\n\n        // Create two empty label nodes. We may or may not use them.\n        const labels = new Array(2);\n        labels[0] = { type: \"ordgroup\", mode: \"math\", body: [] };\n        labels[1] = { type: \"ordgroup\", mode: \"math\", body: [] };\n\n        // Process the arrow.\n        if (\"=|.\".indexOf(arrowChar) > -1) ; else if (\"<>AV\".indexOf(arrowChar) > -1) {\n          // Four arrows, `@>>>`, `@<<<`, `@AAA`, and `@VVV`, each take\n          // two optional labels. E.g. the right-point arrow syntax is\n          // really:  @>{optional label}>{optional label}>\n          // Collect parseNodes into labels.\n          for (let labelNum = 0; labelNum < 2; labelNum++) {\n            let inLabel = true;\n            for (let k = j + 1; k < rowNodes.length; k++) {\n              if (isLabelEnd(rowNodes[k], arrowChar)) {\n                inLabel = false;\n                j = k;\n                break;\n              }\n              if (isStartOfArrow(rowNodes[k])) {\n                throw new ParseError(\n                  \"Missing a \" + arrowChar + \" character to complete a CD arrow.\",\n                  rowNodes[k]\n                );\n              }\n\n              labels[labelNum].body.push(rowNodes[k]);\n            }\n            if (inLabel) {\n              // isLabelEnd never returned a true.\n              throw new ParseError(\n                \"Missing a \" + arrowChar + \" character to complete a CD arrow.\",\n                rowNodes[j]\n              );\n            }\n          }\n        } else {\n          throw new ParseError(`Expected one of \"<>AV=|.\" after @.`);\n        }\n\n        // Now join the arrow to its labels.\n        const arrow = cdArrow(arrowChar, labels, parser);\n\n        // Wrap the arrow in a styling node\n        row.push(arrow);\n        // In CD's syntax, cells are implicit. That is, everything that\n        // is not an arrow gets collected into a cell. So create an empty\n        // cell now. It will collect upcoming parseNodes.\n        cell = newCell();\n      }\n    }\n    if (i % 2 === 0) {\n      // Even-numbered rows consist of: cell, arrow, cell, arrow, ... cell\n      // The last cell is not yet pushed into `row`, so:\n      row.push(cell);\n    } else {\n      // Odd-numbered rows consist of: vert arrow, empty cell, ... vert arrow\n      // Remove the empty cell that was placed at the beginning of `row`.\n      row.shift();\n    }\n    row = [];\n    body.push(row);\n  }\n  body.pop();\n\n  // End row group\n  parser.gullet.endGroup();\n  // End array group defining \\\\\n  parser.gullet.endGroup();\n\n  return {\n    type: \"array\",\n    mode: \"math\",\n    body,\n    tags: null,\n    labels: new Array(body.length + 1).fill(\"\"),\n    envClasses: [\"jot\", \"cd\"],\n    cols: [],\n    hLinesBeforeRow: new Array(body.length + 1).fill([])\n  };\n}\n\n// The functions below are not available for general use.\n// They are here only for internal use by the {CD} environment in placing labels\n// next to vertical arrows.\n\n// We don't need any such functions for horizontal arrows because we can reuse\n// the functionality that already exists for extensible arrows.\n\ndefineFunction({\n  type: \"cdlabel\",\n  names: [\"\\\\\\\\cdleft\", \"\\\\\\\\cdright\"],\n  props: {\n    numArgs: 1\n  },\n  handler({ parser, funcName }, args) {\n    return {\n      type: \"cdlabel\",\n      mode: parser.mode,\n      side: funcName.slice(4),\n      label: args[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    if (group.label.body.length === 0) {\n      return new MathNode(\"mrow\", style)  // empty label\n    }\n    // Abuse an <mtable> to create vertically centered content.\n    const mrow = buildGroup$1(group.label, style);\n    if (group.side === \"left\") {\n      mrow.classes.push(\"tml-shift-left\");\n    }\n    const mtd = new MathNode(\"mtd\", [mrow]);\n    mtd.style.padding = \"0\";\n    const mtr = new MathNode(\"mtr\", [mtd]);\n    const mtable = new MathNode(\"mtable\", [mtr]);\n    const label = new MathNode(\"mpadded\", [mtable]);\n    // Set the label width to zero so that the arrow will be centered under the corner cell.\n    label.setAttribute(\"width\", \"0.1px\"); // Don't use 0. WebKit would hide it.\n    label.setAttribute(\"displaystyle\", \"false\");\n    label.setAttribute(\"scriptlevel\", \"1\");\n    return label;\n  }\n});\n\ndefineFunction({\n  type: \"cdlabelparent\",\n  names: [\"\\\\\\\\cdparent\"],\n  props: {\n    numArgs: 1\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"cdlabelparent\",\n      mode: parser.mode,\n      fragment: args[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    return new MathNode(\"mrow\", [buildGroup$1(group.fragment, style)]);\n  }\n});\n\nconst ordGroup = (body) => {\n  return {\n    \"type\": \"ordgroup\",\n    \"mode\": \"math\",\n    \"body\": body,\n    \"semisimple\": true\n  }\n};\n\nconst phantom = (body, type) => {\n  return {\n    \"type\": type,\n    \"mode\": \"math\",\n    \"body\": ordGroup(body)\n  }\n};\n\n/*\n * A helper for \\bordermatrix.\n * parseArray() has parsed the tokens as if the environment\n * was \\begin{matrix}. That parse tree is this function’s input.\n * Here, we rearrange the parse tree to get one that will\n * result in TeX \\bordermatrix.\n * The final result includes a {pmatrix}, which is the bottom\n * half of a <mover> element. The top of the <mover> contains\n * the \\bordermatrix headings. The top section also contains the\n * contents of the bottom {pmatrix}. Those elements are hidden via\n * \\hphantom, but they ensure that column widths are the same top and\n * bottom.\n *\n * We also create a left {matrix} with a single column that contains\n * elements shifted out of the matrix. The left {matrix} also\n * contains \\vphantom copies of the other {pmatrix} elements.\n * As before, this ensures consistent row heights of left and main.\n */\n\nconst bordermatrixParseTree = (matrix, delimiters) => {\n  const body = matrix.body;\n  body[0].shift(); // dispose of top left cell\n\n  // Create an array for the left column\n  const leftColumnBody = new Array(body.length - 1).fill().map(() => []);\n  for (let i = 1; i < body.length; i++) {\n    // The visible part of the cell\n    leftColumnBody[i - 1].push(body[i].shift());\n    // A vphantom with contents from the pmatrix, to set minimum cell height\n    const phantomBody = [];\n    for (let j = 0; j < body[i].length; j++) {\n      phantomBody.push(body[i][j]);\n    }\n    leftColumnBody[i - 1].push(phantom(phantomBody, \"vphantom\"));\n  }\n\n  // Create an array for the top row\n  const topRowBody = new Array(body.length).fill().map(() => []);\n  for (let j = 0; j < body[0].length; j++) {\n    topRowBody[0].push(body[0][j]);\n  }\n  // Copy the rest of the pmatrix, but squashed via \\hphantom\n  for (let i = 1; i < body.length; i++) {\n    for (let j = 0; j < body[0].length; j++) {\n      topRowBody[i].push(phantom(body[i][j].body, \"hphantom\"));\n    }\n  }\n\n  // Squash the top row of the main {pmatrix}\n  for (let j = 0; j < body[0].length; j++) {\n    body[0][j] = phantom(body[0][j].body, \"hphantom\");\n  }\n\n  // Now wrap the arrays in the proper parse nodes.\n\n  const leftColumn = {\n    type: \"array\",\n    mode: \"math\",\n    body: leftColumnBody,\n    cols: [{ type: \"align\", align: \"c\" }],\n    rowGaps: new Array(leftColumnBody.length - 1).fill(null),\n    hLinesBeforeRow: new Array(leftColumnBody.length + 1).fill().map(() => []),\n    envClasses: [],\n    scriptLevel: \"text\",\n    arraystretch: 1,\n    labels: new Array(leftColumnBody.length).fill(\"\"),\n    arraycolsep: { \"number\": 0.04, unit: \"em\" }\n  };\n\n  const topRow = {\n    type: \"array\",\n    mode: \"math\",\n    body: topRowBody,\n    cols: new Array(topRowBody.length).fill({ type: \"align\", align: \"c\" }),\n    rowGaps: new Array(topRowBody.length - 1).fill(null),\n    hLinesBeforeRow: new Array(topRowBody.length + 1).fill().map(() => []),\n    envClasses: [],\n    scriptLevel: \"text\",\n    arraystretch: 1,\n    labels: new Array(topRowBody.length).fill(\"\"),\n    arraycolsep: null\n  };\n\n  const topWrapper = {\n    type: \"styling\",\n    mode: \"math\",\n    scriptLevel: \"text\", // Must set this explicitly.\n    body: [topRow]       // Default level is \"script\".\n  };\n\n  const container = {\n    type: \"leftright\",\n    mode: \"math\",\n    body: [matrix],\n    left: delimiters ? delimiters[0] : \"(\",\n    right: delimiters ? delimiters[1] : \")\",\n    rightColor: undefined\n  };\n\n  const base = {\n    type: \"op\",   // The base of a TeX \\overset\n    mode: \"math\",\n    limits: true,\n    alwaysHandleSupSub: true,\n    parentIsSupSub: true,\n    symbol: false,\n    suppressBaseShift: true,\n    body: [container]\n  };\n\n  const mover = {\n    type: \"supsub\",  // We're using the MathML equivalent\n    mode: \"math\",    // of TeX \\overset.\n    stack: true,\n    base: base,      // That keeps the {pmatrix} aligned with\n    sup: topWrapper, // the math centerline.\n    sub: null\n  };\n\n  return ordGroup([leftColumn, mover])\n};\n\n/**\n * Lexing or parsing positional information for error reporting.\n * This object is immutable.\n */\nclass SourceLocation {\n  constructor(lexer, start, end) {\n    this.lexer = lexer; // Lexer holding the input string.\n    this.start = start; // Start offset, zero-based inclusive.\n    this.end = end;     // End offset, zero-based exclusive.\n  }\n\n  /**\n   * Merges two `SourceLocation`s from location providers, given they are\n   * provided in order of appearance.\n   * - Returns the first one's location if only the first is provided.\n   * - Returns a merged range of the first and the last if both are provided\n   *   and their lexers match.\n   * - Otherwise, returns null.\n   */\n  static range(first, second) {\n    if (!second) {\n      return first && first.loc;\n    } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {\n      return null;\n    } else {\n      return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);\n    }\n  }\n}\n\n/**\n * Interface required to break circular dependency between Token, Lexer, and\n * ParseError.\n */\n\n/**\n * The resulting token returned from `lex`.\n *\n * It consists of the token text plus some position information.\n * The position information is essentially a range in an input string,\n * but instead of referencing the bare input string, we refer to the lexer.\n * That way it is possible to attach extra metadata to the input string,\n * like for example a file name or similar.\n *\n * The position information is optional, so it is OK to construct synthetic\n * tokens if appropriate. Not providing available position information may\n * lead to degraded error reporting, though.\n */\nclass Token {\n  constructor(\n    text, // the text of this token\n    loc\n  ) {\n    this.text = text;\n    this.loc = loc;\n  }\n\n  /**\n   * Given a pair of tokens (this and endToken), compute a `Token` encompassing\n   * the whole input range enclosed by these two.\n   */\n  range(\n    endToken, // last token of the range, inclusive\n    text // the text of the newly constructed token\n  ) {\n    return new Token(text, SourceLocation.range(this, endToken));\n  }\n}\n\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle, scriptstyle, and scriptscriptstyle.  These are\n// provided in the the arrays below, in that order.\n//\n\n// Math style is not quite the same thing as script level.\nconst StyleLevel = {\n  DISPLAY: 0,\n  TEXT: 1,\n  SCRIPT: 2,\n  SCRIPTSCRIPT: 3\n};\n\n/**\n * All registered global/built-in macros.\n * `macros.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `macros.js`.\n */\nconst _macros = {};\n\n// This function might one day accept an additional argument and do more things.\nfunction defineMacro(name, body) {\n  _macros[name] = body;\n}\n\n/**\n * Predefined macros for Temml.\n * This can be used to define some commands in terms of others.\n */\n\nconst macros = _macros;\n\n//////////////////////////////////////////////////////////////////////\n// macro tools\n\ndefineMacro(\"\\\\noexpand\", function(context) {\n  // The expansion is the token itself; but that token is interpreted\n  // as if its meaning were ‘\\relax’ if it is a control sequence that\n  // would ordinarily be expanded by TeX’s expansion rules.\n  const t = context.popToken();\n  if (context.isExpandable(t.text)) {\n    t.noexpand = true;\n    t.treatAsRelax = true;\n  }\n  return { tokens: [t], numArgs: 0 };\n});\n\ndefineMacro(\"\\\\expandafter\", function(context) {\n  // TeX first reads the token that comes immediately after \\expandafter,\n  // without expanding it; let’s call this token t. Then TeX reads the\n  // token that comes after t (and possibly more tokens, if that token\n  // has an argument), replacing it by its expansion. Finally TeX puts\n  // t back in front of that expansion.\n  const t = context.popToken();\n  context.expandOnce(true); // expand only an expandable token\n  return { tokens: [t], numArgs: 0 };\n});\n\n// LaTeX's \\@firstoftwo{#1}{#2} expands to #1, skipping #2\n// TeX source: \\long\\def\\@firstoftwo#1#2{#1}\ndefineMacro(\"\\\\@firstoftwo\", function(context) {\n  const args = context.consumeArgs(2);\n  return { tokens: args[0], numArgs: 0 };\n});\n\n// LaTeX's \\@secondoftwo{#1}{#2} expands to #2, skipping #1\n// TeX source: \\long\\def\\@secondoftwo#1#2{#2}\ndefineMacro(\"\\\\@secondoftwo\", function(context) {\n  const args = context.consumeArgs(2);\n  return { tokens: args[1], numArgs: 0 };\n});\n\n// LaTeX's \\@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)\n// symbol that isn't a space, consuming any spaces but not consuming the\n// first nonspace character.  If that nonspace character matches #1, then\n// the macro expands to #2; otherwise, it expands to #3.\ndefineMacro(\"\\\\@ifnextchar\", function(context) {\n  const args = context.consumeArgs(3); // symbol, if, else\n  context.consumeSpaces();\n  const nextToken = context.future();\n  if (args[0].length === 1 && args[0][0].text === nextToken.text) {\n    return { tokens: args[1], numArgs: 0 };\n  } else {\n    return { tokens: args[2], numArgs: 0 };\n  }\n});\n\n// LaTeX's \\@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol.\n// If it is `*`, then it consumes the symbol, and the macro expands to #1;\n// otherwise, the macro expands to #2 (without consuming the symbol).\n// TeX source: \\def\\@ifstar#1{\\@ifnextchar *{\\@firstoftwo{#1}}}\ndefineMacro(\"\\\\@ifstar\", \"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\");\n\n// LaTeX's \\TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode\ndefineMacro(\"\\\\TextOrMath\", function(context) {\n  const args = context.consumeArgs(2);\n  if (context.mode === \"text\") {\n    return { tokens: args[0], numArgs: 0 };\n  } else {\n    return { tokens: args[1], numArgs: 0 };\n  }\n});\n\nconst stringFromArg = arg => {\n  // Reverse the order of the arg and return a string.\n  let str = \"\";\n  for (let i = arg.length - 1; i > -1; i--) {\n    str += arg[i].text;\n  }\n  return str\n};\n\n// Lookup table for parsing numbers in base 8 through 16\nconst digitToNumber = {\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3,\n  4: 4,\n  5: 5,\n  6: 6,\n  7: 7,\n  8: 8,\n  9: 9,\n  a: 10,\n  A: 10,\n  b: 11,\n  B: 11,\n  c: 12,\n  C: 12,\n  d: 13,\n  D: 13,\n  e: 14,\n  E: 14,\n  f: 15,\n  F: 15\n};\n\nconst nextCharNumber = context => {\n  const numStr = context.future().text;\n  if (numStr === \"EOF\") { return [null, \"\"] }\n  return [digitToNumber[numStr.charAt(0)], numStr]\n};\n\nconst appendCharNumbers = (number, numStr, base) => {\n  for (let i = 1; i < numStr.length; i++) {\n    const digit = digitToNumber[numStr.charAt(i)];\n    number *= base;\n    number += digit;\n  }\n  return number\n};\n\n// TeX \\char makes a literal character (catcode 12) using the following forms:\n// (see The TeXBook, p. 43)\n//   \\char123  -- decimal\n//   \\char'123 -- octal\n//   \\char\"123 -- hex\n//   \\char`x   -- character that can be written (i.e. isn't active)\n//   \\char`\\x  -- character that cannot be written (e.g. %)\n// These all refer to characters from the font, so we turn them into special\n// calls to a function \\@char dealt with in the Parser.\ndefineMacro(\"\\\\char\", function(context) {\n  let token = context.popToken();\n  let base;\n  let number = \"\";\n  if (token.text === \"'\") {\n    base = 8;\n    token = context.popToken();\n  } else if (token.text === '\"') {\n    base = 16;\n    token = context.popToken();\n  } else if (token.text === \"`\") {\n    token = context.popToken();\n    if (token.text[0] === \"\\\\\") {\n      number = token.text.charCodeAt(1);\n    } else if (token.text === \"EOF\") {\n      throw new ParseError(\"\\\\char` missing argument\");\n    } else {\n      number = token.text.charCodeAt(0);\n    }\n  } else {\n    base = 10;\n  }\n  if (base) {\n    // Parse a number in the given base, starting with first `token`.\n    let numStr = token.text;\n    number = digitToNumber[numStr.charAt(0)];\n    if (number == null || number >= base) {\n      throw new ParseError(`Invalid base-${base} digit ${token.text}`);\n    }\n    number = appendCharNumbers(number, numStr, base);\n    let digit;\n    [digit, numStr] = nextCharNumber(context);\n    while (digit != null && digit < base) {\n      number *= base;\n      number += digit;\n      number = appendCharNumbers(number, numStr, base);\n      context.popToken();\n      [digit, numStr] = nextCharNumber(context);\n    }\n  }\n  return `\\\\@char{${number}}`;\n});\n\nfunction recreateArgStr(context) {\n  // Recreate the macro's original argument string from the array of parse tokens.\n  const tokens = context.consumeArgs(1)[0];\n  let str = \"\";\n  let expectedLoc = tokens[tokens.length - 1].loc.start;\n  for (let i = tokens.length - 1; i >= 0; i--) {\n    const actualLoc = tokens[i].loc.start;\n    if (actualLoc > expectedLoc) {\n      // context.consumeArgs has eaten a space.\n      str += \" \";\n      expectedLoc = actualLoc;\n    }\n    str += tokens[i].text;\n    expectedLoc += tokens[i].text.length;\n  }\n  return str\n}\n\n// The Latin Modern font renders <mi>√</mi> at the wrong vertical alignment.\n// This macro provides a better rendering.\ndefineMacro(\"\\\\surd\", '\\\\sqrt{\\\\vphantom{|}}');\n\n// See comment for \\oplus in symbols.js.\ndefineMacro(\"\\u2295\", \"\\\\oplus\");\n\n// Since Temml has no \\par, ignore \\long.\ndefineMacro(\"\\\\long\", \"\");\n\n//////////////////////////////////////////////////////////////////////\n// Grouping\n// \\let\\bgroup={ \\let\\egroup=}\ndefineMacro(\"\\\\bgroup\", \"{\");\ndefineMacro(\"\\\\egroup\", \"}\");\n\n// Symbols from latex.ltx:\n// \\def~{\\nobreakspace{}}\n// \\def\\lq{`}\n// \\def\\rq{'}\n// \\def \\aa {\\r a}\ndefineMacro(\"~\", \"\\\\nobreakspace\");\ndefineMacro(\"\\\\lq\", \"`\");\ndefineMacro(\"\\\\rq\", \"'\");\ndefineMacro(\"\\\\aa\", \"\\\\r a\");\n\ndefineMacro(\"\\\\Bbbk\", \"\\\\Bbb{k}\");\n\n// \\mathstrut from the TeXbook, p 360\ndefineMacro(\"\\\\mathstrut\", \"\\\\vphantom{(}\");\n\n// \\underbar from TeXbook p 353\ndefineMacro(\"\\\\underbar\", \"\\\\underline{\\\\text{#1}}\");\n\n//////////////////////////////////////////////////////////////////////\n// LaTeX_2ε\n\n// \\vdots{\\vbox{\\baselineskip4\\p@  \\lineskiplimit\\z@\n// \\kern6\\p@\\hbox{.}\\hbox{.}\\hbox{.}}}\n// We'll call \\varvdots, which gets a glyph from symbols.js.\n// The zero-width rule gets us an equivalent to the vertical 6pt kern.\ndefineMacro(\"\\\\vdots\", \"{\\\\varvdots\\\\rule{0pt}{15pt}}\");\ndefineMacro(\"\\u22ee\", \"\\\\vdots\");\n\n// {array} environment gaps\ndefineMacro(\"\\\\arraystretch\", \"1\");     // line spacing factor times 12pt\ndefineMacro(\"\\\\arraycolsep\", \"6pt\");    // half the width separating columns\n\n//////////////////////////////////////////////////////////////////////\n// amsmath.sty\n// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf\n\n//\\newcommand{\\substack}[1]{\\subarray{c}#1\\endsubarray}\ndefineMacro(\"\\\\substack\", \"\\\\begin{subarray}{c}#1\\\\end{subarray}\");\n\n// \\def\\iff{\\DOTSB\\;\\Longleftrightarrow\\;}\n// \\def\\implies{\\DOTSB\\;\\Longrightarrow\\;}\n// \\def\\impliedby{\\DOTSB\\;\\Longleftarrow\\;}\ndefineMacro(\"\\\\iff\", \"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\");\ndefineMacro(\"\\\\implies\", \"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\");\ndefineMacro(\"\\\\impliedby\", \"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");\n\n// AMSMath's automatic \\dots, based on \\mdots@@ macro.\nconst dotsByToken = {\n  \",\": \"\\\\dotsc\",\n  \"\\\\not\": \"\\\\dotsb\",\n  // \\keybin@ checks for the following:\n  \"+\": \"\\\\dotsb\",\n  \"=\": \"\\\\dotsb\",\n  \"<\": \"\\\\dotsb\",\n  \">\": \"\\\\dotsb\",\n  \"-\": \"\\\\dotsb\",\n  \"*\": \"\\\\dotsb\",\n  \":\": \"\\\\dotsb\",\n  // Symbols whose definition starts with \\DOTSB:\n  \"\\\\DOTSB\": \"\\\\dotsb\",\n  \"\\\\coprod\": \"\\\\dotsb\",\n  \"\\\\bigvee\": \"\\\\dotsb\",\n  \"\\\\bigwedge\": \"\\\\dotsb\",\n  \"\\\\biguplus\": \"\\\\dotsb\",\n  \"\\\\bigcap\": \"\\\\dotsb\",\n  \"\\\\bigcup\": \"\\\\dotsb\",\n  \"\\\\prod\": \"\\\\dotsb\",\n  \"\\\\sum\": \"\\\\dotsb\",\n  \"\\\\bigotimes\": \"\\\\dotsb\",\n  \"\\\\bigoplus\": \"\\\\dotsb\",\n  \"\\\\bigodot\": \"\\\\dotsb\",\n  \"\\\\bigsqcap\": \"\\\\dotsb\",\n  \"\\\\bigsqcup\": \"\\\\dotsb\",\n  \"\\\\bigtimes\": \"\\\\dotsb\",\n  \"\\\\And\": \"\\\\dotsb\",\n  \"\\\\longrightarrow\": \"\\\\dotsb\",\n  \"\\\\Longrightarrow\": \"\\\\dotsb\",\n  \"\\\\longleftarrow\": \"\\\\dotsb\",\n  \"\\\\Longleftarrow\": \"\\\\dotsb\",\n  \"\\\\longleftrightarrow\": \"\\\\dotsb\",\n  \"\\\\Longleftrightarrow\": \"\\\\dotsb\",\n  \"\\\\mapsto\": \"\\\\dotsb\",\n  \"\\\\longmapsto\": \"\\\\dotsb\",\n  \"\\\\hookrightarrow\": \"\\\\dotsb\",\n  \"\\\\doteq\": \"\\\\dotsb\",\n  // Symbols whose definition starts with \\mathbin:\n  \"\\\\mathbin\": \"\\\\dotsb\",\n  // Symbols whose definition starts with \\mathrel:\n  \"\\\\mathrel\": \"\\\\dotsb\",\n  \"\\\\relbar\": \"\\\\dotsb\",\n  \"\\\\Relbar\": \"\\\\dotsb\",\n  \"\\\\xrightarrow\": \"\\\\dotsb\",\n  \"\\\\xleftarrow\": \"\\\\dotsb\",\n  // Symbols whose definition starts with \\DOTSI:\n  \"\\\\DOTSI\": \"\\\\dotsi\",\n  \"\\\\int\": \"\\\\dotsi\",\n  \"\\\\oint\": \"\\\\dotsi\",\n  \"\\\\iint\": \"\\\\dotsi\",\n  \"\\\\iiint\": \"\\\\dotsi\",\n  \"\\\\iiiint\": \"\\\\dotsi\",\n  // Symbols whose definition starts with \\DOTSX:\n  \"\\\\DOTSX\": \"\\\\dotsx\"\n};\n\ndefineMacro(\"\\\\dots\", function(context) {\n  // TODO: If used in text mode, should expand to \\textellipsis.\n  // However, in Temml, \\textellipsis and \\ldots behave the same\n  // (in text mode), and it's unlikely we'd see any of the math commands\n  // that affect the behavior of \\dots when in text mode.  So fine for now\n  // (until we support \\ifmmode ... \\else ... \\fi).\n  let thedots = \"\\\\dotso\";\n  const next = context.expandAfterFuture().text;\n  if (next in dotsByToken) {\n    thedots = dotsByToken[next];\n  } else if (next.slice(0, 4) === \"\\\\not\") {\n    thedots = \"\\\\dotsb\";\n  } else if (next in symbols.math) {\n    if ([\"bin\", \"rel\"].includes(symbols.math[next].group)) {\n      thedots = \"\\\\dotsb\";\n    }\n  }\n  return thedots;\n});\n\nconst spaceAfterDots = {\n  // \\rightdelim@ checks for the following:\n  \")\": true,\n  \"]\": true,\n  \"\\\\rbrack\": true,\n  \"\\\\}\": true,\n  \"\\\\rbrace\": true,\n  \"\\\\rangle\": true,\n  \"\\\\rceil\": true,\n  \"\\\\rfloor\": true,\n  \"\\\\rgroup\": true,\n  \"\\\\rmoustache\": true,\n  \"\\\\right\": true,\n  \"\\\\bigr\": true,\n  \"\\\\biggr\": true,\n  \"\\\\Bigr\": true,\n  \"\\\\Biggr\": true,\n  // \\extra@ also tests for the following:\n  $: true,\n  // \\extrap@ checks for the following:\n  \";\": true,\n  \".\": true,\n  \",\": true\n};\n\ndefineMacro(\"\\\\dotso\", function(context) {\n  const next = context.future().text;\n  if (next in spaceAfterDots) {\n    return \"\\\\ldots\\\\,\";\n  } else {\n    return \"\\\\ldots\";\n  }\n});\n\ndefineMacro(\"\\\\dotsc\", function(context) {\n  const next = context.future().text;\n  // \\dotsc uses \\extra@ but not \\extrap@, instead specially checking for\n  // ';' and '.', but doesn't check for ','.\n  if (next in spaceAfterDots && next !== \",\") {\n    return \"\\\\ldots\\\\,\";\n  } else {\n    return \"\\\\ldots\";\n  }\n});\n\ndefineMacro(\"\\\\cdots\", function(context) {\n  const next = context.future().text;\n  if (next in spaceAfterDots) {\n    return \"\\\\@cdots\\\\,\";\n  } else {\n    return \"\\\\@cdots\";\n  }\n});\n\ndefineMacro(\"\\\\dotsb\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsm\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsi\", \"\\\\!\\\\cdots\");\ndefineMacro(\"\\\\idotsint\", \"\\\\int\\\\!\\\\cdots\\\\!\\\\int\");\n// amsmath doesn't actually define \\dotsx, but \\dots followed by a macro\n// starting with \\DOTSX implies \\dotso, and then \\extra@ detects this case\n// and forces the added `\\,`.\ndefineMacro(\"\\\\dotsx\", \"\\\\ldots\\\\,\");\n\n// \\let\\DOTSI\\relax\n// \\let\\DOTSB\\relax\n// \\let\\DOTSX\\relax\ndefineMacro(\"\\\\DOTSI\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSB\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSX\", \"\\\\relax\");\n\n// Spacing, based on amsmath.sty's override of LaTeX defaults\n// \\DeclareRobustCommand{\\tmspace}[3]{%\n//   \\ifmmode\\mskip#1#2\\else\\kern#1#3\\fi\\relax}\ndefineMacro(\"\\\\tmspace\", \"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\");\n// \\renewcommand{\\,}{\\tmspace+\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\,\", \"{\\\\tmspace+{3mu}{.1667em}}\");\n// \\let\\thinspace\\,\ndefineMacro(\"\\\\thinspace\", \"\\\\,\");\n// \\def\\>{\\mskip\\medmuskip}\n// \\renewcommand{\\:}{\\tmspace+\\medmuskip{.2222em}}\n// TODO: \\> and math mode of \\: should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\>\", \"\\\\mskip{4mu}\");\ndefineMacro(\"\\\\:\", \"{\\\\tmspace+{4mu}{.2222em}}\");\n// \\let\\medspace\\:\ndefineMacro(\"\\\\medspace\", \"\\\\:\");\n// \\renewcommand{\\;}{\\tmspace+\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip = 5mu plus 5mu\ndefineMacro(\"\\\\;\", \"{\\\\tmspace+{5mu}{.2777em}}\");\n// \\let\\thickspace\\;\ndefineMacro(\"\\\\thickspace\", \"\\\\;\");\n// \\renewcommand{\\!}{\\tmspace-\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\!\", \"{\\\\tmspace-{3mu}{.1667em}}\");\n// \\let\\negthinspace\\!\ndefineMacro(\"\\\\negthinspace\", \"\\\\!\");\n// \\newcommand{\\negmedspace}{\\tmspace-\\medmuskip{.2222em}}\n// TODO: math mode should use \\medmuskip\ndefineMacro(\"\\\\negmedspace\", \"{\\\\tmspace-{4mu}{.2222em}}\");\n// \\newcommand{\\negthickspace}{\\tmspace-\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip\ndefineMacro(\"\\\\negthickspace\", \"{\\\\tmspace-{5mu}{.277em}}\");\n// \\def\\enspace{\\kern.5em }\ndefineMacro(\"\\\\enspace\", \"\\\\kern.5em \");\n// \\def\\enskip{\\hskip.5em\\relax}\ndefineMacro(\"\\\\enskip\", \"\\\\hskip.5em\\\\relax\");\n// \\def\\quad{\\hskip1em\\relax}\ndefineMacro(\"\\\\quad\", \"\\\\hskip1em\\\\relax\");\n// \\def\\qquad{\\hskip2em\\relax}\ndefineMacro(\"\\\\qquad\", \"\\\\hskip2em\\\\relax\");\n\ndefineMacro(\"\\\\AA\", \"\\\\TextOrMath{\\\\Angstrom}{\\\\mathring{A}}\\\\relax\");\n\n// \\tag@in@display form of \\tag\ndefineMacro(\"\\\\tag\", \"\\\\@ifstar\\\\tag@literal\\\\tag@paren\");\ndefineMacro(\"\\\\tag@paren\", \"\\\\tag@literal{({#1})}\");\ndefineMacro(\"\\\\tag@literal\", (context) => {\n  if (context.macros.get(\"\\\\df@tag\")) {\n    throw new ParseError(\"Multiple \\\\tag\");\n  }\n  return \"\\\\gdef\\\\df@tag{\\\\text{#1}}\";\n});\ndefineMacro(\"\\\\notag\", \"\\\\nonumber\");\ndefineMacro(\"\\\\nonumber\", \"\\\\gdef\\\\@eqnsw{0}\");\n\n// \\renewcommand{\\bmod}{\\nonscript\\mskip-\\medmuskip\\mkern5mu\\mathbin\n//   {\\operator@font mod}\\penalty900\n//   \\mkern5mu\\nonscript\\mskip-\\medmuskip}\n// \\newcommand{\\pod}[1]{\\allowbreak\n//   \\if@display\\mkern18mu\\else\\mkern8mu\\fi(#1)}\n// \\renewcommand{\\pmod}[1]{\\pod{{\\operator@font mod}\\mkern6mu#1}}\n// \\newcommand{\\mod}[1]{\\allowbreak\\if@display\\mkern18mu\n//   \\else\\mkern12mu\\fi{\\operator@font mod}\\,\\,#1}\n// TODO: math mode should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\bmod\", \"\\\\mathbin{\\\\text{mod}}\");\ndefineMacro(\n  \"\\\\pod\",\n  \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\"\n);\ndefineMacro(\"\\\\pmod\", \"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\");\ndefineMacro(\n  \"\\\\mod\",\n  \"\\\\allowbreak\" +\n    \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}\" +\n    \"{\\\\rm mod}\\\\,\\\\,#1\"\n);\n\n//////////////////////////////////////////////////////////////////////\n// LaTeX source2e\n\n// \\expandafter\\let\\expandafter\\@normalcr\n//     \\csname\\expandafter\\@gobble\\string\\\\ \\endcsname\n// \\DeclareRobustCommand\\newline{\\@normalcr\\relax}\ndefineMacro(\"\\\\newline\", \"\\\\\\\\\\\\relax\");\n\n// \\def\\TeX{T\\kern-.1667em\\lower.5ex\\hbox{E}\\kern-.125emX\\@}\n// TODO: Doesn't normally work in math mode because \\@ fails.\ndefineMacro(\"\\\\TeX\", \"\\\\textrm{T}\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125em\\\\textrm{X}\");\n\ndefineMacro(\n  \"\\\\LaTeX\",\n    \"\\\\textrm{L}\\\\kern-.35em\\\\raisebox{0.2em}{\\\\scriptstyle A}\\\\kern-.15em\\\\TeX\"\n);\n\ndefineMacro(\n  \"\\\\Temml\",\n  // eslint-disable-next-line max-len\n  \"\\\\textrm{T}\\\\kern-0.2em\\\\lower{0.2em}{\\\\textrm{E}}\\\\kern-0.08em{\\\\textrm{M}\\\\kern-0.08em\\\\raise{0.2em}\\\\textrm{M}\\\\kern-0.08em\\\\textrm{L}}\"\n);\n\n// \\DeclareRobustCommand\\hspace{\\@ifstar\\@hspacer\\@hspace}\n// \\def\\@hspace#1{\\hskip  #1\\relax}\n// \\def\\@hspacer#1{\\vrule \\@width\\z@\\nobreak\n//                 \\hskip #1\\hskip \\z@skip}\ndefineMacro(\"\\\\hspace\", \"\\\\@ifstar\\\\@hspacer\\\\@hspace\");\ndefineMacro(\"\\\\@hspace\", \"\\\\hskip #1\\\\relax\");\ndefineMacro(\"\\\\@hspacer\", \"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\");\n\ndefineMacro(\"\\\\colon\", `\\\\mathpunct{\\\\char\"3a}`);\n\n//////////////////////////////////////////////////////////////////////\n// mathtools.sty\n\ndefineMacro(\"\\\\prescript\", \"\\\\pres@cript{_{#1}^{#2}}{}{#3}\");\n\n//\\providecommand\\ordinarycolon{:}\ndefineMacro(\"\\\\ordinarycolon\", `\\\\char\"3a`);\n// Raise to center on the math axis, as closely as possible.\ndefineMacro(\"\\\\vcentcolon\", \"\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}}\");\n// \\providecommand*\\coloneq{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\coloneq\", '\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"2212}');\n// \\providecommand*\\Coloneq{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\Coloneq\", '\\\\mathrel{\\\\char\"2237\\\\char\"2212}');\n// \\providecommand*\\Eqqcolon{=\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqqcolon\", '\\\\mathrel{\\\\char\"3d\\\\char\"2237}');\n// \\providecommand*\\Eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqcolon\", '\\\\mathrel{\\\\char\"2212\\\\char\"2237}');\n// \\providecommand*\\colonapprox{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\colonapprox\", '\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"2248}');\n// \\providecommand*\\Colonapprox{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\Colonapprox\", '\\\\mathrel{\\\\char\"2237\\\\char\"2248}');\n// \\providecommand*\\colonsim{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\colonsim\", '\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"223c}');\n// \\providecommand*\\Colonsim{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\Colonsim\", '\\\\mathrel{\\\\raisebox{0.035em}{\\\\ordinarycolon}\\\\char\"223c}');\n\n//////////////////////////////////////////////////////////////////////\n// colonequals.sty\n\n// Alternate names for mathtools's macros:\ndefineMacro(\"\\\\ratio\", \"\\\\vcentcolon\");\ndefineMacro(\"\\\\coloncolon\", \"\\\\dblcolon\");\ndefineMacro(\"\\\\colonequals\", \"\\\\coloneqq\");\ndefineMacro(\"\\\\coloncolonequals\", \"\\\\Coloneqq\");\ndefineMacro(\"\\\\equalscolon\", \"\\\\eqqcolon\");\ndefineMacro(\"\\\\equalscoloncolon\", \"\\\\Eqqcolon\");\ndefineMacro(\"\\\\colonminus\", \"\\\\coloneq\");\ndefineMacro(\"\\\\coloncolonminus\", \"\\\\Coloneq\");\ndefineMacro(\"\\\\minuscolon\", \"\\\\eqcolon\");\ndefineMacro(\"\\\\minuscoloncolon\", \"\\\\Eqcolon\");\n// \\colonapprox name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonapprox\", \"\\\\Colonapprox\");\n// \\colonsim name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonsim\", \"\\\\Colonsim\");\n\n// Present in newtxmath, pxfonts and txfonts\ndefineMacro(\"\\\\notni\", \"\\\\mathrel{\\\\char`\\u220C}\");\ndefineMacro(\"\\\\limsup\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,sup}\");\ndefineMacro(\"\\\\liminf\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,inf}\");\n\n//////////////////////////////////////////////////////////////////////\n// From amsopn.sty\ndefineMacro(\"\\\\injlim\", \"\\\\DOTSB\\\\operatorname*{inj\\\\,lim}\");\ndefineMacro(\"\\\\projlim\", \"\\\\DOTSB\\\\operatorname*{proj\\\\,lim}\");\ndefineMacro(\"\\\\varlimsup\", \"\\\\DOTSB\\\\operatorname*{\\\\overline{\\\\text{lim}}}\");\ndefineMacro(\"\\\\varliminf\", \"\\\\DOTSB\\\\operatorname*{\\\\underline{\\\\text{lim}}}\");\ndefineMacro(\"\\\\varinjlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underrightarrow{\\\\text{lim}}}\");\ndefineMacro(\"\\\\varprojlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underleftarrow{\\\\text{lim}}}\");\n\ndefineMacro(\"\\\\centerdot\", \"{\\\\medspace\\\\rule{0.167em}{0.189em}\\\\medspace}\");\n\n//////////////////////////////////////////////////////////////////////\n// statmath.sty\n// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf\n\ndefineMacro(\"\\\\argmin\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,min}\");\ndefineMacro(\"\\\\argmax\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,max}\");\ndefineMacro(\"\\\\plim\", \"\\\\DOTSB\\\\operatorname*{plim}\");\n\n//////////////////////////////////////////////////////////////////////\n// MnSymbol.sty\n\ndefineMacro(\"\\\\leftmodels\", \"\\\\mathop{\\\\reflectbox{$\\\\models$}}\");\n\n//////////////////////////////////////////////////////////////////////\n// braket.sty\n// http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf\n\ndefineMacro(\"\\\\bra\", \"\\\\mathinner{\\\\langle{#1}|}\");\ndefineMacro(\"\\\\ket\", \"\\\\mathinner{|{#1}\\\\rangle}\");\ndefineMacro(\"\\\\braket\", \"\\\\mathinner{\\\\langle{#1}\\\\rangle}\");\ndefineMacro(\"\\\\Bra\", \"\\\\left\\\\langle#1\\\\right|\");\ndefineMacro(\"\\\\Ket\", \"\\\\left|#1\\\\right\\\\rangle\");\n// A helper for \\Braket and \\Set\nconst replaceVert = (argStr, match) => {\n  const ch = match[0] === \"|\" ? \"\\\\vert\" : \"\\\\Vert\";\n  const replaceStr = `}\\\\,\\\\middle${ch}\\\\,{`;\n  return argStr.slice(0, match.index) + replaceStr + argStr.slice(match.index + match[0].length)\n};\ndefineMacro(\"\\\\Braket\",  function(context) {\n  let argStr = recreateArgStr(context);\n  const regEx = /\\|\\||\\||\\\\\\|/g;\n  let match;\n  while ((match = regEx.exec(argStr)) !== null) {\n    argStr = replaceVert(argStr, match);\n  }\n  return \"\\\\left\\\\langle{\" + argStr + \"}\\\\right\\\\rangle\"\n});\ndefineMacro(\"\\\\Set\",  function(context) {\n  let argStr = recreateArgStr(context);\n  const match = /\\|\\||\\||\\\\\\|/.exec(argStr);\n  if (match) {\n    argStr = replaceVert(argStr, match);\n  }\n  return \"\\\\left\\\\{\\\\:{\" + argStr + \"}\\\\:\\\\right\\\\}\"\n});\ndefineMacro(\"\\\\set\",  function(context) {\n  const argStr = recreateArgStr(context);\n  return \"\\\\{{\" + argStr.replace(/\\|/, \"}\\\\mid{\") + \"}\\\\}\"\n});\n\n//////////////////////////////////////////////////////////////////////\n// actuarialangle.dtx\ndefineMacro(\"\\\\angln\", \"{\\\\angl n}\");\n\n//////////////////////////////////////////////////////////////////////\n// derivative.sty\ndefineMacro(\"\\\\odv\", \"\\\\@ifstar\\\\odv@next\\\\odv@numerator\");\ndefineMacro(\"\\\\odv@numerator\", \"\\\\frac{\\\\mathrm{d}#1}{\\\\mathrm{d}#2}\");\ndefineMacro(\"\\\\odv@next\", \"\\\\frac{\\\\mathrm{d}}{\\\\mathrm{d}#2}#1\");\ndefineMacro(\"\\\\pdv\", \"\\\\@ifstar\\\\pdv@next\\\\pdv@numerator\");\n\nconst pdvHelper = args => {\n  const numerator = args[0][0].text;\n  const denoms = stringFromArg(args[1]).split(\",\");\n  const power = String(denoms.length);\n  const numOp = power === \"1\" ? \"\\\\partial\" : `\\\\partial^${power}`;\n  let denominator = \"\";\n  denoms.map(e => { denominator += \"\\\\partial \" + e.trim() +  \"\\\\,\";});\n  return [numerator, numOp,  denominator.replace(/\\\\,$/, \"\")]\n};\ndefineMacro(\"\\\\pdv@numerator\", function(context) {\n  const [numerator, numOp, denominator] = pdvHelper(context.consumeArgs(2));\n  return `\\\\frac{${numOp} ${numerator}}{${denominator}}`\n});\ndefineMacro(\"\\\\pdv@next\", function(context) {\n  const [numerator, numOp, denominator] = pdvHelper(context.consumeArgs(2));\n  return `\\\\frac{${numOp}}{${denominator}} ${numerator}`\n});\n\n//////////////////////////////////////////////////////////////////////\n// upgreek.dtx\ndefineMacro(\"\\\\upalpha\", \"\\\\up@greek{\\\\alpha}\");\ndefineMacro(\"\\\\upbeta\", \"\\\\up@greek{\\\\beta}\");\ndefineMacro(\"\\\\upgamma\", \"\\\\up@greek{\\\\gamma}\");\ndefineMacro(\"\\\\updelta\", \"\\\\up@greek{\\\\delta}\");\ndefineMacro(\"\\\\upepsilon\", \"\\\\up@greek{\\\\epsilon}\");\ndefineMacro(\"\\\\upzeta\", \"\\\\up@greek{\\\\zeta}\");\ndefineMacro(\"\\\\upeta\", \"\\\\up@greek{\\\\eta}\");\ndefineMacro(\"\\\\uptheta\", \"\\\\up@greek{\\\\theta}\");\ndefineMacro(\"\\\\upiota\", \"\\\\up@greek{\\\\iota}\");\ndefineMacro(\"\\\\upkappa\", \"\\\\up@greek{\\\\kappa}\");\ndefineMacro(\"\\\\uplambda\", \"\\\\up@greek{\\\\lambda}\");\ndefineMacro(\"\\\\upmu\", \"\\\\up@greek{\\\\mu}\");\ndefineMacro(\"\\\\upnu\", \"\\\\up@greek{\\\\nu}\");\ndefineMacro(\"\\\\upxi\", \"\\\\up@greek{\\\\xi}\");\ndefineMacro(\"\\\\upomicron\", \"\\\\up@greek{\\\\omicron}\");\ndefineMacro(\"\\\\uppi\", \"\\\\up@greek{\\\\pi}\");\ndefineMacro(\"\\\\upalpha\", \"\\\\up@greek{\\\\alpha}\");\ndefineMacro(\"\\\\uprho\", \"\\\\up@greek{\\\\rho}\");\ndefineMacro(\"\\\\upsigma\", \"\\\\up@greek{\\\\sigma}\");\ndefineMacro(\"\\\\uptau\", \"\\\\up@greek{\\\\tau}\");\ndefineMacro(\"\\\\upupsilon\", \"\\\\up@greek{\\\\upsilon}\");\ndefineMacro(\"\\\\upphi\", \"\\\\up@greek{\\\\phi}\");\ndefineMacro(\"\\\\upchi\", \"\\\\up@greek{\\\\chi}\");\ndefineMacro(\"\\\\uppsi\", \"\\\\up@greek{\\\\psi}\");\ndefineMacro(\"\\\\upomega\", \"\\\\up@greek{\\\\omega}\");\n\n//////////////////////////////////////////////////////////////////////\n// cmll package\ndefineMacro(\"\\\\invamp\", '\\\\mathbin{\\\\char\"214b}');\ndefineMacro(\"\\\\parr\", '\\\\mathbin{\\\\char\"214b}');\ndefineMacro(\"\\\\upand\", '\\\\mathbin{\\\\char\"214b}'); // STIX package\ndefineMacro(\"\\\\with\", '\\\\mathbin{\\\\char\"26}');\ndefineMacro(\"\\\\multimapinv\", '\\\\mathrel{\\\\char\"27dc}');\ndefineMacro(\"\\\\multimapboth\", '\\\\mathrel{\\\\char\"29df}');\ndefineMacro(\"\\\\scoh\", '{\\\\mkern5mu\\\\char\"2322\\\\mkern5mu}');\ndefineMacro(\"\\\\sincoh\", '{\\\\mkern5mu\\\\char\"2323\\\\mkern5mu}');\ndefineMacro(\"\\\\coh\", `{\\\\mkern5mu\\\\rule{}{0.7em}\\\\mathrlap{\\\\smash{\\\\raise2mu{\\\\char\"2322}}}\n{\\\\smash{\\\\lower4mu{\\\\char\"2323}}}\\\\mkern5mu}`);\ndefineMacro(\"\\\\incoh\", `{\\\\mkern5mu\\\\rule{}{0.7em}\\\\mathrlap{\\\\smash{\\\\raise2mu{\\\\char\"2323}}}\n{\\\\smash{\\\\lower4mu{\\\\char\"2322}}}\\\\mkern5mu}`);\n\n\n//////////////////////////////////////////////////////////////////////\n// chemstyle package\ndefineMacro(\"\\\\standardstate\", \"\\\\text{\\\\tiny\\\\char`⦵}\");\n\n﻿/* eslint-disable */\n/* -*- Mode: JavaScript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/*************************************************************\n *\n *  Temml mhchem.js\n *\n *  This file implements a Temml version of mhchem version 3.3.0.\n *  It is adapted from MathJax/extensions/TeX/mhchem.js\n *  It differs from the MathJax version as follows:\n *    1. The interface is changed so that it can be called from Temml, not MathJax.\n *    2. \\rlap and \\llap are replaced with \\mathrlap and \\mathllap.\n *    3. The reaction arrow code is simplified. All reaction arrows are rendered\n *       using Temml extensible arrows instead of building non-extensible arrows.\n *    4. The ~bond forms are composed entirely of \\rule elements.\n *    5. Two dashes in _getBond are wrapped in braces to suppress spacing. i.e., {-}\n *    6. The electron dot uses \\textbullet instead of \\bullet.\n *    7. \\smash[T] has been removed. (WebKit hides anything inside \\smash{…})\n *\n *    This code, as other Temml code, is released under the MIT license.\n * \n * /*************************************************************\n *\n *  MathJax/extensions/TeX/mhchem.js\n *\n *  Implements the \\ce command for handling chemical formulas\n *  from the mhchem LaTeX package.\n *\n *  ---------------------------------------------------------------------\n *\n *  Copyright (c) 2011-2015 The MathJax Consortium\n *  Copyright (c) 2015-2018 Martin Hensel\n *\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */\n\n//\n// Coding Style\n//   - use '' for identifiers that can by minified/uglified\n//   - use \"\" for strings that need to stay untouched\n\n// version: \"3.3.0\" for MathJax and Temml\n\n\n// Add \\ce, \\pu, and \\tripleDash to the Temml macros.\n\ndefineMacro(\"\\\\ce\", function(context) {\n  return chemParse(context.consumeArgs(1)[0], \"ce\")\n});\n\ndefineMacro(\"\\\\pu\", function(context) {\n  return chemParse(context.consumeArgs(1)[0], \"pu\");\n});\n\n// Math fonts do not include glyphs for the ~ form of bonds. So we'll send path geometry\n// So we'll compose characters built from \\rule elements.\ndefineMacro(\"\\\\uniDash\", `{\\\\rule{0.672em}{0.06em}}`)\ndefineMacro(\"\\\\triDash\", `{\\\\rule{0.15em}{0.06em}\\\\kern2mu\\\\rule{0.15em}{0.06em}\\\\kern2mu\\\\rule{0.15em}{0.06em}}`)\ndefineMacro(\"\\\\tripleDash\", `\\\\kern0.075em\\\\raise0.25em{\\\\triDash}\\\\kern0.075em`)\ndefineMacro(\"\\\\tripleDashOverLine\", `\\\\kern0.075em\\\\mathrlap{\\\\raise0.125em{\\\\uniDash}}\\\\raise0.34em{\\\\triDash}\\\\kern0.075em`)\ndefineMacro(\"\\\\tripleDashOverDoubleLine\", `\\\\kern0.075em\\\\mathrlap{\\\\mathrlap{\\\\raise0.48em{\\\\triDash}}\\\\raise0.27em{\\\\uniDash}}{\\\\raise0.05em{\\\\uniDash}}\\\\kern0.075em`)\ndefineMacro(\"\\\\tripleDashBetweenDoubleLine\", `\\\\kern0.075em\\\\mathrlap{\\\\mathrlap{\\\\raise0.48em{\\\\uniDash}}\\\\raise0.27em{\\\\triDash}}{\\\\raise0.05em{\\\\uniDash}}\\\\kern0.075em`)\n\n  //\n  //  This is the main function for handing the \\ce and \\pu commands.\n  //  It takes the argument to \\ce or \\pu and returns the corresponding TeX string.\n  //\n\n  var chemParse = function (tokens, stateMachine) {\n    // Recreate the argument string from Temml's array of tokens.\n    var str = \"\";\n    var expectedLoc = tokens.length && tokens[tokens.length - 1].loc.start\n    for (var i = tokens.length - 1; i >= 0; i--) {\n      if(tokens[i].loc.start > expectedLoc) {\n        // context.consumeArgs has eaten a space.\n        str += \" \";\n        expectedLoc = tokens[i].loc.start;\n      }\n      str += tokens[i].text;\n      expectedLoc += tokens[i].text.length;\n    }\n    // Call the mhchem core parser.\n    var tex = texify.go(mhchemParser.go(str, stateMachine));\n    return tex;\n  };\n\n  //\n  // Core parser for mhchem syntax  (recursive)\n  //\n  /** @type {MhchemParser} */\n  var mhchemParser = {\n    //\n    // Parses mchem \\ce syntax\n    //\n    // Call like\n    //   go(\"H2O\");\n    //\n    go: function (input, stateMachine) {\n      if (!input) { return []; }\n      if (stateMachine === undefined) { stateMachine = 'ce'; }\n      var state = '0';\n\n      //\n      // String buffers for parsing:\n      //\n      // buffer.a == amount\n      // buffer.o == element\n      // buffer.b == left-side superscript\n      // buffer.p == left-side subscript\n      // buffer.q == right-side subscript\n      // buffer.d == right-side superscript\n      //\n      // buffer.r == arrow\n      // buffer.rdt == arrow, script above, type\n      // buffer.rd == arrow, script above, content\n      // buffer.rqt == arrow, script below, type\n      // buffer.rq == arrow, script below, content\n      //\n      // buffer.text_\n      // buffer.rm\n      // etc.\n      //\n      // buffer.parenthesisLevel == int, starting at 0\n      // buffer.sb == bool, space before\n      // buffer.beginsWithBond == bool\n      //\n      // These letters are also used as state names.\n      //\n      // Other states:\n      // 0 == begin of main part (arrow/operator unlikely)\n      // 1 == next entity\n      // 2 == next entity (arrow/operator unlikely)\n      // 3 == next atom\n      // c == macro\n      //\n      /** @type {Buffer} */\n      var buffer = {};\n      buffer['parenthesisLevel'] = 0;\n\n      input = input.replace(/\\n/g, \" \");\n      input = input.replace(/[\\u2212\\u2013\\u2014\\u2010]/g, \"-\");\n      input = input.replace(/[\\u2026]/g, \"...\");\n\n      //\n      // Looks through mhchemParser.transitions, to execute a matching action\n      // (recursive)\n      //\n      var lastInput;\n      var watchdog = 10;\n      /** @type {ParserOutput[]} */\n      var output = [];\n      while (true) {\n        if (lastInput !== input) {\n          watchdog = 10;\n          lastInput = input;\n        } else {\n          watchdog--;\n        }\n        //\n        // Find actions in transition table\n        //\n        var machine = mhchemParser.stateMachines[stateMachine];\n        var t = machine.transitions[state] || machine.transitions['*'];\n        iterateTransitions:\n        for (var i=0; i<t.length; i++) {\n          var matches = mhchemParser.patterns.match_(t[i].pattern, input);\n          if (matches) {\n            //\n            // Execute actions\n            //\n            var task = t[i].task;\n            for (var iA=0; iA<task.action_.length; iA++) {\n              var o;\n              //\n              // Find and execute action\n              //\n              if (machine.actions[task.action_[iA].type_]) {\n                o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n              } else if (mhchemParser.actions[task.action_[iA].type_]) {\n                o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n              } else {\n                throw [\"MhchemBugA\", \"mhchem bug A. Please report. (\" + task.action_[iA].type_ + \")\"];  // Trying to use non-existing action\n              }\n              //\n              // Add output\n              //\n              mhchemParser.concatArray(output, o);\n            }\n            //\n            // Set next state,\n            // Shorten input,\n            // Continue with next character\n            //   (= apply only one transition per position)\n            //\n            state = task.nextState || state;\n            if (input.length > 0) {\n              if (!task.revisit) {\n                input = matches.remainder;\n              }\n              if (!task.toContinue) {\n                break iterateTransitions;\n              }\n            } else {\n              return output;\n            }\n          }\n        }\n        //\n        // Prevent infinite loop\n        //\n        if (watchdog <= 0) {\n          throw [\"MhchemBugU\", \"mhchem bug U. Please report.\"];  // Unexpected character\n        }\n      }\n    },\n    concatArray: function (a, b) {\n      if (b) {\n        if (Array.isArray(b)) {\n          for (var iB=0; iB<b.length; iB++) {\n            a.push(b[iB]);\n          }\n        } else {\n          a.push(b);\n        }\n      }\n    },\n\n    patterns: {\n      //\n      // Matching patterns\n      // either regexps or function that return null or {match_:\"a\", remainder:\"bc\"}\n      //\n      patterns: {\n        // property names must not look like integers (\"2\") for correct property traversal order, later on\n        'empty': /^$/,\n        'else': /^./,\n        'else2': /^./,\n        'space': /^\\s/,\n        'space A': /^\\s(?=[A-Z\\\\$])/,\n        'space$': /^\\s$/,\n        'a-z': /^[a-z]/,\n        'x': /^x/,\n        'x$': /^x$/,\n        'i$': /^i$/,\n        'letters': /^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\n        '\\\\greek': /^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\n        'one lowercase latin letter $': /^(?:([a-z])(?:$|[^a-zA-Z]))$/,\n        '$one lowercase latin letter$ $': /^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\n        'one lowercase greek letter $': /^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,\n        'digits': /^[0-9]+/,\n        '-9.,9': /^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\n        '-9.,9 no missing 0': /^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\n        '(-)(9.,9)(e)(99)': function (input) {\n          var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);\n          if (m && m[0]) {\n            return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n          }\n          return null;\n        },\n        '(-)(9)^(-9)': function (input) {\n          var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);\n          if (m && m[0]) {\n            return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n          }\n          return null;\n        },\n        'state of aggregation $': function (input) {  // ... or crystal system\n          var a = mhchemParser.patterns.findObserveGroups(input, \"\", /^\\([a-z]{1,3}(?=[\\),])/, \")\", \"\");  // (aq), (aq,$\\infty$), (aq, sat)\n          if (a  &&  a.remainder.match(/^($|[\\s,;\\)\\]\\}])/)) { return a; }  //  AND end of 'phrase'\n          var m = input.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/);  // OR crystal system ($o$) (\\ca$c$)\n          if (m) {\n            return { match_: m[0], remainder: input.substr(m[0].length) };\n          }\n          return null;\n        },\n        '_{(state of aggregation)}$': /^_\\{(\\([a-z]{1,3}\\))\\}/,\n        '{[(': /^(?:\\\\\\{|\\[|\\()/,\n        ')]}': /^(?:\\)|\\]|\\\\\\})/,\n        ', ': /^[,;]\\s*/,\n        ',': /^[,;]/,\n        '.': /^[.]/,\n        '. ': /^([.\\u22C5\\u00B7\\u2022])\\s*/,\n        '...': /^\\.\\.\\.(?=$|[^.])/,\n        '* ': /^([*])\\s*/,\n        '^{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^{\", \"\", \"\", \"}\"); },\n        '^($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", \"$\", \"$\", \"\"); },\n        '^a': /^\\^([0-9]+|[^\\\\_])/,\n        '^\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n        '^\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n        '^\\\\x': /^\\^(\\\\[a-zA-Z]+)\\s*/,\n        '^(-1)': /^\\^(-?\\d+)/,\n        '\\'': /^'/,\n        '_{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_{\", \"\", \"\", \"}\"); },\n        '_($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", \"$\", \"$\", \"\"); },\n        '_9': /^_([+\\-]?[0-9]+|[^\\\\])/,\n        '_\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n        '_\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n        '_\\\\x': /^_(\\\\[a-zA-Z]+)\\s*/,\n        '^_': /^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\n        '{}': /^\\{\\}/,\n        '{...}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"{\", \"}\", \"\"); },\n        '{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"{\", \"\", \"\", \"}\"); },\n        '$...$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\"); },\n        '${(...)}$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"${\", \"\", \"\", \"}$\"); },\n        '$(...)$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"$\", \"\", \"\", \"$\"); },\n        '=<>': /^[=<>]/,\n        '#': /^[#\\u2261]/,\n        '+': /^\\+/,\n        '-$': /^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/,  // -space -, -; -] -/ -$ -state-of-aggregation\n        '-9': /^-(?=[0-9])/,\n        '- orbital overlap': /^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\n        '-': /^-/,\n        'pm-operator': /^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,\n        'operator': /^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,\n        'arrowUpDown': /^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\n        '\\\\bond{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\bond{\", \"\", \"\", \"}\"); },\n        '->': /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,\n        'CMT': /^[CMT](?=\\[)/,\n        '[(...)]': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"[\", \"\", \"\", \"]\"); },\n        '1st-level escape': /^(&|\\\\\\\\|\\\\hline)\\s*/,\n        '\\\\,': /^(?:\\\\[,\\ ;:])/,  // \\\\x - but output no space before\n        '\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n        '\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n        '\\\\ca': /^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\n        '\\\\x': /^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,\n        'orbital': /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/,  // only those with numbers in front, because the others will be formatted correctly anyway\n        'others': /^[\\/~|]/,\n        '\\\\frac{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\frac{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n        '\\\\overset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\overset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n        '\\\\underset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n        '\\\\underbrace{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underbrace{\", \"\", \"\", \"}_\", \"{\", \"\", \"\", \"}\"); },\n        '\\\\color{(...)}0': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\"); },\n        '\\\\color{(...)}{(...)}1': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n        '\\\\color(...){(...)}2': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color\", \"\\\\\", \"\", /^(?=\\{)/, \"{\", \"\", \"\", \"}\"); },\n        '\\\\ce{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\ce{\", \"\", \"\", \"}\"); },\n        'oxidation$': /^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\n        'd-oxidation$': /^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,  // 0 could be oxidation or charge\n        'roman numeral': /^[IVX]+/,\n        '1/2$': /^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,\n        'amount': function (input) {\n          var match;\n          // e.g. 2, 0.5, 1/2, -2, n/2, +;  $a$ could be added later in parsing\n          match = input.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/);\n          if (match) {\n            return { match_: match[0], remainder: input.substr(match[0].length) };\n          }\n          var a = mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\");\n          if (a) {  // e.g. $2n-1$, $-$\n            match = a.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/);\n            if (match) {\n              return { match_: match[0], remainder: input.substr(match[0].length) };\n            }\n          }\n          return null;\n        },\n        'amount2': function (input) { return this['amount'](input); },\n        '(KV letters),': /^(?:[A-Z][a-z]{0,2}|i)(?=,)/,\n        'formula$': function (input) {\n          if (input.match(/^\\([a-z]+\\)$/)) { return null; }  // state of aggregation = no formula\n          var match = input.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);\n          if (match) {\n            return { match_: match[0], remainder: input.substr(match[0].length) };\n          }\n          return null;\n        },\n        'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\n        '/': /^\\s*(\\/)\\s*/,\n        '//': /^\\s*(\\/\\/)\\s*/,\n        '*': /^\\s*[*.]\\s*/\n      },\n      findObserveGroups: function (input, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine) {\n        /** @type {{(input: string, pattern: string | RegExp): string | string[] | null;}} */\n        var _match = function (input, pattern) {\n          if (typeof pattern === \"string\") {\n            if (input.indexOf(pattern) !== 0) { return null; }\n            return pattern;\n          } else {\n            var match = input.match(pattern);\n            if (!match) { return null; }\n            return match[0];\n          }\n        };\n        /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */\n        var _findObserveGroups = function (input, i, endChars) {\n          var braces = 0;\n          while (i < input.length) {\n            var a = input.charAt(i);\n            var match = _match(input.substr(i), endChars);\n            if (match !== null  &&  braces === 0) {\n              return { endMatchBegin: i, endMatchEnd: i + match.length };\n            } else if (a === \"{\") {\n              braces++;\n            } else if (a === \"}\") {\n              if (braces === 0) {\n                throw [\"ExtraCloseMissingOpen\", \"Extra close brace or missing open brace\"];\n              } else {\n                braces--;\n              }\n            }\n            i++;\n          }\n          if (braces > 0) {\n            return null;\n          }\n          return null;\n        };\n        var match = _match(input, begExcl);\n        if (match === null) { return null; }\n        input = input.substr(match.length);\n        match = _match(input, begIncl);\n        if (match === null) { return null; }\n        var e = _findObserveGroups(input, match.length, endIncl || endExcl);\n        if (e === null) { return null; }\n        var match1 = input.substring(0, (endIncl ? e.endMatchEnd : e.endMatchBegin));\n        if (!(beg2Excl || beg2Incl)) {\n          return {\n            match_: match1,\n            remainder: input.substr(e.endMatchEnd)\n          };\n        } else {\n          var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);\n          if (group2 === null) { return null; }\n          /** @type {string[]} */\n          var matchRet = [match1, group2.match_];\n          return {\n            match_: (combine ? matchRet.join(\"\") : matchRet),\n            remainder: group2.remainder\n          };\n        }\n      },\n\n      //\n      // Matching function\n      // e.g. match(\"a\", input) will look for the regexp called \"a\" and see if it matches\n      // returns null or {match_:\"a\", remainder:\"bc\"}\n      //\n      match_: function (m, input) {\n        var pattern = mhchemParser.patterns.patterns[m];\n        if (pattern === undefined) {\n          throw [\"MhchemBugP\", \"mhchem bug P. Please report. (\" + m + \")\"];  // Trying to use non-existing pattern\n        } else if (typeof pattern === \"function\") {\n          return mhchemParser.patterns.patterns[m](input);  // cannot use cached var pattern here, because some pattern functions need this===mhchemParser\n        } else {  // RegExp\n          var match = input.match(pattern);\n          if (match) {\n            var mm;\n            if (match[2]) {\n              mm = [ match[1], match[2] ];\n            } else if (match[1]) {\n              mm = match[1];\n            } else {\n              mm = match[0];\n            }\n            return { match_: mm, remainder: input.substr(match[0].length) };\n          }\n          return null;\n        }\n      }\n    },\n\n    //\n    // Generic state machine actions\n    //\n    actions: {\n      'a=': function (buffer, m) { buffer.a = (buffer.a || \"\") + m; },\n      'b=': function (buffer, m) { buffer.b = (buffer.b || \"\") + m; },\n      'p=': function (buffer, m) { buffer.p = (buffer.p || \"\") + m; },\n      'o=': function (buffer, m) { buffer.o = (buffer.o || \"\") + m; },\n      'q=': function (buffer, m) { buffer.q = (buffer.q || \"\") + m; },\n      'd=': function (buffer, m) { buffer.d = (buffer.d || \"\") + m; },\n      'rm=': function (buffer, m) { buffer.rm = (buffer.rm || \"\") + m; },\n      'text=': function (buffer, m) { buffer.text_ = (buffer.text_ || \"\") + m; },\n      'insert': function (buffer, m, a) { return { type_: a }; },\n      'insert+p1': function (buffer, m, a) { return { type_: a, p1: m }; },\n      'insert+p1+p2': function (buffer, m, a) { return { type_: a, p1: m[0], p2: m[1] }; },\n      'copy': function (buffer, m) { return m; },\n      'rm': function (buffer, m) { return { type_: 'rm', p1: m || \"\"}; },\n      'text': function (buffer, m) { return mhchemParser.go(m, 'text'); },\n      '{text}': function (buffer, m) {\n        var ret = [ \"{\" ];\n        mhchemParser.concatArray(ret, mhchemParser.go(m, 'text'));\n        ret.push(\"}\");\n        return ret;\n      },\n      'tex-math': function (buffer, m) { return mhchemParser.go(m, 'tex-math'); },\n      'tex-math tight': function (buffer, m) { return mhchemParser.go(m, 'tex-math tight'); },\n      'bond': function (buffer, m, k) { return { type_: 'bond', kind_: k || m }; },\n      'color0-output': function (buffer, m) { return { type_: 'color0', color: m[0] }; },\n      'ce': function (buffer, m) { return mhchemParser.go(m); },\n      '1/2': function (buffer, m) {\n        /** @type {ParserOutput[]} */\n        var ret = [];\n        if (m.match(/^[+\\-]/)) {\n          ret.push(m.substr(0, 1));\n          m = m.substr(1);\n        }\n        var n = m.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);\n        n[1] = n[1].replace(/\\$/g, \"\");\n        ret.push({ type_: 'frac', p1: n[1], p2: n[2] });\n        if (n[3]) {\n          n[3] = n[3].replace(/\\$/g, \"\");\n          ret.push({ type_: 'tex-math', p1: n[3] });\n        }\n        return ret;\n      },\n      '9,9': function (buffer, m) { return mhchemParser.go(m, '9,9'); }\n    },\n    //\n    // createTransitions\n    // convert  { 'letter': { 'state': { action_: 'output' } } }  to  { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] }\n    // with expansion of 'a|b' to 'a' and 'b' (at 2 places)\n    //\n    createTransitions: function (o) {\n      var pattern, state;\n      /** @type {string[]} */\n      var stateArray;\n      var i;\n      //\n      // 1. Collect all states\n      //\n      /** @type {Transitions} */\n      var transitions = {};\n      for (pattern in o) {\n        for (state in o[pattern]) {\n          stateArray = state.split(\"|\");\n          o[pattern][state].stateArray = stateArray;\n          for (i=0; i<stateArray.length; i++) {\n            transitions[stateArray[i]] = [];\n          }\n        }\n      }\n      //\n      // 2. Fill states\n      //\n      for (pattern in o) {\n        for (state in o[pattern]) {\n          stateArray = o[pattern][state].stateArray || [];\n          for (i=0; i<stateArray.length; i++) {\n            //\n            // 2a. Normalize actions into array:  'text=' ==> [{type_:'text='}]\n            // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).)\n            //\n            /** @type {any} */\n            var p = o[pattern][state];\n            if (p.action_) {\n              p.action_ = [].concat(p.action_);\n              for (var k=0; k<p.action_.length; k++) {\n                if (typeof p.action_[k] === \"string\") {\n                  p.action_[k] = { type_: p.action_[k] };\n                }\n              }\n            } else {\n              p.action_ = [];\n            }\n            //\n            // 2.b Multi-insert\n            //\n            var patternArray = pattern.split(\"|\");\n            for (var j=0; j<patternArray.length; j++) {\n              if (stateArray[i] === '*') {  // insert into all\n                for (var t in transitions) {\n                  transitions[t].push({ pattern: patternArray[j], task: p });\n                }\n              } else {\n                transitions[stateArray[i]].push({ pattern: patternArray[j], task: p });\n              }\n            }\n          }\n        }\n      }\n      return transitions;\n    },\n    stateMachines: {}\n  };\n\n  //\n  // Definition of state machines\n  //\n  mhchemParser.stateMachines = {\n    //\n    // \\ce state machines\n    //\n    //#region ce\n    'ce': {  // main parser\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        'else':  {\n          '0|1|2': { action_: 'beginsWithBond=false', revisit: true, toContinue: true } },\n        'oxidation$': {\n          '0': { action_: 'oxidation-output' } },\n        'CMT': {\n          'r': { action_: 'rdt=', nextState: 'rt' },\n          'rd': { action_: 'rqt=', nextState: 'rdt' } },\n        'arrowUpDown': {\n          '0|1|2|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '1' } },\n        'uprightEntities': {\n          '0|1|2': { action_: [ 'o=', 'output' ], nextState: '1' } },\n        'orbital': {\n          '0|1|2|3': { action_: 'o=', nextState: 'o' } },\n        '->': {\n          '0|1|2|3': { action_: 'r=', nextState: 'r' },\n          'a|as': { action_: [ 'output', 'r=' ], nextState: 'r' },\n          '*': { action_: [ 'output', 'r=' ], nextState: 'r' } },\n        '+': {\n          'o': { action_: 'd= kv',  nextState: 'd' },\n          'd|D': { action_: 'd=', nextState: 'd' },\n          'q': { action_: 'd=',  nextState: 'qd' },\n          'qd|qD': { action_: 'd=', nextState: 'qd' },\n          'dq': { action_: [ 'output', 'd=' ], nextState: 'd' },\n          '3': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n        'amount': {\n          '0|2': { action_: 'a=', nextState: 'a' } },\n        'pm-operator': {\n          '0|1|2|a|as': { action_: [ 'sb=false', 'output', { type_: 'operator', option: '\\\\pm' } ], nextState: '0' } },\n        'operator': {\n          '0|1|2|a|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n        '-$': {\n          'o|q': { action_: [ 'charge or bond', 'output' ],  nextState: 'qd' },\n          'd': { action_: 'd=', nextState: 'd' },\n          'D': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n          'q': { action_: 'd=',  nextState: 'qd' },\n          'qd': { action_: 'd=', nextState: 'qd' },\n          'qD|dq': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n        '-9': {\n          '3|o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '3' } },\n        '- orbital overlap': {\n          'o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n          'd': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' } },\n        '-': {\n          '0|1|2': { action_: [ { type_: 'output', option: 1 }, 'beginsWithBond=true', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n          '3': { action_: { type_: 'bond', option: \"-\" } },\n          'a': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n          'as': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"-\" } ], nextState: '3' },\n          'b': { action_: 'b=' },\n          'o': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n          'q': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n          'd|qd|dq': { action_: { type_: '- after o/d', option: true }, nextState: '2' },\n          'D|qD|p': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n        'amount2': {\n          '1|3': { action_: 'a=', nextState: 'a' } },\n        'letters': {\n          '0|1|2|3|a|as|b|p|bp|o': { action_: 'o=', nextState: 'o' },\n          'q|dq': { action_: ['output', 'o='], nextState: 'o' },\n          'd|D|qd|qD': { action_: 'o after d', nextState: 'o' } },\n        'digits': {\n          'o': { action_: 'q=', nextState: 'q' },\n          'd|D': { action_: 'q=', nextState: 'dq' },\n          'q': { action_: [ 'output', 'o=' ], nextState: 'o' },\n          'a': { action_: 'o=', nextState: 'o' } },\n        'space A': {\n          'b|p|bp': {} },\n        'space': {\n          'a': { nextState: 'as' },\n          '0': { action_: 'sb=false' },\n          '1|2': { action_: 'sb=true' },\n          'r|rt|rd|rdt|rdq': { action_: 'output', nextState: '0' },\n          '*': { action_: [ 'output', 'sb=true' ], nextState: '1'} },\n        '1st-level escape': {\n          '1|2': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ] },\n          '*': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ], nextState: '0' } },\n        '[(...)]': {\n          'r|rt': { action_: 'rd=', nextState: 'rd' },\n          'rd|rdt': { action_: 'rq=', nextState: 'rdq' } },\n        '...': {\n          'o|d|D|dq|qd|qD': { action_: [ 'output', { type_: 'bond', option: \"...\" } ], nextState: '3' },\n          '*': { action_: [ { type_: 'output', option: 1 }, { type_: 'insert', option: 'ellipsis' } ], nextState: '1' } },\n        '. |* ': {\n          '*': { action_: [ 'output', { type_: 'insert', option: 'addition compound' } ], nextState: '1' } },\n        'state of aggregation $': {\n          '*': { action_: [ 'output', 'state of aggregation' ], nextState: '1' } },\n        '{[(': {\n          'a|as|o': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n          '0|1|2|3': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n          '*': { action_: [ 'output', 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' } },\n        ')]}': {\n          '0|1|2|3|b|p|bp|o': { action_: [ 'o=', 'parenthesisLevel--' ], nextState: 'o' },\n          'a|as|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=', 'parenthesisLevel--' ], nextState: 'o' } },\n        ', ': {\n          '*': { action_: [ 'output', 'comma' ], nextState: '0' } },\n        '^_': {  // ^ and _ without a sensible argument\n          '*': { } },\n        '^{(...)}|^($...$)': {\n          '0|1|2|as': { action_: 'b=', nextState: 'b' },\n          'p': { action_: 'b=', nextState: 'bp' },\n          '3|o': { action_: 'd= kv', nextState: 'D' },\n          'q': { action_: 'd=', nextState: 'qD' },\n          'd|D|qd|qD|dq': { action_: [ 'output', 'd=' ], nextState: 'D' } },\n        '^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|\\'': {\n          '0|1|2|as': { action_: 'b=', nextState: 'b' },\n          'p': { action_: 'b=', nextState: 'bp' },\n          '3|o': { action_: 'd= kv', nextState: 'd' },\n          'q': { action_: 'd=', nextState: 'qd' },\n          'd|qd|D|qD': { action_: 'd=' },\n          'dq': { action_: [ 'output', 'd=' ], nextState: 'd' } },\n        '_{(state of aggregation)}$': {\n          'd|D|q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n        '_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x': {\n          '0|1|2|as': { action_: 'p=', nextState: 'p' },\n          'b': { action_: 'p=', nextState: 'bp' },\n          '3|o': { action_: 'q=', nextState: 'q' },\n          'd|D': { action_: 'q=', nextState: 'dq' },\n          'q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n        '=<>': {\n          '0|1|2|3|a|as|o|q|d|D|qd|qD|dq': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: '3' } },\n        '#': {\n          '0|1|2|3|a|as|o': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"#\" } ], nextState: '3' } },\n        '{}': {\n          '*': { action_: { type_: 'output', option: 1 },  nextState: '1' } },\n        '{...}': {\n          '0|1|2|3|a|as|b|p|bp': { action_: 'o=', nextState: 'o' },\n          'o|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n        '$...$': {\n          'a': { action_: 'a=' },  // 2$n$\n          '0|1|2|3|as|b|p|bp|o': { action_: 'o=', nextState: 'o' },  // not 'amount'\n          'as|o': { action_: 'o=' },\n          'q|d|D|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n        '\\\\bond{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: \"3\" } },\n        '\\\\frac{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 1 }, 'frac-output' ], nextState: '3' } },\n        '\\\\overset{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'overset-output' ], nextState: '3' } },\n        '\\\\underset{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'underset-output' ], nextState: '3' } },\n        '\\\\underbrace{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'underbrace-output' ], nextState: '3' } },\n        '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'color-output' ], nextState: '3' } },\n        '\\\\color{(...)}0': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'color0-output' ] } },\n        '\\\\ce{(...)}': {\n          '*': { action_: [ { type_: 'output', option: 2 }, 'ce' ], nextState: '3' } },\n        '\\\\,': {\n          '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '1' } },\n        '\\\\x{}{}|\\\\x{}|\\\\x': {\n          '0|1|2|3|a|as|b|p|bp|o|c0': { action_: [ 'o=', 'output' ], nextState: '3' },\n          '*': { action_: ['output', 'o=', 'output' ], nextState: '3' } },\n        'others': {\n          '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '3' } },\n        'else2': {\n          'a': { action_: 'a to o', nextState: 'o', revisit: true },\n          'as': { action_: [ 'output', 'sb=true' ], nextState: '1', revisit: true },\n          'r|rt|rd|rdt|rdq': { action_: [ 'output' ], nextState: '0', revisit: true },\n          '*': { action_: [ 'output', 'copy' ], nextState: '3' } }\n      }),\n      actions: {\n        'o after d': function (buffer, m) {\n          var ret;\n          if ((buffer.d || \"\").match(/^[0-9]+$/)) {\n            var tmp = buffer.d;\n            buffer.d = undefined;\n            ret = this['output'](buffer);\n            buffer.b = tmp;\n          } else {\n            ret = this['output'](buffer);\n          }\n          mhchemParser.actions['o='](buffer, m);\n          return ret;\n        },\n        'd= kv': function (buffer, m) {\n          buffer.d = m;\n          buffer.dType = 'kv';\n        },\n        'charge or bond': function (buffer, m) {\n          if (buffer['beginsWithBond']) {\n            /** @type {ParserOutput[]} */\n            var ret = [];\n            mhchemParser.concatArray(ret, this['output'](buffer));\n            mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n            return ret;\n          } else {\n            buffer.d = m;\n          }\n        },\n        '- after o/d': function (buffer, m, isAfterD) {\n          var c1 = mhchemParser.patterns.match_('orbital', buffer.o || \"\");\n          var c2 = mhchemParser.patterns.match_('one lowercase greek letter $', buffer.o || \"\");\n          var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || \"\");\n          var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || \"\");\n          var hyphenFollows =  m===\"-\" && ( c1 && c1.remainder===\"\"  ||  c2  ||  c3  ||  c4 );\n          if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) {\n            buffer.o = '$' + buffer.o + '$';\n          }\n          /** @type {ParserOutput[]} */\n          var ret = [];\n          if (hyphenFollows) {\n            mhchemParser.concatArray(ret, this['output'](buffer));\n            ret.push({ type_: 'hyphen' });\n          } else {\n            c1 = mhchemParser.patterns.match_('digits', buffer.d || \"\");\n            if (isAfterD && c1 && c1.remainder==='') {\n              mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m));\n              mhchemParser.concatArray(ret, this['output'](buffer));\n            } else {\n              mhchemParser.concatArray(ret, this['output'](buffer));\n              mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n            }\n          }\n          return ret;\n        },\n        'a to o': function (buffer) {\n          buffer.o = buffer.a;\n          buffer.a = undefined;\n        },\n        'sb=true': function (buffer) { buffer.sb = true; },\n        'sb=false': function (buffer) { buffer.sb = false; },\n        'beginsWithBond=true': function (buffer) { buffer['beginsWithBond'] = true; },\n        'beginsWithBond=false': function (buffer) { buffer['beginsWithBond'] = false; },\n        'parenthesisLevel++': function (buffer) { buffer['parenthesisLevel']++; },\n        'parenthesisLevel--': function (buffer) { buffer['parenthesisLevel']--; },\n        'state of aggregation': function (buffer, m) {\n          return { type_: 'state of aggregation', p1: mhchemParser.go(m, 'o') };\n        },\n        'comma': function (buffer, m) {\n          var a = m.replace(/\\s*$/, '');\n          var withSpace = (a !== m);\n          if (withSpace  &&  buffer['parenthesisLevel'] === 0) {\n            return { type_: 'comma enumeration L', p1: a };\n          } else {\n            return { type_: 'comma enumeration M', p1: a };\n          }\n        },\n        'output': function (buffer, m, entityFollows) {\n          // entityFollows:\n          //   undefined = if we have nothing else to output, also ignore the just read space (buffer.sb)\n          //   1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1)\n          //   2 = 1 + the entity can have an amount, so output a\\, instead of converting it to o (can only apply to states a|as)\n          /** @type {ParserOutput | ParserOutput[]} */\n          var ret;\n          if (!buffer.r) {\n            ret = [];\n            if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) {\n              //ret = [];\n            } else {\n              if (buffer.sb) {\n                ret.push({ type_: 'entitySkip' });\n              }\n              if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows!==2) {\n                buffer.o = buffer.a;\n                buffer.a = undefined;\n              } else if (!buffer.o && !buffer.q && !buffer.d && (buffer.b || buffer.p)) {\n                buffer.o = buffer.a;\n                buffer.d = buffer.b;\n                buffer.q = buffer.p;\n                buffer.a = buffer.b = buffer.p = undefined;\n              } else {\n                if (buffer.o && buffer.dType==='kv' && mhchemParser.patterns.match_('d-oxidation$', buffer.d || \"\")) {\n                  buffer.dType = 'oxidation';\n                } else if (buffer.o && buffer.dType==='kv' && !buffer.q) {\n                  buffer.dType = undefined;\n                }\n              }\n              ret.push({\n                type_: 'chemfive',\n                a: mhchemParser.go(buffer.a, 'a'),\n                b: mhchemParser.go(buffer.b, 'bd'),\n                p: mhchemParser.go(buffer.p, 'pq'),\n                o: mhchemParser.go(buffer.o, 'o'),\n                q: mhchemParser.go(buffer.q, 'pq'),\n                d: mhchemParser.go(buffer.d, (buffer.dType === 'oxidation' ? 'oxidation' : 'bd')),\n                dType: buffer.dType\n              });\n            }\n          } else {  // r\n            /** @type {ParserOutput[]} */\n            var rd;\n            if (buffer.rdt === 'M') {\n              rd = mhchemParser.go(buffer.rd, 'tex-math');\n            } else if (buffer.rdt === 'T') {\n              rd = [ { type_: 'text', p1: buffer.rd || \"\" } ];\n            } else {\n              rd = mhchemParser.go(buffer.rd);\n            }\n            /** @type {ParserOutput[]} */\n            var rq;\n            if (buffer.rqt === 'M') {\n              rq = mhchemParser.go(buffer.rq, 'tex-math');\n            } else if (buffer.rqt === 'T') {\n              rq = [ { type_: 'text', p1: buffer.rq || \"\"} ];\n            } else {\n              rq = mhchemParser.go(buffer.rq);\n            }\n            ret = {\n              type_: 'arrow',\n              r: buffer.r,\n              rd: rd,\n              rq: rq\n            };\n          }\n          for (var p in buffer) {\n            if (p !== 'parenthesisLevel'  &&  p !== 'beginsWithBond') {\n              delete buffer[p];\n            }\n          }\n          return ret;\n        },\n        'oxidation-output': function (buffer, m) {\n          var ret = [ \"{\" ];\n          mhchemParser.concatArray(ret, mhchemParser.go(m, 'oxidation'));\n          ret.push(\"}\");\n          return ret;\n        },\n        'frac-output': function (buffer, m) {\n          return { type_: 'frac-ce', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n        },\n        'overset-output': function (buffer, m) {\n          return { type_: 'overset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n        },\n        'underset-output': function (buffer, m) {\n          return { type_: 'underset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n        },\n        'underbrace-output': function (buffer, m) {\n          return { type_: 'underbrace', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n        },\n        'color-output': function (buffer, m) {\n          return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1]) };\n        },\n        'r=': function (buffer, m) { buffer.r = m; },\n        'rdt=': function (buffer, m) { buffer.rdt = m; },\n        'rd=': function (buffer, m) { buffer.rd = m; },\n        'rqt=': function (buffer, m) { buffer.rqt = m; },\n        'rq=': function (buffer, m) { buffer.rq = m; },\n        'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; }\n      }\n    },\n    'a': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        '1/2$': {\n          '0': { action_: '1/2' } },\n        'else': {\n          '0': { nextState: '1', revisit: true } },\n        '$(...)$': {\n          '*': { action_: 'tex-math tight', nextState: '1' } },\n        ',': {\n          '*': { action_: { type_: 'insert', option: 'commaDecimal' } } },\n        'else2': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {}\n    },\n    'o': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        '1/2$': {\n          '0': { action_: '1/2' } },\n        'else': {\n          '0': { nextState: '1', revisit: true } },\n        'letters': {\n          '*': { action_: 'rm' } },\n        '\\\\ca': {\n          '*': { action_: { type_: 'insert', option: 'circa' } } },\n        '\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: 'copy' } },\n        '${(...)}$|$(...)$': {\n          '*': { action_: 'tex-math' } },\n        '{(...)}': {\n          '*': { action_: '{text}' } },\n        'else2': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {}\n    },\n    'text': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        '{...}': {\n          '*': { action_: 'text=' } },\n        '${(...)}$|$(...)$': {\n          '*': { action_: 'tex-math' } },\n        '\\\\greek': {\n          '*': { action_: [ 'output', 'rm' ] } },\n        '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: [ 'output', 'copy' ] } },\n        'else': {\n          '*': { action_: 'text=' } }\n      }),\n      actions: {\n        'output': function (buffer) {\n          if (buffer.text_) {\n            /** @type {ParserOutput} */\n            var ret = { type_: 'text', p1: buffer.text_ };\n            for (var p in buffer) { delete buffer[p]; }\n            return ret;\n          }\n        }\n      }\n    },\n    'pq': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        'state of aggregation $': {\n          '*': { action_: 'state of aggregation' } },\n        'i$': {\n          '0': { nextState: '!f', revisit: true } },\n        '(KV letters),': {\n          '0': { action_: 'rm', nextState: '0' } },\n        'formula$': {\n          '0': { nextState: 'f', revisit: true } },\n        '1/2$': {\n          '0': { action_: '1/2' } },\n        'else': {\n          '0': { nextState: '!f', revisit: true } },\n        '${(...)}$|$(...)$': {\n          '*': { action_: 'tex-math' } },\n        '{(...)}': {\n          '*': { action_: 'text' } },\n        'a-z': {\n          'f': { action_: 'tex-math' } },\n        'letters': {\n          '*': { action_: 'rm' } },\n        '-9.,9': {\n          '*': { action_: '9,9'  } },\n        ',': {\n          '*': { action_: { type_: 'insert+p1', option: 'comma enumeration S' } } },\n        '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n          '*': { action_: 'color-output' } },\n        '\\\\color{(...)}0': {\n          '*': { action_: 'color0-output' } },\n        '\\\\ce{(...)}': {\n          '*': { action_: 'ce' } },\n        '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: 'copy' } },\n        'else2': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {\n        'state of aggregation': function (buffer, m) {\n          return { type_: 'state of aggregation subscript', p1: mhchemParser.go(m, 'o') };\n        },\n        'color-output': function (buffer, m) {\n          return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'pq') };\n        }\n      }\n    },\n    'bd': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        'x$': {\n          '0': { nextState: '!f', revisit: true } },\n        'formula$': {\n          '0': { nextState: 'f', revisit: true } },\n        'else': {\n          '0': { nextState: '!f', revisit: true } },\n        '-9.,9 no missing 0': {\n          '*': { action_: '9,9' } },\n        '.': {\n          '*': { action_: { type_: 'insert', option: 'electron dot' } } },\n        'a-z': {\n          'f': { action_: 'tex-math' } },\n        'x': {\n          '*': { action_: { type_: 'insert', option: 'KV x' } } },\n        'letters': {\n          '*': { action_: 'rm' } },\n        '\\'': {\n          '*': { action_: { type_: 'insert', option: 'prime' } } },\n        '${(...)}$|$(...)$': {\n          '*': { action_: 'tex-math' } },\n        '{(...)}': {\n          '*': { action_: 'text' } },\n        '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n          '*': { action_: 'color-output' } },\n        '\\\\color{(...)}0': {\n          '*': { action_: 'color0-output' } },\n        '\\\\ce{(...)}': {\n          '*': { action_: 'ce' } },\n        '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: 'copy' } },\n        'else2': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {\n        'color-output': function (buffer, m) {\n          return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'bd') };\n        }\n      }\n    },\n    'oxidation': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        'roman numeral': {\n          '*': { action_: 'roman-numeral' } },\n        '${(...)}$|$(...)$': {\n          '*': { action_: 'tex-math' } },\n        'else': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {\n        'roman-numeral': function (buffer, m) { return { type_: 'roman numeral', p1: m || \"\" }; }\n      }\n    },\n    'tex-math': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        '\\\\ce{(...)}': {\n          '*': { action_: [ 'output', 'ce' ] } },\n        '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: 'o=' } },\n        'else': {\n          '*': { action_: 'o=' } }\n      }),\n      actions: {\n        'output': function (buffer) {\n          if (buffer.o) {\n            /** @type {ParserOutput} */\n            var ret = { type_: 'tex-math', p1: buffer.o };\n            for (var p in buffer) { delete buffer[p]; }\n            return ret;\n          }\n        }\n      }\n    },\n    'tex-math tight': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        '\\\\ce{(...)}': {\n          '*': { action_: [ 'output', 'ce' ] } },\n        '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n          '*': { action_: 'o=' } },\n        '-|+': {\n          '*': { action_: 'tight operator' } },\n        'else': {\n          '*': { action_: 'o=' } }\n      }),\n      actions: {\n        'tight operator': function (buffer, m) { buffer.o = (buffer.o || \"\") + \"{\"+m+\"}\"; },\n        'output': function (buffer) {\n          if (buffer.o) {\n            /** @type {ParserOutput} */\n            var ret = { type_: 'tex-math', p1: buffer.o };\n            for (var p in buffer) { delete buffer[p]; }\n            return ret;\n          }\n        }\n      }\n    },\n    '9,9': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': {} },\n        ',': {\n          '*': { action_: 'comma' } },\n        'else': {\n          '*': { action_: 'copy' } }\n      }),\n      actions: {\n        'comma': function () { return { type_: 'commaDecimal' }; }\n      }\n    },\n    //#endregion\n    //\n    // \\pu state machines\n    //\n    //#region pu\n    'pu': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        'space$': {\n          '*': { action_: [ 'output', 'space' ] } },\n        '{[(|)]}': {\n          '0|a': { action_: 'copy' } },\n        '(-)(9)^(-9)': {\n          '0': { action_: 'number^', nextState: 'a' } },\n        '(-)(9.,9)(e)(99)': {\n          '0': { action_: 'enumber', nextState: 'a' } },\n        'space': {\n          '0|a': {} },\n        'pm-operator': {\n          '0|a': { action_: { type_: 'operator', option: '\\\\pm' }, nextState: '0' } },\n        'operator': {\n          '0|a': { action_: 'copy', nextState: '0' } },\n        '//': {\n          'd': { action_: 'o=', nextState: '/' } },\n        '/': {\n          'd': { action_: 'o=', nextState: '/' } },\n        '{...}|else': {\n          '0|d': { action_: 'd=', nextState: 'd' },\n          'a': { action_: [ 'space', 'd=' ], nextState: 'd' },\n          '/|q': { action_: 'q=', nextState: 'q' } }\n      }),\n      actions: {\n        'enumber': function (buffer, m) {\n          /** @type {ParserOutput[]} */\n          var ret = [];\n          if (m[0] === \"+-\"  ||  m[0] === \"+/-\") {\n            ret.push(\"\\\\pm \");\n          } else if (m[0]) {\n            ret.push(m[0]);\n          }\n          if (m[1]) {\n            mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n            if (m[2]) {\n              if (m[2].match(/[,.]/)) {\n                mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9'));\n              } else {\n                ret.push(m[2]);\n              }\n            }\n            m[3] = m[4] || m[3];\n            if (m[3]) {\n              m[3] = m[3].trim();\n              if (m[3] === \"e\"  ||  m[3].substr(0, 1) === \"*\") {\n                ret.push({ type_: 'cdot' });\n              } else {\n                ret.push({ type_: 'times' });\n              }\n            }\n          }\n          if (m[3]) {\n            ret.push(\"10^{\"+m[5]+\"}\");\n          }\n          return ret;\n        },\n        'number^': function (buffer, m) {\n          /** @type {ParserOutput[]} */\n          var ret = [];\n          if (m[0] === \"+-\"  ||  m[0] === \"+/-\") {\n            ret.push(\"\\\\pm \");\n          } else if (m[0]) {\n            ret.push(m[0]);\n          }\n          mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n          ret.push(\"^{\"+m[2]+\"}\");\n          return ret;\n        },\n        'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; },\n        'space': function () { return { type_: 'pu-space-1' }; },\n        'output': function (buffer) {\n          /** @type {ParserOutput | ParserOutput[]} */\n          var ret;\n          var md = mhchemParser.patterns.match_('{(...)}', buffer.d || \"\");\n          if (md  &&  md.remainder === '') { buffer.d = md.match_; }\n          var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || \"\");\n          if (mq  &&  mq.remainder === '') { buffer.q = mq.match_; }\n          if (buffer.d) {\n            buffer.d = buffer.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n            buffer.d = buffer.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n          }\n          if (buffer.q) {  // fraction\n            buffer.q = buffer.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n            buffer.q = buffer.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n            var b5 = {\n              d: mhchemParser.go(buffer.d, 'pu'),\n              q: mhchemParser.go(buffer.q, 'pu')\n            };\n            if (buffer.o === '//') {\n              ret = { type_: 'pu-frac', p1: b5.d, p2: b5.q };\n            } else {\n              ret = b5.d;\n              if (b5.d.length > 1  ||  b5.q.length > 1) {\n                ret.push({ type_: ' / ' });\n              } else {\n                ret.push({ type_: '/' });\n              }\n              mhchemParser.concatArray(ret, b5.q);\n            }\n          } else {  // no fraction\n            ret = mhchemParser.go(buffer.d, 'pu-2');\n          }\n          for (var p in buffer) { delete buffer[p]; }\n          return ret;\n        }\n      }\n    },\n    'pu-2': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '*': { action_: 'output' } },\n        '*': {\n          '*': { action_: [ 'output', 'cdot' ], nextState: '0' } },\n        '\\\\x': {\n          '*': { action_: 'rm=' } },\n        'space': {\n          '*': { action_: [ 'output', 'space' ], nextState: '0' } },\n        '^{(...)}|^(-1)': {\n          '1': { action_: '^(-1)' } },\n        '-9.,9': {\n          '0': { action_: 'rm=', nextState: '0' },\n          '1': { action_: '^(-1)', nextState: '0' } },\n        '{...}|else': {\n          '*': { action_: 'rm=', nextState: '1' } }\n      }),\n      actions: {\n        'cdot': function () { return { type_: 'tight cdot' }; },\n        '^(-1)': function (buffer, m) { buffer.rm += \"^{\"+m+\"}\"; },\n        'space': function () { return { type_: 'pu-space-2' }; },\n        'output': function (buffer) {\n          /** @type {ParserOutput | ParserOutput[]} */\n          var ret = [];\n          if (buffer.rm) {\n            var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || \"\");\n            if (mrm  &&  mrm.remainder === '') {\n              ret = mhchemParser.go(mrm.match_, 'pu');\n            } else {\n              ret = { type_: 'rm', p1: buffer.rm };\n            }\n          }\n          for (var p in buffer) { delete buffer[p]; }\n          return ret;\n        }\n      }\n    },\n    'pu-9,9': {\n      transitions: mhchemParser.createTransitions({\n        'empty': {\n          '0': { action_: 'output-0' },\n          'o': { action_: 'output-o' } },\n        ',': {\n          '0': { action_: [ 'output-0', 'comma' ], nextState: 'o' } },\n        '.': {\n          '0': { action_: [ 'output-0', 'copy' ], nextState: 'o' } },\n        'else': {\n          '*': { action_: 'text=' } }\n      }),\n      actions: {\n        'comma': function () { return { type_: 'commaDecimal' }; },\n        'output-0': function (buffer) {\n          /** @type {ParserOutput[]} */\n          var ret = [];\n          buffer.text_ = buffer.text_ || \"\";\n          if (buffer.text_.length > 4) {\n            var a = buffer.text_.length % 3;\n            if (a === 0) { a = 3; }\n            for (var i=buffer.text_.length-3; i>0; i-=3) {\n              ret.push(buffer.text_.substr(i, 3));\n              ret.push({ type_: '1000 separator' });\n            }\n            ret.push(buffer.text_.substr(0, a));\n            ret.reverse();\n          } else {\n            ret.push(buffer.text_);\n          }\n          for (var p in buffer) { delete buffer[p]; }\n          return ret;\n        },\n        'output-o': function (buffer) {\n          /** @type {ParserOutput[]} */\n          var ret = [];\n          buffer.text_ = buffer.text_ || \"\";\n          if (buffer.text_.length > 4) {\n            var a = buffer.text_.length - 3;\n            for (var i=0; i<a; i+=3) {\n              ret.push(buffer.text_.substr(i, 3));\n              ret.push({ type_: '1000 separator' });\n            }\n            ret.push(buffer.text_.substr(i));\n          } else {\n            ret.push(buffer.text_);\n          }\n          for (var p in buffer) { delete buffer[p]; }\n          return ret;\n        }\n      }\n    }\n    //#endregion\n  };\n\n  //\n  // texify: Take MhchemParser output and convert it to TeX\n  //\n  /** @type {Texify} */\n  var texify = {\n    go: function (input, isInner) {  // (recursive, max 4 levels)\n      if (!input) { return \"\"; }\n      var res = \"\";\n      var cee = false;\n      for (var i=0; i < input.length; i++) {\n        var inputi = input[i];\n        if (typeof inputi === \"string\") {\n          res += inputi;\n        } else {\n          res += texify._go2(inputi);\n          if (inputi.type_ === '1st-level escape') { cee = true; }\n        }\n      }\n      if (!isInner && !cee && res) {\n        res = \"{\" + res + \"}\";\n      }\n      return res;\n    },\n    _goInner: function (input) {\n      if (!input) { return input; }\n      return texify.go(input, true);\n    },\n    _go2: function (buf) {\n      /** @type {undefined | string} */\n      var res;\n      switch (buf.type_) {\n        case 'chemfive':\n          res = \"\";\n          var b5 = {\n            a: texify._goInner(buf.a),\n            b: texify._goInner(buf.b),\n            p: texify._goInner(buf.p),\n            o: texify._goInner(buf.o),\n            q: texify._goInner(buf.q),\n            d: texify._goInner(buf.d)\n          };\n          //\n          // a\n          //\n          if (b5.a) {\n            if (b5.a.match(/^[+\\-]/)) { b5.a = \"{\"+b5.a+\"}\"; }\n            res += b5.a + \"\\\\,\";\n          }\n          //\n          // b and p\n          //\n          if (b5.b || b5.p) {\n            res += \"{\\\\vphantom{X}}\";\n            res += \"^{\\\\hphantom{\"+(b5.b||\"\")+\"}}_{\\\\hphantom{\"+(b5.p||\"\")+\"}}\";\n            res += \"{\\\\vphantom{X}}\";\n            // In the next two lines, I've removed \\smash[t] (ron)\n            // TODO: Revert \\smash[t] when WebKit properly renders <mpadded> w/height=\"0\"\n            //res += \"^{\\\\smash[t]{\\\\vphantom{2}}\\\\mathllap{\"+(b5.b||\"\")+\"}}\";\n            res += \"^{\\\\vphantom{2}\\\\mathllap{\"+(b5.b||\"\")+\"}}\";\n            //res += \"_{\\\\vphantom{2}\\\\mathllap{\\\\smash[t]{\"+(b5.p||\"\")+\"}}}\";\n            res += \"_{\\\\vphantom{2}\\\\mathllap{\"+(b5.p||\"\")+\"}}\";\n          }\n          //\n          // o\n          //\n          if (b5.o) {\n            if (b5.o.match(/^[+\\-]/)) { b5.o = \"{\"+b5.o+\"}\"; }\n            res += b5.o;\n          }\n          //\n          // q and d\n          //\n          if (buf.dType === 'kv') {\n            if (b5.d || b5.q) {\n              res += \"{\\\\vphantom{X}}\";\n            }\n            if (b5.d) {\n              res += \"^{\"+b5.d+\"}\";\n            }\n            if (b5.q) {\n              // In the next line, I've removed \\smash[t] (ron)\n              // TODO: Revert \\smash[t] when WebKit properly renders <mpadded> w/height=\"0\"\n              //res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n              res += \"_{\"+b5.q+\"}\";\n            }\n          } else if (buf.dType === 'oxidation') {\n            if (b5.d) {\n              res += \"{\\\\vphantom{X}}\";\n              res += \"^{\"+b5.d+\"}\";\n            }\n            if (b5.q) {\n              // A Firefox bug adds a bogus depth to <mphantom>, so we change \\vphantom{X} to {}\n              // TODO: Reinstate \\vphantom{X} when the Firefox bug is fixed.\n//              res += \"{\\\\vphantom{X}}\";\n              res += \"{{}}\";\n              // In the next line, I've removed \\smash[t] (ron)\n              // TODO: Revert \\smash[t] when WebKit properly renders <mpadded> w/height=\"0\"\n              //res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n              res += \"_{\"+b5.q+\"}\";\n            }\n          } else {\n            if (b5.q) {\n              // TODO: Reinstate \\vphantom{X} when the Firefox bug is fixed.\n//              res += \"{\\\\vphantom{X}}\";\n              res += \"{{}}\";\n              // In the next line, I've removed \\smash[t] (ron)\n              // TODO: Revert \\smash[t] when WebKit properly renders <mpadded> w/height=\"0\"\n              //res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n              res += \"_{\"+b5.q+\"}\";\n            }\n            if (b5.d) {\n              // TODO: Reinstate \\vphantom{X} when the Firefox bug is fixed.\n//              res += \"{\\\\vphantom{X}}\";\n              res += \"{{}}\";\n              res += \"^{\"+b5.d+\"}\";\n            }\n          }\n          break;\n        case 'rm':\n          res = \"\\\\mathrm{\"+buf.p1+\"}\";\n          break;\n        case 'text':\n          if (buf.p1.match(/[\\^_]/)) {\n            buf.p1 = buf.p1.replace(\" \", \"~\").replace(\"-\", \"\\\\text{-}\");\n            res = \"\\\\mathrm{\"+buf.p1+\"}\";\n          } else {\n            res = \"\\\\text{\"+buf.p1+\"}\";\n          }\n          break;\n        case 'roman numeral':\n          res = \"\\\\mathrm{\"+buf.p1+\"}\";\n          break;\n        case 'state of aggregation':\n          res = \"\\\\mskip2mu \"+texify._goInner(buf.p1);\n          break;\n        case 'state of aggregation subscript':\n          res = \"\\\\mskip1mu \"+texify._goInner(buf.p1);\n          break;\n        case 'bond':\n          res = texify._getBond(buf.kind_);\n          if (!res) {\n            throw [\"MhchemErrorBond\", \"mhchem Error. Unknown bond type (\" + buf.kind_ + \")\"];\n          }\n          break;\n        case 'frac':\n          var c = \"\\\\frac{\" + buf.p1 + \"}{\" + buf.p2 + \"}\";\n          res = \"\\\\mathchoice{\\\\textstyle\"+c+\"}{\"+c+\"}{\"+c+\"}{\"+c+\"}\";\n          break;\n        case 'pu-frac':\n          var d = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n          res = \"\\\\mathchoice{\\\\textstyle\"+d+\"}{\"+d+\"}{\"+d+\"}{\"+d+\"}\";\n          break;\n        case 'tex-math':\n          res = buf.p1 + \" \";\n          break;\n        case 'frac-ce':\n          res = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n          break;\n        case 'overset':\n          res = \"\\\\overset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n          break;\n        case 'underset':\n          res = \"\\\\underset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n          break;\n        case 'underbrace':\n          res =  \"\\\\underbrace{\" + texify._goInner(buf.p1) + \"}_{\" + texify._goInner(buf.p2) + \"}\";\n          break;\n        case 'color':\n          res = \"{\\\\color{\" + buf.color1 + \"}{\" + texify._goInner(buf.color2) + \"}}\";\n          break;\n        case 'color0':\n          res = \"\\\\color{\" + buf.color + \"}\";\n          break;\n        case 'arrow':\n          var b6 = {\n            rd: texify._goInner(buf.rd),\n            rq: texify._goInner(buf.rq)\n          };\n          var arrow = texify._getArrow(buf.r);\n          if (b6.rq) { arrow += \"[{\\\\rm \" + b6.rq + \"}]\"; }\n          if (b6.rd) {\n            arrow += \"{\\\\rm \" + b6.rd + \"}\";\n          } else {\n            arrow += \"{}\";\n          }\n          res = arrow;\n          break;\n        case 'operator':\n          res = texify._getOperator(buf.kind_);\n          break;\n        case '1st-level escape':\n          res = buf.p1+\" \";  // &, \\\\\\\\, \\\\hlin\n          break;\n        case 'space':\n          res = \" \";\n          break;\n        case 'entitySkip':\n          res = \"~\";\n          break;\n        case 'pu-space-1':\n          res = \"~\";\n          break;\n        case 'pu-space-2':\n          res = \"\\\\mkern3mu \";\n          break;\n        case '1000 separator':\n          res = \"\\\\mkern2mu \";\n          break;\n        case 'commaDecimal':\n          res = \"{,}\";\n          break;\n          case 'comma enumeration L':\n          res = \"{\"+buf.p1+\"}\\\\mkern6mu \";\n          break;\n        case 'comma enumeration M':\n          res = \"{\"+buf.p1+\"}\\\\mkern3mu \";\n          break;\n        case 'comma enumeration S':\n          res = \"{\"+buf.p1+\"}\\\\mkern1mu \";\n          break;\n        case 'hyphen':\n          res = \"\\\\text{-}\";\n          break;\n        case 'addition compound':\n          res = \"\\\\,{\\\\cdot}\\\\,\";\n          break;\n        case 'electron dot':\n          res = \"\\\\mkern1mu \\\\text{\\\\textbullet}\\\\mkern1mu \";\n          break;\n        case 'KV x':\n          res = \"{\\\\times}\";\n          break;\n        case 'prime':\n          res = \"\\\\prime \";\n          break;\n        case 'cdot':\n          res = \"\\\\cdot \";\n          break;\n        case 'tight cdot':\n          res = \"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";\n          break;\n        case 'times':\n          res = \"\\\\times \";\n          break;\n        case 'circa':\n          res = \"{\\\\sim}\";\n          break;\n        case '^':\n          res = \"uparrow\";\n          break;\n        case 'v':\n          res = \"downarrow\";\n          break;\n        case 'ellipsis':\n          res = \"\\\\ldots \";\n          break;\n        case '/':\n          res = \"/\";\n          break;\n        case ' / ':\n          res = \"\\\\,/\\\\,\";\n          break;\n        default:\n          assertNever(buf);\n          throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];  // Missing texify rule or unknown MhchemParser output\n      }\n      assertString(res);\n      return res;\n    },\n    _getArrow: function (a) {\n      switch (a) {\n        case \"->\": return \"\\\\yields\";\n        case \"\\u2192\": return \"\\\\yields\";\n        case \"\\u27F6\": return \"\\\\yields\";\n        case \"<-\": return \"\\\\yieldsLeft\";\n        case \"<->\": return \"\\\\mesomerism\";\n        case \"<-->\": return \"\\\\yieldsLeftRight\";\n        case \"<=>\": return \"\\\\chemequilibrium\";\n        case \"\\u21CC\": return \"\\\\chemequilibrium\";\n        case \"<=>>\": return \"\\\\equilibriumRight\";\n        case \"<<=>\": return \"\\\\equilibriumLeft\";\n        default:\n          assertNever(a);\n          throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n      }\n    },\n    _getBond: function (a) {\n      switch (a) {\n        case \"-\": return \"{-}\";\n        case \"1\": return \"{-}\";\n        case \"=\": return \"{=}\";\n        case \"2\": return \"{=}\";\n        case \"#\": return \"{\\\\equiv}\";\n        case \"3\": return \"{\\\\equiv}\";\n        case \"~\": return \"{\\\\tripleDash}\";\n        case \"~-\": return \"{\\\\tripleDashOverLine}\";\n        case \"~=\": return \"{\\\\tripleDashOverDoubleLine}\";\n        case \"~--\": return \"{\\\\tripleDashOverDoubleLine}\";\n        case \"-~-\": return \"{\\\\tripleDashBetweenDoubleLine}\";\n        case \"...\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n        case \"....\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n        case \"->\": return \"{\\\\rightarrow}\";\n        case \"<-\": return \"{\\\\leftarrow}\";\n        case \"<\": return \"{<}\";\n        case \">\": return \"{>}\";\n        default:\n          assertNever(a);\n          throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n      }\n    },\n    _getOperator: function (a) {\n      switch (a) {\n        case \"+\": return \" {}+{} \";\n        case \"-\": return \" {}-{} \";\n        case \"=\": return \" {}={} \";\n        case \"<\": return \" {}<{} \";\n        case \">\": return \" {}>{} \";\n        case \"<<\": return \" {}\\\\ll{} \";\n        case \">>\": return \" {}\\\\gg{} \";\n        case \"\\\\pm\": return \" {}\\\\pm{} \";\n        case \"\\\\approx\": return \" {}\\\\approx{} \";\n        case \"$\\\\approx$\": return \" {}\\\\approx{} \";\n        case \"v\": return \" \\\\downarrow{} \";\n        case \"(v)\": return \" \\\\downarrow{} \";\n        case \"^\": return \" \\\\uparrow{} \";\n        case \"(^)\": return \" \\\\uparrow{} \";\n        default:\n          assertNever(a);\n          throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n      }\n    }\n  };\n\n  //\n  // Helpers for code analysis\n  // Will show type error at calling position\n  //\n  /** @param {number} a */\n  function assertNever(a) {}\n  /** @param {string} a */\n  function assertString(a) {}\n\n/* eslint-disable no-undef */\n\n//////////////////////////////////////////////////////////////////////\n// texvc.sty\n\n// The texvc package contains macros available in mediawiki pages.\n// We omit the functions deprecated at\n// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax\n\n// We also omit texvc's \\O, which conflicts with \\text{\\O}\n\ndefineMacro(\"\\\\darr\", \"\\\\downarrow\");\ndefineMacro(\"\\\\dArr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\Darr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\lang\", \"\\\\langle\");\ndefineMacro(\"\\\\rang\", \"\\\\rangle\");\ndefineMacro(\"\\\\uarr\", \"\\\\uparrow\");\ndefineMacro(\"\\\\uArr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\Uarr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\N\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\R\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Z\", \"\\\\mathbb{Z}\");\ndefineMacro(\"\\\\alef\", \"\\\\aleph\");\ndefineMacro(\"\\\\alefsym\", \"\\\\aleph\");\ndefineMacro(\"\\\\bull\", \"\\\\bullet\");\ndefineMacro(\"\\\\clubs\", \"\\\\clubsuit\");\ndefineMacro(\"\\\\cnums\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Complex\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Dagger\", \"\\\\ddagger\");\ndefineMacro(\"\\\\diamonds\", \"\\\\diamondsuit\");\ndefineMacro(\"\\\\empty\", \"\\\\emptyset\");\ndefineMacro(\"\\\\exist\", \"\\\\exists\");\ndefineMacro(\"\\\\harr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\hArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Harr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\hearts\", \"\\\\heartsuit\");\ndefineMacro(\"\\\\image\", \"\\\\Im\");\ndefineMacro(\"\\\\infin\", \"\\\\infty\");\ndefineMacro(\"\\\\isin\", \"\\\\in\");\ndefineMacro(\"\\\\larr\", \"\\\\leftarrow\");\ndefineMacro(\"\\\\lArr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\Larr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\lrarr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\lrArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Lrarr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\natnums\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\plusmn\", \"\\\\pm\");\ndefineMacro(\"\\\\rarr\", \"\\\\rightarrow\");\ndefineMacro(\"\\\\rArr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\Rarr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\real\", \"\\\\Re\");\ndefineMacro(\"\\\\reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\sdot\", \"\\\\cdot\");\ndefineMacro(\"\\\\sect\", \"\\\\S\");\ndefineMacro(\"\\\\spades\", \"\\\\spadesuit\");\ndefineMacro(\"\\\\sub\", \"\\\\subset\");\ndefineMacro(\"\\\\sube\", \"\\\\subseteq\");\ndefineMacro(\"\\\\supe\", \"\\\\supseteq\");\ndefineMacro(\"\\\\thetasym\", \"\\\\vartheta\");\ndefineMacro(\"\\\\weierp\", \"\\\\wp\");\n\n/* eslint-disable no-undef */\n\n/****************************************************\n *\n *  physics.js\n *\n *  Implements the Physics Package for LaTeX input.\n *\n *  ---------------------------------------------------------------------\n *\n *  The original version of this file is licensed as follows:\n *  Copyright (c) 2015-2016 Kolen Cheung <https://github.com/ickc/MathJax-third-party-extensions>.\n *\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n *\n *  ---------------------------------------------------------------------\n *\n *  This file has been revised from the original in the following ways:\n *  1. The interface is changed so that it can be called from Temml, not MathJax.\n *  2. \\Re and \\Im are not used, to avoid conflict with existing LaTeX letters.\n *\n *  This revision of the file is released under the MIT license.\n *  https://mit-license.org/\n */\ndefineMacro(\"\\\\quantity\", \"{\\\\left\\\\{ #1 \\\\right\\\\}}\");\ndefineMacro(\"\\\\qty\", \"{\\\\left\\\\{ #1 \\\\right\\\\}}\");\ndefineMacro(\"\\\\pqty\", \"{\\\\left( #1 \\\\right)}\");\ndefineMacro(\"\\\\bqty\", \"{\\\\left[ #1 \\\\right]}\");\ndefineMacro(\"\\\\vqty\", \"{\\\\left\\\\vert #1 \\\\right\\\\vert}\");\ndefineMacro(\"\\\\Bqty\", \"{\\\\left\\\\{ #1 \\\\right\\\\}}\");\ndefineMacro(\"\\\\absolutevalue\", \"{\\\\left\\\\vert #1 \\\\right\\\\vert}\");\ndefineMacro(\"\\\\abs\", \"{\\\\left\\\\vert #1 \\\\right\\\\vert}\");\ndefineMacro(\"\\\\norm\", \"{\\\\left\\\\Vert #1 \\\\right\\\\Vert}\");\ndefineMacro(\"\\\\evaluated\", \"{\\\\left.#1 \\\\right\\\\vert}\");\ndefineMacro(\"\\\\eval\", \"{\\\\left.#1 \\\\right\\\\vert}\");\ndefineMacro(\"\\\\order\", \"{\\\\mathcal{O} \\\\left( #1 \\\\right)}\");\ndefineMacro(\"\\\\commutator\", \"{\\\\left[ #1 , #2 \\\\right]}\");\ndefineMacro(\"\\\\comm\", \"{\\\\left[ #1 , #2 \\\\right]}\");\ndefineMacro(\"\\\\anticommutator\", \"{\\\\left\\\\{ #1 , #2 \\\\right\\\\}}\");\ndefineMacro(\"\\\\acomm\", \"{\\\\left\\\\{ #1 , #2 \\\\right\\\\}}\");\ndefineMacro(\"\\\\poissonbracket\", \"{\\\\left\\\\{ #1 , #2 \\\\right\\\\}}\");\ndefineMacro(\"\\\\pb\", \"{\\\\left\\\\{ #1 , #2 \\\\right\\\\}}\");\ndefineMacro(\"\\\\vectorbold\", \"{\\\\boldsymbol{ #1 }}\");\ndefineMacro(\"\\\\vb\", \"{\\\\boldsymbol{ #1 }}\");\ndefineMacro(\"\\\\vectorarrow\", \"{\\\\vec{\\\\boldsymbol{ #1 }}}\");\ndefineMacro(\"\\\\va\", \"{\\\\vec{\\\\boldsymbol{ #1 }}}\");\ndefineMacro(\"\\\\vectorunit\", \"{{\\\\boldsymbol{\\\\hat{ #1 }}}}\");\ndefineMacro(\"\\\\vu\", \"{{\\\\boldsymbol{\\\\hat{ #1 }}}}\");\ndefineMacro(\"\\\\dotproduct\", \"\\\\mathbin{\\\\boldsymbol\\\\cdot}\");\ndefineMacro(\"\\\\vdot\", \"{\\\\boldsymbol\\\\cdot}\");\ndefineMacro(\"\\\\crossproduct\", \"\\\\mathbin{\\\\boldsymbol\\\\times}\");\ndefineMacro(\"\\\\cross\", \"\\\\mathbin{\\\\boldsymbol\\\\times}\");\ndefineMacro(\"\\\\cp\", \"\\\\mathbin{\\\\boldsymbol\\\\times}\");\ndefineMacro(\"\\\\gradient\", \"{\\\\boldsymbol\\\\nabla}\");\ndefineMacro(\"\\\\grad\", \"{\\\\boldsymbol\\\\nabla}\");\ndefineMacro(\"\\\\divergence\", \"{\\\\grad\\\\vdot}\");\n//defineMacro(\"\\\\div\", \"{\\\\grad\\\\vdot}\"); Not included in Temml. Conflicts w/LaTeX \\div\ndefineMacro(\"\\\\curl\", \"{\\\\grad\\\\cross}\");\ndefineMacro(\"\\\\laplacian\", \"\\\\nabla^2\");\ndefineMacro(\"\\\\tr\", \"{\\\\operatorname{tr}}\");\ndefineMacro(\"\\\\Tr\", \"{\\\\operatorname{Tr}}\");\ndefineMacro(\"\\\\rank\", \"{\\\\operatorname{rank}}\");\ndefineMacro(\"\\\\erf\", \"{\\\\operatorname{erf}}\");\ndefineMacro(\"\\\\Res\", \"{\\\\operatorname{Res}}\");\ndefineMacro(\"\\\\principalvalue\", \"{\\\\mathcal{P}}\");\ndefineMacro(\"\\\\pv\", \"{\\\\mathcal{P}}\");\ndefineMacro(\"\\\\PV\", \"{\\\\operatorname{P.V.}}\");\n// Temml does not use the next two lines. They conflict with LaTeX letters.\n//defineMacro(\"\\\\Re\", \"{\\\\operatorname{Re} \\\\left\\\\{ #1 \\\\right\\\\}}\");\n//defineMacro(\"\\\\Im\", \"{\\\\operatorname{Im} \\\\left\\\\{ #1 \\\\right\\\\}}\");\ndefineMacro(\"\\\\qqtext\", \"{\\\\quad\\\\text{ #1 }\\\\quad}\");\ndefineMacro(\"\\\\qq\", \"{\\\\quad\\\\text{ #1 }\\\\quad}\");\ndefineMacro(\"\\\\qcomma\", \"{\\\\text{,}\\\\quad}\");\ndefineMacro(\"\\\\qc\", \"{\\\\text{,}\\\\quad}\");\ndefineMacro(\"\\\\qcc\", \"{\\\\quad\\\\text{c.c.}\\\\quad}\");\ndefineMacro(\"\\\\qif\", \"{\\\\quad\\\\text{if}\\\\quad}\");\ndefineMacro(\"\\\\qthen\", \"{\\\\quad\\\\text{then}\\\\quad}\");\ndefineMacro(\"\\\\qelse\", \"{\\\\quad\\\\text{else}\\\\quad}\");\ndefineMacro(\"\\\\qotherwise\", \"{\\\\quad\\\\text{otherwise}\\\\quad}\");\ndefineMacro(\"\\\\qunless\", \"{\\\\quad\\\\text{unless}\\\\quad}\");\ndefineMacro(\"\\\\qgiven\", \"{\\\\quad\\\\text{given}\\\\quad}\");\ndefineMacro(\"\\\\qusing\", \"{\\\\quad\\\\text{using}\\\\quad}\");\ndefineMacro(\"\\\\qassume\", \"{\\\\quad\\\\text{assume}\\\\quad}\");\ndefineMacro(\"\\\\qsince\", \"{\\\\quad\\\\text{since}\\\\quad}\");\ndefineMacro(\"\\\\qlet\", \"{\\\\quad\\\\text{let}\\\\quad}\");\ndefineMacro(\"\\\\qfor\", \"{\\\\quad\\\\text{for}\\\\quad}\");\ndefineMacro(\"\\\\qall\", \"{\\\\quad\\\\text{all}\\\\quad}\");\ndefineMacro(\"\\\\qeven\", \"{\\\\quad\\\\text{even}\\\\quad}\");\ndefineMacro(\"\\\\qodd\", \"{\\\\quad\\\\text{odd}\\\\quad}\");\ndefineMacro(\"\\\\qinteger\", \"{\\\\quad\\\\text{integer}\\\\quad}\");\ndefineMacro(\"\\\\qand\", \"{\\\\quad\\\\text{and}\\\\quad}\");\ndefineMacro(\"\\\\qor\", \"{\\\\quad\\\\text{or}\\\\quad}\");\ndefineMacro(\"\\\\qas\", \"{\\\\quad\\\\text{as}\\\\quad}\");\ndefineMacro(\"\\\\qin\", \"{\\\\quad\\\\text{in}\\\\quad}\");\ndefineMacro(\"\\\\differential\", \"{\\\\text{d}}\");\ndefineMacro(\"\\\\dd\", \"{\\\\text{d}}\");\ndefineMacro(\"\\\\derivative\", \"{\\\\frac{\\\\text{d}{ #1 }}{\\\\text{d}{ #2 }}}\");\ndefineMacro(\"\\\\dv\", \"{\\\\frac{\\\\text{d}{ #1 }}{\\\\text{d}{ #2 }}}\");\ndefineMacro(\"\\\\partialderivative\", \"{\\\\frac{\\\\partial{ #1 }}{\\\\partial{ #2 }}}\");\ndefineMacro(\"\\\\variation\", \"{\\\\delta}\");\ndefineMacro(\"\\\\var\", \"{\\\\delta}\");\ndefineMacro(\"\\\\functionalderivative\", \"{\\\\frac{\\\\delta{ #1 }}{\\\\delta{ #2 }}}\");\ndefineMacro(\"\\\\fdv\", \"{\\\\frac{\\\\delta{ #1 }}{\\\\delta{ #2 }}}\");\ndefineMacro(\"\\\\innerproduct\", \"{\\\\left\\\\langle {#1} \\\\mid { #2} \\\\right\\\\rangle}\");\ndefineMacro(\"\\\\outerproduct\",\n  \"{\\\\left\\\\vert { #1 } \\\\right\\\\rangle\\\\left\\\\langle { #2} \\\\right\\\\vert}\");\ndefineMacro(\"\\\\dyad\",\n  \"{\\\\left\\\\vert { #1 } \\\\right\\\\rangle\\\\left\\\\langle { #2} \\\\right\\\\vert}\");\ndefineMacro(\"\\\\ketbra\",\n  \"{\\\\left\\\\vert { #1 } \\\\right\\\\rangle\\\\left\\\\langle { #2} \\\\right\\\\vert}\");\ndefineMacro(\"\\\\op\",\n  \"{\\\\left\\\\vert { #1 } \\\\right\\\\rangle\\\\left\\\\langle { #2} \\\\right\\\\vert}\");\ndefineMacro(\"\\\\expectationvalue\", \"{\\\\left\\\\langle {#1 } \\\\right\\\\rangle}\");\ndefineMacro(\"\\\\expval\", \"{\\\\left\\\\langle {#1 } \\\\right\\\\rangle}\");\ndefineMacro(\"\\\\ev\", \"{\\\\left\\\\langle {#1 } \\\\right\\\\rangle}\");\ndefineMacro(\"\\\\matrixelement\",\n  \"{\\\\left\\\\langle{ #1 }\\\\right\\\\vert{ #2 }\\\\left\\\\vert{#3}\\\\right\\\\rangle}\");\ndefineMacro(\"\\\\matrixel\",\n  \"{\\\\left\\\\langle{ #1 }\\\\right\\\\vert{ #2 }\\\\left\\\\vert{#3}\\\\right\\\\rangle}\");\ndefineMacro(\"\\\\mel\",\n  \"{\\\\left\\\\langle{ #1 }\\\\right\\\\vert{ #2 }\\\\left\\\\vert{#3}\\\\right\\\\rangle}\");\n\n// Helper functions\nfunction getHLines(parser) {\n  // Return an array. The array length = number of hlines.\n  // Each element in the array tells if the line is dashed.\n  const hlineInfo = [];\n  parser.consumeSpaces();\n  let nxt = parser.fetch().text;\n  if (nxt === \"\\\\relax\") {\n    parser.consume();\n    parser.consumeSpaces();\n    nxt = parser.fetch().text;\n  }\n  while (nxt === \"\\\\hline\" || nxt === \"\\\\hdashline\") {\n    parser.consume();\n    hlineInfo.push(nxt === \"\\\\hdashline\");\n    parser.consumeSpaces();\n    nxt = parser.fetch().text;\n  }\n  return hlineInfo;\n}\n\nconst validateAmsEnvironmentContext = context => {\n  const settings = context.parser.settings;\n  if (!settings.displayMode) {\n    throw new ParseError(`{${context.envName}} can be used only in display mode.`);\n  }\n};\n\nconst sizeRegEx$1 = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/;\nconst arrayGaps = macros => {\n  let arraystretch = macros.get(\"\\\\arraystretch\");\n  if (typeof arraystretch !== \"string\") {\n    arraystretch = stringFromArg(arraystretch.tokens);\n  }\n  arraystretch = isNaN(arraystretch) ? null : Number(arraystretch);\n  let arraycolsepStr = macros.get(\"\\\\arraycolsep\");\n  if (typeof arraycolsepStr !== \"string\") {\n    arraycolsepStr = stringFromArg(arraycolsepStr.tokens);\n  }\n  const match = sizeRegEx$1.exec(arraycolsepStr);\n  const arraycolsep = match\n    ? { number: +(match[1] + match[2]), unit: match[3] }\n    : null;\n  return [arraystretch, arraycolsep]\n};\n\nconst checkCellForLabels = cell => {\n  // Check if the author wrote a \\tag{} inside this cell.\n  let rowLabel = \"\";\n  for (let i = 0; i < cell.length; i++) {\n    if (cell[i].type === \"label\") {\n      if (rowLabel) { throw new ParseError((\"Multiple \\\\labels in one row\")) }\n      rowLabel = cell[i].string;\n    }\n  }\n  return rowLabel\n};\n\n// autoTag (an argument to parseArray) can be one of three values:\n// * undefined: Regular (not-top-level) array; no tags on each row\n// * true: Automatic equation numbering, overridable by \\tag\n// * false: Tags allowed on each row, but no automatic numbering\n// This function *doesn't* work with the \"split\" environment name.\nfunction getAutoTag(name) {\n  if (name.indexOf(\"ed\") === -1) {\n    return name.indexOf(\"*\") === -1;\n  }\n  // return undefined;\n}\n\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell.  If given an optional argument scriptLevel\n * (\"text\", \"display\", etc.), then each cell is cast into that scriptLevel.\n */\nfunction parseArray(\n  parser,\n  {\n    cols, // [{ type: string , align: l|c|r|null }]\n    envClasses, // align(ed|at|edat) | array | cases | cd | small | multline\n    autoTag,        // boolean\n    singleRow,      // boolean\n    emptySingleRow, // boolean\n    maxNumCols,     // number\n    leqno,          // boolean\n    arraystretch,   // number  | null\n    arraycolsep     // size value | null\n},\n  scriptLevel\n) {\n  const endToken = envClasses && envClasses.includes(\"bordermatrix\") ? \"}\" : \"\\\\end\";\n  parser.gullet.beginGroup();\n  if (!singleRow) {\n    // \\cr is equivalent to \\\\ without the optional size argument (see below)\n    // TODO: provide helpful error when \\cr is used outside array environment\n    parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n  }\n\n  // Start group for first cell\n  parser.gullet.beginGroup();\n\n  let row = [];\n  const body = [row];\n  const rowGaps = [];\n  const labels = [];\n\n  const hLinesBeforeRow = [];\n\n  const tags = (autoTag != null ? [] : undefined);\n\n  // amsmath uses \\global\\@eqnswtrue and \\global\\@eqnswfalse to represent\n  // whether this row should have an equation number.  Simulate this with\n  // a \\@eqnsw macro set to 1 or 0.\n  function beginRow() {\n    if (autoTag) {\n      parser.gullet.macros.set(\"\\\\@eqnsw\", \"1\", true);\n    }\n  }\n  function endRow() {\n    if (tags) {\n      if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n        tags.push(parser.subparse([new Token(\"\\\\df@tag\")]));\n        parser.gullet.macros.set(\"\\\\df@tag\", undefined, true);\n      } else {\n        tags.push(Boolean(autoTag) &&\n            parser.gullet.macros.get(\"\\\\@eqnsw\") === \"1\");\n      }\n    }\n  }\n  beginRow();\n\n  // Test for \\hline at the top of the array.\n  hLinesBeforeRow.push(getHLines(parser));\n\n  while (true) {\n    // Parse each cell in its own group (namespace)\n    let cell = parser.parseExpression(false, singleRow ? \"\\\\end\" : \"\\\\\\\\\");\n    parser.gullet.endGroup();\n    parser.gullet.beginGroup();\n\n    cell = {\n      type: \"ordgroup\",\n      mode: parser.mode,\n      body: cell,\n      semisimple: true\n    };\n    row.push(cell);\n    const next = parser.fetch().text;\n    if (next === \"&\") {\n      if (maxNumCols && row.length === maxNumCols) {\n        if (envClasses.includes(\"array\")) {\n          if (parser.settings.strict) {\n            throw new ParseError(\"Too few columns \" + \"specified in the {array} column argument.\",\n              parser.nextToken)\n          }\n        } else if (maxNumCols === 2) {\n          throw new ParseError(\"The split environment accepts no more than two columns\",\n            parser.nextToken);\n        } else {\n          throw new ParseError(\"The equation environment accepts only one column\",\n            parser.nextToken)\n        }\n      }\n      parser.consume();\n    } else if (next === endToken) {\n      endRow();\n      // Arrays terminate newlines with `\\crcr` which consumes a `\\cr` if\n      // the last line is empty.  However, AMS environments keep the\n      // empty row if it's the only one.\n      // NOTE: Currently, `cell` is the last item added into `row`.\n      if (row.length === 1 && cell.body.length === 0 && (body.length > 1 || !emptySingleRow)) {\n        body.pop();\n      }\n      labels.push(checkCellForLabels(cell.body));\n      if (hLinesBeforeRow.length < body.length + 1) {\n        hLinesBeforeRow.push([]);\n      }\n      break;\n    } else if (next === \"\\\\\\\\\") {\n      parser.consume();\n      let size;\n      // \\def\\Let@{\\let\\\\\\math@cr}\n      // \\def\\math@cr{...\\math@cr@}\n      // \\def\\math@cr@{\\new@ifnextchar[\\math@cr@@{\\math@cr@@[\\z@]}}\n      // \\def\\math@cr@@[#1]{...\\math@cr@@@...}\n      // \\def\\math@cr@@@{\\cr}\n      if (parser.gullet.future().text !== \" \") {\n        size = parser.parseSizeGroup(true);\n      }\n      rowGaps.push(size ? size.value : null);\n      endRow();\n\n      labels.push(checkCellForLabels(cell.body));\n\n      // check for \\hline(s) following the row separator\n      hLinesBeforeRow.push(getHLines(parser));\n\n      row = [];\n      body.push(row);\n      beginRow();\n    } else {\n      throw new ParseError(\"Expected & or \\\\\\\\ or \\\\cr or \" + endToken, parser.nextToken);\n    }\n  }\n\n  // End cell group\n  parser.gullet.endGroup();\n  // End array group defining \\cr\n  parser.gullet.endGroup();\n\n  return {\n    type: \"array\",\n    mode: parser.mode,\n    body,\n    cols,\n    rowGaps,\n    hLinesBeforeRow,\n    envClasses,\n    autoTag,\n    scriptLevel,\n    tags,\n    labels,\n    leqno,\n    arraystretch,\n    arraycolsep\n  };\n}\n\n// Decides on a scriptLevel for cells in an array according to whether the given\n// environment name starts with the letter 'd'.\nfunction dCellStyle(envName) {\n  return envName.slice(0, 1) === \"d\" ? \"display\" : \"text\"\n}\n\nconst alignMap = {\n  c: \"center \",\n  l: \"left \",\n  r: \"right \"\n};\n\nconst glue = group => {\n  const glueNode = new MathNode(\"mtd\", []);\n  glueNode.style = { padding: \"0\", width: \"50%\" };\n  if (group.envClasses.includes(\"multline\")) {\n    glueNode.style.width = \"7.5%\";\n  }\n  return glueNode\n};\n\nconst mathmlBuilder$9 = function(group, style) {\n  const tbl = [];\n  const numRows = group.body.length;\n  const hlines = group.hLinesBeforeRow;\n  const tagIsPresent = (group.tags && group.tags.some((tag) => tag));\n\n  for (let i = 0; i < numRows; i++) {\n    const rw = group.body[i];\n    const row = [];\n    const cellLevel = group.scriptLevel === \"text\"\n      ? StyleLevel.TEXT\n      : group.scriptLevel === \"script\"\n      ? StyleLevel.SCRIPT\n      : StyleLevel.DISPLAY;\n\n    for (let j = 0; j < rw.length; j++) {\n      const mtd = new MathNode(\n        \"mtd\",\n        [buildGroup$1(rw[j], style.withLevel(cellLevel))]\n      );\n\n      if (group.envClasses.includes(\"multline\")) {\n        const align = i === 0 ? \"left\" : i === numRows - 1 ? \"right\" : \"center\";\n        if (align !== \"center\") {\n          mtd.classes.push(\"tml-\" + align);\n        }\n      }\n      row.push(mtd);\n    }\n    const numColumns = group.body[0].length;\n    // Fill out a short row with empty <mtd> elements.\n    for (let k = 0; k < numColumns - rw.length; k++) {\n      row.push(new MathNode(\"mtd\", [], [], style));\n    }\n    if (tagIsPresent) {\n      const tag = group.tags[i];\n      let tagElement;\n      if (tag === true) {  // automatic numbering\n        tagElement = new MathNode(\"mtext\", [new Span([\"tml-eqn\"])]);\n      } else if (tag === false) {\n        // \\nonumber/\\notag or starred environment\n        tagElement = new MathNode(\"mtext\", [], []);\n      } else {  // manual \\tag\n        tagElement = buildExpressionRow(tag[0].body, style.withLevel(cellLevel), true);\n        tagElement = consolidateText(tagElement);\n        tagElement.classes = [\"tml-tag\"];\n      }\n      if (tagElement) {\n        row.unshift(glue(group));\n        row.push(glue(group));\n        if (group.leqno) {\n          row[0].children.push(tagElement);\n        } else {\n          row[row.length - 1].children.push(tagElement);\n        }\n      }\n    }\n    const mtr = new MathNode(\"mtr\", row, []);\n    const label = group.labels.shift();\n    if (label && group.tags && group.tags[i]) {\n      mtr.setAttribute(\"id\", label);\n      if (Array.isArray(group.tags[i])) { mtr.classes.push(\"tml-tageqn\"); }\n    }\n\n    // Write horizontal rules\n    if (i === 0 && hlines[0].length > 0) {\n      if (hlines[0].length === 2) {\n        mtr.children.forEach(cell => { cell.style.borderTop = \"0.15em double\"; });\n      } else {\n        mtr.children.forEach(cell => {\n          cell.style.borderTop = hlines[0][0] ? \"0.06em dashed\" : \"0.06em solid\";\n        });\n      }\n    }\n    if (hlines[i + 1].length > 0) {\n      if (hlines[i + 1].length === 2) {\n        mtr.children.forEach(cell => { cell.style.borderBottom = \"0.15em double\"; });\n      } else {\n        mtr.children.forEach(cell => {\n          cell.style.borderBottom = hlines[i + 1][0] ? \"0.06em dashed\" : \"0.06em solid\";\n        });\n      }\n    }\n\n    // Check for \\hphantom \\from \\bordermatrix\n    let mustSquashRow = true;\n    for (let j = 0; j < mtr.children.length; j++) {\n      const child = mtr.children[j].children[0];\n      if (!(child && child.type === \"mpadded\" && child.attributes.height === \"0px\")) {\n        mustSquashRow = false;\n        break\n      }\n    }\n    if (mustSquashRow) {\n      // All the cell contents are \\hphantom. Squash the cell.\n      // TODO: Remove the next line when Firefox no longer needs it.\n      mtr.classes.push(\"ff-squash\"); // necessary in Firefox only.\n      for (let j = 0; j < mtr.children.length; j++) {\n        mtr.children[j].style.paddingTop = \"0\";\n        mtr.children[j].style.paddingBottom = \"0\";\n      }\n    }\n\n    tbl.push(mtr);\n  }\n\n  if (group.arraystretch && group.arraystretch !== 1) {\n    // In LaTeX, \\arraystretch is a factor applied to a 12pt strut height.\n    // It defines a baseline to baseline distance.\n    // Here, we do an approximation of that approach.\n    const pad = String(1.4 * group.arraystretch - 0.8) + \"ex\";\n    for (let i = 0; i < tbl.length; i++) {\n      for (let j = 0; j < tbl[i].children.length; j++) {\n        tbl[i].children[j].style.paddingTop = pad;\n        tbl[i].children[j].style.paddingBottom = pad;\n      }\n    }\n  }\n\n  let sidePadding;\n  let sidePadUnit;\n  if (group.envClasses.length > 0) {\n    sidePadding = group.envClasses.includes(\"abut\")\n      ? \"0\"\n      : group.envClasses.includes(\"cases\")\n      ? \"0\"\n      : group.envClasses.includes(\"small\")\n      ? \"0.1389\"\n      : group.envClasses.includes(\"cd\")\n      ? \"0.25\"\n      : \"0.4\"; // default side padding\n    sidePadUnit = \"em\";\n  }\n  if (group.arraycolsep) {\n    const arraySidePad = calculateSize(group.arraycolsep, style);\n    sidePadding = arraySidePad.number.toFixed(4);\n    sidePadUnit = arraySidePad.unit;\n  }\n  if (sidePadding) {\n    const numCols = tbl.length === 0 ? 0 : tbl[0].children.length;\n\n    const sidePad = (j, hand) => {\n      if (j === 0 && hand === 0) { return \"0\" }\n      if (j === numCols - 1 && hand === 1) { return \"0\" }\n      if (group.envClasses[0] !== \"align\") { return sidePadding }\n      if (hand === 1) { return \"0\" }\n      if (tagIsPresent) {\n        return (j % 2) ? \"1\" : \"0\"\n      } else {\n        return (j % 2) ? \"0\" : \"1\"\n      }\n    };\n\n    // Side padding\n    for (let i = 0; i < tbl.length; i++) {\n      for (let j = 0; j < tbl[i].children.length; j++) {\n        tbl[i].children[j].style.paddingLeft = `${sidePad(j, 0)}${sidePadUnit}`;\n        tbl[i].children[j].style.paddingRight = `${sidePad(j, 1)}${sidePadUnit}`;\n      }\n    }\n  }\n  if (group.envClasses.length === 0) {\n    // Set zero padding on side of the matrix\n    for (let i = 0; i < tbl.length; i++) {\n      tbl[i].children[0].style.paddingLeft = \"0em\";\n      if (tbl[i].children.length === tbl[0].children.length) {\n        tbl[i].children[tbl[i].children.length - 1].style.paddingRight = \"0em\";\n      }\n    }\n  }\n\n  if (group.envClasses.length > 0) {\n    // Justification\n    const align = group.envClasses.includes(\"align\") || group.envClasses.includes(\"alignat\");\n    for (let i = 0; i < tbl.length; i++) {\n      const row = tbl[i];\n      if (align) {\n        for (let j = 0; j < row.children.length; j++) {\n          // Chromium does not recognize text-align: left. Use -webkit-\n          // TODO: Remove -webkit- when Chromium no longer needs it.\n          row.children[j].classes = [\"tml-\" + (j % 2 ? \"left\" : \"right\")];\n        }\n        if (tagIsPresent) {\n          const k = group.leqno ? 0 : row.children.length - 1;\n          row.children[k].classes = [];  // Default is center.\n        }\n      }\n      if (row.children.length > 1 && group.envClasses.includes(\"cases\")) {\n        row.children[1].style.paddingLeft = \"1em\";\n      }\n\n      if (group.envClasses.includes(\"cases\") || group.envClasses.includes(\"subarray\")) {\n        for (const cell of row.children) {\n          cell.classes.push(\"tml-left\");\n        }\n      }\n    }\n  }\n\n  let table = new MathNode(\"mtable\", tbl);\n  if (group.envClasses.length > 0) {\n    // Top & bottom padding\n    if (group.envClasses.includes(\"jot\")) {\n      table.classes.push(\"tml-jot\");\n    } else if (group.envClasses.includes(\"small\")) {\n      table.classes.push(\"tml-small\");\n    }\n  }\n  if (group.scriptLevel === \"display\") { table.setAttribute(\"displaystyle\", \"true\"); }\n\n  if (group.autoTag || group.envClasses.includes(\"multline\")) {\n    table.style.width = \"100%\";\n  }\n\n  // Column separator lines and column alignment\n\n  if (group.cols && group.cols.length > 0) {\n    const cols = group.cols;\n    let prevTypeWasAlign = false;\n    let iStart = 0;\n    let iEnd = cols.length;\n\n    while (cols[iStart].type === \"separator\") {\n      iStart += 1;\n    }\n    while (cols[iEnd - 1].type === \"separator\") {\n      iEnd -= 1;\n    }\n\n    if (cols[0].type === \"separator\") {\n      const sep = cols[1].type === \"separator\"\n        ? \"0.15em double\"\n        : cols[0].separator === \"|\"\n        ? \"0.06em solid \"\n        : \"0.06em dashed \";\n      for (const row of table.children) {\n        row.children[0].style.borderLeft = sep;\n      }\n    }\n    let iCol = tagIsPresent ? 0 : -1;\n    for (let i = iStart; i < iEnd; i++) {\n      if (cols[i].type === \"align\") {\n        const colAlign = alignMap[cols[i].align];\n        iCol += 1;\n        for (const row of table.children) {\n          if (colAlign.trim() !== \"center\" && iCol < row.children.length) {\n            row.children[iCol].classes = [\"tml-\" + colAlign.trim()];\n          }\n        }\n        prevTypeWasAlign = true;\n      } else if (cols[i].type === \"separator\") {\n        // MathML accepts only single lines between cells.\n        // So we read only the first of consecutive separators.\n        if (prevTypeWasAlign) {\n          const sep = cols[i + 1].type === \"separator\"\n            ? \"0.15em double\"\n            : cols[i].separator === \"|\"\n            ? \"0.06em solid\"\n            : \"0.06em dashed\";\n          for (const row of table.children) {\n            if (iCol < row.children.length) {\n              row.children[iCol].style.borderRight = sep;\n            }\n          }\n        }\n        prevTypeWasAlign = false;\n      }\n    }\n    if (cols[cols.length - 1].type === \"separator\") {\n      const sep = cols[cols.length - 2].type === \"separator\"\n        ? \"0.15em double\"\n        : cols[cols.length - 1].separator === \"|\"\n        ? \"0.06em solid\"\n        : \"0.06em dashed\";\n      for (const row of table.children) {\n        row.children[row.children.length - 1].style.borderRight = sep;\n        row.children[row.children.length - 1].style.paddingRight = \"0.4em\";\n      }\n    }\n  }\n\n  if (group.envClasses.includes(\"small\")) {\n    // A small array. Wrap in scriptstyle.\n    table = new MathNode(\"mstyle\", [table]);\n    table.setAttribute(\"scriptlevel\", \"1\");\n  }\n\n  return table\n};\n\n// Convenience function for align, align*, aligned, alignat, alignat*, alignedat, split.\nconst alignedHandler = function(context, args) {\n  if (context.envName.indexOf(\"ed\") === -1) {\n    validateAmsEnvironmentContext(context);\n  }\n  const isSplit = context.envName === \"split\";\n  const cols = [];\n  const res = parseArray(\n    context.parser,\n    {\n      cols,\n      emptySingleRow: true,\n      autoTag: isSplit ? undefined : getAutoTag(context.envName),\n      envClasses: [\"abut\", \"jot\"], // set row spacing & provisional column spacing\n      maxNumCols: context.envName === \"split\" ? 2 : undefined,\n      leqno: context.parser.settings.leqno\n    },\n    \"display\"\n  );\n\n  // Determining number of columns.\n  // 1. If the first argument is given, we use it as a number of columns,\n  //    and makes sure that each row doesn't exceed that number.\n  // 2. Otherwise, just count number of columns = maximum number\n  //    of cells in each row (\"aligned\" mode -- isAligned will be true).\n  //\n  // At the same time, prepend empty group {} at beginning of every second\n  // cell in each row (starting with second cell) so that operators become\n  // binary.  This behavior is implemented in amsmath's \\start@aligned.\n  let numMaths;\n  let numCols = 0;\n  const isAlignedAt = context.envName.indexOf(\"at\") > -1;\n  if (args[0] && isAlignedAt) {\n    // alignat environment takes an argument w/ number of columns\n    let arg0 = \"\";\n    for (let i = 0; i < args[0].body.length; i++) {\n      const textord = assertNodeType(args[0].body[i], \"textord\");\n      arg0 += textord.text;\n    }\n    if (isNaN(arg0)) {\n      throw new ParseError(\"The alignat enviroment requires a numeric first argument.\")\n    }\n    numMaths = Number(arg0);\n    numCols = numMaths * 2;\n  }\n  res.body.forEach(function(row) {\n    if (isAlignedAt) {\n      // Case 1\n      const curMaths = row.length / 2;\n      if (numMaths < curMaths) {\n        throw new ParseError(\n          \"Too many math in a row: \" + `expected ${numMaths}, but got ${curMaths}`,\n          row[0]\n        );\n      }\n    } else if (numCols < row.length) {\n      // Case 2\n      numCols = row.length;\n    }\n  });\n\n  // Adjusting alignment.\n  // In aligned mode, we add one \\qquad between columns;\n  // otherwise we add nothing.\n  for (let i = 0; i < numCols; ++i) {\n    let align = \"r\";\n    if (i % 2 === 1) {\n      align = \"l\";\n    }\n    cols[i] = {\n      type: \"align\",\n      align: align\n    };\n  }\n  if (context.envName === \"split\") ; else if (isAlignedAt) {\n    res.envClasses.push(\"alignat\"); // Sets justification\n  } else {\n    res.envClasses[0] = \"align\"; // Sets column spacing & justification\n  }\n  return res;\n};\n\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\n// {darray} is an {array} environment where cells are set in \\displaystyle,\n// as defined in nccmath.sty.\ndefineEnvironment({\n  type: \"array\",\n  names: [\"array\", \"darray\"],\n  props: {\n    numArgs: 1\n  },\n  handler(context, args) {\n    // Since no types are specified above, the two possibilities are\n    // - The argument is wrapped in {} or [], in which case Parser's\n    //   parseGroup() returns an \"ordgroup\" wrapping some symbol node.\n    // - The argument is a bare symbol node.\n    const symNode = checkSymbolNodeType(args[0]);\n    const colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n    const cols = colalign.map(function(nde) {\n      const node = assertSymbolNodeType(nde);\n      const ca = node.text;\n      if (\"lcr\".indexOf(ca) !== -1) {\n        return {\n          type: \"align\",\n          align: ca\n        };\n      } else if (ca === \"|\") {\n        return {\n          type: \"separator\",\n          separator: \"|\"\n        };\n      } else if (ca === \":\") {\n        return {\n          type: \"separator\",\n          separator: \":\"\n        };\n      }\n      throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n    });\n    const [arraystretch, arraycolsep] = arrayGaps(context.parser.gullet.macros);\n    const res = {\n      cols,\n      envClasses: [\"array\"],\n      maxNumCols: cols.length,\n      arraystretch,\n      arraycolsep\n    };\n    return parseArray(context.parser, res, dCellStyle(context.envName));\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// The matrix environments of amsmath build on the array environment\n// of LaTeX, which is discussed above.\n// The mathtools package adds starred versions of the same environments.\n// These have an optional argument to choose left|center|right justification.\ndefineEnvironment({\n  type: \"array\",\n  names: [\n    \"matrix\",\n    \"pmatrix\",\n    \"bmatrix\",\n    \"Bmatrix\",\n    \"vmatrix\",\n    \"Vmatrix\",\n    \"matrix*\",\n    \"pmatrix*\",\n    \"bmatrix*\",\n    \"Bmatrix*\",\n    \"vmatrix*\",\n    \"Vmatrix*\"\n  ],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    const delimiters = {\n      matrix: null,\n      pmatrix: [\"(\", \")\"],\n      bmatrix: [\"[\", \"]\"],\n      Bmatrix: [\"\\\\{\", \"\\\\}\"],\n      vmatrix: [\"|\", \"|\"],\n      Vmatrix: [\"\\\\Vert\", \"\\\\Vert\"]\n    }[context.envName.replace(\"*\", \"\")];\n    // \\hskip -\\arraycolsep in amsmath\n    let colAlign = \"c\";\n    const payload = {\n      envClasses: [],\n      cols: []\n    };\n    if (context.envName.charAt(context.envName.length - 1) === \"*\") {\n      // It's one of the mathtools starred functions.\n      // Parse the optional alignment argument.\n      const parser = context.parser;\n      parser.consumeSpaces();\n      if (parser.fetch().text === \"[\") {\n        parser.consume();\n        parser.consumeSpaces();\n        colAlign = parser.fetch().text;\n        if (\"lcr\".indexOf(colAlign) === -1) {\n          throw new ParseError(\"Expected l or c or r\", parser.nextToken);\n        }\n        parser.consume();\n        parser.consumeSpaces();\n        parser.expect(\"]\");\n        parser.consume();\n        payload.cols = [];\n      }\n    }\n    const res = parseArray(context.parser, payload, \"text\");\n    res.cols = res.body.length > 0\n      ? new Array(res.body[0].length).fill({ type: \"align\", align: colAlign })\n      : [];\n    const [arraystretch, arraycolsep] = arrayGaps(context.parser.gullet.macros);\n    res.arraystretch = arraystretch;\n    if (arraycolsep && !(arraycolsep === 6 && arraycolsep === \"pt\")) {\n      res.arraycolsep = arraycolsep;\n    }\n    return delimiters\n      ? {\n        type: \"leftright\",\n        mode: context.mode,\n        body: [res],\n        left: delimiters[0],\n        right: delimiters[1],\n        rightColor: undefined // \\right uninfluenced by \\color in array\n      }\n      : res;\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"bordermatrix\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    const payload = { cols: [], envClasses: [\"bordermatrix\"] };\n    const res = parseArray(context.parser, payload, \"text\");\n    res.cols = res.body.length > 0\n      ? new Array(res.body[0].length).fill({ type: \"align\", align: \"c\" })\n      : [];\n    res.envClasses = [];\n    res.arraystretch = 1;\n    if (context.envName === \"matrix\") { return res}\n    return bordermatrixParseTree(res, context.delimiters)\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"smallmatrix\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    const payload = { envClasses: [\"small\"] };\n    const res = parseArray(context.parser, payload, \"script\");\n    return res;\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"subarray\"],\n  props: {\n    numArgs: 1\n  },\n  handler(context, args) {\n    // Parsing of {subarray} is similar to {array}\n    const symNode = checkSymbolNodeType(args[0]);\n    const colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n    const cols = colalign.map(function(nde) {\n      const node = assertSymbolNodeType(nde);\n      const ca = node.text;\n      // {subarray} only recognizes \"l\" & \"c\"\n      if (\"lc\".indexOf(ca) !== -1) {\n        return {\n          type: \"align\",\n          align: ca\n        };\n      }\n      throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n    });\n    if (cols.length > 1) {\n      throw new ParseError(\"{subarray} can contain only one column\");\n    }\n    let res = {\n      cols,\n      envClasses: [\"small\"]\n    };\n    res = parseArray(context.parser, res, \"script\");\n    if (res.body.length > 0 && res.body[0].length > 1) {\n      throw new ParseError(\"{subarray} can contain only one column\");\n    }\n    return res;\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\n// {dcases} is a {cases} environment where cells are set in \\displaystyle,\n// as defined in mathtools.sty.\n// {rcases} is another mathtools environment. It's brace is on the right side.\ndefineEnvironment({\n  type: \"array\",\n  names: [\"cases\", \"dcases\", \"rcases\", \"drcases\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    const payload = {\n      cols: [],\n      envClasses: [\"cases\"]\n    };\n    const res = parseArray(context.parser, payload, dCellStyle(context.envName));\n    return {\n      type: \"leftright\",\n      mode: context.mode,\n      body: [res],\n      left: context.envName.indexOf(\"r\") > -1 ? \".\" : \"\\\\{\",\n      right: context.envName.indexOf(\"r\") > -1 ? \"\\\\}\" : \".\",\n      rightColor: undefined\n    };\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// In the align environment, one uses ampersands, &, to specify number of\n// columns in each row, and to locate spacing between each column.\n// align gets automatic numbering. align* and aligned do not.\n// The alignedat environment can be used in math mode.\ndefineEnvironment({\n  type: \"array\",\n  names: [\"align\", \"align*\", \"aligned\", \"split\"],\n  props: {\n    numArgs: 0\n  },\n  handler: alignedHandler,\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// alignat environment is like an align environment, but one must explicitly\n// specify maximum number of columns in each row, and can adjust where spacing occurs.\ndefineEnvironment({\n  type: \"array\",\n  names: [\"alignat\", \"alignat*\", \"alignedat\"],\n  props: {\n    numArgs: 1\n  },\n  handler: alignedHandler,\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// A gathered environment is like an array environment with one centered\n// column, but where rows are considered lines so get \\jot line spacing\n// and contents are set in \\displaystyle.\ndefineEnvironment({\n  type: \"array\",\n  names: [\"gathered\", \"gather\", \"gather*\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    if (context.envName !== \"gathered\") {\n      validateAmsEnvironmentContext(context);\n    }\n    const res = {\n      cols: [],\n      envClasses: [\"abut\", \"jot\"],\n      autoTag: getAutoTag(context.envName),\n      emptySingleRow: true,\n      leqno: context.parser.settings.leqno\n    };\n    return parseArray(context.parser, res, \"display\");\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"equation\", \"equation*\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    validateAmsEnvironmentContext(context);\n    const res = {\n      autoTag: getAutoTag(context.envName),\n      emptySingleRow: true,\n      singleRow: true,\n      maxNumCols: 1,\n      envClasses: [\"align\"],\n      leqno: context.parser.settings.leqno\n    };\n    return parseArray(context.parser, res, \"display\");\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"multline\", \"multline*\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    validateAmsEnvironmentContext(context);\n    const res = {\n      autoTag: context.envName === \"multline\",\n      maxNumCols: 1,\n      envClasses: [\"jot\", \"multline\"],\n      leqno: context.parser.settings.leqno\n    };\n    return parseArray(context.parser, res, \"display\");\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\ndefineEnvironment({\n  type: \"array\",\n  names: [\"CD\"],\n  props: {\n    numArgs: 0\n  },\n  handler(context) {\n    validateAmsEnvironmentContext(context);\n    return parseCD(context.parser);\n  },\n  mathmlBuilder: mathmlBuilder$9\n});\n\n// Catch \\hline outside array environment\ndefineFunction({\n  type: \"text\", // Doesn't matter what this is.\n  names: [\"\\\\hline\", \"\\\\hdashline\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    allowedInMath: true\n  },\n  handler(context, args) {\n    throw new ParseError(`${context.funcName} valid only within array environment`);\n  }\n});\n\nconst environments = _environments;\n\n// \\bordermatrix  from TeXbook pp 177 & 361\n// Optional argument from Herbert Voß, Math mode, p 20\n// Ref: https://tug.ctan.org/obsolete/info/math/voss/mathmode/Mathmode.pdf\n\ndefineFunction({\n  type: \"bordermatrix\",\n  names: [\"\\\\bordermatrix\", \"\\\\matrix\"],\n  props: {\n    numArgs: 0,\n    numOptionalArgs: 1\n  },\n  handler: ({ parser, funcName }, args, optArgs) => {\n    // Find out if the author has defined custom delimiters\n    let delimiters = [\"(\", \")\"]; // default\n    if (funcName === \"\\\\bordermatrix\" && optArgs[0] && optArgs[0].body) {\n      const body = optArgs[0].body;\n      if (body.length === 1 && body[0].type === \"delimiter\") {\n        delimiters = [body[0].left, body[0].right];\n      }\n    }\n    // consume the opening brace\n    parser.consumeSpaces();\n    parser.consume();\n\n    // Pass control to the environment handler in array.js.\n    const env = environments[\"bordermatrix\"];\n    const context = {\n      mode: parser.mode,\n      envName: funcName.slice(1),\n      delimiters,\n      parser\n    };\n    const result = env.handler(context);\n    parser.expect(\"}\", true);\n    return result\n  }\n});\n\ndefineFunction({\n  type: \"cancelto\",\n  names: [\"\\\\cancelto\"],\n  props: {\n    numArgs: 2\n  },\n  handler({ parser }, args) {\n    const to = args[0];\n    const body = args[1];\n    return {\n      type: \"cancelto\",\n      mode: parser.mode,\n      body,\n      to,\n      isCharacterBox: isCharacterBox(body)\n    };\n  },\n  mathmlBuilder(group, style) {\n    const fromNode = new MathNode(\n      \"mrow\",\n      [buildGroup$1(group.body, style)],\n      [\"ff-narrow\"] // A zero-width mrow.\n    );\n    // Write the arrow in a node written after the content.\n    // That way, the arrow will be an overlay on the content.\n    const phantom = new MathNode(\"mphantom\", [buildGroup$1(group.body, style)]);\n    const arrow = new MathNode(\"mrow\", [phantom], [\"tml-cancelto\"]);\n    arrow.style.color = style.color;\n    if (group.isCharacterBox && smalls.indexOf(group.body.body[0].text) > -1) {\n      arrow.style.left = \"0.1em\";\n      arrow.style.width = \"90%\";\n    }\n    const node = new MathNode(\"mrow\", [fromNode, arrow], [\"menclose\"]);\n    if (!group.isCharacterBox || /[f∫∑]/.test(group.body.body[0].text)) {\n      // Add 0.2em space to right of content to make room for the arrowhead.\n      phantom.style.paddingRight = \"0.2em\";\n    } else {\n      phantom.style.padding = \"0.5ex 0.1em 0 0\";\n      const strut = new MathNode('mspace', []);\n      strut.setAttribute('height', \"0.85em\");\n      fromNode.children.push(strut);\n    }\n\n    // Create the \"to\" value above and to the right of the arrow.\n    // First, we want a dummy node with the same height as the `from` content.\n    // We'll place the `to` node above the dummy to get the correct vertical alignment.\n    let dummyNode;\n    if (group.isCharacterBox) {\n      dummyNode = new MathNode('mspace', []);\n      dummyNode.setAttribute('height', \"1em\");\n    } else {\n      // Create a phantom node with the same content as the body.\n      const inner = buildGroup$1(group.body, style);\n      // The phantom node will be zero-width, so it won't affect horizontal spacing.\n      const zeroWidthNode = new MathNode(\"mpadded\", [inner]);\n      zeroWidthNode.setAttribute(\"width\", \"0.1px\"); // Don't use 0. WebKit would omit it.\n      dummyNode = new MathNode(\"mphantom\", [zeroWidthNode]); // Hide it.\n    }\n    const toNode = buildGroup$1(group.to, style);\n    toNode.style.color = style.color;\n    const zeroWidthToNode = new MathNode(\"mpadded\", [toNode]);\n    if (!group.isCharacterBox || /[f∫∑]/.test(group.body.body[0].text)) {\n      const w = new MathNode(\"mspace\", []);\n      w.setAttribute('width', \"0.2em\");\n      zeroWidthToNode.children.unshift(w);\n    }\n    zeroWidthToNode.setAttribute(\"width\", \"0.1px\"); // Don't use 0. WebKit would hide it.\n    const mover = new MathNode(\"mover\", [dummyNode, zeroWidthToNode]);\n    // Fix Firefox positioning.\n    const nudgeLeft = new MathNode('mrow', [], [\"ff-nudge-left\"]);\n    return newDocumentFragment([makeRow([node, mover]), nudgeLeft])\n  }\n});\n\n// \\@char is an internal function that takes a grouped decimal argument like\n// {123} and converts into symbol with code 123.  It is used by the *macro*\n// \\char defined in macros.js.\ndefineFunction({\n  type: \"textord\",\n  names: [\"\\\\@char\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler({ parser, token }, args) {\n    const arg = assertNodeType(args[0], \"ordgroup\");\n    const group = arg.body;\n    let number = \"\";\n    for (let i = 0; i < group.length; i++) {\n      const node = assertNodeType(group[i], \"textord\");\n      number += node.text;\n    }\n    const code = parseInt(number);\n    if (isNaN(code)) {\n      throw new ParseError(`\\\\@char has non-numeric argument ${number}`, token)\n    }\n    return {\n      type: \"textord\",\n      mode: parser.mode,\n      text: String.fromCodePoint(code)\n    }\n  }\n});\n\n// Helpers\nconst htmlRegEx = /^(#[a-f0-9]{3}|#?[a-f0-9]{6})$/i;\nconst htmlOrNameRegEx = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i;\nconst RGBregEx = /^ *\\d{1,3} *(?:, *\\d{1,3} *){2}$/;\nconst rgbRegEx = /^ *[10](?:\\.\\d*)? *(?:, *[10](?:\\.\\d*)? *){2}$/;\nconst xcolorHtmlRegEx = /^[a-f0-9]{6}$/i;\nconst toHex = num => {\n  let str = num.toString(16);\n  if (str.length === 1) { str = \"0\" + str; }\n  return str\n};\n\n// Colors from Tables 4.1 and 4.2 of the xcolor package.\n// Table 4.1 (lower case) RGB values are taken from chroma and xcolor.dtx.\n// Table 4.2 (Capitalized) values were sampled, because Chroma contains a unreliable\n// conversion from cmyk to RGB. See https://tex.stackexchange.com/a/537274.\nconst xcolors = JSON.parse(`{\n  \"Apricot\": \"#ffb484\",\n  \"Aquamarine\": \"#08b4bc\",\n  \"Bittersweet\": \"#c84c14\",\n  \"blue\": \"#0000FF\",\n  \"Blue\": \"#303494\",\n  \"BlueGreen\": \"#08b4bc\",\n  \"BlueViolet\": \"#503c94\",\n  \"BrickRed\": \"#b8341c\",\n  \"brown\": \"#BF8040\",\n  \"Brown\": \"#802404\",\n  \"BurntOrange\": \"#f8941c\",\n  \"CadetBlue\": \"#78749c\",\n  \"CarnationPink\": \"#f884b4\",\n  \"Cerulean\": \"#08a4e4\",\n  \"CornflowerBlue\": \"#40ace4\",\n  \"cyan\": \"#00FFFF\",\n  \"Cyan\": \"#08acec\",\n  \"Dandelion\": \"#ffbc44\",\n  \"darkgray\": \"#404040\",\n  \"DarkOrchid\": \"#a8548c\",\n  \"Emerald\": \"#08ac9c\",\n  \"ForestGreen\": \"#089c54\",\n  \"Fuchsia\": \"#90348c\",\n  \"Goldenrod\": \"#ffdc44\",\n  \"gray\": \"#808080\",\n  \"Gray\": \"#98949c\",\n  \"green\": \"#00FF00\",\n  \"Green\": \"#08a44c\",\n  \"GreenYellow\": \"#e0e474\",\n  \"JungleGreen\": \"#08ac9c\",\n  \"Lavender\": \"#f89cc4\",\n  \"lightgray\": \"#c0c0c0\",\n  \"lime\": \"#BFFF00\",\n  \"LimeGreen\": \"#90c43c\",\n  \"magenta\": \"#FF00FF\",\n  \"Magenta\": \"#f0048c\",\n  \"Mahogany\": \"#b0341c\",\n  \"Maroon\": \"#b03434\",\n  \"Melon\": \"#f89c7c\",\n  \"MidnightBlue\": \"#086494\",\n  \"Mulberry\": \"#b03c94\",\n  \"NavyBlue\": \"#086cbc\",\n  \"olive\": \"#7F7F00\",\n  \"OliveGreen\": \"#407c34\",\n  \"orange\": \"#FF8000\",\n  \"Orange\": \"#f8843c\",\n  \"OrangeRed\": \"#f0145c\",\n  \"Orchid\": \"#b074ac\",\n  \"Peach\": \"#f8945c\",\n  \"Periwinkle\": \"#8074bc\",\n  \"PineGreen\": \"#088c74\",\n  \"pink\": \"#ff7f7f\",\n  \"Plum\": \"#98248c\",\n  \"ProcessBlue\": \"#08b4ec\",\n  \"purple\": \"#BF0040\",\n  \"Purple\": \"#a0449c\",\n  \"RawSienna\": \"#983c04\",\n  \"red\": \"#ff0000\",\n  \"Red\": \"#f01c24\",\n  \"RedOrange\": \"#f86434\",\n  \"RedViolet\": \"#a0246c\",\n  \"Rhodamine\": \"#f0549c\",\n  \"Royallue\": \"#0874bc\",\n  \"RoyalPurple\": \"#683c9c\",\n  \"RubineRed\": \"#f0047c\",\n  \"Salmon\": \"#f8948c\",\n  \"SeaGreen\": \"#30bc9c\",\n  \"Sepia\": \"#701404\",\n  \"SkyBlue\": \"#48c4dc\",\n  \"SpringGreen\": \"#c8dc64\",\n  \"Tan\": \"#e09c74\",\n  \"teal\": \"#007F7F\",\n  \"TealBlue\": \"#08acb4\",\n  \"Thistle\": \"#d884b4\",\n  \"Turquoise\": \"#08b4cc\",\n  \"violet\": \"#800080\",\n  \"Violet\": \"#60449c\",\n  \"VioletRed\": \"#f054a4\",\n  \"WildStrawberry\": \"#f0246c\",\n  \"yellow\": \"#FFFF00\",\n  \"Yellow\": \"#fff404\",\n  \"YellowGreen\": \"#98cc6c\",\n  \"YellowOrange\": \"#ffa41c\"\n}`);\n\nconst colorFromSpec = (model, spec) => {\n  let color = \"\";\n  if (model === \"HTML\") {\n    if (!htmlRegEx.test(spec)) {\n      throw new ParseError(\"Invalid HTML input.\")\n    }\n    color = spec;\n  } else if (model === \"RGB\") {\n    if (!RGBregEx.test(spec)) {\n      throw new ParseError(\"Invalid RGB input.\")\n    }\n    spec.split(\",\").map(e => { color += toHex(Number(e.trim())); });\n  } else {\n    if (!rgbRegEx.test(spec)) {\n      throw new ParseError(\"Invalid rbg input.\")\n    }\n    spec.split(\",\").map(e => {\n      const num = Number(e.trim());\n      if (num > 1) { throw new ParseError(\"Color rgb input must be < 1.\") }\n      color += toHex(Number((num * 255).toFixed(0)));\n    });\n  }\n  if (color.charAt(0) !== \"#\") { color = \"#\" + color; }\n  return color\n};\n\nconst validateColor = (color, macros, token) => {\n  const macroName = `\\\\\\\\color@${color}`; // from \\defineColor.\n  const match = htmlOrNameRegEx.exec(color);\n  if (!match) { throw new ParseError(\"Invalid color: '\" + color + \"'\", token) }\n  // We allow a 6-digit HTML color spec without a leading \"#\".\n  // This follows the xcolor package's HTML color model.\n  // Predefined color names are all missed by this RegEx pattern.\n  if (xcolorHtmlRegEx.test(color)) {\n    return \"#\" + color\n  } else if (color.charAt(0) === \"#\") {\n    return color\n  } else if (macros.has(macroName)) {\n    color = macros.get(macroName).tokens[0].text;\n  } else if (xcolors[color]) {\n    color = xcolors[color];\n  }\n  return color\n};\n\nconst mathmlBuilder$8 = (group, style) => {\n  // In LaTeX, color is not supposed to change the spacing of any node.\n  // So instead of wrapping the group in an <mstyle>, we apply\n  // the color individually to each node and return a document fragment.\n  let expr = buildExpression(group.body, style.withColor(group.color));\n  if (expr.length === 0) {\n    expr.push(new MathNode(\"mrow\"));\n  }\n  expr = expr.map(e => {\n    e.style.color = group.color;\n    return e\n  });\n  return newDocumentFragment(expr)\n};\n\ndefineFunction({\n  type: \"color\",\n  names: [\"\\\\textcolor\"],\n  props: {\n    numArgs: 2,\n    numOptionalArgs: 1,\n    allowedInText: true,\n    argTypes: [\"raw\", \"raw\", \"original\"]\n  },\n  handler({ parser, token }, args, optArgs) {\n    const model = optArgs[0] && assertNodeType(optArgs[0], \"raw\").string;\n    let color = \"\";\n    if (model) {\n      const spec = assertNodeType(args[0], \"raw\").string;\n      color = colorFromSpec(model, spec);\n    } else {\n      color = validateColor(assertNodeType(args[0], \"raw\").string, parser.gullet.macros, token);\n    }\n    const body = args[1];\n    return {\n      type: \"color\",\n      mode: parser.mode,\n      color,\n      isTextColor: true,\n      body: ordargument(body)\n    }\n  },\n  mathmlBuilder: mathmlBuilder$8\n});\n\ndefineFunction({\n  type: \"color\",\n  names: [\"\\\\color\"],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1,\n    allowedInText: true,\n    argTypes: [\"raw\", \"raw\"]\n  },\n  handler({ parser, breakOnTokenText, token }, args, optArgs) {\n    const model = optArgs[0] && assertNodeType(optArgs[0], \"raw\").string;\n    let color = \"\";\n    if (model) {\n      const spec = assertNodeType(args[0], \"raw\").string;\n      color = colorFromSpec(model, spec);\n    } else {\n      color = validateColor(assertNodeType(args[0], \"raw\").string, parser.gullet.macros, token);\n    }\n\n    // Parse out the implicit body that should be colored.\n    const body = parser.parseExpression(true, breakOnTokenText, true);\n\n    return {\n      type: \"color\",\n      mode: parser.mode,\n      color,\n      isTextColor: false,\n      body\n    }\n  },\n  mathmlBuilder: mathmlBuilder$8\n});\n\ndefineFunction({\n  type: \"color\",\n  names: [\"\\\\definecolor\"],\n  props: {\n    numArgs: 3,\n    allowedInText: true,\n    argTypes: [\"raw\", \"raw\", \"raw\"]\n  },\n  handler({ parser, funcName, token }, args) {\n    const name = assertNodeType(args[0], \"raw\").string;\n    if (!/^[A-Za-z]+$/.test(name)) {\n      throw new ParseError(\"Color name must be latin letters.\", token)\n    }\n    const model = assertNodeType(args[1], \"raw\").string;\n    if (![\"HTML\", \"RGB\", \"rgb\"].includes(model)) {\n      throw new ParseError(\"Color model must be HTML, RGB, or rgb.\", token)\n    }\n    const spec = assertNodeType(args[2], \"raw\").string;\n    const color = colorFromSpec(model, spec);\n    parser.gullet.macros.set(`\\\\\\\\color@${name}`, { tokens: [{ text: color }], numArgs: 0 });\n    return { type: \"internal\", mode: parser.mode }\n  }\n  // No mathmlBuilder. The point of \\definecolor is to set a macro.\n});\n\n// Row breaks within tabular environments, and line breaks at top level\n\n\n// \\DeclareRobustCommand\\\\{...\\@xnewline}\ndefineFunction({\n  type: \"cr\",\n  names: [\"\\\\\\\\\"],\n  props: {\n    numArgs: 0,\n    numOptionalArgs: 0,\n    allowedInText: true\n  },\n\n  handler({ parser }, args, optArgs) {\n    const size = parser.gullet.future().text === \"[\" ? parser.parseSizeGroup(true) : null;\n    const newLine = !parser.settings.displayMode;\n    return {\n      type: \"cr\",\n      mode: parser.mode,\n      newLine,\n      size: size && assertNodeType(size, \"size\").value\n    }\n  },\n\n  // The following builder is called only at the top level,\n  // not within tabular/array environments.\n\n  mathmlBuilder(group, style) {\n    // MathML 3.0 calls for newline to occur in an <mo> or an <mspace>.\n    // Ref: https://www.w3.org/TR/MathML3/chapter3.html#presm.linebreaking\n    const node = new MathNode(\"mo\");\n    if (group.newLine) {\n      node.setAttribute(\"linebreak\", \"newline\");\n      if (group.size) {\n        const size = calculateSize(group.size, style);\n        node.setAttribute(\"height\", size.number + size.unit);\n      }\n    }\n    return node\n  }\n});\n\nconst globalMap = {\n  \"\\\\global\": \"\\\\global\",\n  \"\\\\long\": \"\\\\\\\\globallong\",\n  \"\\\\\\\\globallong\": \"\\\\\\\\globallong\",\n  \"\\\\def\": \"\\\\gdef\",\n  \"\\\\gdef\": \"\\\\gdef\",\n  \"\\\\edef\": \"\\\\xdef\",\n  \"\\\\xdef\": \"\\\\xdef\",\n  \"\\\\let\": \"\\\\\\\\globallet\",\n  \"\\\\futurelet\": \"\\\\\\\\globalfuture\"\n};\n\nconst checkControlSequence = (tok) => {\n  const name = tok.text;\n  if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n    throw new ParseError(\"Expected a control sequence\", tok);\n  }\n  return name;\n};\n\nconst getRHS = (parser) => {\n  let tok = parser.gullet.popToken();\n  if (tok.text === \"=\") {\n    // consume optional equals\n    tok = parser.gullet.popToken();\n    if (tok.text === \" \") {\n      // consume one optional space\n      tok = parser.gullet.popToken();\n    }\n  }\n  return tok;\n};\n\nconst letCommand = (parser, name, tok, global) => {\n  let macro = parser.gullet.macros.get(tok.text);\n  if (macro == null) {\n    // don't expand it later even if a macro with the same name is defined\n    // e.g., \\let\\foo=\\frac \\def\\frac{\\relax} \\frac12\n    tok.noexpand = true;\n    macro = {\n      tokens: [tok],\n      numArgs: 0,\n      // reproduce the same behavior in expansion\n      unexpandable: !parser.gullet.isExpandable(tok.text)\n    };\n  }\n  parser.gullet.macros.set(name, macro, global);\n};\n\n// <assignment> -> <non-macro assignment>|<macro assignment>\n// <non-macro assignment> -> <simple assignment>|\\global<non-macro assignment>\n// <macro assignment> -> <definition>|<prefix><macro assignment>\n// <prefix> -> \\global|\\long|\\outer\ndefineFunction({\n  type: \"internal\",\n  names: [\n    \"\\\\global\",\n    \"\\\\long\",\n    \"\\\\\\\\globallong\" // can’t be entered directly\n  ],\n  props: {\n    numArgs: 0,\n    allowedInText: true\n  },\n  handler({ parser, funcName }) {\n    parser.consumeSpaces();\n    const token = parser.fetch();\n    if (globalMap[token.text]) {\n      // Temml doesn't have \\par, so ignore \\long\n      if (funcName === \"\\\\global\" || funcName === \"\\\\\\\\globallong\") {\n        token.text = globalMap[token.text];\n      }\n      return assertNodeType(parser.parseFunction(), \"internal\");\n    }\n    throw new ParseError(`Invalid token after macro prefix`, token);\n  }\n});\n\n// Basic support for macro definitions: \\def, \\gdef, \\edef, \\xdef\n// <definition> -> <def><control sequence><definition text>\n// <def> -> \\def|\\gdef|\\edef|\\xdef\n// <definition text> -> <parameter text><left brace><balanced text><right brace>\ndefineFunction({\n  type: \"internal\",\n  names: [\"\\\\def\", \"\\\\gdef\", \"\\\\edef\", \"\\\\xdef\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    primitive: true\n  },\n  handler({ parser, funcName }) {\n    let tok = parser.gullet.popToken();\n    const name = tok.text;\n    if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n      throw new ParseError(\"Expected a control sequence\", tok);\n    }\n\n    let numArgs = 0;\n    let insert;\n    const delimiters = [[]];\n    // <parameter text> contains no braces\n    while (parser.gullet.future().text !== \"{\") {\n      tok = parser.gullet.popToken();\n      if (tok.text === \"#\") {\n        // If the very last character of the <parameter text> is #, so that\n        // this # is immediately followed by {, TeX will behave as if the {\n        // had been inserted at the right end of both the parameter text\n        // and the replacement text.\n        if (parser.gullet.future().text === \"{\") {\n          insert = parser.gullet.future();\n          delimiters[numArgs].push(\"{\");\n          break;\n        }\n\n        // A parameter, the first appearance of # must be followed by 1,\n        // the next by 2, and so on; up to nine #’s are allowed\n        tok = parser.gullet.popToken();\n        if (!/^[1-9]$/.test(tok.text)) {\n          throw new ParseError(`Invalid argument number \"${tok.text}\"`);\n        }\n        if (parseInt(tok.text) !== numArgs + 1) {\n          throw new ParseError(`Argument number \"${tok.text}\" out of order`);\n        }\n        numArgs++;\n        delimiters.push([]);\n      } else if (tok.text === \"EOF\") {\n        throw new ParseError(\"Expected a macro definition\");\n      } else {\n        delimiters[numArgs].push(tok.text);\n      }\n    }\n    // replacement text, enclosed in '{' and '}' and properly nested\n    let { tokens } = parser.gullet.consumeArg();\n    if (insert) {\n      tokens.unshift(insert);\n    }\n\n    if (funcName === \"\\\\edef\" || funcName === \"\\\\xdef\") {\n      tokens = parser.gullet.expandTokens(tokens);\n      if (tokens.length > parser.gullet.settings.maxExpand) {\n        throw new ParseError(\"Too many expansions in an \" + funcName);\n      }\n      tokens.reverse(); // to fit in with stack order\n    }\n    // Final arg is the expansion of the macro\n    parser.gullet.macros.set(\n      name,\n      { tokens, numArgs, delimiters },\n      funcName === globalMap[funcName]\n    );\n    return { type: \"internal\", mode: parser.mode };\n  }\n});\n\n// <simple assignment> -> <let assignment>\n// <let assignment> -> \\futurelet<control sequence><token><token>\n//     | \\let<control sequence><equals><one optional space><token>\n// <equals> -> <optional spaces>|<optional spaces>=\ndefineFunction({\n  type: \"internal\",\n  names: [\n    \"\\\\let\",\n    \"\\\\\\\\globallet\" // can’t be entered directly\n  ],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    primitive: true\n  },\n  handler({ parser, funcName }) {\n    const name = checkControlSequence(parser.gullet.popToken());\n    parser.gullet.consumeSpaces();\n    const tok = getRHS(parser);\n    letCommand(parser, name, tok, funcName === \"\\\\\\\\globallet\");\n    return { type: \"internal\", mode: parser.mode };\n  }\n});\n\n// ref: https://www.tug.org/TUGboat/tb09-3/tb22bechtolsheim.pdf\ndefineFunction({\n  type: \"internal\",\n  names: [\n    \"\\\\futurelet\",\n    \"\\\\\\\\globalfuture\" // can’t be entered directly\n  ],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    primitive: true\n  },\n  handler({ parser, funcName }) {\n    const name = checkControlSequence(parser.gullet.popToken());\n    const middle = parser.gullet.popToken();\n    const tok = parser.gullet.popToken();\n    letCommand(parser, name, tok, funcName === \"\\\\\\\\globalfuture\");\n    parser.gullet.pushToken(tok);\n    parser.gullet.pushToken(middle);\n    return { type: \"internal\", mode: parser.mode };\n  }\n});\n\ndefineFunction({\n  type: \"internal\",\n  names: [\"\\\\newcommand\", \"\\\\renewcommand\", \"\\\\providecommand\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    primitive: true\n  },\n  handler({ parser, funcName }) {\n    let name = \"\";\n    const tok = parser.gullet.popToken();\n    if (tok.text === \"{\") {\n      name = checkControlSequence(parser.gullet.popToken());\n      parser.gullet.popToken();\n    } else {\n      name = checkControlSequence(tok);\n    }\n\n    const exists = parser.gullet.isDefined(name);\n    if (exists && funcName === \"\\\\newcommand\") {\n      throw new ParseError(\n        `\\\\newcommand{${name}} attempting to redefine ${name}; use \\\\renewcommand`\n      );\n    }\n    if (!exists && funcName === \"\\\\renewcommand\") {\n      throw new ParseError(\n        `\\\\renewcommand{${name}} when command ${name} does not yet exist; use \\\\newcommand`\n      );\n    }\n\n    let numArgs = 0;\n    if (parser.gullet.future().text === \"[\") {\n      let tok = parser.gullet.popToken();\n      tok = parser.gullet.popToken();\n      if (!/^[0-9]$/.test(tok.text)) {\n        throw new ParseError(`Invalid number of arguments: \"${tok.text}\"`);\n      }\n      numArgs = parseInt(tok.text);\n      tok = parser.gullet.popToken();\n      if (tok.text !== \"]\") {\n        throw new ParseError(`Invalid argument \"${tok.text}\"`);\n      }\n    }\n\n    // replacement text, enclosed in '{' and '}' and properly nested\n    const { tokens } = parser.gullet.consumeArg();\n\n    if (!(funcName === \"\\\\providecommand\" && parser.gullet.macros.has(name))) {\n      // Ignore \\providecommand\n      parser.gullet.macros.set(\n        name,\n        { tokens, numArgs }\n      );\n    }\n\n    return { type: \"internal\", mode: parser.mode };\n\n  }\n});\n\n// Extra data needed for the delimiter handler down below\nconst delimiterSizes = {\n  \"\\\\bigl\": { mclass: \"mopen\", size: 1 },\n  \"\\\\Bigl\": { mclass: \"mopen\", size: 2 },\n  \"\\\\biggl\": { mclass: \"mopen\", size: 3 },\n  \"\\\\Biggl\": { mclass: \"mopen\", size: 4 },\n  \"\\\\bigr\": { mclass: \"mclose\", size: 1 },\n  \"\\\\Bigr\": { mclass: \"mclose\", size: 2 },\n  \"\\\\biggr\": { mclass: \"mclose\", size: 3 },\n  \"\\\\Biggr\": { mclass: \"mclose\", size: 4 },\n  \"\\\\bigm\": { mclass: \"mrel\", size: 1 },\n  \"\\\\Bigm\": { mclass: \"mrel\", size: 2 },\n  \"\\\\biggm\": { mclass: \"mrel\", size: 3 },\n  \"\\\\Biggm\": { mclass: \"mrel\", size: 4 },\n  \"\\\\big\": { mclass: \"mord\", size: 1 },\n  \"\\\\Big\": { mclass: \"mord\", size: 2 },\n  \"\\\\bigg\": { mclass: \"mord\", size: 3 },\n  \"\\\\Bigg\": { mclass: \"mord\", size: 4 }\n};\n\nconst leftToRight = {\n  \"(\": \")\",\n  \"\\\\lparen\": \"\\\\rparen\",\n  \"[\": \"]\",\n  \"\\\\lbrack\": \"\\\\rbrack\",\n  \"\\\\{\": \"\\\\}\",\n  \"\\\\lbrace\": \"\\\\rbrace\",\n  \"⦇\": \"⦈\",\n  \"\\\\llparenthesis\": \"\\\\rrparenthesis\",\n  \"\\\\lfloor\": \"\\\\rfloor\",\n  \"\\u230a\": \"\\u230b\",\n  \"\\\\lceil\": \"\\\\rceil\",\n  \"\\u2308\": \"\\u2309\",\n  \"\\\\langle\": \"\\\\rangle\",\n  \"\\u27e8\": \"\\u27e9\",\n  \"\\\\lAngle\": \"\\\\rAngle\",\n  \"\\u27ea\": \"\\u27eb\",\n  \"\\\\llangle\": \"\\\\rrangle\",\n  \"⦉\": \"⦊\",\n  \"\\\\lvert\": \"\\\\rvert\",\n  \"\\\\lVert\": \"\\\\rVert\",\n  \"\\\\lgroup\": \"\\\\rgroup\",\n  \"\\u27ee\": \"\\u27ef\",\n  \"\\\\lmoustache\": \"\\\\rmoustache\",\n  \"\\u23b0\": \"\\u23b1\",\n  \"\\\\llbracket\": \"\\\\rrbracket\",\n  \"\\u27e6\": \"\\u27e7\",\n  \"\\\\lBrace\": \"\\\\rBrace\",\n  \"\\u2983\": \"\\u2984\"\n};\n\nconst leftDelimiterNames = new Set(Object.keys(leftToRight));\nnew Set(Object.values(leftToRight));\n\nconst delimiters = new Set([\n  \"(\",\n  \"\\\\lparen\",\n  \")\",\n  \"\\\\rparen\",\n  \"[\",\n  \"\\\\lbrack\",\n  \"]\",\n  \"\\\\rbrack\",\n  \"\\\\{\",\n  \"\\\\lbrace\",\n  \"\\\\}\",\n  \"\\\\rbrace\",\n  \"⦇\",\n  \"\\\\llparenthesis\",\n  \"⦈\",\n  \"\\\\rrparenthesis\",\n  \"\\\\lfloor\",\n  \"\\\\rfloor\",\n  \"\\u230a\",\n  \"\\u230b\",\n  \"\\\\lceil\",\n  \"\\\\rceil\",\n  \"\\u2308\",\n  \"\\u2309\",\n  \"<\",\n  \">\",\n  \"\\\\langle\",\n  \"\\u27e8\",\n  \"\\\\rangle\",\n  \"\\u27e9\",\n  \"\\\\lAngle\",\n  \"\\u27ea\",\n  \"\\\\rAngle\",\n  \"\\u27eb\",\n  \"\\\\llangle\",\n  \"⦉\",\n  \"\\\\rrangle\",\n  \"⦊\",\n  \"\\\\lt\",\n  \"\\\\gt\",\n  \"\\\\lvert\",\n  \"\\\\rvert\",\n  \"\\\\lVert\",\n  \"\\\\rVert\",\n  \"\\\\lgroup\",\n  \"\\\\rgroup\",\n  \"\\u27ee\",\n  \"\\u27ef\",\n  \"\\\\lmoustache\",\n  \"\\\\rmoustache\",\n  \"\\u23b0\",\n  \"\\u23b1\",\n  \"\\\\llbracket\",\n  \"\\\\rrbracket\",\n  \"\\u27e6\",\n  \"\\u27e7\",\n  \"\\\\lBrace\",\n  \"\\\\rBrace\",\n  \"\\u2983\",\n  \"\\u2984\",\n  \"/\",\n  \"\\\\backslash\",\n  \"|\",\n  \"\\\\vert\",\n  \"\\\\|\",\n  \"\\\\Vert\",\n  \"\\u2016\",\n  \"\\\\uparrow\",\n  \"\\\\Uparrow\",\n  \"\\\\downarrow\",\n  \"\\\\Downarrow\",\n  \"\\\\updownarrow\",\n  \"\\\\Updownarrow\",\n  \".\"\n]);\n\n// Export isDelimiter for benefit of parser.\nconst dels = new Set([\"}\", \"\\\\left\", \"\\\\middle\", \"\\\\right\"]);\nconst isDelimiter = str => str.length > 0 &&\n  (delimiters.has(str) || delimiterSizes[str] || dels.has(str));\n\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nconst sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n\n// Delimiter functions\nfunction checkDelimiter(delim, context) {\n  if (delim.type === \"ordgroup\" && delim.body.length === 1) {\n    delim = delim.body[0]; // Unwrap the braces\n  }\n  const symDelim = checkSymbolNodeType(delim);\n  if (symDelim && delimiters.has(symDelim.text)) {\n    // If a character is not in the MathML operator dictionary, it will not stretch.\n    // Replace such characters w/characters that will stretch.\n    if (symDelim.text === \"<\" || symDelim.text === \"\\\\lt\") { symDelim.text = \"⟨\"; }\n    if (symDelim.text === \">\" || symDelim.text === \"\\\\gt\") { symDelim.text = \"⟩\"; }\n    return symDelim;\n  } else if (symDelim) {\n    throw new ParseError(`Invalid delimiter '${symDelim.text}' after '${context.funcName}'`, delim);\n  } else {\n    throw new ParseError(`Invalid delimiter type '${delim.type}'`, delim);\n  }\n}\n\n//                               /         \\\nconst needExplicitStretch = new Set([\"\\u002F\", \"\\u005C\", \"\\\\backslash\", \"\\u2216\", \"\\\\vert\", \"|\"]);\n\nconst makeFenceMo = (delim, mode, form, isStretchy) => {\n  const text = delim === \".\" ? \"\" : delim;\n  const node = new MathNode(\"mo\", [makeText(text, mode)]);\n  node.setAttribute(\"fence\", \"true\");\n  node.setAttribute(\"form\", form);\n  node.setAttribute(\"stretchy\", isStretchy ? \"true\" : \"false\");\n  return node;\n};\n\ndefineFunction({\n  type: \"delimsizing\",\n  names: [\n    \"\\\\bigl\",\n    \"\\\\Bigl\",\n    \"\\\\biggl\",\n    \"\\\\Biggl\",\n    \"\\\\bigr\",\n    \"\\\\Bigr\",\n    \"\\\\biggr\",\n    \"\\\\Biggr\",\n    \"\\\\bigm\",\n    \"\\\\Bigm\",\n    \"\\\\biggm\",\n    \"\\\\Biggm\",\n    \"\\\\big\",\n    \"\\\\Big\",\n    \"\\\\bigg\",\n    \"\\\\Bigg\"\n  ],\n  props: {\n    numArgs: 1,\n    argTypes: [\"primitive\"]\n  },\n  handler: (context, args) => {\n    const delim = checkDelimiter(args[0], context);\n\n    const delimNode = {\n      type: \"delimsizing\",\n      mode: context.parser.mode,\n      size: delimiterSizes[context.funcName].size,\n      mclass: delimiterSizes[context.funcName].mclass,\n      delim: delim.text\n    };\n    const nextToken = context.parser.fetch().text;\n    if (nextToken !== \"^\" && nextToken !== \"_\") {\n      return delimNode\n    } else {\n      // Chromium mis-renders a sized delim if it is the base of a supsub.\n      // So wrap it in a ordgroup.\n      return {\n        type: \"ordgroup\",\n        mode: \"math\",\n        body: [delimNode, { type: \"ordgroup\", mode: \"math\", body: [] }]\n      }\n    }\n  },\n  mathmlBuilder: (group) => {\n    const children = [];\n    const delim = group.delim === \".\" ? \"\" : group.delim;\n\n    children.push(makeText(delim, group.mode));\n\n    const node = new MathNode(\"mo\", children);\n\n    if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n      // Only some of the delimsizing functions act as fences, and they\n      // return \"mopen\" or \"mclose\" mclass.\n      node.setAttribute(\"fence\", \"true\");\n    } else {\n      // Explicitly disable fencing if it's not a fence, to override the\n      // defaults.\n      node.setAttribute(\"fence\", \"false\");\n    }\n    if (needExplicitStretch.has(delim) || delim.indexOf(\"arrow\") > -1) {\n      // We have to explicitly set stretchy to true.\n      node.setAttribute(\"stretchy\", \"true\");\n    }\n    node.setAttribute(\"symmetric\", \"true\"); // Needed for tall arrows in Firefox.\n    node.setAttribute(\"minsize\", sizeToMaxHeight[group.size] + \"em\");\n    node.setAttribute(\"maxsize\", sizeToMaxHeight[group.size] + \"em\");\n    return node;\n  }\n});\n\nfunction assertParsed(group) {\n  if (!group.body) {\n    throw new Error(\"Bug: The delim ParseNode wasn't fully parsed.\");\n  }\n}\n\ndefineFunction({\n  type: \"leftright-right\",\n  names: [\"\\\\right\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"primitive\"]\n  },\n  handler: (context, args) => {\n    return {\n      type: \"leftright-right\",\n      mode: context.parser.mode,\n      delim: checkDelimiter(args[0], context).text\n    };\n  }\n});\n\ndefineFunction({\n  type: \"leftright\",\n  names: [\"\\\\left\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"primitive\"]\n  },\n  handler: (context, args) => {\n    const delim = checkDelimiter(args[0], context);\n\n    const parser = context.parser;\n    ++parser.leftrightDepth;\n    let body = parser.parseExpression(false, \"\\\\right\", true);\n    let nextToken = parser.fetch();\n    while (nextToken.text === \"\\\\middle\") {\n      parser.consume();\n      const middle = parser.fetch().text;\n      if (!symbols.math[middle]) {\n        throw new ParseError(`Invalid delimiter '${middle}' after '\\\\middle'`);\n      }\n      checkDelimiter({ type: \"atom\", mode: \"math\", text: middle }, { funcName: \"\\\\middle\" });\n      body.push({ type: \"middle\", mode: \"math\", delim: middle });\n      parser.consume();\n      body = body.concat(parser.parseExpression(false, \"\\\\right\", true));\n      nextToken = parser.fetch();\n    }\n    --parser.leftrightDepth;\n    parser.expect(\"\\\\right\", false);\n    const right = assertNodeType(parser.parseFunction(), \"leftright-right\");\n    return {\n      type: \"leftright\",\n      mode: parser.mode,\n      body,\n      left: delim.text,\n      right: right.delim,\n      isStretchy: true\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    assertParsed(group);\n    const inner = buildExpression(group.body, style);\n\n    const leftNode = makeFenceMo(group.left, group.mode, \"prefix\", true);\n    inner.unshift(leftNode);\n\n    const rightNode = makeFenceMo(group.right, group.mode, \"postfix\", true);\n    if (group.body.length > 0) {\n      const lastElement = group.body[group.body.length - 1];\n      if (lastElement.type === \"color\" && !lastElement.isTextColor) {\n        rightNode.setAttribute(\"mathcolor\", lastElement.color);\n      }\n    }\n    inner.push(rightNode);\n\n    return makeRow(inner);\n  }\n});\n\ndefineFunction({\n  type: \"delimiter\",\n  names: Array.from(leftDelimiterNames),\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    allowedInMath: true,\n    allowedInArgument: true\n  },\n  handler: ({ parser, funcName, token }) => {\n    if (parser.mode === \"text\") {\n      return {\n        type: \"textord\",\n        mode: \"text\",\n        text: funcName,\n        loc: token.loc\n      }\n    } else if (!parser.settings.wrapDelimiterPairs) {\n      // Treat this token as an ordinary symbol.\n      return {\n        type: \"atom\",\n        mode: \"math\",\n        family: \"open\",\n        loc: token.loc,\n        text: funcName\n      };\n    }\n    // Otherwise, try to wrap a pair of delimiters with an <mrow>.\n    const rightDelim = leftToRight[funcName];\n    // Parse the inner expression, looking for the corresponding right delimiter.\n    const body = parser.parseExpression(false, rightDelim, false);\n    const nextToken = parser.fetch().text;\n\n    if (nextToken !== rightDelim) {\n      // We were unable to find a matching right delimiter.\n      // Throw control back to renderToMathMLTree.\n      // It will reparse the entire expression with wrapDelimiterPairs set to false.\n      throw new ParseError(\"Unmatched delimiter\");\n    }\n    parser.consume();\n\n    return {\n      type: \"delimiter\",\n      mode: parser.mode,\n      body,\n      left: funcName,\n      right: rightDelim\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    assertParsed(group);\n    const inner = buildExpression(group.body, style);\n\n    const leftNode = makeFenceMo(group.left, group.mode, \"prefix\", false);\n    inner.unshift(leftNode);\n\n    const rightNode = makeFenceMo(group.right, group.mode, \"postfix\", false);\n    if (group.body.length > 0) {\n      const lastElement = group.body[group.body.length - 1];\n      if (lastElement.type === \"color\" && !lastElement.isTextColor) {\n        rightNode.setAttribute(\"mathcolor\", lastElement.color);\n      }\n    }\n    inner.push(rightNode);\n\n    return makeRow(inner);\n  }\n});\n\ndefineFunction({\n  type: \"middle\",\n  names: [\"\\\\middle\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"primitive\"]\n  },\n  handler: (context, args) => {\n    const delim = checkDelimiter(args[0], context);\n    if (!context.parser.leftrightDepth) {\n      throw new ParseError(\"\\\\middle without preceding \\\\left\", delim);\n    }\n\n    return {\n      type: \"middle\",\n      mode: context.parser.mode,\n      delim: delim.text\n    };\n  },\n  mathmlBuilder: (group) => {\n    const textNode = makeText(group.delim, group.mode);\n    const middleNode = new MathNode(\"mo\", [textNode]);\n    middleNode.setAttribute(\"stretchy\", \"true\");\n    middleNode.setAttribute(\"form\", \"infix\");\n    if (textNode.text !== \"/\") {\n      // MathML gives 5/18em spacing to each <mo> element.\n      // \\middle should get delimiter spacing instead.\n      middleNode.setAttribute(\"lspace\", \"0.05em\");\n      middleNode.setAttribute(\"rspace\", \"0.05em\");\n    }\n    return middleNode;\n  }\n});\n\nconst boxTags = [\"\\\\boxed\", \"\\\\fcolorbox\", \"\\\\colorbox\"];\n\nconst mathmlBuilder$7 = (group, style) => {\n  const tag = boxTags.includes(group.label) ? \"mrow\" : \"menclose\";\n  const node = new MathNode(tag, [buildGroup$1(group.body, style)]);\n  switch (group.label) {\n    case \"\\\\overline\":\n      node.setAttribute(\"notation\", \"top\"); // for Firefox & WebKit\n      node.classes.push(\"tml-overline\");    // for Chromium\n      break\n    case \"\\\\underline\":\n      node.setAttribute(\"notation\", \"bottom\");\n      node.classes.push(\"tml-underline\");\n      break\n    case \"\\\\cancel\":\n      node.setAttribute(\"notation\", \"updiagonalstrike\");\n      node.children.push(new MathNode(\"mrow\", [], [\"tml-cancel\", \"upstrike\"]));\n      break\n    case \"\\\\bcancel\":\n      node.setAttribute(\"notation\", \"downdiagonalstrike\");\n      node.children.push(new MathNode(\"mrow\", [], [\"tml-cancel\", \"downstrike\"]));\n      break\n    case \"\\\\sout\":\n      node.setAttribute(\"notation\", \"horizontalstrike\");\n      node.children.push(new MathNode(\"mrow\", [], [\"tml-cancel\", \"sout\"]));\n      break\n    case \"\\\\xcancel\":\n      node.setAttribute(\"notation\", \"updiagonalstrike downdiagonalstrike\");\n      node.children.push(new MathNode(\"mrow\", [], [\"tml-cancel\", \"tml-xcancel\"]));\n      break\n    // cancelto is handled in cancelto.js\n    case \"\\\\longdiv\":\n      node.setAttribute(\"notation\", \"longdiv\");\n      node.classes.push(\"longdiv-top\");\n      node.children.push(new MathNode(\"mrow\", [], [\"longdiv-arc\"]));\n      break\n    case \"\\\\phase\":\n      node.setAttribute(\"notation\", \"phasorangle\");\n      node.classes.push(\"phasor-bottom\");\n      node.children.push(new MathNode(\"mrow\", [], [\"phasor-angle\"]));\n      break\n    case \"\\\\textcircled\":\n      node.setAttribute(\"notation\", \"circle\");\n      node.classes.push(\"circle-pad\");\n      node.children.push(new MathNode(\"mrow\", [], [\"textcircle\"]));\n      break\n    case \"\\\\angl\":\n      node.setAttribute(\"notation\", \"actuarial\");\n      node.classes.push(\"actuarial\");\n      break\n    case \"\\\\boxed\":\n      // \\newcommand{\\boxed}[1]{\\fbox{\\m@th$\\displaystyle#1$}} from amsmath.sty\n      node.style.padding = \"3pt\";\n      node.style.border = \"1px solid\";\n      node.setAttribute(\"scriptlevel\", \"0\");\n      node.setAttribute(\"displaystyle\", \"true\");\n      break\n    case \"\\\\fbox\":\n      node.setAttribute(\"notation\", \"box\");\n      node.classes.push(\"tml-fbox\");\n      break\n    case \"\\\\fcolorbox\":\n    case \"\\\\colorbox\": {\n      // Don't use <menclose>. WebKit would show a radical.\n      node.style.padding = \"0.3em\";  // 3 pt from LaTeX source2e for a 10pt font\n      if (group.label === \"\\\\fcolorbox\") {\n        node.style.border = \"0.0667em solid \" + String(group.borderColor);\n      }\n      break\n    }\n  }\n  if (group.backgroundColor) {\n    node.setAttribute(\"mathbackground\", group.backgroundColor);\n  }\n  return node;\n};\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\colorbox\"],\n  props: {\n    numArgs: 2,\n    numOptionalArgs: 1,\n    allowedInText: true,\n    argTypes: [\"raw\", \"raw\", \"text\"]\n  },\n  handler({ parser, funcName }, args, optArgs) {\n    const model = optArgs[0] && assertNodeType(optArgs[0], \"raw\").string;\n    let color = \"\";\n    if (model) {\n      const spec = assertNodeType(args[0], \"raw\").string;\n      color = colorFromSpec(model, spec);\n    } else {\n      color = validateColor(assertNodeType(args[0], \"raw\").string, parser.gullet.macros);\n    }\n    const body = args[1];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      backgroundColor: color,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\fcolorbox\"],\n  props: {\n    numArgs: 3,\n    numOptionalArgs: 1,\n    allowedInText: true,\n    argTypes: [\"raw\", \"raw\", \"raw\", \"text\"]\n  },\n  handler({ parser, funcName }, args, optArgs) {\n    const model = optArgs[0] && assertNodeType(optArgs[0], \"raw\").string;\n    let borderColor = \"\";\n    let backgroundColor;\n    if (model) {\n      const borderSpec = assertNodeType(args[0], \"raw\").string;\n      const backgroundSpec = assertNodeType(args[0], \"raw\").string;\n      borderColor = colorFromSpec(model, borderSpec);\n      backgroundColor = colorFromSpec(model, backgroundSpec);\n    } else {\n      borderColor = validateColor(assertNodeType(args[0], \"raw\").string, parser.gullet.macros);\n      backgroundColor = validateColor(assertNodeType(args[1], \"raw\").string, parser.gullet.macros);\n    }\n    const body = args[2];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      backgroundColor,\n      borderColor,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\fbox\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"hbox\"],\n    allowedInText: true\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: \"\\\\fbox\",\n      body: args[0]\n    };\n  }\n});\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\angl\", \"\\\\cancel\", \"\\\\bcancel\", \"\\\\xcancel\", \"\\\\overline\",\n    \"\\\\boxed\", \"\\\\longdiv\", \"\\\\phase\"],\n  props: {\n    numArgs: 1\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\sout\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\underline\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\n\ndefineFunction({\n  type: \"enclose\",\n  names: [\"\\\\textcircled\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"text\"],\n    allowedInArgument: true,\n    allowedInText: true\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    return {\n      type: \"enclose\",\n      mode: parser.mode,\n      label: funcName,\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$7\n});\n\n// Environment delimiters. HTML/MathML rendering is defined in the corresponding\n// defineEnvironment definitions.\ndefineFunction({\n  type: \"environment\",\n  names: [\"\\\\begin\", \"\\\\end\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"text\"]\n  },\n  handler({ parser, funcName }, args) {\n    const nameGroup = args[0];\n    if (nameGroup.type !== \"ordgroup\") {\n      throw new ParseError(\"Invalid environment name\", nameGroup);\n    }\n    let envName = \"\";\n    for (let i = 0; i < nameGroup.body.length; ++i) {\n      envName += assertNodeType(nameGroup.body[i], \"textord\").text;\n    }\n\n    if (funcName === \"\\\\begin\") {\n      // begin...end is similar to left...right\n      if (!Object.prototype.hasOwnProperty.call(environments, envName )) {\n        throw new ParseError(\"No such environment: \" + envName, nameGroup);\n      }\n      // Build the environment object. Arguments and other information will\n      // be made available to the begin and end methods using properties.\n      const env = environments[envName];\n      const { args, optArgs } = parser.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n      const context = {\n        mode: parser.mode,\n        envName,\n        parser\n      };\n      const result = env.handler(context, args, optArgs);\n      parser.expect(\"\\\\end\", false);\n      const endNameToken = parser.nextToken;\n      const end = assertNodeType(parser.parseFunction(), \"environment\");\n      if (end.name !== envName) {\n        throw new ParseError(\n          `Mismatch: \\\\begin{${envName}} matched by \\\\end{${end.name}}`,\n          endNameToken\n        );\n      }\n      return result;\n    }\n\n    return {\n      type: \"environment\",\n      mode: parser.mode,\n      name: envName,\n      nameGroup\n    };\n  }\n});\n\ndefineFunction({\n  type: \"envTag\",\n  names: [\"\\\\env@tag\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"math\"]\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"envTag\",\n      mode: parser.mode,\n      body: args[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    return new MathNode(\"mrow\");\n  }\n});\n\ndefineFunction({\n  type: \"noTag\",\n  names: [\"\\\\env@notag\"],\n  props: {\n    numArgs: 0\n  },\n  handler({ parser }) {\n    return {\n      type: \"noTag\",\n      mode: parser.mode\n    };\n  },\n  mathmlBuilder(group, style) {\n    return new MathNode(\"mrow\");\n  }\n});\n\n// Chromium does not support the MathML `mathvariant` attribute.\n// Instead, we replace ASCII characters with Unicode characters that\n// are defined in the font as bold, italic, double-struck, etc.\n// This module identifies those Unicode code points.\n\n// First, a few helpers.\nconst script = Object.freeze({\n  B: 0x20EA, // Offset from ASCII B to Unicode script B\n  E: 0x20EB,\n  F: 0x20EB,\n  H: 0x20C3,\n  I: 0x20C7,\n  L: 0x20C6,\n  M: 0x20E6,\n  R: 0x20C9,\n  e: 0x20CA,\n  g: 0x20A3,\n  o: 0x20C5\n});\n\nconst frak = Object.freeze({\n  C: 0x20EA,\n  H: 0x20C4,\n  I: 0x20C8,\n  R: 0x20CA,\n  Z: 0x20CE\n});\n\nconst bbb = Object.freeze({\n  C: 0x20BF, // blackboard bold\n  H: 0x20C5,\n  N: 0x20C7,\n  P: 0x20C9,\n  Q: 0x20C9,\n  R: 0x20CB,\n  Z: 0x20CA\n});\n\nconst bold = Object.freeze({\n  \"\\u03f5\": 0x1D2E7, // lunate epsilon\n  \"\\u03d1\": 0x1D30C, // vartheta\n  \"\\u03f0\": 0x1D2EE, // varkappa\n  \"\\u03c6\": 0x1D319, // varphi\n  \"\\u03f1\": 0x1D2EF, // varrho\n  \"\\u03d6\": 0x1D30B  // varpi\n});\n\nconst boldItalic = Object.freeze({\n  \"\\u03f5\": 0x1D35B, // lunate epsilon\n  \"\\u03d1\": 0x1D380, // vartheta\n  \"\\u03f0\": 0x1D362, // varkappa\n  \"\\u03c6\": 0x1D38D, // varphi\n  \"\\u03f1\": 0x1D363, // varrho\n  \"\\u03d6\": 0x1D37F  // varpi\n});\n\nconst boldsf = Object.freeze({\n  \"\\u03f5\": 0x1D395, // lunate epsilon\n  \"\\u03d1\": 0x1D3BA, // vartheta\n  \"\\u03f0\": 0x1D39C, // varkappa\n  \"\\u03c6\": 0x1D3C7, // varphi\n  \"\\u03f1\": 0x1D39D, // varrho\n  \"\\u03d6\": 0x1D3B9  // varpi\n});\n\nconst bisf = Object.freeze({\n  \"\\u03f5\": 0x1D3CF, // lunate epsilon\n  \"\\u03d1\": 0x1D3F4, // vartheta\n  \"\\u03f0\": 0x1D3D6, // varkappa\n  \"\\u03c6\": 0x1D401, // varphi\n  \"\\u03f1\": 0x1D3D7, // varrho\n  \"\\u03d6\": 0x1D3F3  // varpi\n});\n\n// Code point offsets below are derived from https://www.unicode.org/charts/PDF/U1D400.pdf\nconst offset = Object.freeze({\n  upperCaseLatin: { // A-Z\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return 0x1D3BF },\n    \"italic\": ch =>                 { return 0x1D3F3 },\n    \"bold-italic\": ch =>            { return 0x1D427 },\n    \"script\": ch =>                 { return script[ch] || 0x1D45B },\n    \"script-bold\": ch =>            { return 0x1D48F },\n    \"fraktur\": ch =>                { return frak[ch] || 0x1D4C3 },\n    \"fraktur-bold\": ch =>           { return 0x1D52B },\n    \"double-struck\": ch =>          { return bbb[ch] || 0x1D4F7 },\n    \"sans-serif\": ch =>             { return 0x1D55F },\n    \"sans-serif-bold\": ch =>        { return 0x1D593 },\n    \"sans-serif-italic\": ch =>      { return 0x1D5C7 },\n    \"sans-serif-bold-italic\": ch => { return 0x1D63C },\n    \"monospace\": ch =>              { return 0x1D62F }\n  },\n  lowerCaseLatin: { // a-z\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return 0x1D3B9 },\n    \"italic\": ch =>                 { return ch === \"h\" ? 0x20A6 : 0x1D3ED },\n    \"bold-italic\": ch =>            { return 0x1D421 },\n    \"script\": ch =>                 { return script[ch] || 0x1D455 },\n    \"script-bold\": ch =>            { return 0x1D489 },\n    \"fraktur\": ch =>                { return 0x1D4BD },\n    \"fraktur-bold\": ch =>           { return 0x1D525 },\n    \"double-struck\": ch =>          { return 0x1D4F1 },\n    \"sans-serif\": ch =>             { return 0x1D559 },\n    \"sans-serif-bold\": ch =>        { return 0x1D58D },\n    \"sans-serif-italic\": ch =>      { return 0x1D5C1 },\n    \"sans-serif-bold-italic\": ch => { return 0x1D5F5 },\n    \"monospace\": ch =>              { return 0x1D629 }\n  },\n  upperCaseGreek: { // A-Ω\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return 0x1D317 },\n    \"italic\": ch =>                 { return 0x1D351 },\n    // \\boldsymbol actually returns upright bold for upperCaseGreek\n    \"bold-italic\": ch =>            { return 0x1D317 },\n    \"script\": ch =>                 { return 0 },\n    \"script-bold\": ch =>            { return 0 },\n    \"fraktur\": ch =>                { return 0 },\n    \"fraktur-bold\": ch =>           { return 0 },\n    \"double-struck\": ch =>          { return 0 },\n    // Unicode has no code points for regular-weight san-serif Greek. Use bold.\n    \"sans-serif\": ch =>             { return 0x1D3C5 },\n    \"sans-serif-bold\": ch =>        { return 0x1D3C5 },\n    \"sans-serif-italic\": ch =>      { return 0 },\n    \"sans-serif-bold-italic\": ch => { return 0x1D3FF },\n    \"monospace\": ch =>              { return 0 }\n  },\n  lowerCaseGreek: { // α-ω\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return 0x1D311 },\n    \"italic\": ch =>                 { return 0x1D34B },\n    \"bold-italic\": ch =>            { return ch === \"\\u03d5\" ? 0x1D37E : 0x1D385 },\n    \"script\": ch =>                 { return 0 },\n    \"script-bold\": ch =>            { return 0 },\n    \"fraktur\": ch =>                { return 0 },\n    \"fraktur-bold\": ch =>           { return 0 },\n    \"double-struck\": ch =>          { return 0 },\n    // Unicode has no code points for regular-weight san-serif Greek. Use bold.\n    \"sans-serif\": ch =>             { return 0x1D3BF },\n    \"sans-serif-bold\": ch =>        { return 0x1D3BF },\n    \"sans-serif-italic\": ch =>      { return 0 },\n    \"sans-serif-bold-italic\": ch => { return 0x1D3F9 },\n    \"monospace\": ch =>              { return 0 }\n  },\n  varGreek: { // \\varGamma, etc\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return  bold[ch] || -51 },\n    \"italic\": ch =>                 { return 0 },\n    \"bold-italic\": ch =>            { return boldItalic[ch] || 0x3A },\n    \"script\": ch =>                 { return 0 },\n    \"script-bold\": ch =>            { return 0 },\n    \"fraktur\": ch =>                { return 0 },\n    \"fraktur-bold\": ch =>           { return 0 },\n    \"double-struck\": ch =>          { return 0 },\n    \"sans-serif\": ch =>             { return boldsf[ch] || 0x74 },\n    \"sans-serif-bold\": ch =>        { return boldsf[ch] || 0x74 },\n    \"sans-serif-italic\": ch =>      { return 0 },\n    \"sans-serif-bold-italic\": ch => { return bisf[ch] || 0xAE },\n    \"monospace\": ch =>              { return 0 }\n  },\n  numeral: { // 0-9\n    \"normal\": ch =>                 { return 0 },\n    \"bold\": ch =>                   { return 0x1D79E },\n    \"italic\": ch =>                 { return 0 },\n    \"bold-italic\": ch =>            { return 0 },\n    \"script\": ch =>                 { return 0 },\n    \"script-bold\": ch =>            { return 0 },\n    \"fraktur\": ch =>                { return 0 },\n    \"fraktur-bold\": ch =>           { return 0 },\n    \"double-struck\": ch =>          { return 0x1D7A8 },\n    \"sans-serif\": ch =>             { return 0x1D7B2 },\n    \"sans-serif-bold\": ch =>        { return 0x1D7BC },\n    \"sans-serif-italic\": ch =>      { return 0 },\n    \"sans-serif-bold-italic\": ch => { return 0 },\n    \"monospace\": ch =>              { return 0x1D7C6 }\n  }\n});\n\nconst variantChar = (ch, variant) => {\n  const codePoint = ch.codePointAt(0);\n  const block = 0x40 < codePoint && codePoint < 0x5b\n    ? \"upperCaseLatin\"\n    : 0x60 < codePoint && codePoint < 0x7b\n    ? \"lowerCaseLatin\"\n    : (0x390  < codePoint && codePoint < 0x3AA)\n    ? \"upperCaseGreek\"\n    : 0x3B0 < codePoint && codePoint < 0x3CA || ch === \"\\u03d5\"\n    ? \"lowerCaseGreek\"\n    : 0x1D6E1 < codePoint && codePoint < 0x1D6FC  || bold[ch]\n    ? \"varGreek\"\n    : (0x2F < codePoint && codePoint <  0x3A)\n    ? \"numeral\"\n    : \"other\";\n  return block === \"other\"\n    ? ch\n    : String.fromCodePoint(codePoint + offset[block][variant](ch))\n};\n\nconst smallCaps = Object.freeze({\n  a: \"ᴀ\",\n  b: \"ʙ\",\n  c: \"ᴄ\",\n  d: \"ᴅ\",\n  e: \"ᴇ\",\n  f: \"ꜰ\",\n  g: \"ɢ\",\n  h: \"ʜ\",\n  i: \"ɪ\",\n  j: \"ᴊ\",\n  k: \"ᴋ\",\n  l: \"ʟ\",\n  m: \"ᴍ\",\n  n: \"ɴ\",\n  o: \"ᴏ\",\n  p: \"ᴘ\",\n  q: \"ǫ\",\n  r: \"ʀ\",\n  s: \"s\",\n  t: \"ᴛ\",\n  u: \"ᴜ\",\n  v: \"ᴠ\",\n  w: \"ᴡ\",\n  x: \"x\",\n  y: \"ʏ\",\n  z: \"ᴢ\"\n});\n\nconst varNameFonts = [\"mathrm\", \"mathit\"];\n\nconst isLongVariableName = (group, font) => {\n  if (!varNameFonts.includes(font) || !group.body || group.body.type !== \"ordgroup\" ||\n      group.body.body.length === 1) {\n    return false\n  }\n  if (group.body.body[0].type !== \"mathord\") { return false }\n  for (let i = 1; i < group.body.body.length; i++) {\n    const parseNodeType = group.body.body[i].type;\n    if (!(parseNodeType ===  \"mathord\" ||\n    (parseNodeType ===  \"textord\" && !isNaN(group.body.body[i].text)))) {\n      return false\n    }\n  }\n  return true\n};\n\nconst mathmlBuilder$6 = (group, style) => {\n  const font = group.font;\n  const newStyle = style.withFont(font);\n  const mathGroup = buildGroup$1(group.body, newStyle);\n\n  if (mathGroup.children.length === 0) { return mathGroup } // empty group, e.g., \\mathrm{}\n  if (font === \"boldsymbol\" && [\"mo\", \"mpadded\", \"mrow\"].includes(mathGroup.type)) {\n    mathGroup.style.fontWeight = \"bold\";\n    return mathGroup\n  }\n  // Check if it is possible to consolidate elements into a single <mi> element.\n  if (isLongVariableName(group, font)) {\n    // This is a \\mathrm{…} or \\mathit{…} group. It gets special treatment.\n    const mi = mathGroup.children[0].children[0].children\n      ? mathGroup.children[0].children[0]\n      : mathGroup.children[0];\n    delete mi.attributes.mathvariant;\n    for (let i = 1; i < mathGroup.children.length; i++) {\n      mi.children[0].text += mathGroup.children[i].children[0].children\n        ? mathGroup.children[i].children[0].children[0].text\n        : mathGroup.children[i].children[0].text;\n    }\n    if (font === \"mathit\") {\n      // Long <mi> elements are normally rendered in upright font.\n      // To get italic, we need to convert each character to the corresponding italic character.\n      mi.children[0].text = mi.children[0].text.split(\"\")\n        .map(c => variantChar(c, \"italic\")).join(\"\");\n      return mi\n    }\n    // Otherwise, font is \"mathrm\". Wrap in a <mpadded> to prevent a Firefox spacing bug.\n    const mpadded = new MathNode(\"mpadded\", [mi]);\n    mpadded.setAttribute(\"lspace\", \"0\");\n    return mpadded\n  }\n  let canConsolidate = mathGroup.children[0].type === \"mo\";\n  for (let i = 1; i < mathGroup.children.length; i++) {\n    if (mathGroup.children[i].type === \"mo\" && font === \"boldsymbol\") {\n      mathGroup.children[i].style.fontWeight = \"bold\";\n    }\n    if (mathGroup.children[i].type !== \"mi\") { canConsolidate = false; }\n    const localVariant = mathGroup.children[i].attributes &&\n      mathGroup.children[i].attributes.mathvariant || \"\";\n    if (localVariant !== \"normal\") { canConsolidate = false; }\n  }\n  if (!canConsolidate) { return mathGroup }\n  // Consolidate the <mi> elements.\n  const mi = mathGroup.children[0];\n  for (let i = 1; i < mathGroup.children.length; i++) {\n    mi.children.push(mathGroup.children[i].children[0]);\n  }\n  if (mi.attributes.mathvariant && mi.attributes.mathvariant === \"normal\") {\n    // Workaround for a Firefox bug that renders spurious space around\n    // a <mi mathvariant=\"normal\">\n    // Ref: https://bugs.webkit.org/show_bug.cgi?id=129097\n    // We insert a text node that contains a zero-width space and wrap in an mrow.\n    // TODO: Get rid of this <mi> workaround when the Firefox bug is fixed.\n    const bogus = new MathNode(\"mtext\", new TextNode(\"\\u200b\"));\n    return new MathNode(\"mrow\", [bogus, mi])\n  }\n  return mi\n};\n\nconst fontAliases = {\n  \"\\\\Bbb\": \"\\\\mathbb\",\n  \"\\\\bold\": \"\\\\mathbf\",\n  \"\\\\frak\": \"\\\\mathfrak\",\n  \"\\\\bm\": \"\\\\boldsymbol\"\n};\n\ndefineFunction({\n  type: \"font\",\n  names: [\n    // styles\n    \"\\\\mathrm\",\n    \"\\\\mathit\",\n    \"\\\\mathbf\",\n    \"\\\\mathnormal\",\n    \"\\\\up@greek\",\n    \"\\\\boldsymbol\",\n\n    // families\n    \"\\\\mathbb\",\n    \"\\\\mathcal\",\n    \"\\\\mathfrak\",\n    \"\\\\mathscr\",\n    \"\\\\mathsf\",\n    \"\\\\mathsfit\",\n    \"\\\\mathtt\",\n\n    // aliases\n    \"\\\\Bbb\",\n    \"\\\\bm\",\n    \"\\\\bold\",\n    \"\\\\frak\"\n  ],\n  props: {\n    numArgs: 1,\n    allowedInArgument: true\n  },\n  handler: ({ parser, funcName }, args) => {\n    const body = normalizeArgument(args[0]);\n    let func = funcName;\n    if (func in fontAliases) {\n      func = fontAliases[func];\n    }\n    return {\n      type: \"font\",\n      mode: parser.mode,\n      font: func.slice(1),\n      body\n    };\n  },\n  mathmlBuilder: mathmlBuilder$6\n});\n\n// Old font changing functions\ndefineFunction({\n  type: \"font\",\n  names: [\"\\\\rm\", \"\\\\sf\", \"\\\\tt\", \"\\\\bf\", \"\\\\it\", \"\\\\cal\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true\n  },\n  handler: ({ parser, funcName, breakOnTokenText }, args) => {\n    const { mode } = parser;\n    const body = parser.parseExpression(true, breakOnTokenText, true);\n    const fontStyle = `math${funcName.slice(1)}`;\n\n    return {\n      type: \"font\",\n      mode: mode,\n      font: fontStyle,\n      body: {\n        type: \"ordgroup\",\n        mode: parser.mode,\n        body\n      }\n    };\n  },\n  mathmlBuilder: mathmlBuilder$6\n});\n\nconst stylArray = [\"display\", \"text\", \"script\", \"scriptscript\"];\nconst scriptLevel = { auto: -1, display: 0, text: 0, script: 1, scriptscript: 2 };\n\nconst adjustStyle = (functionSize, originalStyle) => {\n  // Figure out what style this fraction should be in based on the\n  // function used\n  let style = originalStyle;\n  if (functionSize === \"display\") {  //\\tfrac or \\cfrac\n    // Get display style as a default.\n    // If incoming style is sub/sup, use style.text() to get correct size.\n    const newSize = style.level >= StyleLevel.SCRIPT ? StyleLevel.TEXT : StyleLevel.DISPLAY;\n    style = style.withLevel(newSize);\n  } else if (functionSize === \"text\" &&\n    style.level === StyleLevel.DISPLAY) {\n    // We're in a \\tfrac but incoming style is displaystyle, so:\n    style = style.withLevel(StyleLevel.TEXT);\n  } else if (functionSize === \"auto\") {\n    style = style.incrementLevel();\n  } else if (functionSize === \"script\") {\n    style = style.withLevel(StyleLevel.SCRIPT);\n  } else if (functionSize === \"scriptscript\") {\n    style = style.withLevel(StyleLevel.SCRIPTSCRIPT);\n  }\n  return style;\n};\n\nconst mathmlBuilder$5 = (group, style) => {\n  style = adjustStyle(group.scriptLevel, style);\n\n  // Chromium (wrongly) continues to shrink fractions beyond scriptscriptlevel.\n  // So we check for levels that Chromium shrinks too small.\n  // If necessary, set an explicit fraction depth.\n  const numer = buildGroup$1(group.numer, style);\n  const denom = buildGroup$1(group.denom, style);\n  if (style.level === 3) {\n    numer.style.mathDepth = \"2\";\n    numer.setAttribute(\"scriptlevel\", \"2\");\n    denom.style.mathDepth = \"2\";\n    denom.setAttribute(\"scriptlevel\", \"2\");\n  }\n\n  let node = new MathNode(\"mfrac\", [numer, denom]);\n\n  if (!group.hasBarLine) {\n    node.setAttribute(\"linethickness\", \"0px\");\n  } else if (group.barSize) {\n    const ruleWidth = calculateSize(group.barSize, style);\n    node.setAttribute(\"linethickness\", ruleWidth.number + ruleWidth.unit);\n  }\n\n  if (group.leftDelim != null || group.rightDelim != null) {\n    const withDelims = [];\n\n    if (group.leftDelim != null) {\n      const leftOp = new MathNode(\"mo\", [\n        new TextNode(group.leftDelim.replace(\"\\\\\", \"\"))\n      ]);\n      leftOp.setAttribute(\"fence\", \"true\");\n      withDelims.push(leftOp);\n    }\n\n    withDelims.push(node);\n\n    if (group.rightDelim != null) {\n      const rightOp = new MathNode(\"mo\", [\n        new TextNode(group.rightDelim.replace(\"\\\\\", \"\"))\n      ]);\n      rightOp.setAttribute(\"fence\", \"true\");\n      withDelims.push(rightOp);\n    }\n\n    node = makeRow(withDelims);\n  }\n\n  if (group.scriptLevel !== \"auto\") {\n    node = new MathNode(\"mstyle\", [node]);\n    node.setAttribute(\"displaystyle\", String(group.scriptLevel === \"display\"));\n    node.setAttribute(\"scriptlevel\", scriptLevel[group.scriptLevel]);\n  }\n\n  return node;\n};\n\ndefineFunction({\n  type: \"genfrac\",\n  names: [\n    \"\\\\cfrac\",\n    \"\\\\dfrac\",\n    \"\\\\frac\",\n    \"\\\\tfrac\",\n    \"\\\\dbinom\",\n    \"\\\\binom\",\n    \"\\\\tbinom\",\n    \"\\\\\\\\atopfrac\", // can’t be entered directly\n    \"\\\\\\\\bracefrac\",\n    \"\\\\\\\\brackfrac\" // ditto\n  ],\n  props: {\n    numArgs: 2,\n    allowedInArgument: true\n  },\n  handler: ({ parser, funcName }, args) => {\n    const numer = args[0];\n    const denom = args[1];\n    let hasBarLine = false;\n    let leftDelim = null;\n    let rightDelim = null;\n    let scriptLevel = \"auto\";\n\n    switch (funcName) {\n      case \"\\\\cfrac\":\n      case \"\\\\dfrac\":\n      case \"\\\\frac\":\n      case \"\\\\tfrac\":\n        hasBarLine = true;\n        break;\n      case \"\\\\\\\\atopfrac\":\n        hasBarLine = false;\n        break;\n      case \"\\\\dbinom\":\n      case \"\\\\binom\":\n      case \"\\\\tbinom\":\n        leftDelim = \"(\";\n        rightDelim = \")\";\n        break;\n      case \"\\\\\\\\bracefrac\":\n        leftDelim = \"\\\\{\";\n        rightDelim = \"\\\\}\";\n        break;\n      case \"\\\\\\\\brackfrac\":\n        leftDelim = \"[\";\n        rightDelim = \"]\";\n        break;\n      default:\n        throw new Error(\"Unrecognized genfrac command\");\n    }\n\n    if (funcName === \"\\\\cfrac\" || funcName.startsWith(\"\\\\d\")) {\n      scriptLevel = \"display\";\n    } else if (funcName.startsWith(\"\\\\t\")) {\n      scriptLevel = \"text\";\n    }\n\n    return {\n      type: \"genfrac\",\n      mode: parser.mode,\n      continued: false,\n      numer,\n      denom,\n      hasBarLine,\n      leftDelim,\n      rightDelim,\n      scriptLevel,\n      barSize: null\n    };\n  },\n  mathmlBuilder: mathmlBuilder$5\n});\n\n// Infix generalized fractions -- these are not rendered directly, but replaced\n// immediately by one of the variants above.\ndefineFunction({\n  type: \"infix\",\n  names: [\"\\\\over\", \"\\\\choose\", \"\\\\atop\", \"\\\\brace\", \"\\\\brack\"],\n  props: {\n    numArgs: 0,\n    infix: true\n  },\n  handler({ parser, funcName, token }) {\n    let replaceWith;\n    switch (funcName) {\n      case \"\\\\over\":\n        replaceWith = \"\\\\frac\";\n        break;\n      case \"\\\\choose\":\n        replaceWith = \"\\\\binom\";\n        break;\n      case \"\\\\atop\":\n        replaceWith = \"\\\\\\\\atopfrac\";\n        break;\n      case \"\\\\brace\":\n        replaceWith = \"\\\\\\\\bracefrac\";\n        break;\n      case \"\\\\brack\":\n        replaceWith = \"\\\\\\\\brackfrac\";\n        break;\n      default:\n        throw new Error(\"Unrecognized infix genfrac command\");\n    }\n    return {\n      type: \"infix\",\n      mode: parser.mode,\n      replaceWith,\n      token\n    };\n  }\n});\n\nconst delimFromValue = function(delimString) {\n  let delim = null;\n  if (delimString.length > 0) {\n    delim = delimString;\n    delim = delim === \".\" ? null : delim;\n  }\n  return delim;\n};\n\ndefineFunction({\n  type: \"genfrac\",\n  names: [\"\\\\genfrac\"],\n  props: {\n    numArgs: 6,\n    allowedInArgument: true,\n    argTypes: [\"math\", \"math\", \"size\", \"text\", \"math\", \"math\"]\n  },\n  handler({ parser }, args) {\n    const numer = args[4];\n    const denom = args[5];\n\n    // Look into the parse nodes to get the desired delimiters.\n    const leftNode = normalizeArgument(args[0]);\n    const leftDelim = leftNode.type === \"atom\" && leftNode.family === \"open\"\n      ? delimFromValue(leftNode.text)\n      : null;\n    const rightNode = normalizeArgument(args[1]);\n    const rightDelim =\n      rightNode.type === \"atom\" && rightNode.family === \"close\"\n        ? delimFromValue(rightNode.text)\n        : null;\n\n    const barNode = assertNodeType(args[2], \"size\");\n    let hasBarLine;\n    let barSize = null;\n    if (barNode.isBlank) {\n      // \\genfrac acts differently than \\above.\n      // \\genfrac treats an empty size group as a signal to use a\n      // standard bar size. \\above would see size = 0 and omit the bar.\n      hasBarLine = true;\n    } else {\n      barSize = barNode.value;\n      hasBarLine = barSize.number > 0;\n    }\n\n    // Find out if we want displaystyle, textstyle, etc.\n    let scriptLevel = \"auto\";\n    let styl = args[3];\n    if (styl.type === \"ordgroup\") {\n      if (styl.body.length > 0) {\n        const textOrd = assertNodeType(styl.body[0], \"textord\");\n        scriptLevel = stylArray[Number(textOrd.text)];\n      }\n    } else {\n      styl = assertNodeType(styl, \"textord\");\n      scriptLevel = stylArray[Number(styl.text)];\n    }\n\n    return {\n      type: \"genfrac\",\n      mode: parser.mode,\n      numer,\n      denom,\n      continued: false,\n      hasBarLine,\n      barSize,\n      leftDelim,\n      rightDelim,\n      scriptLevel\n    };\n  },\n  mathmlBuilder: mathmlBuilder$5\n});\n\n// \\above is an infix fraction that also defines a fraction bar size.\ndefineFunction({\n  type: \"infix\",\n  names: [\"\\\\above\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"size\"],\n    infix: true\n  },\n  handler({ parser, funcName, token }, args) {\n    return {\n      type: \"infix\",\n      mode: parser.mode,\n      replaceWith: \"\\\\\\\\abovefrac\",\n      barSize: assertNodeType(args[0], \"size\").value,\n      token\n    };\n  }\n});\n\ndefineFunction({\n  type: \"genfrac\",\n  names: [\"\\\\\\\\abovefrac\"],\n  props: {\n    numArgs: 3,\n    argTypes: [\"math\", \"size\", \"math\"]\n  },\n  handler: ({ parser, funcName }, args) => {\n    const numer = args[0];\n    const barSize = assert(assertNodeType(args[1], \"infix\").barSize);\n    const denom = args[2];\n\n    const hasBarLine = barSize.number > 0;\n    return {\n      type: \"genfrac\",\n      mode: parser.mode,\n      numer,\n      denom,\n      continued: false,\n      hasBarLine,\n      barSize,\n      leftDelim: null,\n      rightDelim: null,\n      scriptLevel: \"auto\"\n    };\n  },\n\n  mathmlBuilder: mathmlBuilder$5\n});\n\n// \\hbox is provided for compatibility with LaTeX functions that act on a box.\n// This function by itself doesn't do anything but set scriptlevel to \\textstyle\n// and prevent a soft line break.\n\ndefineFunction({\n  type: \"hbox\",\n  names: [\"\\\\hbox\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"hbox\"],\n    allowedInArgument: true,\n    allowedInText: false\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"hbox\",\n      mode: parser.mode,\n      body: ordargument(args[0])\n    };\n  },\n  mathmlBuilder(group, style) {\n    const newStyle = style.withLevel(StyleLevel.TEXT);\n    const mrow = buildExpressionRow(group.body, newStyle);\n    return consolidateText(mrow)\n  }\n});\n\nconst mathmlBuilder$4 = (group, style) => {\n  const accentNode = mathMLnode(group.label);\n  accentNode.style[\"math-depth\"] = 0;\n  return new MathNode(group.isOver ? \"mover\" : \"munder\", [\n    buildGroup$1(group.base, style),\n    accentNode\n  ]);\n};\n\n// Horizontal stretchy brackets\ndefineFunction({\n  type: \"horizBracket\",\n  names: [\"\\\\overbrace\", \"\\\\underbrace\", \"\\\\overbracket\", \"\\\\underbracket\"],\n  props: {\n    numArgs: 1\n  },\n  handler({ parser, funcName }, args) {\n    return {\n      type: \"horizBracket\",\n      mode: parser.mode,\n      label: funcName,\n      isOver: /^\\\\over/.test(funcName),\n      base: args[0]\n    };\n  },\n  mathmlBuilder: mathmlBuilder$4\n});\n\ndefineFunction({\n  type: \"html\",\n  names: [\"\\\\class\", \"\\\\id\", \"\\\\style\", \"\\\\data\"],\n  props: {\n    numArgs: 2,\n    argTypes: [\"raw\", \"original\"],\n    allowedInText: true\n  },\n  handler: ({ parser, funcName, token }, args) => {\n    const value = assertNodeType(args[0], \"raw\").string;\n    const body = args[1];\n\n    if (parser.settings.strict) {\n      throw new ParseError(`Function \"${funcName}\" is disabled in strict mode`, token)\n    }\n\n    let trustContext;\n    const attributes = {};\n\n    switch (funcName) {\n      case \"\\\\class\":\n        attributes.class = value;\n        trustContext = {\n          command: \"\\\\class\",\n          class: value\n        };\n        break;\n      case \"\\\\id\":\n        attributes.id = value;\n        trustContext = {\n          command: \"\\\\id\",\n          id: value\n        };\n        break;\n      case \"\\\\style\":\n        attributes.style = value;\n        trustContext = {\n          command: \"\\\\style\",\n          style: value\n        };\n        break;\n      case \"\\\\data\": {\n        const data = value.split(\",\");\n        for (let i = 0; i < data.length; i++) {\n          const keyVal = data[i].split(\"=\");\n          if (keyVal.length !== 2) {\n            throw new ParseError(\"Error parsing key-value for \\\\data\");\n          }\n          attributes[\"data-\" + keyVal[0].trim()] = keyVal[1].trim();\n        }\n\n        trustContext = {\n          command: \"\\\\data\",\n          attributes\n        };\n        break;\n      }\n      default:\n        throw new Error(\"Unrecognized html command\");\n    }\n\n    if (!parser.settings.isTrusted(trustContext)) {\n      throw new ParseError(`Function \"${funcName}\" is not trusted`, token)\n    }\n    return {\n      type: \"html\",\n      mode: parser.mode,\n      attributes,\n      body: ordargument(body)\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const element =  buildExpressionRow(group.body, style);\n\n    const classes = [];\n    if (group.attributes.class) {\n      classes.push(...group.attributes.class.trim().split(/\\s+/));\n    }\n    element.classes = classes;\n\n    for (const attr in group.attributes) {\n      if (attr !== \"class\" && Object.prototype.hasOwnProperty.call(group.attributes, attr)) {\n        element.setAttribute(attr, group.attributes[attr]);\n      }\n    }\n\n    return element;\n  }\n});\n\nconst sizeData = function(str) {\n  if (/^[-+]? *(\\d+(\\.\\d*)?|\\.\\d+)$/.test(str)) {\n    // str is a number with no unit specified.\n    // default unit is bp, per graphix package.\n    return { number: +str, unit: \"bp\" }\n  } else {\n    const match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(str);\n    if (!match) {\n      throw new ParseError(\"Invalid size: '\" + str + \"' in \\\\includegraphics\");\n    }\n    const data = {\n      number: +(match[1] + match[2]), // sign + magnitude, cast to number\n      unit: match[3]\n    };\n    if (!validUnit(data)) {\n      throw new ParseError(\"Invalid unit: '\" + data.unit + \"' in \\\\includegraphics.\");\n    }\n    return data\n  }\n};\n\ndefineFunction({\n  type: \"includegraphics\",\n  names: [\"\\\\includegraphics\"],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1,\n    argTypes: [\"raw\", \"url\"],\n    allowedInText: false\n  },\n  handler: ({ parser, token }, args, optArgs) => {\n    let width = { number: 0, unit: \"em\" };\n    let height = { number: 0.9, unit: \"em\" };  // sorta character sized.\n    let totalheight = { number: 0, unit: \"em\" };\n    let alt = \"\";\n\n    if (optArgs[0]) {\n      const attributeStr = assertNodeType(optArgs[0], \"raw\").string;\n\n      // Parser.js does not parse key/value pairs. We get a string.\n      const attributes = attributeStr.split(\",\");\n      for (let i = 0; i < attributes.length; i++) {\n        const keyVal = attributes[i].split(\"=\");\n        if (keyVal.length === 2) {\n          const str = keyVal[1].trim();\n          switch (keyVal[0].trim()) {\n            case \"alt\":\n              alt = str;\n              break\n            case \"width\":\n              width = sizeData(str);\n              break\n            case \"height\":\n              height = sizeData(str);\n              break\n            case \"totalheight\":\n              totalheight = sizeData(str);\n              break\n            default:\n              throw new ParseError(\"Invalid key: '\" + keyVal[0] + \"' in \\\\includegraphics.\")\n          }\n        }\n      }\n    }\n\n    const src = assertNodeType(args[0], \"url\").url;\n\n    if (alt === \"\") {\n      // No alt given. Use the file name. Strip away the path.\n      alt = src;\n      alt = alt.replace(/^.*[\\\\/]/, \"\");\n      alt = alt.substring(0, alt.lastIndexOf(\".\"));\n    }\n\n    if (\n      !parser.settings.isTrusted({\n        command: \"\\\\includegraphics\",\n        url: src\n      })\n    ) {\n      throw new ParseError(`Function \"\\\\includegraphics\" is not trusted`, token)\n    }\n\n    return {\n      type: \"includegraphics\",\n      mode: parser.mode,\n      alt: alt,\n      width: width,\n      height: height,\n      totalheight: totalheight,\n      src: src\n    }\n  },\n  mathmlBuilder: (group, style) => {\n    const height = calculateSize(group.height, style);\n    const depth = { number: 0, unit: \"em\" };\n\n    if (group.totalheight.number > 0) {\n      if (group.totalheight.unit === height.unit &&\n        group.totalheight.number > height.number) {\n        depth.number = group.totalheight.number - height.number;\n        depth.unit = height.unit;\n      }\n    }\n\n    let width = 0;\n    if (group.width.number > 0) {\n      width = calculateSize(group.width, style);\n    }\n\n    const graphicStyle = { height: height.number + depth.number + \"em\" };\n    if (width.number > 0) {\n      graphicStyle.width = width.number + width.unit;\n    }\n    if (depth.number > 0) {\n      graphicStyle.verticalAlign = -depth.number + depth.unit;\n    }\n\n    const node = new Img(group.src, group.alt, graphicStyle);\n    node.height = height;\n    node.depth = depth;\n    return new MathNode(\"mtext\", [node])\n  }\n});\n\n// Horizontal spacing commands\n\n\n// TODO: \\hskip and \\mskip should support plus and minus in lengths\n\ndefineFunction({\n  type: \"kern\",\n  names: [\"\\\\kern\", \"\\\\mkern\", \"\\\\hskip\", \"\\\\mskip\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"size\"],\n    primitive: true,\n    allowedInText: true\n  },\n  handler({ parser, funcName, token }, args) {\n    const size = assertNodeType(args[0], \"size\");\n    if (parser.settings.strict) {\n      const mathFunction = funcName[1] === \"m\"; // \\mkern, \\mskip\n      const muUnit = size.value.unit === \"mu\";\n      if (mathFunction) {\n        if (!muUnit) {\n          throw new ParseError(`LaTeX's ${funcName} supports only mu units, ` +\n            `not ${size.value.unit} units`, token)\n        }\n        if (parser.mode !== \"math\") {\n          throw new ParseError(`LaTeX's ${funcName} works only in math mode`, token)\n        }\n      } else {\n        // !mathFunction\n        if (muUnit) {\n          throw new ParseError(`LaTeX's ${funcName} doesn't support mu units`, token)\n        }\n      }\n    }\n    return {\n      type: \"kern\",\n      mode: parser.mode,\n      dimension: size.value\n    };\n  },\n  mathmlBuilder(group, style) {\n    const dimension = calculateSize(group.dimension, style);\n    const ch = dimension.number > 0 && dimension.unit === \"em\"\n      ? spaceCharacter(dimension.number)\n      : \"\";\n    if (group.mode === \"text\" && ch.length > 0) {\n      const character = new TextNode(ch);\n      return new MathNode(\"mtext\", [character]);\n    } else {\n      if (dimension.number >= 0) {\n        const node = new MathNode(\"mspace\");\n        node.setAttribute(\"width\", dimension.number + dimension.unit);\n        return node\n      } else {\n        // Don't use <mspace> or <mpadded> because\n        // WebKit recognizes negative left margin only on a <mrow> element\n        const node = new MathNode(\"mrow\");\n        node.style.marginLeft = dimension.number + dimension.unit;\n        return node\n      }\n    }\n  }\n});\n\nconst spaceCharacter = function(width) {\n  if (width >= 0.05555 && width <= 0.05556) {\n    return \"\\u200a\"; // &VeryThinSpace;\n  } else if (width >= 0.1666 && width <= 0.1667) {\n    return \"\\u2009\"; // &ThinSpace;\n  } else if (width >= 0.2222 && width <= 0.2223) {\n    return \"\\u2005\"; // &MediumSpace;\n  } else if (width >= 0.2777 && width <= 0.2778) {\n    return \"\\u2005\\u200a\"; // &ThickSpace;\n  } else {\n    return \"\";\n  }\n};\n\n// Limit valid characters to a small set, for safety.\nconst invalidIdRegEx = /[^A-Za-z_0-9-]/g;\n\ndefineFunction({\n  type: \"label\",\n  names: [\"\\\\label\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"raw\"]\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"label\",\n      mode: parser.mode,\n      string: args[0].string.replace(invalidIdRegEx, \"\")\n    };\n  },\n  mathmlBuilder(group, style) {\n    // Return a no-width, no-ink element with an HTML id.\n    const node = new MathNode(\"mrow\", [], [\"tml-label\"]);\n    if (group.string.length > 0) {\n      node.setLabel(group.string);\n    }\n    return node\n  }\n});\n\n// Horizontal overlap functions\n\nconst textModeLap = [\"\\\\clap\", \"\\\\llap\", \"\\\\rlap\"];\n\ndefineFunction({\n  type: \"lap\",\n  names: [\"\\\\mathllap\", \"\\\\mathrlap\", \"\\\\mathclap\", \"\\\\clap\", \"\\\\llap\", \"\\\\rlap\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler: ({ parser, funcName, token }, args) => {\n    if (textModeLap.includes(funcName)) {\n      if (parser.settings.strict && parser.mode !== \"text\") {\n        throw new ParseError(`{${funcName}} can be used only in text mode.\n Try \\\\math${funcName.slice(1)}`, token)\n      }\n      funcName = funcName.slice(1);\n    } else {\n      funcName = funcName.slice(5);\n    }\n    const body = args[0];\n    return {\n      type: \"lap\",\n      mode: parser.mode,\n      alignment: funcName,\n      body\n    }\n  },\n  mathmlBuilder: (group, style) => {\n    // mathllap, mathrlap, mathclap\n    let strut;\n    if (group.alignment === \"llap\") {\n      // We need an invisible strut with the same depth as the group.\n      // We can't just read the depth, so we use \\vphantom methods.\n      const phantomInner = buildExpression(ordargument(group.body), style);\n      const phantom = new MathNode(\"mphantom\", phantomInner);\n      strut = new MathNode(\"mpadded\", [phantom]);\n      strut.setAttribute(\"width\", \"0.1px\");  // Don't use 0. WebKit would hide it.\n    }\n\n    const inner = buildGroup$1(group.body, style);\n    let node;\n    if (group.alignment === \"llap\") {\n      inner.style.position = \"absolute\";\n      inner.style.right = \"0\";\n      inner.style.bottom = `0`; // If we could have read the ink depth, it would go here.\n      node = new MathNode(\"mpadded\", [strut, inner]);\n    } else {\n      node = new MathNode(\"mpadded\", [inner]);\n    }\n\n    if (group.alignment === \"rlap\") {\n      if (group.body.body.length > 0 && group.body.body[0].type === \"genfrac\") {\n        // In Firefox, a <mpadded> squashes the 3/18em padding of a child \\frac. Put it back.\n        node.setAttribute(\"lspace\", \"0.16667em\");\n      }\n    } else {\n      const offset = group.alignment === \"llap\" ? \"-1\" : \"-0.5\";\n      node.setAttribute(\"lspace\", offset + \"width\");\n      if (group.alignment === \"llap\") {\n        node.style.position = \"relative\";\n      } else {\n        node.style.display = \"flex\";\n        node.style.justifyContent = \"center\";\n      }\n    }\n    node.setAttribute(\"width\", \"0.1px\"); // Don't use 0. WebKit would hide it.\n    return node\n  }\n});\n\n// Switching from text mode back to math mode\ndefineFunction({\n  type: \"ordgroup\",\n  names: [\"\\\\(\", \"$\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    allowedInMath: false\n  },\n  handler({ funcName, parser }, args) {\n    const outerMode = parser.mode;\n    parser.switchMode(\"math\");\n    const close = funcName === \"\\\\(\" ? \"\\\\)\" : \"$\";\n    const body = parser.parseExpression(false, close);\n    parser.expect(close);\n    parser.switchMode(outerMode);\n    return {\n      type: \"ordgroup\",\n      mode: parser.mode,\n      body\n    };\n  }\n});\n\n// Check for extra closing math delimiters\ndefineFunction({\n  type: \"text\", // Doesn't matter what this is.\n  names: [\"\\\\)\", \"\\\\]\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    allowedInMath: false\n  },\n  handler(context, token) {\n    throw new ParseError(`Mismatched ${context.funcName}`, token);\n  }\n});\n\nconst chooseStyle = (group, style) => {\n  switch (style.level) {\n    case StyleLevel.DISPLAY:       // 0\n      return group.display;\n    case StyleLevel.TEXT:          // 1\n      return group.text;\n    case StyleLevel.SCRIPT:        // 2\n      return group.script;\n    case StyleLevel.SCRIPTSCRIPT:  // 3\n      return group.scriptscript;\n    default:\n      return group.text;\n  }\n};\n\ndefineFunction({\n  type: \"mathchoice\",\n  names: [\"\\\\mathchoice\"],\n  props: {\n    numArgs: 4,\n    primitive: true\n  },\n  handler: ({ parser }, args) => {\n    return {\n      type: \"mathchoice\",\n      mode: parser.mode,\n      display: ordargument(args[0]),\n      text: ordargument(args[1]),\n      script: ordargument(args[2]),\n      scriptscript: ordargument(args[3])\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const body = chooseStyle(group, style);\n    return buildExpressionRow(body, style);\n  }\n});\n\nconst textAtomTypes = [\"text\", \"textord\", \"mathord\", \"atom\"];\n\nfunction mathmlBuilder$3(group, style) {\n  let node;\n  const inner = buildExpression(group.body, style);\n\n  if (group.mclass === \"minner\") {\n    node = new MathNode(\"mpadded\", inner);\n  } else if (group.mclass === \"mord\") {\n    if (group.isCharacterBox || inner[0].type === \"mathord\") {\n      node = inner[0];\n      node.type = \"mi\";\n      if (node.children.length === 1 && node.children[0].text && node.children[0].text === \"∇\") {\n        node.setAttribute(\"mathvariant\", \"normal\");\n      }\n    } else {\n      node = new MathNode(\"mi\", inner);\n    }\n  } else {\n    node = new MathNode(\"mrow\", inner);\n    if (group.mustPromote) {\n      node = inner[0];\n      node.type = \"mo\";\n      if (group.isCharacterBox && group.body[0].text && /[A-Za-z]/.test(group.body[0].text)) {\n        node.setAttribute(\"mathvariant\", \"italic\");\n      }\n    } else {\n      node = new MathNode(\"mrow\", inner);\n    }\n\n    // Set spacing based on what is the most likely adjacent atom type.\n    // See TeXbook p170.\n    const doSpacing = style.level < 2; // Operator spacing is zero inside a (sub|super)script.\n    if (node.type === \"mrow\") {\n      if (doSpacing ) {\n        if (group.mclass === \"mbin\") {\n          // medium space\n          node.children.unshift(padding(0.2222));\n          node.children.push(padding(0.2222));\n        } else if (group.mclass === \"mrel\") {\n          // thickspace\n          node.children.unshift(padding(0.2778));\n          node.children.push(padding(0.2778));\n        } else if (group.mclass === \"mpunct\") {\n          node.children.push(padding(0.1667));\n        } else if (group.mclass === \"minner\") {\n          node.children.unshift(padding(0.0556));  // 1 mu is the most likely option\n          node.children.push(padding(0.0556));\n        }\n      }\n    } else {\n      if (group.mclass === \"mbin\") {\n        // medium space\n        node.attributes.lspace = (doSpacing ? \"0.2222em\" : \"0\");\n        node.attributes.rspace = (doSpacing ? \"0.2222em\" : \"0\");\n      } else if (group.mclass === \"mrel\") {\n        // thickspace\n        node.attributes.lspace = (doSpacing ? \"0.2778em\" : \"0\");\n        node.attributes.rspace = (doSpacing ? \"0.2778em\" : \"0\");\n      } else if (group.mclass === \"mpunct\") {\n        node.attributes.lspace = \"0em\";\n        node.attributes.rspace = (doSpacing ? \"0.1667em\" : \"0\");\n      } else if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n        node.attributes.lspace = \"0em\";\n        node.attributes.rspace = \"0em\";\n      } else if (group.mclass === \"minner\" && doSpacing) {\n        node.attributes.lspace = \"0.0556em\"; // 1 mu is the most likely option\n        node.attributes.width = \"+0.1111em\";\n      }\n    }\n\n    if (!(group.mclass === \"mopen\" || group.mclass === \"mclose\")) {\n      delete node.attributes.stretchy;\n      delete node.attributes.form;\n    }\n  }\n  return node;\n}\n\n// Math class commands except \\mathop\ndefineFunction({\n  type: \"mclass\",\n  names: [\n    \"\\\\mathord\",\n    \"\\\\mathbin\",\n    \"\\\\mathrel\",\n    \"\\\\mathopen\",\n    \"\\\\mathclose\",\n    \"\\\\mathpunct\",\n    \"\\\\mathinner\"\n  ],\n  props: {\n    numArgs: 1,\n    primitive: true\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    const isCharacterBox$1 = isCharacterBox(body);\n    // We should not wrap a <mo> around a <mi> or <mord>. That would be invalid MathML.\n    // In that case, we instead promote the text contents of the body to the parent.\n    let mustPromote = true;\n    const mord = { type: \"mathord\", text: \"\", mode: parser.mode };\n    const arr = (body.body) ? body.body : [body];\n    for (const arg of arr) {\n      if (textAtomTypes.includes(arg.type)) {\n        if (symbols[parser.mode][arg.text]) {\n          mord.text += symbols[parser.mode][arg.text].replace;\n        } else if (arg.text) {\n          mord.text += arg.text;\n        } else if (arg.body) {\n          arg.body.map(e => { mord.text += e.text; });\n        }\n      } else {\n        mustPromote = false;\n        break\n      }\n    }\n    if (mustPromote && funcName === \"\\\\mathord\" && mord.type === \"mathord\"\n                    && mord.text.length > 1) {\n      return mord\n    } else {\n      return {\n        type: \"mclass\",\n        mode: parser.mode,\n        mclass: \"m\" + funcName.slice(5),\n        body: ordargument(mustPromote ? mord : body),\n        isCharacterBox: isCharacterBox$1,\n        mustPromote\n      };\n    }\n  },\n  mathmlBuilder: mathmlBuilder$3\n});\n\nconst binrelClass = (arg) => {\n  // \\binrel@ spacing varies with (bin|rel|ord) of the atom in the argument.\n  // (by rendering separately and with {}s before and after, and measuring\n  // the change in spacing).  We'll do roughly the same by detecting the\n  // atom type directly.\n  const atom = arg.type === \"ordgroup\" && arg.body.length && arg.body.length === 1\n    ? arg.body[0]\n    : arg;\n  if (atom.type === \"atom\") {\n    // BIN args are sometimes changed to OPEN, so check the original family.\n    const family = arg.body.length > 0 && arg.body[0].text && symbols.math[arg.body[0].text]\n      ? symbols.math[arg.body[0].text].group\n      : atom.family;\n    if (family === \"bin\" || family === \"rel\") {\n      return \"m\" + family;\n    } else {\n      return \"mord\";\n    }\n  } else {\n    return \"mord\";\n  }\n};\n\n// \\@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord.\n// This is equivalent to \\binrel@{x}\\binrel@@{y} in AMSTeX.\ndefineFunction({\n  type: \"mclass\",\n  names: [\"\\\\@binrel\"],\n  props: {\n    numArgs: 2\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"mclass\",\n      mode: parser.mode,\n      mclass: binrelClass(args[0]),\n      body: ordargument(args[1]),\n      isCharacterBox: isCharacterBox(args[1])\n    };\n  }\n});\n\n// Build a relation or stacked op by placing one symbol on top of another\ndefineFunction({\n  type: \"mclass\",\n  names: [\"\\\\stackrel\", \"\\\\overset\", \"\\\\underset\"],\n  props: {\n    numArgs: 2\n  },\n  handler({ parser, funcName }, args) {\n    const baseArg = args[1];\n    const shiftedArg = args[0];\n\n    let mclass;\n    if (funcName !== \"\\\\stackrel\") {\n      // LaTeX applies \\binrel spacing to \\overset and \\underset.\n      mclass = binrelClass(baseArg);\n    } else {\n      mclass = \"mrel\";  // for \\stackrel\n    }\n\n    const baseType = mclass === \"mrel\" || mclass === \"mbin\"\n      ? \"op\"\n      : \"ordgroup\";\n\n    const baseOp = {\n      type: baseType,\n      mode: baseArg.mode,\n      limits: true,\n      alwaysHandleSupSub: true,\n      parentIsSupSub: false,\n      symbol: false,\n      suppressBaseShift: funcName !== \"\\\\stackrel\",\n      body: ordargument(baseArg)\n    };\n\n    return {\n      type: \"supsub\",\n      mode: shiftedArg.mode,\n      stack: true,\n      base: baseOp,\n      sup: funcName === \"\\\\underset\" ? null : shiftedArg,\n      sub: funcName === \"\\\\underset\" ? shiftedArg : null\n    };\n  },\n  mathmlBuilder: mathmlBuilder$3\n});\n\n// Helper function\nconst buildGroup = (el, style, noneNode) => {\n  if (!el) { return noneNode }\n  const node = buildGroup$1(el, style);\n  if (node.type === \"mrow\" && node.children.length === 0) { return noneNode }\n  return node\n};\n\ndefineFunction({\n  type: \"multiscript\",\n  names: [\"\\\\sideset\", \"\\\\pres@cript\"], // See macros.js for \\prescript\n  props: {\n    numArgs: 3\n  },\n  handler({ parser, funcName, token }, args) {\n    if (args[2].body.length === 0) {\n      throw new ParseError(funcName + `cannot parse an empty base.`)\n    }\n    const base = args[2].body[0];\n    if (parser.settings.strict && funcName === \"\\\\sideset\" && !base.symbol) {\n      throw new ParseError(`The base of \\\\sideset must be a big operator. Try \\\\prescript.`)\n    }\n\n    if ((args[0].body.length > 0 && args[0].body[0].type !== \"supsub\") ||\n        (args[1].body.length > 0 && args[1].body[0].type !== \"supsub\")) {\n      throw new ParseError(\"\\\\sideset can parse only subscripts and \" +\n                            \"superscripts in its first two arguments\", token)\n    }\n\n    // The prescripts and postscripts come wrapped in a supsub.\n    const prescripts = args[0].body.length > 0 ? args[0].body[0] : null;\n    const postscripts = args[1].body.length > 0 ? args[1].body[0] : null;\n\n    if (!prescripts && !postscripts) {\n      return base\n    } else if (!prescripts) {\n      // It's not a multi-script. Get a \\textstyle supsub.\n      return {\n        type: \"styling\",\n        mode: parser.mode,\n        scriptLevel: \"text\",\n        body: [{\n          type: \"supsub\",\n          mode: parser.mode,\n          base,\n          sup: postscripts.sup,\n          sub: postscripts.sub\n        }]\n      }\n    } else {\n      return {\n        type: \"multiscript\",\n        mode: parser.mode,\n        isSideset: funcName === \"\\\\sideset\",\n        prescripts,\n        postscripts,\n        base\n      }\n    }\n  },\n  mathmlBuilder(group, style) {\n    const base =  buildGroup$1(group.base, style);\n\n    const prescriptsNode = new MathNode(\"mprescripts\");\n    const noneNode = new MathNode(\"none\");\n    let children = [];\n\n    const preSub = buildGroup(group.prescripts.sub, style, noneNode);\n    const preSup = buildGroup(group.prescripts.sup, style, noneNode);\n    if (group.isSideset) {\n      // This seems silly, but LaTeX does this. Firefox ignores it, which does not make me sad.\n      preSub.setAttribute(\"style\", \"text-align: left;\");\n      preSup.setAttribute(\"style\", \"text-align: left;\");\n    }\n\n    if (group.postscripts) {\n      const postSub = buildGroup(group.postscripts.sub, style, noneNode);\n      const postSup = buildGroup(group.postscripts.sup, style, noneNode);\n      children = [base, postSub, postSup, prescriptsNode, preSub, preSup];\n    } else {\n      children = [base, prescriptsNode, preSub, preSup];\n    }\n\n    return new MathNode(\"mmultiscripts\", children);\n  }\n});\n\ndefineFunction({\n  type: \"not\",\n  names: [\"\\\\not\"],\n  props: {\n    numArgs: 1,\n    primitive: true,\n    allowedInText: false\n  },\n  handler({ parser }, args) {\n    const isCharacterBox$1 = isCharacterBox(args[0]);\n    let body;\n    if (isCharacterBox$1) {\n      body = ordargument(args[0]);\n      if (body[0].text.charAt(0) === \"\\\\\") {\n        body[0].text = symbols.math[body[0].text].replace;\n      }\n      // \\u0338 is the Unicode Combining Long Solidus Overlay\n      body[0].text = body[0].text.slice(0, 1) + \"\\u0338\" + body[0].text.slice(1);\n    } else {\n      // When the argument is not a character box, TeX does an awkward, poorly placed overlay.\n      // We'll do the same.\n      const notNode = { type: \"textord\", mode: \"math\", text: \"\\u0338\" };\n      const kernNode = { type: \"kern\", mode: \"math\", dimension: { number: -0.6, unit: \"em\" } };\n      body = [notNode, kernNode, args[0]];\n    }\n    return {\n      type: \"not\",\n      mode: parser.mode,\n      body,\n      isCharacterBox: isCharacterBox$1\n    };\n  },\n  mathmlBuilder(group, style) {\n    if (group.isCharacterBox) {\n      const inner = buildExpression(group.body, style, true);\n      return inner[0]\n    } else {\n      return buildExpressionRow(group.body, style)\n    }\n  }\n});\n\n// Limits, symbols\n\n// Some helpers\n\nconst ordAtomTypes = [\"textord\", \"mathord\", \"atom\"];\n\n// Most operators have a large successor symbol, but these don't.\nconst noSuccessor = [\"\\\\smallint\"];\n\n// Math operators (e.g. \\sin) need a space between these types and themselves:\nconst ordTypes = [\"textord\", \"mathord\", \"ordgroup\", \"close\", \"leftright\", \"font\"];\n\n// NOTE: Unlike most `builders`s, this one handles not only \"op\", but also\n// \"supsub\" since some of them (like \\int) can affect super/subscripting.\n\nconst setSpacing = node => {\n  // The user wrote a \\mathop{…} function. Change spacing from default to OP spacing.\n  // The most likely spacing for an OP is a thin space per TeXbook p170.\n  node.attributes.lspace = \"0.1667em\";\n  node.attributes.rspace = \"0.1667em\";\n};\n\nconst mathmlBuilder$2 = (group, style) => {\n  let node;\n\n  if (group.symbol) {\n    // This is a symbol. Just add the symbol.\n    node = new MathNode(\"mo\", [makeText(group.name, group.mode)]);\n    if (noSuccessor.includes(group.name)) {\n      node.setAttribute(\"largeop\", \"false\");\n    } else {\n      node.setAttribute(\"movablelimits\", \"false\");\n    }\n    if (group.fromMathOp) { setSpacing(node); }\n  } else if (group.body) {\n    // This is an operator with children. Add them.\n    node = new MathNode(\"mo\", buildExpression(group.body, style));\n    if (group.fromMathOp) { setSpacing(node); }\n  } else {\n    // This is a text operator. Add all of the characters from the operator's name.\n    node = new MathNode(\"mi\", [new TextNode(group.name.slice(1))]);\n\n    if (!group.parentIsSupSub) {\n      // Append an invisible <mo>&ApplyFunction;</mo>.\n      // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n      const operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n      const row = [node, operator];\n      // Set spacing\n      if (group.needsLeadingSpace) {\n        const lead = new MathNode(\"mspace\");\n        lead.setAttribute(\"width\", \"0.1667em\"); // thin space.\n        row.unshift(lead);\n      }\n      if (!group.isFollowedByDelimiter) {\n        const trail = new MathNode(\"mspace\");\n        trail.setAttribute(\"width\", \"0.1667em\"); // thin space.\n        row.push(trail);\n      }\n      node = new MathNode(\"mrow\", row);\n    }\n  }\n\n  return node;\n};\n\nconst singleCharBigOps = {\n  \"\\u220F\": \"\\\\prod\",\n  \"\\u2210\": \"\\\\coprod\",\n  \"\\u2211\": \"\\\\sum\",\n  \"\\u22c0\": \"\\\\bigwedge\",\n  \"\\u22c1\": \"\\\\bigvee\",\n  \"\\u22c2\": \"\\\\bigcap\",\n  \"\\u22c3\": \"\\\\bigcup\",\n  \"\\u2a00\": \"\\\\bigodot\",\n  \"\\u2a01\": \"\\\\bigoplus\",\n  \"\\u2a02\": \"\\\\bigotimes\",\n  \"\\u2a04\": \"\\\\biguplus\",\n  \"\\u2a05\": \"\\\\bigsqcap\",\n  \"\\u2a06\": \"\\\\bigsqcup\",\n  \"\\u2a03\": \"\\\\bigcupdot\",\n  \"\\u2a07\": \"\\\\bigdoublevee\",\n  \"\\u2a08\": \"\\\\bigdoublewedge\",\n  \"\\u2a09\": \"\\\\bigtimes\"\n};\n\ndefineFunction({\n  type: \"op\",\n  names: [\n    \"\\\\coprod\",\n    \"\\\\bigvee\",\n    \"\\\\bigwedge\",\n    \"\\\\biguplus\",\n    \"\\\\bigcupplus\",\n    \"\\\\bigcupdot\",\n    \"\\\\bigcap\",\n    \"\\\\bigcup\",\n    \"\\\\bigdoublevee\",\n    \"\\\\bigdoublewedge\",\n    \"\\\\intop\",\n    \"\\\\prod\",\n    \"\\\\sum\",\n    \"\\\\bigotimes\",\n    \"\\\\bigoplus\",\n    \"\\\\bigodot\",\n    \"\\\\bigsqcap\",\n    \"\\\\bigsqcup\",\n    \"\\\\bigtimes\",\n    \"\\\\smallint\",\n    \"\\u220F\",\n    \"\\u2210\",\n    \"\\u2211\",\n    \"\\u22c0\",\n    \"\\u22c1\",\n    \"\\u22c2\",\n    \"\\u22c3\",\n    \"\\u2a00\",\n    \"\\u2a01\",\n    \"\\u2a02\",\n    \"\\u2a03\",\n    \"\\u2a04\",\n    \"\\u2a05\",\n    \"\\u2a06\",\n    \"\\u2a07\",\n    \"\\u2a08\",\n    \"\\u2a09\"\n  ],\n  props: {\n    numArgs: 0\n  },\n  handler: ({ parser, funcName }, args) => {\n    let fName = funcName;\n    if (fName.length === 1) {\n      fName = singleCharBigOps[fName];\n    }\n    return {\n      type: \"op\",\n      mode: parser.mode,\n      limits: true,\n      parentIsSupSub: false,\n      symbol: true,\n      stack: false, // This is true for \\stackrel{}, not here.\n      name: fName\n    };\n  },\n  mathmlBuilder: mathmlBuilder$2\n});\n\n// Note: calling defineFunction with a type that's already been defined only\n// works because the same mathmlBuilder is being used.\ndefineFunction({\n  type: \"op\",\n  names: [\"\\\\mathop\"],\n  props: {\n    numArgs: 1,\n    primitive: true\n  },\n  handler: ({ parser }, args) => {\n    const body = args[0];\n    // It would be convienient to just wrap a <mo> around the argument.\n    // But if the argument is a <mi> or <mord>, that would be invalid MathML.\n    // In that case, we instead promote the text contents of the body to the parent.\n    const arr = (body.body) ? body.body : [body];\n    const isSymbol = arr.length === 1 && ordAtomTypes.includes(arr[0].type);\n    return {\n      type: \"op\",\n      mode: parser.mode,\n      limits: true,\n      parentIsSupSub: false,\n      symbol: isSymbol,\n      fromMathOp: true,\n      stack: false,\n      name: isSymbol ? arr[0].text : null,\n      body: isSymbol ? null : ordargument(body)\n    };\n  },\n  mathmlBuilder: mathmlBuilder$2\n});\n\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\nconst singleCharIntegrals = {\n  \"\\u222b\": \"\\\\int\",\n  \"\\u222c\": \"\\\\iint\",\n  \"\\u222d\": \"\\\\iiint\",\n  \"\\u222e\": \"\\\\oint\",\n  \"\\u222f\": \"\\\\oiint\",\n  \"\\u2230\": \"\\\\oiiint\",\n  \"\\u2231\": \"\\\\intclockwise\",\n  \"\\u2232\": \"\\\\varointclockwise\",\n  \"\\u2a0c\": \"\\\\iiiint\",\n  \"\\u2a0d\": \"\\\\intbar\",\n  \"\\u2a0e\": \"\\\\intBar\",\n  \"\\u2a0f\": \"\\\\fint\",\n  \"\\u2a12\": \"\\\\rppolint\",\n  \"\\u2a13\": \"\\\\scpolint\",\n  \"\\u2a15\": \"\\\\pointint\",\n  \"\\u2a16\": \"\\\\sqint\",\n  \"\\u2a17\": \"\\\\intlarhk\",\n  \"\\u2a18\": \"\\\\intx\",\n  \"\\u2a19\": \"\\\\intcap\",\n  \"\\u2a1a\": \"\\\\intcup\"\n};\n\n// No limits, not symbols\ndefineFunction({\n  type: \"op\",\n  names: [\n    \"\\\\arcsin\",\n    \"\\\\arccos\",\n    \"\\\\arctan\",\n    \"\\\\arctg\",\n    \"\\\\arcctg\",\n    \"\\\\arg\",\n    \"\\\\ch\",\n    \"\\\\cos\",\n    \"\\\\cosec\",\n    \"\\\\cosh\",\n    \"\\\\cot\",\n    \"\\\\cotg\",\n    \"\\\\coth\",\n    \"\\\\csc\",\n    \"\\\\ctg\",\n    \"\\\\cth\",\n    \"\\\\deg\",\n    \"\\\\dim\",\n    \"\\\\exp\",\n    \"\\\\hom\",\n    \"\\\\ker\",\n    \"\\\\lg\",\n    \"\\\\ln\",\n    \"\\\\log\",\n    \"\\\\sec\",\n    \"\\\\sin\",\n    \"\\\\sinh\",\n    \"\\\\sh\",\n    \"\\\\sgn\",\n    \"\\\\tan\",\n    \"\\\\tanh\",\n    \"\\\\tg\",\n    \"\\\\th\"\n  ],\n  props: {\n    numArgs: 0\n  },\n  handler({ parser, funcName }) {\n    const prevAtomType = parser.prevAtomType;\n    const next = parser.gullet.future().text;\n    return {\n      type: \"op\",\n      mode: parser.mode,\n      limits: false,\n      parentIsSupSub: false,\n      symbol: false,\n      stack: false,\n      isFollowedByDelimiter: isDelimiter(next),\n      needsLeadingSpace: prevAtomType.length > 0 && ordTypes.includes(prevAtomType),\n      name: funcName\n    };\n  },\n  mathmlBuilder: mathmlBuilder$2\n});\n\n// Limits, not symbols\ndefineFunction({\n  type: \"op\",\n  names: [\"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\max\", \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"],\n  props: {\n    numArgs: 0\n  },\n  handler({ parser, funcName }) {\n    const prevAtomType = parser.prevAtomType;\n    const next = parser.gullet.future().text;\n    return {\n      type: \"op\",\n      mode: parser.mode,\n      limits: true,\n      parentIsSupSub: false,\n      symbol: false,\n      stack: false,\n      isFollowedByDelimiter: isDelimiter(next),\n      needsLeadingSpace: prevAtomType.length > 0 && ordTypes.includes(prevAtomType),\n      name: funcName\n    };\n  },\n  mathmlBuilder: mathmlBuilder$2\n});\n\n// No limits, symbols\ndefineFunction({\n  type: \"op\",\n  names: [\n    \"\\\\int\",\n    \"\\\\iint\",\n    \"\\\\iiint\",\n    \"\\\\iiiint\",\n    \"\\\\oint\",\n    \"\\\\oiint\",\n    \"\\\\oiiint\",\n    \"\\\\intclockwise\",\n    \"\\\\varointclockwise\",\n    \"\\\\intbar\",\n    \"\\\\intBar\",\n    \"\\\\fint\",\n    \"\\\\rppolint\",\n    \"\\\\scpolint\",\n    \"\\\\pointint\",\n    \"\\\\sqint\",\n    \"\\\\intlarhk\",\n    \"\\\\intx\",\n    \"\\\\intcap\",\n    \"\\\\intcup\",\n    \"\\u222b\",\n    \"\\u222c\",\n    \"\\u222d\",\n    \"\\u222e\",\n    \"\\u222f\",\n    \"\\u2230\",\n    \"\\u2231\",\n    \"\\u2232\",\n    \"\\u2a0c\",\n    \"\\u2a0d\",\n    \"\\u2a0e\",\n    \"\\u2a0f\",\n    \"\\u2a12\",\n    \"\\u2a13\",\n    \"\\u2a15\",\n    \"\\u2a16\",\n    \"\\u2a17\",\n    \"\\u2a18\",\n    \"\\u2a19\",\n    \"\\u2a1a\"\n  ],\n  props: {\n    numArgs: 0,\n    allowedInArgument: true\n  },\n  handler({ parser, funcName }) {\n    let fName = funcName;\n    if (fName.length === 1) {\n      fName = singleCharIntegrals[fName];\n    }\n    return {\n      type: \"op\",\n      mode: parser.mode,\n      limits: false,\n      parentIsSupSub: false,\n      symbol: true,\n      stack: false,\n      name: fName\n    };\n  },\n  mathmlBuilder: mathmlBuilder$2\n});\n\n// NOTE: Unlike most builders, this one handles not only\n// \"operatorname\", but also  \"supsub\" since \\operatorname* can\n// affect super/subscripting.\n\nconst mathmlBuilder$1 = (group, style) => {\n  let expression = buildExpression(group.body, style.withFont(\"mathrm\"));\n\n  // Is expression a string or has it something like a fraction?\n  let isAllString = true; // default\n  for (let i = 0; i < expression.length; i++) {\n    let node = expression[i];\n    if (node instanceof MathNode) {\n      if ((node.type === \"mrow\" || node.type === \"mpadded\") && node.children.length === 1 &&\n          node.children[0] instanceof MathNode) {\n        node = node.children[0];\n      } else if (node.type === \"mrow\" && node.children.length === 2 &&\n                 node.children[0] instanceof MathNode &&\n                 node.children[1] instanceof MathNode &&\n                 node.children[1].type === \"mspace\" && !node.children[1].attributes.width &&\n                 node.children[1].children.length === 0) {\n        // This is a workaround for a Firefox bug that applies spacing to\n        // an <mi> with mathvariant=\"normal\".\n        node = node.children[0];\n      }\n      switch (node.type) {\n        case \"mi\":\n        case \"mn\":\n        case \"ms\":\n        case \"mtext\":\n          break; // Do nothing yet.\n        case \"mspace\":\n          {\n            if (node.attributes.width) {\n              const width = node.attributes.width.replace(\"em\", \"\");\n              const ch = spaceCharacter(Number(width));\n              if (ch === \"\") {\n                isAllString = false;\n              } else {\n                expression[i] = new MathNode(\"mtext\", [new TextNode(ch)]);\n              }\n            }\n          }\n          break\n        case \"mo\": {\n          const child = node.children[0];\n          if (node.children.length === 1 && child instanceof TextNode) {\n            child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n          } else {\n            isAllString = false;\n          }\n          break\n        }\n        default:\n          isAllString = false;\n      }\n    } else {\n      isAllString = false;\n    }\n  }\n\n  if (isAllString) {\n    // Write a single TextNode instead of multiple nested tags.\n    const word = expression.map((node) => node.toText()).join(\"\");\n    expression = [new TextNode(word)];\n  } else if (\n    expression.length === 1\n    && [\"mover\", \"munder\"].includes(expression[0].type) &&\n    (expression[0].children[0].type === \"mi\" || expression[0].children[0].type === \"mtext\")\n  ) {\n    expression[0].children[0].type = \"mi\";\n    if (group.parentIsSupSub) {\n      return new MathNode(\"mrow\", expression)\n    } else {\n      const operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n      return newDocumentFragment([expression[0], operator])\n    }\n  }\n\n  let wrapper;\n  if (isAllString) {\n    wrapper = new MathNode(\"mi\", expression);\n    if (expression[0].text.length === 1) {\n      wrapper.setAttribute(\"mathvariant\", \"normal\");\n    }\n  } else {\n    wrapper = new MathNode(\"mrow\", expression);\n  }\n\n  if (!group.parentIsSupSub) {\n    // Append an <mo>&ApplyFunction;</mo>.\n    // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n    const operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n    const fragment = [wrapper, operator];\n    if (group.needsLeadingSpace) {\n      // LaTeX gives operator spacing, but a <mi> gets ord spacing.\n      // So add a leading space.\n      const space = new MathNode(\"mspace\");\n      space.setAttribute(\"width\", \"0.1667em\"); // thin space.\n      fragment.unshift(space);\n    }\n    if (!group.isFollowedByDelimiter) {\n      const trail = new MathNode(\"mspace\");\n      trail.setAttribute(\"width\", \"0.1667em\"); // thin space.\n      fragment.push(trail);\n    }\n    return newDocumentFragment(fragment)\n  }\n\n  return wrapper\n};\n\n// \\operatorname\n// amsopn.dtx: \\mathop{#1\\kern\\z@\\operator@font#3}\\newmcodes@\ndefineFunction({\n  type: \"operatorname\",\n  names: [\"\\\\operatorname@\", \"\\\\operatornamewithlimits\"],\n  props: {\n    numArgs: 1,\n    allowedInArgument: true\n  },\n  handler: ({ parser, funcName }, args) => {\n    const body = args[0];\n    const prevAtomType = parser.prevAtomType;\n    const next = parser.gullet.future().text;\n    return {\n      type: \"operatorname\",\n      mode: parser.mode,\n      body: ordargument(body),\n      alwaysHandleSupSub: (funcName === \"\\\\operatornamewithlimits\"),\n      limits: false,\n      parentIsSupSub: false,\n      isFollowedByDelimiter: isDelimiter(next),\n      needsLeadingSpace: prevAtomType.length > 0 && ordTypes.includes(prevAtomType)\n    };\n  },\n  mathmlBuilder: mathmlBuilder$1\n});\n\ndefineMacro(\"\\\\operatorname\",\n  \"\\\\@ifstar\\\\operatornamewithlimits\\\\operatorname@\");\n\ndefineFunctionBuilders({\n  type: \"ordgroup\",\n  mathmlBuilder(group, style) {\n    return buildExpressionRow(group.body, style, group.semisimple);\n  }\n});\n\ndefineFunction({\n  type: \"phantom\",\n  names: [\"\\\\phantom\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler: ({ parser }, args) => {\n    const body = args[0];\n    return {\n      type: \"phantom\",\n      mode: parser.mode,\n      body: ordargument(body)\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const inner = buildExpression(group.body, style);\n    return new MathNode(\"mphantom\", inner);\n  }\n});\n\ndefineFunction({\n  type: \"hphantom\",\n  names: [\"\\\\hphantom\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler: ({ parser }, args) => {\n    const body = args[0];\n    return {\n      type: \"hphantom\",\n      mode: parser.mode,\n      body\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const inner = buildExpression(ordargument(group.body), style);\n    const phantom = new MathNode(\"mphantom\", inner);\n    const node = new MathNode(\"mpadded\", [phantom]);\n    node.setAttribute(\"height\", \"0px\");\n    node.setAttribute(\"depth\", \"0px\");\n    return node;\n  }\n});\n\ndefineFunction({\n  type: \"vphantom\",\n  names: [\"\\\\vphantom\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler: ({ parser }, args) => {\n    const body = args[0];\n    return {\n      type: \"vphantom\",\n      mode: parser.mode,\n      body\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const inner = buildExpression(ordargument(group.body), style);\n    const phantom = new MathNode(\"mphantom\", inner);\n    const node = new MathNode(\"mpadded\", [phantom]);\n    node.setAttribute(\"width\", \"0.1px\");\n    return node;\n  }\n});\n\n// In LaTeX, \\pmb is a simulation of bold font.\n// The version of \\pmb in ambsy.sty works by typesetting three copies of the argument\n// with small offsets. We use CSS font-weight:bold.\n\ndefineFunction({\n  type: \"pmb\",\n  names: [\"\\\\pmb\"],\n  props: {\n    numArgs: 1,\n    allowedInText: true\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"pmb\",\n      mode: parser.mode,\n      body: ordargument(args[0])\n    }\n  },\n  mathmlBuilder(group, style) {\n    const inner = buildExpression(group.body, style);\n    // Wrap with an <mstyle> element.\n    const node = wrapWithMstyle(inner);\n    node.setAttribute(\"style\", \"font-weight:bold\");\n    return node\n  }\n});\n\n// \\raise, \\lower, and \\raisebox\n\nconst mathmlBuilder = (group, style) => {\n  const newStyle = style.withLevel(StyleLevel.TEXT);\n  const node = new MathNode(\"mpadded\", [buildGroup$1(group.body, newStyle)]);\n  const dy = calculateSize(group.dy, style);\n  node.setAttribute(\"voffset\", dy.number + dy.unit);\n  // Add padding, which acts to increase height in Chromium.\n  // TODO: Figure out some way to change height in Firefox w/o breaking Chromium.\n  if (dy.number > 0) {\n    node.style.padding = dy.number + dy.unit + \" 0 0 0\";\n  } else {\n    node.style.padding = \"0 0 \" + Math.abs(dy.number) + dy.unit + \" 0\";\n  }\n  return node\n};\n\ndefineFunction({\n  type: \"raise\",\n  names: [\"\\\\raise\", \"\\\\lower\"],\n  props: {\n    numArgs: 2,\n    argTypes: [\"size\", \"primitive\"],\n    primitive: true\n  },\n  handler({ parser, funcName }, args) {\n    const amount = assertNodeType(args[0], \"size\").value;\n    if (funcName === \"\\\\lower\") { amount.number *= -1; }\n    const body = args[1];\n    return {\n      type: \"raise\",\n      mode: parser.mode,\n      dy: amount,\n      body\n    };\n  },\n  mathmlBuilder\n});\n\n\ndefineFunction({\n  type: \"raise\",\n  names: [\"\\\\raisebox\"],\n  props: {\n    numArgs: 2,\n    argTypes: [\"size\", \"hbox\"],\n    allowedInText: true\n  },\n  handler({ parser, funcName }, args) {\n    const amount = assertNodeType(args[0], \"size\").value;\n    const body = args[1];\n    return {\n      type: \"raise\",\n      mode: parser.mode,\n      dy: amount,\n      body\n    };\n  },\n  mathmlBuilder\n});\n\ndefineFunction({\n  type: \"ref\",\n  names: [\"\\\\ref\", \"\\\\eqref\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"raw\"]\n  },\n  handler({ parser, funcName }, args) {\n    return {\n      type: \"ref\",\n      mode: parser.mode,\n      funcName,\n      string: args[0].string.replace(invalidIdRegEx, \"\")\n    };\n  },\n  mathmlBuilder(group, style) {\n    // Create an empty <a> node. Set a class and an href attribute.\n    // The post-processor will populate with the target's tag or equation number.\n    const classes = group.funcName === \"\\\\ref\" ? [\"tml-ref\"] : [\"tml-ref\", \"tml-eqref\"];\n    return new AnchorNode(\"#\" + group.string, classes, null)\n  }\n});\n\ndefineFunction({\n  type: \"reflect\",\n  names: [\"\\\\reflectbox\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"hbox\"],\n    allowedInText: true\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"reflect\",\n      mode: parser.mode,\n      body: args[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    const node = buildGroup$1(group.body, style);\n    node.style.transform = \"scaleX(-1)\";\n    return node\n  }\n});\n\ndefineFunction({\n  type: \"internal\",\n  names: [\"\\\\relax\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    allowedInArgument: true\n  },\n  handler({ parser }) {\n    return {\n      type: \"internal\",\n      mode: parser.mode\n    };\n  }\n});\n\ndefineFunction({\n  type: \"rule\",\n  names: [\"\\\\rule\"],\n  props: {\n    numArgs: 2,\n    numOptionalArgs: 1,\n    allowedInText: true,\n    allowedInMath: true,\n    argTypes: [\"size\", \"size\", \"size\"]\n  },\n  handler({ parser }, args, optArgs) {\n    const shift = optArgs[0];\n    const width = assertNodeType(args[0], \"size\");\n    const height = assertNodeType(args[1], \"size\");\n    return {\n      type: \"rule\",\n      mode: parser.mode,\n      shift: shift && assertNodeType(shift, \"size\").value,\n      width: width.value,\n      height: height.value\n    };\n  },\n  mathmlBuilder(group, style) {\n    const width = calculateSize(group.width, style);\n    const height = calculateSize(group.height, style);\n    const shift = group.shift\n      ? calculateSize(group.shift, style)\n      : { number: 0, unit: \"em\" };\n    const color = (style.color && style.getColor()) || \"black\";\n\n    const rule = new MathNode(\"mspace\");\n    if (width.number > 0 && height.number > 0) {\n      rule.setAttribute(\"mathbackground\", color);\n    }\n    rule.setAttribute(\"width\", width.number + width.unit);\n    rule.setAttribute(\"height\", height.number + height.unit);\n    if (shift.number === 0) { return rule }\n\n    const wrapper = new MathNode(\"mpadded\", [rule]);\n    if (shift.number >= 0) {\n      wrapper.setAttribute(\"height\", \"+\" + shift.number + shift.unit);\n    } else {\n      wrapper.setAttribute(\"height\", shift.number + shift.unit);\n      wrapper.setAttribute(\"depth\", \"+\" + -shift.number + shift.unit);\n    }\n    wrapper.setAttribute(\"voffset\", shift.number + shift.unit);\n    return wrapper;\n  }\n});\n\nconst numRegEx = /^[0-9]$/;\nconst unicodeNumSubs = {\n  '0': '₀',\n  '1': '₁',\n  '2': '₂',\n  '3': '₃',\n  '4': '₄',\n  '5': '₅',\n  '6': '₆',\n  '7': '₇',\n  '8': '₈',\n  '9': '₉'\n};\nconst unicodeNumSups = {\n  '0': '⁰',\n  '1': '¹',\n  '2': '²',\n  '3': '³',\n  '4': '⁴',\n  '5': '⁵',\n  '6': '⁶',\n  '7': '⁷',\n  '8': '⁸',\n  '9': '⁹'\n};\n\ndefineFunction({\n  type: \"sfrac\",\n  names: [\"\\\\sfrac\"],\n  props: {\n    numArgs: 2,\n    allowedInText: true,\n    allowedInMath: true\n  },\n  handler({ parser }, args) {\n    let numerator = \"\";\n    for (const node of args[0].body) {\n      if (node.type !== \"textord\" || !numRegEx.test(node.text)) {\n        throw new ParseError(\"Numerator must be an integer.\", node)\n      }\n      numerator += node.text;\n    }\n    let denominator = \"\";\n    for (const node of args[1].body) {\n      if (node.type !== \"textord\" || !numRegEx.test(node.text)) {\n        throw new ParseError(\"Denominator must be an integer.\", node)\n      }\n      denominator += node.text;\n    }\n    return {\n      type: \"sfrac\",\n      mode: parser.mode,\n      numerator,\n      denominator\n    };\n  },\n  mathmlBuilder(group, style) {\n    const numerator = group.numerator.split('').map(c => unicodeNumSups[c]).join('');\n    const denominator = group.denominator.split('').map(c => unicodeNumSubs[c]).join('');\n    // Use a fraction slash.\n    const text = new TextNode(numerator + \"\\u2044\" + denominator, group.mode, style);\n    return new MathNode(\"mn\", [text], [\"special-fraction\"])\n  }\n});\n\n// The size mappings are taken from TeX with \\normalsize=10pt.\n// We don't have to track script level. MathML does that.\nconst sizeMap = {\n  \"\\\\tiny\": 0.5,\n  \"\\\\sixptsize\": 0.6,\n  \"\\\\Tiny\": 0.6,\n  \"\\\\scriptsize\": 0.7,\n  \"\\\\footnotesize\": 0.8,\n  \"\\\\small\": 0.9,\n  \"\\\\normalsize\": 1.0,\n  \"\\\\large\": 1.2,\n  \"\\\\Large\": 1.44,\n  \"\\\\LARGE\": 1.728,\n  \"\\\\huge\": 2.074,\n  \"\\\\Huge\": 2.488\n};\n\ndefineFunction({\n  type: \"sizing\",\n  names: [\n    \"\\\\tiny\",\n    \"\\\\sixptsize\",\n    \"\\\\Tiny\",\n    \"\\\\scriptsize\",\n    \"\\\\footnotesize\",\n    \"\\\\small\",\n    \"\\\\normalsize\",\n    \"\\\\large\",\n    \"\\\\Large\",\n    \"\\\\LARGE\",\n    \"\\\\huge\",\n    \"\\\\Huge\"\n  ],\n  props: {\n    numArgs: 0,\n    allowedInText: true\n  },\n  handler: ({ breakOnTokenText, funcName, parser }, args) => {\n    if (parser.settings.strict && parser.mode === \"math\") {\n      // eslint-disable-next-line no-console\n      console.log(`Temml strict-mode warning: Command ${funcName} is invalid in math mode.`);\n    }\n    const body = parser.parseExpression(false, breakOnTokenText, true);\n    return {\n      type: \"sizing\",\n      mode: parser.mode,\n      funcName,\n      body\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const newStyle = style.withFontSize(sizeMap[group.funcName]);\n    const inner = buildExpression(group.body, newStyle);\n    // Wrap with an <mstyle> element.\n    const node = wrapWithMstyle(inner);\n    const factor = (sizeMap[group.funcName] / style.fontSize).toFixed(4);\n    node.setAttribute(\"mathsize\", factor + \"em\");\n    return node;\n  }\n});\n\n// smash, with optional [tb], as in AMS\n\ndefineFunction({\n  type: \"smash\",\n  names: [\"\\\\smash\"],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1,\n    allowedInText: true\n  },\n  handler: ({ parser }, args, optArgs) => {\n    let smashHeight = false;\n    let smashDepth = false;\n    const tbArg = optArgs[0] && assertNodeType(optArgs[0], \"ordgroup\");\n    if (tbArg) {\n      // Optional [tb] argument is engaged.\n      // ref: amsmath: \\renewcommand{\\smash}[1][tb]{%\n      //               def\\mb@t{\\ht}\\def\\mb@b{\\dp}\\def\\mb@tb{\\ht\\z@\\z@\\dp}%\n      let letter = \"\";\n      for (let i = 0; i < tbArg.body.length; ++i) {\n        const node = tbArg.body[i];\n        // TODO: Write an AssertSymbolNode\n        letter = node.text;\n        if (letter === \"t\") {\n          smashHeight = true;\n        } else if (letter === \"b\") {\n          smashDepth = true;\n        } else {\n          smashHeight = false;\n          smashDepth = false;\n          break;\n        }\n      }\n    } else {\n      smashHeight = true;\n      smashDepth = true;\n    }\n\n    const body = args[0];\n    return {\n      type: \"smash\",\n      mode: parser.mode,\n      body,\n      smashHeight,\n      smashDepth\n    };\n  },\n  mathmlBuilder: (group, style) => {\n    const node = new MathNode(\"mpadded\", [buildGroup$1(group.body, style)]);\n\n    if (group.smashHeight) {\n      node.setAttribute(\"height\", \"0px\");\n    }\n\n    if (group.smashDepth) {\n      node.setAttribute(\"depth\", \"0px\");\n    }\n\n    return node;\n  }\n});\n\n// Letters that are x-height w/o a descender.\nconst xHeights = ['a', 'c', 'e', 'ı', 'm', 'n', 'o', 'r', 's', 'u', 'v', 'w', 'x', 'z', 'α',\n  'ε', 'ι', 'κ', 'ν', 'ο', 'π', 'σ', 'τ', 'υ', 'ω', '\\\\alpha', '\\\\epsilon', \"\\\\iota\",\n  '\\\\kappa', '\\\\nu', '\\\\omega', '\\\\pi', '\\\\tau', '\\\\omega'];\n\ndefineFunction({\n  type: \"sqrt\",\n  names: [\"\\\\sqrt\"],\n  props: {\n    numArgs: 1,\n    numOptionalArgs: 1\n  },\n  handler({ parser }, args, optArgs) {\n    const index = optArgs[0];\n    const body = args[0];\n    // Check if the body consists entirely of an x-height letter.\n    // TODO: Remove this check after Chromium is fixed.\n    if (body.body && body.body.length === 1 && body.body[0].text &&\n          xHeights.includes(body.body[0].text)) {\n      // Chromium does not put enough space above an x-height letter.\n      // Insert a strut.\n      body.body.push({\n        \"type\": \"rule\",\n        \"mode\": \"math\",\n        \"shift\": null,\n        \"width\": { \"number\": 0, \"unit\": \"pt\" },\n        \"height\": { \"number\": 0.5, \"unit\": \"em\" }\n      });\n    }\n    return {\n      type: \"sqrt\",\n      mode: parser.mode,\n      body,\n      index\n    };\n  },\n  mathmlBuilder(group, style) {\n    const { body, index } = group;\n    return index\n      ? new MathNode(\"mroot\", [\n        buildGroup$1(body, style),\n        buildGroup$1(index, style.incrementLevel())\n      ])\n    : new MathNode(\"msqrt\", [buildGroup$1(body, style)]);\n  }\n});\n\nconst styleMap = {\n  display: 0,\n  text: 1,\n  script: 2,\n  scriptscript: 3\n};\n\nconst styleAttributes = {\n  display: [\"0\", \"true\"],\n  text: [\"0\", \"false\"],\n  script: [\"1\", \"false\"],\n  scriptscript: [\"2\", \"false\"]\n};\n\ndefineFunction({\n  type: \"styling\",\n  names: [\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true,\n    primitive: true\n  },\n  handler({ breakOnTokenText, funcName, parser }, args) {\n    // parse out the implicit body\n    const body = parser.parseExpression(true, breakOnTokenText, true);\n\n    const scriptLevel = funcName.slice(1, funcName.length - 5);\n    return {\n      type: \"styling\",\n      mode: parser.mode,\n      // Figure out what scriptLevel to use by pulling out the scriptLevel from\n      // the function name\n      scriptLevel,\n      body\n    };\n  },\n  mathmlBuilder(group, style) {\n    // Figure out what scriptLevel we're changing to.\n    const newStyle = style.withLevel(styleMap[group.scriptLevel]);\n    // The style argument in the next line does NOT directly set a MathML script level.\n    // It just tracks the style level, in case we need to know it for supsub or mathchoice.\n    const inner = buildExpression(group.body, newStyle);\n    // Wrap with an <mstyle> element.\n    const node = wrapWithMstyle(inner);\n\n    const attr = styleAttributes[group.scriptLevel];\n\n    // Here is where we set the MathML script level.\n    node.setAttribute(\"scriptlevel\", attr[0]);\n    node.setAttribute(\"displaystyle\", attr[1]);\n\n    return node;\n  }\n});\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * Sometimes, groups perform special rules when they have superscripts or\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\n\n// Helpers\nconst symbolRegEx = /^m(over|under|underover)$/;\n\n// From the KaTeX font metrics, identify letters that encroach on a superscript.\nconst smallPad = \"DHKLUcegorsuvxyzΠΥΨαδηιμνοτυχϵ\";\nconst mediumPad = \"BCEFGIMNOPQRSTXZlpqtwΓΘΞΣΦΩβεζθξρςφψϑϕϱ\";\nconst largePad = \"AJdfΔΛ\";\n\n// Super scripts and subscripts, whose precise placement can depend on other\n// functions that precede them.\ndefineFunctionBuilders({\n  type: \"supsub\",\n  mathmlBuilder(group, style) {\n    // Is the inner group a relevant horizontal brace or bracket?\n    let isBracket = false;\n    let isOver;\n    let isSup;\n    let appendApplyFunction = false;\n    let appendSpace = false;\n    let needsLeadingSpace = false;\n\n    if (group.base && group.base.type === \"horizBracket\") {\n      isSup = !!group.sup;\n      if (isSup === group.base.isOver) {\n        isBracket = true;\n        isOver = group.base.isOver;\n      }\n    }\n\n    if (group.base && !group.stack &&\n      (group.base.type === \"op\" || group.base.type === \"operatorname\")) {\n      group.base.parentIsSupSub = true;\n      appendApplyFunction = !group.base.symbol;\n      appendSpace = appendApplyFunction && !group.isFollowedByDelimiter;\n      needsLeadingSpace = group.base.needsLeadingSpace;\n    }\n\n    const children = group.stack && group.base.body.length === 1\n      ? [buildGroup$1(group.base.body[0], style)]\n      : [buildGroup$1(group.base, style)];\n\n    // Note regarding scriptstyle level.\n    // (Sub|super)scripts should not shrink beyond MathML scriptlevel 2 aka \\scriptscriptstyle\n    // Ref: https://w3c.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes\n    // (BTW, MathML scriptlevel 2 is equal to Temml level 3.)\n    // But Chromium continues to shrink the (sub|super)scripts. So we explicitly set scriptlevel 2.\n\n    const childStyle = style.inSubOrSup();\n    if (group.sub) {\n      const sub = buildGroup$1(group.sub, childStyle);\n      if (style.level === 3) { sub.setAttribute(\"scriptlevel\", \"2\"); }\n      children.push(sub);\n    }\n\n    if (group.sup) {\n      const sup = buildGroup$1(group.sup, childStyle);\n      if (style.level === 3) { sup.setAttribute(\"scriptlevel\", \"2\"); }\n      if (group.base && group.base.text && group.base.text.length === 1) {\n        // Make an italic correction on the superscript.\n        const text = group.base.text;\n        if (smallPad.indexOf(text) > -1) {\n          sup.classes.push(\"tml-sml-pad\");\n        } else if (mediumPad.indexOf(text) > -1) {\n          sup.classes.push(\"tml-med-pad\");\n        } else if (largePad.indexOf(text) > -1) {\n          sup.classes.push(\"tml-lrg-pad\");\n        }\n      }\n      children.push(sup);\n    }\n\n    let nodeType;\n    if (isBracket) {\n      nodeType = isOver ? \"mover\" : \"munder\";\n    } else if (!group.sub) {\n      const base = group.base;\n      if (\n        base &&\n        base.type === \"op\" &&\n        base.limits &&\n        (style.level === StyleLevel.DISPLAY || base.alwaysHandleSupSub)\n      ) {\n        nodeType = \"mover\";\n      } else if (\n        base &&\n        base.type === \"operatorname\" &&\n        base.alwaysHandleSupSub &&\n        (base.limits || style.level === StyleLevel.DISPLAY)\n      ) {\n        nodeType = \"mover\";\n      } else {\n        nodeType = \"msup\";\n      }\n    } else if (!group.sup) {\n      const base = group.base;\n      if (group.stack) {\n        nodeType = \"munder\";\n      } else if (\n        base &&\n        base.type === \"op\" &&\n        base.limits &&\n        (style.level === StyleLevel.DISPLAY || base.alwaysHandleSupSub)\n      ) {\n        nodeType = \"munder\";\n      } else if (\n        base &&\n        base.type === \"operatorname\" &&\n        base.alwaysHandleSupSub &&\n        (base.limits || style.level === StyleLevel.DISPLAY)\n      ) {\n        nodeType = \"munder\";\n      } else {\n        nodeType = \"msub\";\n      }\n    } else {\n      const base = group.base;\n      if (base && ((base.type === \"op\" && base.limits) || base.type === \"multiscript\") &&\n        (style.level === StyleLevel.DISPLAY || base.alwaysHandleSupSub)\n      ) {\n        nodeType = \"munderover\";\n      } else if (\n        base &&\n        base.type === \"operatorname\" &&\n        base.alwaysHandleSupSub &&\n        (style.level === StyleLevel.DISPLAY || base.limits)\n      ) {\n        nodeType = \"munderover\";\n      } else {\n        nodeType = \"msubsup\";\n      }\n    }\n\n    let node = new MathNode(nodeType, children);\n    if (appendApplyFunction) {\n      // Append an <mo>&ApplyFunction;</mo>.\n      // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n      const operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n      if (needsLeadingSpace) {\n        const space = new MathNode(\"mspace\");\n        space.setAttribute(\"width\", \"0.1667em\"); // thin space.\n        node = newDocumentFragment([space, node, operator]);\n      } else {\n        node = newDocumentFragment([node, operator]);\n      }\n      if (appendSpace) {\n        const space = new MathNode(\"mspace\");\n        space.setAttribute(\"width\", \"0.1667em\"); // thin space.\n        node.children.push(space);\n      }\n    } else if (symbolRegEx.test(nodeType)) {\n      // Wrap in a <mrow>. Otherwise Firefox stretchy parens will not stretch to include limits.\n      node = new MathNode(\"mrow\", [node]);\n    }\n\n    return node\n  }\n});\n\n// Operator ParseNodes created in Parser.js from symbol Groups in src/symbols.js.\n\nconst short = [\"\\\\shortmid\", \"\\\\nshortmid\", \"\\\\shortparallel\",\n  \"\\\\nshortparallel\", \"\\\\smallsetminus\"];\n\nconst arrows = [\"\\\\Rsh\", \"\\\\Lsh\", \"\\\\restriction\"];\n\nconst isArrow = str => {\n  if (str.length === 1) {\n    const codePoint = str.codePointAt(0);\n    return (0x218f < codePoint && codePoint < 0x2200)\n  }\n  return str.indexOf(\"arrow\") > -1 || str.indexOf(\"harpoon\") > -1 || arrows.includes(str)\n};\n\ndefineFunctionBuilders({\n  type: \"atom\",\n  mathmlBuilder(group, style) {\n    const node = new MathNode(\"mo\", [makeText(group.text, group.mode)]);\n    if (group.family === \"punct\") {\n      node.setAttribute(\"separator\", \"true\");\n    } else if (group.family === \"open\" || group.family === \"close\") {\n      // Delims built here should not stretch vertically.\n      // See delimsizing.js for stretchy delims.\n      if (group.family === \"open\") {\n        node.setAttribute(\"form\", \"prefix\");\n        // Set an explicit attribute for stretch. Otherwise Firefox may do it wrong.\n        node.setAttribute(\"stretchy\", \"false\");\n      } else if (group.family === \"close\") {\n        node.setAttribute(\"form\", \"postfix\");\n        node.setAttribute(\"stretchy\", \"false\");\n      }\n    } else if (group.text === \"\\\\mid\") {\n      // Firefox messes up this spacing if at the end of an <mrow>. See it explicitly.\n      node.setAttribute(\"lspace\", \"0.22em\"); // medium space\n      node.setAttribute(\"rspace\", \"0.22em\");\n      node.setAttribute(\"stretchy\", \"false\");\n    } else if (group.family === \"rel\" && isArrow(group.text)) {\n      node.setAttribute(\"stretchy\", \"false\");\n    } else if (short.includes(group.text)) {\n      node.setAttribute(\"mathsize\", \"70%\");\n    } else if (group.text === \":\") {\n      // \":\" is not in the MathML operator dictionary. Give it BIN spacing.\n      node.attributes.lspace = \"0.2222em\";\n      node.attributes.rspace = \"0.2222em\";\n    } else if (group.needsSpacing) {\n      // Fix a MathML bug that occurs when a <mo> is between two <mtext> elements.\n      if (group.family === \"bin\") {\n        return new MathNode(\"mrow\", [padding(0.222), node, padding(0.222)])\n      } else {\n        // REL spacing\n        return new MathNode(\"mrow\", [padding(0.2778), node, padding(0.2778)])\n      }\n    }\n    return node;\n  }\n});\n\n/**\n * Maps TeX font commands to \"mathvariant\" attribute in buildMathML.js\n */\nconst fontMap = {\n  // styles\n  mathbf: \"bold\",\n  mathrm: \"normal\",\n  textit: \"italic\",\n  mathit: \"italic\",\n  mathnormal: \"italic\",\n\n  // families\n  mathbb: \"double-struck\",\n  mathcal: \"script\",\n  mathfrak: \"fraktur\",\n  mathscr: \"script\",\n  mathsf: \"sans-serif\",\n  mathtt: \"monospace\"\n};\n\n/**\n * Returns the math variant as a string or null if none is required.\n */\nconst getVariant = function(group, style) {\n  // Handle font specifiers as best we can.\n  // Chromium does not support the MathML mathvariant attribute.\n  // So we'll use Unicode replacement characters instead.\n  // But first, determine the math variant.\n\n  // Deal with the \\textit, \\textbf, etc., functions.\n  if (style.fontFamily === \"texttt\") {\n    return \"monospace\"\n  } else if (style.fontFamily === \"textsc\") {\n    return \"normal\"; // handled via character substitution in symbolsOrd.js.\n  } else if (style.fontFamily === \"textsf\") {\n    if (style.fontShape === \"textit\" && style.fontWeight === \"textbf\") {\n      return \"sans-serif-bold-italic\"\n    } else if (style.fontShape === \"textit\") {\n      return \"sans-serif-italic\"\n    } else if (style.fontWeight === \"textbf\") {\n      return \"sans-serif-bold\"\n    } else {\n      return \"sans-serif\"\n    }\n  } else if (style.fontShape === \"textit\" && style.fontWeight === \"textbf\") {\n    return \"bold-italic\"\n  } else if (style.fontShape === \"textit\") {\n    return \"italic\"\n  } else if (style.fontWeight === \"textbf\") {\n    return \"bold\"\n  }\n\n  // Deal with the \\mathit, mathbf, etc, functions.\n  const font = style.font;\n  if (!font || font === \"mathnormal\") {\n    return null\n  }\n\n  const mode = group.mode;\n  switch (font) {\n    case \"mathit\":\n      return \"italic\"\n    case \"mathrm\": {\n      const codePoint = group.text.codePointAt(0);\n      // LaTeX \\mathrm returns italic for Greek characters.\n      return  (0x03ab < codePoint && codePoint < 0x03cf) ? \"italic\" : \"normal\"\n    }\n    case \"greekItalic\":\n      return \"italic\"\n    case \"up@greek\":\n      return \"normal\"\n    case \"boldsymbol\":\n    case \"mathboldsymbol\":\n      return \"bold-italic\"\n    case \"mathbf\":\n      return \"bold\"\n    case \"mathbb\":\n      return \"double-struck\"\n    case \"mathfrak\":\n      return \"fraktur\"\n    case \"mathscr\":\n    case \"mathcal\":\n      return \"script\"\n    case \"mathsf\":\n      return \"sans-serif\"\n    case \"mathsfit\":\n      return \"sans-serif-italic\"\n    case \"mathtt\":\n      return \"monospace\"\n  }\n\n  let text = group.text;\n  if (symbols[mode][text] && symbols[mode][text].replace) {\n    text = symbols[mode][text].replace;\n  }\n\n  return Object.prototype.hasOwnProperty.call(fontMap, font) ? fontMap[font] : null\n};\n\n// \"mathord\" and \"textord\" ParseNodes created in Parser.js from symbol Groups in\n// src/symbols.js.\n\nconst numberRegEx = /^\\d(?:[\\d,.]*\\d)?$/;\nconst latinRegEx = /[A-Ba-z]/;\nconst primes = new Set([\"\\\\prime\", \"\\\\dprime\", \"\\\\trprime\", \"\\\\qprime\",\n  \"\\\\backprime\", \"\\\\backdprime\", \"\\\\backtrprime\"]);\n\nconst italicNumber = (text, variant, tag) => {\n  const mn = new MathNode(tag, [text]);\n  const wrapper = new MathNode(\"mstyle\", [mn]);\n  wrapper.style[\"font-style\"] = \"italic\";\n  wrapper.style[\"font-family\"] = \"Cambria, 'Times New Roman', serif\";\n  if (variant === \"bold-italic\") { wrapper.style[\"font-weight\"] = \"bold\"; }\n  return wrapper\n};\n\ndefineFunctionBuilders({\n  type: \"mathord\",\n  mathmlBuilder(group, style) {\n    const text = makeText(group.text, group.mode, style);\n    const codePoint = text.text.codePointAt(0);\n    // Test for upper-case Greek\n    const defaultVariant = (0x0390 < codePoint && codePoint < 0x03aa) ? \"normal\" : \"italic\";\n    const variant = getVariant(group, style) || defaultVariant;\n    if (variant === \"script\") {\n      text.text = variantChar(text.text, variant);\n      return new MathNode(\"mi\", [text], [style.font])\n    } else if (variant !== \"italic\") {\n      text.text = variantChar(text.text, variant);\n    }\n    let node = new MathNode(\"mi\", [text]);\n    // TODO: Handle U+1D49C - U+1D4CF per https://www.unicode.org/charts/PDF/U1D400.pdf\n    if (variant === \"normal\") {\n      node.setAttribute(\"mathvariant\", \"normal\");\n      if (text.text.length === 1) {\n        // A Firefox bug will apply spacing here, but there should be none. Fix it.\n        const mspace = new MathNode(\"mspace\", []);\n        node = new MathNode(\"mrow\", [node, mspace]);\n      }\n    }\n    return node\n  }\n});\n\ndefineFunctionBuilders({\n  type: \"textord\",\n  mathmlBuilder(group, style) {\n    let ch = group.text;\n    const codePoint = ch.codePointAt(0);\n    if (style.fontFamily === \"textsc\") {\n      // Convert small latin letters to small caps.\n      if (96 < codePoint && codePoint < 123) {\n        ch = smallCaps[ch];\n      }\n    }\n    const text = makeText(ch, group.mode, style);\n    const variant = getVariant(group, style) || \"normal\";\n\n    let node;\n    if (numberRegEx.test(group.text)) {\n      const tag = group.mode === \"text\" ? \"mtext\" : \"mn\";\n      if (variant === \"italic\" || variant === \"bold-italic\") {\n        return italicNumber(text, variant, tag)\n      } else {\n        if (variant !== \"normal\") {\n          text.text = text.text.split(\"\").map(c => variantChar(c, variant)).join(\"\");\n        }\n        node = new MathNode(tag, [text]);\n      }\n    } else if (group.mode === \"text\") {\n      if (variant !== \"normal\") {\n        text.text = variantChar(text.text, variant);\n      }\n      node = new MathNode(\"mtext\", [text]);\n    } else if (primes.has(group.text)) {\n      node = new MathNode(\"mo\", [text]);\n      // TODO: If/when Chromium uses ssty variant for prime, remove the next line.\n      node.classes.push(\"tml-prime\");\n    } else {\n      const origText = text.text;\n      if (variant !== \"italic\") {\n        text.text = variantChar(text.text, variant);\n      }\n      node = new MathNode(\"mi\", [text]);\n      if (text.text === origText && latinRegEx.test(origText)) {\n        node.setAttribute(\"mathvariant\", \"italic\");\n      }\n    }\n    return node\n  }\n});\n\n// A map of CSS-based spacing functions to their CSS class.\nconst cssSpace = {\n  \"\\\\nobreak\": \"nobreak\",\n  \"\\\\allowbreak\": \"allowbreak\"\n};\n\n// A lookup table to determine whether a spacing function/symbol should be\n// treated like a regular space character.  If a symbol or command is a key\n// in this table, then it should be a regular space character.  Furthermore,\n// the associated value may have a `className` specifying an extra CSS class\n// to add to the created `span`.\nconst regularSpace = {\n  \" \": {},\n  \"\\\\ \": {},\n  \"~\": {\n    className: \"nobreak\"\n  },\n  \"\\\\space\": {},\n  \"\\\\nobreakspace\": {\n    className: \"nobreak\"\n  }\n};\n\n// ParseNode<\"spacing\"> created in Parser.js from the \"spacing\" symbol Groups in\n// src/symbols.js.\ndefineFunctionBuilders({\n  type: \"spacing\",\n  mathmlBuilder(group, style) {\n    let node;\n\n    if (Object.prototype.hasOwnProperty.call(regularSpace, group.text)) {\n      // Firefox does not render a space in a <mtext> </mtext>. So write a no-break space.\n      // TODO: If Firefox fixes that bug, uncomment the next line and write ch into the node.\n      //const ch = (regularSpace[group.text].className === \"nobreak\") ? \"\\u00a0\" : \" \"\n      node = new MathNode(\"mtext\", [new TextNode(\"\\u00a0\")]);\n    } else if (Object.prototype.hasOwnProperty.call(cssSpace, group.text)) {\n      // MathML 3.0 calls for nobreak to occur in an <mo>, not an <mtext>\n      // Ref: https://www.w3.org/Math/draft-spec/mathml.html#chapter3_presm.lbattrs\n      node = new MathNode(\"mo\");\n      if (group.text === \"\\\\nobreak\") {\n        node.setAttribute(\"linebreak\", \"nobreak\");\n      }\n    } else {\n      throw new ParseError(`Unknown type of space \"${group.text}\"`)\n    }\n\n    return node\n  }\n});\n\ndefineFunctionBuilders({\n  type: \"tag\"\n});\n\n// For a \\tag, the work usually done in a mathmlBuilder is instead done in buildMathML.js.\n// That way, a \\tag can be pulled out of the parse tree and wrapped around the outer node.\n\n// Non-mathy text, possibly in a font\nconst textFontFamilies = {\n  \"\\\\text\": undefined,\n  \"\\\\textrm\": \"textrm\",\n  \"\\\\textsf\": \"textsf\",\n  \"\\\\texttt\": \"texttt\",\n  \"\\\\textnormal\": \"textrm\",\n  \"\\\\textsc\": \"textsc\"      // small caps\n};\n\nconst textFontWeights = {\n  \"\\\\textbf\": \"textbf\",\n  \"\\\\textmd\": \"textmd\"\n};\n\nconst textFontShapes = {\n  \"\\\\textit\": \"textit\",\n  \"\\\\textup\": \"textup\"\n};\n\nconst styleWithFont = (group, style) => {\n  const font = group.font;\n  // Checks if the argument is a font family or a font style.\n  if (!font) {\n    return style;\n  } else if (textFontFamilies[font]) {\n    return style.withTextFontFamily(textFontFamilies[font]);\n  } else if (textFontWeights[font]) {\n    return style.withTextFontWeight(textFontWeights[font]);\n  } else if (font === \"\\\\emph\") {\n    return style.fontShape === \"textit\"\n      ? style.withTextFontShape(\"textup\")\n      : style.withTextFontShape(\"textit\")\n  }\n  return style.withTextFontShape(textFontShapes[font])\n};\n\ndefineFunction({\n  type: \"text\",\n  names: [\n    // Font families\n    \"\\\\text\",\n    \"\\\\textrm\",\n    \"\\\\textsf\",\n    \"\\\\texttt\",\n    \"\\\\textnormal\",\n    \"\\\\textsc\",\n    // Font weights\n    \"\\\\textbf\",\n    \"\\\\textmd\",\n    // Font Shapes\n    \"\\\\textit\",\n    \"\\\\textup\",\n    \"\\\\emph\"\n  ],\n  props: {\n    numArgs: 1,\n    argTypes: [\"text\"],\n    allowedInArgument: true,\n    allowedInText: true\n  },\n  handler({ parser, funcName }, args) {\n    const body = args[0];\n    return {\n      type: \"text\",\n      mode: parser.mode,\n      body: ordargument(body),\n      font: funcName\n    };\n  },\n  mathmlBuilder(group, style) {\n    const newStyle = styleWithFont(group, style);\n    const mrow = buildExpressionRow(group.body, newStyle);\n    return consolidateText(mrow)\n  }\n});\n\n// \\vcenter:  Vertically center the argument group on the math axis.\n\ndefineFunction({\n  type: \"vcenter\",\n  names: [\"\\\\vcenter\"],\n  props: {\n    numArgs: 1,\n    argTypes: [\"original\"],\n    allowedInText: false\n  },\n  handler({ parser }, args) {\n    return {\n      type: \"vcenter\",\n      mode: parser.mode,\n      body: args[0]\n    };\n  },\n  mathmlBuilder(group, style) {\n    // Use a math table to create vertically centered content.\n    const mtd = new MathNode(\"mtd\", [buildGroup$1(group.body, style)]);\n    mtd.style.padding = \"0\";\n    const mtr = new MathNode(\"mtr\", [mtd]);\n    return new MathNode(\"mtable\", [mtr])\n  }\n});\n\ndefineFunction({\n  type: \"verb\",\n  names: [\"\\\\verb\"],\n  props: {\n    numArgs: 0,\n    allowedInText: true\n  },\n  handler(context, args, optArgs) {\n    // \\verb and \\verb* are dealt with directly in Parser.js.\n    // If we end up here, it's because of a failure to match the two delimiters\n    // in the regex in Lexer.js.  LaTeX raises the following error when \\verb is\n    // terminated by end of line (or file).\n    throw new ParseError(\"\\\\verb ended by end of line instead of matching delimiter\");\n  },\n  mathmlBuilder(group, style) {\n    const text = new TextNode(makeVerb(group));\n    const node = new MathNode(\"mtext\", [text]);\n    node.setAttribute(\"mathvariant\", \"monospace\");\n    return node;\n  }\n});\n\n/**\n * Converts verb group into body string.\n *\n * \\verb* replaces each space with an open box \\u2423\n * \\verb replaces each space with a no-break space \\xA0\n */\nconst makeVerb = (group) => group.body.replace(/ /g, group.star ? \"\\u2423\" : \"\\xA0\");\n\n/** Include this to ensure that all functions are defined. */\n\nconst functions = _functions;\n\n/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n\n\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first two groups\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - mathches numerals\n * - matches a backslash followed by one or more whitespace characters\n * - matches a backslash followed by one or more letters then whitespace\n * - matches a backslash followed by any BMP character\n * Capturing groups:\n *   [1] regular whitespace\n *   [2] backslash followed by whitespace\n *   [3] anything else, which may include:\n *     [4] left character of \\verb*\n *     [5] left character of \\verb\n *     [6] backslash followed by word, excluding any trailing whitespace\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nconst spaceRegexString = \"[ \\r\\n\\t]\";\nconst controlWordRegexString = \"\\\\\\\\[a-zA-Z@]+\";\nconst controlSymbolRegexString = \"\\\\\\\\[^\\uD800-\\uDFFF]\";\nconst controlWordWhitespaceRegexString = `(${controlWordRegexString})${spaceRegexString}*`;\nconst controlSpaceRegexString = \"\\\\\\\\(\\n|[ \\r\\t]+\\n?)[ \\r\\t]*\";\nconst combiningDiacriticalMarkString = \"[\\u0300-\\u036f]\";\nconst combiningDiacriticalMarksEndRegex = new RegExp(`${combiningDiacriticalMarkString}+$`);\nconst tokenRegexString =\n  `(${spaceRegexString}+)|` + // whitespace\n  `${controlSpaceRegexString}|` +  // whitespace\n  \"([!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + // single codepoint\n  `${combiningDiacriticalMarkString}*` + // ...plus accents\n  \"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + // surrogate pair\n  `${combiningDiacriticalMarkString}*` + // ...plus accents\n  \"|\\\\\\\\verb\\\\*([^]).*?\\\\4\" + // \\verb*\n  \"|\\\\\\\\verb([^*a-zA-Z]).*?\\\\5\" + // \\verb unstarred\n  `|${controlWordWhitespaceRegexString}` + // \\macroName + spaces\n  `|${controlSymbolRegexString})`; // \\\\, \\', etc.\n\n/** Main Lexer class */\nclass Lexer {\n  constructor(input, settings) {\n    // Separate accents from characters\n    this.input = input;\n    this.settings = settings;\n    this.tokenRegex = new RegExp(tokenRegexString, 'g');\n    // Category codes. The lexer only supports comment characters (14) for now.\n    // MacroExpander additionally distinguishes active (13).\n    this.catcodes = {\n      \"%\": 14, // comment character\n      \"~\": 13  // active character\n    };\n  }\n\n  setCatcode(char, code) {\n    this.catcodes[char] = code;\n  }\n\n  /**\n   * This function lexes a single token.\n   */\n  lex() {\n    const input = this.input;\n    const pos = this.tokenRegex.lastIndex;\n    if (pos === input.length) {\n      return new Token(\"EOF\", new SourceLocation(this, pos, pos));\n    }\n    const match = this.tokenRegex.exec(input);\n    if (match === null || match.index !== pos) {\n      throw new ParseError(\n        `Unexpected character: '${input[pos]}'`,\n        new Token(input[pos], new SourceLocation(this, pos, pos + 1))\n      );\n    }\n    const text = match[6] || match[3] || (match[2] ? \"\\\\ \" : \" \");\n\n    if (this.catcodes[text] === 14) {\n      // comment character\n      const nlIndex = input.indexOf(\"\\n\", this.tokenRegex.lastIndex);\n      if (nlIndex === -1) {\n        this.tokenRegex.lastIndex = input.length; // EOF\n        if (this.settings.strict) {\n          throw new ParseError(\"% comment has no terminating newline; LaTeX would \" +\n              \"fail because of commenting the end of math mode\")\n        }\n      } else {\n        this.tokenRegex.lastIndex = nlIndex + 1;\n      }\n      return this.lex();\n    }\n\n    return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex));\n  }\n}\n\n/**\n * A `Namespace` refers to a space of nameable things like macros or lengths,\n * which can be `set` either globally or local to a nested group, using an\n * undo stack similar to how TeX implements this functionality.\n * Performance-wise, `get` and local `set` take constant time, while global\n * `set` takes time proportional to the depth of group nesting.\n */\n\n\nclass Namespace {\n  /**\n   * Both arguments are optional.  The first argument is an object of\n   * built-in mappings which never change.  The second argument is an object\n   * of initial (global-level) mappings, which will constantly change\n   * according to any global/top-level `set`s done.\n   */\n  constructor(builtins = {}, globalMacros = {}) {\n    this.current = globalMacros;\n    this.builtins = builtins;\n    this.undefStack = [];\n  }\n\n  /**\n   * Start a new nested group, affecting future local `set`s.\n   */\n  beginGroup() {\n    this.undefStack.push({});\n  }\n\n  /**\n   * End current nested group, restoring values before the group began.\n   */\n  endGroup() {\n    if (this.undefStack.length === 0) {\n      throw new ParseError(\n        \"Unbalanced namespace destruction: attempt \" +\n          \"to pop global namespace; please report this as a bug\"\n      );\n    }\n    const undefs = this.undefStack.pop();\n    for (const undef in undefs) {\n      if (Object.prototype.hasOwnProperty.call(undefs, undef )) {\n        if (undefs[undef] === undefined) {\n          delete this.current[undef];\n        } else {\n          this.current[undef] = undefs[undef];\n        }\n      }\n    }\n  }\n\n  /**\n   * Detect whether `name` has a definition.  Equivalent to\n   * `get(name) != null`.\n   */\n  has(name) {\n    return Object.prototype.hasOwnProperty.call(this.current, name ) ||\n    Object.prototype.hasOwnProperty.call(this.builtins, name );\n  }\n\n  /**\n   * Get the current value of a name, or `undefined` if there is no value.\n   *\n   * Note: Do not use `if (namespace.get(...))` to detect whether a macro\n   * is defined, as the definition may be the empty string which evaluates\n   * to `false` in JavaScript.  Use `if (namespace.get(...) != null)` or\n   * `if (namespace.has(...))`.\n   */\n  get(name) {\n    if (Object.prototype.hasOwnProperty.call(this.current, name )) {\n      return this.current[name];\n    } else {\n      return this.builtins[name];\n    }\n  }\n\n  /**\n   * Set the current value of a name, and optionally set it globally too.\n   * Local set() sets the current value and (when appropriate) adds an undo\n   * operation to the undo stack.  Global set() may change the undo\n   * operation at every level, so takes time linear in their number.\n   */\n  set(name, value, global = false) {\n    if (global) {\n      // Global set is equivalent to setting in all groups.  Simulate this\n      // by destroying any undos currently scheduled for this name,\n      // and adding an undo with the *new* value (in case it later gets\n      // locally reset within this environment).\n      for (let i = 0; i < this.undefStack.length; i++) {\n        delete this.undefStack[i][name];\n      }\n      if (this.undefStack.length > 0) {\n        this.undefStack[this.undefStack.length - 1][name] = value;\n      }\n    } else {\n      // Undo this set at end of this group (possibly to `undefined`),\n      // unless an undo is already in place, in which case that older\n      // value is the correct one.\n      const top = this.undefStack[this.undefStack.length - 1];\n      if (top && !Object.prototype.hasOwnProperty.call(top, name )) {\n        top[name] = this.current[name];\n      }\n    }\n    this.current[name] = value;\n  }\n}\n\n/**\n * This file contains the “gullet” where macros are expanded\n * until only non-macro tokens remain.\n */\n\n\n// List of commands that act like macros but aren't defined as a macro,\n// function, or symbol.  Used in `isDefined`.\nconst implicitCommands = {\n  \"^\": true, // Parser.js\n  _: true, // Parser.js\n  \"\\\\limits\": true, // Parser.js\n  \"\\\\nolimits\": true // Parser.js\n};\n\nclass MacroExpander {\n  constructor(input, settings, mode) {\n    this.settings = settings;\n    this.expansionCount = 0;\n    this.feed(input);\n    // Make new global namespace\n    this.macros = new Namespace(macros, settings.macros);\n    this.mode = mode;\n    this.stack = []; // contains tokens in REVERSE order\n  }\n\n  /**\n   * Feed a new input string to the same MacroExpander\n   * (with existing macros etc.).\n   */\n  feed(input) {\n    this.lexer = new Lexer(input, this.settings);\n  }\n\n  /**\n   * Switches between \"text\" and \"math\" modes.\n   */\n  switchMode(newMode) {\n    this.mode = newMode;\n  }\n\n  /**\n   * Start a new group nesting within all namespaces.\n   */\n  beginGroup() {\n    this.macros.beginGroup();\n  }\n\n  /**\n   * End current group nesting within all namespaces.\n   */\n  endGroup() {\n    this.macros.endGroup();\n  }\n\n  /**\n   * Returns the topmost token on the stack, without expanding it.\n   * Similar in behavior to TeX's `\\futurelet`.\n   */\n  future() {\n    if (this.stack.length === 0) {\n      this.pushToken(this.lexer.lex());\n    }\n    return this.stack[this.stack.length - 1]\n  }\n\n  /**\n   * Remove and return the next unexpanded token.\n   */\n  popToken() {\n    this.future(); // ensure non-empty stack\n    return this.stack.pop();\n  }\n\n  /**\n   * Add a given token to the token stack.  In particular, this get be used\n   * to put back a token returned from one of the other methods.\n   */\n  pushToken(token) {\n    this.stack.push(token);\n  }\n\n  /**\n   * Append an array of tokens to the token stack.\n   */\n  pushTokens(tokens) {\n    this.stack.push(...tokens);\n  }\n\n  /**\n   * Find an macro argument without expanding tokens and append the array of\n   * tokens to the token stack. Uses Token as a container for the result.\n   */\n  scanArgument(isOptional) {\n    let start;\n    let end;\n    let tokens;\n    if (isOptional) {\n      this.consumeSpaces(); // \\@ifnextchar gobbles any space following it\n      if (this.future().text !== \"[\") {\n        return null;\n      }\n      start = this.popToken(); // don't include [ in tokens\n      ({ tokens, end } = this.consumeArg([\"]\"]));\n    } else {\n      ({ tokens, start, end } = this.consumeArg());\n    }\n\n    // indicate the end of an argument\n    this.pushToken(new Token(\"EOF\", end.loc));\n\n    this.pushTokens(tokens);\n    return new Token(\"\", SourceLocation.range(start, end));\n  }\n\n  /**\n   * Consume all following space tokens, without expansion.\n   */\n  consumeSpaces() {\n    for (;;) {\n      const token = this.future();\n      if (token.text === \" \") {\n        this.stack.pop();\n      } else {\n        break;\n      }\n    }\n  }\n\n  /**\n   * Consume an argument from the token stream, and return the resulting array\n   * of tokens and start/end token.\n   */\n  consumeArg(delims) {\n    // The argument for a delimited parameter is the shortest (possibly\n    // empty) sequence of tokens with properly nested {...} groups that is\n    // followed ... by this particular list of non-parameter tokens.\n    // The argument for an undelimited parameter is the next nonblank\n    // token, unless that token is ‘{’, when the argument will be the\n    // entire {...} group that follows.\n    const tokens = [];\n    const isDelimited = delims && delims.length > 0;\n    if (!isDelimited) {\n      // Ignore spaces between arguments.  As the TeXbook says:\n      // \"After you have said ‘\\def\\row#1#2{...}’, you are allowed to\n      //  put spaces between the arguments (e.g., ‘\\row x n’), because\n      //  TeX doesn’t use single spaces as undelimited arguments.\"\n      this.consumeSpaces();\n    }\n    const start = this.future();\n    let tok;\n    let depth = 0;\n    let match = 0;\n    do {\n      tok = this.popToken();\n      tokens.push(tok);\n      if (tok.text === \"{\") {\n        ++depth;\n      } else if (tok.text === \"}\") {\n        --depth;\n        if (depth === -1) {\n          throw new ParseError(\"Extra }\", tok);\n        }\n      } else if (tok.text === \"EOF\") {\n        throw new ParseError(\n          \"Unexpected end of input in a macro argument\" +\n            \", expected '\" +\n            (delims && isDelimited ? delims[match] : \"}\") +\n            \"'\",\n          tok\n        );\n      }\n      if (delims && isDelimited) {\n        if ((depth === 0 || (depth === 1 && delims[match] === \"{\")) && tok.text === delims[match]) {\n          ++match;\n          if (match === delims.length) {\n            // don't include delims in tokens\n            tokens.splice(-match, match);\n            break;\n          }\n        } else {\n          match = 0;\n        }\n      }\n    } while (depth !== 0 || isDelimited);\n    // If the argument found ... has the form ‘{<nested tokens>}’,\n    // ... the outermost braces enclosing the argument are removed\n    if (start.text === \"{\" && tokens[tokens.length - 1].text === \"}\") {\n      tokens.pop();\n      tokens.shift();\n    }\n    tokens.reverse(); // to fit in with stack order\n    return { tokens, start, end: tok };\n  }\n\n  /**\n   * Consume the specified number of (delimited) arguments from the token\n   * stream and return the resulting array of arguments.\n   */\n  consumeArgs(numArgs, delimiters) {\n    if (delimiters) {\n      if (delimiters.length !== numArgs + 1) {\n        throw new ParseError(\"The length of delimiters doesn't match the number of args!\");\n      }\n      const delims = delimiters[0];\n      for (let i = 0; i < delims.length; i++) {\n        const tok = this.popToken();\n        if (delims[i] !== tok.text) {\n          throw new ParseError(\"Use of the macro doesn't match its definition\", tok);\n        }\n      }\n    }\n\n    const args = [];\n    for (let i = 0; i < numArgs; i++) {\n      args.push(this.consumeArg(delimiters && delimiters[i + 1]).tokens);\n    }\n    return args;\n  }\n\n  /**\n   * Expand the next token only once if possible.\n   *\n   * If the token is expanded, the resulting tokens will be pushed onto\n   * the stack in reverse order, and the number of such tokens will be\n   * returned.  This number might be zero or positive.\n   *\n   * If not, the return value is `false`, and the next token remains at the\n   * top of the stack.\n   *\n   * In either case, the next token will be on the top of the stack,\n   * or the stack will be empty (in case of empty expansion\n   * and no other tokens).\n   *\n   * Used to implement `expandAfterFuture` and `expandNextToken`.\n   *\n   * If expandableOnly, only expandable tokens are expanded and\n   * an undefined control sequence results in an error.\n   */\n  expandOnce(expandableOnly) {\n    const topToken = this.popToken();\n    const name = topToken.text;\n    const expansion = !topToken.noexpand ? this._getExpansion(name) : null;\n    if (expansion == null || (expandableOnly && expansion.unexpandable)) {\n      if (expandableOnly && expansion == null && name[0] === \"\\\\\" && !this.isDefined(name)) {\n        throw new ParseError(\"Undefined control sequence: \" + name);\n      }\n      this.pushToken(topToken);\n      return false;\n    }\n    this.expansionCount++;\n    if (this.expansionCount > this.settings.maxExpand) {\n      throw new ParseError(\n        \"Too many expansions: infinite loop or \" + \"need to increase maxExpand setting\"\n      );\n    }\n    let tokens = expansion.tokens;\n    const args = this.consumeArgs(expansion.numArgs, expansion.delimiters);\n    if (expansion.numArgs) {\n      // paste arguments in place of the placeholders\n      tokens = tokens.slice(); // make a shallow copy\n      for (let i = tokens.length - 1; i >= 0; --i) {\n        let tok = tokens[i];\n        if (tok.text === \"#\") {\n          if (i === 0) {\n            throw new ParseError(\"Incomplete placeholder at end of macro body\", tok);\n          }\n          tok = tokens[--i]; // next token on stack\n          if (tok.text === \"#\") {\n            // ## → #\n            tokens.splice(i + 1, 1); // drop first #\n          } else if (/^[1-9]$/.test(tok.text)) {\n            // replace the placeholder with the indicated argument\n            tokens.splice(i, 2, ...args[+tok.text - 1]);\n          } else {\n            throw new ParseError(\"Not a valid argument number\", tok);\n          }\n        }\n      }\n    }\n    // Concatenate expansion onto top of stack.\n    this.pushTokens(tokens);\n    return tokens.length;\n  }\n\n  /**\n   * Expand the next token only once (if possible), and return the resulting\n   * top token on the stack (without removing anything from the stack).\n   * Similar in behavior to TeX's `\\expandafter\\futurelet`.\n   * Equivalent to expandOnce() followed by future().\n   */\n  expandAfterFuture() {\n    this.expandOnce();\n    return this.future();\n  }\n\n  /**\n   * Recursively expand first token, then return first non-expandable token.\n   */\n  expandNextToken() {\n    for (;;) {\n      if (this.expandOnce() === false) { // fully expanded\n        const token = this.stack.pop();\n        // The token after \\noexpand is interpreted as if its meaning were ‘\\relax’\n        if (token.treatAsRelax) {\n          token.text = \"\\\\relax\";\n        }\n        return token\n      }\n    }\n\n    // This pathway is impossible.\n    throw new Error(); // eslint-disable-line no-unreachable\n  }\n\n  /**\n   * Fully expand the given macro name and return the resulting list of\n   * tokens, or return `undefined` if no such macro is defined.\n   */\n  expandMacro(name) {\n    return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;\n  }\n\n  /**\n   * Fully expand the given token stream and return the resulting list of\n   * tokens.  Note that the input tokens are in reverse order, but the\n   * output tokens are in forward order.\n   */\n  expandTokens(tokens) {\n    const output = [];\n    const oldStackLength = this.stack.length;\n    this.pushTokens(tokens);\n    while (this.stack.length > oldStackLength) {\n      // Expand only expandable tokens\n      if (this.expandOnce(true) === false) {  // fully expanded\n        const token = this.stack.pop();\n        if (token.treatAsRelax) {\n          // the expansion of \\noexpand is the token itself\n          token.noexpand = false;\n          token.treatAsRelax = false;\n        }\n        output.push(token);\n      }\n    }\n    return output;\n  }\n\n  /**\n   * Fully expand the given macro name and return the result as a string,\n   * or return `undefined` if no such macro is defined.\n   */\n  expandMacroAsText(name) {\n    const tokens = this.expandMacro(name);\n    if (tokens) {\n      return tokens.map((token) => token.text).join(\"\");\n    } else {\n      return tokens;\n    }\n  }\n\n  /**\n   * Returns the expanded macro as a reversed array of tokens and a macro\n   * argument count.  Or returns `null` if no such macro.\n   */\n  _getExpansion(name) {\n    const definition = this.macros.get(name);\n    if (definition == null) {\n      // mainly checking for undefined here\n      return definition;\n    }\n    // If a single character has an associated catcode other than 13\n    // (active character), then don't expand it.\n    if (name.length === 1) {\n      const catcode = this.lexer.catcodes[name];\n      if (catcode != null && catcode !== 13) {\n        return\n      }\n    }\n    const expansion = typeof definition === \"function\" ? definition(this) : definition;\n    if (typeof expansion === \"string\") {\n      let numArgs = 0;\n      if (expansion.indexOf(\"#\") !== -1) {\n        const stripped = expansion.replace(/##/g, \"\");\n        while (stripped.indexOf(\"#\" + (numArgs + 1)) !== -1) {\n          ++numArgs;\n        }\n      }\n      const bodyLexer = new Lexer(expansion, this.settings);\n      const tokens = [];\n      let tok = bodyLexer.lex();\n      while (tok.text !== \"EOF\") {\n        tokens.push(tok);\n        tok = bodyLexer.lex();\n      }\n      tokens.reverse(); // to fit in with stack using push and pop\n      const expanded = { tokens, numArgs };\n      return expanded;\n    }\n\n    return expansion;\n  }\n\n  /**\n   * Determine whether a command is currently \"defined\" (has some\n   * functionality), meaning that it's a macro (in the current group),\n   * a function, a symbol, or one of the special commands listed in\n   * `implicitCommands`.\n   */\n  isDefined(name) {\n    return (\n      this.macros.has(name) ||\n      Object.prototype.hasOwnProperty.call(functions, name ) ||\n      Object.prototype.hasOwnProperty.call(symbols.math, name ) ||\n      Object.prototype.hasOwnProperty.call(symbols.text, name ) ||\n      Object.prototype.hasOwnProperty.call(implicitCommands, name )\n    );\n  }\n\n  /**\n   * Determine whether a command is expandable.\n   */\n  isExpandable(name) {\n    const macro = this.macros.get(name);\n    return macro != null\n      ? typeof macro === \"string\" || typeof macro === \"function\" || !macro.unexpandable\n      : Object.prototype.hasOwnProperty.call(functions, name ) && !functions[name].primitive;\n  }\n}\n\n// Helpers for Parser.js handling of Unicode (sub|super)script characters.\n\nconst unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/;\n\nconst uSubsAndSups = Object.freeze({\n  '₊': '+',\n  '₋': '-',\n  '₌': '=',\n  '₍': '(',\n  '₎': ')',\n  '₀': '0',\n  '₁': '1',\n  '₂': '2',\n  '₃': '3',\n  '₄': '4',\n  '₅': '5',\n  '₆': '6',\n  '₇': '7',\n  '₈': '8',\n  '₉': '9',\n  '\\u2090': 'a',\n  '\\u2091': 'e',\n  '\\u2095': 'h',\n  '\\u1D62': 'i',\n  '\\u2C7C': 'j',\n  '\\u2096': 'k',\n  '\\u2097': 'l',\n  '\\u2098': 'm',\n  '\\u2099': 'n',\n  '\\u2092': 'o',\n  '\\u209A': 'p',\n  '\\u1D63': 'r',\n  '\\u209B': 's',\n  '\\u209C': 't',\n  '\\u1D64': 'u',\n  '\\u1D65': 'v',\n  '\\u2093': 'x',\n  '\\u1D66': 'β',\n  '\\u1D67': 'γ',\n  '\\u1D68': 'ρ',\n  '\\u1D69': '\\u03d5',\n  '\\u1D6A': 'χ',\n  '⁺': '+',\n  '⁻': '-',\n  '⁼': '=',\n  '⁽': '(',\n  '⁾': ')',\n  '⁰': '0',\n  '¹': '1',\n  '²': '2',\n  '³': '3',\n  '⁴': '4',\n  '⁵': '5',\n  '⁶': '6',\n  '⁷': '7',\n  '⁸': '8',\n  '⁹': '9',\n  '\\u1D2C': 'A',\n  '\\u1D2E': 'B',\n  '\\u1D30': 'D',\n  '\\u1D31': 'E',\n  '\\u1D33': 'G',\n  '\\u1D34': 'H',\n  '\\u1D35': 'I',\n  '\\u1D36': 'J',\n  '\\u1D37': 'K',\n  '\\u1D38': 'L',\n  '\\u1D39': 'M',\n  '\\u1D3A': 'N',\n  '\\u1D3C': 'O',\n  '\\u1D3E': 'P',\n  '\\u1D3F': 'R',\n  '\\u1D40': 'T',\n  '\\u1D41': 'U',\n  '\\u2C7D': 'V',\n  '\\u1D42': 'W',\n  '\\u1D43': 'a',\n  '\\u1D47': 'b',\n  '\\u1D9C': 'c',\n  '\\u1D48': 'd',\n  '\\u1D49': 'e',\n  '\\u1DA0': 'f',\n  '\\u1D4D': 'g',\n  '\\u02B0': 'h',\n  '\\u2071': 'i',\n  '\\u02B2': 'j',\n  '\\u1D4F': 'k',\n  '\\u02E1': 'l',\n  '\\u1D50': 'm',\n  '\\u207F': 'n',\n  '\\u1D52': 'o',\n  '\\u1D56': 'p',\n  '\\u02B3': 'r',\n  '\\u02E2': 's',\n  '\\u1D57': 't',\n  '\\u1D58': 'u',\n  '\\u1D5B': 'v',\n  '\\u02B7': 'w',\n  '\\u02E3': 'x',\n  '\\u02B8': 'y',\n  '\\u1DBB': 'z',\n  '\\u1D5D': 'β',\n  '\\u1D5E': 'γ',\n  '\\u1D5F': 'δ',\n  '\\u1D60': '\\u03d5',\n  '\\u1D61': 'χ',\n  '\\u1DBF': 'θ'\n});\n\n// Used for Unicode input of calligraphic and script letters\nconst asciiFromScript = Object.freeze({\n  \"\\ud835\\udc9c\": \"A\",\n  \"\\u212c\": \"B\",\n  \"\\ud835\\udc9e\": \"C\",\n  \"\\ud835\\udc9f\": \"D\",\n  \"\\u2130\": \"E\",\n  \"\\u2131\": \"F\",\n  \"\\ud835\\udca2\": \"G\",\n  \"\\u210B\": \"H\",\n  \"\\u2110\": \"I\",\n  \"\\ud835\\udca5\": \"J\",\n  \"\\ud835\\udca6\": \"K\",\n  \"\\u2112\": \"L\",\n  \"\\u2133\": \"M\",\n  \"\\ud835\\udca9\": \"N\",\n  \"\\ud835\\udcaa\": \"O\",\n  \"\\ud835\\udcab\": \"P\",\n  \"\\ud835\\udcac\": \"Q\",\n  \"\\u211B\": \"R\",\n  \"\\ud835\\udcae\": \"S\",\n  \"\\ud835\\udcaf\": \"T\",\n  \"\\ud835\\udcb0\": \"U\",\n  \"\\ud835\\udcb1\": \"V\",\n  \"\\ud835\\udcb2\": \"W\",\n  \"\\ud835\\udcb3\": \"X\",\n  \"\\ud835\\udcb4\": \"Y\",\n  \"\\ud835\\udcb5\": \"Z\"\n});\n\n// Mapping of Unicode accent characters to their LaTeX equivalent in text and\n// math mode (when they exist).\nvar unicodeAccents = {\n  \"\\u0301\": { text: \"\\\\'\", math: \"\\\\acute\" },\n  \"\\u0300\": { text: \"\\\\`\", math: \"\\\\grave\" },\n  \"\\u0308\": { text: '\\\\\"', math: \"\\\\ddot\" },\n  \"\\u0303\": { text: \"\\\\~\", math: \"\\\\tilde\" },\n  \"\\u0304\": { text: \"\\\\=\", math: \"\\\\bar\" },\n  \"\\u0306\": { text: \"\\\\u\", math: \"\\\\breve\" },\n  \"\\u030c\": { text: \"\\\\v\", math: \"\\\\check\" },\n  \"\\u0302\": { text: \"\\\\^\", math: \"\\\\hat\" },\n  \"\\u0307\": { text: \"\\\\.\", math: \"\\\\dot\" },\n  \"\\u030a\": { text: \"\\\\r\", math: \"\\\\mathring\" },\n  \"\\u030b\": { text: \"\\\\H\" },\n  '\\u0327': { text: '\\\\c' }\n};\n\nvar unicodeSymbols = {\n  \"á\": \"á\",\n  \"à\": \"à\",\n  \"ä\": \"ä\",\n  \"ǟ\": \"ǟ\",\n  \"ã\": \"ã\",\n  \"ā\": \"ā\",\n  \"ă\": \"ă\",\n  \"ắ\": \"ắ\",\n  \"ằ\": \"ằ\",\n  \"ẵ\": \"ẵ\",\n  \"ǎ\": \"ǎ\",\n  \"â\": \"â\",\n  \"ấ\": \"ấ\",\n  \"ầ\": \"ầ\",\n  \"ẫ\": \"ẫ\",\n  \"ȧ\": \"ȧ\",\n  \"ǡ\": \"ǡ\",\n  \"å\": \"å\",\n  \"ǻ\": \"ǻ\",\n  \"ḃ\": \"ḃ\",\n  \"ć\": \"ć\",\n  \"č\": \"č\",\n  \"ĉ\": \"ĉ\",\n  \"ċ\": \"ċ\",\n  \"ď\": \"ď\",\n  \"ḋ\": \"ḋ\",\n  \"é\": \"é\",\n  \"è\": \"è\",\n  \"ë\": \"ë\",\n  \"ẽ\": \"ẽ\",\n  \"ē\": \"ē\",\n  \"ḗ\": \"ḗ\",\n  \"ḕ\": \"ḕ\",\n  \"ĕ\": \"ĕ\",\n  \"ě\": \"ě\",\n  \"ê\": \"ê\",\n  \"ế\": \"ế\",\n  \"ề\": \"ề\",\n  \"ễ\": \"ễ\",\n  \"ė\": \"ė\",\n  \"ḟ\": \"ḟ\",\n  \"ǵ\": \"ǵ\",\n  \"ḡ\": \"ḡ\",\n  \"ğ\": \"ğ\",\n  \"ǧ\": \"ǧ\",\n  \"ĝ\": \"ĝ\",\n  \"ġ\": \"ġ\",\n  \"ḧ\": \"ḧ\",\n  \"ȟ\": \"ȟ\",\n  \"ĥ\": \"ĥ\",\n  \"ḣ\": \"ḣ\",\n  \"í\": \"í\",\n  \"ì\": \"ì\",\n  \"ï\": \"ï\",\n  \"ḯ\": \"ḯ\",\n  \"ĩ\": \"ĩ\",\n  \"ī\": \"ī\",\n  \"ĭ\": \"ĭ\",\n  \"ǐ\": \"ǐ\",\n  \"î\": \"î\",\n  \"ǰ\": \"ǰ\",\n  \"ĵ\": \"ĵ\",\n  \"ḱ\": \"ḱ\",\n  \"ǩ\": \"ǩ\",\n  \"ĺ\": \"ĺ\",\n  \"ľ\": \"ľ\",\n  \"ḿ\": \"ḿ\",\n  \"ṁ\": \"ṁ\",\n  \"ń\": \"ń\",\n  \"ǹ\": \"ǹ\",\n  \"ñ\": \"ñ\",\n  \"ň\": \"ň\",\n  \"ṅ\": \"ṅ\",\n  \"ó\": \"ó\",\n  \"ò\": \"ò\",\n  \"ö\": \"ö\",\n  \"ȫ\": \"ȫ\",\n  \"õ\": \"õ\",\n  \"ṍ\": \"ṍ\",\n  \"ṏ\": \"ṏ\",\n  \"ȭ\": \"ȭ\",\n  \"ō\": \"ō\",\n  \"ṓ\": \"ṓ\",\n  \"ṑ\": \"ṑ\",\n  \"ŏ\": \"ŏ\",\n  \"ǒ\": \"ǒ\",\n  \"ô\": \"ô\",\n  \"ố\": \"ố\",\n  \"ồ\": \"ồ\",\n  \"ỗ\": \"ỗ\",\n  \"ȯ\": \"ȯ\",\n  \"ȱ\": \"ȱ\",\n  \"ő\": \"ő\",\n  \"ṕ\": \"ṕ\",\n  \"ṗ\": \"ṗ\",\n  \"ŕ\": \"ŕ\",\n  \"ř\": \"ř\",\n  \"ṙ\": \"ṙ\",\n  \"ś\": \"ś\",\n  \"ṥ\": \"ṥ\",\n  \"š\": \"š\",\n  \"ṧ\": \"ṧ\",\n  \"ŝ\": \"ŝ\",\n  \"ṡ\": \"ṡ\",\n  \"ẗ\": \"ẗ\",\n  \"ť\": \"ť\",\n  \"ṫ\": \"ṫ\",\n  \"ú\": \"ú\",\n  \"ù\": \"ù\",\n  \"ü\": \"ü\",\n  \"ǘ\": \"ǘ\",\n  \"ǜ\": \"ǜ\",\n  \"ǖ\": \"ǖ\",\n  \"ǚ\": \"ǚ\",\n  \"ũ\": \"ũ\",\n  \"ṹ\": \"ṹ\",\n  \"ū\": \"ū\",\n  \"ṻ\": \"ṻ\",\n  \"ŭ\": \"ŭ\",\n  \"ǔ\": \"ǔ\",\n  \"û\": \"û\",\n  \"ů\": \"ů\",\n  \"ű\": \"ű\",\n  \"ṽ\": \"ṽ\",\n  \"ẃ\": \"ẃ\",\n  \"ẁ\": \"ẁ\",\n  \"ẅ\": \"ẅ\",\n  \"ŵ\": \"ŵ\",\n  \"ẇ\": \"ẇ\",\n  \"ẘ\": \"ẘ\",\n  \"ẍ\": \"ẍ\",\n  \"ẋ\": \"ẋ\",\n  \"ý\": \"ý\",\n  \"ỳ\": \"ỳ\",\n  \"ÿ\": \"ÿ\",\n  \"ỹ\": \"ỹ\",\n  \"ȳ\": \"ȳ\",\n  \"ŷ\": \"ŷ\",\n  \"ẏ\": \"ẏ\",\n  \"ẙ\": \"ẙ\",\n  \"ź\": \"ź\",\n  \"ž\": \"ž\",\n  \"ẑ\": \"ẑ\",\n  \"ż\": \"ż\",\n  \"Á\": \"Á\",\n  \"À\": \"À\",\n  \"Ä\": \"Ä\",\n  \"Ǟ\": \"Ǟ\",\n  \"Ã\": \"Ã\",\n  \"Ā\": \"Ā\",\n  \"Ă\": \"Ă\",\n  \"Ắ\": \"Ắ\",\n  \"Ằ\": \"Ằ\",\n  \"Ẵ\": \"Ẵ\",\n  \"Ǎ\": \"Ǎ\",\n  \"Â\": \"Â\",\n  \"Ấ\": \"Ấ\",\n  \"Ầ\": \"Ầ\",\n  \"Ẫ\": \"Ẫ\",\n  \"Ȧ\": \"Ȧ\",\n  \"Ǡ\": \"Ǡ\",\n  \"Å\": \"Å\",\n  \"Ǻ\": \"Ǻ\",\n  \"Ḃ\": \"Ḃ\",\n  \"Ć\": \"Ć\",\n  \"Č\": \"Č\",\n  \"Ĉ\": \"Ĉ\",\n  \"Ċ\": \"Ċ\",\n  \"Ď\": \"Ď\",\n  \"Ḋ\": \"Ḋ\",\n  \"É\": \"É\",\n  \"È\": \"È\",\n  \"Ë\": \"Ë\",\n  \"Ẽ\": \"Ẽ\",\n  \"Ē\": \"Ē\",\n  \"Ḗ\": \"Ḗ\",\n  \"Ḕ\": \"Ḕ\",\n  \"Ĕ\": \"Ĕ\",\n  \"Ě\": \"Ě\",\n  \"Ê\": \"Ê\",\n  \"Ế\": \"Ế\",\n  \"Ề\": \"Ề\",\n  \"Ễ\": \"Ễ\",\n  \"Ė\": \"Ė\",\n  \"Ḟ\": \"Ḟ\",\n  \"Ǵ\": \"Ǵ\",\n  \"Ḡ\": \"Ḡ\",\n  \"Ğ\": \"Ğ\",\n  \"Ǧ\": \"Ǧ\",\n  \"Ĝ\": \"Ĝ\",\n  \"Ġ\": \"Ġ\",\n  \"Ḧ\": \"Ḧ\",\n  \"Ȟ\": \"Ȟ\",\n  \"Ĥ\": \"Ĥ\",\n  \"Ḣ\": \"Ḣ\",\n  \"Í\": \"Í\",\n  \"Ì\": \"Ì\",\n  \"Ï\": \"Ï\",\n  \"Ḯ\": \"Ḯ\",\n  \"Ĩ\": \"Ĩ\",\n  \"Ī\": \"Ī\",\n  \"Ĭ\": \"Ĭ\",\n  \"Ǐ\": \"Ǐ\",\n  \"Î\": \"Î\",\n  \"İ\": \"İ\",\n  \"Ĵ\": \"Ĵ\",\n  \"Ḱ\": \"Ḱ\",\n  \"Ǩ\": \"Ǩ\",\n  \"Ĺ\": \"Ĺ\",\n  \"Ľ\": \"Ľ\",\n  \"Ḿ\": \"Ḿ\",\n  \"Ṁ\": \"Ṁ\",\n  \"Ń\": \"Ń\",\n  \"Ǹ\": \"Ǹ\",\n  \"Ñ\": \"Ñ\",\n  \"Ň\": \"Ň\",\n  \"Ṅ\": \"Ṅ\",\n  \"Ó\": \"Ó\",\n  \"Ò\": \"Ò\",\n  \"Ö\": \"Ö\",\n  \"Ȫ\": \"Ȫ\",\n  \"Õ\": \"Õ\",\n  \"Ṍ\": \"Ṍ\",\n  \"Ṏ\": \"Ṏ\",\n  \"Ȭ\": \"Ȭ\",\n  \"Ō\": \"Ō\",\n  \"Ṓ\": \"Ṓ\",\n  \"Ṑ\": \"Ṑ\",\n  \"Ŏ\": \"Ŏ\",\n  \"Ǒ\": \"Ǒ\",\n  \"Ô\": \"Ô\",\n  \"Ố\": \"Ố\",\n  \"Ồ\": \"Ồ\",\n  \"Ỗ\": \"Ỗ\",\n  \"Ȯ\": \"Ȯ\",\n  \"Ȱ\": \"Ȱ\",\n  \"Ő\": \"Ő\",\n  \"Ṕ\": \"Ṕ\",\n  \"Ṗ\": \"Ṗ\",\n  \"Ŕ\": \"Ŕ\",\n  \"Ř\": \"Ř\",\n  \"Ṙ\": \"Ṙ\",\n  \"Ś\": \"Ś\",\n  \"Ṥ\": \"Ṥ\",\n  \"Š\": \"Š\",\n  \"Ṧ\": \"Ṧ\",\n  \"Ŝ\": \"Ŝ\",\n  \"Ṡ\": \"Ṡ\",\n  \"Ť\": \"Ť\",\n  \"Ṫ\": \"Ṫ\",\n  \"Ú\": \"Ú\",\n  \"Ù\": \"Ù\",\n  \"Ü\": \"Ü\",\n  \"Ǘ\": \"Ǘ\",\n  \"Ǜ\": \"Ǜ\",\n  \"Ǖ\": \"Ǖ\",\n  \"Ǚ\": \"Ǚ\",\n  \"Ũ\": \"Ũ\",\n  \"Ṹ\": \"Ṹ\",\n  \"Ū\": \"Ū\",\n  \"Ṻ\": \"Ṻ\",\n  \"Ŭ\": \"Ŭ\",\n  \"Ǔ\": \"Ǔ\",\n  \"Û\": \"Û\",\n  \"Ů\": \"Ů\",\n  \"Ű\": \"Ű\",\n  \"Ṽ\": \"Ṽ\",\n  \"Ẃ\": \"Ẃ\",\n  \"Ẁ\": \"Ẁ\",\n  \"Ẅ\": \"Ẅ\",\n  \"Ŵ\": \"Ŵ\",\n  \"Ẇ\": \"Ẇ\",\n  \"Ẍ\": \"Ẍ\",\n  \"Ẋ\": \"Ẋ\",\n  \"Ý\": \"Ý\",\n  \"Ỳ\": \"Ỳ\",\n  \"Ÿ\": \"Ÿ\",\n  \"Ỹ\": \"Ỹ\",\n  \"Ȳ\": \"Ȳ\",\n  \"Ŷ\": \"Ŷ\",\n  \"Ẏ\": \"Ẏ\",\n  \"Ź\": \"Ź\",\n  \"Ž\": \"Ž\",\n  \"Ẑ\": \"Ẑ\",\n  \"Ż\": \"Ż\",\n  \"ά\": \"ά\",\n  \"ὰ\": \"ὰ\",\n  \"ᾱ\": \"ᾱ\",\n  \"ᾰ\": \"ᾰ\",\n  \"έ\": \"έ\",\n  \"ὲ\": \"ὲ\",\n  \"ή\": \"ή\",\n  \"ὴ\": \"ὴ\",\n  \"ί\": \"ί\",\n  \"ὶ\": \"ὶ\",\n  \"ϊ\": \"ϊ\",\n  \"ΐ\": \"ΐ\",\n  \"ῒ\": \"ῒ\",\n  \"ῑ\": \"ῑ\",\n  \"ῐ\": \"ῐ\",\n  \"ό\": \"ό\",\n  \"ὸ\": \"ὸ\",\n  \"ύ\": \"ύ\",\n  \"ὺ\": \"ὺ\",\n  \"ϋ\": \"ϋ\",\n  \"ΰ\": \"ΰ\",\n  \"ῢ\": \"ῢ\",\n  \"ῡ\": \"ῡ\",\n  \"ῠ\": \"ῠ\",\n  \"ώ\": \"ώ\",\n  \"ὼ\": \"ὼ\",\n  \"Ύ\": \"Ύ\",\n  \"Ὺ\": \"Ὺ\",\n  \"Ϋ\": \"Ϋ\",\n  \"Ῡ\": \"Ῡ\",\n  \"Ῠ\": \"Ῠ\",\n  \"Ώ\": \"Ώ\",\n  \"Ὼ\": \"Ὼ\"\n};\n\n/* eslint no-constant-condition:0 */\n\nconst binLeftCancellers = [\"bin\", \"op\", \"open\", \"punct\", \"rel\"];\nconst sizeRegEx = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/;\nconst textRegEx = /^ *\\\\text/;\n\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The functions return ParseNodes.\n */\n\nclass Parser {\n  constructor(input, settings, isPreamble = false) {\n    // Start in math mode\n    this.mode = \"math\";\n    // Create a new macro expander (gullet) and (indirectly via that) also a\n    // new lexer (mouth) for this parser (stomach, in the language of TeX)\n    this.gullet = new MacroExpander(input, settings, this.mode);\n    // Store the settings for use in parsing\n    this.settings = settings;\n    // Are we defining a preamble?\n    this.isPreamble = isPreamble;\n    // Count leftright depth (for \\middle errors)\n    this.leftrightDepth = 0;\n    this.prevAtomType = \"\";\n  }\n\n  /**\n   * Checks a result to make sure it has the right type, and throws an\n   * appropriate error otherwise.\n   */\n  expect(text, consume = true) {\n    if (this.fetch().text !== text) {\n      throw new ParseError(`Expected '${text}', got '${this.fetch().text}'`, this.fetch());\n    }\n    if (consume) {\n      this.consume();\n    }\n  }\n\n  /**\n   * Discards the current lookahead token, considering it consumed.\n   */\n  consume() {\n    this.nextToken = null;\n  }\n\n  /**\n   * Return the current lookahead token, or if there isn't one (at the\n   * beginning, or if the previous lookahead token was consume()d),\n   * fetch the next token as the new lookahead token and return it.\n   */\n  fetch() {\n    if (this.nextToken == null) {\n      this.nextToken = this.gullet.expandNextToken();\n    }\n    return this.nextToken;\n  }\n\n  /**\n   * Switches between \"text\" and \"math\" modes.\n   */\n  switchMode(newMode) {\n    this.mode = newMode;\n    this.gullet.switchMode(newMode);\n  }\n\n  /**\n   * Main parsing function, which parses an entire input.\n   */\n  parse() {\n    // Create a group namespace for every $...$, $$...$$, \\[...\\].)\n    // A \\def is then valid only within that pair of delimiters.\n    this.gullet.beginGroup();\n\n    if (this.settings.colorIsTextColor) {\n      // Use old \\color behavior (same as LaTeX's \\textcolor) if requested.\n      // We do this within the group for the math expression, so it doesn't\n      // pollute settings.macros.\n      this.gullet.macros.set(\"\\\\color\", \"\\\\textcolor\");\n    }\n\n    // Try to parse the input\n    const parse = this.parseExpression(false);\n\n    // If we succeeded, make sure there's an EOF at the end\n    this.expect(\"EOF\");\n\n    if (this.isPreamble) {\n      const macros = Object.create(null);\n      Object.entries(this.gullet.macros.current).forEach(([key, value]) => {\n        macros[key] = value;\n      });\n      this.gullet.endGroup();\n      return macros\n    }\n\n    // The only local macro that we want to save is from \\tag.\n    const tag = this.gullet.macros.get(\"\\\\df@tag\");\n\n    // End the group namespace for the expression\n    this.gullet.endGroup();\n\n    if (tag) { this.gullet.macros.current[\"\\\\df@tag\"] = tag; }\n\n    return parse;\n  }\n\n  static get endOfExpression() {\n    return [\"}\", \"\\\\endgroup\", \"\\\\end\", \"\\\\right\", \"\\\\endtoggle\", \"&\"];\n  }\n\n  /**\n   * Fully parse a separate sequence of tokens as a separate job.\n   * Tokens should be specified in reverse order, as in a MacroDefinition.\n   */\n  subparse(tokens) {\n    // Save the next token from the current job.\n    const oldToken = this.nextToken;\n    this.consume();\n\n    // Run the new job, terminating it with an excess '}'\n    this.gullet.pushToken(new Token(\"}\"));\n    this.gullet.pushTokens(tokens);\n    const parse = this.parseExpression(false);\n    this.expect(\"}\");\n\n    // Restore the next token from the current job.\n    this.nextToken = oldToken;\n\n    return parse;\n  }\n\n/**\n   * Parses an \"expression\", which is a list of atoms.\n   *\n   * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This\n   *                 happens when functions have higher precedence than infix\n   *                 nodes in implicit parses.\n   *\n   * `breakOnTokenText`: The text of the token that the expression should end\n   *                     with, or `null` if something else should end the\n   *                     expression.\n   *\n   * `breakOnMiddle`: \\color, \\over, and old styling functions work on an implicit group.\n   *                  These groups end just before the usual tokens, but they also\n   *                  end just before `\\middle`.\n   */\n  parseExpression(breakOnInfix, breakOnTokenText, breakOnMiddle) {\n    const body = [];\n    this.prevAtomType = \"\";\n    // Keep adding atoms to the body until we can't parse any more atoms (either\n    // we reached the end, a }, or a \\right)\n    while (true) {\n      // Ignore spaces in math mode\n      if (this.mode === \"math\") {\n        this.consumeSpaces();\n      }\n      const lex = this.fetch();\n      if (Parser.endOfExpression.indexOf(lex.text) !== -1) {\n        break;\n      }\n      if (breakOnTokenText && lex.text === breakOnTokenText) {\n        break;\n      }\n      if (breakOnMiddle && lex.text === \"\\\\middle\") {\n        break\n      }\n      if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {\n        break;\n      }\n      const atom = this.parseAtom(breakOnTokenText);\n      if (!atom) {\n        break;\n      } else if (atom.type === \"internal\") {\n        // Internal nodes do not appear in parse tree\n        continue;\n      }\n      body.push(atom);\n      // Keep a record of the atom type, so that op.js can set correct spacing.\n      this.prevAtomType = atom.type === \"atom\" ? atom.family : atom.type;\n    }\n    if (this.mode === \"text\") {\n      this.formLigatures(body);\n    }\n    return this.handleInfixNodes(body);\n  }\n\n  /**\n   * Rewrites infix operators such as \\over with corresponding commands such\n   * as \\frac.\n   *\n   * There can only be one infix operator per group.  If there's more than one\n   * then the expression is ambiguous.  This can be resolved by adding {}.\n   */\n  handleInfixNodes(body) {\n    let overIndex = -1;\n    let funcName;\n\n    for (let i = 0; i < body.length; i++) {\n      if (body[i].type === \"infix\") {\n        if (overIndex !== -1) {\n          throw new ParseError(\"only one infix operator per group\", body[i].token);\n        }\n        overIndex = i;\n        funcName = body[i].replaceWith;\n      }\n    }\n\n    if (overIndex !== -1 && funcName) {\n      let numerNode;\n      let denomNode;\n\n      const numerBody = body.slice(0, overIndex);\n      const denomBody = body.slice(overIndex + 1);\n\n      if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n        numerNode = numerBody[0];\n      } else {\n        numerNode = { type: \"ordgroup\", mode: this.mode, body: numerBody };\n      }\n\n      if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n        denomNode = denomBody[0];\n      } else {\n        denomNode = { type: \"ordgroup\", mode: this.mode, body: denomBody };\n      }\n\n      let node;\n      if (funcName === \"\\\\\\\\abovefrac\") {\n        node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);\n      } else {\n        node = this.callFunction(funcName, [numerNode, denomNode], []);\n      }\n      return [node];\n    } else {\n      return body;\n    }\n  }\n\n  /**\n   * Handle a subscript or superscript with nice errors.\n   */\n  handleSupSubscript(\n    name // For error reporting.\n  ) {\n    const symbolToken = this.fetch();\n    const symbol = symbolToken.text;\n    this.consume();\n    this.consumeSpaces(); // ignore spaces before sup/subscript argument\n    // Skip over allowed internal nodes such as \\relax\n    let group;\n    do {\n      group = this.parseGroup(name);\n    } while (group.type && group.type === \"internal\")\n\n    if (!group) {\n      throw new ParseError(\"Expected group after '\" + symbol + \"'\", symbolToken);\n    }\n\n    return group;\n  }\n\n  /**\n   * Converts the textual input of an unsupported command into a text node\n   * contained within a color node whose color is determined by errorColor\n   */\n  formatUnsupportedCmd(text) {\n    const textordArray = [];\n\n    for (let i = 0; i < text.length; i++) {\n      textordArray.push({ type: \"textord\", mode: \"text\", text: text[i] });\n    }\n\n    const textNode = {\n      type: \"text\",\n      mode: this.mode,\n      body: textordArray\n    };\n\n    const colorNode = {\n      type: \"color\",\n      mode: this.mode,\n      color: this.settings.errorColor,\n      body: [textNode]\n    };\n\n    return colorNode;\n  }\n\n  /**\n   * Parses a group with optional super/subscripts.\n   */\n  parseAtom(breakOnTokenText) {\n    // The body of an atom is an implicit group, so that things like\n    // \\left(x\\right)^2 work correctly.\n    const base = this.parseGroup(\"atom\", breakOnTokenText);\n\n    // Internal nodes (e.g. \\relax) cannot support super/subscripts.\n    // Instead we will pick up super/subscripts with blank base next round.\n    if (base && base.type === \"internal\") {\n      return base\n    }\n\n    // In text mode, we don't have superscripts or subscripts\n    if (this.mode === \"text\") {\n      return base\n    }\n\n    // Note that base may be empty (i.e. null) at this point.\n\n    let superscript;\n    let subscript;\n    while (true) {\n      // Guaranteed in math mode, so eat any spaces first.\n      this.consumeSpaces();\n\n      // Lex the first token\n      const lex = this.fetch();\n\n      if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n        // We got a limit control\n        if (base && base.type === \"op\") {\n          const limits = lex.text === \"\\\\limits\";\n          base.limits = limits;\n          base.alwaysHandleSupSub = true;\n        } else if (base && base.type === \"operatorname\") {\n          if (base.alwaysHandleSupSub) {\n            base.limits = lex.text === \"\\\\limits\";\n          }\n        } else {\n          throw new ParseError(\"Limit controls must follow a math operator\", lex);\n        }\n        this.consume();\n      } else if (lex.text === \"^\") {\n        // We got a superscript start\n        if (superscript) {\n          throw new ParseError(\"Double superscript\", lex);\n        }\n        superscript = this.handleSupSubscript(\"superscript\");\n      } else if (lex.text === \"_\") {\n        // We got a subscript start\n        if (subscript) {\n          throw new ParseError(\"Double subscript\", lex);\n        }\n        subscript = this.handleSupSubscript(\"subscript\");\n      } else if (lex.text === \"'\") {\n        // We got a prime\n        if (superscript) {\n          throw new ParseError(\"Double superscript\", lex);\n        }\n        const prime = { type: \"textord\", mode: this.mode, text: \"\\\\prime\" };\n\n        // Many primes can be grouped together, so we handle this here\n        const primes = [prime];\n        this.consume();\n        // Keep lexing tokens until we get something that's not a prime\n        while (this.fetch().text === \"'\") {\n          // For each one, add another prime to the list\n          primes.push(prime);\n          this.consume();\n        }\n        // If there's a superscript following the primes, combine that\n        // superscript in with the primes.\n        if (this.fetch().text === \"^\") {\n          primes.push(this.handleSupSubscript(\"superscript\"));\n        }\n        // Put everything into an ordgroup as the superscript\n        superscript = { type: \"ordgroup\", mode: this.mode, body: primes };\n      } else if (uSubsAndSups[lex.text]) {\n        // A Unicode subscript or superscript character.\n        // We treat these similarly to the unicode-math package.\n        // So we render a string of Unicode (sub|super)scripts the\n        // same as a (sub|super)script of regular characters.\n        const isSub = unicodeSubRegEx.test(lex.text);\n        const subsupTokens = [];\n        subsupTokens.push(new Token(uSubsAndSups[lex.text]));\n        this.consume();\n        // Continue fetching tokens to fill out the group.\n        while (true) {\n          const token = this.fetch().text;\n          if (!(uSubsAndSups[token])) { break }\n          if (unicodeSubRegEx.test(token) !== isSub) { break }\n          subsupTokens.unshift(new Token(uSubsAndSups[token]));\n          this.consume();\n        }\n        // Now create a (sub|super)script.\n        const body = this.subparse(subsupTokens);\n        if (isSub) {\n          subscript = { type: \"ordgroup\", mode: \"math\", body };\n        } else {\n          superscript = { type: \"ordgroup\", mode: \"math\", body };\n        }\n      } else {\n        // If it wasn't ^, _, a Unicode (sub|super)script, or ', stop parsing super/subscripts\n        break;\n      }\n    }\n\n    if (superscript || subscript) {\n      if (base && base.type === \"multiscript\" && !base.postscripts) {\n        // base is the result of a \\prescript function.\n        // Write the sub- & superscripts into the multiscript element.\n        base.postscripts = { sup: superscript, sub: subscript };\n        return base\n      } else {\n        // We got either a superscript or subscript, create a supsub\n        const isFollowedByDelimiter = (!base || base.type !== \"op\" && base.type !== \"operatorname\")\n          ? undefined\n          : isDelimiter(this.nextToken.text);\n        return {\n          type: \"supsub\",\n          mode: this.mode,\n          base: base,\n          sup: superscript,\n          sub: subscript,\n          isFollowedByDelimiter\n        }\n      }\n    } else {\n      // Otherwise return the original body\n      return base;\n    }\n  }\n\n  /**\n   * Parses an entire function, including its base and all of its arguments.\n   */\n  parseFunction(\n    breakOnTokenText,\n    name // For determining its context\n  ) {\n    const token = this.fetch();\n    const func = token.text;\n    const funcData = functions[func];\n    if (!funcData) {\n      return null;\n    }\n    this.consume(); // consume command token\n\n    if (name && name !== \"atom\" && !funcData.allowedInArgument) {\n      throw new ParseError(\n        \"Got function '\" + func + \"' with no arguments\" + (name ? \" as \" + name : \"\"),\n        token\n      );\n    } else if (this.mode === \"text\" && !funcData.allowedInText) {\n      throw new ParseError(\"Can't use function '\" + func + \"' in text mode\", token);\n    } else if (this.mode === \"math\" && funcData.allowedInMath === false) {\n      throw new ParseError(\"Can't use function '\" + func + \"' in math mode\", token);\n    }\n\n    const prevAtomType = this.prevAtomType;\n    const { args, optArgs } = this.parseArguments(func, funcData);\n    this.prevAtomType = prevAtomType;\n    return this.callFunction(func, args, optArgs, token, breakOnTokenText);\n  }\n\n  /**\n   * Call a function handler with a suitable context and arguments.\n   */\n  callFunction(name, args, optArgs, token, breakOnTokenText) {\n    const context = {\n      funcName: name,\n      parser: this,\n      token,\n      breakOnTokenText\n    };\n    const func = functions[name];\n    if (func && func.handler) {\n      return func.handler(context, args, optArgs);\n    } else {\n      throw new ParseError(`No function handler for ${name}`);\n    }\n  }\n\n  /**\n   * Parses the arguments of a function or environment\n   */\n  parseArguments(\n    func, // Should look like \"\\name\" or \"\\begin{name}\".\n    funcData\n  ) {\n    const totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n    if (totalArgs === 0) {\n      return { args: [], optArgs: [] };\n    }\n\n    const args = [];\n    const optArgs = [];\n\n    for (let i = 0; i < totalArgs; i++) {\n      let argType = funcData.argTypes && funcData.argTypes[i];\n      const isOptional = i < funcData.numOptionalArgs;\n\n      if (\n        (funcData.primitive && argType == null) ||\n        // \\sqrt expands into primitive if optional argument doesn't exist\n        (funcData.type === \"sqrt\" && i === 1 && optArgs[0] == null)\n      ) {\n        argType = \"primitive\";\n      }\n\n      const arg = this.parseGroupOfType(`argument to '${func}'`, argType, isOptional);\n      if (isOptional) {\n        optArgs.push(arg);\n      } else if (arg != null) {\n        args.push(arg);\n      } else {\n        // should be unreachable\n        throw new ParseError(\"Null argument, please report this as a bug\");\n      }\n    }\n\n    return { args, optArgs };\n  }\n\n  /**\n   * Parses a group when the mode is changing.\n   */\n  parseGroupOfType(name, type, optional) {\n    switch (type) {\n      case \"size\":\n        return this.parseSizeGroup(optional);\n      case \"url\":\n        return this.parseUrlGroup(optional);\n      case \"math\":\n      case \"text\":\n        return this.parseArgumentGroup(optional, type);\n      case \"hbox\": {\n        // hbox argument type wraps the argument in the equivalent of\n        // \\hbox, which is like \\text but switching to \\textstyle size.\n        const group = this.parseArgumentGroup(optional, \"text\");\n        return group != null\n          ? {\n            type: \"styling\",\n            mode: group.mode,\n            body: [group],\n            scriptLevel: \"text\" // simulate \\textstyle\n          }\n          : null;\n      }\n      case \"raw\": {\n        const token = this.parseStringGroup(\"raw\", optional);\n        return token != null\n          ? {\n            type: \"raw\",\n            mode: \"text\",\n            string: token.text\n          }\n          : null;\n      }\n      case \"primitive\": {\n        if (optional) {\n          throw new ParseError(\"A primitive argument cannot be optional\");\n        }\n        const group = this.parseGroup(name);\n        if (group == null) {\n          throw new ParseError(\"Expected group as \" + name, this.fetch());\n        }\n        return group;\n      }\n      case \"original\":\n      case null:\n      case undefined:\n        return this.parseArgumentGroup(optional);\n      default:\n        throw new ParseError(\"Unknown group type as \" + name, this.fetch());\n    }\n  }\n\n  /**\n   * Discard any space tokens, fetching the next non-space token.\n   */\n  consumeSpaces() {\n    while (true) {\n      const ch = this.fetch().text;\n      // \\ufe0e is the Unicode variation selector to supress emoji. Ignore it.\n      if (ch === \" \" || ch === \"\\u00a0\" || ch === \"\\ufe0e\") {\n        this.consume();\n      } else {\n        break\n      }\n    }\n  }\n\n  /**\n   * Parses a group, essentially returning the string formed by the\n   * brace-enclosed tokens plus some position information.\n   */\n  parseStringGroup(\n    modeName, // Used to describe the mode in error messages.\n    optional\n  ) {\n    const argToken = this.gullet.scanArgument(optional);\n    if (argToken == null) {\n      return null;\n    }\n    let str = \"\";\n    let nextToken;\n    while ((nextToken = this.fetch()).text !== \"EOF\") {\n      str += nextToken.text;\n      this.consume();\n    }\n    this.consume(); // consume the end of the argument\n    argToken.text = str;\n    return argToken;\n  }\n\n  /**\n   * Parses a regex-delimited group: the largest sequence of tokens\n   * whose concatenated strings match `regex`. Returns the string\n   * formed by the tokens plus some position information.\n   */\n  parseRegexGroup(\n    regex,\n    modeName // Used to describe the mode in error messages.\n  ) {\n    const firstToken = this.fetch();\n    let lastToken = firstToken;\n    let str = \"\";\n    let nextToken;\n    while ((nextToken = this.fetch()).text !== \"EOF\" && regex.test(str + nextToken.text)) {\n      lastToken = nextToken;\n      str += lastToken.text;\n      this.consume();\n    }\n    if (str === \"\") {\n      throw new ParseError(\"Invalid \" + modeName + \": '\" + firstToken.text + \"'\", firstToken);\n    }\n    return firstToken.range(lastToken, str);\n  }\n\n  /**\n   * Parses a size specification, consisting of magnitude and unit.\n   */\n  parseSizeGroup(optional) {\n    let res;\n    let isBlank = false;\n    // don't expand before parseStringGroup\n    this.gullet.consumeSpaces();\n    if (!optional && this.gullet.future().text !== \"{\") {\n      res = this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/, \"size\");\n    } else {\n      res = this.parseStringGroup(\"size\", optional);\n    }\n    if (!res) {\n      return null;\n    }\n    if (!optional && res.text.length === 0) {\n      // Because we've tested for what is !optional, this block won't\n      // affect \\kern, \\hspace, etc. It will capture the mandatory arguments\n      // to \\genfrac and \\above.\n      res.text = \"0pt\"; // Enable \\above{}\n      isBlank = true; // This is here specifically for \\genfrac\n    }\n    const match = sizeRegEx.exec(res.text);\n    if (!match) {\n      throw new ParseError(\"Invalid size: '\" + res.text + \"'\", res);\n    }\n    const data = {\n      number: +(match[1] + match[2]), // sign + magnitude, cast to number\n      unit: match[3]\n    };\n    if (!validUnit(data)) {\n      throw new ParseError(\"Invalid unit: '\" + data.unit + \"'\", res);\n    }\n    return {\n      type: \"size\",\n      mode: this.mode,\n      value: data,\n      isBlank\n    };\n  }\n\n  /**\n   * Parses an URL, checking escaped letters and allowed protocols,\n   * and setting the catcode of % as an active character (as in \\hyperref).\n   */\n  parseUrlGroup(optional) {\n    this.gullet.lexer.setCatcode(\"%\", 13); // active character\n    this.gullet.lexer.setCatcode(\"~\", 12); // other character\n    const res = this.parseStringGroup(\"url\", optional);\n    this.gullet.lexer.setCatcode(\"%\", 14); // comment character\n    this.gullet.lexer.setCatcode(\"~\", 13); // active character\n    if (res == null) {\n      return null;\n    }\n    // hyperref package allows backslashes alone in href, but doesn't\n    // generate valid links in such cases; we interpret this as\n    // \"undefined\" behaviour, and keep them as-is. Some browser will\n    // replace backslashes with forward slashes.\n    let url = res.text.replace(/\\\\([#$%&~_^{}])/g, \"$1\");\n    url = res.text.replace(/{\\u2044}/g, \"/\");\n    return {\n      type: \"url\",\n      mode: this.mode,\n      url\n    };\n  }\n\n  /**\n   * Parses an argument with the mode specified.\n   */\n  parseArgumentGroup(optional, mode) {\n    const argToken = this.gullet.scanArgument(optional);\n    if (argToken == null) {\n      return null;\n    }\n    const outerMode = this.mode;\n    if (mode) {\n      // Switch to specified mode\n      this.switchMode(mode);\n    }\n\n    this.gullet.beginGroup();\n    const expression = this.parseExpression(false, \"EOF\");\n    // TODO: find an alternative way to denote the end\n    this.expect(\"EOF\"); // expect the end of the argument\n    this.gullet.endGroup();\n    const result = {\n      type: \"ordgroup\",\n      mode: this.mode,\n      loc: argToken.loc,\n      body: expression\n    };\n\n    if (mode) {\n      // Switch mode back\n      this.switchMode(outerMode);\n    }\n    return result;\n  }\n\n  /**\n   * Parses an ordinary group, which is either a single nucleus (like \"x\")\n   * or an expression in braces (like \"{x+y}\") or an implicit group, a group\n   * that starts at the current position, and ends right before a higher explicit\n   * group ends, or at EOF.\n   */\n  parseGroup(\n    name, // For error reporting.\n    breakOnTokenText\n  ) {\n    const firstToken = this.fetch();\n    const text = firstToken.text;\n    if (name === \"argument to '\\\\left'\") { return this.parseSymbol() }\n    let result;\n    // Try to parse an open brace or \\begingroup\n    if (text === \"{\" || text === \"\\\\begingroup\" || text === \"\\\\toggle\") {\n      this.consume();\n      const groupEnd = text === \"{\"\n        ? \"}\"\n        : text === \"\\\\begingroup\"\n        ? \"\\\\endgroup\"\n        : \"\\\\endtoggle\";\n\n      this.gullet.beginGroup();\n      // If we get a brace, parse an expression\n      const expression = this.parseExpression(false, groupEnd);\n      const lastToken = this.fetch();\n      this.expect(groupEnd); // Check that we got a matching closing brace\n      this.gullet.endGroup();\n      result = {\n        type: (lastToken.text === \"\\\\endtoggle\" ? \"toggle\" : \"ordgroup\"),\n        mode: this.mode,\n        loc: SourceLocation.range(firstToken, lastToken),\n        body: expression,\n        // A group formed by \\begingroup...\\endgroup is a semi-simple group\n        // which doesn't affect spacing in math mode, i.e., is transparent.\n        // https://tex.stackexchange.com/questions/1930/\n        semisimple: text === \"\\\\begingroup\" || undefined\n      };\n    } else {\n      // If there exists a function with this name, parse the function.\n      // Otherwise, just return a nucleus\n      result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol();\n      if (result == null && text[0] === \"\\\\\" &&\n          !Object.prototype.hasOwnProperty.call(implicitCommands, text )) {\n        if (this.settings.throwOnError) {\n          throw new ParseError(\"Unsupported function name: \" + text, firstToken);\n        }\n        // For people getting dyanamically rendered math, it's better to\n        // show the unsupported command in red rather than panicking for every\n        // partially written expression.\n        result = this.formatUnsupportedCmd(text);\n        this.consume();\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Form ligature-like combinations of characters for text mode.\n   * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n   * The result will simply replace multiple textord nodes with a single\n   * character in each value by a single textord node having multiple\n   * characters in its value.  The representation is still ASCII source.\n   * The group will be modified in place.\n   */\n  formLigatures(group) {\n    let n = group.length - 1;\n    for (let i = 0; i < n; ++i) {\n      const a = group[i];\n      const v = a.text;\n      if (v === \"-\" && group[i + 1].text === \"-\") {\n        if (i + 1 < n && group[i + 2].text === \"-\") {\n          group.splice(i, 3, {\n            type: \"textord\",\n            mode: \"text\",\n            loc: SourceLocation.range(a, group[i + 2]),\n            text: \"---\"\n          });\n          n -= 2;\n        } else {\n          group.splice(i, 2, {\n            type: \"textord\",\n            mode: \"text\",\n            loc: SourceLocation.range(a, group[i + 1]),\n            text: \"--\"\n          });\n          n -= 1;\n        }\n      }\n      if ((v === \"'\" || v === \"`\") && group[i + 1].text === v) {\n        group.splice(i, 2, {\n          type: \"textord\",\n          mode: \"text\",\n          loc: SourceLocation.range(a, group[i + 1]),\n          text: v + v\n        });\n        n -= 1;\n      }\n    }\n  }\n\n  /**\n   * Parse a single symbol out of the string. Here, we handle single character\n   * symbols and special functions like \\verb.\n   */\n  parseSymbol() {\n    const nucleus = this.fetch();\n    let text = nucleus.text;\n\n    if (/^\\\\verb[^a-zA-Z]/.test(text)) {\n      this.consume();\n      let arg = text.slice(5);\n      const star = arg.charAt(0) === \"*\";\n      if (star) {\n        arg = arg.slice(1);\n      }\n      // Lexer's tokenRegex is constructed to always have matching\n      // first/last characters.\n      if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) {\n        throw new ParseError(`\\\\verb assertion failed --\n                    please report what input caused this bug`);\n      }\n      arg = arg.slice(1, -1); // remove first and last char\n      return {\n        type: \"verb\",\n        mode: \"text\",\n        body: arg,\n        star\n      };\n    }\n    // At this point, we should have a symbol, possibly with accents.\n    // First expand any accented base symbol according to unicodeSymbols.\n    if (Object.prototype.hasOwnProperty.call(unicodeSymbols, text[0]) &&\n      this.mode === \"math\" && !symbols[this.mode][text[0]]) {\n      // This behavior is not strict (XeTeX-compatible) in math mode.\n      if (this.settings.strict && this.mode === \"math\") {\n        throw new ParseError(`Accented Unicode text character \"${text[0]}\" used in ` + `math mode`,\n          nucleus\n        );\n      }\n      text = unicodeSymbols[text[0]] + text.slice(1);\n    }\n    // Strip off any combining characters\n    const match = this.mode === \"math\"\n      ? combiningDiacriticalMarksEndRegex.exec(text)\n      : null;\n    if (match) {\n      text = text.substring(0, match.index);\n      if (text === \"i\") {\n        text = \"\\u0131\"; // dotless i, in math and text mode\n      } else if (text === \"j\") {\n        text = \"\\u0237\"; // dotless j, in math and text mode\n      }\n    }\n    // Recognize base symbol\n    let symbol;\n    if (symbols[this.mode][text]) {\n      let group = symbols[this.mode][text].group;\n      if (group === \"bin\" &&\n        (binLeftCancellers.includes(this.prevAtomType) || this.prevAtomType === \"\")) {\n        // Change from a binary operator to a unary (prefix) operator\n        group = \"open\";\n      }\n      const loc = SourceLocation.range(nucleus);\n      let s;\n      if (Object.prototype.hasOwnProperty.call(ATOMS, group )) {\n        const family = group;\n        s = {\n          type: \"atom\",\n          mode: this.mode,\n          family,\n          loc,\n          text\n        };\n        if ((family === \"rel\" || family === \"bin\") && this.prevAtomType === \"text\") {\n          if (textRegEx.test(loc.lexer.input.slice(loc.end))) {\n            s.needsSpacing = true;  // Fix a MathML bug.\n          }\n        }\n      } else {\n        if (asciiFromScript[text]) {\n          // Unicode 14 disambiguates chancery from roundhand.\n          // See https://www.unicode.org/charts/PDF/U1D400.pdf\n          this.consume();\n          const nextCode = this.fetch().text.charCodeAt(0);\n          // mathcal is Temml default. Use mathscript if called for.\n          const font = nextCode === 0xfe01 ? \"mathscr\" : \"mathcal\";\n          if (nextCode === 0xfe00 || nextCode === 0xfe01) { this.consume(); }\n          return {\n            type: \"font\",\n            mode: \"math\",\n            font,\n            body: { type: \"mathord\", mode: \"math\", loc, text: asciiFromScript[text] }\n          }\n        }\n        // Default ord character. No disambiguation necessary.\n        s = {\n          type: group,\n          mode: this.mode,\n          loc,\n          text\n        };\n      }\n      symbol = s;\n    } else if (text.charCodeAt(0) >= 0x80 || combiningDiacriticalMarksEndRegex.exec(text)) {\n      // no symbol for e.g. ^\n      if (this.settings.strict && this.mode === \"math\") {\n        throw new ParseError(`Unicode text character \"${text[0]}\" used in math mode`, nucleus)\n      }\n      // All nonmathematical Unicode characters are rendered as if they\n      // are in text mode (wrapped in \\text) because that's what it\n      // takes to render them in LaTeX.\n      symbol = {\n        type: \"textord\",\n        mode: \"text\",\n        loc: SourceLocation.range(nucleus),\n        text\n      };\n    } else {\n      return null; // EOF, ^, _, {, }, etc.\n    }\n    this.consume();\n    // Transform combining characters into accents\n    if (match) {\n      for (let i = 0; i < match[0].length; i++) {\n        const accent = match[0][i];\n        if (!unicodeAccents[accent]) {\n          throw new ParseError(`Unknown accent ' ${accent}'`, nucleus);\n        }\n        const command = unicodeAccents[accent][this.mode] ||\n                        unicodeAccents[accent].text;\n        if (!command) {\n          throw new ParseError(`Accent ${accent} unsupported in ${this.mode} mode`, nucleus);\n        }\n        symbol = {\n          type: \"accent\",\n          mode: this.mode,\n          loc: SourceLocation.range(nucleus),\n          label: command,\n          isStretchy: false,\n          base: symbol\n        };\n      }\n    }\n    return symbol;\n  }\n}\n\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nconst parseTree = function(toParse, settings) {\n  if (!(typeof toParse === \"string\" || toParse instanceof String)) {\n    throw new TypeError(\"Temml can only parse string typed expression\")\n  }\n  let tree;\n  let parser;\n  try {\n    parser = new Parser(toParse, settings);\n    // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n    delete parser.gullet.macros.current[\"\\\\df@tag\"];\n\n    tree = parser.parse();\n  } catch (error) {\n    if (error.toString() === \"ParseError:  Unmatched delimiter\") {\n      // Abandon the attempt to wrap delimiter pairs in an <mrow>.\n      // Try again, and put each delimiter into an <mo> element.\n      settings.wrapDelimiterPairs = false;\n      parser = new Parser(toParse, settings);\n      // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n      delete parser.gullet.macros.current[\"\\\\df@tag\"];\n      tree = parser.parse();\n    } else {\n      throw error;\n    }\n  }\n\n  // LaTeX ignores a \\tag placed outside an AMS environment.\n  if (!(tree.length > 0 &&  tree[0].type && tree[0].type === \"array\" && tree[0].addEqnNum)) {\n    // If the input used \\tag, it will set the \\df@tag macro to the tag.\n    // In this case, we separately parse the tag and wrap the tree.\n    if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n      if (!settings.displayMode) {\n        throw new ParseError(\"\\\\tag works only in display mode\")\n      }\n      parser.gullet.feed(\"\\\\df@tag\");\n      tree = [\n        {\n          type: \"tag\",\n          mode: \"text\",\n          body: tree,\n          tag: parser.parse()\n        }\n      ];\n    }\n  }\n\n  return tree\n};\n\n/**\n * This file contains information about the style that the mathmlBuilder carries\n * around with it. Data is held in an `Style` object, and when\n * recursing, a new `Style` object can be created with the `.with*` functions.\n */\n\nconst subOrSupLevel = [2, 2, 3, 3];\n\n/**\n * This is the main Style class. It contains the current style.level, color, and font.\n *\n * Style objects should not be modified. To create a new Style with\n * different properties, call a `.with*` method.\n */\nclass Style {\n  constructor(data) {\n    // Style.level can be 0 | 1 | 2 | 3, which correspond to\n    //       displaystyle, textstyle, scriptstyle, and scriptscriptstyle.\n    // style.level usually does not directly set MathML's script level. MathML does that itself.\n    // However, Chromium does not stop shrinking after scriptscriptstyle, so we do explicitly\n    // set a scriptlevel attribute in those conditions.\n    // We also use style.level to track math style so that we can get the correct\n    // scriptlevel when needed in supsub.js, mathchoice.js, or for dimensions in em.\n    this.level = data.level;\n    this.color = data.color;  // string | void\n    // A font family applies to a group of fonts (i.e. SansSerif), while a font\n    // represents a specific font (i.e. SansSerif Bold).\n    // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm\n    this.font = data.font || \"\";                // string\n    this.fontFamily = data.fontFamily || \"\";    // string\n    this.fontSize = data.fontSize || 1.0;       // number\n    this.fontWeight = data.fontWeight || \"\";\n    this.fontShape = data.fontShape || \"\";\n    this.maxSize = data.maxSize;                // [number, number]\n  }\n\n  /**\n   * Returns a new style object with the same properties as \"this\".  Properties\n   * from \"extension\" will be copied to the new style object.\n   */\n  extend(extension) {\n    const data = {\n      level: this.level,\n      color: this.color,\n      font: this.font,\n      fontFamily: this.fontFamily,\n      fontSize: this.fontSize,\n      fontWeight: this.fontWeight,\n      fontShape: this.fontShape,\n      maxSize: this.maxSize\n    };\n\n    for (const key in extension) {\n      if (Object.prototype.hasOwnProperty.call(extension, key)) {\n        data[key] = extension[key];\n      }\n    }\n\n    return new Style(data);\n  }\n\n  withLevel(n) {\n    return this.extend({\n      level: n\n    });\n  }\n\n  incrementLevel() {\n    return this.extend({\n      level: Math.min(this.level + 1, 3)\n    });\n  }\n\n  inSubOrSup() {\n    return this.extend({\n      level: subOrSupLevel[this.level]\n    })\n  }\n\n  /**\n   * Create a new style object with the given color.\n   */\n  withColor(color) {\n    return this.extend({\n      color: color\n    });\n  }\n\n  /**\n   * Creates a new style object with the given math font or old text font.\n   * @type {[type]}\n   */\n  withFont(font) {\n    return this.extend({\n      font\n    });\n  }\n\n  /**\n   * Create a new style objects with the given fontFamily.\n   */\n  withTextFontFamily(fontFamily) {\n    return this.extend({\n      fontFamily,\n      font: \"\"\n    });\n  }\n\n  /**\n   * Creates a new style object with the given font size\n   */\n  withFontSize(num) {\n    return this.extend({\n      fontSize: num\n    });\n  }\n\n  /**\n   * Creates a new style object with the given font weight\n   */\n  withTextFontWeight(fontWeight) {\n    return this.extend({\n      fontWeight,\n      font: \"\"\n    });\n  }\n\n  /**\n   * Creates a new style object with the given font weight\n   */\n  withTextFontShape(fontShape) {\n    return this.extend({\n      fontShape,\n      font: \"\"\n    });\n  }\n\n  /**\n   * Gets the CSS color of the current style object\n   */\n  getColor() {\n    return this.color;\n  }\n}\n\n/* Temml Post Process\n * Populate the text contents of each \\ref & \\eqref\n *\n * As with other Temml code, this file is released under terms of the MIT license.\n * https://mit-license.org/\n */\n\nconst version = \"0.13.4\";\n\nfunction postProcess(block) {\n  const labelMap = {};\n  let i = 0;\n\n  // Get a collection of the parents of each \\tag & auto-numbered equation\n  const amsEqns = document.getElementsByClassName('tml-eqn');\n  for (let parent of amsEqns) {\n    // AMS automatically numbered equation.\n    // Assign an id.\n    i += 1;\n    parent.setAttribute(\"id\", \"tml-eqn-\" + String(i));\n    // No need to write a number into the text content of the element.\n    // A CSS counter has done that even if this postProcess() function is not used.\n\n    // Find any \\label that refers to an AMS automatic eqn number.\n    while (true) {\n      if (parent.tagName === \"mtable\") { break }\n      const labels = parent.getElementsByClassName(\"tml-label\");\n      if (labels.length > 0) {\n        const id = parent.attributes.id.value;\n        labelMap[id] = String(i);\n        break\n      } else {\n        parent = parent.parentElement;\n      }\n    }\n  }\n\n  // Find \\labels associated with \\tag\n  const taggedEqns = document.getElementsByClassName('tml-tageqn');\n  for (const parent of taggedEqns) {\n    const labels = parent.getElementsByClassName(\"tml-label\");\n    if (labels.length > 0) {\n      const tags = parent.getElementsByClassName(\"tml-tag\");\n      if (tags.length > 0) {\n        const id = parent.attributes.id.value;\n        labelMap[id] = tags[0].textContent;\n      }\n    }\n  }\n\n  // Populate \\ref & \\eqref text content\n  const refs = block.getElementsByClassName(\"tml-ref\");\n  [...refs].forEach(ref => {\n    const attr = ref.getAttribute(\"href\");\n    let str = labelMap[attr.slice(1)];\n    if (ref.className.indexOf(\"tml-eqref\") === -1) {\n      // \\ref. Omit parens.\n      str = str.replace(/^\\(/, \"\");\n      str = str.replace(/\\)$/, \"\");\n    } else {\n      // \\eqref. Include parens\n      if (str.charAt(0) !== \"(\") { str = \"(\" + str; }\n      if (str.slice(-1) !== \")\") { str =  str + \")\"; }\n    }\n    const mtext = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"mtext\");\n    mtext.appendChild(document.createTextNode(str));\n    const math =  document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"math\");\n    math.appendChild(mtext);\n    ref.textContent = '';\n    ref.appendChild(math);\n  });\n}\n\nconst findEndOfMath = function(delimiter, text, startIndex) {\n  // Adapted from\n  // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx\n  let index = startIndex;\n  let braceLevel = 0;\n\n  const delimLength = delimiter.length;\n\n  while (index < text.length) {\n    const character = text[index];\n\n    if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {\n      return index;\n    } else if (character === \"\\\\\") {\n      index++;\n    } else if (character === \"{\") {\n      braceLevel++;\n    } else if (character === \"}\") {\n      braceLevel--;\n    }\n\n    index++;\n  }\n\n  return -1;\n};\n\nconst escapeRegex = function(string) {\n  return string.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\n};\n\nconst amsRegex = /^\\\\(?:begin|(?:eq)?ref){/;\n\nconst splitAtDelimiters = function(text, delimiters) {\n  let index;\n  const data = [];\n\n  const regexLeft = new RegExp(\n    \"(\" + delimiters.map((x) => escapeRegex(x.left)).join(\"|\") + \")\"\n  );\n\n  while (true) {\n    index = text.search(regexLeft);\n    if (index === -1) {\n      break;\n    }\n    if (index > 0) {\n      data.push({\n        type: \"text\",\n        data: text.slice(0, index)\n      });\n      text = text.slice(index); // now text starts with delimiter\n    }\n    // ... so this always succeeds:\n    const i = delimiters.findIndex((delim) => text.startsWith(delim.left));\n    index = findEndOfMath(delimiters[i].right, text, delimiters[i].left.length);\n    if (index === -1) {\n      break;\n    }\n    const rawData = text.slice(0, index + delimiters[i].right.length);\n    const math = amsRegex.test(rawData)\n      ? rawData\n      : text.slice(delimiters[i].left.length, index);\n    data.push({\n      type: \"math\",\n      data: math,\n      rawData,\n      display: delimiters[i].display\n    });\n    text = text.slice(index + delimiters[i].right.length);\n  }\n\n  if (text !== \"\") {\n    data.push({\n      type: \"text\",\n      data: text\n    });\n  }\n\n  return data;\n};\n\nconst defaultDelimiters = [\n  { left: \"$$\", right: \"$$\", display: true },\n  { left: \"\\\\(\", right: \"\\\\)\", display: false },\n  // LaTeX uses $…$, but it ruins the display of normal `$` in text:\n  // {left: \"$\", right: \"$\", display: false},\n  // $ must come after $$\n\n  // Render AMS environments even if outside $$…$$ delimiters.\n  { left: \"\\\\begin{equation}\", right: \"\\\\end{equation}\", display: true },\n  { left: \"\\\\begin{equation*}\", right: \"\\\\end{equation*}\", display: true },\n  { left: \"\\\\begin{align}\", right: \"\\\\end{align}\", display: true },\n  { left: \"\\\\begin{align*}\", right: \"\\\\end{align*}\", display: true },\n  { left: \"\\\\begin{alignat}\", right: \"\\\\end{alignat}\", display: true },\n  { left: \"\\\\begin{alignat*}\", right: \"\\\\end{alignat*}\", display: true },\n  { left: \"\\\\begin{gather}\", right: \"\\\\end{gather}\", display: true },\n  { left: \"\\\\begin{gather*}\", right: \"\\\\end{gather*}\", display: true },\n  { left: \"\\\\begin{CD}\", right: \"\\\\end{CD}\", display: true },\n  // Ditto \\ref & \\eqref\n  { left: \"\\\\ref{\", right: \"}\", display: false },\n  { left: \"\\\\eqref{\", right: \"}\", display: false },\n\n  { left: \"\\\\[\", right: \"\\\\]\", display: true }\n];\n\nconst firstDraftDelimiters = {\n  \"$\": [\n         { left: \"$$\", right: \"$$\", display: true },\n         { left: \"$`\", right: \"`$\", display: false },\n         { left: \"$\", right: \"$\", display: false }\n  ],\n  \"(\": [\n    { left: \"\\\\[\", right: \"\\\\]\", display: true },\n    { left: \"\\\\(\", right: \"\\\\)\", display: false }\n  ]\n};\n\nconst amsDelimiters = [\n  { left: \"\\\\begin{equation}\", right: \"\\\\end{equation}\", display: true },\n  { left: \"\\\\begin{equation*}\", right: \"\\\\end{equation*}\", display: true },\n  { left: \"\\\\begin{align}\", right: \"\\\\end{align}\", display: true },\n  { left: \"\\\\begin{align*}\", right: \"\\\\end{align*}\", display: true },\n  { left: \"\\\\begin{alignat}\", right: \"\\\\end{alignat}\", display: true },\n  { left: \"\\\\begin{alignat*}\", right: \"\\\\end{alignat*}\", display: true },\n  { left: \"\\\\begin{gather}\", right: \"\\\\end{gather}\", display: true },\n  { left: \"\\\\begin{gather*}\", right: \"\\\\end{gather*}\", display: true },\n  { left: \"\\\\begin{CD}\", right: \"\\\\end{CD}\", display: true },\n  { left: \"\\\\ref{\", right: \"}\", display: false },\n  { left: \"\\\\eqref{\", right: \"}\", display: false }\n];\n\nconst delimitersFromKey = key => {\n  if (key === \"$\" || key === \"(\") {\n    return firstDraftDelimiters[key];\n  } else if (key === \"$+\" || key === \"(+\") {\n    const firstDraft = firstDraftDelimiters[key.slice(0, 1)];\n    return firstDraft.concat(amsDelimiters)\n  } else if (key === \"ams\") {\n    return amsDelimiters\n  } else if (key === \"all\") {\n    return (firstDraftDelimiters[\"(\"]).concat(firstDraftDelimiters[\"$\"]).concat(amsDelimiters)\n  } else {\n    return defaultDelimiters\n  }\n};\n\n/* Note: optionsCopy is mutated by this method. If it is ever exposed in the\n * API, we should copy it before mutating.\n */\nconst renderMathInText = function(text, optionsCopy) {\n  const data = splitAtDelimiters(text, optionsCopy.delimiters);\n  if (data.length === 1 && data[0].type === \"text\") {\n    // There is no formula in the text.\n    // Let's return null which means there is no need to replace\n    // the current text node with a new one.\n    return null;\n  }\n\n  const fragment = document.createDocumentFragment();\n\n  for (let i = 0; i < data.length; i++) {\n    if (data[i].type === \"text\") {\n      fragment.appendChild(document.createTextNode(data[i].data));\n    } else {\n      const span = document.createElement(\"span\");\n      let math = data[i].data;\n      // Override any display mode defined in the settings with that\n      // defined by the text itself\n      optionsCopy.displayMode = data[i].display;\n      try {\n        if (optionsCopy.preProcess) {\n          math = optionsCopy.preProcess(math);\n        }\n        // Importing render() from temml.js would be a circular dependency.\n        // So call the global version.\n        // eslint-disable-next-line no-undef\n        temml.render(math, span, optionsCopy);\n      } catch (e) {\n        if (!(e instanceof ParseError)) {\n          throw e;\n        }\n        optionsCopy.errorCallback(\n          \"Temml auto-render: Failed to parse `\" + data[i].data + \"` with \",\n          e\n        );\n        fragment.appendChild(document.createTextNode(data[i].rawData));\n        continue;\n      }\n      fragment.appendChild(span);\n    }\n  }\n\n  return fragment;\n};\n\nconst renderElem = function(elem, optionsCopy) {\n  for (let i = 0; i < elem.childNodes.length; i++) {\n    const childNode = elem.childNodes[i];\n    if (childNode.nodeType === 3) {\n      // Text node\n      const frag = renderMathInText(childNode.textContent, optionsCopy);\n      if (frag) {\n        i += frag.childNodes.length - 1;\n        elem.replaceChild(frag, childNode);\n      }\n    } else if (childNode.nodeType === 1) {\n      // Element node\n      const className = \" \" + childNode.className + \" \";\n      const shouldRender =\n        optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 &&\n        optionsCopy.ignoredClasses.every((x) => className.indexOf(\" \" + x + \" \") === -1);\n\n      if (shouldRender) {\n        renderElem(childNode, optionsCopy);\n      }\n    }\n    // Otherwise, it's something else, and ignore it.\n  }\n};\n\nconst renderMathInElement = function(elem, options) {\n  if (!elem) {\n    throw new Error(\"No element provided to render\");\n  }\n\n  const optionsCopy = {};\n\n  // Object.assign(optionsCopy, option)\n  for (const option in options) {\n    if (Object.prototype.hasOwnProperty.call(options, option)) {\n      optionsCopy[option] = options[option];\n    }\n  }\n\n  if (optionsCopy.fences) {\n    optionsCopy.delimiters = delimitersFromKey(optionsCopy.fences);\n  } else {\n    optionsCopy.delimiters = optionsCopy.delimiters || defaultDelimiters;\n  }\n  optionsCopy.ignoredTags = optionsCopy.ignoredTags || [\n    \"script\",\n    \"noscript\",\n    \"style\",\n    \"textarea\",\n    \"pre\",\n    \"code\",\n    \"option\"\n  ];\n  optionsCopy.ignoredClasses = optionsCopy.ignoredClasses || [];\n  // eslint-disable-next-line no-console\n  optionsCopy.errorCallback = optionsCopy.errorCallback || console.error;\n\n  // Enable sharing of global macros defined via `\\gdef` between different\n  // math elements within a single call to `renderMathInElement`.\n  optionsCopy.macros = optionsCopy.macros || {};\n\n  renderElem(elem, optionsCopy);\n  postProcess(elem);\n};\n\n/* eslint no-console:0 */\n/**\n * This is the main entry point for Temml. Here, we expose functions for\n * rendering expressions either to DOM nodes or to markup strings.\n *\n * We also expose the ParseError class to check if errors thrown from Temml are\n * errors in the expression, or errors in javascript handling.\n */\n\n\n/**\n * @type {import('./temml').render}\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nlet render = function(expression, baseNode, options = {}) {\n  baseNode.textContent = \"\";\n  const alreadyInMathElement = baseNode.tagName.toLowerCase() === \"math\";\n  if (alreadyInMathElement) { options.wrap = \"none\"; }\n  const math = renderToMathMLTree(expression, options);\n  if (alreadyInMathElement) {\n    // The <math> element already exists. Populate it.\n    baseNode.textContent = \"\";\n    math.children.forEach(e => { baseNode.appendChild(e.toNode()); });\n  } else if (math.children.length > 1) {\n    baseNode.textContent = \"\";\n    math.children.forEach(e => { baseNode.appendChild(e.toNode()); });\n  } else {\n    baseNode.appendChild(math.toNode());\n  }\n};\n\n// Temml's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\nif (typeof document !== \"undefined\") {\n  if (document.compatMode !== \"CSS1Compat\") {\n    typeof console !== \"undefined\" &&\n      console.warn(\n        \"Warning: Temml doesn't work in quirks mode. Make sure your \" +\n          \"website has a suitable doctype.\"\n      );\n\n    render = function() {\n      throw new ParseError(\"Temml doesn't work in quirks mode.\");\n    };\n  }\n}\n\n/**\n * @type {import('./temml').renderToString}\n * Parse and build an expression, and return the markup for that.\n */\nconst renderToString = function(expression, options) {\n  const markup = renderToMathMLTree(expression, options).toMarkup();\n  return markup;\n};\n\n/**\n * @type {import('./temml').generateParseTree}\n * Parse an expression and return the parse tree.\n */\nconst generateParseTree = function(expression, options) {\n  const settings = new Settings(options);\n  return parseTree(expression, settings);\n};\n\n/**\n * @type {import('./temml').definePreamble}\n * Take an expression which contains a preamble.\n * Parse it and return the macros.\n */\nconst definePreamble = function(expression, options) {\n  const settings = new Settings(options);\n  settings.macros = {};\n  if (!(typeof expression === \"string\" || expression instanceof String)) {\n    throw new TypeError(\"Temml can only parse string typed expression\")\n  }\n  const parser = new Parser(expression, settings, true);\n  // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n  delete parser.gullet.macros.current[\"\\\\df@tag\"];\n  const macros = parser.parse();\n  return macros\n};\n\n/**\n * If the given error is a Temml ParseError,\n * renders the invalid LaTeX as a span with hover title giving the Temml\n * error message.  Otherwise, simply throws the error.\n */\nconst renderError = function(error, expression, options) {\n  if (options.throwOnError || !(error instanceof ParseError)) {\n    throw error;\n  }\n  const node = new Span([\"temml-error\"], [new TextNode$1(expression + \"\\n\\n\" + error.toString())]);\n  node.style.color = options.errorColor;\n  node.style.whiteSpace = \"pre-line\";\n  return node;\n};\n\n/**\n * @type {import('./temml').renderToMathMLTree}\n * Generates and returns the Temml build tree. This is used for advanced\n * use cases (like rendering to custom output).\n */\nconst renderToMathMLTree = function(expression, options) {\n  const settings = new Settings(options);\n  try {\n    const tree = parseTree(expression, settings);\n    const style = new Style({\n      level: settings.displayMode ? StyleLevel.DISPLAY : StyleLevel.TEXT,\n      maxSize: settings.maxSize\n    });\n    return buildMathML(tree, expression, style, settings);\n  } catch (error) {\n    return renderError(error, expression, settings);\n  }\n};\n\n/** @type {import('./temml').default} */\nvar temml$1 = {\n  /**\n   * Current Temml version\n   */\n  version: version,\n  /**\n   * Renders the given LaTeX into MathML, and adds\n   * it as a child to the specified DOM node.\n   */\n  render,\n  /**\n   * Renders the given LaTeX into MathML string,\n   * for sending to the client.\n   */\n  renderToString,\n  /**\n   * Finds all the math delimiters in a given element of a running HTML document\n   * and converts the contents of each instance into a <math> element.\n   */\n  renderMathInElement,\n  /**\n   * Post-process an entire HTML block.\n   * Writes AMS auto-numbers and implements \\ref{}.\n   * Typcally called once, after a loop has rendered many individual spans.\n   */\n  postProcess,\n  /**\n   * Temml error, usually during parsing.\n   */\n  ParseError,\n  /**\n   * Creates a set of macros with document-wide scope.\n   */\n  definePreamble,\n  /**\n   * Parses the given LaTeX into Temml's internal parse tree structure,\n   * without rendering to HTML or MathML.\n   *\n   * NOTE: This method is not currently recommended for public use.\n   * The internal tree representation is unstable and is very likely\n   * to change. Use at your own risk.\n   */\n  __parse: generateParseTree,\n  /**\n   * Renders the given LaTeX into a MathML internal DOM tree\n   * representation, without flattening that representation to a string.\n   *\n   * NOTE: This method is not currently recommended for public use.\n   * The internal tree representation is unstable and is very likely\n   * to change. Use at your own risk.\n   */\n  __renderToMathMLTree: renderToMathMLTree,\n  /**\n   * adds a new symbol to builtin symbols table\n   */\n  __defineSymbol: defineSymbol,\n  /**\n   * adds a new macro to builtin macro list\n   */\n  __defineMacro: defineMacro\n};\n\nmodule.exports = temml$1;\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"\"use strict\";\r\nmodule.exports = Event;\r\n\r\nEvent.CAPTURING_PHASE = 1;\r\nEvent.AT_TARGET = 2;\r\nEvent.BUBBLING_PHASE = 3;\r\n\r\nfunction Event(type, dictionary) {\r\n  // Initialize basic event properties\r\n  this.type = '';\r\n  this.target = null;\r\n  this.currentTarget = null;\r\n  this.eventPhase = Event.AT_TARGET;\r\n  this.bubbles = false;\r\n  this.cancelable = false;\r\n  this.isTrusted = false;\r\n  this.defaultPrevented = false;\r\n  this.timeStamp = Date.now();\r\n\r\n  // Initialize internal flags\r\n  // XXX: Would it be better to inherit these defaults from the prototype?\r\n  this._propagationStopped = false;\r\n  this._immediatePropagationStopped = false;\r\n  this._initialized = true;\r\n  this._dispatching = false;\r\n\r\n  // Now initialize based on the constructor arguments (if any)\r\n  if (type) this.type = type;\r\n  if (dictionary) {\r\n    for(var p in dictionary) {\r\n      this[p] = dictionary[p];\r\n    }\r\n  }\r\n}\r\n\r\nEvent.prototype = Object.create(Object.prototype, {\r\n  constructor: { value: Event },\r\n  stopPropagation: { value: function stopPropagation() {\r\n    this._propagationStopped = true;\r\n  }},\r\n\r\n  stopImmediatePropagation: { value: function stopImmediatePropagation() {\r\n    this._propagationStopped = true;\r\n    this._immediatePropagationStopped = true;\r\n  }},\r\n\r\n  preventDefault: { value: function preventDefault() {\r\n    if (this.cancelable) this.defaultPrevented = true;\r\n  }},\r\n\r\n  initEvent: { value: function initEvent(type, bubbles, cancelable) {\r\n    this._initialized = true;\r\n    if (this._dispatching) return;\r\n\r\n    this._propagationStopped = false;\r\n    this._immediatePropagationStopped = false;\r\n    this.defaultPrevented = false;\r\n    this.isTrusted = false;\r\n\r\n    this.target = null;\r\n    this.type = type;\r\n    this.bubbles = bubbles;\r\n    this.cancelable = cancelable;\r\n  }},\r\n\r\n});\r\n","\"use strict\";\r\nvar Event = require('./Event');\r\n\r\nmodule.exports = UIEvent;\r\n\r\nfunction UIEvent() {\r\n  // Just use the superclass constructor to initialize\r\n  Event.call(this);\r\n  this.view = null; // FF uses the current window\r\n  this.detail = 0;\r\n}\r\nUIEvent.prototype = Object.create(Event.prototype, {\r\n  constructor: { value: UIEvent },\r\n  initUIEvent: { value: function(type, bubbles, cancelable, view, detail) {\r\n    this.initEvent(type, bubbles, cancelable);\r\n    this.view = view;\r\n    this.detail = detail;\r\n  }}\r\n});\r\n","\"use strict\";\r\nvar UIEvent = require('./UIEvent');\r\n\r\nmodule.exports = MouseEvent;\r\n\r\nfunction MouseEvent() {\r\n  // Just use the superclass constructor to initialize\r\n  UIEvent.call(this);\r\n\r\n  this.screenX = this.screenY = this.clientX = this.clientY = 0;\r\n  this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false;\r\n  this.button = 0;\r\n  this.buttons = 1;\r\n  this.relatedTarget = null;\r\n}\r\nMouseEvent.prototype = Object.create(UIEvent.prototype, {\r\n  constructor: { value: MouseEvent },\r\n  initMouseEvent: { value: function(type, bubbles, cancelable,\r\n    view, detail,\r\n    screenX, screenY, clientX, clientY,\r\n    ctrlKey, altKey, shiftKey, metaKey,\r\n    button, relatedTarget) {\r\n\r\n    this.initEvent(type, bubbles, cancelable, view, detail);\r\n    this.screenX = screenX;\r\n    this.screenY = screenY;\r\n    this.clientX = clientX;\r\n    this.clientY = clientY;\r\n    this.ctrlKey = ctrlKey;\r\n    this.altKey = altKey;\r\n    this.shiftKey = shiftKey;\r\n    this.metaKey = metaKey;\r\n    this.button = button;\r\n    switch(button) {\r\n    case 0: this.buttons = 1; break;\r\n    case 1: this.buttons = 4; break;\r\n    case 2: this.buttons = 2; break;\r\n    default: this.buttons = 0; break;\r\n    }\r\n    this.relatedTarget = relatedTarget;\r\n  }},\r\n\r\n  getModifierState: { value: function(key) {\r\n    switch(key) {\r\n    case \"Alt\": return this.altKey;\r\n    case \"Control\": return this.ctrlKey;\r\n    case \"Shift\": return this.shiftKey;\r\n    case \"Meta\": return this.metaKey;\r\n    default: return false;\r\n    }\r\n  }}\r\n});\r\n","\"use strict\";\r\nmodule.exports = DOMException;\r\n\r\nvar INDEX_SIZE_ERR = 1;\r\nvar HIERARCHY_REQUEST_ERR = 3;\r\nvar WRONG_DOCUMENT_ERR = 4;\r\nvar INVALID_CHARACTER_ERR = 5;\r\nvar NO_MODIFICATION_ALLOWED_ERR = 7;\r\nvar NOT_FOUND_ERR = 8;\r\nvar NOT_SUPPORTED_ERR = 9;\r\nvar INVALID_STATE_ERR = 11;\r\nvar SYNTAX_ERR = 12;\r\nvar INVALID_MODIFICATION_ERR = 13;\r\nvar NAMESPACE_ERR = 14;\r\nvar INVALID_ACCESS_ERR = 15;\r\nvar TYPE_MISMATCH_ERR = 17;\r\nvar SECURITY_ERR = 18;\r\nvar NETWORK_ERR = 19;\r\nvar ABORT_ERR = 20;\r\nvar URL_MISMATCH_ERR = 21;\r\nvar QUOTA_EXCEEDED_ERR = 22;\r\nvar TIMEOUT_ERR = 23;\r\nvar INVALID_NODE_TYPE_ERR = 24;\r\nvar DATA_CLONE_ERR = 25;\r\n\r\n// Code to name\r\nvar names = [\r\n  null,  // No error with code 0\r\n  'INDEX_SIZE_ERR',\r\n  null, // historical\r\n  'HIERARCHY_REQUEST_ERR',\r\n  'WRONG_DOCUMENT_ERR',\r\n  'INVALID_CHARACTER_ERR',\r\n  null, // historical\r\n  'NO_MODIFICATION_ALLOWED_ERR',\r\n  'NOT_FOUND_ERR',\r\n  'NOT_SUPPORTED_ERR',\r\n  'INUSE_ATTRIBUTE_ERR', // historical\r\n  'INVALID_STATE_ERR',\r\n  'SYNTAX_ERR',\r\n  'INVALID_MODIFICATION_ERR',\r\n  'NAMESPACE_ERR',\r\n  'INVALID_ACCESS_ERR',\r\n  null, // historical\r\n  'TYPE_MISMATCH_ERR',\r\n  'SECURITY_ERR',\r\n  'NETWORK_ERR',\r\n  'ABORT_ERR',\r\n  'URL_MISMATCH_ERR',\r\n  'QUOTA_EXCEEDED_ERR',\r\n  'TIMEOUT_ERR',\r\n  'INVALID_NODE_TYPE_ERR',\r\n  'DATA_CLONE_ERR',\r\n];\r\n\r\n// Code to message\r\n// These strings are from the 13 May 2011 Editor's Draft of DOM Core.\r\n// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html\r\n// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved.\r\n// Used under the terms of the W3C Document License:\r\n// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231\r\nvar messages = [\r\n  null,  // No error with code 0\r\n  'INDEX_SIZE_ERR (1): the index is not in the allowed range',\r\n  null,\r\n  'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model',\r\n  'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required',\r\n  'INVALID_CHARACTER_ERR (5): the string contains invalid characters',\r\n  null,\r\n  'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified',\r\n  'NOT_FOUND_ERR (8): the object can not be found here',\r\n  'NOT_SUPPORTED_ERR (9): this operation is not supported',\r\n  'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute',\r\n  'INVALID_STATE_ERR (11): the object is in an invalid state',\r\n  'SYNTAX_ERR (12): the string did not match the expected pattern',\r\n  'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way',\r\n  'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML',\r\n  'INVALID_ACCESS_ERR (15): the object does not support the operation or argument',\r\n  null,\r\n  'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type',\r\n  'SECURITY_ERR (18): the operation is insecure',\r\n  'NETWORK_ERR (19): a network error occurred',\r\n  'ABORT_ERR (20): the user aborted an operation',\r\n  'URL_MISMATCH_ERR (21): the given URL does not match another URL',\r\n  'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded',\r\n  'TIMEOUT_ERR (23): a timeout occurred',\r\n  'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation',\r\n  'DATA_CLONE_ERR (25): the object can not be cloned.'\r\n];\r\n\r\n// Name to code\r\nvar constants = {\r\n  INDEX_SIZE_ERR: INDEX_SIZE_ERR,\r\n  DOMSTRING_SIZE_ERR: 2, // historical\r\n  HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR,\r\n  WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR,\r\n  INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR,\r\n  NO_DATA_ALLOWED_ERR: 6, // historical\r\n  NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR,\r\n  NOT_FOUND_ERR: NOT_FOUND_ERR,\r\n  NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR,\r\n  INUSE_ATTRIBUTE_ERR: 10, // historical\r\n  INVALID_STATE_ERR: INVALID_STATE_ERR,\r\n  SYNTAX_ERR: SYNTAX_ERR,\r\n  INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR,\r\n  NAMESPACE_ERR: NAMESPACE_ERR,\r\n  INVALID_ACCESS_ERR: INVALID_ACCESS_ERR,\r\n  VALIDATION_ERR: 16, // historical\r\n  TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR,\r\n  SECURITY_ERR: SECURITY_ERR,\r\n  NETWORK_ERR: NETWORK_ERR,\r\n  ABORT_ERR: ABORT_ERR,\r\n  URL_MISMATCH_ERR: URL_MISMATCH_ERR,\r\n  QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR,\r\n  TIMEOUT_ERR: TIMEOUT_ERR,\r\n  INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR,\r\n  DATA_CLONE_ERR: DATA_CLONE_ERR\r\n};\r\n\r\nfunction DOMException(code) {\r\n  Error.call(this);\r\n  Error.captureStackTrace(this, this.constructor);\r\n  this.code = code;\r\n  this.message = messages[code];\r\n  this.name = names[code];\r\n}\r\nDOMException.prototype.__proto__ = Error.prototype;\r\n\r\n// Initialize the constants on DOMException and DOMException.prototype\r\nfor(var c in constants) {\r\n  var v = { value: constants[c] };\r\n  Object.defineProperty(DOMException, c, v);\r\n  Object.defineProperty(DOMException.prototype, c, v);\r\n}\r\n","/*\r\n * This file defines Domino behaviour that can be externally configured.\r\n * To change these settings, set the relevant global property *before*\r\n * you call `require(\"domino\")`.\r\n */\r\n\r\nexports.isApiWritable = !globalThis.__domino_frozen__;\r\n","\"use strict\";\r\nvar DOMException = require('./DOMException');\r\nvar ERR = DOMException;\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nexports.NAMESPACE = {\r\n  HTML: 'http://www.w3.org/1999/xhtml',\r\n  XML: 'http://www.w3.org/XML/1998/namespace',\r\n  XMLNS: 'http://www.w3.org/2000/xmlns/',\r\n  MATHML: 'http://www.w3.org/1998/Math/MathML',\r\n  SVG: 'http://www.w3.org/2000/svg',\r\n  XLINK: 'http://www.w3.org/1999/xlink'\r\n};\r\n\r\n//\r\n// Shortcut functions for throwing errors of various types.\r\n//\r\nexports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); };\r\nexports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); };\r\nexports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); };\r\nexports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); };\r\nexports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); };\r\nexports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); };\r\nexports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); };\r\nexports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); };\r\nexports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); };\r\nexports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); };\r\nexports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); };\r\nexports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); };\r\nexports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); };\r\nexports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); };\r\nexports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); };\r\nexports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); };\r\nexports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); };\r\nexports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); };\r\nexports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); };\r\nexports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); };\r\nexports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); };\r\n\r\nexports.nyi = function() {\r\n  throw new Error(\"NotYetImplemented\");\r\n};\r\n\r\nexports.shouldOverride = function() {\r\n  throw new Error(\"Abstract function; should be overriding in subclass.\");\r\n};\r\n\r\nexports.assert = function(expr, msg) {\r\n  if (!expr) {\r\n    throw new Error(\"Assertion failed: \" + (msg || \"\") + \"\\n\" + new Error().stack);\r\n  }\r\n};\r\n\r\nexports.expose = function(src, c) {\r\n  for (var n in src) {\r\n    Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable });\r\n  }\r\n};\r\n\r\nexports.merge = function(a, b) {\r\n  for (var n in b) {\r\n    a[n] = b[n];\r\n  }\r\n};\r\n\r\n// Compare two nodes based on their document order. This function is intended\r\n// to be passed to sort(). Assumes that the array being sorted does not\r\n// contain duplicates.  And that all nodes are connected and comparable.\r\n// Clever code by ppk via jeresig.\r\nexports.documentOrder = function(n,m) {\r\n  /* jshint bitwise: false */\r\n  return 3 - (n.compareDocumentPosition(m) & 6);\r\n};\r\n\r\nexports.toASCIILowerCase = function(s) {\r\n  return s.replace(/[A-Z]+/g, function(c) {\r\n    return c.toLowerCase();\r\n  });\r\n};\r\n\r\nexports.toASCIIUpperCase = function(s) {\r\n  return s.replace(/[a-z]+/g, function(c) {\r\n    return c.toUpperCase();\r\n  });\r\n};\r\n","\"use strict\";\r\nvar Event = require('./Event');\r\nvar MouseEvent = require('./MouseEvent');\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = EventTarget;\r\n\r\nfunction EventTarget() {}\r\n\r\nEventTarget.prototype = {\r\n  // XXX\r\n  // See WebIDL §4.8 for details on object event handlers\r\n  // and how they should behave.  We actually have to accept\r\n  // any object to addEventListener... Can't type check it.\r\n  // on registration.\r\n\r\n  // XXX:\r\n  // Capturing event listeners are sort of rare.  I think I can optimize\r\n  // them so that dispatchEvent can skip the capturing phase (or much of\r\n  // it).  Each time a capturing listener is added, increment a flag on\r\n  // the target node and each of its ancestors.  Decrement when removed.\r\n  // And update the counter when nodes are added and removed from the\r\n  // tree as well.  Then, in dispatch event, the capturing phase can\r\n  // abort if it sees any node with a zero count.\r\n  addEventListener: function addEventListener(type, listener, capture) {\r\n    if (!listener) return;\r\n    if (capture === undefined) capture = false;\r\n    if (!this._listeners) this._listeners = Object.create(null);\r\n    if (!this._listeners[type]) this._listeners[type] = [];\r\n    var list = this._listeners[type];\r\n\r\n    // If this listener has already been registered, just return\r\n    for(var i = 0, n = list.length; i < n; i++) {\r\n      var l = list[i];\r\n      if (l.listener === listener && l.capture === capture)\r\n        return;\r\n    }\r\n\r\n    // Add an object to the list of listeners\r\n    var obj = { listener: listener, capture: capture };\r\n    if (typeof listener === 'function') obj.f = listener;\r\n    list.push(obj);\r\n  },\r\n\r\n  removeEventListener: function removeEventListener(type,\r\n                            listener,\r\n                            capture) {\r\n    if (capture === undefined) capture = false;\r\n    if (this._listeners) {\r\n      var list = this._listeners[type];\r\n      if (list) {\r\n        // Find the listener in the list and remove it\r\n        for(var i = 0, n = list.length; i < n; i++) {\r\n          var l = list[i];\r\n          if (l.listener === listener && l.capture === capture) {\r\n            if (list.length === 1) {\r\n              this._listeners[type] = undefined;\r\n            }\r\n            else {\r\n              list.splice(i, 1);\r\n            }\r\n            return;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  },\r\n\r\n  // This is the public API for dispatching untrusted public events.\r\n  // See _dispatchEvent for the implementation\r\n  dispatchEvent: function dispatchEvent(event) {\r\n    // Dispatch an untrusted event\r\n    return this._dispatchEvent(event, false);\r\n  },\r\n\r\n  //\r\n  // See DOMCore §4.4\r\n  // XXX: I'll probably need another version of this method for\r\n  // internal use, one that does not set isTrusted to false.\r\n  // XXX: see Document._dispatchEvent: perhaps that and this could\r\n  // call a common internal function with different settings of\r\n  // a trusted boolean argument\r\n  //\r\n  // XXX:\r\n  // The spec has changed in how to deal with handlers registered\r\n  // on idl or content attributes rather than with addEventListener.\r\n  // Used to say that they always ran first.  That's how webkit does it\r\n  // Spec now says that they run in a position determined by\r\n  // when they were first set.  FF does it that way.  See:\r\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers\r\n  //\r\n  _dispatchEvent: function _dispatchEvent(event, trusted) {\r\n    if (typeof trusted !== 'boolean') trusted = false;\r\n    function invoke(target, event) {\r\n      var type = event.type, phase = event.eventPhase;\r\n      event.currentTarget = target;\r\n\r\n      // If there was an individual handler defined, invoke it first\r\n      // XXX: see comment above: this shouldn't always be first.\r\n      if (phase !== Event.CAPTURING_PHASE &&\r\n        target._handlers && target._handlers[type])\r\n      {\r\n        var handler = target._handlers[type];\r\n        var rv;\r\n        if (typeof handler === 'function') {\r\n          rv=handler.call(event.currentTarget, event);\r\n        }\r\n        else {\r\n          var f = handler.handleEvent;\r\n          if (typeof f !== 'function')\r\n            throw new TypeError('handleEvent property of ' +\r\n                                'event handler object is' +\r\n                                'not a function.');\r\n          rv=f.call(handler, event);\r\n        }\r\n\r\n        switch(event.type) {\r\n        case 'mouseover':\r\n          if (rv === true)  // Historical baggage\r\n            event.preventDefault();\r\n          break;\r\n        case 'beforeunload':\r\n          // XXX: eventually we need a special case here\r\n          /* falls through */\r\n        default:\r\n          if (rv === false)\r\n            event.preventDefault();\r\n          break;\r\n        }\r\n      }\r\n\r\n      // Now invoke list list of listeners for this target and type\r\n      var list = target._listeners && target._listeners[type];\r\n      if (!list) return;\r\n      list = list.slice();\r\n      for(var i = 0, n = list.length; i < n; i++) {\r\n        if (event._immediatePropagationStopped) return;\r\n        var l = list[i];\r\n        if ((phase === Event.CAPTURING_PHASE && !l.capture) ||\r\n          (phase === Event.BUBBLING_PHASE && l.capture))\r\n          continue;\r\n        if (l.f) {\r\n          l.f.call(event.currentTarget, event);\r\n        }\r\n        else {\r\n          var fn = l.listener.handleEvent;\r\n          if (typeof fn !== 'function')\r\n            throw new TypeError('handleEvent property of event listener object is not a function.');\r\n          fn.call(l.listener, event);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (!event._initialized || event._dispatching) utils.InvalidStateError();\r\n    event.isTrusted = trusted;\r\n\r\n    // Begin dispatching the event now\r\n    event._dispatching = true;\r\n    event.target = this;\r\n\r\n    // Build the list of targets for the capturing and bubbling phases\r\n    // XXX: we'll eventually have to add Window to this list.\r\n    var ancestors = [];\r\n    for(var n = this.parentNode; n; n = n.parentNode)\r\n      ancestors.push(n);\r\n\r\n    // Capturing phase\r\n    event.eventPhase = Event.CAPTURING_PHASE;\r\n    for(var i = ancestors.length-1; i >= 0; i--) {\r\n      invoke(ancestors[i], event);\r\n      if (event._propagationStopped) break;\r\n    }\r\n\r\n    // At target phase\r\n    if (!event._propagationStopped) {\r\n      event.eventPhase = Event.AT_TARGET;\r\n      invoke(this, event);\r\n    }\r\n\r\n    // Bubbling phase\r\n    if (event.bubbles && !event._propagationStopped) {\r\n      event.eventPhase = Event.BUBBLING_PHASE;\r\n      for(var ii = 0, nn = ancestors.length; ii < nn; ii++) {\r\n        invoke(ancestors[ii], event);\r\n        if (event._propagationStopped) break;\r\n      }\r\n    }\r\n\r\n    event._dispatching = false;\r\n    event.eventPhase = Event.AT_TARGET;\r\n    event.currentTarget = null;\r\n\r\n    // Deal with mouse events and figure out when\r\n    // a click has happened\r\n    if (trusted && !event.defaultPrevented && event instanceof MouseEvent) {\r\n      switch(event.type) {\r\n      case 'mousedown':\r\n        this._armed = {\r\n          x: event.clientX,\r\n          y: event.clientY,\r\n          t: event.timeStamp\r\n        };\r\n        break;\r\n      case 'mouseout':\r\n      case 'mouseover':\r\n        this._armed = null;\r\n        break;\r\n      case 'mouseup':\r\n        if (this._isClick(event)) this._doClick(event);\r\n        this._armed = null;\r\n        break;\r\n      }\r\n    }\r\n\r\n\r\n\r\n    return !event.defaultPrevented;\r\n  },\r\n\r\n  // Determine whether a click occurred\r\n  // XXX We don't support double clicks for now\r\n  _isClick: function(event) {\r\n    return (this._armed !== null &&\r\n        event.type === 'mouseup' &&\r\n        event.isTrusted &&\r\n        event.button === 0 &&\r\n        event.timeStamp - this._armed.t < 1000 &&\r\n        Math.abs(event.clientX - this._armed.x) < 10 &&\r\n        Math.abs(event.clientY - this._armed.Y) < 10);\r\n  },\r\n\r\n  // Clicks are handled like this:\r\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0\r\n  //\r\n  // Note that this method is similar to the HTMLElement.click() method\r\n  // The event argument must be the trusted mouseup event\r\n  _doClick: function(event) {\r\n    if (this._click_in_progress) return;\r\n    this._click_in_progress = true;\r\n\r\n    // Find the nearest enclosing element that is activatable\r\n    // An element is activatable if it has a\r\n    // _post_click_activation_steps hook\r\n    var activated = this;\r\n    while(activated && !activated._post_click_activation_steps)\r\n      activated = activated.parentNode;\r\n\r\n    if (activated && activated._pre_click_activation_steps) {\r\n      activated._pre_click_activation_steps();\r\n    }\r\n\r\n    var click = this.ownerDocument.createEvent('MouseEvent');\r\n    click.initMouseEvent('click', true, true,\r\n      this.ownerDocument.defaultView, 1,\r\n      event.screenX, event.screenY,\r\n      event.clientX, event.clientY,\r\n      event.ctrlKey, event.altKey,\r\n      event.shiftKey, event.metaKey,\r\n      event.button, null);\r\n\r\n    var result = this._dispatchEvent(click, true);\r\n\r\n    if (activated) {\r\n      if (result) {\r\n        // This is where hyperlinks get followed, for example.\r\n        if (activated._post_click_activation_steps)\r\n          activated._post_click_activation_steps(click);\r\n      }\r\n      else {\r\n        if (activated._cancelled_activation_steps)\r\n          activated._cancelled_activation_steps();\r\n      }\r\n    }\r\n  },\r\n\r\n  //\r\n  // An event handler is like an event listener, but it registered\r\n  // by setting an IDL or content attribute like onload or onclick.\r\n  // There can only be one of these at a time for any event type.\r\n  // This is an internal method for the attribute accessors and\r\n  // content attribute handlers that need to register events handlers.\r\n  // The type argument is the same as in addEventListener().\r\n  // The handler argument is the same as listeners in addEventListener:\r\n  // it can be a function or an object. Pass null to remove any existing\r\n  // handler.  Handlers are always invoked before any listeners of\r\n  // the same type.  They are not invoked during the capturing phase\r\n  // of event dispatch.\r\n  //\r\n  _setEventHandler: function _setEventHandler(type, handler) {\r\n    if (!this._handlers) this._handlers = Object.create(null);\r\n    this._handlers[type] = handler;\r\n  },\r\n\r\n  _getEventHandler: function _getEventHandler(type) {\r\n    return (this._handlers && this._handlers[type]) || null;\r\n  }\r\n\r\n};\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nvar LinkedList = module.exports = {\r\n    // basic validity tests on a circular linked list a\r\n    valid: function(a) {\r\n        utils.assert(a, \"list falsy\");\r\n        utils.assert(a._previousSibling, \"previous falsy\");\r\n        utils.assert(a._nextSibling, \"next falsy\");\r\n        // xxx check that list is actually circular\r\n        return true;\r\n    },\r\n    // insert a before b\r\n    insertBefore: function(a, b) {\r\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\r\n        var a_first = a, a_last = a._previousSibling;\r\n        var b_first = b, b_last = b._previousSibling;\r\n        a_first._previousSibling = b_last;\r\n        a_last._nextSibling = b_first;\r\n        b_last._nextSibling = a_first;\r\n        b_first._previousSibling = a_last;\r\n        utils.assert(LinkedList.valid(a) && LinkedList.valid(b));\r\n    },\r\n    // replace a single node a with a list b (which could be null)\r\n    replace: function(a, b) {\r\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\r\n        if (b!==null) {\r\n            LinkedList.insertBefore(b, a);\r\n        }\r\n        LinkedList.remove(a);\r\n        utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b)));\r\n    },\r\n    // remove single node a from its list\r\n    remove: function(a) {\r\n        utils.assert(LinkedList.valid(a));\r\n        var prev = a._previousSibling;\r\n        if (prev === a) { return; }\r\n        var next = a._nextSibling;\r\n        prev._nextSibling = next;\r\n        next._previousSibling = prev;\r\n        a._previousSibling = a._nextSibling = a;\r\n        utils.assert(LinkedList.valid(a));\r\n    }\r\n};\r\n","\"use strict\";\r\nmodule.exports = {\r\n  // NOTE: The `serializeOne()` function used to live on the `Node.prototype`\r\n  // as a private method `Node#_serializeOne(child)`, however that requires\r\n  // a megamorphic property access `this._serializeOne` just to get to the\r\n  // method, and this is being done on lots of different `Node` subclasses,\r\n  // which puts a lot of pressure on V8's megamorphic stub cache. So by\r\n  // moving the helper off of the `Node.prototype` and into a separate\r\n  // function in this helper module, we get a monomorphic property access\r\n  // `NodeUtils.serializeOne` to get to the function and reduce pressure\r\n  // on the megamorphic stub cache.\r\n  // See https://github.com/fgnass/domino/pull/142 for more information.\r\n  serializeOne: serializeOne,\r\n\r\n  // Export util functions so that we can run extra test for them.\r\n  // Note: we prefix function names with `ɵ`, similar to what we do\r\n  // with internal functions in Angular packages.\r\n  ɵescapeMatchingClosingTag: escapeMatchingClosingTag,\r\n  ɵescapeClosingCommentTag: escapeClosingCommentTag,\r\n  ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent\r\n};\r\n\r\nvar utils = require('./utils');\r\nvar NAMESPACE = utils.NAMESPACE;\r\n\r\nvar hasRawContent = {\r\n  STYLE: true,\r\n  SCRIPT: true,\r\n  XMP: true,\r\n  IFRAME: true,\r\n  NOEMBED: true,\r\n  NOFRAMES: true,\r\n  PLAINTEXT: true\r\n};\r\n\r\nvar emptyElements = {\r\n  area: true,\r\n  base: true,\r\n  basefont: true,\r\n  bgsound: true,\r\n  br: true,\r\n  col: true,\r\n  embed: true,\r\n  frame: true,\r\n  hr: true,\r\n  img: true,\r\n  input: true,\r\n  keygen: true,\r\n  link: true,\r\n  meta: true,\r\n  param: true,\r\n  source: true,\r\n  track: true,\r\n  wbr: true\r\n};\r\n\r\nvar extraNewLine = {\r\n  /* Removed in https://github.com/whatwg/html/issues/944\r\n  pre: true,\r\n  textarea: true,\r\n  listing: true\r\n  */\r\n};\r\n\r\nconst ESCAPE_REGEXP = /[&<>\\u00A0]/g;\r\nconst ESCAPE_ATTR_REGEXP = /[&\"<>\\u00A0]/g;\r\n\r\nfunction escape(s) {\r\n  if (!ESCAPE_REGEXP.test(s)) {\r\n    // nothing to do, fast path\r\n    return s;\r\n  }\r\n\r\n  return s.replace(ESCAPE_REGEXP, (c) => {\r\n    switch (c) {\r\n      case \"&\":\r\n        return \"&amp;\";\r\n      case \"<\":\r\n        return \"&lt;\";\r\n      case \">\":\r\n        return \"&gt;\";\r\n      case \"\\u00A0\":\r\n        return \"&nbsp;\";\r\n    }\r\n  });\r\n}\r\n\r\nfunction escapeAttr(s) {\r\n  if (!ESCAPE_ATTR_REGEXP.test(s)) {\r\n    // nothing to do, fast path\r\n    return s;\r\n  }\r\n\r\n  return s.replace(ESCAPE_ATTR_REGEXP, (c) => {\r\n    switch (c) {\r\n      case \"<\":\r\n        return \"&lt;\";\r\n      case \">\":\r\n        return \"&gt;\";\r\n      case \"&\":\r\n        return \"&amp;\";\r\n      case '\"':\r\n        return \"&quot;\";\r\n      case \"\\u00A0\":\r\n        return \"&nbsp;\";\r\n    }\r\n  });\r\n}\r\n\r\nfunction attrname(a) {\r\n  var ns = a.namespaceURI;\r\n  if (!ns)\r\n    return a.localName;\r\n  if (ns === NAMESPACE.XML)\r\n    return 'xml:' + a.localName;\r\n  if (ns === NAMESPACE.XLINK)\r\n    return 'xlink:' + a.localName;\r\n\r\n  if (ns === NAMESPACE.XMLNS) {\r\n    if (a.localName === 'xmlns') return 'xmlns';\r\n    else return 'xmlns:' + a.localName;\r\n  }\r\n  return a.name;\r\n}\r\n\r\n/**\r\n * Escapes matching closing tag in a raw text.\r\n *\r\n * For example, given `<style>#text(</style><script></script>)</style>`,\r\n * the parent tag would by \"style\" and the raw text is\r\n * \"</style><script></script>\". If we come across a matching closing tag\r\n * (in out case `</style>`) - replace `<` with `&lt;` to avoid unexpected\r\n * and unsafe behavior after de-serialization.\r\n */\r\nfunction escapeMatchingClosingTag(rawText, parentTag) {\r\n  const parentClosingTag = '</' + parentTag;\r\n  if (!rawText.toLowerCase().includes(parentClosingTag)) {\r\n    return rawText; // fast path\r\n  }\r\n  const result = [...rawText];\r\n  const matches = rawText.matchAll(new RegExp(parentClosingTag, 'ig'));\r\n  for (const match of matches) {\r\n    result[match.index] = '&lt;';\r\n  }\r\n  return result.join('');\r\n}\r\n\r\nconst CLOSING_COMMENT_REGEXP = /--!?>/;\r\n\r\n/**\r\n * Escapes closing comment tag in a comment content.\r\n *\r\n * For example, given `#comment('-->')`, the content of a comment would be\r\n * updated to `--&gt;` to avoid unexpected and unsafe behavior after\r\n * de-serialization.\r\n */\r\nfunction escapeClosingCommentTag(rawContent) {\r\n  if (!CLOSING_COMMENT_REGEXP.test(rawContent)) {\r\n    return rawContent; // fast path\r\n  }\r\n  return rawContent.replace(/(--\\!?)>/g, '$1&gt;');\r\n}\r\n\r\n/**\r\n * Escapes processing instruction content by replacing `>` with `&gt`.\r\n */\r\nfunction escapeProcessingInstructionContent(rawContent) {\r\n  return rawContent.includes('>')\r\n    ? rawContent.replaceAll('>', '&gt;')\r\n    : rawContent;\r\n}\r\n\r\nfunction serializeOne(kid, parent) {\r\n  var s = '';\r\n  switch(kid.nodeType) {\r\n    case 1: //ELEMENT_NODE\r\n      var ns = kid.namespaceURI;\r\n      var html = ns === NAMESPACE.HTML;\r\n      var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName;\r\n\r\n      s += '<' + tagname;\r\n\r\n      for(var j = 0, k = kid._numattrs; j < k; j++) {\r\n        var a = kid._attr(j);\r\n        s += ' ' + attrname(a);\r\n        if (a.value !== undefined) s += '=\"' + escapeAttr(a.value) + '\"';\r\n      }\r\n      s += '>';\r\n\r\n      if (!(html && emptyElements[tagname])) {\r\n        var ss = kid.serialize();\r\n        // If an element can have raw content, this content may\r\n        // potentially require escaping to avoid XSS.\r\n        if (hasRawContent[tagname.toUpperCase()]) {\r\n          ss = escapeMatchingClosingTag(ss, tagname);\r\n        }\r\n        if (html && extraNewLine[tagname] && ss.charAt(0)==='\\n') s += '\\n';\r\n        // Serialize children and add end tag for all others\r\n        s += ss;\r\n        s += '</' + tagname + '>';\r\n      }\r\n      break;\r\n    case 3: //TEXT_NODE\r\n    case 4: //CDATA_SECTION_NODE\r\n      var parenttag;\r\n      if (parent.nodeType === 1 /*ELEMENT_NODE*/ &&\r\n        parent.namespaceURI === NAMESPACE.HTML)\r\n        parenttag = parent.tagName;\r\n      else\r\n        parenttag = '';\r\n\r\n      if (hasRawContent[parenttag] ||\r\n          (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) {\r\n        s += kid.data;\r\n      } else {\r\n        s += escape(kid.data);\r\n      }\r\n      break;\r\n    case 8: //COMMENT_NODE\r\n      s += '<!--' + escapeClosingCommentTag(kid.data) + '-->';\r\n      break;\r\n    case 7: //PROCESSING_INSTRUCTION_NODE\r\n      const content = escapeProcessingInstructionContent(kid.data);\r\n      s += '<?' + kid.target + ' ' + content + '?>';\r\n      break;\r\n    case 10: //DOCUMENT_TYPE_NODE\r\n      s += '<!DOCTYPE ' + kid.name;\r\n\r\n      if (false) {\r\n        // Latest HTML serialization spec omits the public/system ID\r\n        if (kid.publicID) {\r\n          s += ' PUBLIC \"' + kid.publicId + '\"';\r\n        }\r\n\r\n        if (kid.systemId) {\r\n          s += ' \"' + kid.systemId + '\"';\r\n        }\r\n      }\r\n\r\n      s += '>';\r\n      break;\r\n    default:\r\n      utils.InvalidStateError();\r\n  }\r\n  return s;\r\n}\r\n","\"use strict\";\r\nmodule.exports = Node;\r\n\r\nvar EventTarget = require('./EventTarget');\r\nvar LinkedList = require('./LinkedList');\r\nvar NodeUtils = require('./NodeUtils');\r\nvar utils = require('./utils');\r\n\r\n// All nodes have a nodeType and an ownerDocument.\r\n// Once inserted, they also have a parentNode.\r\n// This is an abstract class; all nodes in a document are instances\r\n// of a subtype, so all the properties are defined by more specific\r\n// constructors.\r\nfunction Node() {\r\n  EventTarget.call(this);\r\n  this.parentNode = null;\r\n  this._nextSibling = this._previousSibling = this;\r\n  this._index = undefined;\r\n}\r\n\r\nvar ELEMENT_NODE                = Node.ELEMENT_NODE = 1;\r\nvar ATTRIBUTE_NODE              = Node.ATTRIBUTE_NODE = 2;\r\nvar TEXT_NODE                   = Node.TEXT_NODE = 3;\r\nvar CDATA_SECTION_NODE          = Node.CDATA_SECTION_NODE = 4;\r\nvar ENTITY_REFERENCE_NODE       = Node.ENTITY_REFERENCE_NODE = 5;\r\nvar ENTITY_NODE                 = Node.ENTITY_NODE = 6;\r\nvar PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7;\r\nvar COMMENT_NODE                = Node.COMMENT_NODE = 8;\r\nvar DOCUMENT_NODE               = Node.DOCUMENT_NODE = 9;\r\nvar DOCUMENT_TYPE_NODE          = Node.DOCUMENT_TYPE_NODE = 10;\r\nvar DOCUMENT_FRAGMENT_NODE      = Node.DOCUMENT_FRAGMENT_NODE = 11;\r\nvar NOTATION_NODE               = Node.NOTATION_NODE = 12;\r\n\r\nvar DOCUMENT_POSITION_DISCONNECTED            = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;\r\nvar DOCUMENT_POSITION_PRECEDING               = Node.DOCUMENT_POSITION_PRECEDING = 0x02;\r\nvar DOCUMENT_POSITION_FOLLOWING               = Node.DOCUMENT_POSITION_FOLLOWING = 0x04;\r\nvar DOCUMENT_POSITION_CONTAINS                = Node.DOCUMENT_POSITION_CONTAINS = 0x08;\r\nvar DOCUMENT_POSITION_CONTAINED_BY            = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;\r\nvar DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;\r\n\r\nNode.prototype = Object.create(EventTarget.prototype, {\r\n\r\n  // Node that are not inserted into the tree inherit a null parent\r\n\r\n  // XXX: the baseURI attribute is defined by dom core, but\r\n  // a correct implementation of it requires HTML features, so\r\n  // we'll come back to this later.\r\n  baseURI: { get: utils.nyi },\r\n\r\n  parentElement: { get: function() {\r\n    return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null;\r\n  }},\r\n\r\n  hasChildNodes: { value: utils.shouldOverride },\r\n\r\n  firstChild: { get: utils.shouldOverride },\r\n\r\n  lastChild: { get: utils.shouldOverride },\r\n\r\n  isConnected: {\r\n    get: function () {\r\n      let node = this;\r\n      while (node != null) {\r\n        if (node.nodeType === Node.DOCUMENT_NODE) {\r\n          return true;\r\n        }\r\n\r\n        node = node.parentNode;\r\n        if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n          node = node.host;\r\n        }\r\n      }\r\n      return false;\r\n    },\r\n  },\r\n\r\n  previousSibling: { get: function() {\r\n    var parent = this.parentNode;\r\n    if (!parent) return null;\r\n    if (this === parent.firstChild) return null;\r\n    return this._previousSibling;\r\n  }},\r\n\r\n  nextSibling: { get: function() {\r\n    var parent = this.parentNode, next = this._nextSibling;\r\n    if (!parent) return null;\r\n    if (next === parent.firstChild) return null;\r\n    return next;\r\n  }},\r\n\r\n  textContent: {\r\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\r\n    get: function() { return null; },\r\n    set: function(v) { /* do nothing */ },\r\n  },\r\n\r\n  innerText: {\r\n    // Should override for DocumentFragment/Element/Attr/Text/PI/Comment\r\n    get: function() { return null; },\r\n    set: function(v) { /* do nothing */ },\r\n  },\r\n\r\n  _countChildrenOfType: { value: function(type) {\r\n    var sum = 0;\r\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n      if (kid.nodeType === type) sum++;\r\n    }\r\n    return sum;\r\n  }},\r\n\r\n  _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) {\r\n    var parent = this, i, kid;\r\n    if (!node.nodeType) throw new TypeError('not a node');\r\n    // 1. If parent is not a Document, DocumentFragment, or Element\r\n    // node, throw a HierarchyRequestError.\r\n    switch (parent.nodeType) {\r\n    case DOCUMENT_NODE:\r\n    case DOCUMENT_FRAGMENT_NODE:\r\n    case ELEMENT_NODE:\r\n      break;\r\n    default: utils.HierarchyRequestError();\r\n    }\r\n    // 2. If node is a host-including inclusive ancestor of parent,\r\n    // throw a HierarchyRequestError.\r\n    if (node.isAncestor(parent)) utils.HierarchyRequestError();\r\n    // 3. If child is not null and its parent is not parent, then\r\n    // throw a NotFoundError. (replaceChild omits the 'child is not null'\r\n    // and throws a TypeError here if child is null.)\r\n    if (child !== null || !isPreinsert) {\r\n      if (child.parentNode !== parent) utils.NotFoundError();\r\n    }\r\n    // 4. If node is not a DocumentFragment, DocumentType, Element,\r\n    // Text, ProcessingInstruction, or Comment node, throw a\r\n    // HierarchyRequestError.\r\n    switch (node.nodeType) {\r\n    case DOCUMENT_FRAGMENT_NODE:\r\n    case DOCUMENT_TYPE_NODE:\r\n    case ELEMENT_NODE:\r\n    case TEXT_NODE:\r\n    case PROCESSING_INSTRUCTION_NODE:\r\n    case COMMENT_NODE:\r\n      break;\r\n    default: utils.HierarchyRequestError();\r\n    }\r\n    // 5. If either node is a Text node and parent is a document, or\r\n    // node is a doctype and parent is not a document, throw a\r\n    // HierarchyRequestError.\r\n    // 6. If parent is a document, and any of the statements below, switched\r\n    // on node, are true, throw a HierarchyRequestError.\r\n    if (parent.nodeType === DOCUMENT_NODE) {\r\n      switch (node.nodeType) {\r\n      case TEXT_NODE:\r\n        utils.HierarchyRequestError();\r\n        break;\r\n      case DOCUMENT_FRAGMENT_NODE:\r\n        // 6a1. If node has more than one element child or has a Text\r\n        // node child.\r\n        if (node._countChildrenOfType(TEXT_NODE) > 0)\r\n          utils.HierarchyRequestError();\r\n        switch (node._countChildrenOfType(ELEMENT_NODE)) {\r\n        case 0:\r\n          break;\r\n        case 1:\r\n          // 6a2. Otherwise, if node has one element child and either\r\n          // parent has an element child, child is a doctype, or child\r\n          // is not null and a doctype is following child. [preinsert]\r\n          // 6a2. Otherwise, if node has one element child and either\r\n          // parent has an element child that is not child or a\r\n          // doctype is following child. [replaceWith]\r\n          if (child !== null /* always true here for replaceWith */) {\r\n            if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\r\n              utils.HierarchyRequestError();\r\n            for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n              if (kid.nodeType === DOCUMENT_TYPE_NODE)\r\n                utils.HierarchyRequestError();\r\n            }\r\n          }\r\n          i = parent._countChildrenOfType(ELEMENT_NODE);\r\n          if (isPreinsert) {\r\n            // \"parent has an element child\"\r\n            if (i > 0)\r\n              utils.HierarchyRequestError();\r\n          } else {\r\n            // \"parent has an element child that is not child\"\r\n            if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\r\n              utils.HierarchyRequestError();\r\n          }\r\n          break;\r\n        default: // 6a1, continued. (more than one Element child)\r\n          utils.HierarchyRequestError();\r\n        }\r\n        break;\r\n      case ELEMENT_NODE:\r\n        // 6b. parent has an element child, child is a doctype, or\r\n        // child is not null and a doctype is following child. [preinsert]\r\n        // 6b. parent has an element child that is not child or a\r\n        // doctype is following child. [replaceWith]\r\n        if (child !== null /* always true here for replaceWith */) {\r\n          if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE)\r\n            utils.HierarchyRequestError();\r\n          for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n            if (kid.nodeType === DOCUMENT_TYPE_NODE)\r\n              utils.HierarchyRequestError();\r\n          }\r\n        }\r\n        i = parent._countChildrenOfType(ELEMENT_NODE);\r\n        if (isPreinsert) {\r\n          // \"parent has an element child\"\r\n          if (i > 0)\r\n            utils.HierarchyRequestError();\r\n        } else {\r\n          // \"parent has an element child that is not child\"\r\n          if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE))\r\n            utils.HierarchyRequestError();\r\n        }\r\n        break;\r\n      case DOCUMENT_TYPE_NODE:\r\n        // 6c. parent has a doctype child, child is non-null and an\r\n        // element is preceding child, or child is null and parent has\r\n        // an element child. [preinsert]\r\n        // 6c. parent has a doctype child that is not child, or an\r\n        // element is preceding child. [replaceWith]\r\n        if (child === null) {\r\n          if (parent._countChildrenOfType(ELEMENT_NODE))\r\n            utils.HierarchyRequestError();\r\n        } else {\r\n          // child is always non-null for [replaceWith] case\r\n          for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\r\n            if (kid === child) break;\r\n            if (kid.nodeType === ELEMENT_NODE)\r\n              utils.HierarchyRequestError();\r\n          }\r\n        }\r\n        i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE);\r\n        if (isPreinsert) {\r\n          // \"parent has an doctype child\"\r\n          if (i > 0)\r\n            utils.HierarchyRequestError();\r\n        } else {\r\n          // \"parent has an doctype child that is not child\"\r\n          if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE))\r\n            utils.HierarchyRequestError();\r\n        }\r\n        break;\r\n      }\r\n    } else {\r\n      // 5, continued: (parent is not a document)\r\n      if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError();\r\n    }\r\n  }},\r\n\r\n  insertBefore: { value: function insertBefore(node, child) {\r\n    var parent = this;\r\n    // 1. Ensure pre-insertion validity\r\n    parent._ensureInsertValid(node, child, true);\r\n    // 2. Let reference child be child.\r\n    var refChild = child;\r\n    // 3. If reference child is node, set it to node's next sibling\r\n    if (refChild === node) { refChild = node.nextSibling; }\r\n    // 4. Adopt node into parent's node document.\r\n    parent.doc.adoptNode(node);\r\n    // 5. Insert node into parent before reference child.\r\n    node._insertOrReplace(parent, refChild, false);\r\n    // 6. Return node\r\n    return node;\r\n  }},\r\n\r\n\r\n  appendChild: { value: function(child) {\r\n    // This invokes _appendChild after doing validity checks.\r\n    return this.insertBefore(child, null);\r\n  }},\r\n\r\n  _appendChild: { value: function(child) {\r\n    child._insertOrReplace(this, null, false);\r\n  }},\r\n\r\n  removeChild: { value: function removeChild(child) {\r\n    var parent = this;\r\n    if (!child.nodeType) throw new TypeError('not a node');\r\n    if (child.parentNode !== parent) utils.NotFoundError();\r\n    child.remove();\r\n    return child;\r\n  }},\r\n\r\n  // To replace a `child` with `node` within a `parent` (this)\r\n  replaceChild: { value: function replaceChild(node, child) {\r\n    var parent = this;\r\n    // Ensure validity (slight differences from pre-insertion check)\r\n    parent._ensureInsertValid(node, child, false);\r\n    // Adopt node into parent's node document.\r\n    if (node.doc !== parent.doc) {\r\n      // XXX adoptNode has side-effect of removing node from its parent\r\n      // and generating a mutation event, thus causing the _insertOrReplace\r\n      // to generate two deletes and an insert instead of a 'move'\r\n      // event.  It looks like the new MutationObserver stuff avoids\r\n      // this problem, but for now let's only adopt (ie, remove `node`\r\n      // from its parent) here if we need to.\r\n      parent.doc.adoptNode(node);\r\n    }\r\n    // Do the replace.\r\n    node._insertOrReplace(parent, child, true);\r\n    return child;\r\n  }},\r\n\r\n  // See: http://ejohn.org/blog/comparing-document-position/\r\n  contains: { value: function contains(node) {\r\n    if (node === null) { return false; }\r\n    if (this === node) { return true; /* inclusive descendant */ }\r\n    /* jshint bitwise: false */\r\n    return (this.compareDocumentPosition(node) &\r\n            DOCUMENT_POSITION_CONTAINED_BY) !== 0;\r\n  }},\r\n\r\n  compareDocumentPosition: { value: function compareDocumentPosition(that){\r\n    // Basic algorithm for finding the relative position of two nodes.\r\n    // Make a list the ancestors of each node, starting with the\r\n    // document element and proceeding down to the nodes themselves.\r\n    // Then, loop through the lists, looking for the first element\r\n    // that differs.  The order of those two elements give the\r\n    // order of their descendant nodes.  Or, if one list is a prefix\r\n    // of the other one, then that node contains the other.\r\n\r\n    if (this === that) return 0;\r\n\r\n    // If they're not owned by the same document or if one is rooted\r\n    // and one is not, then they're disconnected.\r\n    if (this.doc !== that.doc ||\r\n      this.rooted !== that.rooted)\r\n      return (DOCUMENT_POSITION_DISCONNECTED +\r\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\r\n\r\n    // Get arrays of ancestors for this and that\r\n    var these = [], those = [];\r\n    for(var n = this; n !== null; n = n.parentNode) these.push(n);\r\n    for(n = that; n !== null; n = n.parentNode) those.push(n);\r\n    these.reverse();  // So we start with the outermost\r\n    those.reverse();\r\n\r\n    if (these[0] !== those[0]) // No common ancestor\r\n      return (DOCUMENT_POSITION_DISCONNECTED +\r\n          DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC);\r\n\r\n    n = Math.min(these.length, those.length);\r\n    for(var i = 1; i < n; i++) {\r\n      if (these[i] !== those[i]) {\r\n        // We found two different ancestors, so compare\r\n        // their positions\r\n        if (these[i].index < those[i].index)\r\n          return DOCUMENT_POSITION_FOLLOWING;\r\n        else\r\n          return DOCUMENT_POSITION_PRECEDING;\r\n      }\r\n    }\r\n\r\n    // If we get to here, then one of the nodes (the one with the\r\n    // shorter list of ancestors) contains the other one.\r\n    if (these.length < those.length)\r\n      return (DOCUMENT_POSITION_FOLLOWING +\r\n          DOCUMENT_POSITION_CONTAINED_BY);\r\n    else\r\n      return (DOCUMENT_POSITION_PRECEDING +\r\n          DOCUMENT_POSITION_CONTAINS);\r\n  }},\r\n\r\n  isSameNode: {value : function isSameNode(node) {\r\n    return this === node;\r\n  }},\r\n\r\n\r\n  // This method implements the generic parts of node equality testing\r\n  // and defers to the (non-recursive) type-specific isEqual() method\r\n  // defined by subclasses\r\n  isEqualNode: { value: function isEqualNode(node) {\r\n    if (!node) return false;\r\n    if (node.nodeType !== this.nodeType) return false;\r\n\r\n    // Check type-specific properties for equality\r\n    if (!this.isEqual(node)) return false;\r\n\r\n    // Now check children for number and equality\r\n    for (var c1 = this.firstChild, c2 = node.firstChild;\r\n         c1 && c2;\r\n         c1 = c1.nextSibling, c2 = c2.nextSibling) {\r\n      if (!c1.isEqualNode(c2)) return false;\r\n    }\r\n    return c1 === null && c2 === null;\r\n  }},\r\n\r\n  // This method delegates shallow cloning to a clone() method\r\n  // that each concrete subclass must implement\r\n  cloneNode: { value: function(deep) {\r\n    // Clone this node\r\n    var clone = this.clone();\r\n\r\n    // Handle the recursive case if necessary\r\n    if (deep) {\r\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n        clone._appendChild(kid.cloneNode(true));\r\n      }\r\n    }\r\n\r\n    return clone;\r\n  }},\r\n\r\n  lookupPrefix: { value: function lookupPrefix(ns) {\r\n    var e;\r\n    if (ns === '' || ns === null || ns === undefined) return null;\r\n    switch(this.nodeType) {\r\n    case ELEMENT_NODE:\r\n      return this._lookupNamespacePrefix(ns, this);\r\n    case DOCUMENT_NODE:\r\n      e = this.documentElement;\r\n      return e ? e.lookupPrefix(ns) : null;\r\n    case ENTITY_NODE:\r\n    case NOTATION_NODE:\r\n    case DOCUMENT_FRAGMENT_NODE:\r\n    case DOCUMENT_TYPE_NODE:\r\n      return null;\r\n    case ATTRIBUTE_NODE:\r\n      e = this.ownerElement;\r\n      return e ? e.lookupPrefix(ns) : null;\r\n    default:\r\n      e = this.parentElement;\r\n      return e ? e.lookupPrefix(ns) : null;\r\n    }\r\n  }},\r\n\r\n\r\n  lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) {\r\n    if (prefix === '' || prefix === undefined) { prefix = null; }\r\n    var e;\r\n    switch(this.nodeType) {\r\n    case ELEMENT_NODE:\r\n      return utils.shouldOverride();\r\n    case DOCUMENT_NODE:\r\n      e = this.documentElement;\r\n      return e ? e.lookupNamespaceURI(prefix) : null;\r\n    case ENTITY_NODE:\r\n    case NOTATION_NODE:\r\n    case DOCUMENT_TYPE_NODE:\r\n    case DOCUMENT_FRAGMENT_NODE:\r\n      return null;\r\n    case ATTRIBUTE_NODE:\r\n      e = this.ownerElement;\r\n      return e ? e.lookupNamespaceURI(prefix) : null;\r\n    default:\r\n      e = this.parentElement;\r\n      return e ? e.lookupNamespaceURI(prefix) : null;\r\n    }\r\n  }},\r\n\r\n  isDefaultNamespace: { value: function isDefaultNamespace(ns) {\r\n    if (ns === '' || ns === undefined) { ns = null; }\r\n    var defaultNamespace = this.lookupNamespaceURI(null);\r\n    return (defaultNamespace === ns);\r\n  }},\r\n\r\n  // Utility methods for nodes.  Not part of the DOM\r\n\r\n  // Return the index of this node in its parent.\r\n  // Throw if no parent, or if this node is not a child of its parent\r\n  index: { get: function() {\r\n    var parent = this.parentNode;\r\n    if (this === parent.firstChild) return 0; // fast case\r\n    var kids = parent.childNodes;\r\n    if (this._index === undefined || kids[this._index] !== this) {\r\n      // Ensure that we don't have an O(N^2) blowup if none of the\r\n      // kids have defined indices yet and we're traversing via\r\n      // nextSibling or previousSibling\r\n      for (var i=0; i<kids.length; i++) {\r\n        kids[i]._index = i;\r\n      }\r\n      utils.assert(kids[this._index] === this);\r\n    }\r\n    return this._index;\r\n  }},\r\n\r\n  // Return true if this node is equal to or is an ancestor of that node\r\n  // Note that nodes are considered to be ancestors of themselves\r\n  isAncestor: { value: function(that) {\r\n    // If they belong to different documents, then they're unrelated.\r\n    if (this.doc !== that.doc) return false;\r\n    // If one is rooted and one isn't then they're not related\r\n    if (this.rooted !== that.rooted) return false;\r\n\r\n    // Otherwise check by traversing the parentNode chain\r\n    for(var e = that; e; e = e.parentNode) {\r\n      if (e === this) return true;\r\n    }\r\n    return false;\r\n  }},\r\n\r\n  // DOMINO Changed the behavior to conform with the specs. See:\r\n  // https://groups.google.com/d/topic/mozilla.dev.platform/77sIYcpdDmc/discussion\r\n  ensureSameDoc: { value: function(that) {\r\n    if (that.ownerDocument === null) {\r\n      that.ownerDocument = this.doc;\r\n    }\r\n    else if(that.ownerDocument !== this.doc) {\r\n      utils.WrongDocumentError();\r\n    }\r\n  }},\r\n\r\n  removeChildren: { value: utils.shouldOverride },\r\n\r\n  // Insert this node as a child of parent before the specified child,\r\n  // or insert as the last child of parent if specified child is null,\r\n  // or replace the specified child with this node, firing mutation events as\r\n  // necessary\r\n  _insertOrReplace: { value: function _insertOrReplace(parent, before, isReplace) {\r\n    var child = this, before_index, i;\r\n\r\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE && child.rooted) {\r\n      utils.HierarchyRequestError();\r\n    }\r\n\r\n    /* Ensure index of `before` is cached before we (possibly) remove it. */\r\n    if (parent._childNodes) {\r\n      before_index = (before === null) ? parent._childNodes.length :\r\n        before.index; /* ensure _index is cached */\r\n\r\n      // If we are already a child of the specified parent, then\r\n      // the index may have to be adjusted.\r\n      if (child.parentNode === parent) {\r\n        var child_index = child.index;\r\n        // If the child is before the spot it is to be inserted at,\r\n        // then when it is removed, the index of that spot will be\r\n        // reduced.\r\n        if (child_index < before_index) {\r\n          before_index--;\r\n        }\r\n      }\r\n    }\r\n\r\n    // Delete the old child\r\n    if (isReplace) {\r\n      if (before.rooted) before.doc.mutateRemove(before);\r\n      before.parentNode = null;\r\n    }\r\n\r\n    var n = before;\r\n    if (n === null) { n = parent.firstChild; }\r\n\r\n    // If both the child and the parent are rooted, then we want to\r\n    // transplant the child without uprooting and rerooting it.\r\n    var bothRooted = child.rooted && parent.rooted;\r\n    if (child.nodeType === DOCUMENT_FRAGMENT_NODE) {\r\n      var spliceArgs = [0, isReplace ? 1 : 0], next;\r\n      for (var kid = child.firstChild; kid !== null; kid = next) {\r\n        next = kid.nextSibling;\r\n        spliceArgs.push(kid);\r\n        kid.parentNode = parent;\r\n      }\r\n      var len = spliceArgs.length;\r\n      // Add all nodes to the new parent, overwriting the old child\r\n      if (isReplace) {\r\n        LinkedList.replace(n, len > 2 ? spliceArgs[2] : null);\r\n      } else if (len > 2 && n !== null) {\r\n        LinkedList.insertBefore(spliceArgs[2], n);\r\n      }\r\n      if (parent._childNodes) {\r\n        spliceArgs[0] = (before === null) ?\r\n          parent._childNodes.length : before._index;\r\n        parent._childNodes.splice.apply(parent._childNodes, spliceArgs);\r\n        for (i=2; i<len; i++) {\r\n          spliceArgs[i]._index = spliceArgs[0] + (i - 2);\r\n        }\r\n      } else if (parent._firstChild === before) {\r\n        if (len > 2) {\r\n          parent._firstChild = spliceArgs[2];\r\n        } else if (isReplace) {\r\n          parent._firstChild = null;\r\n        }\r\n      }\r\n      // Remove all nodes from the document fragment\r\n      if (child._childNodes) {\r\n        child._childNodes.length = 0;\r\n      } else {\r\n        child._firstChild = null;\r\n      }\r\n      // Call the mutation handlers\r\n      // Use spliceArgs since the original array has been destroyed. The\r\n      // liveness guarantee requires us to clone the array so that\r\n      // references to the childNodes of the DocumentFragment will be empty\r\n      // when the insertion handlers are called.\r\n      if (parent.rooted) {\r\n        parent.modify();\r\n        for (i = 2; i < len; i++) {\r\n          parent.doc.mutateInsert(spliceArgs[i]);\r\n        }\r\n      }\r\n    } else {\r\n      if (before === child) { return; }\r\n      if (bothRooted) {\r\n        // Remove the child from its current position in the tree\r\n        // without calling remove(), since we don't want to uproot it.\r\n        child._remove();\r\n      } else if (child.parentNode) {\r\n        child.remove();\r\n      }\r\n\r\n      // Insert it as a child of its new parent\r\n      child.parentNode = parent;\r\n      if (isReplace) {\r\n        LinkedList.replace(n, child);\r\n        if (parent._childNodes) {\r\n          child._index = before_index;\r\n          parent._childNodes[before_index] = child;\r\n        } else if (parent._firstChild === before) {\r\n          parent._firstChild = child;\r\n        }\r\n      } else {\r\n        if (n !== null) {\r\n          LinkedList.insertBefore(child, n);\r\n        }\r\n        if (parent._childNodes) {\r\n          child._index = before_index;\r\n          parent._childNodes.splice(before_index, 0, child);\r\n        } else if (parent._firstChild === before) {\r\n          parent._firstChild = child;\r\n        }\r\n      }\r\n      if (bothRooted) {\r\n        parent.modify();\r\n        // Generate a move mutation event\r\n        parent.doc.mutateMove(child);\r\n      } else if (parent.rooted) {\r\n        parent.modify();\r\n        parent.doc.mutateInsert(child);\r\n      }\r\n    }\r\n  }},\r\n\r\n\r\n  // Return the lastModTime value for this node. (For use as a\r\n  // cache invalidation mechanism. If the node does not already\r\n  // have one, initialize it from the owner document's modclock\r\n  // property. (Note that modclock does not return the actual\r\n  // time; it is simply a counter incremented on each document\r\n  // modification)\r\n  lastModTime: { get: function() {\r\n    if (!this._lastModTime) {\r\n      this._lastModTime = this.doc.modclock;\r\n    }\r\n    return this._lastModTime;\r\n  }},\r\n\r\n  // Increment the owner document's modclock and use the new\r\n  // value to update the lastModTime value for this node and\r\n  // all of its ancestors. Nodes that have never had their\r\n  // lastModTime value queried do not need to have a\r\n  // lastModTime property set on them since there is no\r\n  // previously queried value to ever compare the new value\r\n  // against, so only update nodes that already have a\r\n  // _lastModTime property.\r\n  modify: { value: function() {\r\n    if (this.doc.modclock) { // Skip while doc.modclock == 0\r\n      var time = ++this.doc.modclock;\r\n      for(var n = this; n; n = n.parentElement) {\r\n        if (n._lastModTime) {\r\n          n._lastModTime = time;\r\n        }\r\n      }\r\n    }\r\n  }},\r\n\r\n  // This attribute is not part of the DOM but is quite helpful.\r\n  // It returns the document with which a node is associated.  Usually\r\n  // this is the ownerDocument. But ownerDocument is null for the\r\n  // document object itself, so this is a handy way to get the document\r\n  // regardless of the node type\r\n  doc: { get: function() {\r\n    return this.ownerDocument || this;\r\n  }},\r\n\r\n\r\n  // If the node has a nid (node id), then it is rooted in a document\r\n  rooted: { get: function() {\r\n    return !!this._nid;\r\n  }},\r\n\r\n  normalize: { value: function() {\r\n    var next;\r\n    for (var child=this.firstChild; child !== null; child=next) {\r\n      next = child.nextSibling;\r\n\r\n      if (child.normalize) {\r\n        child.normalize();\r\n      }\r\n\r\n      if (child.nodeType !== Node.TEXT_NODE) {\r\n        continue;\r\n      }\r\n\r\n      if (child.nodeValue === \"\") {\r\n        this.removeChild(child);\r\n        continue;\r\n      }\r\n\r\n      var prevChild = child.previousSibling;\r\n      if (prevChild === null) {\r\n        continue;\r\n      } else if (prevChild.nodeType === Node.TEXT_NODE) {\r\n        // merge this with previous and remove the child\r\n        prevChild.appendData(child.nodeValue);\r\n        this.removeChild(child);\r\n      }\r\n    }\r\n  }},\r\n\r\n  // Convert the children of a node to an HTML string.\r\n  // This is used by the innerHTML getter\r\n  // The serialization spec is at:\r\n  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments\r\n  //\r\n  // The serialization logic is intentionally implemented in a separate\r\n  // `NodeUtils` helper instead of the more obvious choice of a private\r\n  // `_serializeOne()` method on the `Node.prototype` in order to avoid\r\n  // the megamorphic `this._serializeOne` property access, which reduces\r\n  // performance unnecessarily. If you need specialized behavior for a\r\n  // certain subclass, you'll need to implement that in `NodeUtils`.\r\n  // See https://github.com/fgnass/domino/pull/142 for more information.\r\n  serialize: { value: function() {\r\n    if (this._innerHTML) {\r\n      return this._innerHTML;\r\n    }\r\n    var s = '';\r\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n      s += NodeUtils.serializeOne(kid, this);\r\n    }\r\n    return s;\r\n  }},\r\n\r\n  // Non-standard, but often useful for debugging.\r\n  outerHTML: {\r\n    get: function() {\r\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\r\n    },\r\n    set: utils.nyi,\r\n  },\r\n\r\n  // mirror node type properties in the prototype, so they are present\r\n  // in instances of Node (and subclasses)\r\n  ELEMENT_NODE:                { value: ELEMENT_NODE },\r\n  ATTRIBUTE_NODE:              { value: ATTRIBUTE_NODE },\r\n  TEXT_NODE:                   { value: TEXT_NODE },\r\n  CDATA_SECTION_NODE:          { value: CDATA_SECTION_NODE },\r\n  ENTITY_REFERENCE_NODE:       { value: ENTITY_REFERENCE_NODE },\r\n  ENTITY_NODE:                 { value: ENTITY_NODE },\r\n  PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE },\r\n  COMMENT_NODE:                { value: COMMENT_NODE },\r\n  DOCUMENT_NODE:               { value: DOCUMENT_NODE },\r\n  DOCUMENT_TYPE_NODE:          { value: DOCUMENT_TYPE_NODE },\r\n  DOCUMENT_FRAGMENT_NODE:      { value: DOCUMENT_FRAGMENT_NODE },\r\n  NOTATION_NODE:               { value: NOTATION_NODE },\r\n\r\n  DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED },\r\n  DOCUMENT_POSITION_PRECEDING:    { value: DOCUMENT_POSITION_PRECEDING },\r\n  DOCUMENT_POSITION_FOLLOWING:    { value: DOCUMENT_POSITION_FOLLOWING },\r\n  DOCUMENT_POSITION_CONTAINS:     { value: DOCUMENT_POSITION_CONTAINS },\r\n  DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY },\r\n  DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC },\r\n});\r\n","/* jshint esversion: 6 */\r\n\"use strict\";\r\n\r\nmodule.exports = class NodeList extends Array {\r\n    constructor(a) {\r\n        super((a && a.length) || 0);\r\n        if (a) {\r\n            for (var idx in a) { this[idx] = a[idx]; }\r\n        }\r\n    }\r\n    item(i) { return this[i] || null; }\r\n};\r\n","\"use strict\";\r\n\r\n// No support for subclassing array, return an actual Array object.\r\nfunction item(i) {\r\n    /* jshint validthis: true */\r\n    return this[i] || null;\r\n}\r\n\r\nfunction NodeList(a) {\r\n    if (!a) a = [];\r\n    a.item = item;\r\n    return a;\r\n}\r\n\r\nmodule.exports = NodeList;\r\n","\"use strict\";\r\n\r\nvar NodeList;\r\n\r\ntry {\r\n    // Attempt to use ES6-style Array subclass if possible.\r\n    NodeList = require('./NodeList.es6.js');\r\n} catch (e) {\r\n    // No support for subclassing array, return an actual Array object.\r\n    NodeList = require('./NodeList.es5.js');\r\n}\r\n\r\nmodule.exports = NodeList;\r\n","\"use strict\";\r\nmodule.exports = ContainerNode;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\n\r\n// This class defines common functionality for node subtypes that\r\n// can have children\r\n\r\nfunction ContainerNode() {\r\n  Node.call(this);\r\n  this._firstChild = this._childNodes = null;\r\n}\r\n\r\n// Primary representation is a circular linked list of siblings\r\nContainerNode.prototype = Object.create(Node.prototype, {\r\n\r\n  hasChildNodes: { value: function() {\r\n    if (this._childNodes) {\r\n      return this._childNodes.length > 0;\r\n    }\r\n    return this._firstChild !== null;\r\n  }},\r\n\r\n  childNodes: { get: function() {\r\n    this._ensureChildNodes();\r\n    return this._childNodes;\r\n  }},\r\n\r\n  firstChild: { get: function() {\r\n    if (this._childNodes) {\r\n      return this._childNodes.length === 0 ? null : this._childNodes[0];\r\n    }\r\n    return this._firstChild;\r\n  }},\r\n\r\n  lastChild: { get: function() {\r\n    var kids = this._childNodes, first;\r\n    if (kids) {\r\n      return kids.length === 0 ? null: kids[kids.length-1];\r\n    }\r\n    first = this._firstChild;\r\n    if (first === null) { return null; }\r\n    return first._previousSibling; // circular linked list\r\n  }},\r\n\r\n  _ensureChildNodes: { value: function() {\r\n    if (this._childNodes) { return; }\r\n    var first = this._firstChild,\r\n        kid = first,\r\n        childNodes = this._childNodes = new NodeList();\r\n    if (first) do {\r\n      childNodes.push(kid);\r\n      kid = kid._nextSibling;\r\n    } while (kid !== first); // circular linked list\r\n    this._firstChild = null; // free memory\r\n  }},\r\n\r\n  // Remove all of this node's children.  This is a minor\r\n  // optimization that only calls modify() once.\r\n  removeChildren: { value: function removeChildren() {\r\n    var root = this.rooted ? this.ownerDocument : null,\r\n        next = this.firstChild,\r\n        kid;\r\n    while (next !== null) {\r\n      kid = next;\r\n      next = kid.nextSibling;\r\n\r\n      if (root) root.mutateRemove(kid);\r\n      kid.parentNode = null;\r\n    }\r\n    if (this._childNodes) {\r\n      this._childNodes.length = 0;\r\n    } else {\r\n      this._firstChild = null;\r\n    }\r\n    this.modify(); // Update last modified type once only\r\n  }},\r\n\r\n});\r\n","\"use strict\";\r\n// This grammar is from the XML and XML Namespace specs. It specifies whether\r\n// a string (such as an element or attribute name) is a valid Name or QName.\r\n//\r\n// Name           ::= NameStartChar (NameChar)*\r\n// NameStartChar  ::= \":\" | [A-Z] | \"_\" | [a-z] |\r\n//                    [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] |\r\n//                    [#x370-#x37D] | [#x37F-#x1FFF] |\r\n//                    [#x200C-#x200D] | [#x2070-#x218F] |\r\n//                    [#x2C00-#x2FEF] | [#x3001-#xD7FF] |\r\n//                    [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |\r\n//                    [#x10000-#xEFFFF]\r\n//\r\n// NameChar       ::= NameStartChar | \"-\" | \".\" | [0-9] |\r\n//                    #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\r\n//\r\n// QName          ::= PrefixedName| UnprefixedName\r\n// PrefixedName   ::= Prefix ':' LocalPart\r\n// UnprefixedName ::= LocalPart\r\n// Prefix         ::= NCName\r\n// LocalPart      ::= NCName\r\n// NCName         ::= Name - (Char* ':' Char*)\r\n//                    # An XML Name, minus the \":\"\r\n//\r\n\r\nexports.isValidName = isValidName;\r\nexports.isValidQName = isValidQName;\r\n\r\n// Most names will be ASCII only. Try matching against simple regexps first\r\nvar simplename = /^[_:A-Za-z][-.:\\w]+$/;\r\nvar simpleqname = /^([_A-Za-z][-.\\w]+|[_A-Za-z][-.\\w]+:[_A-Za-z][-.\\w]+)$/;\r\n\r\n// If the regular expressions above fail, try more complex ones that work\r\n// for any identifiers using codepoints from the Unicode BMP\r\nvar ncnamestartchars = \"_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\r\nvar ncnamechars = \"-._A-Za-z0-9\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0300-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203f\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\";\r\n\r\nvar ncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\r\nvar namestartchars = ncnamestartchars + \":\";\r\nvar namechars = ncnamechars + \":\";\r\nvar name = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\r\nvar qname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\r\n\r\n// XML says that these characters are also legal:\r\n// [#x10000-#xEFFFF].  So if the patterns above fail, and the\r\n// target string includes surrogates, then try the following\r\n// patterns that allow surrogates and then run an extra validation\r\n// step to make sure that the surrogates are in valid pairs and in\r\n// the right range.  Note that since the characters \\uf0000 to \\u1f0000\r\n// are not allowed, it means that the high surrogate can only go up to\r\n// \\uDB7f instead of \\uDBFF.\r\nvar hassurrogates = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/;\r\nvar surrogatechars = /[\\uD800-\\uDB7F\\uDC00-\\uDFFF]/g;\r\nvar surrogatepairs = /[\\uD800-\\uDB7F][\\uDC00-\\uDFFF]/g;\r\n\r\n// Modify the variables above to allow surrogates\r\nncnamestartchars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\r\nncnamechars += \"\\uD800-\\uDB7F\\uDC00-\\uDFFF\";\r\nncname = \"[\" + ncnamestartchars + \"][\" + ncnamechars + \"]*\";\r\nnamestartchars = ncnamestartchars + \":\";\r\nnamechars = ncnamechars + \":\";\r\n\r\n// Build another set of regexps that include surrogates\r\nvar surrogatename = new RegExp(\"^[\" + namestartchars + \"]\" + \"[\" + namechars + \"]*$\");\r\nvar surrogateqname = new RegExp(\"^(\" + ncname + \"|\" + ncname + \":\" + ncname + \")$\");\r\n\r\nfunction isValidName(s) {\r\n  if (simplename.test(s)) return true; // Plain ASCII\r\n  if (name.test(s)) return true; // Unicode BMP\r\n\r\n  // Maybe the tests above failed because s includes surrogate pairs\r\n  // Most likely, though, they failed for some more basic syntax problem\r\n  if (!hassurrogates.test(s)) return false;\r\n\r\n  // Is the string a valid name if we allow surrogates?\r\n  if (!surrogatename.test(s)) return false;\r\n\r\n  // Finally, are the surrogates all correctly paired up?\r\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\r\n  return pairs !== null && 2*pairs.length === chars.length;\r\n}\r\n\r\nfunction isValidQName(s) {\r\n  if (simpleqname.test(s)) return true; // Plain ASCII\r\n  if (qname.test(s)) return true; // Unicode BMP\r\n\r\n  if (!hassurrogates.test(s)) return false;\r\n  if (!surrogateqname.test(s)) return false;\r\n  var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs);\r\n  return pairs !== null && 2*pairs.length === chars.length;\r\n}\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nexports.property = function(attr) {\r\n  if (Array.isArray(attr.type)) {\r\n    var valid = Object.create(null);\r\n    attr.type.forEach(function(val) {\r\n      valid[val.value || val] = val.alias || val;\r\n    });\r\n    var missingValueDefault = attr.missing;\r\n    if (missingValueDefault===undefined) { missingValueDefault = null; }\r\n    var invalidValueDefault = attr.invalid;\r\n    if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; }\r\n    return {\r\n      get: function() {\r\n        var v = this._getattr(attr.name);\r\n        if (v === null) return missingValueDefault;\r\n\r\n        v = valid[v.toLowerCase()];\r\n        if (v !== undefined) return v;\r\n        if (invalidValueDefault !== null) return invalidValueDefault;\r\n        return v;\r\n      },\r\n      set: function(v) {\r\n        this._setattr(attr.name, v);\r\n      }\r\n    };\r\n  }\r\n  else if (attr.type === Boolean) {\r\n    return {\r\n      get: function() {\r\n        return this.hasAttribute(attr.name);\r\n      },\r\n      set: function(v) {\r\n        if (v) {\r\n          this._setattr(attr.name, '');\r\n        }\r\n        else {\r\n          this.removeAttribute(attr.name);\r\n        }\r\n      }\r\n    };\r\n  }\r\n  else if (attr.type === Number ||\r\n           attr.type === \"long\" ||\r\n           attr.type === \"unsigned long\" ||\r\n           attr.type === \"limited unsigned long with fallback\") {\r\n    return numberPropDesc(attr);\r\n  }\r\n  else if (!attr.type || attr.type === String) {\r\n    return {\r\n      get: function() { return this._getattr(attr.name) || ''; },\r\n      set: function(v) {\r\n        if (attr.treatNullAsEmptyString && v === null) { v = ''; }\r\n        this._setattr(attr.name, v);\r\n      }\r\n    };\r\n  }\r\n  else if (typeof attr.type === 'function') {\r\n    return attr.type(attr.name, attr);\r\n  }\r\n  throw new Error('Invalid attribute definition');\r\n};\r\n\r\n// See http://www.whatwg.org/specs/web-apps/current-work/#reflect\r\n//\r\n// defval is the default value. If it is a function, then that function\r\n// will be invoked as a method of the element to obtain the default.\r\n// If no default is specified for a given attribute, then the default\r\n// depends on the type of the attribute, but since this function handles\r\n// 4 integer cases, you must specify the default value in each call\r\n//\r\n// min and max define a valid range for getting the attribute.\r\n//\r\n// setmin defines a minimum value when setting.  If the value is less\r\n// than that, then throw INDEX_SIZE_ERR.\r\n//\r\n// Conveniently, JavaScript's parseInt function appears to be\r\n// compatible with HTML's 'rules for parsing integers'\r\nfunction numberPropDesc(a) {\r\n  var def;\r\n  if(typeof a.default === 'function') {\r\n    def = a.default;\r\n  }\r\n  else if(typeof a.default === 'number') {\r\n    def = function() { return a.default; };\r\n  }\r\n  else {\r\n    def = function() { utils.assert(false, typeof a.default); };\r\n  }\r\n  var unsigned_long = (a.type === 'unsigned long');\r\n  var signed_long = (a.type === 'long');\r\n  var unsigned_fallback = (a.type === 'limited unsigned long with fallback');\r\n  var min = a.min, max = a.max, setmin = a.setmin;\r\n  if (min === undefined) {\r\n    if (unsigned_long) min = 0;\r\n    if (signed_long) min = -0x80000000;\r\n    if (unsigned_fallback) min = 1;\r\n  }\r\n  if (max === undefined) {\r\n    if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF;\r\n  }\r\n\r\n  return {\r\n    get: function() {\r\n      var v = this._getattr(a.name);\r\n      var n = a.float ? parseFloat(v) : parseInt(v, 10);\r\n      if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) {\r\n        return def.call(this);\r\n      }\r\n      if (unsigned_long || signed_long || unsigned_fallback) {\r\n        if (!/^[ \\t\\n\\f\\r]*[-+]?[0-9]/.test(v)) { return def.call(this); }\r\n        n = n|0; // jshint ignore:line\r\n      }\r\n      return n;\r\n    },\r\n    set: function(v) {\r\n      if (!a.float) { v = Math.floor(v); }\r\n      if (setmin !== undefined && v < setmin) {\r\n        utils.IndexSizeError(a.name + ' set to ' + v);\r\n      }\r\n      if (unsigned_long) {\r\n        v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) :\r\n          (v|0);  // jshint ignore:line\r\n      } else if (unsigned_fallback) {\r\n        v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) :\r\n          (v|0); // jshint ignore:line\r\n      } else if (signed_long) {\r\n        v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) :\r\n          (v|0); // jshint ignore:line\r\n      }\r\n      this._setattr(a.name, String(v));\r\n    }\r\n  };\r\n}\r\n\r\n// This is a utility function for setting up change handler functions\r\n// for attributes like 'id' that require special handling when they change.\r\nexports.registerChangeHandler = function(c, name, handler) {\r\n  var p = c.prototype;\r\n\r\n  // If p does not already have its own _attributeChangeHandlers\r\n  // then create one for it, inheriting from the inherited\r\n  // _attributeChangeHandlers. At the top (for the Element class) the\r\n  // _attributeChangeHandlers object will be created with a null prototype.\r\n  if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) {\r\n    p._attributeChangeHandlers =\r\n      Object.create(p._attributeChangeHandlers || null);\r\n  }\r\n\r\n  p._attributeChangeHandlers[name] = handler;\r\n};\r\n","\"use strict\";\r\nmodule.exports = FilteredElementList;\r\n\r\nvar Node = require('./Node');\r\n\r\n//\r\n// This file defines node list implementation that lazily traverses\r\n// the document tree (or a subtree rooted at any element) and includes\r\n// only those elements for which a specified filter function returns true.\r\n// It is used to implement the\r\n// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods.\r\n//\r\n// XXX this should inherit from NodeList\r\n\r\nfunction FilteredElementList(root, filter) {\r\n  this.root = root;\r\n  this.filter = filter;\r\n  this.lastModTime = root.lastModTime;\r\n  this.done = false;\r\n  this.cache = [];\r\n  this.traverse();\r\n}\r\n\r\nFilteredElementList.prototype = Object.create(Object.prototype, {\r\n  length: { get: function() {\r\n    this.checkcache();\r\n    if (!this.done) this.traverse();\r\n    return this.cache.length;\r\n  } },\r\n\r\n  item: { value: function(n) {\r\n    this.checkcache();\r\n    if (!this.done && n >= this.cache.length) {\r\n      // This can lead to O(N^2) behavior if we stop when we get to n\r\n      // and the caller is iterating through the items in order; so\r\n      // be sure to do the full traverse here.\r\n      this.traverse(/*n*/);\r\n    }\r\n    return this.cache[n];\r\n  } },\r\n\r\n  checkcache: { value: function() {\r\n    if (this.lastModTime !== this.root.lastModTime) {\r\n      // subtree has changed, so invalidate cache\r\n      for (var i = this.cache.length-1; i>=0; i--) {\r\n        this[i] = undefined;\r\n      }\r\n      this.cache.length = 0;\r\n      this.done = false;\r\n      this.lastModTime = this.root.lastModTime;\r\n    }\r\n  } },\r\n\r\n  // If n is specified, then traverse the tree until we've found the nth\r\n  // item (or until we've found all items).  If n is not specified,\r\n  // traverse until we've found all items.\r\n  traverse: { value: function(n) {\r\n    // increment n so we can compare to length, and so it is never falsy\r\n    if (n !== undefined) n++;\r\n\r\n    var elt;\r\n    while ((elt = this.next()) !== null) {\r\n      this[this.cache.length] = elt; //XXX Use proxy instead\r\n      this.cache.push(elt);\r\n      if (n && this.cache.length === n) return;\r\n    }\r\n\r\n    // no next element, so we've found everything\r\n    this.done = true;\r\n  } },\r\n\r\n  // Return the next element under root that matches filter\r\n  next: { value: function() {\r\n    var start = (this.cache.length === 0) ? this.root // Start at the root or at\r\n      : this.cache[this.cache.length-1]; // the last element we found\r\n\r\n    var elt;\r\n    if (start.nodeType === Node.DOCUMENT_NODE)\r\n      elt = start.documentElement;\r\n    else\r\n      elt = start.nextElement(this.root);\r\n\r\n    while(elt) {\r\n      if (this.filter(elt)) {\r\n        return elt;\r\n      }\r\n\r\n      elt = elt.nextElement(this.root);\r\n    }\r\n    return null;\r\n  } },\r\n});\r\n","\"use strict\";\r\n// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = DOMTokenList;\r\n\r\nfunction DOMTokenList(getter, setter) {\r\n  this._getString = getter;\r\n  this._setString = setter;\r\n  this._length = 0;\r\n  this._lastStringValue = '';\r\n  this._update();\r\n}\r\n\r\nObject.defineProperties(DOMTokenList.prototype, {\r\n  length: { get: function() { return this._length; } },\r\n  item: { value: function(index) {\r\n    var list = getList(this);\r\n    if (index < 0 || index >= list.length) {\r\n      return null;\r\n    }\r\n    return list[index];\r\n  }},\r\n\r\n  contains: { value: function(token) {\r\n    token = String(token); // no error checking for contains()\r\n    var list = getList(this);\r\n    return list.indexOf(token) > -1;\r\n  }},\r\n\r\n  add: { value: function() {\r\n    var list = getList(this);\r\n    for (var i = 0, len = arguments.length; i < len; i++) {\r\n      var token = handleErrors(arguments[i]);\r\n      if (list.indexOf(token) < 0) {\r\n        list.push(token);\r\n      }\r\n    }\r\n    // Note: as per spec, if handleErrors() throws any errors, we never\r\n    // make it here and none of the changes take effect.\r\n    // Also per spec: we run the \"update steps\" even if no change was\r\n    // made (ie, if the token already existed)\r\n    this._update(list);\r\n  }},\r\n\r\n  remove: { value: function() {\r\n    var list = getList(this);\r\n    for (var i = 0, len = arguments.length; i < len; i++) {\r\n      var token = handleErrors(arguments[i]);\r\n      var index = list.indexOf(token);\r\n      if (index > -1) {\r\n        list.splice(index, 1);\r\n      }\r\n    }\r\n    // Note: as per spec, if handleErrors() throws any errors, we never\r\n    // make it here and none of the changes take effect.\r\n    // Also per spec: we run the \"update steps\" even if no change was\r\n    // made (ie, if the token wasn't previously present)\r\n    this._update(list);\r\n  }},\r\n\r\n  toggle: { value: function toggle(token, force) {\r\n    token = handleErrors(token);\r\n    if (this.contains(token)) {\r\n      if (force === undefined || force === false) {\r\n        this.remove(token);\r\n        return false;\r\n      }\r\n      return true;\r\n    } else {\r\n      if (force === undefined || force === true) {\r\n        this.add(token);\r\n        return true;\r\n      }\r\n      return false;\r\n    }\r\n  }},\r\n\r\n  replace: { value: function replace(token, newToken) {\r\n    // weird corner case of spec: if `token` contains whitespace, but\r\n    // `newToken` is the empty string, we must throw SyntaxError not\r\n    // InvalidCharacterError (sigh)\r\n    if (String(newToken)==='') { utils.SyntaxError(); }\r\n    token = handleErrors(token);\r\n    newToken = handleErrors(newToken);\r\n    var list = getList(this);\r\n    var idx = list.indexOf(token);\r\n    if (idx < 0) {\r\n      // Note that, per spec, we do not run the update steps on this path.\r\n      return false;\r\n    }\r\n    var idx2 = list.indexOf(newToken);\r\n    if (idx2 < 0) {\r\n      list[idx] = newToken;\r\n    } else {\r\n      // \"replace the first instance of either `token` or `newToken` with\r\n      // `newToken` and remove all other instances\"\r\n      if (idx < idx2) {\r\n        list[idx] = newToken;\r\n        list.splice(idx2, 1);\r\n      } else {\r\n        // idx2 is already `newToken`\r\n        list.splice(idx, 1);\r\n      }\r\n    }\r\n    this._update(list);\r\n    return true;\r\n  }},\r\n\r\n  toString: { value: function() {\r\n    return this._getString();\r\n  }},\r\n\r\n  value: {\r\n    get: function() {\r\n      return this._getString();\r\n    },\r\n    set: function(v) {\r\n      this._setString(v);\r\n      this._update();\r\n    }\r\n  },\r\n\r\n  // Called when the setter is called from outside this interface.\r\n  _update: { value: function(list) {\r\n    if (list) {\r\n      fixIndex(this, list);\r\n      this._setString(list.join(\" \").trim());\r\n    } else {\r\n      fixIndex(this, getList(this));\r\n    }\r\n    this._lastStringValue = this._getString();\r\n  } },\r\n});\r\n\r\nfunction fixIndex(clist, list) {\r\n  var oldLength = clist._length;\r\n  var i;\r\n  clist._length = list.length;\r\n  for (i = 0; i < list.length; i++) {\r\n    clist[i] = list[i];\r\n  }\r\n  // Clear/free old entries.\r\n  for (; i < oldLength; i++) {\r\n    clist[i] = undefined;\r\n  }\r\n}\r\n\r\nfunction handleErrors(token) {\r\n  token = String(token);\r\n  if (token === \"\") {\r\n    utils.SyntaxError();\r\n  }\r\n  if (/[ \\t\\r\\n\\f]/.test(token)) {\r\n    utils.InvalidCharacterError();\r\n  }\r\n  return token;\r\n}\r\n\r\nfunction toArray(clist) {\r\n  var length = clist._length;\r\n  var arr = Array(length);\r\n  for (var i = 0; i < length; i++) {\r\n    arr[i] = clist[i];\r\n  }\r\n  return arr;\r\n}\r\n\r\nfunction getList(clist) {\r\n  var strProp = clist._getString();\r\n  if (strProp === clist._lastStringValue) {\r\n    return toArray(clist);\r\n  }\r\n  var str = strProp.replace(/(^[ \\t\\r\\n\\f]+)|([ \\t\\r\\n\\f]+$)/g, '');\r\n  if (str === \"\") {\r\n    return [];\r\n  } else {\r\n    var seen = Object.create(null);\r\n    return str.split(/[ \\t\\r\\n\\f]+/g).filter(function(n) {\r\n      var key = '$' + n;\r\n      if (seen[key]) { return false; }\r\n      seen[key] = true;\r\n      return true;\r\n    });\r\n  }\r\n}\r\n","\"use strict\";\r\n/* jshint eqnull: true */\r\n/**\r\n * Zest (https://github.com/chjj/zest)\r\n * A css selector engine.\r\n * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed)\r\n * Domino version based on Zest v0.1.3 with bugfixes applied.\r\n */\r\n\r\n/**\r\n * Helpers\r\n */\r\n\r\nvar window = Object.create(null, {\r\n  location: { get: function() {\r\n    throw new Error('window.location is not supported.');\r\n  } }\r\n});\r\n\r\nvar compareDocumentPosition = function(a, b) {\r\n      return a.compareDocumentPosition(b);\r\n};\r\n\r\nvar order = function(a, b) {\r\n  /* jshint bitwise: false */\r\n  return compareDocumentPosition(a, b) & 2 ? 1 : -1;\r\n};\r\n\r\nvar next = function(el) {\r\n  while ((el = el.nextSibling)\r\n         && el.nodeType !== 1);\r\n  return el;\r\n};\r\n\r\nvar prev = function(el) {\r\n  while ((el = el.previousSibling)\r\n         && el.nodeType !== 1);\r\n  return el;\r\n};\r\n\r\nvar child = function(el) {\r\n  /*jshint -W084 */\r\n  if (el = el.firstChild) {\r\n    while (el.nodeType !== 1\r\n           && (el = el.nextSibling));\r\n  }\r\n  return el;\r\n};\r\n\r\nvar lastChild = function(el) {\r\n  /*jshint -W084 */\r\n  if (el = el.lastChild) {\r\n    while (el.nodeType !== 1\r\n           && (el = el.previousSibling));\r\n  }\r\n  return el;\r\n};\r\n\r\nvar parentIsElement = function(n) {\r\n  if (!n.parentNode) { return false; }\r\n  var nodeType = n.parentNode.nodeType;\r\n  // The root `html` element can be a first- or last-child, too.\r\n  return nodeType === 1 || nodeType === 9;\r\n};\r\n\r\nvar unquote = function(str) {\r\n  if (!str) return str;\r\n  var ch = str[0];\r\n  if (ch === '\"' || ch === '\\'') {\r\n    if (str[str.length-1] === ch) {\r\n      str = str.slice(1, -1);\r\n    } else {\r\n      // bad string.\r\n      str = str.slice(1);\r\n    }\r\n    return str.replace(rules.str_escape, function(s) {\r\n      var m = /^\\\\(?:([0-9A-Fa-f]+)|([\\r\\n\\f]+))/.exec(s);\r\n      if (!m) { return s.slice(1); }\r\n      if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ }\r\n      var cp = parseInt(m[1], 16);\r\n      return String.fromCodePoint ? String.fromCodePoint(cp) :\r\n        // Not all JavaScript implementations have String.fromCodePoint yet.\r\n        String.fromCharCode(cp);\r\n    });\r\n  } else if (rules.ident.test(str)) {\r\n    return decodeid(str);\r\n  } else {\r\n    // NUMBER, PERCENTAGE, DIMENSION, etc\r\n    return str;\r\n  }\r\n};\r\n\r\nvar decodeid = function(str) {\r\n  return str.replace(rules.escape, function(s) {\r\n    var m = /^\\\\([0-9A-Fa-f]+)/.exec(s);\r\n    if (!m) { return s[1]; }\r\n    var cp = parseInt(m[1], 16);\r\n    return String.fromCodePoint ? String.fromCodePoint(cp) :\r\n      // Not all JavaScript implementations have String.fromCodePoint yet.\r\n      String.fromCharCode(cp);\r\n  });\r\n};\r\n\r\nvar indexOf = (function() {\r\n  if (Array.prototype.indexOf) {\r\n    return Array.prototype.indexOf;\r\n  }\r\n  return function(obj, item) {\r\n    var i = this.length;\r\n    while (i--) {\r\n      if (this[i] === item) return i;\r\n    }\r\n    return -1;\r\n  };\r\n})();\r\n\r\nvar makeInside = function(start, end) {\r\n  var regex = rules.inside.source\r\n    .replace(/</g, start)\r\n    .replace(/>/g, end);\r\n\r\n  return new RegExp(regex);\r\n};\r\n\r\nvar replace = function(regex, name, val) {\r\n  regex = regex.source;\r\n  regex = regex.replace(name, val.source || val);\r\n  return new RegExp(regex);\r\n};\r\n\r\nvar truncateUrl = function(url, num) {\r\n  return url\r\n    .replace(/^(?:\\w+:\\/\\/|\\/+)/, '')\r\n    .replace(/(?:\\/+|\\/*#.*?)$/, '')\r\n    .split('/', num)\r\n    .join('/');\r\n};\r\n\r\n/**\r\n * Handle `nth` Selectors\r\n */\r\n\r\nvar parseNth = function(param_, test) {\r\n  var param = param_.replace(/\\s+/g, '')\r\n    , cap;\r\n\r\n  if (param === 'even') {\r\n    param = '2n+0';\r\n  } else if (param === 'odd') {\r\n    param = '2n+1';\r\n  } else if (param.indexOf('n') === -1) {\r\n    param = '0n' + param;\r\n  }\r\n\r\n  cap = /^([+-])?(\\d+)?n([+-])?(\\d+)?$/.exec(param);\r\n\r\n  return {\r\n    group: cap[1] === '-'\r\n      ? -(cap[2] || 1)\r\n      : +(cap[2] || 1),\r\n    offset: cap[4]\r\n      ? (cap[3] === '-' ? -cap[4] : +cap[4])\r\n      : 0\r\n  };\r\n};\r\n\r\nvar nth = function(param_, test, last) {\r\n  var param = parseNth(param_)\r\n    , group = param.group\r\n    , offset = param.offset\r\n    , find = !last ? child : lastChild\r\n    , advance = !last ? next : prev;\r\n\r\n  return function(el) {\r\n    if (!parentIsElement(el)) return;\r\n\r\n    var rel = find(el.parentNode)\r\n      , pos = 0;\r\n\r\n    while (rel) {\r\n      if (test(rel, el)) pos++;\r\n      if (rel === el) {\r\n        pos -= offset;\r\n        return group && pos\r\n          ? (pos % group) === 0 && (pos < 0 === group < 0)\r\n          : !pos;\r\n      }\r\n      rel = advance(rel);\r\n    }\r\n  };\r\n};\r\n\r\n/**\r\n * Simple Selectors\r\n */\r\n\r\nvar selectors = {\r\n  '*': (function() {\r\n    if (false/*function() {\r\n      var el = document.createElement('div');\r\n      el.appendChild(document.createComment(''));\r\n      return !!el.getElementsByTagName('*')[0];\r\n    }()*/) {\r\n      return function(el) {\r\n        if (el.nodeType === 1) return true;\r\n      };\r\n    }\r\n    return function() {\r\n      return true;\r\n    };\r\n  })(),\r\n  'type': function(type) {\r\n    type = type.toLowerCase();\r\n    return function(el) {\r\n      return el.nodeName.toLowerCase() === type;\r\n    };\r\n  },\r\n  'attr': function(key, op, val, i) {\r\n    op = operators[op];\r\n    return function(el) {\r\n      var attr;\r\n      switch (key) {\r\n        case 'for':\r\n          attr = el.htmlFor;\r\n          break;\r\n        case 'class':\r\n          // className is '' when non-existent\r\n          // getAttribute('class') is null\r\n          attr = el.className;\r\n          if (attr === '' && el.getAttribute('class') == null) {\r\n            attr = null;\r\n          }\r\n          break;\r\n        case 'href':\r\n        case 'src':\r\n          attr = el.getAttribute(key, 2);\r\n          break;\r\n        case 'title':\r\n          // getAttribute('title') can be '' when non-existent sometimes?\r\n          attr = el.getAttribute('title') || null;\r\n          break;\r\n        // careful with attributes with special getter functions\r\n        case 'id':\r\n        case 'lang':\r\n        case 'dir':\r\n        case 'accessKey':\r\n        case 'hidden':\r\n        case 'tabIndex':\r\n        case 'style':\r\n          if (el.getAttribute) {\r\n            attr = el.getAttribute(key);\r\n            break;\r\n          }\r\n        /* falls through */\r\n        default:\r\n          if (el.hasAttribute && !el.hasAttribute(key)) {\r\n            break;\r\n          }\r\n          attr = el[key] != null\r\n            ? el[key]\r\n            : el.getAttribute && el.getAttribute(key);\r\n          break;\r\n      }\r\n      if (attr == null) return;\r\n      attr = attr + '';\r\n      if (i) {\r\n        attr = attr.toLowerCase();\r\n        val = val.toLowerCase();\r\n      }\r\n      return op(attr, val);\r\n    };\r\n  },\r\n  ':first-child': function(el) {\r\n    return !prev(el) && parentIsElement(el);\r\n  },\r\n  ':last-child': function(el) {\r\n    return !next(el) && parentIsElement(el);\r\n  },\r\n  ':only-child': function(el) {\r\n    return !prev(el) && !next(el) && parentIsElement(el);\r\n  },\r\n  ':nth-child': function(param, last) {\r\n    return nth(param, function() {\r\n      return true;\r\n    }, last);\r\n  },\r\n  ':nth-last-child': function(param) {\r\n    return selectors[':nth-child'](param, true);\r\n  },\r\n  ':root': function(el) {\r\n    return el.ownerDocument.documentElement === el;\r\n  },\r\n  ':empty': function(el) {\r\n    return !el.firstChild;\r\n  },\r\n  ':not': function(sel) {\r\n    var test = compileGroup(sel);\r\n    return function(el) {\r\n      return !test(el);\r\n    };\r\n  },\r\n  ':first-of-type': function(el) {\r\n    if (!parentIsElement(el)) return;\r\n    var type = el.nodeName;\r\n    /*jshint -W084 */\r\n    while (el = prev(el)) {\r\n      if (el.nodeName === type) return;\r\n    }\r\n    return true;\r\n  },\r\n  ':last-of-type': function(el) {\r\n    if (!parentIsElement(el)) return;\r\n    var type = el.nodeName;\r\n    /*jshint -W084 */\r\n    while (el = next(el)) {\r\n      if (el.nodeName === type) return;\r\n    }\r\n    return true;\r\n  },\r\n  ':only-of-type': function(el) {\r\n    return selectors[':first-of-type'](el)\r\n        && selectors[':last-of-type'](el);\r\n  },\r\n  ':nth-of-type': function(param, last) {\r\n    return nth(param, function(rel, el) {\r\n      return rel.nodeName === el.nodeName;\r\n    }, last);\r\n  },\r\n  ':nth-last-of-type': function(param) {\r\n    return selectors[':nth-of-type'](param, true);\r\n  },\r\n  ':checked': function(el) {\r\n    return !!(el.checked || el.selected);\r\n  },\r\n  ':indeterminate': function(el) {\r\n    return !selectors[':checked'](el);\r\n  },\r\n  ':enabled': function(el) {\r\n    return !el.disabled && el.type !== 'hidden';\r\n  },\r\n  ':disabled': function(el) {\r\n    return !!el.disabled;\r\n  },\r\n  ':target': function(el) {\r\n    return el.id === window.location.hash.substring(1);\r\n  },\r\n  ':focus': function(el) {\r\n    return el === el.ownerDocument.activeElement;\r\n  },\r\n  ':is': function(sel) {\r\n    return compileGroup(sel);\r\n  },\r\n  // :matches is an older name for :is; see\r\n  // https://github.com/w3c/csswg-drafts/issues/3258\r\n  ':matches': function(sel) {\r\n    return selectors[':is'](sel);\r\n  },\r\n  ':nth-match': function(param, last) {\r\n    var args = param.split(/\\s*,\\s*/)\r\n      , arg = args.shift()\r\n      , test = compileGroup(args.join(','));\r\n\r\n    return nth(arg, test, last);\r\n  },\r\n  ':nth-last-match': function(param) {\r\n    return selectors[':nth-match'](param, true);\r\n  },\r\n  ':links-here': function(el) {\r\n    return el + '' === window.location + '';\r\n  },\r\n  ':lang': function(param) {\r\n    return function(el) {\r\n      while (el) {\r\n        if (el.lang) return el.lang.indexOf(param) === 0;\r\n        el = el.parentNode;\r\n      }\r\n    };\r\n  },\r\n  ':dir': function(param) {\r\n    return function(el) {\r\n      while (el) {\r\n        if (el.dir) return el.dir === param;\r\n        el = el.parentNode;\r\n      }\r\n    };\r\n  },\r\n  ':scope': function(el, con) {\r\n    var context = con || el.ownerDocument;\r\n    if (context.nodeType === 9) {\r\n      return el === context.documentElement;\r\n    }\r\n    return el === context;\r\n  },\r\n  ':any-link': function(el) {\r\n    return typeof el.href === 'string';\r\n  },\r\n  ':local-link': function(el) {\r\n    if (el.nodeName) {\r\n      return el.href && el.host === window.location.host;\r\n    }\r\n    var param = +el + 1;\r\n    return function(el) {\r\n      if (!el.href) return;\r\n\r\n      var url = window.location + ''\r\n        , href = el + '';\r\n\r\n      return truncateUrl(url, param) === truncateUrl(href, param);\r\n    };\r\n  },\r\n  ':default': function(el) {\r\n    return !!el.defaultSelected;\r\n  },\r\n  ':valid': function(el) {\r\n    return el.willValidate || (el.validity && el.validity.valid);\r\n  },\r\n  ':invalid': function(el) {\r\n    return !selectors[':valid'](el);\r\n  },\r\n  ':in-range': function(el) {\r\n    return el.value > el.min && el.value <= el.max;\r\n  },\r\n  ':out-of-range': function(el) {\r\n    return !selectors[':in-range'](el);\r\n  },\r\n  ':required': function(el) {\r\n    return !!el.required;\r\n  },\r\n  ':optional': function(el) {\r\n    return !el.required;\r\n  },\r\n  ':read-only': function(el) {\r\n    if (el.readOnly) return true;\r\n\r\n    var attr = el.getAttribute('contenteditable')\r\n      , prop = el.contentEditable\r\n      , name = el.nodeName.toLowerCase();\r\n\r\n    name = name !== 'input' && name !== 'textarea';\r\n\r\n    return (name || el.disabled) && attr == null && prop !== 'true';\r\n  },\r\n  ':read-write': function(el) {\r\n    return !selectors[':read-only'](el);\r\n  },\r\n  ':hover': function() {\r\n    throw new Error(':hover is not supported.');\r\n  },\r\n  ':active': function() {\r\n    throw new Error(':active is not supported.');\r\n  },\r\n  ':link': function() {\r\n    throw new Error(':link is not supported.');\r\n  },\r\n  ':visited': function() {\r\n    throw new Error(':visited is not supported.');\r\n  },\r\n  ':column': function() {\r\n    throw new Error(':column is not supported.');\r\n  },\r\n  ':nth-column': function() {\r\n    throw new Error(':nth-column is not supported.');\r\n  },\r\n  ':nth-last-column': function() {\r\n    throw new Error(':nth-last-column is not supported.');\r\n  },\r\n  ':current': function() {\r\n    throw new Error(':current is not supported.');\r\n  },\r\n  ':past': function() {\r\n    throw new Error(':past is not supported.');\r\n  },\r\n  ':future': function() {\r\n    throw new Error(':future is not supported.');\r\n  },\r\n  // Non-standard, for compatibility purposes.\r\n  ':contains': function(param) {\r\n    return function(el) {\r\n      var text = el.innerText || el.textContent || el.value || '';\r\n      return text.indexOf(param) !== -1;\r\n    };\r\n  },\r\n  ':has': function(param) {\r\n    return function(el) {\r\n      return find(param, el).length > 0;\r\n    };\r\n  }\r\n  // Potentially add more pseudo selectors for\r\n  // compatibility with sizzle and most other\r\n  // selector engines (?).\r\n};\r\n\r\n/**\r\n * Attribute Operators\r\n */\r\n\r\nvar operators = {\r\n  '-': function() {\r\n    return true;\r\n  },\r\n  '=': function(attr, val) {\r\n    return attr === val;\r\n  },\r\n  '*=': function(attr, val) {\r\n    return attr.indexOf(val) !== -1;\r\n  },\r\n  '~=': function(attr, val) {\r\n    var i\r\n      , s\r\n      , f\r\n      , l;\r\n\r\n    for (s = 0; true; s = i + 1) {\r\n      i = attr.indexOf(val, s);\r\n      if (i === -1) return false;\r\n      f = attr[i - 1];\r\n      l = attr[i + val.length];\r\n      if ((!f || f === ' ') && (!l || l === ' ')) return true;\r\n    }\r\n  },\r\n  '|=': function(attr, val) {\r\n    var i = attr.indexOf(val)\r\n      , l;\r\n\r\n    if (i !== 0) return;\r\n    l = attr[i + val.length];\r\n\r\n    return l === '-' || !l;\r\n  },\r\n  '^=': function(attr, val) {\r\n    return attr.indexOf(val) === 0;\r\n  },\r\n  '$=': function(attr, val) {\r\n    var i = attr.lastIndexOf(val);\r\n    return i !== -1 && i + val.length === attr.length;\r\n  },\r\n  // non-standard\r\n  '!=': function(attr, val) {\r\n    return attr !== val;\r\n  }\r\n};\r\n\r\n/**\r\n * Combinator Logic\r\n */\r\n\r\nvar combinators = {\r\n  ' ': function(test) {\r\n    return function(el) {\r\n      /*jshint -W084 */\r\n      while (el = el.parentNode) {\r\n        if (test(el)) return el;\r\n      }\r\n    };\r\n  },\r\n  '>': function(test) {\r\n    return function(el) {\r\n      /*jshint -W084 */\r\n      if (el = el.parentNode) {\r\n        return test(el) && el;\r\n      }\r\n    };\r\n  },\r\n  '+': function(test) {\r\n    return function(el) {\r\n      /*jshint -W084 */\r\n      if (el = prev(el)) {\r\n        return test(el) && el;\r\n      }\r\n    };\r\n  },\r\n  '~': function(test) {\r\n    return function(el) {\r\n      /*jshint -W084 */\r\n      while (el = prev(el)) {\r\n        if (test(el)) return el;\r\n      }\r\n    };\r\n  },\r\n  'noop': function(test) {\r\n    return function(el) {\r\n      return test(el) && el;\r\n    };\r\n  },\r\n  'ref': function(test, name) {\r\n    var node;\r\n\r\n    function ref(el) {\r\n      var doc = el.ownerDocument\r\n        , nodes = doc.getElementsByTagName('*')\r\n        , i = nodes.length;\r\n\r\n      while (i--) {\r\n        node = nodes[i];\r\n        if (ref.test(el)) {\r\n          node = null;\r\n          return true;\r\n        }\r\n      }\r\n\r\n      node = null;\r\n    }\r\n\r\n    ref.combinator = function(el) {\r\n      if (!node || !node.getAttribute) return;\r\n\r\n      var attr = node.getAttribute(name) || '';\r\n      if (attr[0] === '#') attr = attr.substring(1);\r\n\r\n      if (attr === el.id && test(node)) {\r\n        return node;\r\n      }\r\n    };\r\n\r\n    return ref;\r\n  }\r\n};\r\n\r\n/**\r\n * Grammar\r\n */\r\n\r\nvar rules = {\r\n  escape: /\\\\(?:[^0-9A-Fa-f\\r\\n]|[0-9A-Fa-f]{1,6}[\\r\\n\\t ]?)/g,\r\n  str_escape: /(escape)|\\\\(\\n|\\r\\n?|\\f)/g,\r\n  nonascii: /[\\u00A0-\\uFFFF]/,\r\n  cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/,\r\n  qname: /^ *(cssid|\\*)/,\r\n  simple: /^(?:([.#]cssid)|pseudo|attr)/,\r\n  ref: /^ *\\/(cssid)\\/ */,\r\n  combinator: /^(?: +([^ \\w*.#\\\\]) +|( )+|([^ \\w*.#\\\\]))(?! *$)/,\r\n  attr: /^\\[(cssid)(?:([^\\w]?=)(inside))?\\]/,\r\n  pseudo: /^(:cssid)(?:\\((inside)\\))?/,\r\n  inside: /(?:\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|<[^\"'>]*>|\\\\[\"'>]|[^\"'>])*/,\r\n  ident: /^(cssid)$/\r\n};\r\n\r\nrules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii);\r\nrules.cssid = replace(rules.cssid, 'escape', rules.escape);\r\nrules.qname = replace(rules.qname, 'cssid', rules.cssid);\r\nrules.simple = replace(rules.simple, 'cssid', rules.cssid);\r\nrules.ref = replace(rules.ref, 'cssid', rules.cssid);\r\nrules.attr = replace(rules.attr, 'cssid', rules.cssid);\r\nrules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid);\r\nrules.inside = replace(rules.inside, '[^\"\\'>]*', rules.inside);\r\nrules.attr = replace(rules.attr, 'inside', makeInside('\\\\[', '\\\\]'));\r\nrules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\\\(', '\\\\)'));\r\nrules.simple = replace(rules.simple, 'pseudo', rules.pseudo);\r\nrules.simple = replace(rules.simple, 'attr', rules.attr);\r\nrules.ident = replace(rules.ident, 'cssid', rules.cssid);\r\nrules.str_escape = replace(rules.str_escape, 'escape', rules.escape);\r\n\r\n/**\r\n * Compiling\r\n */\r\n\r\nvar compile = function(sel_) {\r\n  var sel = sel_.replace(/^\\s+|\\s+$/g, '')\r\n    , test\r\n    , filter = []\r\n    , buff = []\r\n    , subject\r\n    , qname\r\n    , cap\r\n    , op\r\n    , ref;\r\n\r\n  /*jshint -W084 */\r\n  while (sel) {\r\n    if (cap = rules.qname.exec(sel)) {\r\n      sel = sel.substring(cap[0].length);\r\n      qname = decodeid(cap[1]);\r\n      buff.push(tok(qname, true));\r\n    } else if (cap = rules.simple.exec(sel)) {\r\n      sel = sel.substring(cap[0].length);\r\n      qname = '*';\r\n      buff.push(tok(qname, true));\r\n      buff.push(tok(cap));\r\n    } else {\r\n      throw new SyntaxError('Invalid selector.');\r\n    }\r\n\r\n    while (cap = rules.simple.exec(sel)) {\r\n      sel = sel.substring(cap[0].length);\r\n      buff.push(tok(cap));\r\n    }\r\n\r\n    if (sel[0] === '!') {\r\n      sel = sel.substring(1);\r\n      subject = makeSubject();\r\n      subject.qname = qname;\r\n      buff.push(subject.simple);\r\n    }\r\n\r\n    if (cap = rules.ref.exec(sel)) {\r\n      sel = sel.substring(cap[0].length);\r\n      ref = combinators.ref(makeSimple(buff), decodeid(cap[1]));\r\n      filter.push(ref.combinator);\r\n      buff = [];\r\n      continue;\r\n    }\r\n\r\n    if (cap = rules.combinator.exec(sel)) {\r\n      sel = sel.substring(cap[0].length);\r\n      op = cap[1] || cap[2] || cap[3];\r\n      if (op === ',') {\r\n        filter.push(combinators.noop(makeSimple(buff)));\r\n        break;\r\n      }\r\n    } else {\r\n      op = 'noop';\r\n    }\r\n\r\n    if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); }\r\n    filter.push(combinators[op](makeSimple(buff)));\r\n    buff = [];\r\n  }\r\n\r\n  test = makeTest(filter);\r\n  test.qname = qname;\r\n  test.sel = sel;\r\n\r\n  if (subject) {\r\n    subject.lname = test.qname;\r\n\r\n    subject.test = test;\r\n    subject.qname = subject.qname;\r\n    subject.sel = test.sel;\r\n    test = subject;\r\n  }\r\n\r\n  if (ref) {\r\n    ref.test = test;\r\n    ref.qname = test.qname;\r\n    ref.sel = test.sel;\r\n    test = ref;\r\n  }\r\n\r\n  return test;\r\n};\r\n\r\nvar tok = function(cap, qname) {\r\n  // qname\r\n  if (qname) {\r\n    return cap === '*'\r\n      ? selectors['*']\r\n      : selectors.type(cap);\r\n  }\r\n\r\n  // class/id\r\n  if (cap[1]) {\r\n    return cap[1][0] === '.'\r\n\t  // XXX unescape here?  or in attr?\r\n      ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false)\r\n      : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false);\r\n  }\r\n\r\n  // pseudo-name\r\n  // inside-pseudo\r\n  if (cap[2]) {\r\n    return cap[3]\r\n      ? selectors[decodeid(cap[2])](unquote(cap[3]))\r\n      : selectors[decodeid(cap[2])];\r\n  }\r\n\r\n  // attr name\r\n  // attr op\r\n  // attr value\r\n  if (cap[4]) {\r\n    var value = cap[6];\r\n    var i = /[\"'\\s]\\s*I$/i.test(value);\r\n    if (i) {\r\n      value = value.replace(/\\s*I$/i, '');\r\n    }\r\n    return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i);\r\n  }\r\n\r\n  throw new SyntaxError('Unknown Selector.');\r\n};\r\n\r\nvar makeSimple = function(func) {\r\n  var l = func.length\r\n    , i;\r\n\r\n  // Potentially make sure\r\n  // `el` is truthy.\r\n  if (l < 2) return func[0];\r\n\r\n  return function(el) {\r\n    if (!el) return;\r\n    for (i = 0; i < l; i++) {\r\n      if (!func[i](el)) return;\r\n    }\r\n    return true;\r\n  };\r\n};\r\n\r\nvar makeTest = function(func) {\r\n  if (func.length < 2) {\r\n    return function(el) {\r\n      return !!func[0](el);\r\n    };\r\n  }\r\n  return function(el) {\r\n    var i = func.length;\r\n    while (i--) {\r\n      if (!(el = func[i](el))) return;\r\n    }\r\n    return true;\r\n  };\r\n};\r\n\r\nvar makeSubject = function() {\r\n  var target;\r\n\r\n  function subject(el) {\r\n    var node = el.ownerDocument\r\n      , scope = node.getElementsByTagName(subject.lname)\r\n      , i = scope.length;\r\n\r\n    while (i--) {\r\n      if (subject.test(scope[i]) && target === el) {\r\n        target = null;\r\n        return true;\r\n      }\r\n    }\r\n\r\n    target = null;\r\n  }\r\n\r\n  subject.simple = function(el) {\r\n    target = el;\r\n    return true;\r\n  };\r\n\r\n  return subject;\r\n};\r\n\r\nvar compileGroup = function(sel) {\r\n  var test = compile(sel)\r\n    , tests = [ test ];\r\n\r\n  while (test.sel) {\r\n    test = compile(test.sel);\r\n    tests.push(test);\r\n  }\r\n\r\n  if (tests.length < 2) return test;\r\n\r\n  return function(el) {\r\n    var l = tests.length\r\n      , i = 0;\r\n\r\n    for (; i < l; i++) {\r\n      if (tests[i](el)) return true;\r\n    }\r\n  };\r\n};\r\n\r\n/**\r\n * Selection\r\n */\r\n\r\nvar find = function(sel, node) {\r\n  var results = []\r\n    , test = compile(sel)\r\n    , scope = node.getElementsByTagName(test.qname)\r\n    , i = 0\r\n    , el;\r\n\r\n  /*jshint -W084 */\r\n  while (el = scope[i++]) {\r\n    if (test(el)) results.push(el);\r\n  }\r\n\r\n  if (test.sel) {\r\n    while (test.sel) {\r\n      test = compile(test.sel);\r\n      scope = node.getElementsByTagName(test.qname);\r\n      i = 0;\r\n      /*jshint -W084 */\r\n      while (el = scope[i++]) {\r\n        if (test(el) && indexOf.call(results, el) === -1) {\r\n          results.push(el);\r\n        }\r\n      }\r\n    }\r\n    results.sort(order);\r\n  }\r\n\r\n  return results;\r\n};\r\n\r\n/**\r\n * Expose\r\n */\r\n\r\nmodule.exports = exports = function(sel, context) {\r\n  /* when context isn't a DocumentFragment and the selector is simple: */\r\n  var id, r;\r\n  if (context.nodeType !== 11 && sel.indexOf(' ') === -1) {\r\n    if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) {\r\n      if (context.doc._hasMultipleElementsWithId) {\r\n        id = sel.substring(1);\r\n        if (!context.doc._hasMultipleElementsWithId(id)) {\r\n          r = context.doc.getElementById(id);\r\n          return r ? [r] : [];\r\n        }\r\n      }\r\n    }\r\n    if (sel[0] === '.' && /^\\.\\w+$/.test(sel)) {\r\n      return context.getElementsByClassName(sel.substring(1));\r\n    }\r\n    if (/^\\w+$/.test(sel)) {\r\n      return context.getElementsByTagName(sel);\r\n    }\r\n  }\r\n  /* do things the hard/slow way */\r\n  return find(sel, context);\r\n};\r\n\r\nexports.selectors = selectors;\r\nexports.operators = operators;\r\nexports.combinators = combinators;\r\n\r\nexports.matches = function(el, sel) {\r\n  var test = { sel: sel };\r\n  do {\r\n    test = compile(test.sel);\r\n    if (test(el)) { return true; }\r\n  } while (test.sel);\r\n  return false;\r\n};\r\n","\"use strict\";\r\n\r\nvar Node = require('./Node');\r\nvar LinkedList = require('./LinkedList');\r\n\r\nvar createDocumentFragmentFromArguments = function(document, args) {\r\n  var docFrag = document.createDocumentFragment();\r\n\r\n  for (var i=0; i<args.length; i++) {\r\n    var argItem = args[i];\r\n    var isNode = argItem instanceof Node;\r\n    docFrag.appendChild(isNode ? argItem :\r\n                        document.createTextNode(String(argItem)));\r\n  }\r\n\r\n  return docFrag;\r\n};\r\n\r\n// The ChildNode interface contains methods that are particular to `Node`\r\n// objects that can have a parent.  It is implemented by `Element`,\r\n// `DocumentType`, and `CharacterData` objects.\r\nvar ChildNode = {\r\n\r\n  // Inserts a set of Node or String objects in the children list of this\r\n  // ChildNode's parent, just after this ChildNode.  String objects are\r\n  // inserted as the equivalent Text nodes.\r\n  after: { value: function after() {\r\n    var argArr = Array.prototype.slice.call(arguments);\r\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\r\n    if (parentNode === null) { return; }\r\n    // Find \"viable next sibling\"; that is, next one not in argArr\r\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\r\n      nextSibling = nextSibling.nextSibling;\r\n    // ok, parent and sibling are saved away since this node could itself\r\n    // appear in argArr and we're about to move argArr to a document fragment.\r\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n\r\n    parentNode.insertBefore(docFrag, nextSibling);\r\n  }},\r\n\r\n  // Inserts a set of Node or String objects in the children list of this\r\n  // ChildNode's parent, just before this ChildNode.  String objects are\r\n  // inserted as the equivalent Text nodes.\r\n  before: { value: function before() {\r\n    var argArr = Array.prototype.slice.call(arguments);\r\n    var parentNode = this.parentNode, prevSibling = this.previousSibling;\r\n    if (parentNode === null) { return; }\r\n    // Find \"viable prev sibling\"; that is, prev one not in argArr\r\n    while (prevSibling && argArr.some(function(v) { return v===prevSibling; }))\r\n      prevSibling = prevSibling.previousSibling;\r\n    // ok, parent and sibling are saved away since this node could itself\r\n    // appear in argArr and we're about to move argArr to a document fragment.\r\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n\r\n    var nextSibling =\r\n        prevSibling ? prevSibling.nextSibling : parentNode.firstChild;\r\n    parentNode.insertBefore(docFrag, nextSibling);\r\n  }},\r\n\r\n  // Remove this node from its parent\r\n  remove: { value: function remove() {\r\n    if (this.parentNode === null) return;\r\n\r\n    // Send mutation events if necessary\r\n    if (this.doc) {\r\n      this.doc._preremoveNodeIterators(this);\r\n      if (this.rooted) {\r\n        this.doc.mutateRemove(this);\r\n      }\r\n    }\r\n\r\n    // Remove this node from its parents array of children\r\n    // and update the structure id for all ancestors\r\n    this._remove();\r\n\r\n    // Forget this node's parent\r\n    this.parentNode = null;\r\n  }},\r\n\r\n  // Remove this node w/o uprooting or sending mutation events\r\n  // (But do update the structure id for all ancestors)\r\n  _remove: { value: function _remove() {\r\n    var parent = this.parentNode;\r\n    if (parent === null) return;\r\n    if (parent._childNodes) {\r\n      parent._childNodes.splice(this.index, 1);\r\n    } else if (parent._firstChild === this) {\r\n      if (this._nextSibling === this) {\r\n        parent._firstChild = null;\r\n      } else {\r\n        parent._firstChild = this._nextSibling;\r\n      }\r\n    }\r\n    LinkedList.remove(this);\r\n    parent.modify();\r\n  }},\r\n\r\n  // Replace this node with the nodes or strings provided as arguments.\r\n  replaceWith: { value: function replaceWith() {\r\n    var argArr = Array.prototype.slice.call(arguments);\r\n    var parentNode = this.parentNode, nextSibling = this.nextSibling;\r\n    if (parentNode === null) { return; }\r\n    // Find \"viable next sibling\"; that is, next one not in argArr\r\n    while (nextSibling && argArr.some(function(v) { return v===nextSibling; }))\r\n      nextSibling = nextSibling.nextSibling;\r\n    // ok, parent and sibling are saved away since this node could itself\r\n    // appear in argArr and we're about to move argArr to a document fragment.\r\n    var docFrag = createDocumentFragmentFromArguments(this.doc, argArr);\r\n    if (this.parentNode === parentNode) {\r\n      parentNode.replaceChild(docFrag, this);\r\n    } else {\r\n      // `this` was inserted into docFrag\r\n      parentNode.insertBefore(docFrag, nextSibling);\r\n    }\r\n  }},\r\n\r\n};\r\n\r\nmodule.exports = ChildNode;\r\n","\"use strict\";\r\nvar Node = require('./Node');\r\n\r\nvar NonDocumentTypeChildNode = {\r\n\r\n  nextElementSibling: { get: function() {\r\n    if (this.parentNode) {\r\n      for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) {\r\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n      }\r\n    }\r\n    return null;\r\n  }},\r\n\r\n  previousElementSibling: { get: function() {\r\n    if (this.parentNode) {\r\n      for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) {\r\n        if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n      }\r\n    }\r\n    return null;\r\n  }}\r\n\r\n};\r\n\r\nmodule.exports = NonDocumentTypeChildNode;\r\n","\"use strict\";\r\nmodule.exports = NamedNodeMap;\r\n\r\nvar utils = require('./utils');\r\n\r\n/* This is a hacky implementation of NamedNodeMap, intended primarily to\r\n * satisfy clients (like dompurify and the web-platform-tests) which check\r\n * to ensure that Node#attributes instanceof NamedNodeMap. */\r\n\r\nfunction NamedNodeMap(element) {\r\n  this.element = element;\r\n}\r\nObject.defineProperties(NamedNodeMap.prototype, {\r\n  length: { get: utils.shouldOverride },\r\n  item: { value: utils.shouldOverride },\r\n\r\n  getNamedItem: { value: function getNamedItem(qualifiedName) {\r\n    return this.element.getAttributeNode(qualifiedName);\r\n  } },\r\n  getNamedItemNS: { value: function getNamedItemNS(namespace, localName) {\r\n    return this.element.getAttributeNodeNS(namespace, localName);\r\n  } },\r\n  setNamedItem: { value: utils.nyi },\r\n  setNamedItemNS: { value: utils.nyi },\r\n  removeNamedItem: { value: function removeNamedItem(qualifiedName) {\r\n    var attr = this.element.getAttributeNode(qualifiedName);\r\n    if (attr) {\r\n      this.element.removeAttribute(qualifiedName);\r\n      return attr;\r\n    }\r\n    utils.NotFoundError();\r\n  } },\r\n  removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) {\r\n    var attr = this.element.getAttributeNodeNS(ns, lname);\r\n    if (attr) {\r\n      this.element.removeAttributeNS(ns, lname);\r\n      return attr;\r\n    }\r\n    utils.NotFoundError();\r\n  } },\r\n});\r\n","\"use strict\";\r\nmodule.exports = Element;\r\n\r\nvar xml = require('./xmlnames');\r\nvar utils = require('./utils');\r\nvar NAMESPACE = utils.NAMESPACE;\r\nvar attributes = require('./attributes');\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar NodeUtils = require('./NodeUtils');\r\nvar FilteredElementList = require('./FilteredElementList');\r\nvar DOMException = require('./DOMException');\r\nvar DOMTokenList = require('./DOMTokenList');\r\nvar select = require('./select');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar ChildNode = require('./ChildNode');\r\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\r\nvar NamedNodeMap = require('./NamedNodeMap');\r\n\r\nvar uppercaseCache = Object.create(null);\r\n\r\nfunction Element(doc, localName, namespaceURI, prefix) {\r\n  ContainerNode.call(this);\r\n  this.nodeType = Node.ELEMENT_NODE;\r\n  this.ownerDocument = doc;\r\n  this.localName = localName;\r\n  this.namespaceURI = namespaceURI;\r\n  this.prefix = prefix;\r\n  this._tagName = undefined;\r\n\r\n  // These properties maintain the set of attributes\r\n  this._attrsByQName = Object.create(null); // The qname->Attr map\r\n  this._attrsByLName = Object.create(null); // The ns|lname->Attr map\r\n  this._attrKeys = [];     // attr index -> ns|lname\r\n}\r\n\r\nfunction recursiveGetText(node, a) {\r\n  if (node.nodeType === Node.TEXT_NODE) {\r\n    a.push(node._data);\r\n  }\r\n  else {\r\n    for(var i = 0, n = node.childNodes.length;  i < n; i++)\r\n      recursiveGetText(node.childNodes[i], a);\r\n  }\r\n}\r\n\r\nElement.prototype = Object.create(ContainerNode.prototype, {\r\n  isHTML: { get: function isHTML() {\r\n    return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML;\r\n  }},\r\n  tagName: { get: function tagName() {\r\n    if (this._tagName === undefined) {\r\n      var tn;\r\n      if (this.prefix === null) {\r\n        tn = this.localName;\r\n      } else {\r\n        tn = this.prefix + ':' + this.localName;\r\n      }\r\n      if (this.isHTML) {\r\n        var up = uppercaseCache[tn];\r\n        if (!up) {\r\n          // Converting to uppercase can be slow, so cache the conversion.\r\n          uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn);\r\n        }\r\n        tn = up;\r\n      }\r\n      this._tagName = tn;\r\n    }\r\n    return this._tagName;\r\n  }},\r\n  nodeName: { get: function() { return this.tagName; }},\r\n  nodeValue: {\r\n    get: function() {\r\n      return null;\r\n    },\r\n    set: function() {}\r\n  },\r\n  textContent: {\r\n    get: function() {\r\n      var strings = [];\r\n      recursiveGetText(this, strings);\r\n      return strings.join('');\r\n    },\r\n    set: function(newtext) {\r\n      this.removeChildren();\r\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\r\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\r\n      }\r\n    }\r\n  },\r\n  innerText: {\r\n    get: function() {\r\n      var strings = [];\r\n      recursiveGetText(this, strings);\r\n      // Strip and collapse whitespace\r\n      // This doesn't 100% match the browser behavior,\r\n      // but should cover most of the cases. This is also similar to\r\n      // how Angular's renderer used to work: the `textContent` and `innerText`\r\n      // were almost equivalent from the renderer perspective.\r\n      // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\r\n      return strings.join('').replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n    },\r\n    set: function(newtext) {\r\n      this.removeChildren();\r\n      if (newtext !== null && newtext !== undefined && newtext !== '') {\r\n        this._appendChild(this.ownerDocument.createTextNode(newtext));\r\n      }\r\n    }\r\n  },\r\n  innerHTML: {\r\n    get: function() {\r\n      return this.serialize();\r\n    },\r\n    set: utils.nyi\r\n  },\r\n  outerHTML: {\r\n    get: function() {\r\n      // \"the attribute must return the result of running the HTML fragment\r\n      // serialization algorithm on a fictional node whose only child is\r\n      // the context object\"\r\n      //\r\n      // The serialization logic is intentionally implemented in a separate\r\n      // `NodeUtils` helper instead of the more obvious choice of a private\r\n      // `_serializeOne()` method on the `Node.prototype` in order to avoid\r\n      // the megamorphic `this._serializeOne` property access, which reduces\r\n      // performance unnecessarily. If you need specialized behavior for a\r\n      // certain subclass, you'll need to implement that in `NodeUtils`.\r\n      // See https://github.com/fgnass/domino/pull/142 for more information.\r\n      return NodeUtils.serializeOne(this, { nodeType: 0 });\r\n    },\r\n    set: function(v) {\r\n      var document = this.ownerDocument;\r\n      var parent = this.parentNode;\r\n      if (parent === null) { return; }\r\n      if (parent.nodeType === Node.DOCUMENT_NODE) {\r\n        utils.NoModificationAllowedError();\r\n      }\r\n      if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\r\n        parent = parent.ownerDocument.createElement(\"body\");\r\n      }\r\n      var parser = document.implementation.mozHTMLParser(\r\n        document._address,\r\n        parent\r\n      );\r\n      parser.parse(v===null?'':String(v), true);\r\n      this.replaceWith(parser._asDocumentFragment());\r\n    },\r\n  },\r\n\r\n  _insertAdjacent: { value: function _insertAdjacent(position, node) {\r\n    var first = false;\r\n    switch(position) {\r\n    case 'beforebegin':\r\n      first = true;\r\n      /* falls through */\r\n    case 'afterend':\r\n      var parent = this.parentNode;\r\n      if (parent === null) { return null; }\r\n      return parent.insertBefore(node, first ? this : this.nextSibling);\r\n    case 'afterbegin':\r\n      first = true;\r\n      /* falls through */\r\n    case 'beforeend':\r\n      return this.insertBefore(node, first ? this.firstChild : null);\r\n    default:\r\n      return utils.SyntaxError();\r\n    }\r\n  }},\r\n\r\n  insertAdjacentElement: { value: function insertAdjacentElement(position, element) {\r\n    if (element.nodeType !== Node.ELEMENT_NODE) {\r\n      throw new TypeError('not an element');\r\n    }\r\n    position = utils.toASCIILowerCase(String(position));\r\n    return this._insertAdjacent(position, element);\r\n  }},\r\n\r\n  insertAdjacentText: { value: function insertAdjacentText(position, data) {\r\n    var textNode = this.ownerDocument.createTextNode(data);\r\n    position = utils.toASCIILowerCase(String(position));\r\n    this._insertAdjacent(position, textNode);\r\n    // \"This method returns nothing because it existed before we had a chance\r\n    // to design it.\"\r\n  }},\r\n\r\n  insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) {\r\n    position = utils.toASCIILowerCase(String(position));\r\n    text = String(text);\r\n    var context;\r\n    switch(position) {\r\n    case 'beforebegin':\r\n    case 'afterend':\r\n      context = this.parentNode;\r\n      if (context === null || context.nodeType === Node.DOCUMENT_NODE) {\r\n        utils.NoModificationAllowedError();\r\n      }\r\n      break;\r\n    case 'afterbegin':\r\n    case 'beforeend':\r\n      context = this;\r\n      break;\r\n    default:\r\n      utils.SyntaxError();\r\n    }\r\n    if ( (!(context instanceof Element)) || (\r\n      context.ownerDocument.isHTML &&\r\n      context.localName === 'html' &&\r\n      context.namespaceURI === NAMESPACE.HTML\r\n    ) ) {\r\n      context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body');\r\n    }\r\n    var parser = this.ownerDocument.implementation.mozHTMLParser(\r\n      this.ownerDocument._address, context\r\n    );\r\n    parser.parse(text, true);\r\n    this._insertAdjacent(position, parser._asDocumentFragment());\r\n  }},\r\n\r\n  children: { get: function() {\r\n    if (!this._children) {\r\n      this._children = new ChildrenCollection(this);\r\n    }\r\n    return this._children;\r\n  }},\r\n\r\n  attributes: { get: function() {\r\n    if (!this._attributes) {\r\n      this._attributes = new AttributesArray(this);\r\n    }\r\n    return this._attributes;\r\n  }},\r\n\r\n\r\n  firstElementChild: { get: function() {\r\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n    }\r\n    return null;\r\n  }},\r\n\r\n  lastElementChild: { get: function() {\r\n    for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) {\r\n      if (kid.nodeType === Node.ELEMENT_NODE) return kid;\r\n    }\r\n    return null;\r\n  }},\r\n\r\n  childElementCount: { get: function() {\r\n    return this.children.length;\r\n  }},\r\n\r\n\r\n  // Return the next element, in source order, after this one or\r\n  // null if there are no more.  If root element is specified,\r\n  // then don't traverse beyond its subtree.\r\n  //\r\n  // This is not a DOM method, but is convenient for\r\n  // lazy traversals of the tree.\r\n  nextElement: { value: function(root) {\r\n    if (!root) root = this.ownerDocument.documentElement;\r\n    var next = this.firstElementChild;\r\n    if (!next) {\r\n      // don't use sibling if we're at root\r\n      if (this===root) return null;\r\n      next = this.nextElementSibling;\r\n    }\r\n    if (next) return next;\r\n\r\n    // If we can't go down or across, then we have to go up\r\n    // and across to the parent sibling or another ancestor's\r\n    // sibling.  Be careful, though: if we reach the root\r\n    // element, or if we reach the documentElement, then\r\n    // the traversal ends.\r\n    for(var parent = this.parentElement;\r\n      parent && parent !== root;\r\n      parent = parent.parentElement) {\r\n\r\n      next = parent.nextElementSibling;\r\n      if (next) return next;\r\n    }\r\n\r\n    return null;\r\n  }},\r\n\r\n  // XXX:\r\n  // Tests are currently failing for this function.\r\n  // Awaiting resolution of:\r\n  // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html\r\n  getElementsByTagName: { value: function getElementsByTagName(lname) {\r\n    var filter;\r\n    if (!lname) return new NodeList();\r\n    if (lname === '*')\r\n      filter = function() { return true; };\r\n    else if (this.isHTML)\r\n      filter = htmlLocalNameElementFilter(lname);\r\n    else\r\n      filter = localNameElementFilter(lname);\r\n\r\n    return new FilteredElementList(this, filter);\r\n  }},\r\n\r\n  getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){\r\n    var filter;\r\n    if (ns === '*' && lname === '*')\r\n      filter = function() { return true; };\r\n    else if (ns === '*')\r\n      filter = localNameElementFilter(lname);\r\n    else if (lname === '*')\r\n      filter = namespaceElementFilter(ns);\r\n    else\r\n      filter = namespaceLocalNameElementFilter(ns, lname);\r\n\r\n    return new FilteredElementList(this, filter);\r\n  }},\r\n\r\n  getElementsByClassName: { value: function getElementsByClassName(names){\r\n    names = String(names).trim();\r\n    if (names === '') {\r\n      var result = new NodeList(); // Empty node list\r\n      return result;\r\n    }\r\n    names = names.split(/[ \\t\\r\\n\\f]+/);  // Split on ASCII whitespace\r\n    return new FilteredElementList(this, classNamesElementFilter(names));\r\n  }},\r\n\r\n  getElementsByName: { value: function getElementsByName(name) {\r\n    return new FilteredElementList(this, elementNameFilter(String(name)));\r\n  }},\r\n\r\n  // Utility methods used by the public API methods above\r\n  clone: { value: function clone() {\r\n    var e;\r\n\r\n    // XXX:\r\n    // Modify this to use the constructor directly or\r\n    // avoid error checking in some other way. In case we try\r\n    // to clone an invalid node that the parser inserted.\r\n    //\r\n    if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) {\r\n      e = this.ownerDocument.createElementNS(\r\n        this.namespaceURI, (this.prefix !== null) ?\r\n          (this.prefix + ':' + this.localName) : this.localName\r\n      );\r\n    } else {\r\n      e = this.ownerDocument.createElement(this.localName);\r\n    }\r\n\r\n    for(var i = 0, n = this._attrKeys.length; i < n; i++) {\r\n      var lname = this._attrKeys[i];\r\n      var a = this._attrsByLName[lname];\r\n      var b = a.cloneNode();\r\n      b._setOwnerElement(e);\r\n      e._attrsByLName[lname] = b;\r\n      e._addQName(b);\r\n    }\r\n    e._attrKeys = this._attrKeys.concat();\r\n\r\n    return e;\r\n  }},\r\n\r\n  isEqual: { value: function isEqual(that) {\r\n    if (this.localName !== that.localName ||\r\n      this.namespaceURI !== that.namespaceURI ||\r\n      this.prefix !== that.prefix ||\r\n      this._numattrs !== that._numattrs)\r\n      return false;\r\n\r\n    // Compare the sets of attributes, ignoring order\r\n    // and ignoring attribute prefixes.\r\n    for(var i = 0, n = this._numattrs; i < n; i++) {\r\n      var a = this._attr(i);\r\n      if (!that.hasAttributeNS(a.namespaceURI, a.localName))\r\n        return false;\r\n      if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value)\r\n        return false;\r\n    }\r\n\r\n    return true;\r\n  }},\r\n\r\n  // This is the 'locate a namespace prefix' algorithm from the\r\n  // DOM specification.  It is used by Node.lookupPrefix()\r\n  // (Be sure to compare DOM3 and DOM4 versions of spec.)\r\n  _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) {\r\n    if (\r\n      this.namespaceURI &&\r\n      this.namespaceURI === ns &&\r\n      this.prefix !== null &&\r\n      originalElement.lookupNamespaceURI(this.prefix) === ns\r\n    ) {\r\n      return this.prefix;\r\n    }\r\n\r\n    for(var i = 0, n = this._numattrs; i < n; i++) {\r\n      var a = this._attr(i);\r\n      if (\r\n        a.prefix === 'xmlns' &&\r\n        a.value === ns &&\r\n        originalElement.lookupNamespaceURI(a.localName) === ns\r\n      ) {\r\n        return a.localName;\r\n      }\r\n    }\r\n\r\n    var parent = this.parentElement;\r\n    return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null;\r\n  }},\r\n\r\n  // This is the 'locate a namespace' algorithm for Element nodes\r\n  // from the DOM Core spec.  It is used by Node#lookupNamespaceURI()\r\n  lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) {\r\n    if (prefix === '' || prefix === undefined) { prefix = null; }\r\n    if (this.namespaceURI !== null && this.prefix === prefix)\r\n      return this.namespaceURI;\r\n\r\n    for(var i = 0, n = this._numattrs; i < n; i++) {\r\n      var a = this._attr(i);\r\n      if (a.namespaceURI === NAMESPACE.XMLNS) {\r\n        if (\r\n          (a.prefix === 'xmlns' && a.localName === prefix) ||\r\n          (prefix === null && a.prefix === null && a.localName === 'xmlns')\r\n        ) {\r\n          return a.value || null;\r\n        }\r\n      }\r\n    }\r\n\r\n    var parent = this.parentElement;\r\n    return parent ? parent.lookupNamespaceURI(prefix) : null;\r\n  }},\r\n\r\n  //\r\n  // Attribute handling methods and utilities\r\n  //\r\n\r\n  /*\r\n   * Attributes in the DOM are tricky:\r\n   *\r\n   * - there are the 8 basic get/set/has/removeAttribute{NS} methods\r\n   *\r\n   * - but many HTML attributes are also 'reflected' through IDL\r\n   *   attributes which means that they can be queried and set through\r\n   *   regular properties of the element.  There is just one attribute\r\n   *   value, but two ways to get and set it.\r\n   *\r\n   * - Different HTML element types have different sets of reflected\r\n     attributes.\r\n   *\r\n   * - attributes can also be queried and set through the .attributes\r\n   *   property of an element.  This property behaves like an array of\r\n   *   Attr objects.  The value property of each Attr is writeable, so\r\n   *   this is a third way to read and write attributes.\r\n   *\r\n   * - for efficiency, we really want to store attributes in some kind\r\n   *   of name->attr map.  But the attributes[] array is an array, not a\r\n   *   map, which is kind of unnatural.\r\n   *\r\n   * - When using namespaces and prefixes, and mixing the NS methods\r\n   *   with the non-NS methods, it is apparently actually possible for\r\n   *   an attributes[] array to have more than one attribute with the\r\n   *   same qualified name.  And certain methods must operate on only\r\n   *   the first attribute with such a name.  So for these methods, an\r\n   *   inefficient array-like data structure would be easier to\r\n   *   implement.\r\n   *\r\n   * - The attributes[] array is live, not a snapshot, so changes to the\r\n   *   attributes must be immediately visible through existing arrays.\r\n   *\r\n   * - When attributes are queried and set through IDL properties\r\n   *   (instead of the get/setAttributes() method or the attributes[]\r\n   *   array) they may be subject to type conversions, URL\r\n   *   normalization, etc., so some extra processing is required in that\r\n   *   case.\r\n   *\r\n   * - But access through IDL properties is probably the most common\r\n   *   case, so we'd like that to be as fast as possible.\r\n   *\r\n   * - We can't just store attribute values in their parsed idl form,\r\n   *   because setAttribute() has to return whatever string is passed to\r\n   *   getAttribute even if it is not a legal, parseable value. So\r\n   *   attribute values must be stored in unparsed string form.\r\n   *\r\n   * - We need to be able to send change notifications or mutation\r\n   *   events of some sort to the renderer whenever an attribute value\r\n   *   changes, regardless of the way in which it changes.\r\n   *\r\n   * - Some attributes, such as id and class affect other parts of the\r\n   *   DOM API, like getElementById and getElementsByClassName and so\r\n   *   for efficiency, we need to specially track changes to these\r\n   *   special attributes.\r\n   *\r\n   * - Some attributes like class have different names (className) when\r\n   *   reflected.\r\n   *\r\n   * - Attributes whose names begin with the string 'data-' are treated\r\n     specially.\r\n   *\r\n   * - Reflected attributes that have a boolean type in IDL have special\r\n   *   behavior: setting them to false (in IDL) is the same as removing\r\n   *   them with removeAttribute()\r\n   *\r\n   * - numeric attributes (like HTMLElement.tabIndex) can have default\r\n   *   values that must be returned by the idl getter even if the\r\n   *   content attribute does not exist. (The default tabIndex value\r\n   *   actually varies based on the type of the element, so that is a\r\n   *   tricky one).\r\n   *\r\n   * See\r\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect\r\n   * for rules on how attributes are reflected.\r\n   *\r\n   */\r\n\r\n  getAttribute: { value: function getAttribute(qname) {\r\n    var attr = this.getAttributeNode(qname);\r\n    return attr ? attr.value : null;\r\n  }},\r\n\r\n  getAttributeNS: { value: function getAttributeNS(ns, lname) {\r\n    var attr = this.getAttributeNodeNS(ns, lname);\r\n    return attr ? attr.value : null;\r\n  }},\r\n\r\n  getAttributeNode: { value: function getAttributeNode(qname) {\r\n    qname = String(qname);\r\n    if (/[A-Z]/.test(qname) && this.isHTML)\r\n      qname = utils.toASCIILowerCase(qname);\r\n    var attr = this._attrsByQName[qname];\r\n    if (!attr) return null;\r\n\r\n    if (Array.isArray(attr))  // If there is more than one\r\n      attr = attr[0];         // use the first\r\n\r\n    return attr;\r\n  }},\r\n\r\n  getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) {\r\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n    lname = String(lname);\r\n    var attr = this._attrsByLName[ns + '|' + lname];\r\n    return attr ? attr : null;\r\n  }},\r\n\r\n  hasAttribute: { value: function hasAttribute(qname) {\r\n    qname = String(qname);\r\n    if (/[A-Z]/.test(qname) && this.isHTML)\r\n      qname = utils.toASCIILowerCase(qname);\r\n    return this._attrsByQName[qname] !== undefined;\r\n  }},\r\n\r\n  hasAttributeNS: { value: function hasAttributeNS(ns, lname) {\r\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n    lname = String(lname);\r\n    var key = ns + '|' + lname;\r\n    return this._attrsByLName[key] !== undefined;\r\n  }},\r\n\r\n  hasAttributes: { value: function hasAttributes() {\r\n    return this._numattrs > 0;\r\n  }},\r\n\r\n  toggleAttribute: { value: function toggleAttribute(qname, force) {\r\n    qname = String(qname);\r\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\r\n    if (/[A-Z]/.test(qname) && this.isHTML)\r\n      qname = utils.toASCIILowerCase(qname);\r\n    var a = this._attrsByQName[qname];\r\n    if (a === undefined) {\r\n      if (force === undefined || force === true) {\r\n        this._setAttribute(qname, '');\r\n        return true;\r\n      }\r\n      return false;\r\n    } else {\r\n      if (force === undefined || force === false) {\r\n        this.removeAttribute(qname);\r\n        return false;\r\n      }\r\n      return true;\r\n    }\r\n  }},\r\n\r\n  // Set the attribute without error checking. The parser uses this.\r\n  _setAttribute: { value: function _setAttribute(qname, value) {\r\n    // XXX: the spec says that this next search should be done\r\n    // on the local name, but I think that is an error.\r\n    // email pending on www-dom about it.\r\n    var attr = this._attrsByQName[qname];\r\n    var isnew;\r\n    if (!attr) {\r\n      attr = this._newattr(qname);\r\n      isnew = true;\r\n    }\r\n    else {\r\n      if (Array.isArray(attr)) attr = attr[0];\r\n    }\r\n\r\n    // Now set the attribute value on the new or existing Attr object.\r\n    // The Attr.value setter method handles mutation events, etc.\r\n    attr.value = value;\r\n    if (this._attributes) this._attributes[qname] = attr;\r\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n  }},\r\n\r\n  // Check for errors, and then set the attribute\r\n  setAttribute: { value: function setAttribute(qname, value) {\r\n    qname = String(qname);\r\n    if (!xml.isValidName(qname)) utils.InvalidCharacterError();\r\n    if (/[A-Z]/.test(qname) && this.isHTML)\r\n      qname = utils.toASCIILowerCase(qname);\r\n    this._setAttribute(qname, String(value));\r\n  }},\r\n\r\n\r\n  // The version with no error checking used by the parser\r\n  _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) {\r\n    var pos = qname.indexOf(':'), prefix, lname;\r\n    if (pos < 0) {\r\n      prefix = null;\r\n      lname = qname;\r\n    }\r\n    else {\r\n      prefix = qname.substring(0, pos);\r\n      lname = qname.substring(pos+1);\r\n    }\r\n\r\n    if (ns === '' || ns === undefined) ns = null;\r\n    var key = (ns === null ? '' : ns) + '|' + lname;\r\n\r\n    var attr = this._attrsByLName[key];\r\n    var isnew;\r\n    if (!attr) {\r\n      attr = new Attr(this, lname, prefix, ns);\r\n      isnew = true;\r\n      this._attrsByLName[key] = attr;\r\n      if (this._attributes) {\r\n        this._attributes[this._attrKeys.length] = attr;\r\n      }\r\n      this._attrKeys.push(key);\r\n\r\n      // We also have to make the attr searchable by qname.\r\n      // But we have to be careful because there may already\r\n      // be an attr with this qname.\r\n      this._addQName(attr);\r\n    }\r\n    else if (false /* changed in DOM 4 */) {\r\n      // Calling setAttributeNS() can change the prefix of an\r\n      // existing attribute in DOM 2/3.\r\n      if (attr.prefix !== prefix) {\r\n        // Unbind the old qname\r\n        this._removeQName(attr);\r\n        // Update the prefix\r\n        attr.prefix = prefix;\r\n        // Bind the new qname\r\n        this._addQName(attr);\r\n      }\r\n\r\n    }\r\n    attr.value = value; // Automatically sends mutation event\r\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n  }},\r\n\r\n  // Do error checking then call _setAttributeNS\r\n  setAttributeNS: { value: function setAttributeNS(ns, qname, value) {\r\n    // Convert parameter types according to WebIDL\r\n    ns = (ns === null || ns === undefined || ns === '') ? null : String(ns);\r\n    qname = String(qname);\r\n    if (!xml.isValidQName(qname)) utils.InvalidCharacterError();\r\n\r\n    var pos = qname.indexOf(':');\r\n    var prefix = (pos < 0) ? null : qname.substring(0, pos);\r\n\r\n    if ((prefix !== null && ns === null) ||\r\n      (prefix === 'xml' && ns !== NAMESPACE.XML) ||\r\n      ((qname === 'xmlns' || prefix === 'xmlns') &&\r\n       (ns !== NAMESPACE.XMLNS)) ||\r\n      (ns === NAMESPACE.XMLNS &&\r\n       !(qname === 'xmlns' || prefix === 'xmlns')))\r\n      utils.NamespaceError();\r\n\r\n    this._setAttributeNS(ns, qname, String(value));\r\n  }},\r\n\r\n  setAttributeNode: { value: function setAttributeNode(attr) {\r\n    if (attr.ownerElement !== null && attr.ownerElement !== this) {\r\n      throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n    }\r\n    var result = null;\r\n    var oldAttrs = this._attrsByQName[attr.name];\r\n    if (oldAttrs) {\r\n      if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; }\r\n      if (oldAttrs.some(function(a) { return a===attr; })) {\r\n        return attr;\r\n      } else if (attr.ownerElement !== null) {\r\n        throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n      }\r\n      oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this);\r\n      result = oldAttrs[0];\r\n    }\r\n    this.setAttributeNodeNS(attr);\r\n    return result;\r\n  }},\r\n\r\n  setAttributeNodeNS: { value: function setAttributeNodeNS(attr) {\r\n    if (attr.ownerElement !== null) {\r\n      throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR);\r\n    }\r\n    var ns = attr.namespaceURI;\r\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n    var oldAttr = this._attrsByLName[key];\r\n    if (oldAttr) { this.removeAttributeNode(oldAttr); }\r\n    attr._setOwnerElement(this);\r\n    this._attrsByLName[key] = attr;\r\n    if (this._attributes) {\r\n      this._attributes[this._attrKeys.length] = attr;\r\n    }\r\n    this._attrKeys.push(key);\r\n    this._addQName(attr);\r\n    if (this._newattrhook) this._newattrhook(attr.name, attr.value);\r\n    return oldAttr || null;\r\n  }},\r\n\r\n  removeAttribute: { value: function removeAttribute(qname) {\r\n    qname = String(qname);\r\n    if (/[A-Z]/.test(qname) && this.isHTML)\r\n      qname = utils.toASCIILowerCase(qname);\r\n\r\n    var attr = this._attrsByQName[qname];\r\n    if (!attr) return;\r\n\r\n    // If there is more than one match for this qname\r\n    // so don't delete the qname mapping, just remove the first\r\n    // element from it.\r\n    if (Array.isArray(attr)) {\r\n      if (attr.length > 2) {\r\n        attr = attr.shift();  // remove it from the array\r\n      }\r\n      else {\r\n        this._attrsByQName[qname] = attr[1];\r\n        attr = attr[0];\r\n      }\r\n    }\r\n    else {\r\n      // only a single match, so remove the qname mapping\r\n      this._attrsByQName[qname] = undefined;\r\n    }\r\n\r\n    var ns = attr.namespaceURI;\r\n    // Now attr is the removed attribute.  Figure out its\r\n    // ns+lname key and remove it from the other mapping as well.\r\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n    this._attrsByLName[key] = undefined;\r\n\r\n    var i = this._attrKeys.indexOf(key);\r\n    if (this._attributes) {\r\n      Array.prototype.splice.call(this._attributes, i, 1);\r\n      this._attributes[qname] = undefined;\r\n    }\r\n    this._attrKeys.splice(i, 1);\r\n\r\n    // Onchange handler for the attribute\r\n    var onchange = attr.onchange;\r\n    attr._setOwnerElement(null);\r\n    if (onchange) {\r\n      onchange.call(attr, this, attr.localName, attr.value, null);\r\n    }\r\n    // Mutation event\r\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\r\n  }},\r\n\r\n  removeAttributeNS: { value: function removeAttributeNS(ns, lname) {\r\n    ns = (ns === undefined || ns === null) ? '' : String(ns);\r\n    lname = String(lname);\r\n    var key = ns + '|' + lname;\r\n    var attr = this._attrsByLName[key];\r\n    if (!attr) return;\r\n\r\n    this._attrsByLName[key] = undefined;\r\n\r\n    var i = this._attrKeys.indexOf(key);\r\n    if (this._attributes) {\r\n      Array.prototype.splice.call(this._attributes, i, 1);\r\n    }\r\n    this._attrKeys.splice(i, 1);\r\n\r\n    // Now find the same Attr object in the qname mapping and remove it\r\n    // But be careful because there may be more than one match.\r\n    this._removeQName(attr);\r\n\r\n    // Onchange handler for the attribute\r\n    var onchange = attr.onchange;\r\n    attr._setOwnerElement(null);\r\n    if (onchange) {\r\n      onchange.call(attr, this, attr.localName, attr.value, null);\r\n    }\r\n    // Mutation event\r\n    if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr);\r\n  }},\r\n\r\n  removeAttributeNode: { value: function removeAttributeNode(attr) {\r\n    var ns = attr.namespaceURI;\r\n    var key = (ns === null ? '' : ns) + '|' + attr.localName;\r\n    if (this._attrsByLName[key] !== attr) {\r\n      utils.NotFoundError();\r\n    }\r\n    this.removeAttributeNS(ns, attr.localName);\r\n    return attr;\r\n  }},\r\n\r\n  getAttributeNames: { value: function getAttributeNames() {\r\n    var elt = this;\r\n    return this._attrKeys.map(function(key) {\r\n      return elt._attrsByLName[key].name;\r\n    });\r\n  }},\r\n\r\n  // This 'raw' version of getAttribute is used by the getter functions\r\n  // of reflected attributes. It skips some error checking and\r\n  // namespace steps\r\n  _getattr: { value: function _getattr(qname) {\r\n    // Assume that qname is already lowercased, so don't do it here.\r\n    // Also don't check whether attr is an array: a qname with no\r\n    // prefix will never have two matching Attr objects (because\r\n    // setAttributeNS doesn't allow a non-null namespace with a\r\n    // null prefix.\r\n    var attr = this._attrsByQName[qname];\r\n    return attr ? attr.value : null;\r\n  }},\r\n\r\n  // The raw version of setAttribute for reflected idl attributes.\r\n  _setattr: { value: function _setattr(qname, value) {\r\n    var attr = this._attrsByQName[qname];\r\n    var isnew;\r\n    if (!attr) {\r\n      attr = this._newattr(qname);\r\n      isnew = true;\r\n    }\r\n    attr.value = String(value);\r\n    if (this._attributes) this._attributes[qname] = attr;\r\n    if (isnew && this._newattrhook) this._newattrhook(qname, value);\r\n  }},\r\n\r\n  // Create a new Attr object, insert it, and return it.\r\n  // Used by setAttribute() and by set()\r\n  _newattr: { value: function _newattr(qname) {\r\n    var attr = new Attr(this, qname, null, null);\r\n    var key = '|' + qname;\r\n    this._attrsByQName[qname] = attr;\r\n    this._attrsByLName[key] = attr;\r\n    if (this._attributes) {\r\n      this._attributes[this._attrKeys.length] = attr;\r\n    }\r\n    this._attrKeys.push(key);\r\n    return attr;\r\n  }},\r\n\r\n  // Add a qname->Attr mapping to the _attrsByQName object, taking into\r\n  // account that there may be more than one attr object with the\r\n  // same qname\r\n  _addQName: { value: function(attr) {\r\n    var qname = attr.name;\r\n    var existing = this._attrsByQName[qname];\r\n    if (!existing) {\r\n      this._attrsByQName[qname] = attr;\r\n    }\r\n    else if (Array.isArray(existing)) {\r\n      existing.push(attr);\r\n    }\r\n    else {\r\n      this._attrsByQName[qname] = [existing, attr];\r\n    }\r\n    if (this._attributes) this._attributes[qname] = attr;\r\n  }},\r\n\r\n  // Remove a qname->Attr mapping to the _attrsByQName object, taking into\r\n  // account that there may be more than one attr object with the\r\n  // same qname\r\n  _removeQName: { value: function(attr) {\r\n    var qname = attr.name;\r\n    var target = this._attrsByQName[qname];\r\n\r\n    if (Array.isArray(target)) {\r\n      var idx = target.indexOf(attr);\r\n      utils.assert(idx !== -1); // It must be here somewhere\r\n      if (target.length === 2) {\r\n        this._attrsByQName[qname] = target[1-idx];\r\n        if (this._attributes) {\r\n          this._attributes[qname] = this._attrsByQName[qname];\r\n        }\r\n      } else {\r\n        target.splice(idx, 1);\r\n        if (this._attributes && this._attributes[qname] === attr) {\r\n          this._attributes[qname] = target[0];\r\n        }\r\n      }\r\n    }\r\n    else {\r\n      utils.assert(target === attr);  // If only one, it must match\r\n      this._attrsByQName[qname] = undefined;\r\n      if (this._attributes) {\r\n        this._attributes[qname] = undefined;\r\n      }\r\n    }\r\n  }},\r\n\r\n  // Return the number of attributes\r\n  _numattrs: { get: function() { return this._attrKeys.length; }},\r\n  // Return the nth Attr object\r\n  _attr: { value: function(n) {\r\n    return this._attrsByLName[this._attrKeys[n]];\r\n  }},\r\n\r\n  // Define getters and setters for an 'id' property that reflects\r\n  // the content attribute 'id'.\r\n  id: attributes.property({name: 'id'}),\r\n\r\n  // Define getters and setters for a 'className' property that reflects\r\n  // the content attribute 'class'.\r\n  className: attributes.property({name: 'class'}),\r\n\r\n  classList: { get: function() {\r\n    var self = this;\r\n    if (this._classList) {\r\n      return this._classList;\r\n    }\r\n    var dtlist = new DOMTokenList(\r\n      function() {\r\n        return self.className || \"\";\r\n      },\r\n      function(v) {\r\n        self.className = v;\r\n      }\r\n    );\r\n    this._classList = dtlist;\r\n    return dtlist;\r\n  }, set: function(v) { this.className = v; }},\r\n\r\n  matches: { value: function(selector) {\r\n    return select.matches(this, selector);\r\n  }},\r\n\r\n  closest: { value: function(selector) {\r\n    var el = this;\r\n\tdo {\r\n\t  if (el.matches && el.matches(selector)) { return el; }\r\n\t  el = el.parentElement || el.parentNode;\r\n\t} while (el !== null && el.nodeType === Node.ELEMENT_NODE);\r\n\treturn null;\r\n  }},\r\n\r\n  querySelector: { value: function(selector) {\r\n    return select(selector, this)[0];\r\n  }},\r\n\r\n  querySelectorAll: { value: function(selector) {\r\n    var nodes = select(selector, this);\r\n    return nodes.item ? nodes : new NodeList(nodes);\r\n  }}\r\n\r\n});\r\n\r\nObject.defineProperties(Element.prototype, ChildNode);\r\nObject.defineProperties(Element.prototype, NonDocumentTypeChildNode);\r\n\r\n// Register special handling for the id attribute\r\nattributes.registerChangeHandler(Element, 'id',\r\n function(element, lname, oldval, newval) {\r\n   if (element.rooted) {\r\n     if (oldval) {\r\n       element.ownerDocument.delId(oldval, element);\r\n     }\r\n     if (newval) {\r\n       element.ownerDocument.addId(newval, element);\r\n     }\r\n   }\r\n }\r\n);\r\nattributes.registerChangeHandler(Element, 'class',\r\n function(element, lname, oldval, newval) {\r\n   if (element._classList) { element._classList._update(); }\r\n }\r\n);\r\n\r\n// The Attr class represents a single attribute.  The values in\r\n// _attrsByQName and _attrsByLName are instances of this class.\r\nfunction Attr(elt, lname, prefix, namespace, value) {\r\n  // localName and namespace are constant for any attr object.\r\n  // But value may change.  And so can prefix, and so, therefore can name.\r\n  this.localName = lname;\r\n  this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix);\r\n  this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace);\r\n  this.data = value;\r\n  // Set ownerElement last to ensure it is hooked up to onchange handler\r\n  this._setOwnerElement(elt);\r\n}\r\n\r\n// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned.\r\nAttr.prototype = Object.create(Object.prototype, {\r\n  ownerElement: {\r\n    get: function() { return this._ownerElement; },\r\n  },\r\n  _setOwnerElement: { value: function _setOwnerElement(elt) {\r\n    this._ownerElement = elt;\r\n    if (this.prefix === null && this.namespaceURI === null && elt) {\r\n      this.onchange = elt._attributeChangeHandlers[this.localName];\r\n    } else {\r\n      this.onchange = null;\r\n    }\r\n  }},\r\n\r\n  name: { get: function() {\r\n    return this.prefix ? this.prefix + ':' + this.localName : this.localName;\r\n  }},\r\n\r\n  specified: { get: function() {\r\n    // Deprecated\r\n    return true;\r\n  }},\r\n\r\n  value: {\r\n    get: function() {\r\n      return this.data;\r\n    },\r\n    set: function(value) {\r\n      var oldval = this.data;\r\n      value = (value === undefined) ? '' : value + '';\r\n      if (value === oldval) return;\r\n\r\n      this.data = value;\r\n\r\n      // Run the onchange hook for the attribute\r\n      // if there is one.\r\n      if (this.ownerElement) {\r\n        if (this.onchange)\r\n          this.onchange(this.ownerElement,this.localName, oldval, value);\r\n\r\n        // Generate a mutation event if the element is rooted\r\n        if (this.ownerElement.rooted)\r\n          this.ownerElement.ownerDocument.mutateAttr(this, oldval);\r\n      }\r\n    },\r\n  },\r\n\r\n  cloneNode: { value: function cloneNode(deep) {\r\n    // Both this method and Document#createAttribute*() create unowned Attrs\r\n    return new Attr(\r\n      null, this.localName, this.prefix, this.namespaceURI, this.data\r\n    );\r\n  }},\r\n\r\n  // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr)\r\n  nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } },\r\n  nodeName: { get: function() { return this.name; } },\r\n  nodeValue: {\r\n    get: function() { return this.value; },\r\n    set: function(v) { this.value = v; },\r\n  },\r\n  textContent: {\r\n    get: function() { return this.value; },\r\n    set: function(v) {\r\n      if (v === null || v === undefined) { v = ''; }\r\n      this.value = v;\r\n    },\r\n  },\r\n  innerText: {\r\n    get: function() { return this.value; },\r\n    set: function(v) {\r\n      if (v === null || v === undefined) { v = ''; }\r\n      this.value = v;\r\n    },\r\n  },\r\n});\r\n// Sneakily export this class for use by Document.createAttribute()\r\nElement._Attr = Attr;\r\n\r\n// The attributes property of an Element will be an instance of this class.\r\n// This class is really just a dummy, though. It only defines a length\r\n// property and an item() method. The AttrArrayProxy that\r\n// defines the public API just uses the Element object itself.\r\nfunction AttributesArray(elt) {\r\n  NamedNodeMap.call(this, elt);\r\n  for (var name in elt._attrsByQName) {\r\n    this[name] = elt._attrsByQName[name];\r\n  }\r\n  for (var i = 0; i < elt._attrKeys.length; i++) {\r\n    this[i] = elt._attrsByLName[elt._attrKeys[i]];\r\n  }\r\n}\r\nAttributesArray.prototype = Object.create(NamedNodeMap.prototype, {\r\n  length: { get: function() {\r\n    return this.element._attrKeys.length;\r\n  }, set: function() { /* ignore */ } },\r\n  item: { value: function(n) {\r\n    /* jshint bitwise: false */\r\n    n = n >>> 0;\r\n    if (n >= this.length) { return null; }\r\n    return this.element._attrsByLName[this.element._attrKeys[n]];\r\n    /* jshint bitwise: true */\r\n  } },\r\n});\r\n\r\n// We can't make direct array access work (without Proxies, node >=6)\r\n// but we can make `Array.from(node.attributes)` and for-of loops work.\r\nif (globalThis.Symbol?.iterator) {\r\n    AttributesArray.prototype[globalThis.Symbol.iterator] = function() {\r\n        var i=0, n=this.length, self=this;\r\n        return {\r\n            next: function() {\r\n                if (i<n) return { value: self.item(i++) };\r\n                return { done: true };\r\n            }\r\n        };\r\n    };\r\n}\r\n\r\n\r\n// The children property of an Element will be an instance of this class.\r\n// It defines length, item() and namedItem() and will be wrapped by an\r\n// HTMLCollection when exposed through the DOM.\r\nfunction ChildrenCollection(e) {\r\n  this.element = e;\r\n  this.updateCache();\r\n}\r\n\r\nChildrenCollection.prototype = Object.create(Object.prototype, {\r\n  length: { get: function() {\r\n    this.updateCache();\r\n    return this.childrenByNumber.length;\r\n  } },\r\n  item: { value: function item(n) {\r\n    this.updateCache();\r\n    return this.childrenByNumber[n] || null;\r\n  } },\r\n\r\n  namedItem: { value: function namedItem(name) {\r\n    this.updateCache();\r\n    return this.childrenByName[name] || null;\r\n  } },\r\n\r\n  // This attribute returns the entire name->element map.\r\n  // It is not part of the HTMLCollection API, but we need it in\r\n  // src/HTMLCollectionProxy\r\n  namedItems: { get: function() {\r\n    this.updateCache();\r\n    return this.childrenByName;\r\n  } },\r\n\r\n  updateCache: { value: function updateCache() {\r\n    var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/;\r\n    if (this.lastModTime !== this.element.lastModTime) {\r\n      this.lastModTime = this.element.lastModTime;\r\n\r\n      var n = this.childrenByNumber && this.childrenByNumber.length || 0;\r\n      for(var i = 0; i < n; i++) {\r\n        this[i] = undefined;\r\n      }\r\n\r\n      this.childrenByNumber = [];\r\n      this.childrenByName = Object.create(null);\r\n\r\n      for (var c = this.element.firstChild; c !== null; c = c.nextSibling) {\r\n        if (c.nodeType === Node.ELEMENT_NODE) {\r\n\r\n          this[this.childrenByNumber.length] = c;\r\n          this.childrenByNumber.push(c);\r\n\r\n          // XXX Are there any requirements about the namespace\r\n          // of the id property?\r\n          var id = c.getAttribute('id');\r\n\r\n          // If there is an id that is not already in use...\r\n          if (id && !this.childrenByName[id])\r\n            this.childrenByName[id] = c;\r\n\r\n          // For certain HTML elements we check the name attribute\r\n          var name = c.getAttribute('name');\r\n          if (name &&\r\n            this.element.namespaceURI === NAMESPACE.HTML &&\r\n            namedElts.test(this.element.localName) &&\r\n            !this.childrenByName[name])\r\n            this.childrenByName[id] = c;\r\n        }\r\n      }\r\n    }\r\n  } },\r\n});\r\n\r\n// These functions return predicates for filtering elements.\r\n// They're used by the Document and Element classes for methods like\r\n// getElementsByTagName and getElementsByClassName\r\n\r\nfunction localNameElementFilter(lname) {\r\n  return function(e) { return e.localName === lname; };\r\n}\r\n\r\nfunction htmlLocalNameElementFilter(lname) {\r\n  var lclname = utils.toASCIILowerCase(lname);\r\n  if (lclname === lname)\r\n    return localNameElementFilter(lname);\r\n\r\n  return function(e) {\r\n    return e.isHTML ? e.localName === lclname : e.localName === lname;\r\n  };\r\n}\r\n\r\nfunction namespaceElementFilter(ns) {\r\n  return function(e) { return e.namespaceURI === ns; };\r\n}\r\n\r\nfunction namespaceLocalNameElementFilter(ns, lname) {\r\n  return function(e) {\r\n    return e.namespaceURI === ns && e.localName === lname;\r\n  };\r\n}\r\n\r\nfunction classNamesElementFilter(names) {\r\n  return function(e) {\r\n    return names.every(function(n) { return e.classList.contains(n); });\r\n  };\r\n}\r\n\r\nfunction elementNameFilter(name) {\r\n  return function(e) {\r\n    // All the *HTML elements* in the document with the given name attribute\r\n    if (e.namespaceURI !== NAMESPACE.HTML) { return false; }\r\n    return e.getAttribute('name') === name;\r\n  };\r\n}\r\n","\"use strict\";\r\nmodule.exports = Leaf;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar utils = require('./utils');\r\nvar HierarchyRequestError = utils.HierarchyRequestError;\r\nvar NotFoundError = utils.NotFoundError;\r\n\r\n// This class defines common functionality for node subtypes that\r\n// can never have children\r\nfunction Leaf() {\r\n  Node.call(this);\r\n}\r\n\r\nLeaf.prototype = Object.create(Node.prototype, {\r\n  hasChildNodes: { value: function() { return false; }},\r\n  firstChild: { value: null },\r\n  lastChild: { value: null },\r\n  insertBefore: { value: function(node, child) {\r\n    if (!node.nodeType) throw new TypeError('not a node');\r\n    HierarchyRequestError();\r\n  }},\r\n  replaceChild: { value: function(node, child) {\r\n    if (!node.nodeType) throw new TypeError('not a node');\r\n    HierarchyRequestError();\r\n  }},\r\n  removeChild: { value: function(node) {\r\n    if (!node.nodeType) throw new TypeError('not a node');\r\n    NotFoundError();\r\n  }},\r\n  removeChildren: { value: function() { /* no op */ }},\r\n  childNodes: { get: function() {\r\n    if (!this._childNodes) this._childNodes = new NodeList();\r\n    return this._childNodes;\r\n  }}\r\n});\r\n","/* jshint bitwise: false */\r\n\"use strict\";\r\nmodule.exports = CharacterData;\r\n\r\nvar Leaf = require('./Leaf');\r\nvar utils = require('./utils');\r\nvar ChildNode = require('./ChildNode');\r\nvar NonDocumentTypeChildNode = require('./NonDocumentTypeChildNode');\r\n\r\nfunction CharacterData() {\r\n  Leaf.call(this);\r\n}\r\n\r\nCharacterData.prototype = Object.create(Leaf.prototype, {\r\n  // DOMString substringData(unsigned long offset,\r\n  //               unsigned long count);\r\n  // The substringData(offset, count) method must run these steps:\r\n  //\r\n  //     If offset is greater than the context object's\r\n  //     length, throw an INDEX_SIZE_ERR exception and\r\n  //     terminate these steps.\r\n  //\r\n  //     If offset+count is greater than the context\r\n  //     object's length, return a DOMString whose value is\r\n  //     the UTF-16 code units from the offsetth UTF-16 code\r\n  //     unit to the end of data.\r\n  //\r\n  //     Return a DOMString whose value is the UTF-16 code\r\n  //     units from the offsetth UTF-16 code unit to the\r\n  //     offset+countth UTF-16 code unit in data.\r\n  substringData: { value: function substringData(offset, count) {\r\n    if (arguments.length < 2) { throw new TypeError(\"Not enough arguments\"); }\r\n    // Convert arguments to WebIDL \"unsigned long\"\r\n    offset = offset >>> 0;\r\n    count = count >>> 0;\r\n    if (offset > this.data.length || offset < 0 || count < 0) {\r\n      utils.IndexSizeError();\r\n    }\r\n    return this.data.substring(offset, offset+count);\r\n  }},\r\n\r\n  // void appendData(DOMString data);\r\n  // The appendData(data) method must append data to the context\r\n  // object's data.\r\n  appendData: { value: function appendData(data) {\r\n    if (arguments.length < 1) { throw new TypeError(\"Not enough arguments\"); }\r\n    this.data += String(data);\r\n  }},\r\n\r\n  // void insertData(unsigned long offset, DOMString data);\r\n  // The insertData(offset, data) method must run these steps:\r\n  //\r\n  //     If offset is greater than the context object's\r\n  //     length, throw an INDEX_SIZE_ERR exception and\r\n  //     terminate these steps.\r\n  //\r\n  //     Insert data into the context object's data after\r\n  //     offset UTF-16 code units.\r\n  //\r\n  insertData: { value: function insertData(offset, data) {\r\n    return this.replaceData(offset, 0, data);\r\n  }},\r\n\r\n\r\n  // void deleteData(unsigned long offset, unsigned long count);\r\n  // The deleteData(offset, count) method must run these steps:\r\n  //\r\n  //     If offset is greater than the context object's\r\n  //     length, throw an INDEX_SIZE_ERR exception and\r\n  //     terminate these steps.\r\n  //\r\n  //     If offset+count is greater than the context\r\n  //     object's length var count be length-offset.\r\n  //\r\n  //     Starting from offset UTF-16 code units remove count\r\n  //     UTF-16 code units from the context object's data.\r\n  deleteData: { value: function deleteData(offset, count) {\r\n    return this.replaceData(offset, count, '');\r\n  }},\r\n\r\n\r\n  // void replaceData(unsigned long offset, unsigned long count,\r\n  //          DOMString data);\r\n  //\r\n  // The replaceData(offset, count, data) method must act as\r\n  // if the deleteData() method is invoked with offset and\r\n  // count as arguments followed by the insertData() method\r\n  // with offset and data as arguments and re-throw any\r\n  // exceptions these methods might have thrown.\r\n  replaceData: { value: function replaceData(offset, count, data) {\r\n    var curtext = this.data, len = curtext.length;\r\n    // Convert arguments to correct WebIDL type\r\n    offset = offset >>> 0;\r\n    count = count >>> 0;\r\n    data = String(data);\r\n\r\n    if (offset > len || offset < 0) utils.IndexSizeError();\r\n\r\n    if (offset+count > len)\r\n      count = len - offset;\r\n\r\n    var prefix = curtext.substring(0, offset),\r\n    suffix = curtext.substring(offset+count);\r\n\r\n    this.data = prefix + data + suffix;\r\n  }},\r\n\r\n  // Utility method that Node.isEqualNode() calls to test Text and\r\n  // Comment nodes for equality.  It is okay to put it here, since\r\n  // Node will have already verified that nodeType is equal\r\n  isEqual: { value: function isEqual(n) {\r\n    return this._data === n._data;\r\n  }},\r\n\r\n  length: { get: function() { return this.data.length; }}\r\n\r\n});\r\n\r\nObject.defineProperties(CharacterData.prototype, ChildNode);\r\nObject.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode);\r\n","\"use strict\";\r\nmodule.exports = Text;\r\n\r\nvar utils = require('./utils');\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction Text(doc, data) {\r\n  CharacterData.call(this);\r\n  this.nodeType = Node.TEXT_NODE;\r\n  this.ownerDocument = doc;\r\n  this._data = data;\r\n  this._index = undefined;\r\n}\r\n\r\nvar nodeValue = {\r\n  get: function() { return this._data; },\r\n  set: function(v) {\r\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n    if (v === this._data) return;\r\n    this._data = v;\r\n    if (this.rooted)\r\n      this.ownerDocument.mutateValue(this);\r\n    if (this.parentNode &&\r\n      this.parentNode._textchangehook)\r\n      this.parentNode._textchangehook(this);\r\n  }\r\n};\r\n\r\nText.prototype = Object.create(CharacterData.prototype, {\r\n  nodeName: { value: \"#text\" },\r\n  // These three attributes are all the same.\r\n  // The data attribute has a [TreatNullAs=EmptyString] but we'll\r\n  // implement that at the interface level\r\n  nodeValue: nodeValue,\r\n  textContent: nodeValue,\r\n  innerText: nodeValue,\r\n  data: {\r\n    get: nodeValue.get,\r\n    set: function(v) {\r\n      nodeValue.set.call(this, v===null ? '' : String(v));\r\n    },\r\n  },\r\n\r\n  splitText: { value: function splitText(offset) {\r\n    if (offset > this._data.length || offset < 0) utils.IndexSizeError();\r\n\r\n    var newdata = this._data.substring(offset),\r\n      newnode = this.ownerDocument.createTextNode(newdata);\r\n    this.data = this.data.substring(0, offset);\r\n\r\n    var parent = this.parentNode;\r\n    if (parent !== null)\r\n      parent.insertBefore(newnode, this.nextSibling);\r\n\r\n    return newnode;\r\n  }},\r\n\r\n  wholeText: { get: function wholeText() {\r\n    var result = this.textContent;\r\n    for (var next = this.nextSibling; next; next = next.nextSibling) {\r\n      if (next.nodeType !== Node.TEXT_NODE) { break; }\r\n      result += next.textContent;\r\n    }\r\n    return result;\r\n  }},\r\n  // Obsolete, removed from spec.\r\n  replaceWholeText: { value: utils.nyi },\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n    return new Text(this.ownerDocument, this._data);\r\n  }},\r\n\r\n});\r\n","\"use strict\";\r\nmodule.exports = Comment;\r\n\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction Comment(doc, data) {\r\n  CharacterData.call(this);\r\n  this.nodeType = Node.COMMENT_NODE;\r\n  this.ownerDocument = doc;\r\n  this._data = data;\r\n}\r\n\r\nvar nodeValue = {\r\n  get: function() { return this._data; },\r\n  set: function(v) {\r\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n    this._data = v;\r\n    if (this.rooted)\r\n      this.ownerDocument.mutateValue(this);\r\n  }\r\n};\r\n\r\nComment.prototype = Object.create(CharacterData.prototype, {\r\n  nodeName: { value: '#comment' },\r\n  nodeValue: nodeValue,\r\n  textContent: nodeValue,\r\n  innerText: nodeValue,\r\n  data: {\r\n    get: nodeValue.get,\r\n    set: function(v) {\r\n      nodeValue.set.call(this, v===null ? '' : String(v));\r\n    },\r\n  },\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n    return new Comment(this.ownerDocument, this._data);\r\n  }},\r\n});\r\n","\"use strict\";\r\nmodule.exports =  DocumentFragment;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar Element = require('./Element');\r\nvar select = require('./select');\r\nvar utils = require('./utils');\r\n\r\nfunction DocumentFragment(doc) {\r\n  ContainerNode.call(this);\r\n  this.nodeType = Node.DOCUMENT_FRAGMENT_NODE;\r\n  this.ownerDocument = doc;\r\n}\r\n\r\nDocumentFragment.prototype = Object.create(ContainerNode.prototype, {\r\n  nodeName: { value: '#document-fragment' },\r\n  nodeValue: {\r\n    get: function() {\r\n      return null;\r\n    },\r\n    set: function() {}\r\n  },\r\n  // Copy the text content getter/setter from Element\r\n  textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'),\r\n\r\n  // Copy the text content getter/setter from Element\r\n  innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'),\r\n\r\n  querySelector: { value: function(selector) {\r\n    // implement in terms of querySelectorAll\r\n    var nodes = this.querySelectorAll(selector);\r\n    return nodes.length ? nodes[0] : null;\r\n  }},\r\n  querySelectorAll: { value: function(selector) {\r\n    // create a context\r\n    var context = Object.create(this);\r\n    // add some methods to the context for zest implementation, without\r\n    // adding them to the public DocumentFragment API\r\n    context.isHTML = true; // in HTML namespace (case-insensitive match)\r\n    context.getElementsByTagName = Element.prototype.getElementsByTagName;\r\n    context.nextElement =\r\n      Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild').\r\n      get;\r\n    // invoke zest\r\n    var nodes = select(selector, context);\r\n    return nodes.item ? nodes : new NodeList(nodes);\r\n  }},\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n      return new DocumentFragment(this.ownerDocument);\r\n  }},\r\n  isEqual: { value: function isEqual(n) {\r\n      // Any two document fragments are shallowly equal.\r\n      // Node.isEqualNode() will test their children for equality\r\n      return true;\r\n  }},\r\n\r\n  // Non-standard, but useful (github issue #73)\r\n  innerHTML: {\r\n    get: function() { return this.serialize(); },\r\n    set: utils.nyi\r\n  },\r\n  outerHTML: {\r\n    get: function() { return this.serialize(); },\r\n    set: utils.nyi\r\n  },\r\n\r\n});\r\n","\"use strict\";\r\nmodule.exports = ProcessingInstruction;\r\n\r\nvar Node = require('./Node');\r\nvar CharacterData = require('./CharacterData');\r\n\r\nfunction ProcessingInstruction(doc, target, data) {\r\n  CharacterData.call(this);\r\n  this.nodeType = Node.PROCESSING_INSTRUCTION_NODE;\r\n  this.ownerDocument = doc;\r\n  this.target = target;\r\n  this._data = data;\r\n}\r\n\r\nvar nodeValue = {\r\n  get: function() { return this._data; },\r\n  set: function(v) {\r\n    if (v === null || v === undefined) { v = ''; } else { v = String(v); }\r\n    this._data = v;\r\n    if (this.rooted) this.ownerDocument.mutateValue(this);\r\n  }\r\n};\r\n\r\nProcessingInstruction.prototype = Object.create(CharacterData.prototype, {\r\n  nodeName: { get: function() { return this.target; }},\r\n  nodeValue: nodeValue,\r\n  textContent: nodeValue,\r\n  innerText: nodeValue,\r\n  data: {\r\n    get: nodeValue.get,\r\n    set: function(v) {\r\n      nodeValue.set.call(this, v===null ? '' : String(v));\r\n    },\r\n  },\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n      return new ProcessingInstruction(this.ownerDocument, this.target, this._data);\r\n  }},\r\n  isEqual: { value: function isEqual(n) {\r\n      return this.target === n.target && this._data === n._data;\r\n  }}\r\n\r\n});\r\n","\"use strict\";\r\nvar NodeFilter = {\r\n  // Constants for acceptNode()\r\n  FILTER_ACCEPT: 1,\r\n  FILTER_REJECT: 2,\r\n  FILTER_SKIP: 3,\r\n\r\n  // Constants for whatToShow\r\n  SHOW_ALL: 0xFFFFFFFF,\r\n  SHOW_ELEMENT: 0x1,\r\n  SHOW_ATTRIBUTE: 0x2, // historical\r\n  SHOW_TEXT: 0x4,\r\n  SHOW_CDATA_SECTION: 0x8, // historical\r\n  SHOW_ENTITY_REFERENCE: 0x10, // historical\r\n  SHOW_ENTITY: 0x20, // historical\r\n  SHOW_PROCESSING_INSTRUCTION: 0x40,\r\n  SHOW_COMMENT: 0x80,\r\n  SHOW_DOCUMENT: 0x100,\r\n  SHOW_DOCUMENT_TYPE: 0x200,\r\n  SHOW_DOCUMENT_FRAGMENT: 0x400,\r\n  SHOW_NOTATION: 0x800 // historical\r\n};\r\n\r\nmodule.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter);\r\n","\"use strict\";\r\n/* exported NodeTraversal */\r\nvar NodeTraversal = module.exports = {\r\n  nextSkippingChildren: nextSkippingChildren,\r\n  nextAncestorSibling: nextAncestorSibling,\r\n  next: next,\r\n  previous: previous,\r\n  deepLastChild: deepLastChild\r\n};\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::nextSkippingChildren\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109\r\n */\r\nfunction nextSkippingChildren(node, stayWithin) {\r\n  if (node === stayWithin) {\r\n    return null;\r\n  }\r\n  if (node.nextSibling !== null) {\r\n    return node.nextSibling;\r\n  }\r\n  return nextAncestorSibling(node, stayWithin);\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::nextAncestorSibling\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93\r\n */\r\nfunction nextAncestorSibling(node, stayWithin) {\r\n  for (node = node.parentNode; node !== null; node = node.parentNode) {\r\n    if (node === stayWithin) {\r\n      return null;\r\n    }\r\n    if (node.nextSibling !== null) {\r\n      return node.nextSibling;\r\n    }\r\n  }\r\n  return null;\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::next\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99\r\n */\r\nfunction next(node, stayWithin) {\r\n  var n;\r\n  n = node.firstChild;\r\n  if (n !== null) {\r\n    return n;\r\n  }\r\n  if (node === stayWithin) {\r\n    return null;\r\n  }\r\n  n = node.nextSibling;\r\n  if (n !== null) {\r\n    return n;\r\n  }\r\n  return nextAncestorSibling(node, stayWithin);\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::deepLastChild\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116\r\n */\r\nfunction deepLastChild(node) {\r\n  while (node.lastChild) {\r\n    node = node.lastChild;\r\n  }\r\n  return node;\r\n}\r\n\r\n/**\r\n * @based on WebKit's NodeTraversal::previous\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121\r\n */\r\nfunction previous(node, stayWithin) {\r\n  var p;\r\n  p = node.previousSibling;\r\n  if (p !== null) {\r\n    return deepLastChild(p);\r\n  }\r\n  p = node.parentNode;\r\n  if (p === stayWithin) {\r\n    return null;\r\n  }\r\n  return p;\r\n}\r\n","\"use strict\";\r\nmodule.exports = TreeWalker;\r\n\r\nvar Node = require('./Node');\r\nvar NodeFilter = require('./NodeFilter');\r\nvar NodeTraversal = require('./NodeTraversal');\r\nvar utils = require('./utils');\r\n\r\nvar mapChild = {\r\n  first: 'firstChild',\r\n  last: 'lastChild',\r\n  next: 'firstChild',\r\n  previous: 'lastChild'\r\n};\r\n\r\nvar mapSibling = {\r\n  first: 'nextSibling',\r\n  last: 'previousSibling',\r\n  next: 'nextSibling',\r\n  previous: 'previousSibling'\r\n};\r\n\r\n/* Private methods and helpers */\r\n\r\n/**\r\n * @spec https://dom.spec.whatwg.org/#concept-traverse-children\r\n * @method\r\n * @access private\r\n * @param {TreeWalker} tw\r\n * @param {string} type One of 'first' or 'last'.\r\n * @return {Node|null}\r\n */\r\nfunction traverseChildren(tw, type) {\r\n  var child, node, parent, result, sibling;\r\n  node = tw._currentNode[mapChild[type]];\r\n  while (node !== null) {\r\n    result = tw._internalFilter(node);\r\n    if (result === NodeFilter.FILTER_ACCEPT) {\r\n      tw._currentNode = node;\r\n      return node;\r\n    }\r\n    if (result === NodeFilter.FILTER_SKIP) {\r\n      child = node[mapChild[type]];\r\n      if (child !== null) {\r\n        node = child;\r\n        continue;\r\n      }\r\n    }\r\n    while (node !== null) {\r\n      sibling = node[mapSibling[type]];\r\n      if (sibling !== null) {\r\n        node = sibling;\r\n        break;\r\n      }\r\n      parent = node.parentNode;\r\n      if (parent === null || parent === tw.root || parent === tw._currentNode) {\r\n        return null;\r\n      } else {\r\n        node = parent;\r\n      }\r\n    }\r\n  }\r\n  return null;\r\n}\r\n\r\n/**\r\n * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings\r\n * @method\r\n * @access private\r\n * @param {TreeWalker} tw\r\n * @param {TreeWalker} type One of 'next' or 'previous'.\r\n * @return {Node|nul}\r\n */\r\nfunction traverseSiblings(tw, type) {\r\n  var node, result, sibling;\r\n  node = tw._currentNode;\r\n  if (node === tw.root) {\r\n    return null;\r\n  }\r\n  while (true) {\r\n    sibling = node[mapSibling[type]];\r\n    while (sibling !== null) {\r\n      node = sibling;\r\n      result = tw._internalFilter(node);\r\n      if (result === NodeFilter.FILTER_ACCEPT) {\r\n        tw._currentNode = node;\r\n        return node;\r\n      }\r\n      sibling = node[mapChild[type]];\r\n      if (result === NodeFilter.FILTER_REJECT || sibling === null) {\r\n        sibling = node[mapSibling[type]];\r\n      }\r\n    }\r\n    node = node.parentNode;\r\n    if (node === null || node === tw.root) {\r\n      return null;\r\n    }\r\n    if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n      return null;\r\n    }\r\n  }\r\n}\r\n\r\n\r\n/* Public API */\r\n\r\n/**\r\n * Latest version: https://dom.spec.whatwg.org/#treewalker\r\n *\r\n * @constructor\r\n * @param {Node} root\r\n * @param {number} whatToShow [optional]\r\n * @param {Function|NodeFilter} filter [optional]\r\n * @throws Error\r\n */\r\nfunction TreeWalker(root, whatToShow, filter) {\r\n  if (!root || !root.nodeType) {\r\n    utils.NotSupportedError();\r\n  }\r\n\r\n  // Read-only properties\r\n  this._root = root;\r\n  this._whatToShow = Number(whatToShow) || 0;\r\n  this._filter = filter || null;\r\n  this._active = false;\r\n  // Read-write property\r\n  this._currentNode = root;\r\n}\r\n\r\nObject.defineProperties(TreeWalker.prototype, {\r\n  root: { get: function() { return this._root; } },\r\n  whatToShow: { get: function() { return this._whatToShow; } },\r\n  filter: { get: function() { return this._filter; } },\r\n\r\n  currentNode: {\r\n    get: function currentNode() {\r\n      return this._currentNode;\r\n    },\r\n    set: function setCurrentNode(v) {\r\n      if (!(v instanceof Node)) {\r\n        throw new TypeError(\"Not a Node\"); // `null` is also not a node\r\n      }\r\n      this._currentNode = v;\r\n    },\r\n  },\r\n\r\n  /**\r\n   * @method\r\n   * @param {Node} node\r\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\r\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\r\n   */\r\n  _internalFilter: { value: function _internalFilter(node) {\r\n    /* jshint bitwise: false */\r\n    var result, filter;\r\n    if (this._active) {\r\n      utils.InvalidStateError();\r\n    }\r\n\r\n    // Maps nodeType to whatToShow\r\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\r\n      return NodeFilter.FILTER_SKIP;\r\n    }\r\n\r\n    filter = this._filter;\r\n    if (filter === null) {\r\n      result = NodeFilter.FILTER_ACCEPT;\r\n    } else {\r\n      this._active = true;\r\n      try {\r\n        if (typeof filter === 'function') {\r\n          result = filter(node);\r\n        } else {\r\n          result = filter.acceptNode(node);\r\n        }\r\n      } finally {\r\n        this._active = false;\r\n      }\r\n    }\r\n\r\n    // Note that coercing to a number means that\r\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\r\n    //  `false` becomes `0` (neither accept, reject, or skip)\r\n    return (+result);\r\n  }},\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode\r\n   * @based on WebKit's TreeWalker::parentNode\r\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  parentNode: { value: function parentNode() {\r\n    var node = this._currentNode;\r\n    while (node !== this.root) {\r\n      node = node.parentNode;\r\n      if (node === null) {\r\n        return null;\r\n      }\r\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n        this._currentNode = node;\r\n        return node;\r\n      }\r\n    }\r\n    return null;\r\n  }},\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  firstChild: { value: function firstChild() {\r\n    return traverseChildren(this, 'first');\r\n  }},\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  lastChild: { value: function lastChild() {\r\n    return traverseChildren(this, 'last');\r\n  }},\r\n\r\n  /**\r\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  previousSibling: { value: function previousSibling() {\r\n    return traverseSiblings(this, 'previous');\r\n  }},\r\n\r\n  /**\r\n   * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  nextSibling: { value: function nextSibling() {\r\n    return traverseSiblings(this, 'next');\r\n  }},\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode\r\n   * @based on WebKit's TreeWalker::previousNode\r\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  previousNode: { value: function previousNode() {\r\n    var node, result, previousSibling, lastChild;\r\n    node = this._currentNode;\r\n    while (node !== this._root) {\r\n      for (previousSibling = node.previousSibling;\r\n           previousSibling;\r\n           previousSibling = node.previousSibling) {\r\n        node = previousSibling;\r\n        result = this._internalFilter(node);\r\n        if (result === NodeFilter.FILTER_REJECT) {\r\n          continue;\r\n        }\r\n        for (lastChild = node.lastChild;\r\n             lastChild;\r\n             lastChild = node.lastChild) {\r\n          node = lastChild;\r\n          result = this._internalFilter(node);\r\n          if (result === NodeFilter.FILTER_REJECT) {\r\n            break;\r\n          }\r\n        }\r\n        if (result === NodeFilter.FILTER_ACCEPT) {\r\n          this._currentNode = node;\r\n          return node;\r\n        }\r\n      }\r\n      if (node === this.root || node.parentNode === null) {\r\n        return null;\r\n      }\r\n      node = node.parentNode;\r\n      if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) {\r\n        this._currentNode = node;\r\n        return node;\r\n      }\r\n    }\r\n    return null;\r\n  }},\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode\r\n   * @based on WebKit's TreeWalker::nextNode\r\n   * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  nextNode: { value: function nextNode() {\r\n    var node, result, firstChild, nextSibling;\r\n    node = this._currentNode;\r\n    result = NodeFilter.FILTER_ACCEPT;\r\n\r\n    CHILDREN:\r\n    while (true) {\r\n      for (firstChild = node.firstChild;\r\n           firstChild;\r\n           firstChild = node.firstChild) {\r\n        node = firstChild;\r\n        result = this._internalFilter(node);\r\n        if (result === NodeFilter.FILTER_ACCEPT) {\r\n          this._currentNode = node;\r\n          return node;\r\n        } else if (result === NodeFilter.FILTER_REJECT) {\r\n          break;\r\n        }\r\n      }\r\n      for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root);\r\n           nextSibling;\r\n           nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) {\r\n        node = nextSibling;\r\n        result = this._internalFilter(node);\r\n        if (result === NodeFilter.FILTER_ACCEPT) {\r\n          this._currentNode = node;\r\n          return node;\r\n        } else if (result === NodeFilter.FILTER_SKIP) {\r\n          continue CHILDREN;\r\n        }\r\n      }\r\n      return null;\r\n    }\r\n  }},\r\n\r\n  /** For compatibility with web-platform-tests. */\r\n  toString: { value: function toString() {\r\n    return \"[object TreeWalker]\";\r\n  }},\r\n});\r\n","\"use strict\";\r\nmodule.exports = NodeIterator;\r\n\r\nvar NodeFilter = require('./NodeFilter');\r\nvar NodeTraversal = require('./NodeTraversal');\r\nvar utils = require('./utils');\r\n\r\n/* Private methods and helpers */\r\n\r\n/**\r\n * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious\r\n * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51\r\n */\r\nfunction move(node, stayWithin, directionIsNext) {\r\n  if (directionIsNext) {\r\n    return NodeTraversal.next(node, stayWithin);\r\n  } else {\r\n    if (node === stayWithin) {\r\n      return null;\r\n    }\r\n    return NodeTraversal.previous(node, null);\r\n  }\r\n}\r\n\r\nfunction isInclusiveAncestor(node, possibleChild) {\r\n  for ( ; possibleChild; possibleChild = possibleChild.parentNode) {\r\n    if (node === possibleChild) { return true; }\r\n  }\r\n  return false;\r\n}\r\n\r\n/**\r\n * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse\r\n * @method\r\n * @access private\r\n * @param {NodeIterator} ni\r\n * @param {string} direction One of 'next' or 'previous'.\r\n * @return {Node|null}\r\n */\r\nfunction traverse(ni, directionIsNext) {\r\n  var node, beforeNode;\r\n  node = ni._referenceNode;\r\n  beforeNode = ni._pointerBeforeReferenceNode;\r\n  while (true) {\r\n    if (beforeNode === directionIsNext) {\r\n      beforeNode = !beforeNode;\r\n    } else {\r\n      node = move(node, ni._root, directionIsNext);\r\n      if (node === null) {\r\n        return null;\r\n      }\r\n    }\r\n    var result = ni._internalFilter(node);\r\n    if (result === NodeFilter.FILTER_ACCEPT) {\r\n      break;\r\n    }\r\n  }\r\n  ni._referenceNode = node;\r\n  ni._pointerBeforeReferenceNode = beforeNode;\r\n  return node;\r\n}\r\n\r\n/* Public API */\r\n\r\n/**\r\n * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator\r\n * Latest version: http://www.w3.org/TR/dom/#nodeiterator\r\n *\r\n * @constructor\r\n * @param {Node} root\r\n * @param {number} whatToShow [optional]\r\n * @param {Function|NodeFilter} filter [optional]\r\n * @throws Error\r\n */\r\nfunction NodeIterator(root, whatToShow, filter) {\r\n  if (!root || !root.nodeType) {\r\n    utils.NotSupportedError();\r\n  }\r\n\r\n  // Read-only properties\r\n  this._root = root;\r\n  this._referenceNode = root;\r\n  this._pointerBeforeReferenceNode = true;\r\n  this._whatToShow = Number(whatToShow) || 0;\r\n  this._filter = filter || null;\r\n  this._active = false;\r\n  // Record active node iterators in the document, in order to perform\r\n  // \"node iterator pre-removal steps\".\r\n  root.doc._attachNodeIterator(this);\r\n}\r\n\r\nObject.defineProperties(NodeIterator.prototype, {\r\n  root: { get: function root() {\r\n    return this._root;\r\n  } },\r\n  referenceNode: { get: function referenceNode() {\r\n    return this._referenceNode;\r\n  } },\r\n  pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() {\r\n    return this._pointerBeforeReferenceNode;\r\n  } },\r\n  whatToShow: { get: function whatToShow() {\r\n    return this._whatToShow;\r\n  } },\r\n  filter: { get: function filter() {\r\n    return this._filter;\r\n  } },\r\n\r\n  /**\r\n   * @method\r\n   * @param {Node} node\r\n   * @return {Number} Constant NodeFilter.FILTER_ACCEPT,\r\n   *  NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP.\r\n   */\r\n  _internalFilter: { value: function _internalFilter(node) {\r\n    /* jshint bitwise: false */\r\n    var result, filter;\r\n    if (this._active) {\r\n      utils.InvalidStateError();\r\n    }\r\n\r\n    // Maps nodeType to whatToShow\r\n    if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) {\r\n      return NodeFilter.FILTER_SKIP;\r\n    }\r\n\r\n    filter = this._filter;\r\n    if (filter === null) {\r\n      result = NodeFilter.FILTER_ACCEPT;\r\n    } else {\r\n      this._active = true;\r\n      try {\r\n        if (typeof filter === 'function') {\r\n          result = filter(node);\r\n        } else {\r\n          result = filter.acceptNode(node);\r\n        }\r\n      } finally {\r\n        this._active = false;\r\n      }\r\n    }\r\n\r\n    // Note that coercing to a number means that\r\n    //  `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT)\r\n    //  `false` becomes `0` (neither accept, reject, or skip)\r\n    return (+result);\r\n  } },\r\n\r\n  /**\r\n   * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps\r\n   * @method\r\n   * @return void\r\n   */\r\n  _preremove: { value: function _preremove(toBeRemovedNode) {\r\n    if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; }\r\n    if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; }\r\n    if (this._pointerBeforeReferenceNode) {\r\n      var next = toBeRemovedNode;\r\n      while (next.lastChild) {\r\n        next = next.lastChild;\r\n      }\r\n      next = NodeTraversal.next(next, this.root);\r\n      if (next) {\r\n        this._referenceNode = next;\r\n        return;\r\n      }\r\n      this._pointerBeforeReferenceNode = false;\r\n      // fall through\r\n    }\r\n    if (toBeRemovedNode.previousSibling === null) {\r\n      this._referenceNode = toBeRemovedNode.parentNode;\r\n    } else {\r\n      this._referenceNode = toBeRemovedNode.previousSibling;\r\n      var lastChild;\r\n      for (lastChild = this._referenceNode.lastChild;\r\n           lastChild;\r\n           lastChild = this._referenceNode.lastChild) {\r\n        this._referenceNode = lastChild;\r\n      }\r\n    }\r\n  } },\r\n\r\n  /**\r\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  nextNode: { value: function nextNode() {\r\n    return traverse(this, true);\r\n  } },\r\n\r\n  /**\r\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode\r\n   * @method\r\n   * @return {Node|null}\r\n   */\r\n  previousNode: { value: function previousNode() {\r\n    return traverse(this, false);\r\n  } },\r\n\r\n  /**\r\n   * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach\r\n   * @method\r\n   * @return void\r\n   */\r\n  detach: { value: function detach() {\r\n    /* \"The detach() method must do nothing.\r\n     * Its functionality (disabling a NodeIterator object) was removed,\r\n     * but the method itself is preserved for compatibility.\r\n     */\r\n  } },\r\n\r\n  /** For compatibility with web-platform-tests. */\r\n  toString: { value: function toString() {\r\n    return \"[object NodeIterator]\";\r\n  } },\r\n});\r\n","\"use strict\";\r\nmodule.exports = URL;\r\n\r\nfunction URL(url) {\r\n  if (!url) return Object.create(URL.prototype);\r\n  // Can't use String.trim() since it defines whitespace differently than HTML\r\n  this.url = url.replace(/^[ \\t\\n\\r\\f]+|[ \\t\\n\\r\\f]+$/g, \"\");\r\n\r\n  // See http://tools.ietf.org/html/rfc3986#appendix-B\r\n  // and https://url.spec.whatwg.org/#parsing\r\n  var match = URL.pattern.exec(this.url);\r\n  if (match) {\r\n    if (match[2]) this.scheme = match[2];\r\n    if (match[4]) {\r\n      // parse username/password\r\n      var userinfo = match[4].match(URL.userinfoPattern);\r\n      if (userinfo) {\r\n        this.username = userinfo[1];\r\n        this.password = userinfo[3];\r\n        match[4] = match[4].substring(userinfo[0].length);\r\n      }\r\n      if (match[4].match(URL.portPattern)) {\r\n        var pos = match[4].lastIndexOf(':');\r\n        this.host = match[4].substring(0, pos);\r\n        this.port = match[4].substring(pos+1);\r\n      }\r\n      else {\r\n        this.host = match[4];\r\n      }\r\n    }\r\n    if (match[5]) this.path = match[5];\r\n    if (match[6]) this.query = match[7];\r\n    if (match[8]) this.fragment = match[9];\r\n  }\r\n}\r\n\r\nURL.pattern = /^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/;\r\nURL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/;\r\nURL.portPattern = /:\\d+$/;\r\nURL.authorityPattern = /^[^:\\/?#]+:\\/\\//;\r\nURL.hierarchyPattern = /^[^:\\/?#]+:\\//;\r\n\r\n// Return a percentEncoded version of s.\r\n// S should be a single-character string\r\n// XXX: needs to do utf-8 encoding?\r\nURL.percentEncode = function percentEncode(s) {\r\n  var c = s.charCodeAt(0);\r\n  if (c < 256) return \"%\" + c.toString(16);\r\n  else throw Error(\"can't percent-encode codepoints > 255 yet\");\r\n};\r\n\r\nURL.prototype = {\r\n  constructor: URL,\r\n\r\n  // XXX: not sure if this is the precise definition of absolute\r\n  isAbsolute: function() { return !!this.scheme; },\r\n  isAuthorityBased: function() {\r\n    return URL.authorityPattern.test(this.url);\r\n  },\r\n  isHierarchical: function() {\r\n    return URL.hierarchyPattern.test(this.url);\r\n  },\r\n\r\n  toString: function() {\r\n    var s = \"\";\r\n    if (this.scheme !== undefined) s += this.scheme + \":\";\r\n    if (this.isAbsolute()) {\r\n      s += '//';\r\n      if (this.username || this.password) {\r\n        s += this.username || '';\r\n        if (this.password) {\r\n          s += ':' + this.password;\r\n        }\r\n        s += '@';\r\n      }\r\n      if (this.host) {\r\n        s += this.host;\r\n      }\r\n    }\r\n    if (this.port !== undefined) s += \":\" + this.port;\r\n    if (this.path !== undefined) s += this.path;\r\n    if (this.query !== undefined) s += \"?\" + this.query;\r\n    if (this.fragment !== undefined) s += \"#\" + this.fragment;\r\n    return s;\r\n  },\r\n\r\n  // See: http://tools.ietf.org/html/rfc3986#section-5.2\r\n  // and https://url.spec.whatwg.org/#constructors\r\n  resolve: function(relative) {\r\n    var base = this;           // The base url we're resolving against\r\n    var r = new URL(relative); // The relative reference url to resolve\r\n    var t = new URL();         // The absolute target url we will return\r\n\r\n    if (r.scheme !== undefined) {\r\n      t.scheme = r.scheme;\r\n      t.username = r.username;\r\n      t.password = r.password;\r\n      t.host = r.host;\r\n      t.port = r.port;\r\n      t.path = remove_dot_segments(r.path);\r\n      t.query = r.query;\r\n    }\r\n    else {\r\n      t.scheme = base.scheme;\r\n      if (r.host !== undefined) {\r\n        t.username = r.username;\r\n        t.password = r.password;\r\n        t.host = r.host;\r\n        t.port = r.port;\r\n        t.path = remove_dot_segments(r.path);\r\n        t.query = r.query;\r\n      }\r\n      else {\r\n        t.username = base.username;\r\n        t.password = base.password;\r\n        t.host = base.host;\r\n        t.port = base.port;\r\n        if (!r.path) { // undefined or empty\r\n          t.path = base.path;\r\n          if (r.query !== undefined)\r\n            t.query = r.query;\r\n          else\r\n            t.query = base.query;\r\n        }\r\n        else {\r\n          if (r.path.charAt(0) === \"/\") {\r\n            t.path = remove_dot_segments(r.path);\r\n          }\r\n          else {\r\n            t.path = merge(base.path, r.path);\r\n            t.path = remove_dot_segments(t.path);\r\n          }\r\n          t.query = r.query;\r\n        }\r\n      }\r\n    }\r\n    t.fragment = r.fragment;\r\n\r\n    return t.toString();\r\n\r\n\r\n    function merge(basepath, refpath) {\r\n      if (base.host !== undefined && !base.path)\r\n        return \"/\" + refpath;\r\n\r\n      var lastslash = basepath.lastIndexOf(\"/\");\r\n      if (lastslash === -1)\r\n        return refpath;\r\n      else\r\n        return basepath.substring(0, lastslash+1) + refpath;\r\n    }\r\n\r\n    function remove_dot_segments(path) {\r\n      if (!path) return path; // For \"\" or undefined\r\n\r\n      var output = \"\";\r\n      while(path.length > 0) {\r\n        if (path === \".\" || path === \"..\") {\r\n          path = \"\";\r\n          break;\r\n        }\r\n\r\n        var twochars = path.substring(0,2);\r\n        var threechars = path.substring(0,3);\r\n        var fourchars = path.substring(0,4);\r\n        if (threechars === \"../\") {\r\n          path = path.substring(3);\r\n        }\r\n        else if (twochars === \"./\") {\r\n          path = path.substring(2);\r\n        }\r\n        else if (threechars === \"/./\") {\r\n          path = \"/\" + path.substring(3);\r\n        }\r\n        else if (twochars === \"/.\" && path.length === 2) {\r\n          path = \"/\";\r\n        }\r\n        else if (fourchars === \"/../\" ||\r\n             (threechars === \"/..\" && path.length === 3)) {\r\n          path = \"/\" + path.substring(4);\r\n\r\n          output = output.replace(/\\/?[^\\/]*$/, \"\");\r\n        }\r\n        else {\r\n          var segment = path.match(/(\\/?([^\\/]*))/)[0];\r\n          output += segment;\r\n          path = path.substring(segment.length);\r\n        }\r\n      }\r\n\r\n      return output;\r\n    }\r\n  },\r\n};\r\n","\"use strict\";\r\nmodule.exports = CustomEvent;\r\n\r\nvar Event = require('./Event');\r\n\r\nfunction CustomEvent(type, dictionary) {\r\n  // Just use the superclass constructor to initialize\r\n  Event.call(this, type, dictionary);\r\n}\r\nCustomEvent.prototype = Object.create(Event.prototype, {\r\n  constructor: { value: CustomEvent }\r\n});\r\n","\"use strict\";\r\nmodule.exports = {\r\n  Event: require('./Event'),\r\n  UIEvent: require('./UIEvent'),\r\n  MouseEvent: require('./MouseEvent'),\r\n  CustomEvent: require('./CustomEvent')\r\n};\r\n","\"use strict\";\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n\r\n// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts\r\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.hyphenate = exports.parse = void 0;\r\n/**\r\n * Parses string representation of a style and converts it into object literal.\r\n *\r\n * @param value string representation of style as used in the `style` attribute in HTML.\r\n *   Example: `color: red; height: auto`.\r\n * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height',\r\n * 'auto']`\r\n */\r\nfunction parse(value) {\r\n  // we use a string array here instead of a string map\r\n  // because a string-map is not guaranteed to retain the\r\n  // order of the entries whereas a string array can be\r\n  // constructed in a [key, value, key, value] format.\r\n  const styles = [];\r\n  let i = 0;\r\n  let parenDepth = 0;\r\n  let quote = 0; /* Char.QuoteNone */\r\n  let valueStart = 0;\r\n  let propStart = 0;\r\n  let currentProp = null;\r\n  while (i < value.length) {\r\n    const token = value.charCodeAt(i++);\r\n    switch (token) {\r\n      case 40 /* Char.OpenParen */:\r\n        parenDepth++;\r\n        break;\r\n      case 41 /* Char.CloseParen */:\r\n        parenDepth--;\r\n        break;\r\n      case 39 /* Char.QuoteSingle */:\r\n        // valueStart needs to be there since prop values don't\r\n        // have quotes in CSS\r\n        if (quote === 0 /* Char.QuoteNone */) {\r\n          quote = 39 /* Char.QuoteSingle */;\r\n        } else if (\r\n          quote === 39 /* Char.QuoteSingle */ &&\r\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\r\n        ) {\r\n          quote = 0 /* Char.QuoteNone */;\r\n        }\r\n        break;\r\n      case 34 /* Char.QuoteDouble */:\r\n        // same logic as above\r\n        if (quote === 0 /* Char.QuoteNone */) {\r\n          quote = 34 /* Char.QuoteDouble */;\r\n        } else if (\r\n          quote === 34 /* Char.QuoteDouble */ &&\r\n          value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */\r\n        ) {\r\n          quote = 0 /* Char.QuoteNone */;\r\n        }\r\n        break;\r\n      case 58 /* Char.Colon */:\r\n        if (\r\n          !currentProp &&\r\n          parenDepth === 0 &&\r\n          quote === 0 /* Char.QuoteNone */\r\n        ) {\r\n          currentProp = hyphenate(value.substring(propStart, i - 1).trim());\r\n          valueStart = i;\r\n        }\r\n        break;\r\n      case 59 /* Char.Semicolon */:\r\n        if (\r\n          currentProp &&\r\n          valueStart > 0 &&\r\n          parenDepth === 0 &&\r\n          quote === 0 /* Char.QuoteNone */\r\n        ) {\r\n          const styleVal = value.substring(valueStart, i - 1).trim();\r\n          styles.push(currentProp, styleVal);\r\n          propStart = i;\r\n          valueStart = 0;\r\n          currentProp = null;\r\n        }\r\n        break;\r\n    }\r\n  }\r\n  if (currentProp && valueStart) {\r\n    const styleVal = value.slice(valueStart).trim();\r\n    styles.push(currentProp, styleVal);\r\n  }\r\n  return styles;\r\n}\r\nexports.parse = parse;\r\nfunction hyphenate(value) {\r\n  return value\r\n    .replace(/[a-z][A-Z]/g, (v) => {\r\n      return v.charAt(0) + \"-\" + v.charAt(1);\r\n    })\r\n    .toLowerCase();\r\n}\r\nexports.hyphenate = hyphenate;\r\n","\"use strict\";\r\n\r\nconst { parse } = require('./style_parser');\r\n\r\nmodule.exports = function (elt) {\r\n  const style = new CSSStyleDeclaration(elt)\r\n  const handler = {\r\n    get: function(target, property) {\r\n      return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property));\r\n    },\r\n    has: function(target, key) {\r\n      return true;\r\n    },\r\n    set: function(target, property, value) {\r\n      if (property in target) {\r\n        target[property] = value;\r\n      } else {\r\n        target.setProperty(dasherizeProperty(property), value ?? undefined);\r\n      }\r\n\r\n      return true;\r\n    }\r\n  };\r\n\r\n  return new Proxy(style, handler);\r\n};\r\n\r\nfunction dasherizeProperty(property) {\r\n  return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\r\n}\r\n\r\n\r\nfunction CSSStyleDeclaration(elt) {\r\n  this._element = elt;\r\n}\r\n\r\nconst IMPORTANT_BANG = '!important';\r\n\r\n// Utility function for parsing style declarations\r\n// Pass in a string like \"margin-left: 5px; border-style: solid\"\r\n// and this function returns an object like\r\n// {\"margin-left\":\"5px\", \"border-style\":\"solid\"}\r\nfunction parseStyles(value) {\r\n  const result = {\r\n    property: {},\r\n    priority: {},\r\n  }\r\n\r\n  if (!value) {\r\n    return result;\r\n  }\r\n\r\n  const styleValues = parse(value);\r\n  if (styleValues.length < 2) {\r\n    return result;\r\n  }\r\n\r\n  for (let i = 0; i < styleValues.length; i += 2) {\r\n    const name = styleValues[i];\r\n    let value = styleValues[i+1];\r\n\r\n    if (value.endsWith(IMPORTANT_BANG)) {\r\n      result.priority[name] = 'important';\r\n      value = value.slice(0, -IMPORTANT_BANG.length).trim();\r\n    }\r\n\r\n    result.property[name] = value;\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nvar NO_CHANGE = {}; // Private marker object\r\n\r\nCSSStyleDeclaration.prototype = Object.create(Object.prototype, {\r\n\r\n  // Return the parsed form of the element's style attribute.\r\n  // If the element's style attribute has never been parsed\r\n  // or if it has changed since the last parse, then reparse it\r\n  // Note that the styles don't get parsed until they're actually needed\r\n  _parsed: { get: function() {\r\n    if (!this._parsedStyles || this.cssText !== this._lastParsedText) {\r\n      var text = this.cssText;\r\n      this._parsedStyles = parseStyles(text);\r\n      this._lastParsedText = text;\r\n      delete this._names;\r\n    }\r\n    return this._parsedStyles;\r\n  }},\r\n\r\n  // Call this method any time the parsed representation of the\r\n  // style changes.  It converts the style properties to a string and\r\n  // sets cssText and the element's style attribute\r\n  _serialize: { value: function() {\r\n    var styles = this._parsed;\r\n    var s = \"\";\r\n\r\n    for(var name in styles.property) {\r\n      if (s) s += \" \";\r\n      s += name + \": \" + styles.property[name];\r\n      if (styles.priority[name]) {\r\n        s += \" !\" + styles.priority[name];\r\n      }\r\n      s += \";\";\r\n    }\r\n\r\n    this.cssText = s;      // also sets the style attribute\r\n    this._lastParsedText = s;  // so we don't reparse\r\n    delete this._names;\r\n  }},\r\n\r\n  cssText: {\r\n    get: function() {\r\n      // XXX: this is a CSSStyleDeclaration for an element.\r\n      // A different impl might be necessary for a set of styles\r\n      // associated returned by getComputedStyle(), e.g.\r\n      return this._element.getAttribute(\"style\");\r\n    },\r\n    set: function(value) {\r\n      // XXX: I should parse and serialize the value to\r\n      // normalize it and remove errors. FF and chrome do that.\r\n      this._element.setAttribute(\"style\", value);\r\n    }\r\n  },\r\n\r\n  length: { get: function() {\r\n    if (!this._names)\r\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\r\n    return this._names.length;\r\n  }},\r\n\r\n  item: { value: function(n) {\r\n    if (!this._names)\r\n      this._names = Object.getOwnPropertyNames(this._parsed.property);\r\n    return this._names[n];\r\n  }},\r\n\r\n  getPropertyValue: { value: function(property) {\r\n    property = property.toLowerCase();\r\n    return this._parsed.property[property] || \"\";\r\n  }},\r\n\r\n  getPropertyPriority: { value: function(property) {\r\n    property = property.toLowerCase();\r\n    return this._parsed.priority[property] || \"\";\r\n  }},\r\n\r\n  setProperty: { value: function(property, value, priority) {\r\n    property = property.toLowerCase();\r\n    if (value === null || value === undefined) {\r\n      value = \"\";\r\n    }\r\n    if (priority === null || priority === undefined) {\r\n      priority = \"\";\r\n    }\r\n\r\n    // String coercion\r\n    if (value !== NO_CHANGE) {\r\n      value = \"\" + value;\r\n    }\r\n\r\n    value = value.trim();\r\n    if (value === \"\") {\r\n      this.removeProperty(property);\r\n      return;\r\n    }\r\n\r\n    if (priority !== \"\" && priority !== NO_CHANGE &&\r\n        !/^important$/i.test(priority)) {\r\n      return;\r\n    }\r\n\r\n    var styles = this._parsed;\r\n    if (value === NO_CHANGE) {\r\n      if (!styles.property[property]) {\r\n        return; // Not a valid property name.\r\n      }\r\n      if (priority !== \"\") {\r\n        styles.priority[property] = \"important\";\r\n      } else {\r\n        delete styles.priority[property];\r\n      }\r\n    } else {\r\n      // We don't just accept the property value.  Instead\r\n      // we parse it to ensure that it is something valid.\r\n      // If it contains a semicolon it is invalid\r\n      if (value.indexOf(\";\") !== -1) return;\r\n\r\n      var newprops = parseStyles(property + \":\" + value);\r\n      if (Object.getOwnPropertyNames(newprops.property).length === 0) {\r\n        return; // no valid property found\r\n      }\r\n      if (Object.getOwnPropertyNames(newprops.priority).length !== 0) {\r\n        return; // if the value included '!important' it wasn't valid.\r\n      }\r\n\r\n      // XXX handle shorthand properties\r\n\r\n      for (var p in newprops.property) {\r\n        styles.property[p] = newprops.property[p];\r\n        if (priority === NO_CHANGE) {\r\n          continue;\r\n        } else if (priority !== \"\") {\r\n          styles.priority[p] = \"important\";\r\n        } else if (styles.priority[p]) {\r\n          delete styles.priority[p];\r\n        }\r\n      }\r\n    }\r\n\r\n    // Serialize and update cssText and element.style!\r\n    this._serialize();\r\n  }},\r\n\r\n  setPropertyValue: { value: function(property, value) {\r\n    return this.setProperty(property, value, NO_CHANGE);\r\n  }},\r\n\r\n  setPropertyPriority: { value: function(property, priority) {\r\n    return this.setProperty(property, NO_CHANGE, priority);\r\n  }},\r\n\r\n  removeProperty: { value: function(property) {\r\n    property = property.toLowerCase();\r\n    var styles = this._parsed;\r\n    if (property in styles.property) {\r\n      delete styles.property[property];\r\n      delete styles.priority[property];\r\n\r\n      // Serialize and update cssText and element.style!\r\n      this._serialize();\r\n    }\r\n  }},\r\n});\r\n","\"use strict\";\r\nvar URL = require('./URL');\r\n\r\nmodule.exports = URLUtils;\r\n\r\n// Allow the `x == null` pattern.  This is eslint's \"null: 'ignore'\" option,\r\n// but jshint doesn't support this.\r\n/* jshint eqeqeq: false */\r\n\r\n// This is an abstract superclass for Location, HTMLAnchorElement and\r\n// other types that have the standard complement of \"URL decomposition\r\n// IDL attributes\".  This is now standardized as URLUtils, see:\r\n// https://url.spec.whatwg.org/#urlutils\r\n// Subclasses must define a getter/setter on href.\r\n// The getter and setter methods parse and rebuild the URL on each\r\n// invocation; there is no attempt to cache the value and be more efficient\r\nfunction URLUtils() {}\r\nURLUtils.prototype = Object.create(Object.prototype, {\r\n\r\n  _url: { get: function() {\r\n    // XXX: this should do the \"Reinitialize url\" steps, and \"null\" should\r\n    // be a valid return value.\r\n    return new URL(this.href);\r\n  } },\r\n\r\n  protocol: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url && url.scheme) return url.scheme + \":\";\r\n      else return \":\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute()) {\r\n        v = v.replace(/:+$/, \"\");\r\n        v = v.replace(/[^-+\\.a-zA-Z0-9]/g, URL.percentEncode);\r\n        if (v.length > 0) {\r\n          url.scheme = v;\r\n          output = url.toString();\r\n        }\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  host: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url.isAbsolute() && url.isAuthorityBased())\r\n        return url.host + (url.port ? (\":\" + url.port) : \"\");\r\n      else\r\n        return \"\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute() && url.isAuthorityBased()) {\r\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\r\n        if (v.length > 0) {\r\n          url.host = v;\r\n          delete url.port;\r\n          output = url.toString();\r\n        }\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  hostname: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url.isAbsolute() && url.isAuthorityBased())\r\n        return url.host;\r\n      else\r\n        return \"\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute() && url.isAuthorityBased()) {\r\n        v = v.replace(/^\\/+/, \"\");\r\n        v = v.replace(/[^-+\\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode);\r\n        if (v.length > 0) {\r\n          url.host = v;\r\n          output = url.toString();\r\n        }\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  port: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined)\r\n        return url.port;\r\n      else\r\n        return \"\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute() && url.isAuthorityBased()) {\r\n        v = '' + v;\r\n        v = v.replace(/[^0-9].*$/, \"\");\r\n        v = v.replace(/^0+/, \"\");\r\n        if (v.length === 0) v = \"0\";\r\n        if (parseInt(v, 10) <= 65535) {\r\n          url.port = v;\r\n          output = url.toString();\r\n        }\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  pathname: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url.isAbsolute() && url.isHierarchical())\r\n        return url.path;\r\n      else\r\n        return \"\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute() && url.isHierarchical()) {\r\n        if (v.charAt(0) !== \"/\")\r\n          v = \"/\" + v;\r\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/a-zA-Z0-9]/g, URL.percentEncode);\r\n        url.path = v;\r\n        output = url.toString();\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  search: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined)\r\n        return \"?\" + url.query;\r\n      else\r\n        return \"\";\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute() && url.isHierarchical()) {\r\n        if (v.charAt(0) === \"?\") v = v.substring(1);\r\n        v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\r\n        url.query = v;\r\n        output = url.toString();\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  hash: {\r\n    get: function() {\r\n      var url = this._url;\r\n      if (url == null || url.fragment == null || url.fragment === '') {\r\n        return \"\";\r\n      } else {\r\n        return \"#\" + url.fragment;\r\n      }\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n\r\n      if (v.charAt(0) === \"#\") v = v.substring(1);\r\n      v = v.replace(/[^-+\\._~!$&'()*,;:=@\\/?a-zA-Z0-9]/g, URL.percentEncode);\r\n      url.fragment = v;\r\n      output = url.toString();\r\n\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  username: {\r\n    get: function() {\r\n      var url = this._url;\r\n      return url.username || '';\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute()) {\r\n        v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\:]/g, URL.percentEncode);\r\n        url.username = v;\r\n        output = url.toString();\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  password: {\r\n    get: function() {\r\n      var url = this._url;\r\n      return url.password || '';\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      if (url.isAbsolute()) {\r\n        if (v==='') {\r\n          url.password = null;\r\n        } else {\r\n          v = v.replace(/[\\x00-\\x1F\\x7F-\\uFFFF \"#<>?`\\/@\\\\]/g, URL.percentEncode);\r\n          url.password = v;\r\n        }\r\n        output = url.toString();\r\n      }\r\n      this.href = output;\r\n    },\r\n  },\r\n\r\n  origin: { get: function() {\r\n    var url = this._url;\r\n    if (url == null) { return ''; }\r\n    var originForPort = function(defaultPort) {\r\n      var origin = [url.scheme, url.host, +url.port || defaultPort];\r\n      // XXX should be \"unicode serialization\"\r\n      return origin[0] + '://' + origin[1] +\r\n        (origin[2] === defaultPort ? '' : (':' + origin[2]));\r\n    };\r\n    switch (url.scheme) {\r\n    case 'ftp':\r\n      return originForPort(21);\r\n    case 'gopher':\r\n      return originForPort(70);\r\n    case 'http':\r\n    case 'ws':\r\n      return originForPort(80);\r\n    case 'https':\r\n    case 'wss':\r\n      return originForPort(443);\r\n    default:\r\n      // this is what chrome does\r\n      return url.scheme + '://';\r\n    }\r\n  } },\r\n\r\n  /*\r\n  searchParams: {\r\n    get: function() {\r\n      var url = this._url;\r\n      // XXX\r\n    },\r\n    set: function(v) {\r\n      var output = this.href;\r\n      var url = new URL(output);\r\n      // XXX\r\n      this.href = output;\r\n    },\r\n  },\r\n  */\r\n});\r\n\r\nURLUtils._inherit = function(proto) {\r\n  // copy getters/setters from URLUtils to o.\r\n  Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) {\r\n    if (p==='constructor' || p==='href') { return; }\r\n    var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p);\r\n    Object.defineProperty(proto, p, desc);\r\n  });\r\n};\r\n","\"use strict\";\r\n\r\nvar attributes = require('./attributes');\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nmodule.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) {\r\n  var c = spec.ctor;\r\n  if (c) {\r\n    var props = spec.props || {};\r\n\r\n    if (spec.attributes) {\r\n      for (var n in spec.attributes) {\r\n        var attr = spec.attributes[n];\r\n        if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr};\r\n        if (!attr.name) attr.name = n.toLowerCase();\r\n        props[n] = attributes.property(attr);\r\n      }\r\n    }\r\n\r\n    props.constructor = { value : c, writable: isApiWritable };\r\n    c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props);\r\n    if (spec.events) {\r\n      addEventHandlers(c, spec.events);\r\n    }\r\n    tagList[spec.name] = c;\r\n  }\r\n  else {\r\n    c = defaultConstructor;\r\n  }\r\n\r\n  (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) {\r\n    tagNameToImpl[tag] = c;\r\n  });\r\n\r\n  return c;\r\n};\r\n\r\nfunction EventHandlerBuilder(body, document, form, element) {\r\n  this.body = body;\r\n  this.document = document;\r\n  this.form = form;\r\n  this.element = element;\r\n}\r\n\r\nEventHandlerBuilder.prototype.build = function () {\r\n  return () => {};\r\n};\r\n\r\nfunction EventHandlerChangeHandler(elt, name, oldval, newval) {\r\n  var doc = elt.ownerDocument || Object.create(null);\r\n  var form = elt.form || Object.create(null);\r\n  elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build();\r\n}\r\n\r\nfunction addEventHandlers(c, eventHandlerTypes) {\r\n  var p = c.prototype;\r\n  eventHandlerTypes.forEach(function(type) {\r\n    // Define the event handler registration IDL attribute for this type\r\n    Object.defineProperty(p, \"on\" + type, {\r\n      get: function() {\r\n        return this._getEventHandler(type);\r\n      },\r\n      set: function(v) {\r\n        this._setEventHandler(type, v);\r\n      },\r\n    });\r\n\r\n    // Define special behavior for the content attribute as well\r\n    attributes.registerChangeHandler(c, \"on\" + type, EventHandlerChangeHandler);\r\n  });\r\n}\r\n","\"use strict\";\r\nvar Node = require('./Node');\r\nvar Element = require('./Element');\r\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\r\nvar utils = require('./utils');\r\nvar URLUtils = require('./URLUtils');\r\nvar defineElement = require('./defineElement');\r\n\r\nvar htmlElements = exports.elements = {};\r\nvar htmlNameToImpl = Object.create(null);\r\n\r\nexports.createElement = function(doc, localName, prefix) {\r\n  var impl = htmlNameToImpl[localName] || HTMLUnknownElement;\r\n  return new impl(doc, localName, prefix);\r\n};\r\n\r\nfunction define(spec) {\r\n  return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl);\r\n}\r\n\r\nfunction URL(attr) {\r\n  return {\r\n    get: function() {\r\n      var v = this._getattr(attr);\r\n      if (v === null) { return ''; }\r\n      var url = this.doc._resolve(v);\r\n      return (url === null) ? v : url;\r\n    },\r\n    set: function(value) {\r\n      this._setattr(attr, value);\r\n    }\r\n  };\r\n}\r\n\r\nfunction CORS(attr) {\r\n  return {\r\n    get: function() {\r\n      var v = this._getattr(attr);\r\n      if (v === null) { return null; }\r\n      if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; }\r\n      return 'anonymous';\r\n    },\r\n    set: function(value) {\r\n      if (value===null || value===undefined) {\r\n        this.removeAttribute(attr);\r\n      } else {\r\n        this._setattr(attr, value);\r\n      }\r\n    }\r\n  };\r\n}\r\n\r\nconst REFERRER = {\r\n  type: [\"\", \"no-referrer\", \"no-referrer-when-downgrade\", \"same-origin\", \"origin\", \"strict-origin\", \"origin-when-cross-origin\", \"strict-origin-when-cross-origin\", \"unsafe-url\"],\r\n  missing: '',\r\n};\r\n\r\n\r\n// XXX: the default value for tabIndex should be 0 if the element is\r\n// focusable and -1 if it is not.  But the full definition of focusable\r\n// is actually hard to compute, so for now, I'll follow Firefox and\r\n// just base the default value on the type of the element.\r\nvar focusableElements = {\r\n  \"A\":true, \"LINK\":true, \"BUTTON\":true, \"INPUT\":true,\r\n  \"SELECT\":true, \"TEXTAREA\":true, \"COMMAND\":true\r\n};\r\n\r\nvar HTMLFormElement = function(doc, localName, prefix) {\r\n  HTMLElement.call(this, doc, localName, prefix);\r\n  this._form = null; // Prevent later deoptimization\r\n};\r\n\r\nvar HTMLElement = exports.HTMLElement = define({\r\n  superclass: Element,\r\n  name: 'HTMLElement',\r\n  ctor: function HTMLElement(doc, localName, prefix) {\r\n    Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix);\r\n  },\r\n  props: {\r\n    dangerouslySetInnerHTML: {\r\n      set: function (v) {\r\n        this._innerHTML = v;\r\n      },\r\n    },\r\n    innerHTML: {\r\n      get: function() {\r\n        return this.serialize();\r\n      },\r\n      set: function(v) {\r\n        var parser = this.ownerDocument.implementation.mozHTMLParser(\r\n          this.ownerDocument._address,\r\n          this);\r\n        parser.parse(v===null ? '' : String(v), true);\r\n\r\n        // Remove any existing children of this node\r\n        var target = (this instanceof htmlNameToImpl.template) ?\r\n            this.content : this;\r\n        while(target.hasChildNodes())\r\n          target.removeChild(target.firstChild);\r\n\r\n        // Now copy newly parsed children to this node\r\n        target.appendChild(parser._asDocumentFragment());\r\n      }\r\n    },\r\n    style: { get: function() {\r\n      if (!this._style)\r\n        this._style = new CSSStyleDeclaration(this);\r\n      return this._style;\r\n    }, set: function(v) {\r\n        if (v===null||v===undefined) { v = ''; }\r\n        this._setattr('style', String(v));\r\n    }},\r\n\r\n    // These can't really be implemented server-side in a reasonable way.\r\n    blur: { value: function() {}},\r\n    focus: { value: function() {}},\r\n    forceSpellCheck: { value: function() {}},\r\n\r\n    click: { value: function() {\r\n      if (this._click_in_progress) return;\r\n      this._click_in_progress = true;\r\n      try {\r\n        if (this._pre_click_activation_steps)\r\n          this._pre_click_activation_steps();\r\n\r\n        var event = this.ownerDocument.createEvent(\"MouseEvent\");\r\n        event.initMouseEvent(\"click\", true, true,\r\n          this.ownerDocument.defaultView, 1,\r\n          0, 0, 0, 0,\r\n          // These 4 should be initialized with\r\n          // the actually current keyboard state\r\n          // somehow...\r\n          false, false, false, false,\r\n          0, null\r\n        );\r\n\r\n        // Dispatch this as an untrusted event since it is synthetic\r\n        var success = this.dispatchEvent(event);\r\n\r\n        if (success) {\r\n          if (this._post_click_activation_steps)\r\n            this._post_click_activation_steps(event);\r\n        }\r\n        else {\r\n          if (this._cancelled_activation_steps)\r\n            this._cancelled_activation_steps();\r\n        }\r\n      }\r\n      finally {\r\n        this._click_in_progress = false;\r\n      }\r\n    }},\r\n    submit: { value: utils.nyi },\r\n  },\r\n  attributes: {\r\n    title: String,\r\n    lang: String,\r\n    dir: {type: [\"ltr\", \"rtl\", \"auto\"], missing: ''},\r\n    draggable: {type: [\"true\", \"false\"], treatNullAsEmptyString: true },\r\n    spellcheck: {type: [\"true\", \"false\"], missing: ''},\r\n    enterKeyHint: {type: [\"enter\", \"done\", \"go\", \"next\", \"previous\", \"search\", \"send\"], missing: ''},\r\n    autoCapitalize: {type: [\"off\", \"on\", \"none\", \"sentences\", \"words\", \"characters\"], missing: '' },\r\n    autoFocus: Boolean,\r\n    accessKey: String,\r\n    nonce: String,\r\n    hidden: Boolean,\r\n    translate: {type: [\"no\", \"yes\"], missing: '' },\r\n    tabIndex: {type: \"long\", default: function() {\r\n      if (this.tagName in focusableElements ||\r\n        this.contentEditable)\r\n        return 0;\r\n      else\r\n        return -1;\r\n    }}\r\n  },\r\n  events: [\r\n    \"abort\", \"canplay\", \"canplaythrough\", \"change\", \"click\", \"contextmenu\",\r\n    \"cuechange\", \"dblclick\", \"drag\", \"dragend\", \"dragenter\", \"dragleave\",\r\n    \"dragover\", \"dragstart\", \"drop\", \"durationchange\", \"emptied\", \"ended\",\r\n    \"input\", \"invalid\", \"keydown\", \"keypress\", \"keyup\", \"loadeddata\",\r\n    \"loadedmetadata\", \"loadstart\", \"mousedown\", \"mousemove\", \"mouseout\",\r\n    \"mouseover\", \"mouseup\", \"mousewheel\", \"pause\", \"play\", \"playing\",\r\n    \"progress\", \"ratechange\", \"readystatechange\", \"reset\", \"seeked\",\r\n    \"seeking\", \"select\", \"show\", \"stalled\", \"submit\", \"suspend\",\r\n    \"timeupdate\", \"volumechange\", \"waiting\",\r\n\r\n    // These last 5 event types will be overriden by HTMLBodyElement\r\n    \"blur\", \"error\", \"focus\", \"load\", \"scroll\"\r\n  ]\r\n});\r\n\r\n\r\n// XXX: reflect contextmenu as contextMenu, with element type\r\n\r\n\r\n// style: the spec doesn't call this a reflected attribute.\r\n//   may want to handle it manually.\r\n\r\n// contentEditable: enumerated, not clear if it is actually\r\n// reflected or requires custom getter/setter. Not listed as\r\n// \"limited to known values\".  Raises syntax_err on bad setting,\r\n// so I think this is custom.\r\n\r\n// contextmenu: content is element id, idl type is an element\r\n// draggable: boolean, but not a reflected attribute\r\n// dropzone: reflected SettableTokenList, experimental, so don't\r\n//   implement it right away.\r\n\r\n// data-* attributes: need special handling in setAttribute?\r\n// Or maybe that isn't necessary. Can I just scan the attribute list\r\n// when building the dataset?  Liveness and caching issues?\r\n\r\n// microdata attributes: many are simple reflected attributes, but\r\n// I'm not going to implement this now.\r\n\r\n\r\nvar HTMLUnknownElement = define({\r\n  name: 'HTMLUnknownElement',\r\n  ctor: function HTMLUnknownElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\n\r\nvar formAssociatedProps = {\r\n  // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner\r\n  form: { get: function() {\r\n    return this._form;\r\n  }}\r\n};\r\n\r\ndefine({\r\n  tag: 'a',\r\n  name: 'HTMLAnchorElement',\r\n  ctor: function HTMLAnchorElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    _post_click_activation_steps: { value: function(e) {\r\n      if (this.href) {\r\n        // Follow the link\r\n        // XXX: this is just a quick hack\r\n        // XXX: the HTML spec probably requires more than this\r\n        this.ownerDocument.defaultView.location = this.href;\r\n      }\r\n    }},\r\n  },\r\n  attributes: {\r\n    href: URL,\r\n    ping: String,\r\n    download: String,\r\n    target: String,\r\n    rel: String,\r\n    media: String,\r\n    hreflang: String,\r\n    type: String,\r\n    referrerPolicy: REFERRER,\r\n    // Obsolete\r\n    coords: String,\r\n    charset: String,\r\n    name: String,\r\n    rev: String,\r\n    shape: String,\r\n  }\r\n});\r\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\r\nURLUtils._inherit(htmlNameToImpl.a.prototype);\r\n\r\ndefine({\r\n  tag: 'area',\r\n  name: 'HTMLAreaElement',\r\n  ctor: function HTMLAreaElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    alt: String,\r\n    target: String,\r\n    download: String,\r\n    rel: String,\r\n    media: String,\r\n    href: URL,\r\n    hreflang: String,\r\n    type: String,\r\n    shape: String,\r\n    coords: String,\r\n    ping: String,\r\n    // XXX: also reflect relList\r\n    referrerPolicy: REFERRER,\r\n    // Obsolete\r\n    noHref: Boolean,\r\n  }\r\n});\r\n// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils\r\nURLUtils._inherit(htmlNameToImpl.area.prototype);\r\n\r\ndefine({\r\n  tag: 'br',\r\n  name: 'HTMLBRElement',\r\n  ctor: function HTMLBRElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    clear: String\r\n  },\r\n});\r\n\r\ndefine({\r\n  tag: 'base',\r\n  name: 'HTMLBaseElement',\r\n  ctor: function HTMLBaseElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    \"target\": String\r\n  }\r\n});\r\n\r\n\r\ndefine({\r\n  tag: 'body',\r\n  name: 'HTMLBodyElement',\r\n  ctor: function HTMLBodyElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  // Certain event handler attributes on a <body> tag actually set\r\n  // handlers for the window rather than just that element.  Define\r\n  // getters and setters for those here.  Note that some of these override\r\n  // properties on HTMLElement.prototype.\r\n  // XXX: If I add support for <frameset>, these have to go there, too\r\n  // XXX\r\n  // When the Window object is implemented, these attribute will have\r\n  // to work with the same-named attributes on the Window.\r\n  events: [\r\n    \"afterprint\", \"beforeprint\", \"beforeunload\", \"blur\", \"error\",\r\n    \"focus\",\"hashchange\", \"load\", \"message\", \"offline\", \"online\",\r\n    \"pagehide\", \"pageshow\",\"popstate\",\"resize\",\"scroll\",\"storage\",\"unload\",\r\n  ],\r\n  attributes: {\r\n    // Obsolete\r\n    text: { type: String, treatNullAsEmptyString: true },\r\n    link: { type: String, treatNullAsEmptyString: true },\r\n    vLink: { type: String, treatNullAsEmptyString: true },\r\n    aLink: { type: String, treatNullAsEmptyString: true },\r\n    bgColor: { type: String, treatNullAsEmptyString: true },\r\n    background: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'button',\r\n  name: 'HTMLButtonElement',\r\n  ctor: function HTMLButtonElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    name: String,\r\n    value: String,\r\n    disabled: Boolean,\r\n    autofocus: Boolean,\r\n    type: { type:[\"submit\", \"reset\", \"button\", \"menu\"], missing: 'submit' },\r\n    formTarget: String,\r\n    formAction: URL,\r\n    formNoValidate: Boolean,\r\n    formMethod: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: '' },\r\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'dl',\r\n  name: 'HTMLDListElement',\r\n  ctor: function HTMLDListElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    compact: Boolean,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'data',\r\n  name: 'HTMLDataElement',\r\n  ctor: function HTMLDataElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    value: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'datalist',\r\n  name: 'HTMLDataListElement',\r\n  ctor: function HTMLDataListElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'details',\r\n  name: 'HTMLDetailsElement',\r\n  ctor: function HTMLDetailsElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    \"open\": Boolean\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'div',\r\n  name: 'HTMLDivElement',\r\n  ctor: function HTMLDivElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'embed',\r\n  name: 'HTMLEmbedElement',\r\n  ctor: function HTMLEmbedElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    src: URL,\r\n    type: String,\r\n    width: String,\r\n    height: String,\r\n    // Obsolete\r\n    align: String,\r\n    name: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'fieldset',\r\n  name: 'HTMLFieldSetElement',\r\n  ctor: function HTMLFieldSetElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    disabled: Boolean,\r\n    name: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'form',\r\n  name: 'HTMLFormElement',\r\n  ctor: function HTMLFormElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    action: String,\r\n    autocomplete: {type:['on', 'off'], missing: 'on'},\r\n    name: String,\r\n    acceptCharset: {name: \"accept-charset\"},\r\n    target: String,\r\n    noValidate: Boolean,\r\n    method: { type: [\"get\", \"post\", \"dialog\"], invalid: 'get', missing: 'get' },\r\n    // Both enctype and encoding reflect the enctype content attribute\r\n    enctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\r\n    encoding: {name: 'enctype', type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: \"application/x-www-form-urlencoded\" },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'hr',\r\n  name: 'HTMLHRElement',\r\n  ctor: function HTMLHRElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n    color: String,\r\n    noShade: Boolean,\r\n    size: String,\r\n    width: String,\r\n  },\r\n});\r\n\r\ndefine({\r\n  tag: 'head',\r\n  name: 'HTMLHeadElement',\r\n  ctor: function HTMLHeadElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tags: ['h1','h2','h3','h4','h5','h6'],\r\n  name: 'HTMLHeadingElement',\r\n  ctor: function HTMLHeadingElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n  },\r\n});\r\n\r\ndefine({\r\n  tag: 'html',\r\n  name: 'HTMLHtmlElement',\r\n  ctor: function HTMLHtmlElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    xmlns: URL,\r\n    // Obsolete\r\n    version: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'iframe',\r\n  name: 'HTMLIFrameElement',\r\n  ctor: function HTMLIFrameElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    src: URL,\r\n    srcdoc: String,\r\n    name: String,\r\n    width: String,\r\n    height: String,\r\n    // XXX: sandbox is a reflected settable token list\r\n    seamless: Boolean,\r\n    allow: Boolean,\r\n    allowFullscreen: Boolean,\r\n    allowUserMedia: Boolean,\r\n    allowPaymentRequest: Boolean,\r\n    referrerPolicy: REFERRER,\r\n    loading: { type:['eager','lazy'], treatNullAsEmptyString: true },\r\n    // Obsolete\r\n    align: String,\r\n    scrolling: String,\r\n    frameBorder: String,\r\n    longDesc: URL,\r\n    marginHeight: { type: String, treatNullAsEmptyString: true },\r\n    marginWidth: { type: String, treatNullAsEmptyString: true },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'img',\r\n  name: 'HTMLImageElement',\r\n  ctor: function HTMLImageElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    alt: String,\r\n    src: URL,\r\n    srcset: String,\r\n    crossOrigin: CORS,\r\n    useMap: String,\r\n    isMap: Boolean,\r\n    sizes: String,\r\n    height: { type: \"unsigned long\", default: 0 },\r\n    width: { type: \"unsigned long\", default: 0 },\r\n    referrerPolicy: REFERRER,\r\n    loading: { type:['eager','lazy'], missing: '' },\r\n    // Obsolete:\r\n    name: String,\r\n    lowsrc: URL,\r\n    align: String,\r\n    hspace: { type: \"unsigned long\", default: 0 },\r\n    vspace: { type: \"unsigned long\", default: 0 },\r\n    longDesc: URL,\r\n    border: { type: String, treatNullAsEmptyString: true },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'input',\r\n  name: 'HTMLInputElement',\r\n  ctor: function HTMLInputElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    form: formAssociatedProps.form,\r\n    _post_click_activation_steps: { value: function(e) {\r\n      if (this.type === 'checkbox') {\r\n        this.checked = !this.checked;\r\n      }\r\n      else if (this.type === 'radio') {\r\n        var group = this.form.getElementsByName(this.name);\r\n        for (var i=group.length-1; i >= 0; i--) {\r\n          var el = group[i];\r\n          el.checked = (el === this);\r\n        }\r\n      }\r\n    }},\r\n  },\r\n  attributes: {\r\n    name: String,\r\n    disabled: Boolean,\r\n    autofocus: Boolean,\r\n    accept: String,\r\n    alt: String,\r\n    max: String,\r\n    min: String,\r\n    pattern: String,\r\n    placeholder: String,\r\n    step: String,\r\n    dirName: String,\r\n    defaultValue: {name: 'value'},\r\n    multiple: Boolean,\r\n    required: Boolean,\r\n    readOnly: Boolean,\r\n    checked: Boolean,\r\n    value: String,\r\n    src: URL,\r\n    defaultChecked: {name: 'checked', type: Boolean},\r\n    size: {type: 'unsigned long', default: 20, min: 1, setmin: 1},\r\n    width: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\r\n    height: {type: 'unsigned long', min: 0, setmin: 0, default: 0},\r\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n    autocomplete: String, // It's complicated\r\n    type: { type:\r\n            [\"text\", \"hidden\", \"search\", \"tel\", \"url\", \"email\", \"password\",\r\n             \"datetime\", \"date\", \"month\", \"week\", \"time\", \"datetime-local\",\r\n             \"number\", \"range\", \"color\", \"checkbox\", \"radio\", \"file\", \"submit\",\r\n             \"image\", \"reset\", \"button\"],\r\n            missing: 'text' },\r\n    formTarget: String,\r\n    formNoValidate: Boolean,\r\n    formMethod: { type: [\"get\", \"post\"], invalid: 'get', missing: '' },\r\n    formEnctype: { type: [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"], invalid: \"application/x-www-form-urlencoded\", missing: '' },\r\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\r\n    // Obsolete\r\n    align: String,\r\n    useMap: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'keygen',\r\n  name: 'HTMLKeygenElement',\r\n  ctor: function HTMLKeygenElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    name: String,\r\n    disabled: Boolean,\r\n    autofocus: Boolean,\r\n    challenge: String,\r\n    keytype: { type:[\"rsa\"], missing: '' },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'li',\r\n  name: 'HTMLLIElement',\r\n  ctor: function HTMLLIElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    value: {type: \"long\", default: 0},\r\n    // Obsolete\r\n    type: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'label',\r\n  name: 'HTMLLabelElement',\r\n  ctor: function HTMLLabelElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    htmlFor: {name: 'for', type: String}\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'legend',\r\n  name: 'HTMLLegendElement',\r\n  ctor: function HTMLLegendElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String\r\n  },\r\n});\r\n\r\ndefine({\r\n  tag: 'link',\r\n  name: 'HTMLLinkElement',\r\n  ctor: function HTMLLinkElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList\r\n    href: URL,\r\n    rel: String,\r\n    media: String,\r\n    hreflang: String,\r\n    type: String,\r\n    crossOrigin: CORS,\r\n    nonce: String,\r\n    integrity: String,\r\n    referrerPolicy: REFERRER,\r\n    imageSizes: String,\r\n    imageSrcset: String,\r\n    // Obsolete\r\n    charset: String,\r\n    rev: String,\r\n    target: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'map',\r\n  name: 'HTMLMapElement',\r\n  ctor: function HTMLMapElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    name: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'menu',\r\n  name: 'HTMLMenuElement',\r\n  ctor: function HTMLMenuElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // XXX: not quite right, default should be popup if parent element is\r\n    // popup.\r\n    type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' },\r\n    label: String,\r\n    // Obsolete\r\n    compact: Boolean,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'meta',\r\n  name: 'HTMLMetaElement',\r\n  ctor: function HTMLMetaElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    name: String,\r\n    content: String,\r\n    httpEquiv: {name: 'http-equiv', type: String},\r\n    // Obsolete\r\n    scheme: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'meter',\r\n  name: 'HTMLMeterElement',\r\n  ctor: function HTMLMeterElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps\r\n});\r\n\r\ndefine({\r\n  tags: ['ins', 'del'],\r\n  name: 'HTMLModElement',\r\n  ctor: function HTMLModElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    cite: URL,\r\n    dateTime: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'ol',\r\n  name: 'HTMLOListElement',\r\n  ctor: function HTMLOListElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    // Utility function (see the start attribute default value). Returns\r\n    // the number of <li> children of this element\r\n    _numitems: { get: function() {\r\n      var items = 0;\r\n      this.childNodes.forEach(function(n) {\r\n        if (n.nodeType === Node.ELEMENT_NODE && n.tagName === \"LI\")\r\n          items++;\r\n      });\r\n      return items;\r\n    }}\r\n  },\r\n  attributes: {\r\n    type: String,\r\n    reversed: Boolean,\r\n    start: {\r\n      type: \"long\",\r\n      default: function() {\r\n       // The default value of the start attribute is 1 unless the list is\r\n       // reversed. Then it is the # of li children\r\n       if (this.reversed)\r\n         return this._numitems;\r\n       else\r\n         return 1;\r\n      }\r\n    },\r\n    // Obsolete\r\n    compact: Boolean,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'object',\r\n  name: 'HTMLObjectElement',\r\n  ctor: function HTMLObjectElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    data: URL,\r\n    type: String,\r\n    name: String,\r\n    useMap: String,\r\n    typeMustMatch: Boolean,\r\n    width: String,\r\n    height: String,\r\n    // Obsolete\r\n    align: String,\r\n    archive: String,\r\n    code: String,\r\n    declare: Boolean,\r\n    hspace: { type: \"unsigned long\", default: 0 },\r\n    standby: String,\r\n    vspace: { type: \"unsigned long\", default: 0 },\r\n    codeBase: URL,\r\n    codeType: String,\r\n    border: { type: String, treatNullAsEmptyString: true },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'optgroup',\r\n  name: 'HTMLOptGroupElement',\r\n  ctor: function HTMLOptGroupElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    disabled: Boolean,\r\n    label: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'option',\r\n  name: 'HTMLOptionElement',\r\n  ctor: function HTMLOptionElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    form: { get: function() {\r\n      var p = this.parentNode;\r\n      while (p && p.nodeType === Node.ELEMENT_NODE) {\r\n        if (p.localName === 'select') return p.form;\r\n        p = p.parentNode;\r\n      }\r\n    }},\r\n    value: {\r\n      get: function() { return this._getattr('value') || this.text; },\r\n      set: function(v) { this._setattr('value', v); },\r\n    },\r\n    text: {\r\n      get: function() {\r\n        // Strip and collapse whitespace\r\n        return this.textContent.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n      },\r\n      set: function(v) { this.textContent = v; },\r\n    },\r\n    // missing: index\r\n  },\r\n  attributes: {\r\n    disabled: Boolean,\r\n    defaultSelected: {name: 'selected', type: Boolean},\r\n    label: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'output',\r\n  name: 'HTMLOutputElement',\r\n  ctor: function HTMLOutputElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    // XXX Reflect for/htmlFor as a settable token list\r\n    name: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'p',\r\n  name: 'HTMLParagraphElement',\r\n  ctor: function HTMLParagraphElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'param',\r\n  name: 'HTMLParamElement',\r\n  ctor: function HTMLParamElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    name: String,\r\n    value: String,\r\n    // Obsolete\r\n    type: String,\r\n    valueType: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tags: ['pre',/*legacy elements:*/'listing','xmp'],\r\n  name: 'HTMLPreElement',\r\n  ctor: function HTMLPreElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    width: { type: \"long\", default: 0 },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'progress',\r\n  name: 'HTMLProgressElement',\r\n  ctor: function HTMLProgressElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: formAssociatedProps,\r\n  attributes: {\r\n    max: {type: Number, float: true, default: 1.0, min: 0}\r\n  }\r\n});\r\n\r\ndefine({\r\n  tags: ['q', 'blockquote'],\r\n  name: 'HTMLQuoteElement',\r\n  ctor: function HTMLQuoteElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    cite: URL\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'script',\r\n  name: 'HTMLScriptElement',\r\n  ctor: function HTMLScriptElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    text: {\r\n      get: function() {\r\n        var s = \"\";\r\n        for(var i = 0, n = this.childNodes.length; i < n; i++) {\r\n          var child = this.childNodes[i];\r\n          if (child.nodeType === Node.TEXT_NODE)\r\n            s += child._data;\r\n        }\r\n        return s;\r\n      },\r\n      set: function(value) {\r\n        this.removeChildren();\r\n        if (value !== null && value !== \"\") {\r\n          this.appendChild(this.ownerDocument.createTextNode(value));\r\n        }\r\n      }\r\n    }\r\n  },\r\n  attributes: {\r\n    src: URL,\r\n    type: String,\r\n    charset: String,\r\n    referrerPolicy: REFERRER,\r\n    defer: Boolean,\r\n    async: Boolean,\r\n    nomodule: Boolean,\r\n    crossOrigin: CORS,\r\n    nonce: String,\r\n    integrity: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'select',\r\n  name: 'HTMLSelectElement',\r\n  ctor: function HTMLSelectElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    form: formAssociatedProps.form,\r\n    options: { get: function() {\r\n      return this.getElementsByTagName('option');\r\n    }}\r\n  },\r\n  attributes: {\r\n    autocomplete: String, // It's complicated\r\n    name: String,\r\n    disabled: Boolean,\r\n    autofocus: Boolean,\r\n    multiple: Boolean,\r\n    required: Boolean,\r\n    size: {type: \"unsigned long\", default: 0}\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'span',\r\n  name: 'HTMLSpanElement',\r\n  ctor: function HTMLSpanElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'style',\r\n  name: 'HTMLStyleElement',\r\n  ctor: function HTMLStyleElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    media: String,\r\n    type: String,\r\n    scoped: Boolean\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'caption',\r\n  name: 'HTMLTableCaptionElement',\r\n  ctor: function HTMLTableCaptionElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n  }\r\n});\r\n\r\n\r\ndefine({\r\n  name: 'HTMLTableCellElement',\r\n  ctor: function HTMLTableCellElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    colSpan: {type: \"unsigned long\", default: 1},\r\n    rowSpan: {type: \"unsigned long\", default: 1},\r\n    //XXX Also reflect settable token list headers\r\n    scope: { type: ['row','col','rowgroup','colgroup'], missing: '' },\r\n    abbr: String,\r\n    // Obsolete\r\n    align: String,\r\n    axis: String,\r\n    height: String,\r\n    width: String,\r\n    ch: { name: 'char', type: String },\r\n    chOff: { name: 'charoff', type: String },\r\n    noWrap: Boolean,\r\n    vAlign: String,\r\n    bgColor: { type: String, treatNullAsEmptyString: true },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tags: ['col', 'colgroup'],\r\n  name: 'HTMLTableColElement',\r\n  ctor: function HTMLTableColElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    span: {type: 'limited unsigned long with fallback', default: 1, min: 1},\r\n    // Obsolete\r\n    align: String,\r\n    ch: { name: 'char', type: String },\r\n    chOff: { name: 'charoff', type: String },\r\n    vAlign: String,\r\n    width: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'table',\r\n  name: 'HTMLTableElement',\r\n  ctor: function HTMLTableElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    rows: { get: function() {\r\n      return this.getElementsByTagName('tr');\r\n    }}\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n    border: String,\r\n    frame: String,\r\n    rules: String,\r\n    summary: String,\r\n    width: String,\r\n    bgColor: { type: String, treatNullAsEmptyString: true },\r\n    cellPadding: { type: String, treatNullAsEmptyString: true },\r\n    cellSpacing: { type: String, treatNullAsEmptyString: true },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'template',\r\n  name: 'HTMLTemplateElement',\r\n  ctor: function HTMLTemplateElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n    this._contentFragment = doc._templateDoc.createDocumentFragment();\r\n  },\r\n  props: {\r\n    content: { get: function() { return this._contentFragment; } },\r\n    serialize: { value: function() { return this.content.serialize(); } }\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'tr',\r\n  name: 'HTMLTableRowElement',\r\n  ctor: function HTMLTableRowElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    cells: { get: function() {\r\n      return this.querySelectorAll('td,th');\r\n    }}\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n    ch: { name: 'char', type: String },\r\n    chOff: { name: 'charoff', type: String },\r\n    vAlign: String,\r\n    bgColor: { type: String, treatNullAsEmptyString: true },\r\n  },\r\n});\r\n\r\ndefine({\r\n  tags: ['thead', 'tfoot', 'tbody'],\r\n  name: 'HTMLTableSectionElement',\r\n  ctor: function HTMLTableSectionElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    rows: { get: function() {\r\n      return this.getElementsByTagName('tr');\r\n    }}\r\n  },\r\n  attributes: {\r\n    // Obsolete\r\n    align: String,\r\n    ch: { name: 'char', type: String },\r\n    chOff: { name: 'charoff', type: String },\r\n    vAlign: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'textarea',\r\n  name: 'HTMLTextAreaElement',\r\n  ctor: function HTMLTextAreaElement(doc, localName, prefix) {\r\n    HTMLFormElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    form: formAssociatedProps.form,\r\n    type: { get: function() { return 'textarea'; } },\r\n    defaultValue: {\r\n      get: function() { return this.textContent; },\r\n      set: function(v) { this.textContent = v; },\r\n    },\r\n    value: {\r\n      get: function() { return this.defaultValue; /* never dirty */ },\r\n      set: function(v) {\r\n        // This isn't completely correct: according to the spec, this\r\n        // should \"dirty\" the API value, and result in\r\n        // `this.value !== this.defaultValue`.  But for most of what\r\n        // folks want to do, this implementation should be fine:\r\n        this.defaultValue = v;\r\n      },\r\n    },\r\n    textLength: { get: function() { return this.value.length; } },\r\n  },\r\n  attributes: {\r\n    autocomplete: String, // It's complicated\r\n    name: String,\r\n    disabled: Boolean,\r\n    autofocus: Boolean,\r\n    placeholder: String,\r\n    wrap: String,\r\n    dirName: String,\r\n    required: Boolean,\r\n    readOnly: Boolean,\r\n    rows: {type: 'limited unsigned long with fallback', default: 2 },\r\n    cols: {type: 'limited unsigned long with fallback', default: 20 },\r\n    maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n    minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1},\r\n    inputMode: { type: [ \"verbatim\", \"latin\", \"latin-name\", \"latin-prose\", \"full-width-latin\", \"kana\", \"kana-name\", \"katakana\", \"numeric\", \"tel\", \"email\", \"url\" ], missing: '' },\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'time',\r\n  name: 'HTMLTimeElement',\r\n  ctor: function HTMLTimeElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    dateTime: String,\r\n    pubDate: Boolean\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'title',\r\n  name: 'HTMLTitleElement',\r\n  ctor: function HTMLTitleElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    text: { get: function() {\r\n      return this.textContent;\r\n    }}\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'ul',\r\n  name: 'HTMLUListElement',\r\n  ctor: function HTMLUListElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    type: String,\r\n    // Obsolete\r\n    compact: Boolean,\r\n  }\r\n});\r\n\r\ndefine({\r\n  name: 'HTMLMediaElement',\r\n  ctor: function HTMLMediaElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    src: URL,\r\n    crossOrigin: CORS,\r\n    preload: { type:[\"metadata\", \"none\", \"auto\", {value: \"\", alias: \"auto\"}], missing: 'auto' },\r\n    loop: Boolean,\r\n    autoplay: Boolean,\r\n    mediaGroup: String,\r\n    controls: Boolean,\r\n    defaultMuted: {name: \"muted\", type: Boolean}\r\n  }\r\n});\r\n\r\ndefine({\r\n  name: 'HTMLAudioElement',\r\n  tag: 'audio',\r\n  superclass: htmlElements.HTMLMediaElement,\r\n  ctor: function HTMLAudioElement(doc, localName, prefix) {\r\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  name: 'HTMLVideoElement',\r\n  tag: 'video',\r\n  superclass: htmlElements.HTMLMediaElement,\r\n  ctor: function HTMLVideoElement(doc, localName, prefix) {\r\n    htmlElements.HTMLMediaElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    poster: URL,\r\n    width: {type: \"unsigned long\", min: 0, default: 0 },\r\n    height: {type: \"unsigned long\", min: 0, default: 0 }\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'td',\r\n  name: 'HTMLTableDataCellElement',\r\n  superclass: htmlElements.HTMLTableCellElement,\r\n  ctor: function HTMLTableDataCellElement(doc, localName, prefix) {\r\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'th',\r\n  name: 'HTMLTableHeaderCellElement',\r\n  superclass: htmlElements.HTMLTableCellElement,\r\n  ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) {\r\n    htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix);\r\n  },\r\n});\r\n\r\ndefine({\r\n  tag: 'frameset',\r\n  name: 'HTMLFrameSetElement',\r\n  ctor: function HTMLFrameSetElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'frame',\r\n  name: 'HTMLFrameElement',\r\n  ctor: function HTMLFrameElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'canvas',\r\n  name: 'HTMLCanvasElement',\r\n  ctor: function HTMLCanvasElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    getContext: { value: utils.nyi },\r\n    probablySupportsContext: { value: utils.nyi },\r\n    setContext: { value: utils.nyi },\r\n    transferControlToProxy: { value: utils.nyi },\r\n    toDataURL: { value: utils.nyi },\r\n    toBlob: { value: utils.nyi }\r\n  },\r\n  attributes: {\r\n    width: { type: \"unsigned long\", default: 300},\r\n    height: { type: \"unsigned long\", default: 150}\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'dialog',\r\n  name: 'HTMLDialogElement',\r\n  ctor: function HTMLDialogElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    show: { value: utils.nyi },\r\n    showModal: { value: utils.nyi },\r\n    close: { value: utils.nyi }\r\n  },\r\n  attributes: {\r\n    open: Boolean,\r\n    returnValue: String\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'menuitem',\r\n  name: 'HTMLMenuItemElement',\r\n  ctor: function HTMLMenuItemElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  props: {\r\n    // The menuitem's label\r\n    _label: {\r\n      get: function() {\r\n        var val = this._getattr('label');\r\n        if (val !== null && val !== '') { return val; }\r\n        val = this.textContent;\r\n        // Strip and collapse whitespace\r\n        return val.replace(/[ \\t\\n\\f\\r]+/g, ' ').trim();\r\n      }\r\n    },\r\n    // The menuitem label IDL attribute\r\n    label: {\r\n      get: function() {\r\n        var val = this._getattr('label');\r\n        if (val !== null) { return val; }\r\n        return this._label;\r\n      },\r\n      set: function(v) {\r\n        this._setattr('label', v);\r\n      },\r\n    }\r\n  },\r\n  attributes: {\r\n    type: { type: [\"command\",\"checkbox\",\"radio\"], missing: 'command' },\r\n    icon: URL,\r\n    disabled: Boolean,\r\n    checked: Boolean,\r\n    radiogroup: String,\r\n    default: Boolean\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'source',\r\n  name: 'HTMLSourceElement',\r\n  ctor: function HTMLSourceElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    srcset: String,\r\n    sizes: String,\r\n    media: String,\r\n    src: URL,\r\n    type: String,\r\n    width: String,\r\n    height: String,\r\n  }\r\n});\r\n\r\ndefine({\r\n  tag: 'track',\r\n  name: 'HTMLTrackElement',\r\n  ctor: function HTMLTrackElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    src: URL,\r\n    srclang: String,\r\n    label: String,\r\n    default: Boolean,\r\n    kind: { type: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"], missing: 'subtitles', invalid: 'metadata' },\r\n  },\r\n  props: {\r\n    NONE: { get: function() { return 0; } },\r\n    LOADING: { get: function() { return 1; } },\r\n    LOADED: { get: function() { return 2; } },\r\n    ERROR: { get: function() { return 3; } },\r\n    readyState: { get: utils.nyi },\r\n    track: { get: utils.nyi }\r\n  }\r\n});\r\n\r\ndefine({\r\n  // obsolete\r\n  tag: 'font',\r\n  name: 'HTMLFontElement',\r\n  ctor: function HTMLFontElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    color: { type: String, treatNullAsEmptyString: true },\r\n    face: { type: String },\r\n    size: { type: String },\r\n  },\r\n});\r\n\r\ndefine({\r\n  // obsolete\r\n  tag: 'dir',\r\n  name: 'HTMLDirectoryElement',\r\n  ctor: function HTMLDirectoryElement(doc, localName, prefix) {\r\n    HTMLElement.call(this, doc, localName, prefix);\r\n  },\r\n  attributes: {\r\n    compact: Boolean,\r\n  },\r\n});\r\n\r\ndefine({\r\n  tags: [\r\n    \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"cite\", \"content\", \"code\",\r\n    \"dd\", \"dfn\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\", \"header\", \"hgroup\", \"i\", \"kbd\",\r\n    \"main\", \"mark\", \"nav\", \"noscript\", \"rb\", \"rp\", \"rt\", \"rtc\",\r\n    \"ruby\", \"s\", \"samp\", \"section\", \"small\", \"strong\", \"sub\", \"summary\", \"sup\", \"u\", \"var\", \"wbr\",\r\n    // Legacy elements\r\n    \"acronym\", \"basefont\", \"big\", \"center\", \"nobr\", \"noembed\", \"noframes\",\r\n    \"plaintext\", \"strike\", \"tt\"\r\n  ]\r\n});\r\n","\"use strict\";\r\nvar Element = require('./Element');\r\nvar defineElement = require('./defineElement');\r\nvar utils = require('./utils');\r\nvar CSSStyleDeclaration = require('./CSSStyleDeclaration');\r\n\r\nvar svgElements = exports.elements = {};\r\nvar svgNameToImpl = Object.create(null);\r\n\r\nexports.createElement = function(doc, localName, prefix) {\r\n  var impl = svgNameToImpl[localName] || SVGElement;\r\n  return new impl(doc, localName, prefix);\r\n};\r\n\r\nfunction define(spec) {\r\n  return defineElement(spec, SVGElement, svgElements, svgNameToImpl);\r\n}\r\n\r\nvar SVGElement = define({\r\n  superclass: Element,\r\n  name: 'SVGElement',\r\n  ctor: function SVGElement(doc, localName, prefix) {\r\n    Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix);\r\n  },\r\n  props: {\r\n    style: { get: function() {\r\n      if (!this._style)\r\n        this._style = new CSSStyleDeclaration(this);\r\n      return this._style;\r\n    }}\r\n  }\r\n});\r\n\r\ndefine({\r\n  name: 'SVGSVGElement',\r\n  ctor: function SVGSVGElement(doc, localName, prefix) {\r\n    SVGElement.call(this, doc, localName, prefix);\r\n  },\r\n  tag: 'svg',\r\n  props: {\r\n    createSVGRect: { value: function () {\r\n      return exports.createElement(this.ownerDocument, 'rect', null);\r\n    } }\r\n  }\r\n});\r\n\r\ndefine({\r\n  tags: [\r\n    'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform',\r\n    'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix',\r\n    'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight',\r\n    'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode',\r\n    'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter',\r\n    'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g',\r\n    'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph',\r\n    'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop',  'style',\r\n    'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern'\r\n  ]\r\n});\r\n","\"use strict\";\r\nmodule.exports = {\r\n  VALUE: 1, // The value of a Text, Comment or PI node changed\r\n  ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed\r\n  REMOVE_ATTR: 3, // An attribute was removed\r\n  REMOVE: 4, // A node was removed\r\n  MOVE: 5, // A node was moved\r\n  INSERT: 6 // A node (or a subtree of nodes) was inserted\r\n};","\"use strict\";\r\nmodule.exports = Document;\r\n\r\nvar Node = require('./Node');\r\nvar NodeList = require('./NodeList');\r\nvar ContainerNode = require('./ContainerNode');\r\nvar Element = require('./Element');\r\nvar Text = require('./Text');\r\nvar Comment = require('./Comment');\r\nvar Event = require('./Event');\r\nvar DocumentFragment = require('./DocumentFragment');\r\nvar ProcessingInstruction = require('./ProcessingInstruction');\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar TreeWalker = require('./TreeWalker');\r\nvar NodeIterator = require('./NodeIterator');\r\nvar NodeFilter = require('./NodeFilter');\r\nvar URL = require('./URL');\r\nvar select = require('./select');\r\nvar events = require('./events');\r\nvar xml = require('./xmlnames');\r\nvar html = require('./htmlelts');\r\nvar svg = require('./svg');\r\nvar utils = require('./utils');\r\nvar MUTATE = require('./MutationConstants');\r\nvar NAMESPACE = utils.NAMESPACE;\r\nvar isApiWritable = require(\"./config\").isApiWritable;\r\n\r\nfunction Document(isHTML, address) {\r\n  ContainerNode.call(this);\r\n  this.nodeType = Node.DOCUMENT_NODE;\r\n  this.isHTML = isHTML;\r\n  this._address = address || 'about:blank';\r\n  this.readyState = 'loading';\r\n  this.implementation = new DOMImplementation(this);\r\n\r\n  // DOMCore says that documents are always associated with themselves\r\n  this.ownerDocument = null; // ... but W3C tests expect null\r\n  this._contentType = isHTML ? 'text/html' : 'application/xml';\r\n\r\n  // These will be initialized by our custom versions of\r\n  // appendChild and insertBefore that override the inherited\r\n  // Node methods.\r\n  // XXX: override those methods!\r\n  this.doctype = null;\r\n  this.documentElement = null;\r\n\r\n  // \"Associated inert template document\"\r\n  this._templateDocCache = null;\r\n  // List of active NodeIterators, see NodeIterator#_preremove()\r\n  this._nodeIterators = null;\r\n\r\n  // Documents are always rooted, by definition\r\n  this._nid = 1;\r\n  this._nextnid = 2; // For numbering children of the document\r\n  this._nodes = [null, this];  // nid to node map\r\n\r\n  // This maintains the mapping from element ids to element nodes.\r\n  // We may need to update this mapping every time a node is rooted\r\n  // or uprooted, and any time an attribute is added, removed or changed\r\n  // on a rooted element.\r\n  this.byId = Object.create(null);\r\n\r\n  // This property holds a monotonically increasing value akin to\r\n  // a timestamp used to record the last modification time of nodes\r\n  // and their subtrees. See the lastModTime attribute and modify()\r\n  // method of the Node class. And see FilteredElementList for an example\r\n  // of the use of lastModTime\r\n  this.modclock = 0;\r\n}\r\n\r\n// Map from lowercase event category names (used as arguments to\r\n// createEvent()) to the property name in the impl object of the\r\n// event constructor.\r\nvar supportedEvents = {\r\n  event: 'Event',\r\n  customevent: 'CustomEvent',\r\n  uievent: 'UIEvent',\r\n  mouseevent: 'MouseEvent'\r\n};\r\n\r\n// Certain arguments to document.createEvent() must be treated specially\r\nvar replacementEvent = {\r\n  events: 'event',\r\n  htmlevents: 'event',\r\n  mouseevents: 'mouseevent',\r\n  mutationevents: 'mutationevent',\r\n  uievents: 'uievent'\r\n};\r\n\r\nvar mirrorAttr = function(f, name, defaultValue) {\r\n  return {\r\n    get: function() {\r\n      var o = f.call(this);\r\n      if (o) { return o[name]; }\r\n      return defaultValue;\r\n    },\r\n    set: function(value) {\r\n      var o = f.call(this);\r\n      if (o) { o[name] = value; }\r\n    },\r\n  };\r\n};\r\n\r\n/** @spec https://dom.spec.whatwg.org/#validate-and-extract */\r\nfunction validateAndExtract(namespace, qualifiedName) {\r\n  var prefix, localName, pos;\r\n  if (namespace==='') { namespace = null; }\r\n  // See https://github.com/whatwg/dom/issues/671\r\n  // and https://github.com/whatwg/dom/issues/319\r\n  if (!xml.isValidQName(qualifiedName)) {\r\n    utils.InvalidCharacterError();\r\n  }\r\n  prefix = null;\r\n  localName = qualifiedName;\r\n\r\n  pos = qualifiedName.indexOf(':');\r\n  if (pos >= 0) {\r\n    prefix = qualifiedName.substring(0, pos);\r\n    localName = qualifiedName.substring(pos+1);\r\n  }\r\n  if (prefix !== null && namespace === null) {\r\n    utils.NamespaceError();\r\n  }\r\n  if (prefix === 'xml' && namespace !== NAMESPACE.XML) {\r\n    utils.NamespaceError();\r\n  }\r\n  if ((prefix === 'xmlns' || qualifiedName === 'xmlns') &&\r\n      namespace !== NAMESPACE.XMLNS) {\r\n    utils.NamespaceError();\r\n  }\r\n  if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) {\r\n    utils.NamespaceError();\r\n  }\r\n  return { namespace: namespace, prefix: prefix, localName: localName };\r\n}\r\n\r\nDocument.prototype = Object.create(ContainerNode.prototype, {\r\n  // This method allows dom.js to communicate with a renderer\r\n  // that displays the document in some way\r\n  // XXX: I should probably move this to the window object\r\n  _setMutationHandler: { value: function(handler) {\r\n    this.mutationHandler = handler;\r\n  }},\r\n\r\n  // This method allows dom.js to receive event notifications\r\n  // from the renderer.\r\n  // XXX: I should probably move this to the window object\r\n  _dispatchRendererEvent: { value: function(targetNid, type, details) {\r\n    var target = this._nodes[targetNid];\r\n    if (!target) return;\r\n    target._dispatchEvent(new Event(type, details), true);\r\n  }},\r\n\r\n  nodeName: { value: '#document'},\r\n  nodeValue: {\r\n    get: function() {\r\n      return null;\r\n    },\r\n    set: function() {}\r\n  },\r\n\r\n  // XXX: DOMCore may remove documentURI, so it is NYI for now\r\n  documentURI: { get: function() { return this._address; }, set: utils.nyi },\r\n  compatMode: { get: function() {\r\n    // The _quirks property is set by the HTML parser\r\n    return this._quirks ? 'BackCompat' : 'CSS1Compat';\r\n  }},\r\n\r\n  createTextNode: { value: function(data) {\r\n    return new Text(this, String(data));\r\n  }},\r\n  createComment: { value: function(data) {\r\n    return new Comment(this, data);\r\n  }},\r\n  createDocumentFragment: { value: function() {\r\n    return new DocumentFragment(this);\r\n  }},\r\n  createProcessingInstruction: { value: function(target, data) {\r\n    if (!xml.isValidName(target) || data.indexOf('?>') !== -1)\r\n      utils.InvalidCharacterError();\r\n    return new ProcessingInstruction(this, target, data);\r\n  }},\r\n\r\n  createAttribute: { value: function(localName) {\r\n    localName = String(localName);\r\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\r\n    if (this.isHTML) {\r\n      localName = utils.toASCIILowerCase(localName);\r\n    }\r\n    return new Element._Attr(null, localName, null, null, '');\r\n  }},\r\n  createAttributeNS: { value: function(namespace, qualifiedName) {\r\n    // Convert parameter types according to WebIDL\r\n    namespace =\r\n      (namespace === null || namespace === undefined || namespace === '') ? null :\r\n      String(namespace);\r\n    qualifiedName = String(qualifiedName);\r\n    var ve = validateAndExtract(namespace, qualifiedName);\r\n    return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, '');\r\n  }},\r\n\r\n  createElement: { value: function(localName) {\r\n    localName = String(localName);\r\n    if (!xml.isValidName(localName)) utils.InvalidCharacterError();\r\n    // Per spec, namespace should be HTML namespace if \"context object is\r\n    // an HTML document or context object's content type is\r\n    // \"application/xhtml+xml\", and null otherwise.\r\n    if (this.isHTML) {\r\n      if (/[A-Z]/.test(localName))\r\n        localName = utils.toASCIILowerCase(localName);\r\n      return html.createElement(this, localName, null);\r\n    } else if (this.contentType === 'application/xhtml+xml') {\r\n      return html.createElement(this, localName, null);\r\n    } else {\r\n      return new Element(this, localName, null, null);\r\n    }\r\n  }, writable: isApiWritable },\r\n\r\n  createElementNS: { value: function(namespace, qualifiedName) {\r\n    // Convert parameter types according to WebIDL\r\n    namespace =\r\n      (namespace === null || namespace === undefined || namespace === '') ? null :\r\n      String(namespace);\r\n    qualifiedName = String(qualifiedName);\r\n    var ve = validateAndExtract(namespace, qualifiedName);\r\n    return this._createElementNS(ve.localName, ve.namespace, ve.prefix);\r\n  }, writable: isApiWritable },\r\n\r\n  // This is used directly by HTML parser, which allows it to create\r\n  // elements with localNames containing ':' and non-default namespaces\r\n  _createElementNS: { value: function(localName, namespace, prefix) {\r\n    if (namespace === NAMESPACE.HTML) {\r\n      return html.createElement(this, localName, prefix);\r\n    }\r\n    else if (namespace === NAMESPACE.SVG) {\r\n      return svg.createElement(this, localName, prefix);\r\n    }\r\n\r\n    return new Element(this, localName, namespace, prefix);\r\n  }},\r\n\r\n  createEvent: { value: function createEvent(interfaceName) {\r\n    interfaceName = interfaceName.toLowerCase();\r\n    var name = replacementEvent[interfaceName] || interfaceName;\r\n    var constructor = events[supportedEvents[name]];\r\n\r\n    if (constructor) {\r\n      var e = new constructor();\r\n      e._initialized = false;\r\n      return e;\r\n    }\r\n    else {\r\n      utils.NotSupportedError();\r\n    }\r\n  }},\r\n\r\n  // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker\r\n  createTreeWalker: {value: function (root, whatToShow, filter) {\r\n    if (!root) { throw new TypeError(\"root argument is required\"); }\r\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\r\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\r\n    filter = filter === undefined ? null : filter;\r\n\r\n    return new TreeWalker(root, whatToShow, filter);\r\n  }},\r\n\r\n  // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator\r\n  createNodeIterator: {value: function (root, whatToShow, filter) {\r\n    if (!root) { throw new TypeError(\"root argument is required\"); }\r\n    if (!(root instanceof Node)) { throw new TypeError(\"root not a node\"); }\r\n    whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow);\r\n    filter = filter === undefined ? null : filter;\r\n\r\n    return new NodeIterator(root, whatToShow, filter);\r\n  }},\r\n\r\n  _attachNodeIterator: { value: function(ni) {\r\n    // XXX ideally this should be a weak reference from Document to NodeIterator\r\n    if (!this._nodeIterators) { this._nodeIterators = []; }\r\n    this._nodeIterators.push(ni);\r\n  }},\r\n\r\n  _detachNodeIterator: { value: function(ni) {\r\n    // ni should always be in list of node iterators\r\n    var idx = this._nodeIterators.indexOf(ni);\r\n    this._nodeIterators.splice(idx, 1);\r\n  }},\r\n\r\n  _preremoveNodeIterators: { value: function(toBeRemoved) {\r\n    if (this._nodeIterators) {\r\n      this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); });\r\n    }\r\n  }},\r\n\r\n  // Maintain the documentElement and\r\n  // doctype properties of the document.  Each of the following\r\n  // methods chains to the Node implementation of the method\r\n  // to do the actual inserting, removal or replacement.\r\n\r\n  _updateDocTypeElement: { value: function _updateDocTypeElement() {\r\n    this.doctype = this.documentElement = null;\r\n    for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n      if (kid.nodeType === Node.DOCUMENT_TYPE_NODE)\r\n        this.doctype = kid;\r\n      else if (kid.nodeType === Node.ELEMENT_NODE)\r\n        this.documentElement = kid;\r\n    }\r\n  }},\r\n\r\n  insertBefore: { value: function insertBefore(child, refChild) {\r\n    Node.prototype.insertBefore.call(this, child, refChild);\r\n    this._updateDocTypeElement();\r\n    return child;\r\n  }},\r\n\r\n  replaceChild: { value: function replaceChild(node, child) {\r\n    Node.prototype.replaceChild.call(this, node, child);\r\n    this._updateDocTypeElement();\r\n    return child;\r\n  }},\r\n\r\n  removeChild: { value: function removeChild(child) {\r\n    Node.prototype.removeChild.call(this, child);\r\n    this._updateDocTypeElement();\r\n    return child;\r\n  }},\r\n\r\n  getElementById: { value: function(id) {\r\n    var n = this.byId[id];\r\n    if (!n) return null;\r\n    if (n instanceof MultiId) { // there was more than one element with this id\r\n      return n.getFirst();\r\n    }\r\n    return n;\r\n  }},\r\n\r\n  _hasMultipleElementsWithId: { value: function(id) {\r\n    // Used internally by querySelectorAll optimization\r\n    return (this.byId[id] instanceof MultiId);\r\n  }},\r\n\r\n  // Just copy this method from the Element prototype\r\n  getElementsByName: { value: Element.prototype.getElementsByName },\r\n  getElementsByTagName: { value: Element.prototype.getElementsByTagName },\r\n  getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS },\r\n  getElementsByClassName: { value: Element.prototype.getElementsByClassName },\r\n\r\n  adoptNode: { value: function adoptNode(node) {\r\n    if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError();\r\n    if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; }\r\n\r\n    if (node.parentNode) node.parentNode.removeChild(node);\r\n\r\n    if (node.ownerDocument !== this)\r\n      recursivelySetOwner(node, this);\r\n\r\n    return node;\r\n  }},\r\n\r\n  importNode: { value: function importNode(node, deep) {\r\n    return this.adoptNode(node.cloneNode(deep));\r\n  }, writable: isApiWritable },\r\n\r\n  // The following attributes and methods are from the HTML spec\r\n  origin: { get: function origin() { return null; } },\r\n  characterSet: { get: function characterSet() { return \"UTF-8\"; } },\r\n  contentType: { get: function contentType() { return this._contentType; } },\r\n  URL: { get: function URL() { return this._address; } },\r\n  domain: { get: utils.nyi, set: utils.nyi },\r\n  referrer: { get: utils.nyi },\r\n  cookie: { get: utils.nyi, set: utils.nyi },\r\n  lastModified: { get: utils.nyi },\r\n  location: {\r\n\tget: function() {\r\n\t  return this.defaultView ? this.defaultView.location : null; // gh #75\r\n\t},\r\n\tset: utils.nyi\r\n  },\r\n  _titleElement: {\r\n    get: function() {\r\n      // The title element of a document is the first title element in the\r\n      // document in tree order, if there is one, or null otherwise.\r\n      return this.getElementsByTagName('title').item(0) || null;\r\n    }\r\n  },\r\n  title: {\r\n    get: function() {\r\n      var elt = this._titleElement;\r\n      // The child text content of the title element, or '' if null.\r\n      var value = elt ? elt.textContent : '';\r\n      // Strip and collapse whitespace in value\r\n      return value.replace(/[ \\t\\n\\r\\f]+/g, ' ').replace(/(^ )|( $)/g, '');\r\n    },\r\n    set: function(value) {\r\n      var elt = this._titleElement;\r\n      var head = this.head;\r\n      if (!elt && !head) { return; /* according to spec */ }\r\n      if (!elt) {\r\n        elt = this.createElement('title');\r\n        head.appendChild(elt);\r\n      }\r\n      elt.textContent = value;\r\n    }\r\n  },\r\n  dir: mirrorAttr(function() {\r\n    var htmlElement = this.documentElement;\r\n    if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; }\r\n  }, 'dir', ''),\r\n  fgColor: mirrorAttr(function() { return this.body; }, 'text', ''),\r\n  linkColor: mirrorAttr(function() { return this.body; }, 'link', ''),\r\n  vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''),\r\n  alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''),\r\n  bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''),\r\n\r\n  // Historical aliases of Document#characterSet\r\n  charset: { get: function() { return this.characterSet; } },\r\n  inputEncoding: { get: function() { return this.characterSet; } },\r\n\r\n  scrollingElement: {\r\n    get: function() {\r\n      return this._quirks ? this.body : this.documentElement;\r\n    }\r\n  },\r\n\r\n  // Return the first <body> child of the document element.\r\n  // XXX For now, setting this attribute is not implemented.\r\n  body: {\r\n    get: function() {\r\n      return namedHTMLChild(this.documentElement, 'body');\r\n    },\r\n    set: utils.nyi\r\n  },\r\n  // Return the first <head> child of the document element.\r\n  head: { get: function() {\r\n    return namedHTMLChild(this.documentElement, 'head');\r\n  }},\r\n  images: { get: utils.nyi },\r\n  embeds: { get: utils.nyi },\r\n  plugins: { get: utils.nyi },\r\n  links: { get: utils.nyi },\r\n  forms: { get: utils.nyi },\r\n  scripts: { get: utils.nyi },\r\n  applets: { get: function() { return []; } },\r\n  activeElement: { get: function() { return null; } },\r\n  innerHTML: {\r\n    get: function() { return this.serialize(); },\r\n    set: utils.nyi\r\n  },\r\n  outerHTML: {\r\n    get: function() { return this.serialize(); },\r\n    set: utils.nyi\r\n  },\r\n\r\n  write: { value: function(args) {\r\n    if (!this.isHTML) utils.InvalidStateError();\r\n\r\n    // XXX: still have to implement the ignore part\r\n    if (!this._parser /* && this._ignore_destructive_writes > 0 */ )\r\n      return;\r\n\r\n    if (!this._parser) {\r\n      // XXX call document.open, etc.\r\n    }\r\n\r\n    var s = arguments.join('');\r\n\r\n    // If the Document object's reload override flag is set, then\r\n    // append the string consisting of the concatenation of all the\r\n    // arguments to the method to the Document's reload override\r\n    // buffer.\r\n    // XXX: don't know what this is about.  Still have to do it\r\n\r\n    // If there is no pending parsing-blocking script, have the\r\n    // tokenizer process the characters that were inserted, one at a\r\n    // time, processing resulting tokens as they are emitted, and\r\n    // stopping when the tokenizer reaches the insertion point or when\r\n    // the processing of the tokenizer is aborted by the tree\r\n    // construction stage (this can happen if a script end tag token is\r\n    // emitted by the tokenizer).\r\n\r\n    // XXX: still have to do the above. Sounds as if we don't\r\n    // always call parse() here.  If we're blocked, then we just\r\n    // insert the text into the stream but don't parse it reentrantly...\r\n\r\n    // Invoke the parser reentrantly\r\n    this._parser.parse(s);\r\n  }},\r\n\r\n  writeln: { value: function writeln(args) {\r\n    this.write(Array.prototype.join.call(arguments, '') + '\\n');\r\n  }},\r\n\r\n  open: { value: function() {\r\n    this.documentElement = null;\r\n  }},\r\n\r\n  close: { value: function() {\r\n    this.readyState = 'interactive';\r\n    this._dispatchEvent(new Event('readystatechange'), true);\r\n    this._dispatchEvent(new Event('DOMContentLoaded'), true);\r\n    this.readyState = 'complete';\r\n    this._dispatchEvent(new Event('readystatechange'), true);\r\n    if (this.defaultView) {\r\n      this.defaultView._dispatchEvent(new Event('load'), true);\r\n    }\r\n  }},\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n    var d = new Document(this.isHTML, this._address);\r\n    d._quirks = this._quirks;\r\n    d._contentType = this._contentType;\r\n    return d;\r\n  }},\r\n\r\n  // We need to adopt the nodes if we do a deep clone\r\n  cloneNode: { value: function cloneNode(deep) {\r\n    var clone = Node.prototype.cloneNode.call(this, false);\r\n    if (deep) {\r\n      for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) {\r\n        clone._appendChild(clone.importNode(kid, true));\r\n      }\r\n    }\r\n    clone._updateDocTypeElement();\r\n    return clone;\r\n  }},\r\n\r\n  isEqual: { value: function isEqual(n) {\r\n    // Any two documents are shallowly equal.\r\n    // Node.isEqualNode will also test the children\r\n    return true;\r\n  }},\r\n\r\n  // Implementation-specific function.  Called when a text, comment,\r\n  // or pi value changes.\r\n  mutateValue: { value: function(node) {\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.VALUE,\r\n        target: node,\r\n        data: node.data\r\n      });\r\n    }\r\n  }},\r\n\r\n  // Invoked when an attribute's value changes. Attr holds the new\r\n  // value.  oldval is the old value.  Attribute mutations can also\r\n  // involve changes to the prefix (and therefore the qualified name)\r\n  mutateAttr: { value: function(attr, oldval) {\r\n    // Manage id->element mapping for getElementsById()\r\n    // XXX: this special case id handling should not go here,\r\n    // but in the attribute declaration for the id attribute\r\n    /*\r\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\r\n      if (oldval) delId(oldval, attr.ownerElement);\r\n      addId(attr.value, attr.ownerElement);\r\n    }\r\n    */\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.ATTR,\r\n        target: attr.ownerElement,\r\n        attr: attr\r\n      });\r\n    }\r\n  }},\r\n\r\n  // Used by removeAttribute and removeAttributeNS for attributes.\r\n  mutateRemoveAttr: { value: function(attr) {\r\n/*\r\n* This is now handled in Attributes.js\r\n    // Manage id to element mapping\r\n    if (attr.localName === 'id' && attr.namespaceURI === null) {\r\n      this.delId(attr.value, attr.ownerElement);\r\n    }\r\n*/\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.REMOVE_ATTR,\r\n        target: attr.ownerElement,\r\n        attr: attr\r\n      });\r\n    }\r\n  }},\r\n\r\n  // Called by Node.removeChild, etc. to remove a rooted element from\r\n  // the tree. Only needs to generate a single mutation event when a\r\n  // node is removed, but must recursively mark all descendants as not\r\n  // rooted.\r\n  mutateRemove: { value: function(node) {\r\n    // Send a single mutation event\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.REMOVE,\r\n        target: node.parentNode,\r\n        node: node\r\n      });\r\n    }\r\n\r\n    // Mark this and all descendants as not rooted\r\n    recursivelyUproot(node);\r\n  }},\r\n\r\n  // Called when a new element becomes rooted.  It must recursively\r\n  // generate mutation events for each of the children, and mark them all\r\n  // as rooted.\r\n  mutateInsert: { value: function(node) {\r\n    // Mark node and its descendants as rooted\r\n    recursivelyRoot(node);\r\n\r\n    // Send a single mutation event\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.INSERT,\r\n        target: node.parentNode,\r\n        node: node\r\n      });\r\n    }\r\n  }},\r\n\r\n  // Called when a rooted element is moved within the document\r\n  mutateMove: { value: function(node) {\r\n    if (this.mutationHandler) {\r\n      this.mutationHandler({\r\n        type: MUTATE.MOVE,\r\n        target: node\r\n      });\r\n    }\r\n  }},\r\n\r\n\r\n  // Add a mapping from  id to n for n.ownerDocument\r\n  addId: { value: function addId(id, n) {\r\n    var val = this.byId[id];\r\n    if (!val) {\r\n      this.byId[id] = n;\r\n    }\r\n    else {\r\n      // TODO: Add a way to opt-out console warnings\r\n      //console.warn('Duplicate element id ' + id);\r\n      if (!(val instanceof MultiId)) {\r\n        val = new MultiId(val);\r\n        this.byId[id] = val;\r\n      }\r\n      val.add(n);\r\n    }\r\n  }},\r\n\r\n  // Delete the mapping from id to n for n.ownerDocument\r\n  delId: { value: function delId(id, n) {\r\n    var val = this.byId[id];\r\n    utils.assert(val);\r\n\r\n    if (val instanceof MultiId) {\r\n      val.del(n);\r\n      if (val.length === 1) { // convert back to a single node\r\n        this.byId[id] = val.downgrade();\r\n      }\r\n    }\r\n    else {\r\n      this.byId[id] = undefined;\r\n    }\r\n  }},\r\n\r\n  _resolve: { value: function(href) {\r\n    //XXX: Cache the URL\r\n    return new URL(this._documentBaseURL).resolve(href);\r\n  }},\r\n\r\n  _documentBaseURL: { get: function() {\r\n    // XXX: This is not implemented correctly yet\r\n    var url = this._address;\r\n    if (url === 'about:blank') url = '/';\r\n\r\n    var base = this.querySelector('base[href]');\r\n    if (base) {\r\n      return new URL(url).resolve(base.getAttribute('href'));\r\n    }\r\n    return url;\r\n\r\n    // The document base URL of a Document object is the\r\n    // absolute URL obtained by running these substeps:\r\n\r\n    //     Let fallback base url be the document's address.\r\n\r\n    //     If fallback base url is about:blank, and the\r\n    //     Document's browsing context has a creator browsing\r\n    //     context, then let fallback base url be the document\r\n    //     base URL of the creator Document instead.\r\n\r\n    //     If the Document is an iframe srcdoc document, then\r\n    //     let fallback base url be the document base URL of\r\n    //     the Document's browsing context's browsing context\r\n    //     container's Document instead.\r\n\r\n    //     If there is no base element that has an href\r\n    //     attribute, then the document base URL is fallback\r\n    //     base url; abort these steps. Otherwise, let url be\r\n    //     the value of the href attribute of the first such\r\n    //     element.\r\n\r\n    //     Resolve url relative to fallback base url (thus,\r\n    //     the base href attribute isn't affected by xml:base\r\n    //     attributes).\r\n\r\n    //     The document base URL is the result of the previous\r\n    //     step if it was successful; otherwise it is fallback\r\n    //     base url.\r\n  }},\r\n\r\n  _templateDoc: { get: function() {\r\n    if (!this._templateDocCache) {\r\n      // \"associated inert template document\"\r\n      var newDoc = new Document(this.isHTML, this._address);\r\n      this._templateDocCache = newDoc._templateDocCache = newDoc;\r\n    }\r\n    return this._templateDocCache;\r\n  }},\r\n\r\n  querySelector: { value: function(selector) {\r\n    return select(selector, this)[0];\r\n  }},\r\n\r\n  querySelectorAll: { value: function(selector) {\r\n    var nodes = select(selector, this);\r\n    return nodes.item ? nodes : new NodeList(nodes);\r\n  }}\r\n\r\n});\r\n\r\n\r\nvar eventHandlerTypes = [\r\n  'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu',\r\n  'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave',\r\n  'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended',\r\n  'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata',\r\n  'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout',\r\n  'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing',\r\n  'progress', 'ratechange', 'readystatechange', 'reset', 'seeked',\r\n  'seeking', 'select', 'show', 'stalled', 'submit', 'suspend',\r\n  'timeupdate', 'volumechange', 'waiting',\r\n\r\n  'blur', 'error', 'focus', 'load', 'scroll'\r\n];\r\n\r\n// Add event handler idl attribute getters and setters to Document\r\neventHandlerTypes.forEach(function(type) {\r\n  // Define the event handler registration IDL attribute for this type\r\n  Object.defineProperty(Document.prototype, 'on' + type, {\r\n    get: function() {\r\n      return this._getEventHandler(type);\r\n    },\r\n    set: function(v) {\r\n      this._setEventHandler(type, v);\r\n    }\r\n  });\r\n});\r\n\r\nfunction namedHTMLChild(parent, name) {\r\n  if (parent && parent.isHTML) {\r\n    for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) {\r\n      if (kid.nodeType === Node.ELEMENT_NODE &&\r\n        kid.localName === name &&\r\n        kid.namespaceURI === NAMESPACE.HTML) {\r\n        return kid;\r\n      }\r\n    }\r\n  }\r\n  return null;\r\n}\r\n\r\nfunction root(n) {\r\n  n._nid = n.ownerDocument._nextnid++;\r\n  n.ownerDocument._nodes[n._nid] = n;\r\n  // Manage id to element mapping\r\n  if (n.nodeType === Node.ELEMENT_NODE) {\r\n    var id = n.getAttribute('id');\r\n    if (id) n.ownerDocument.addId(id, n);\r\n\r\n    // Script elements need to know when they're inserted\r\n    // into the document\r\n    if (n._roothook) n._roothook();\r\n  }\r\n}\r\n\r\nfunction uproot(n) {\r\n  // Manage id to element mapping\r\n  if (n.nodeType === Node.ELEMENT_NODE) {\r\n    var id = n.getAttribute('id');\r\n    if (id) n.ownerDocument.delId(id, n);\r\n  }\r\n  n.ownerDocument._nodes[n._nid] = undefined;\r\n  n._nid = undefined;\r\n}\r\n\r\nfunction recursivelyRoot(node) {\r\n  root(node);\r\n  // XXX:\r\n  // accessing childNodes on a leaf node creates a new array the\r\n  // first time, so be careful to write this loop so that it\r\n  // doesn't do that. node is polymorphic, so maybe this is hard to\r\n  // optimize?  Try switching on nodeType?\r\n/*\r\n  if (node.hasChildNodes()) {\r\n    var kids = node.childNodes;\r\n    for(var i = 0, n = kids.length;  i < n; i++)\r\n      recursivelyRoot(kids[i]);\r\n  }\r\n*/\r\n  if (node.nodeType === Node.ELEMENT_NODE) {\r\n    for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n      recursivelyRoot(kid);\r\n  }\r\n}\r\n\r\nfunction recursivelyUproot(node) {\r\n  uproot(node);\r\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n      recursivelyUproot(kid);\r\n}\r\n\r\nfunction recursivelySetOwner(node, owner) {\r\n  node.ownerDocument = owner;\r\n  node._lastModTime = undefined; // mod times are document-based\r\n  if (Object.prototype.hasOwnProperty.call(node, '_tagName')) {\r\n    node._tagName = undefined; // Element subclasses might need to change case\r\n  }\r\n  for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling)\r\n    recursivelySetOwner(kid, owner);\r\n}\r\n\r\n// A class for storing multiple nodes with the same ID\r\nfunction MultiId(node) {\r\n  this.nodes = Object.create(null);\r\n  this.nodes[node._nid] = node;\r\n  this.length = 1;\r\n  this.firstNode = undefined;\r\n}\r\n\r\n// Add a node to the list, with O(1) time\r\nMultiId.prototype.add = function(node) {\r\n  if (!this.nodes[node._nid]) {\r\n    this.nodes[node._nid] = node;\r\n    this.length++;\r\n    this.firstNode = undefined;\r\n  }\r\n};\r\n\r\n// Remove a node from the list, with O(1) time\r\nMultiId.prototype.del = function(node) {\r\n  if (this.nodes[node._nid]) {\r\n    delete this.nodes[node._nid];\r\n    this.length--;\r\n    this.firstNode = undefined;\r\n  }\r\n};\r\n\r\n// Get the first node from the list, in the document order\r\n// Takes O(N) time in the size of the list, with a cache that is invalidated\r\n// when the list is modified.\r\nMultiId.prototype.getFirst = function() {\r\n  /* jshint bitwise: false */\r\n  if (!this.firstNode) {\r\n    var nid;\r\n    for (nid in this.nodes) {\r\n      if (this.firstNode === undefined ||\r\n        this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) {\r\n        this.firstNode = this.nodes[nid];\r\n      }\r\n    }\r\n  }\r\n  return this.firstNode;\r\n};\r\n\r\n// If there is only one node left, return it. Otherwise return \"this\".\r\nMultiId.prototype.downgrade = function() {\r\n  if (this.length === 1) {\r\n    var nid;\r\n    for (nid in this.nodes) {\r\n      return this.nodes[nid];\r\n    }\r\n  }\r\n  return this;\r\n};\r\n","\"use strict\";\r\nmodule.exports = DocumentType;\r\n\r\nvar Node = require('./Node');\r\nvar Leaf = require('./Leaf');\r\nvar ChildNode = require('./ChildNode');\r\n\r\nfunction DocumentType(ownerDocument, name, publicId, systemId) {\r\n  Leaf.call(this);\r\n  this.nodeType = Node.DOCUMENT_TYPE_NODE;\r\n  this.ownerDocument = ownerDocument || null;\r\n  this.name = name;\r\n  this.publicId = publicId || \"\";\r\n  this.systemId = systemId || \"\";\r\n}\r\n\r\nDocumentType.prototype = Object.create(Leaf.prototype, {\r\n  nodeName: { get: function() { return this.name; }},\r\n  nodeValue: {\r\n    get: function() { return null; },\r\n    set: function() {}\r\n  },\r\n\r\n  // Utility methods\r\n  clone: { value: function clone() {\r\n    return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId);\r\n  }},\r\n\r\n  isEqual: { value: function isEqual(n) {\r\n    return this.name === n.name &&\r\n      this.publicId === n.publicId &&\r\n      this.systemId === n.systemId;\r\n  }}\r\n});\r\n\r\nObject.defineProperties(DocumentType.prototype, ChildNode);\r\n","\"use strict\";\r\nmodule.exports = HTMLParser;\r\n\r\nvar Document = require('./Document');\r\nvar DocumentType = require('./DocumentType');\r\nvar Node = require('./Node');\r\nvar NAMESPACE = require('./utils').NAMESPACE;\r\nvar html = require('./htmlelts');\r\nvar impl = html.elements;\r\n\r\nvar pushAll = Function.prototype.apply.bind(Array.prototype.push);\r\n\r\n/*\r\n * This file contains an implementation of the HTML parsing algorithm.\r\n * The algorithm and the implementation are complex because HTML\r\n * explicitly defines how the parser should behave for all possible\r\n * valid and invalid inputs.\r\n *\r\n * Usage:\r\n *\r\n * The file defines a single HTMLParser() function, which dom.js exposes\r\n * publicly as document.implementation.mozHTMLParser(). This is a\r\n * factory function, not a constructor.\r\n *\r\n * When you call document.implementation.mozHTMLParser(), it returns\r\n * an object that has parse() and document() methods. To parse HTML text,\r\n * pass the text (in one or more chunks) to the parse() method.  When\r\n * you've passed all the text (on the last chunk, or afterward) pass\r\n * true as the second argument to parse() to tell the parser that there\r\n * is no more coming. Call document() to get the document object that\r\n * the parser is parsing into.  You can call this at any time, before\r\n * or after calling parse().\r\n *\r\n * The first argument to mozHTMLParser is the absolute URL of the document.\r\n *\r\n * The second argument is optional and is for internal use only.  Pass an\r\n * element as the fragmentContext to do innerHTML parsing for the\r\n * element.  To do innerHTML parsing on a document, pass null. Otherwise,\r\n * omit the 2nd argument. See HTMLElement.innerHTML for an example.  Note\r\n * that if you pass a context element, the end() method will return an\r\n * unwrapped document instead of a wrapped one.\r\n *\r\n * Implementation details:\r\n *\r\n * This is a long file of almost 7000 lines. It is structured as one\r\n * big function nested within another big function.  The outer\r\n * function defines a bunch of constant data, utility functions\r\n * that use that data, and a couple of classes used by the parser.\r\n * The outer function also defines and returns the\r\n * inner function. This inner function is the HTMLParser factory\r\n * function that implements the parser and holds all the parser state\r\n * as local variables.  The HTMLParser function is quite big because\r\n * it defines many nested functions that use those local variables.\r\n *\r\n * There are three tightly coupled parser stages: a scanner, a\r\n * tokenizer and a tree builder. In a (possibly misguided) attempt at\r\n * efficiency, the stages are not implemented as separate classes:\r\n * everything shares state and is (mostly) implemented in imperative\r\n * (rather than OO) style.\r\n *\r\n * The stages of the parser work like this: When the client code calls\r\n * the parser's parse() method, the specified string is passed to\r\n * scanChars(). The scanner loops through that string and passes characters\r\n * (sometimes one at a time, sometimes in chunks) to the tokenizer stage.\r\n * The tokenizer groups the characters into tokens: tags, endtags, runs\r\n * of text, comments, doctype declarations, and the end-of-file (EOF)\r\n * token.  These tokens are then passed to the tree building stage via\r\n * the insertToken() function.  The tree building stage builds up the\r\n * document tree.\r\n *\r\n * The tokenizer stage is a finite state machine.  Each state is\r\n * implemented as a function with a name that ends in \"_state\".  The\r\n * initial state is data_state(). The current tokenizer state is stored\r\n * in the variable 'tokenizer'.  Most state functions expect a single\r\n * integer argument which represents a single UTF-16 codepoint.  Some\r\n * states want more characters and set a lookahead property on\r\n * themselves.  The scanChars() function in the scanner checks for this\r\n * lookahead property.  If it doesn't exist, then scanChars() just passes\r\n * the next input character to the current tokenizer state function.\r\n * Otherwise, scanChars() looks ahead (a given # of characters, or for a\r\n * matching string, or for a matching regexp) and passes a string of\r\n * characters to the current tokenizer state function.\r\n *\r\n * As a shortcut, certain states of the tokenizer use regular expressions\r\n * to look ahead in the scanner's input buffer for runs of text, simple\r\n * tags and attributes.  For well-formed input, these shortcuts skip a\r\n * lot of state transitions and speed things up a bit.\r\n *\r\n * When a tokenizer state function has consumed a complete token, it\r\n * emits that token, by calling insertToken(), or by calling a utility\r\n * function that itself calls insertToken().  These tokens are passed to\r\n * the tree building stage, which is also a state machine.  Like the\r\n * tokenizer, the tree building states are implemented as functions, and\r\n * these functions have names that end with _mode (because the HTML spec\r\n * refers to them as insertion modes). The current insertion mode is held\r\n * by the 'parser' variable.  Each insertion mode function takes up to 4\r\n * arguments.  The first is a token type, represented by the constants\r\n * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF.  The second argument is\r\n * the value of the token: the text or comment data, or tagname or\r\n * doctype.  For tags, the 3rd argument is an array of attributes.  For\r\n * DOCTYPES it is the optional public id.  For tags, the 4th argument is\r\n * true if the tag is self-closing. For doctypes, the 4th argument is the\r\n * optional system id.\r\n *\r\n * Search for \"***\" to find the major sub-divisions in the code.\r\n */\r\n\r\n\r\n/***\r\n * Data prolog.  Lots of constants declared here, including some\r\n * very large objects.  They're used throughout the code that follows\r\n */\r\n// Token types for the tree builder.\r\nvar EOF = -1;\r\nvar TEXT = 1;\r\nvar TAG = 2;\r\nvar ENDTAG = 3;\r\nvar COMMENT = 4;\r\nvar DOCTYPE = 5;\r\n\r\n// A re-usable empty array\r\nvar NOATTRS = [];\r\n\r\n// These DTD public ids put the browser in quirks mode\r\nvar quirkyPublicIds = /^HTML$|^-\\/\\/W3O\\/\\/DTD W3 HTML Strict 3\\.0\\/\\/EN\\/\\/$|^-\\/W3C\\/DTD HTML 4\\.0 Transitional\\/EN$|^\\+\\/\\/Silmaril\\/\\/dtd html Pro v0r11 19970101\\/\\/|^-\\/\\/AdvaSoft Ltd\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/AS\\/\\/DTD HTML 3\\.0 asWedit \\+ extensions\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0 Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 2\\.1E\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 0\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 1\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 2\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict Level 3\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML Strict\\/\\/|^-\\/\\/IETF\\/\\/DTD HTML\\/\\/|^-\\/\\/Metrius\\/\\/DTD Metrius Presentational\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 2\\.0 Tables\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML Strict\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 HTML\\/\\/|^-\\/\\/Microsoft\\/\\/DTD Internet Explorer 3\\.0 Tables\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD HTML\\/\\/|^-\\/\\/Netscape Comm\\. Corp\\.\\/\\/DTD Strict HTML\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML 2\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended 1\\.0\\/\\/|^-\\/\\/O'Reilly and Associates\\/\\/DTD HTML Extended Relaxed 1\\.0\\/\\/|^-\\/\\/SoftQuad Software\\/\\/DTD HoTMetaL PRO 6\\.0::19990601::extensions to HTML 4\\.0\\/\\/|^-\\/\\/SoftQuad\\/\\/DTD HoTMetaL PRO 4\\.0::19971010::extensions to HTML 4\\.0\\/\\/|^-\\/\\/Spyglass\\/\\/DTD HTML 2\\.0 Extended\\/\\/|^-\\/\\/SQ\\/\\/DTD HTML 2\\.0 HoTMetaL \\+ extensions\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava HTML\\/\\/|^-\\/\\/Sun Microsystems Corp\\.\\/\\/DTD HotJava Strict HTML\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3 1995-03-24\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2 Final\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 3\\.2S Draft\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.0 Transitional\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 19960712\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML Experimental 970421\\/\\/|^-\\/\\/W3C\\/\\/DTD W3 HTML\\/\\/|^-\\/\\/W3O\\/\\/DTD W3 HTML 3\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML 2\\.0\\/\\/|^-\\/\\/WebTechs\\/\\/DTD Mozilla HTML\\/\\//i;\r\n\r\nvar quirkySystemId = \"http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd\";\r\n\r\nvar conditionallyQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD HTML 4\\.01 Transitional\\/\\//i;\r\n\r\n// These DTD public ids put the browser in limited quirks mode\r\nvar limitedQuirkyPublicIds = /^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Frameset\\/\\/|^-\\/\\/W3C\\/\\/DTD XHTML 1\\.0 Transitional\\/\\//i;\r\n\r\n\r\n// Element sets below. See the isA() function for a way to test\r\n// whether an element is a member of a set\r\nvar specialSet = Object.create(null);\r\nspecialSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"address\":true, \"applet\":true, \"area\":true, \"article\":true,\r\n  \"aside\":true, \"base\":true, \"basefont\":true, \"bgsound\":true,\r\n  \"blockquote\":true, \"body\":true, \"br\":true, \"button\":true,\r\n  \"caption\":true, \"center\":true, \"col\":true, \"colgroup\":true,\r\n  \"dd\":true, \"details\":true, \"dir\":true,\r\n  \"div\":true, \"dl\":true, \"dt\":true, \"embed\":true,\r\n  \"fieldset\":true, \"figcaption\":true, \"figure\":true, \"footer\":true,\r\n  \"form\":true, \"frame\":true, \"frameset\":true, \"h1\":true,\r\n  \"h2\":true, \"h3\":true, \"h4\":true, \"h5\":true,\r\n  \"h6\":true, \"head\":true, \"header\":true, \"hgroup\":true,\r\n  \"hr\":true, \"html\":true, \"iframe\":true, \"img\":true,\r\n  \"input\":true, \"li\":true, \"link\":true,\r\n  \"listing\":true, \"main\":true, \"marquee\":true, \"menu\":true, \"meta\":true,\r\n  \"nav\":true, \"noembed\":true, \"noframes\":true, \"noscript\":true,\r\n  \"object\":true, \"ol\":true, \"p\":true, \"param\":true,\r\n  \"plaintext\":true, \"pre\":true, \"script\":true, \"section\":true,\r\n  \"select\":true, \"source\":true, \"style\":true, \"summary\":true, \"table\":true,\r\n  \"tbody\":true, \"td\":true, \"template\":true, \"textarea\":true, \"tfoot\":true,\r\n  \"th\":true, \"thead\":true, \"title\":true, \"tr\":true, \"track\":true,\r\n  // Note that \"xmp\" was removed from the \"special\" set in the latest\r\n  // spec, apparently by accident; see\r\n  // https://github.com/whatwg/html/pull/1919\r\n  \"ul\":true, \"wbr\":true, \"xmp\":true\r\n};\r\nspecialSet[NAMESPACE.SVG] = {\r\n  __proto__: null,\r\n  \"foreignObject\": true, \"desc\": true, \"title\": true\r\n};\r\nspecialSet[NAMESPACE.MATHML] = {\r\n  __proto__: null,\r\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\r\n  \"mtext\":true, \"annotation-xml\":true\r\n};\r\n\r\n// The set of address, div, and p HTML tags\r\nvar addressdivpSet = Object.create(null);\r\naddressdivpSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"address\":true, \"div\":true, \"p\":true\r\n};\r\n\r\nvar dddtSet = Object.create(null);\r\ndddtSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"dd\":true, \"dt\":true\r\n};\r\n\r\nvar tablesectionrowSet = Object.create(null);\r\ntablesectionrowSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"table\":true, \"thead\":true, \"tbody\":true, \"tfoot\":true, \"tr\":true\r\n};\r\n\r\nvar impliedEndTagsSet = Object.create(null);\r\nimpliedEndTagsSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"dd\": true, \"dt\": true, \"li\": true, \"menuitem\": true, \"optgroup\": true,\r\n  \"option\": true, \"p\": true, \"rb\": true, \"rp\": true, \"rt\": true, \"rtc\": true\r\n};\r\n\r\nvar thoroughImpliedEndTagsSet = Object.create(null);\r\nthoroughImpliedEndTagsSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"caption\": true, \"colgroup\": true, \"dd\": true, \"dt\": true, \"li\": true,\r\n  \"optgroup\": true, \"option\": true, \"p\": true, \"rb\": true, \"rp\": true,\r\n  \"rt\": true, \"rtc\": true, \"tbody\": true, \"td\": true, \"tfoot\": true,\r\n  \"th\": true, \"thead\": true, \"tr\": true\r\n};\r\n\r\nvar tableContextSet = Object.create(null);\r\ntableContextSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"table\": true, \"template\": true, \"html\": true\r\n};\r\n\r\nvar tableBodyContextSet = Object.create(null);\r\ntableBodyContextSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"tbody\": true, \"tfoot\": true, \"thead\": true, \"template\": true, \"html\": true\r\n};\r\n\r\nvar tableRowContextSet = Object.create(null);\r\ntableRowContextSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"tr\": true, \"template\": true, \"html\": true\r\n};\r\n\r\n// See http://www.w3.org/TR/html5/forms.html#form-associated-element\r\nvar formassociatedSet = Object.create(null);\r\nformassociatedSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"button\": true, \"fieldset\": true, \"input\": true, \"keygen\": true,\r\n  \"object\": true, \"output\": true, \"select\": true, \"textarea\": true,\r\n  \"img\": true\r\n};\r\n\r\nvar inScopeSet = Object.create(null);\r\ninScopeSet[NAMESPACE.HTML]= {\r\n  __proto__: null,\r\n  \"applet\":true, \"caption\":true, \"html\":true, \"table\":true,\r\n  \"td\":true, \"th\":true, \"marquee\":true, \"object\":true,\r\n  \"template\":true\r\n};\r\ninScopeSet[NAMESPACE.MATHML] = {\r\n  __proto__: null,\r\n  \"mi\":true, \"mo\":true, \"mn\":true, \"ms\":true,\r\n  \"mtext\":true, \"annotation-xml\":true\r\n};\r\ninScopeSet[NAMESPACE.SVG] = {\r\n  __proto__: null,\r\n  \"foreignObject\":true, \"desc\":true, \"title\":true\r\n};\r\n\r\nvar inListItemScopeSet = Object.create(inScopeSet);\r\ninListItemScopeSet[NAMESPACE.HTML] =\r\n  Object.create(inScopeSet[NAMESPACE.HTML]);\r\ninListItemScopeSet[NAMESPACE.HTML].ol = true;\r\ninListItemScopeSet[NAMESPACE.HTML].ul = true;\r\n\r\nvar inButtonScopeSet = Object.create(inScopeSet);\r\ninButtonScopeSet[NAMESPACE.HTML] =\r\n  Object.create(inScopeSet[NAMESPACE.HTML]);\r\ninButtonScopeSet[NAMESPACE.HTML].button = true;\r\n\r\nvar inTableScopeSet = Object.create(null);\r\ninTableScopeSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"html\":true, \"table\":true, \"template\":true\r\n};\r\n\r\n// The set of elements for select scope is the everything *except* these\r\nvar invertedSelectScopeSet = Object.create(null);\r\ninvertedSelectScopeSet[NAMESPACE.HTML] = {\r\n  __proto__: null,\r\n  \"optgroup\":true, \"option\":true\r\n};\r\n\r\nvar mathmlTextIntegrationPointSet = Object.create(null);\r\nmathmlTextIntegrationPointSet[NAMESPACE.MATHML] = {\r\n  __proto__: null,\r\n  mi: true,\r\n  mo: true,\r\n  mn: true,\r\n  ms: true,\r\n  mtext: true\r\n};\r\n\r\nvar htmlIntegrationPointSet = Object.create(null);\r\nhtmlIntegrationPointSet[NAMESPACE.SVG] = {\r\n  __proto__: null,\r\n  foreignObject: true,\r\n  desc: true,\r\n  title: true\r\n};\r\n\r\nvar foreignAttributes = {\r\n  __proto__: null,\r\n  \"xlink:actuate\": NAMESPACE.XLINK, \"xlink:arcrole\": NAMESPACE.XLINK,\r\n  \"xlink:href\":   NAMESPACE.XLINK,  \"xlink:role\":    NAMESPACE.XLINK,\r\n  \"xlink:show\":   NAMESPACE.XLINK,  \"xlink:title\":   NAMESPACE.XLINK,\r\n  \"xlink:type\":   NAMESPACE.XLINK,  \"xml:base\":      NAMESPACE.XML,\r\n  \"xml:lang\":     NAMESPACE.XML,    \"xml:space\":     NAMESPACE.XML,\r\n  \"xmlns\":        NAMESPACE.XMLNS,  \"xmlns:xlink\":   NAMESPACE.XMLNS\r\n};\r\n\r\n\r\n// Lowercase to mixed case mapping for SVG attributes and tagnames\r\nvar svgAttrAdjustments = {\r\n  __proto__: null,\r\n  attributename: \"attributeName\", attributetype: \"attributeType\",\r\n  basefrequency: \"baseFrequency\", baseprofile: \"baseProfile\",\r\n  calcmode: \"calcMode\", clippathunits: \"clipPathUnits\",\r\n  diffuseconstant: \"diffuseConstant\",\r\n  edgemode: \"edgeMode\",\r\n  filterunits: \"filterUnits\",\r\n  glyphref: \"glyphRef\", gradienttransform: \"gradientTransform\",\r\n  gradientunits: \"gradientUnits\", kernelmatrix: \"kernelMatrix\",\r\n  kernelunitlength: \"kernelUnitLength\", keypoints: \"keyPoints\",\r\n  keysplines: \"keySplines\", keytimes: \"keyTimes\",\r\n  lengthadjust: \"lengthAdjust\", limitingconeangle: \"limitingConeAngle\",\r\n  markerheight: \"markerHeight\", markerunits: \"markerUnits\",\r\n  markerwidth: \"markerWidth\", maskcontentunits: \"maskContentUnits\",\r\n  maskunits: \"maskUnits\", numoctaves: \"numOctaves\",\r\n  pathlength: \"pathLength\", patterncontentunits: \"patternContentUnits\",\r\n  patterntransform: \"patternTransform\", patternunits: \"patternUnits\",\r\n  pointsatx: \"pointsAtX\", pointsaty: \"pointsAtY\",\r\n  pointsatz: \"pointsAtZ\", preservealpha: \"preserveAlpha\",\r\n  preserveaspectratio: \"preserveAspectRatio\",\r\n  primitiveunits: \"primitiveUnits\", refx: \"refX\",\r\n  refy: \"refY\", repeatcount: \"repeatCount\",\r\n  repeatdur: \"repeatDur\", requiredextensions: \"requiredExtensions\",\r\n  requiredfeatures: \"requiredFeatures\",\r\n  specularconstant: \"specularConstant\",\r\n  specularexponent: \"specularExponent\", spreadmethod: \"spreadMethod\",\r\n  startoffset: \"startOffset\", stddeviation: \"stdDeviation\",\r\n  stitchtiles: \"stitchTiles\", surfacescale: \"surfaceScale\",\r\n  systemlanguage: \"systemLanguage\", tablevalues: \"tableValues\",\r\n  targetx: \"targetX\", targety: \"targetY\",\r\n  textlength: \"textLength\", viewbox: \"viewBox\",\r\n  viewtarget: \"viewTarget\", xchannelselector: \"xChannelSelector\",\r\n  ychannelselector: \"yChannelSelector\", zoomandpan: \"zoomAndPan\"\r\n};\r\n\r\nvar svgTagNameAdjustments = {\r\n  __proto__: null,\r\n  altglyph: \"altGlyph\", altglyphdef: \"altGlyphDef\",\r\n  altglyphitem: \"altGlyphItem\", animatecolor: \"animateColor\",\r\n  animatemotion: \"animateMotion\", animatetransform: \"animateTransform\",\r\n  clippath: \"clipPath\", feblend: \"feBlend\",\r\n  fecolormatrix: \"feColorMatrix\",\r\n  fecomponenttransfer: \"feComponentTransfer\", fecomposite: \"feComposite\",\r\n  feconvolvematrix: \"feConvolveMatrix\",\r\n  fediffuselighting: \"feDiffuseLighting\",\r\n  fedisplacementmap: \"feDisplacementMap\",\r\n  fedistantlight: \"feDistantLight\", feflood: \"feFlood\",\r\n  fefunca: \"feFuncA\", fefuncb: \"feFuncB\",\r\n  fefuncg: \"feFuncG\", fefuncr: \"feFuncR\",\r\n  fegaussianblur: \"feGaussianBlur\", feimage: \"feImage\",\r\n  femerge: \"feMerge\", femergenode: \"feMergeNode\",\r\n  femorphology: \"feMorphology\", feoffset: \"feOffset\",\r\n  fepointlight: \"fePointLight\", fespecularlighting: \"feSpecularLighting\",\r\n  fespotlight: \"feSpotLight\", fetile: \"feTile\",\r\n  feturbulence: \"feTurbulence\", foreignobject: \"foreignObject\",\r\n  glyphref: \"glyphRef\", lineargradient: \"linearGradient\",\r\n  radialgradient: \"radialGradient\", textpath: \"textPath\"\r\n};\r\n\r\n\r\n// Data for parsing numeric and named character references\r\n// These next 3 objects are direct translations of tables\r\n// in the HTML spec into JavaScript object format\r\nvar numericCharRefReplacements = {\r\n  __proto__: null,\r\n  0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E,\r\n  0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030,\r\n  0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018,\r\n  0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013,\r\n  0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A,\r\n  0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178\r\n};\r\n\r\n/*\r\n * This table is generated with test/tools/update-entities.js\r\n */\r\nvar namedCharRefs = {\r\n  __proto__: null,\r\n  \"AElig\":0xc6, \"AElig;\":0xc6,\r\n  \"AMP\":0x26, \"AMP;\":0x26,\r\n  \"Aacute\":0xc1, \"Aacute;\":0xc1,\r\n  \"Abreve;\":0x102, \"Acirc\":0xc2,\r\n  \"Acirc;\":0xc2, \"Acy;\":0x410,\r\n  \"Afr;\":[0xd835,0xdd04], \"Agrave\":0xc0,\r\n  \"Agrave;\":0xc0, \"Alpha;\":0x391,\r\n  \"Amacr;\":0x100, \"And;\":0x2a53,\r\n  \"Aogon;\":0x104, \"Aopf;\":[0xd835,0xdd38],\r\n  \"ApplyFunction;\":0x2061, \"Aring\":0xc5,\r\n  \"Aring;\":0xc5, \"Ascr;\":[0xd835,0xdc9c],\r\n  \"Assign;\":0x2254, \"Atilde\":0xc3,\r\n  \"Atilde;\":0xc3, \"Auml\":0xc4,\r\n  \"Auml;\":0xc4, \"Backslash;\":0x2216,\r\n  \"Barv;\":0x2ae7, \"Barwed;\":0x2306,\r\n  \"Bcy;\":0x411, \"Because;\":0x2235,\r\n  \"Bernoullis;\":0x212c, \"Beta;\":0x392,\r\n  \"Bfr;\":[0xd835,0xdd05], \"Bopf;\":[0xd835,0xdd39],\r\n  \"Breve;\":0x2d8, \"Bscr;\":0x212c,\r\n  \"Bumpeq;\":0x224e, \"CHcy;\":0x427,\r\n  \"COPY\":0xa9, \"COPY;\":0xa9,\r\n  \"Cacute;\":0x106, \"Cap;\":0x22d2,\r\n  \"CapitalDifferentialD;\":0x2145, \"Cayleys;\":0x212d,\r\n  \"Ccaron;\":0x10c, \"Ccedil\":0xc7,\r\n  \"Ccedil;\":0xc7, \"Ccirc;\":0x108,\r\n  \"Cconint;\":0x2230, \"Cdot;\":0x10a,\r\n  \"Cedilla;\":0xb8, \"CenterDot;\":0xb7,\r\n  \"Cfr;\":0x212d, \"Chi;\":0x3a7,\r\n  \"CircleDot;\":0x2299, \"CircleMinus;\":0x2296,\r\n  \"CirclePlus;\":0x2295, \"CircleTimes;\":0x2297,\r\n  \"ClockwiseContourIntegral;\":0x2232, \"CloseCurlyDoubleQuote;\":0x201d,\r\n  \"CloseCurlyQuote;\":0x2019, \"Colon;\":0x2237,\r\n  \"Colone;\":0x2a74, \"Congruent;\":0x2261,\r\n  \"Conint;\":0x222f, \"ContourIntegral;\":0x222e,\r\n  \"Copf;\":0x2102, \"Coproduct;\":0x2210,\r\n  \"CounterClockwiseContourIntegral;\":0x2233, \"Cross;\":0x2a2f,\r\n  \"Cscr;\":[0xd835,0xdc9e], \"Cup;\":0x22d3,\r\n  \"CupCap;\":0x224d, \"DD;\":0x2145,\r\n  \"DDotrahd;\":0x2911, \"DJcy;\":0x402,\r\n  \"DScy;\":0x405, \"DZcy;\":0x40f,\r\n  \"Dagger;\":0x2021, \"Darr;\":0x21a1,\r\n  \"Dashv;\":0x2ae4, \"Dcaron;\":0x10e,\r\n  \"Dcy;\":0x414, \"Del;\":0x2207,\r\n  \"Delta;\":0x394, \"Dfr;\":[0xd835,0xdd07],\r\n  \"DiacriticalAcute;\":0xb4, \"DiacriticalDot;\":0x2d9,\r\n  \"DiacriticalDoubleAcute;\":0x2dd, \"DiacriticalGrave;\":0x60,\r\n  \"DiacriticalTilde;\":0x2dc, \"Diamond;\":0x22c4,\r\n  \"DifferentialD;\":0x2146, \"Dopf;\":[0xd835,0xdd3b],\r\n  \"Dot;\":0xa8, \"DotDot;\":0x20dc,\r\n  \"DotEqual;\":0x2250, \"DoubleContourIntegral;\":0x222f,\r\n  \"DoubleDot;\":0xa8, \"DoubleDownArrow;\":0x21d3,\r\n  \"DoubleLeftArrow;\":0x21d0, \"DoubleLeftRightArrow;\":0x21d4,\r\n  \"DoubleLeftTee;\":0x2ae4, \"DoubleLongLeftArrow;\":0x27f8,\r\n  \"DoubleLongLeftRightArrow;\":0x27fa, \"DoubleLongRightArrow;\":0x27f9,\r\n  \"DoubleRightArrow;\":0x21d2, \"DoubleRightTee;\":0x22a8,\r\n  \"DoubleUpArrow;\":0x21d1, \"DoubleUpDownArrow;\":0x21d5,\r\n  \"DoubleVerticalBar;\":0x2225, \"DownArrow;\":0x2193,\r\n  \"DownArrowBar;\":0x2913, \"DownArrowUpArrow;\":0x21f5,\r\n  \"DownBreve;\":0x311, \"DownLeftRightVector;\":0x2950,\r\n  \"DownLeftTeeVector;\":0x295e, \"DownLeftVector;\":0x21bd,\r\n  \"DownLeftVectorBar;\":0x2956, \"DownRightTeeVector;\":0x295f,\r\n  \"DownRightVector;\":0x21c1, \"DownRightVectorBar;\":0x2957,\r\n  \"DownTee;\":0x22a4, \"DownTeeArrow;\":0x21a7,\r\n  \"Downarrow;\":0x21d3, \"Dscr;\":[0xd835,0xdc9f],\r\n  \"Dstrok;\":0x110, \"ENG;\":0x14a,\r\n  \"ETH\":0xd0, \"ETH;\":0xd0,\r\n  \"Eacute\":0xc9, \"Eacute;\":0xc9,\r\n  \"Ecaron;\":0x11a, \"Ecirc\":0xca,\r\n  \"Ecirc;\":0xca, \"Ecy;\":0x42d,\r\n  \"Edot;\":0x116, \"Efr;\":[0xd835,0xdd08],\r\n  \"Egrave\":0xc8, \"Egrave;\":0xc8,\r\n  \"Element;\":0x2208, \"Emacr;\":0x112,\r\n  \"EmptySmallSquare;\":0x25fb, \"EmptyVerySmallSquare;\":0x25ab,\r\n  \"Eogon;\":0x118, \"Eopf;\":[0xd835,0xdd3c],\r\n  \"Epsilon;\":0x395, \"Equal;\":0x2a75,\r\n  \"EqualTilde;\":0x2242, \"Equilibrium;\":0x21cc,\r\n  \"Escr;\":0x2130, \"Esim;\":0x2a73,\r\n  \"Eta;\":0x397, \"Euml\":0xcb,\r\n  \"Euml;\":0xcb, \"Exists;\":0x2203,\r\n  \"ExponentialE;\":0x2147, \"Fcy;\":0x424,\r\n  \"Ffr;\":[0xd835,0xdd09], \"FilledSmallSquare;\":0x25fc,\r\n  \"FilledVerySmallSquare;\":0x25aa, \"Fopf;\":[0xd835,0xdd3d],\r\n  \"ForAll;\":0x2200, \"Fouriertrf;\":0x2131,\r\n  \"Fscr;\":0x2131, \"GJcy;\":0x403,\r\n  \"GT\":0x3e, \"GT;\":0x3e,\r\n  \"Gamma;\":0x393, \"Gammad;\":0x3dc,\r\n  \"Gbreve;\":0x11e, \"Gcedil;\":0x122,\r\n  \"Gcirc;\":0x11c, \"Gcy;\":0x413,\r\n  \"Gdot;\":0x120, \"Gfr;\":[0xd835,0xdd0a],\r\n  \"Gg;\":0x22d9, \"Gopf;\":[0xd835,0xdd3e],\r\n  \"GreaterEqual;\":0x2265, \"GreaterEqualLess;\":0x22db,\r\n  \"GreaterFullEqual;\":0x2267, \"GreaterGreater;\":0x2aa2,\r\n  \"GreaterLess;\":0x2277, \"GreaterSlantEqual;\":0x2a7e,\r\n  \"GreaterTilde;\":0x2273, \"Gscr;\":[0xd835,0xdca2],\r\n  \"Gt;\":0x226b, \"HARDcy;\":0x42a,\r\n  \"Hacek;\":0x2c7, \"Hat;\":0x5e,\r\n  \"Hcirc;\":0x124, \"Hfr;\":0x210c,\r\n  \"HilbertSpace;\":0x210b, \"Hopf;\":0x210d,\r\n  \"HorizontalLine;\":0x2500, \"Hscr;\":0x210b,\r\n  \"Hstrok;\":0x126, \"HumpDownHump;\":0x224e,\r\n  \"HumpEqual;\":0x224f, \"IEcy;\":0x415,\r\n  \"IJlig;\":0x132, \"IOcy;\":0x401,\r\n  \"Iacute\":0xcd, \"Iacute;\":0xcd,\r\n  \"Icirc\":0xce, \"Icirc;\":0xce,\r\n  \"Icy;\":0x418, \"Idot;\":0x130,\r\n  \"Ifr;\":0x2111, \"Igrave\":0xcc,\r\n  \"Igrave;\":0xcc, \"Im;\":0x2111,\r\n  \"Imacr;\":0x12a, \"ImaginaryI;\":0x2148,\r\n  \"Implies;\":0x21d2, \"Int;\":0x222c,\r\n  \"Integral;\":0x222b, \"Intersection;\":0x22c2,\r\n  \"InvisibleComma;\":0x2063, \"InvisibleTimes;\":0x2062,\r\n  \"Iogon;\":0x12e, \"Iopf;\":[0xd835,0xdd40],\r\n  \"Iota;\":0x399, \"Iscr;\":0x2110,\r\n  \"Itilde;\":0x128, \"Iukcy;\":0x406,\r\n  \"Iuml\":0xcf, \"Iuml;\":0xcf,\r\n  \"Jcirc;\":0x134, \"Jcy;\":0x419,\r\n  \"Jfr;\":[0xd835,0xdd0d], \"Jopf;\":[0xd835,0xdd41],\r\n  \"Jscr;\":[0xd835,0xdca5], \"Jsercy;\":0x408,\r\n  \"Jukcy;\":0x404, \"KHcy;\":0x425,\r\n  \"KJcy;\":0x40c, \"Kappa;\":0x39a,\r\n  \"Kcedil;\":0x136, \"Kcy;\":0x41a,\r\n  \"Kfr;\":[0xd835,0xdd0e], \"Kopf;\":[0xd835,0xdd42],\r\n  \"Kscr;\":[0xd835,0xdca6], \"LJcy;\":0x409,\r\n  \"LT\":0x3c, \"LT;\":0x3c,\r\n  \"Lacute;\":0x139, \"Lambda;\":0x39b,\r\n  \"Lang;\":0x27ea, \"Laplacetrf;\":0x2112,\r\n  \"Larr;\":0x219e, \"Lcaron;\":0x13d,\r\n  \"Lcedil;\":0x13b, \"Lcy;\":0x41b,\r\n  \"LeftAngleBracket;\":0x27e8, \"LeftArrow;\":0x2190,\r\n  \"LeftArrowBar;\":0x21e4, \"LeftArrowRightArrow;\":0x21c6,\r\n  \"LeftCeiling;\":0x2308, \"LeftDoubleBracket;\":0x27e6,\r\n  \"LeftDownTeeVector;\":0x2961, \"LeftDownVector;\":0x21c3,\r\n  \"LeftDownVectorBar;\":0x2959, \"LeftFloor;\":0x230a,\r\n  \"LeftRightArrow;\":0x2194, \"LeftRightVector;\":0x294e,\r\n  \"LeftTee;\":0x22a3, \"LeftTeeArrow;\":0x21a4,\r\n  \"LeftTeeVector;\":0x295a, \"LeftTriangle;\":0x22b2,\r\n  \"LeftTriangleBar;\":0x29cf, \"LeftTriangleEqual;\":0x22b4,\r\n  \"LeftUpDownVector;\":0x2951, \"LeftUpTeeVector;\":0x2960,\r\n  \"LeftUpVector;\":0x21bf, \"LeftUpVectorBar;\":0x2958,\r\n  \"LeftVector;\":0x21bc, \"LeftVectorBar;\":0x2952,\r\n  \"Leftarrow;\":0x21d0, \"Leftrightarrow;\":0x21d4,\r\n  \"LessEqualGreater;\":0x22da, \"LessFullEqual;\":0x2266,\r\n  \"LessGreater;\":0x2276, \"LessLess;\":0x2aa1,\r\n  \"LessSlantEqual;\":0x2a7d, \"LessTilde;\":0x2272,\r\n  \"Lfr;\":[0xd835,0xdd0f], \"Ll;\":0x22d8,\r\n  \"Lleftarrow;\":0x21da, \"Lmidot;\":0x13f,\r\n  \"LongLeftArrow;\":0x27f5, \"LongLeftRightArrow;\":0x27f7,\r\n  \"LongRightArrow;\":0x27f6, \"Longleftarrow;\":0x27f8,\r\n  \"Longleftrightarrow;\":0x27fa, \"Longrightarrow;\":0x27f9,\r\n  \"Lopf;\":[0xd835,0xdd43], \"LowerLeftArrow;\":0x2199,\r\n  \"LowerRightArrow;\":0x2198, \"Lscr;\":0x2112,\r\n  \"Lsh;\":0x21b0, \"Lstrok;\":0x141,\r\n  \"Lt;\":0x226a, \"Map;\":0x2905,\r\n  \"Mcy;\":0x41c, \"MediumSpace;\":0x205f,\r\n  \"Mellintrf;\":0x2133, \"Mfr;\":[0xd835,0xdd10],\r\n  \"MinusPlus;\":0x2213, \"Mopf;\":[0xd835,0xdd44],\r\n  \"Mscr;\":0x2133, \"Mu;\":0x39c,\r\n  \"NJcy;\":0x40a, \"Nacute;\":0x143,\r\n  \"Ncaron;\":0x147, \"Ncedil;\":0x145,\r\n  \"Ncy;\":0x41d, \"NegativeMediumSpace;\":0x200b,\r\n  \"NegativeThickSpace;\":0x200b, \"NegativeThinSpace;\":0x200b,\r\n  \"NegativeVeryThinSpace;\":0x200b, \"NestedGreaterGreater;\":0x226b,\r\n  \"NestedLessLess;\":0x226a, \"NewLine;\":0xa,\r\n  \"Nfr;\":[0xd835,0xdd11], \"NoBreak;\":0x2060,\r\n  \"NonBreakingSpace;\":0xa0, \"Nopf;\":0x2115,\r\n  \"Not;\":0x2aec, \"NotCongruent;\":0x2262,\r\n  \"NotCupCap;\":0x226d, \"NotDoubleVerticalBar;\":0x2226,\r\n  \"NotElement;\":0x2209, \"NotEqual;\":0x2260,\r\n  \"NotEqualTilde;\":[0x2242,0x338], \"NotExists;\":0x2204,\r\n  \"NotGreater;\":0x226f, \"NotGreaterEqual;\":0x2271,\r\n  \"NotGreaterFullEqual;\":[0x2267,0x338], \"NotGreaterGreater;\":[0x226b,0x338],\r\n  \"NotGreaterLess;\":0x2279, \"NotGreaterSlantEqual;\":[0x2a7e,0x338],\r\n  \"NotGreaterTilde;\":0x2275, \"NotHumpDownHump;\":[0x224e,0x338],\r\n  \"NotHumpEqual;\":[0x224f,0x338], \"NotLeftTriangle;\":0x22ea,\r\n  \"NotLeftTriangleBar;\":[0x29cf,0x338], \"NotLeftTriangleEqual;\":0x22ec,\r\n  \"NotLess;\":0x226e, \"NotLessEqual;\":0x2270,\r\n  \"NotLessGreater;\":0x2278, \"NotLessLess;\":[0x226a,0x338],\r\n  \"NotLessSlantEqual;\":[0x2a7d,0x338], \"NotLessTilde;\":0x2274,\r\n  \"NotNestedGreaterGreater;\":[0x2aa2,0x338], \"NotNestedLessLess;\":[0x2aa1,0x338],\r\n  \"NotPrecedes;\":0x2280, \"NotPrecedesEqual;\":[0x2aaf,0x338],\r\n  \"NotPrecedesSlantEqual;\":0x22e0, \"NotReverseElement;\":0x220c,\r\n  \"NotRightTriangle;\":0x22eb, \"NotRightTriangleBar;\":[0x29d0,0x338],\r\n  \"NotRightTriangleEqual;\":0x22ed, \"NotSquareSubset;\":[0x228f,0x338],\r\n  \"NotSquareSubsetEqual;\":0x22e2, \"NotSquareSuperset;\":[0x2290,0x338],\r\n  \"NotSquareSupersetEqual;\":0x22e3, \"NotSubset;\":[0x2282,0x20d2],\r\n  \"NotSubsetEqual;\":0x2288, \"NotSucceeds;\":0x2281,\r\n  \"NotSucceedsEqual;\":[0x2ab0,0x338], \"NotSucceedsSlantEqual;\":0x22e1,\r\n  \"NotSucceedsTilde;\":[0x227f,0x338], \"NotSuperset;\":[0x2283,0x20d2],\r\n  \"NotSupersetEqual;\":0x2289, \"NotTilde;\":0x2241,\r\n  \"NotTildeEqual;\":0x2244, \"NotTildeFullEqual;\":0x2247,\r\n  \"NotTildeTilde;\":0x2249, \"NotVerticalBar;\":0x2224,\r\n  \"Nscr;\":[0xd835,0xdca9], \"Ntilde\":0xd1,\r\n  \"Ntilde;\":0xd1, \"Nu;\":0x39d,\r\n  \"OElig;\":0x152, \"Oacute\":0xd3,\r\n  \"Oacute;\":0xd3, \"Ocirc\":0xd4,\r\n  \"Ocirc;\":0xd4, \"Ocy;\":0x41e,\r\n  \"Odblac;\":0x150, \"Ofr;\":[0xd835,0xdd12],\r\n  \"Ograve\":0xd2, \"Ograve;\":0xd2,\r\n  \"Omacr;\":0x14c, \"Omega;\":0x3a9,\r\n  \"Omicron;\":0x39f, \"Oopf;\":[0xd835,0xdd46],\r\n  \"OpenCurlyDoubleQuote;\":0x201c, \"OpenCurlyQuote;\":0x2018,\r\n  \"Or;\":0x2a54, \"Oscr;\":[0xd835,0xdcaa],\r\n  \"Oslash\":0xd8, \"Oslash;\":0xd8,\r\n  \"Otilde\":0xd5, \"Otilde;\":0xd5,\r\n  \"Otimes;\":0x2a37, \"Ouml\":0xd6,\r\n  \"Ouml;\":0xd6, \"OverBar;\":0x203e,\r\n  \"OverBrace;\":0x23de, \"OverBracket;\":0x23b4,\r\n  \"OverParenthesis;\":0x23dc, \"PartialD;\":0x2202,\r\n  \"Pcy;\":0x41f, \"Pfr;\":[0xd835,0xdd13],\r\n  \"Phi;\":0x3a6, \"Pi;\":0x3a0,\r\n  \"PlusMinus;\":0xb1, \"Poincareplane;\":0x210c,\r\n  \"Popf;\":0x2119, \"Pr;\":0x2abb,\r\n  \"Precedes;\":0x227a, \"PrecedesEqual;\":0x2aaf,\r\n  \"PrecedesSlantEqual;\":0x227c, \"PrecedesTilde;\":0x227e,\r\n  \"Prime;\":0x2033, \"Product;\":0x220f,\r\n  \"Proportion;\":0x2237, \"Proportional;\":0x221d,\r\n  \"Pscr;\":[0xd835,0xdcab], \"Psi;\":0x3a8,\r\n  \"QUOT\":0x22, \"QUOT;\":0x22,\r\n  \"Qfr;\":[0xd835,0xdd14], \"Qopf;\":0x211a,\r\n  \"Qscr;\":[0xd835,0xdcac], \"RBarr;\":0x2910,\r\n  \"REG\":0xae, \"REG;\":0xae,\r\n  \"Racute;\":0x154, \"Rang;\":0x27eb,\r\n  \"Rarr;\":0x21a0, \"Rarrtl;\":0x2916,\r\n  \"Rcaron;\":0x158, \"Rcedil;\":0x156,\r\n  \"Rcy;\":0x420, \"Re;\":0x211c,\r\n  \"ReverseElement;\":0x220b, \"ReverseEquilibrium;\":0x21cb,\r\n  \"ReverseUpEquilibrium;\":0x296f, \"Rfr;\":0x211c,\r\n  \"Rho;\":0x3a1, \"RightAngleBracket;\":0x27e9,\r\n  \"RightArrow;\":0x2192, \"RightArrowBar;\":0x21e5,\r\n  \"RightArrowLeftArrow;\":0x21c4, \"RightCeiling;\":0x2309,\r\n  \"RightDoubleBracket;\":0x27e7, \"RightDownTeeVector;\":0x295d,\r\n  \"RightDownVector;\":0x21c2, \"RightDownVectorBar;\":0x2955,\r\n  \"RightFloor;\":0x230b, \"RightTee;\":0x22a2,\r\n  \"RightTeeArrow;\":0x21a6, \"RightTeeVector;\":0x295b,\r\n  \"RightTriangle;\":0x22b3, \"RightTriangleBar;\":0x29d0,\r\n  \"RightTriangleEqual;\":0x22b5, \"RightUpDownVector;\":0x294f,\r\n  \"RightUpTeeVector;\":0x295c, \"RightUpVector;\":0x21be,\r\n  \"RightUpVectorBar;\":0x2954, \"RightVector;\":0x21c0,\r\n  \"RightVectorBar;\":0x2953, \"Rightarrow;\":0x21d2,\r\n  \"Ropf;\":0x211d, \"RoundImplies;\":0x2970,\r\n  \"Rrightarrow;\":0x21db, \"Rscr;\":0x211b,\r\n  \"Rsh;\":0x21b1, \"RuleDelayed;\":0x29f4,\r\n  \"SHCHcy;\":0x429, \"SHcy;\":0x428,\r\n  \"SOFTcy;\":0x42c, \"Sacute;\":0x15a,\r\n  \"Sc;\":0x2abc, \"Scaron;\":0x160,\r\n  \"Scedil;\":0x15e, \"Scirc;\":0x15c,\r\n  \"Scy;\":0x421, \"Sfr;\":[0xd835,0xdd16],\r\n  \"ShortDownArrow;\":0x2193, \"ShortLeftArrow;\":0x2190,\r\n  \"ShortRightArrow;\":0x2192, \"ShortUpArrow;\":0x2191,\r\n  \"Sigma;\":0x3a3, \"SmallCircle;\":0x2218,\r\n  \"Sopf;\":[0xd835,0xdd4a], \"Sqrt;\":0x221a,\r\n  \"Square;\":0x25a1, \"SquareIntersection;\":0x2293,\r\n  \"SquareSubset;\":0x228f, \"SquareSubsetEqual;\":0x2291,\r\n  \"SquareSuperset;\":0x2290, \"SquareSupersetEqual;\":0x2292,\r\n  \"SquareUnion;\":0x2294, \"Sscr;\":[0xd835,0xdcae],\r\n  \"Star;\":0x22c6, \"Sub;\":0x22d0,\r\n  \"Subset;\":0x22d0, \"SubsetEqual;\":0x2286,\r\n  \"Succeeds;\":0x227b, \"SucceedsEqual;\":0x2ab0,\r\n  \"SucceedsSlantEqual;\":0x227d, \"SucceedsTilde;\":0x227f,\r\n  \"SuchThat;\":0x220b, \"Sum;\":0x2211,\r\n  \"Sup;\":0x22d1, \"Superset;\":0x2283,\r\n  \"SupersetEqual;\":0x2287, \"Supset;\":0x22d1,\r\n  \"THORN\":0xde, \"THORN;\":0xde,\r\n  \"TRADE;\":0x2122, \"TSHcy;\":0x40b,\r\n  \"TScy;\":0x426, \"Tab;\":0x9,\r\n  \"Tau;\":0x3a4, \"Tcaron;\":0x164,\r\n  \"Tcedil;\":0x162, \"Tcy;\":0x422,\r\n  \"Tfr;\":[0xd835,0xdd17], \"Therefore;\":0x2234,\r\n  \"Theta;\":0x398, \"ThickSpace;\":[0x205f,0x200a],\r\n  \"ThinSpace;\":0x2009, \"Tilde;\":0x223c,\r\n  \"TildeEqual;\":0x2243, \"TildeFullEqual;\":0x2245,\r\n  \"TildeTilde;\":0x2248, \"Topf;\":[0xd835,0xdd4b],\r\n  \"TripleDot;\":0x20db, \"Tscr;\":[0xd835,0xdcaf],\r\n  \"Tstrok;\":0x166, \"Uacute\":0xda,\r\n  \"Uacute;\":0xda, \"Uarr;\":0x219f,\r\n  \"Uarrocir;\":0x2949, \"Ubrcy;\":0x40e,\r\n  \"Ubreve;\":0x16c, \"Ucirc\":0xdb,\r\n  \"Ucirc;\":0xdb, \"Ucy;\":0x423,\r\n  \"Udblac;\":0x170, \"Ufr;\":[0xd835,0xdd18],\r\n  \"Ugrave\":0xd9, \"Ugrave;\":0xd9,\r\n  \"Umacr;\":0x16a, \"UnderBar;\":0x5f,\r\n  \"UnderBrace;\":0x23df, \"UnderBracket;\":0x23b5,\r\n  \"UnderParenthesis;\":0x23dd, \"Union;\":0x22c3,\r\n  \"UnionPlus;\":0x228e, \"Uogon;\":0x172,\r\n  \"Uopf;\":[0xd835,0xdd4c], \"UpArrow;\":0x2191,\r\n  \"UpArrowBar;\":0x2912, \"UpArrowDownArrow;\":0x21c5,\r\n  \"UpDownArrow;\":0x2195, \"UpEquilibrium;\":0x296e,\r\n  \"UpTee;\":0x22a5, \"UpTeeArrow;\":0x21a5,\r\n  \"Uparrow;\":0x21d1, \"Updownarrow;\":0x21d5,\r\n  \"UpperLeftArrow;\":0x2196, \"UpperRightArrow;\":0x2197,\r\n  \"Upsi;\":0x3d2, \"Upsilon;\":0x3a5,\r\n  \"Uring;\":0x16e, \"Uscr;\":[0xd835,0xdcb0],\r\n  \"Utilde;\":0x168, \"Uuml\":0xdc,\r\n  \"Uuml;\":0xdc, \"VDash;\":0x22ab,\r\n  \"Vbar;\":0x2aeb, \"Vcy;\":0x412,\r\n  \"Vdash;\":0x22a9, \"Vdashl;\":0x2ae6,\r\n  \"Vee;\":0x22c1, \"Verbar;\":0x2016,\r\n  \"Vert;\":0x2016, \"VerticalBar;\":0x2223,\r\n  \"VerticalLine;\":0x7c, \"VerticalSeparator;\":0x2758,\r\n  \"VerticalTilde;\":0x2240, \"VeryThinSpace;\":0x200a,\r\n  \"Vfr;\":[0xd835,0xdd19], \"Vopf;\":[0xd835,0xdd4d],\r\n  \"Vscr;\":[0xd835,0xdcb1], \"Vvdash;\":0x22aa,\r\n  \"Wcirc;\":0x174, \"Wedge;\":0x22c0,\r\n  \"Wfr;\":[0xd835,0xdd1a], \"Wopf;\":[0xd835,0xdd4e],\r\n  \"Wscr;\":[0xd835,0xdcb2], \"Xfr;\":[0xd835,0xdd1b],\r\n  \"Xi;\":0x39e, \"Xopf;\":[0xd835,0xdd4f],\r\n  \"Xscr;\":[0xd835,0xdcb3], \"YAcy;\":0x42f,\r\n  \"YIcy;\":0x407, \"YUcy;\":0x42e,\r\n  \"Yacute\":0xdd, \"Yacute;\":0xdd,\r\n  \"Ycirc;\":0x176, \"Ycy;\":0x42b,\r\n  \"Yfr;\":[0xd835,0xdd1c], \"Yopf;\":[0xd835,0xdd50],\r\n  \"Yscr;\":[0xd835,0xdcb4], \"Yuml;\":0x178,\r\n  \"ZHcy;\":0x416, \"Zacute;\":0x179,\r\n  \"Zcaron;\":0x17d, \"Zcy;\":0x417,\r\n  \"Zdot;\":0x17b, \"ZeroWidthSpace;\":0x200b,\r\n  \"Zeta;\":0x396, \"Zfr;\":0x2128,\r\n  \"Zopf;\":0x2124, \"Zscr;\":[0xd835,0xdcb5],\r\n  \"aacute\":0xe1, \"aacute;\":0xe1,\r\n  \"abreve;\":0x103, \"ac;\":0x223e,\r\n  \"acE;\":[0x223e,0x333], \"acd;\":0x223f,\r\n  \"acirc\":0xe2, \"acirc;\":0xe2,\r\n  \"acute\":0xb4, \"acute;\":0xb4,\r\n  \"acy;\":0x430, \"aelig\":0xe6,\r\n  \"aelig;\":0xe6, \"af;\":0x2061,\r\n  \"afr;\":[0xd835,0xdd1e], \"agrave\":0xe0,\r\n  \"agrave;\":0xe0, \"alefsym;\":0x2135,\r\n  \"aleph;\":0x2135, \"alpha;\":0x3b1,\r\n  \"amacr;\":0x101, \"amalg;\":0x2a3f,\r\n  \"amp\":0x26, \"amp;\":0x26,\r\n  \"and;\":0x2227, \"andand;\":0x2a55,\r\n  \"andd;\":0x2a5c, \"andslope;\":0x2a58,\r\n  \"andv;\":0x2a5a, \"ang;\":0x2220,\r\n  \"ange;\":0x29a4, \"angle;\":0x2220,\r\n  \"angmsd;\":0x2221, \"angmsdaa;\":0x29a8,\r\n  \"angmsdab;\":0x29a9, \"angmsdac;\":0x29aa,\r\n  \"angmsdad;\":0x29ab, \"angmsdae;\":0x29ac,\r\n  \"angmsdaf;\":0x29ad, \"angmsdag;\":0x29ae,\r\n  \"angmsdah;\":0x29af, \"angrt;\":0x221f,\r\n  \"angrtvb;\":0x22be, \"angrtvbd;\":0x299d,\r\n  \"angsph;\":0x2222, \"angst;\":0xc5,\r\n  \"angzarr;\":0x237c, \"aogon;\":0x105,\r\n  \"aopf;\":[0xd835,0xdd52], \"ap;\":0x2248,\r\n  \"apE;\":0x2a70, \"apacir;\":0x2a6f,\r\n  \"ape;\":0x224a, \"apid;\":0x224b,\r\n  \"apos;\":0x27, \"approx;\":0x2248,\r\n  \"approxeq;\":0x224a, \"aring\":0xe5,\r\n  \"aring;\":0xe5, \"ascr;\":[0xd835,0xdcb6],\r\n  \"ast;\":0x2a, \"asymp;\":0x2248,\r\n  \"asympeq;\":0x224d, \"atilde\":0xe3,\r\n  \"atilde;\":0xe3, \"auml\":0xe4,\r\n  \"auml;\":0xe4, \"awconint;\":0x2233,\r\n  \"awint;\":0x2a11, \"bNot;\":0x2aed,\r\n  \"backcong;\":0x224c, \"backepsilon;\":0x3f6,\r\n  \"backprime;\":0x2035, \"backsim;\":0x223d,\r\n  \"backsimeq;\":0x22cd, \"barvee;\":0x22bd,\r\n  \"barwed;\":0x2305, \"barwedge;\":0x2305,\r\n  \"bbrk;\":0x23b5, \"bbrktbrk;\":0x23b6,\r\n  \"bcong;\":0x224c, \"bcy;\":0x431,\r\n  \"bdquo;\":0x201e, \"becaus;\":0x2235,\r\n  \"because;\":0x2235, \"bemptyv;\":0x29b0,\r\n  \"bepsi;\":0x3f6, \"bernou;\":0x212c,\r\n  \"beta;\":0x3b2, \"beth;\":0x2136,\r\n  \"between;\":0x226c, \"bfr;\":[0xd835,0xdd1f],\r\n  \"bigcap;\":0x22c2, \"bigcirc;\":0x25ef,\r\n  \"bigcup;\":0x22c3, \"bigodot;\":0x2a00,\r\n  \"bigoplus;\":0x2a01, \"bigotimes;\":0x2a02,\r\n  \"bigsqcup;\":0x2a06, \"bigstar;\":0x2605,\r\n  \"bigtriangledown;\":0x25bd, \"bigtriangleup;\":0x25b3,\r\n  \"biguplus;\":0x2a04, \"bigvee;\":0x22c1,\r\n  \"bigwedge;\":0x22c0, \"bkarow;\":0x290d,\r\n  \"blacklozenge;\":0x29eb, \"blacksquare;\":0x25aa,\r\n  \"blacktriangle;\":0x25b4, \"blacktriangledown;\":0x25be,\r\n  \"blacktriangleleft;\":0x25c2, \"blacktriangleright;\":0x25b8,\r\n  \"blank;\":0x2423, \"blk12;\":0x2592,\r\n  \"blk14;\":0x2591, \"blk34;\":0x2593,\r\n  \"block;\":0x2588, \"bne;\":[0x3d,0x20e5],\r\n  \"bnequiv;\":[0x2261,0x20e5], \"bnot;\":0x2310,\r\n  \"bopf;\":[0xd835,0xdd53], \"bot;\":0x22a5,\r\n  \"bottom;\":0x22a5, \"bowtie;\":0x22c8,\r\n  \"boxDL;\":0x2557, \"boxDR;\":0x2554,\r\n  \"boxDl;\":0x2556, \"boxDr;\":0x2553,\r\n  \"boxH;\":0x2550, \"boxHD;\":0x2566,\r\n  \"boxHU;\":0x2569, \"boxHd;\":0x2564,\r\n  \"boxHu;\":0x2567, \"boxUL;\":0x255d,\r\n  \"boxUR;\":0x255a, \"boxUl;\":0x255c,\r\n  \"boxUr;\":0x2559, \"boxV;\":0x2551,\r\n  \"boxVH;\":0x256c, \"boxVL;\":0x2563,\r\n  \"boxVR;\":0x2560, \"boxVh;\":0x256b,\r\n  \"boxVl;\":0x2562, \"boxVr;\":0x255f,\r\n  \"boxbox;\":0x29c9, \"boxdL;\":0x2555,\r\n  \"boxdR;\":0x2552, \"boxdl;\":0x2510,\r\n  \"boxdr;\":0x250c, \"boxh;\":0x2500,\r\n  \"boxhD;\":0x2565, \"boxhU;\":0x2568,\r\n  \"boxhd;\":0x252c, \"boxhu;\":0x2534,\r\n  \"boxminus;\":0x229f, \"boxplus;\":0x229e,\r\n  \"boxtimes;\":0x22a0, \"boxuL;\":0x255b,\r\n  \"boxuR;\":0x2558, \"boxul;\":0x2518,\r\n  \"boxur;\":0x2514, \"boxv;\":0x2502,\r\n  \"boxvH;\":0x256a, \"boxvL;\":0x2561,\r\n  \"boxvR;\":0x255e, \"boxvh;\":0x253c,\r\n  \"boxvl;\":0x2524, \"boxvr;\":0x251c,\r\n  \"bprime;\":0x2035, \"breve;\":0x2d8,\r\n  \"brvbar\":0xa6, \"brvbar;\":0xa6,\r\n  \"bscr;\":[0xd835,0xdcb7], \"bsemi;\":0x204f,\r\n  \"bsim;\":0x223d, \"bsime;\":0x22cd,\r\n  \"bsol;\":0x5c, \"bsolb;\":0x29c5,\r\n  \"bsolhsub;\":0x27c8, \"bull;\":0x2022,\r\n  \"bullet;\":0x2022, \"bump;\":0x224e,\r\n  \"bumpE;\":0x2aae, \"bumpe;\":0x224f,\r\n  \"bumpeq;\":0x224f, \"cacute;\":0x107,\r\n  \"cap;\":0x2229, \"capand;\":0x2a44,\r\n  \"capbrcup;\":0x2a49, \"capcap;\":0x2a4b,\r\n  \"capcup;\":0x2a47, \"capdot;\":0x2a40,\r\n  \"caps;\":[0x2229,0xfe00], \"caret;\":0x2041,\r\n  \"caron;\":0x2c7, \"ccaps;\":0x2a4d,\r\n  \"ccaron;\":0x10d, \"ccedil\":0xe7,\r\n  \"ccedil;\":0xe7, \"ccirc;\":0x109,\r\n  \"ccups;\":0x2a4c, \"ccupssm;\":0x2a50,\r\n  \"cdot;\":0x10b, \"cedil\":0xb8,\r\n  \"cedil;\":0xb8, \"cemptyv;\":0x29b2,\r\n  \"cent\":0xa2, \"cent;\":0xa2,\r\n  \"centerdot;\":0xb7, \"cfr;\":[0xd835,0xdd20],\r\n  \"chcy;\":0x447, \"check;\":0x2713,\r\n  \"checkmark;\":0x2713, \"chi;\":0x3c7,\r\n  \"cir;\":0x25cb, \"cirE;\":0x29c3,\r\n  \"circ;\":0x2c6, \"circeq;\":0x2257,\r\n  \"circlearrowleft;\":0x21ba, \"circlearrowright;\":0x21bb,\r\n  \"circledR;\":0xae, \"circledS;\":0x24c8,\r\n  \"circledast;\":0x229b, \"circledcirc;\":0x229a,\r\n  \"circleddash;\":0x229d, \"cire;\":0x2257,\r\n  \"cirfnint;\":0x2a10, \"cirmid;\":0x2aef,\r\n  \"cirscir;\":0x29c2, \"clubs;\":0x2663,\r\n  \"clubsuit;\":0x2663, \"colon;\":0x3a,\r\n  \"colone;\":0x2254, \"coloneq;\":0x2254,\r\n  \"comma;\":0x2c, \"commat;\":0x40,\r\n  \"comp;\":0x2201, \"compfn;\":0x2218,\r\n  \"complement;\":0x2201, \"complexes;\":0x2102,\r\n  \"cong;\":0x2245, \"congdot;\":0x2a6d,\r\n  \"conint;\":0x222e, \"copf;\":[0xd835,0xdd54],\r\n  \"coprod;\":0x2210, \"copy\":0xa9,\r\n  \"copy;\":0xa9, \"copysr;\":0x2117,\r\n  \"crarr;\":0x21b5, \"cross;\":0x2717,\r\n  \"cscr;\":[0xd835,0xdcb8], \"csub;\":0x2acf,\r\n  \"csube;\":0x2ad1, \"csup;\":0x2ad0,\r\n  \"csupe;\":0x2ad2, \"ctdot;\":0x22ef,\r\n  \"cudarrl;\":0x2938, \"cudarrr;\":0x2935,\r\n  \"cuepr;\":0x22de, \"cuesc;\":0x22df,\r\n  \"cularr;\":0x21b6, \"cularrp;\":0x293d,\r\n  \"cup;\":0x222a, \"cupbrcap;\":0x2a48,\r\n  \"cupcap;\":0x2a46, \"cupcup;\":0x2a4a,\r\n  \"cupdot;\":0x228d, \"cupor;\":0x2a45,\r\n  \"cups;\":[0x222a,0xfe00], \"curarr;\":0x21b7,\r\n  \"curarrm;\":0x293c, \"curlyeqprec;\":0x22de,\r\n  \"curlyeqsucc;\":0x22df, \"curlyvee;\":0x22ce,\r\n  \"curlywedge;\":0x22cf, \"curren\":0xa4,\r\n  \"curren;\":0xa4, \"curvearrowleft;\":0x21b6,\r\n  \"curvearrowright;\":0x21b7, \"cuvee;\":0x22ce,\r\n  \"cuwed;\":0x22cf, \"cwconint;\":0x2232,\r\n  \"cwint;\":0x2231, \"cylcty;\":0x232d,\r\n  \"dArr;\":0x21d3, \"dHar;\":0x2965,\r\n  \"dagger;\":0x2020, \"daleth;\":0x2138,\r\n  \"darr;\":0x2193, \"dash;\":0x2010,\r\n  \"dashv;\":0x22a3, \"dbkarow;\":0x290f,\r\n  \"dblac;\":0x2dd, \"dcaron;\":0x10f,\r\n  \"dcy;\":0x434, \"dd;\":0x2146,\r\n  \"ddagger;\":0x2021, \"ddarr;\":0x21ca,\r\n  \"ddotseq;\":0x2a77, \"deg\":0xb0,\r\n  \"deg;\":0xb0, \"delta;\":0x3b4,\r\n  \"demptyv;\":0x29b1, \"dfisht;\":0x297f,\r\n  \"dfr;\":[0xd835,0xdd21], \"dharl;\":0x21c3,\r\n  \"dharr;\":0x21c2, \"diam;\":0x22c4,\r\n  \"diamond;\":0x22c4, \"diamondsuit;\":0x2666,\r\n  \"diams;\":0x2666, \"die;\":0xa8,\r\n  \"digamma;\":0x3dd, \"disin;\":0x22f2,\r\n  \"div;\":0xf7, \"divide\":0xf7,\r\n  \"divide;\":0xf7, \"divideontimes;\":0x22c7,\r\n  \"divonx;\":0x22c7, \"djcy;\":0x452,\r\n  \"dlcorn;\":0x231e, \"dlcrop;\":0x230d,\r\n  \"dollar;\":0x24, \"dopf;\":[0xd835,0xdd55],\r\n  \"dot;\":0x2d9, \"doteq;\":0x2250,\r\n  \"doteqdot;\":0x2251, \"dotminus;\":0x2238,\r\n  \"dotplus;\":0x2214, \"dotsquare;\":0x22a1,\r\n  \"doublebarwedge;\":0x2306, \"downarrow;\":0x2193,\r\n  \"downdownarrows;\":0x21ca, \"downharpoonleft;\":0x21c3,\r\n  \"downharpoonright;\":0x21c2, \"drbkarow;\":0x2910,\r\n  \"drcorn;\":0x231f, \"drcrop;\":0x230c,\r\n  \"dscr;\":[0xd835,0xdcb9], \"dscy;\":0x455,\r\n  \"dsol;\":0x29f6, \"dstrok;\":0x111,\r\n  \"dtdot;\":0x22f1, \"dtri;\":0x25bf,\r\n  \"dtrif;\":0x25be, \"duarr;\":0x21f5,\r\n  \"duhar;\":0x296f, \"dwangle;\":0x29a6,\r\n  \"dzcy;\":0x45f, \"dzigrarr;\":0x27ff,\r\n  \"eDDot;\":0x2a77, \"eDot;\":0x2251,\r\n  \"eacute\":0xe9, \"eacute;\":0xe9,\r\n  \"easter;\":0x2a6e, \"ecaron;\":0x11b,\r\n  \"ecir;\":0x2256, \"ecirc\":0xea,\r\n  \"ecirc;\":0xea, \"ecolon;\":0x2255,\r\n  \"ecy;\":0x44d, \"edot;\":0x117,\r\n  \"ee;\":0x2147, \"efDot;\":0x2252,\r\n  \"efr;\":[0xd835,0xdd22], \"eg;\":0x2a9a,\r\n  \"egrave\":0xe8, \"egrave;\":0xe8,\r\n  \"egs;\":0x2a96, \"egsdot;\":0x2a98,\r\n  \"el;\":0x2a99, \"elinters;\":0x23e7,\r\n  \"ell;\":0x2113, \"els;\":0x2a95,\r\n  \"elsdot;\":0x2a97, \"emacr;\":0x113,\r\n  \"empty;\":0x2205, \"emptyset;\":0x2205,\r\n  \"emptyv;\":0x2205, \"emsp13;\":0x2004,\r\n  \"emsp14;\":0x2005, \"emsp;\":0x2003,\r\n  \"eng;\":0x14b, \"ensp;\":0x2002,\r\n  \"eogon;\":0x119, \"eopf;\":[0xd835,0xdd56],\r\n  \"epar;\":0x22d5, \"eparsl;\":0x29e3,\r\n  \"eplus;\":0x2a71, \"epsi;\":0x3b5,\r\n  \"epsilon;\":0x3b5, \"epsiv;\":0x3f5,\r\n  \"eqcirc;\":0x2256, \"eqcolon;\":0x2255,\r\n  \"eqsim;\":0x2242, \"eqslantgtr;\":0x2a96,\r\n  \"eqslantless;\":0x2a95, \"equals;\":0x3d,\r\n  \"equest;\":0x225f, \"equiv;\":0x2261,\r\n  \"equivDD;\":0x2a78, \"eqvparsl;\":0x29e5,\r\n  \"erDot;\":0x2253, \"erarr;\":0x2971,\r\n  \"escr;\":0x212f, \"esdot;\":0x2250,\r\n  \"esim;\":0x2242, \"eta;\":0x3b7,\r\n  \"eth\":0xf0, \"eth;\":0xf0,\r\n  \"euml\":0xeb, \"euml;\":0xeb,\r\n  \"euro;\":0x20ac, \"excl;\":0x21,\r\n  \"exist;\":0x2203, \"expectation;\":0x2130,\r\n  \"exponentiale;\":0x2147, \"fallingdotseq;\":0x2252,\r\n  \"fcy;\":0x444, \"female;\":0x2640,\r\n  \"ffilig;\":0xfb03, \"fflig;\":0xfb00,\r\n  \"ffllig;\":0xfb04, \"ffr;\":[0xd835,0xdd23],\r\n  \"filig;\":0xfb01, \"fjlig;\":[0x66,0x6a],\r\n  \"flat;\":0x266d, \"fllig;\":0xfb02,\r\n  \"fltns;\":0x25b1, \"fnof;\":0x192,\r\n  \"fopf;\":[0xd835,0xdd57], \"forall;\":0x2200,\r\n  \"fork;\":0x22d4, \"forkv;\":0x2ad9,\r\n  \"fpartint;\":0x2a0d, \"frac12\":0xbd,\r\n  \"frac12;\":0xbd, \"frac13;\":0x2153,\r\n  \"frac14\":0xbc, \"frac14;\":0xbc,\r\n  \"frac15;\":0x2155, \"frac16;\":0x2159,\r\n  \"frac18;\":0x215b, \"frac23;\":0x2154,\r\n  \"frac25;\":0x2156, \"frac34\":0xbe,\r\n  \"frac34;\":0xbe, \"frac35;\":0x2157,\r\n  \"frac38;\":0x215c, \"frac45;\":0x2158,\r\n  \"frac56;\":0x215a, \"frac58;\":0x215d,\r\n  \"frac78;\":0x215e, \"frasl;\":0x2044,\r\n  \"frown;\":0x2322, \"fscr;\":[0xd835,0xdcbb],\r\n  \"gE;\":0x2267, \"gEl;\":0x2a8c,\r\n  \"gacute;\":0x1f5, \"gamma;\":0x3b3,\r\n  \"gammad;\":0x3dd, \"gap;\":0x2a86,\r\n  \"gbreve;\":0x11f, \"gcirc;\":0x11d,\r\n  \"gcy;\":0x433, \"gdot;\":0x121,\r\n  \"ge;\":0x2265, \"gel;\":0x22db,\r\n  \"geq;\":0x2265, \"geqq;\":0x2267,\r\n  \"geqslant;\":0x2a7e, \"ges;\":0x2a7e,\r\n  \"gescc;\":0x2aa9, \"gesdot;\":0x2a80,\r\n  \"gesdoto;\":0x2a82, \"gesdotol;\":0x2a84,\r\n  \"gesl;\":[0x22db,0xfe00], \"gesles;\":0x2a94,\r\n  \"gfr;\":[0xd835,0xdd24], \"gg;\":0x226b,\r\n  \"ggg;\":0x22d9, \"gimel;\":0x2137,\r\n  \"gjcy;\":0x453, \"gl;\":0x2277,\r\n  \"glE;\":0x2a92, \"gla;\":0x2aa5,\r\n  \"glj;\":0x2aa4, \"gnE;\":0x2269,\r\n  \"gnap;\":0x2a8a, \"gnapprox;\":0x2a8a,\r\n  \"gne;\":0x2a88, \"gneq;\":0x2a88,\r\n  \"gneqq;\":0x2269, \"gnsim;\":0x22e7,\r\n  \"gopf;\":[0xd835,0xdd58], \"grave;\":0x60,\r\n  \"gscr;\":0x210a, \"gsim;\":0x2273,\r\n  \"gsime;\":0x2a8e, \"gsiml;\":0x2a90,\r\n  \"gt\":0x3e, \"gt;\":0x3e,\r\n  \"gtcc;\":0x2aa7, \"gtcir;\":0x2a7a,\r\n  \"gtdot;\":0x22d7, \"gtlPar;\":0x2995,\r\n  \"gtquest;\":0x2a7c, \"gtrapprox;\":0x2a86,\r\n  \"gtrarr;\":0x2978, \"gtrdot;\":0x22d7,\r\n  \"gtreqless;\":0x22db, \"gtreqqless;\":0x2a8c,\r\n  \"gtrless;\":0x2277, \"gtrsim;\":0x2273,\r\n  \"gvertneqq;\":[0x2269,0xfe00], \"gvnE;\":[0x2269,0xfe00],\r\n  \"hArr;\":0x21d4, \"hairsp;\":0x200a,\r\n  \"half;\":0xbd, \"hamilt;\":0x210b,\r\n  \"hardcy;\":0x44a, \"harr;\":0x2194,\r\n  \"harrcir;\":0x2948, \"harrw;\":0x21ad,\r\n  \"hbar;\":0x210f, \"hcirc;\":0x125,\r\n  \"hearts;\":0x2665, \"heartsuit;\":0x2665,\r\n  \"hellip;\":0x2026, \"hercon;\":0x22b9,\r\n  \"hfr;\":[0xd835,0xdd25], \"hksearow;\":0x2925,\r\n  \"hkswarow;\":0x2926, \"hoarr;\":0x21ff,\r\n  \"homtht;\":0x223b, \"hookleftarrow;\":0x21a9,\r\n  \"hookrightarrow;\":0x21aa, \"hopf;\":[0xd835,0xdd59],\r\n  \"horbar;\":0x2015, \"hscr;\":[0xd835,0xdcbd],\r\n  \"hslash;\":0x210f, \"hstrok;\":0x127,\r\n  \"hybull;\":0x2043, \"hyphen;\":0x2010,\r\n  \"iacute\":0xed, \"iacute;\":0xed,\r\n  \"ic;\":0x2063, \"icirc\":0xee,\r\n  \"icirc;\":0xee, \"icy;\":0x438,\r\n  \"iecy;\":0x435, \"iexcl\":0xa1,\r\n  \"iexcl;\":0xa1, \"iff;\":0x21d4,\r\n  \"ifr;\":[0xd835,0xdd26], \"igrave\":0xec,\r\n  \"igrave;\":0xec, \"ii;\":0x2148,\r\n  \"iiiint;\":0x2a0c, \"iiint;\":0x222d,\r\n  \"iinfin;\":0x29dc, \"iiota;\":0x2129,\r\n  \"ijlig;\":0x133, \"imacr;\":0x12b,\r\n  \"image;\":0x2111, \"imagline;\":0x2110,\r\n  \"imagpart;\":0x2111, \"imath;\":0x131,\r\n  \"imof;\":0x22b7, \"imped;\":0x1b5,\r\n  \"in;\":0x2208, \"incare;\":0x2105,\r\n  \"infin;\":0x221e, \"infintie;\":0x29dd,\r\n  \"inodot;\":0x131, \"int;\":0x222b,\r\n  \"intcal;\":0x22ba, \"integers;\":0x2124,\r\n  \"intercal;\":0x22ba, \"intlarhk;\":0x2a17,\r\n  \"intprod;\":0x2a3c, \"iocy;\":0x451,\r\n  \"iogon;\":0x12f, \"iopf;\":[0xd835,0xdd5a],\r\n  \"iota;\":0x3b9, \"iprod;\":0x2a3c,\r\n  \"iquest\":0xbf, \"iquest;\":0xbf,\r\n  \"iscr;\":[0xd835,0xdcbe], \"isin;\":0x2208,\r\n  \"isinE;\":0x22f9, \"isindot;\":0x22f5,\r\n  \"isins;\":0x22f4, \"isinsv;\":0x22f3,\r\n  \"isinv;\":0x2208, \"it;\":0x2062,\r\n  \"itilde;\":0x129, \"iukcy;\":0x456,\r\n  \"iuml\":0xef, \"iuml;\":0xef,\r\n  \"jcirc;\":0x135, \"jcy;\":0x439,\r\n  \"jfr;\":[0xd835,0xdd27], \"jmath;\":0x237,\r\n  \"jopf;\":[0xd835,0xdd5b], \"jscr;\":[0xd835,0xdcbf],\r\n  \"jsercy;\":0x458, \"jukcy;\":0x454,\r\n  \"kappa;\":0x3ba, \"kappav;\":0x3f0,\r\n  \"kcedil;\":0x137, \"kcy;\":0x43a,\r\n  \"kfr;\":[0xd835,0xdd28], \"kgreen;\":0x138,\r\n  \"khcy;\":0x445, \"kjcy;\":0x45c,\r\n  \"kopf;\":[0xd835,0xdd5c], \"kscr;\":[0xd835,0xdcc0],\r\n  \"lAarr;\":0x21da, \"lArr;\":0x21d0,\r\n  \"lAtail;\":0x291b, \"lBarr;\":0x290e,\r\n  \"lE;\":0x2266, \"lEg;\":0x2a8b,\r\n  \"lHar;\":0x2962, \"lacute;\":0x13a,\r\n  \"laemptyv;\":0x29b4, \"lagran;\":0x2112,\r\n  \"lambda;\":0x3bb, \"lang;\":0x27e8,\r\n  \"langd;\":0x2991, \"langle;\":0x27e8,\r\n  \"lap;\":0x2a85, \"laquo\":0xab,\r\n  \"laquo;\":0xab, \"larr;\":0x2190,\r\n  \"larrb;\":0x21e4, \"larrbfs;\":0x291f,\r\n  \"larrfs;\":0x291d, \"larrhk;\":0x21a9,\r\n  \"larrlp;\":0x21ab, \"larrpl;\":0x2939,\r\n  \"larrsim;\":0x2973, \"larrtl;\":0x21a2,\r\n  \"lat;\":0x2aab, \"latail;\":0x2919,\r\n  \"late;\":0x2aad, \"lates;\":[0x2aad,0xfe00],\r\n  \"lbarr;\":0x290c, \"lbbrk;\":0x2772,\r\n  \"lbrace;\":0x7b, \"lbrack;\":0x5b,\r\n  \"lbrke;\":0x298b, \"lbrksld;\":0x298f,\r\n  \"lbrkslu;\":0x298d, \"lcaron;\":0x13e,\r\n  \"lcedil;\":0x13c, \"lceil;\":0x2308,\r\n  \"lcub;\":0x7b, \"lcy;\":0x43b,\r\n  \"ldca;\":0x2936, \"ldquo;\":0x201c,\r\n  \"ldquor;\":0x201e, \"ldrdhar;\":0x2967,\r\n  \"ldrushar;\":0x294b, \"ldsh;\":0x21b2,\r\n  \"le;\":0x2264, \"leftarrow;\":0x2190,\r\n  \"leftarrowtail;\":0x21a2, \"leftharpoondown;\":0x21bd,\r\n  \"leftharpoonup;\":0x21bc, \"leftleftarrows;\":0x21c7,\r\n  \"leftrightarrow;\":0x2194, \"leftrightarrows;\":0x21c6,\r\n  \"leftrightharpoons;\":0x21cb, \"leftrightsquigarrow;\":0x21ad,\r\n  \"leftthreetimes;\":0x22cb, \"leg;\":0x22da,\r\n  \"leq;\":0x2264, \"leqq;\":0x2266,\r\n  \"leqslant;\":0x2a7d, \"les;\":0x2a7d,\r\n  \"lescc;\":0x2aa8, \"lesdot;\":0x2a7f,\r\n  \"lesdoto;\":0x2a81, \"lesdotor;\":0x2a83,\r\n  \"lesg;\":[0x22da,0xfe00], \"lesges;\":0x2a93,\r\n  \"lessapprox;\":0x2a85, \"lessdot;\":0x22d6,\r\n  \"lesseqgtr;\":0x22da, \"lesseqqgtr;\":0x2a8b,\r\n  \"lessgtr;\":0x2276, \"lesssim;\":0x2272,\r\n  \"lfisht;\":0x297c, \"lfloor;\":0x230a,\r\n  \"lfr;\":[0xd835,0xdd29], \"lg;\":0x2276,\r\n  \"lgE;\":0x2a91, \"lhard;\":0x21bd,\r\n  \"lharu;\":0x21bc, \"lharul;\":0x296a,\r\n  \"lhblk;\":0x2584, \"ljcy;\":0x459,\r\n  \"ll;\":0x226a, \"llarr;\":0x21c7,\r\n  \"llcorner;\":0x231e, \"llhard;\":0x296b,\r\n  \"lltri;\":0x25fa, \"lmidot;\":0x140,\r\n  \"lmoust;\":0x23b0, \"lmoustache;\":0x23b0,\r\n  \"lnE;\":0x2268, \"lnap;\":0x2a89,\r\n  \"lnapprox;\":0x2a89, \"lne;\":0x2a87,\r\n  \"lneq;\":0x2a87, \"lneqq;\":0x2268,\r\n  \"lnsim;\":0x22e6, \"loang;\":0x27ec,\r\n  \"loarr;\":0x21fd, \"lobrk;\":0x27e6,\r\n  \"longleftarrow;\":0x27f5, \"longleftrightarrow;\":0x27f7,\r\n  \"longmapsto;\":0x27fc, \"longrightarrow;\":0x27f6,\r\n  \"looparrowleft;\":0x21ab, \"looparrowright;\":0x21ac,\r\n  \"lopar;\":0x2985, \"lopf;\":[0xd835,0xdd5d],\r\n  \"loplus;\":0x2a2d, \"lotimes;\":0x2a34,\r\n  \"lowast;\":0x2217, \"lowbar;\":0x5f,\r\n  \"loz;\":0x25ca, \"lozenge;\":0x25ca,\r\n  \"lozf;\":0x29eb, \"lpar;\":0x28,\r\n  \"lparlt;\":0x2993, \"lrarr;\":0x21c6,\r\n  \"lrcorner;\":0x231f, \"lrhar;\":0x21cb,\r\n  \"lrhard;\":0x296d, \"lrm;\":0x200e,\r\n  \"lrtri;\":0x22bf, \"lsaquo;\":0x2039,\r\n  \"lscr;\":[0xd835,0xdcc1], \"lsh;\":0x21b0,\r\n  \"lsim;\":0x2272, \"lsime;\":0x2a8d,\r\n  \"lsimg;\":0x2a8f, \"lsqb;\":0x5b,\r\n  \"lsquo;\":0x2018, \"lsquor;\":0x201a,\r\n  \"lstrok;\":0x142, \"lt\":0x3c,\r\n  \"lt;\":0x3c, \"ltcc;\":0x2aa6,\r\n  \"ltcir;\":0x2a79, \"ltdot;\":0x22d6,\r\n  \"lthree;\":0x22cb, \"ltimes;\":0x22c9,\r\n  \"ltlarr;\":0x2976, \"ltquest;\":0x2a7b,\r\n  \"ltrPar;\":0x2996, \"ltri;\":0x25c3,\r\n  \"ltrie;\":0x22b4, \"ltrif;\":0x25c2,\r\n  \"lurdshar;\":0x294a, \"luruhar;\":0x2966,\r\n  \"lvertneqq;\":[0x2268,0xfe00], \"lvnE;\":[0x2268,0xfe00],\r\n  \"mDDot;\":0x223a, \"macr\":0xaf,\r\n  \"macr;\":0xaf, \"male;\":0x2642,\r\n  \"malt;\":0x2720, \"maltese;\":0x2720,\r\n  \"map;\":0x21a6, \"mapsto;\":0x21a6,\r\n  \"mapstodown;\":0x21a7, \"mapstoleft;\":0x21a4,\r\n  \"mapstoup;\":0x21a5, \"marker;\":0x25ae,\r\n  \"mcomma;\":0x2a29, \"mcy;\":0x43c,\r\n  \"mdash;\":0x2014, \"measuredangle;\":0x2221,\r\n  \"mfr;\":[0xd835,0xdd2a], \"mho;\":0x2127,\r\n  \"micro\":0xb5, \"micro;\":0xb5,\r\n  \"mid;\":0x2223, \"midast;\":0x2a,\r\n  \"midcir;\":0x2af0, \"middot\":0xb7,\r\n  \"middot;\":0xb7, \"minus;\":0x2212,\r\n  \"minusb;\":0x229f, \"minusd;\":0x2238,\r\n  \"minusdu;\":0x2a2a, \"mlcp;\":0x2adb,\r\n  \"mldr;\":0x2026, \"mnplus;\":0x2213,\r\n  \"models;\":0x22a7, \"mopf;\":[0xd835,0xdd5e],\r\n  \"mp;\":0x2213, \"mscr;\":[0xd835,0xdcc2],\r\n  \"mstpos;\":0x223e, \"mu;\":0x3bc,\r\n  \"multimap;\":0x22b8, \"mumap;\":0x22b8,\r\n  \"nGg;\":[0x22d9,0x338], \"nGt;\":[0x226b,0x20d2],\r\n  \"nGtv;\":[0x226b,0x338], \"nLeftarrow;\":0x21cd,\r\n  \"nLeftrightarrow;\":0x21ce, \"nLl;\":[0x22d8,0x338],\r\n  \"nLt;\":[0x226a,0x20d2], \"nLtv;\":[0x226a,0x338],\r\n  \"nRightarrow;\":0x21cf, \"nVDash;\":0x22af,\r\n  \"nVdash;\":0x22ae, \"nabla;\":0x2207,\r\n  \"nacute;\":0x144, \"nang;\":[0x2220,0x20d2],\r\n  \"nap;\":0x2249, \"napE;\":[0x2a70,0x338],\r\n  \"napid;\":[0x224b,0x338], \"napos;\":0x149,\r\n  \"napprox;\":0x2249, \"natur;\":0x266e,\r\n  \"natural;\":0x266e, \"naturals;\":0x2115,\r\n  \"nbsp\":0xa0, \"nbsp;\":0xa0,\r\n  \"nbump;\":[0x224e,0x338], \"nbumpe;\":[0x224f,0x338],\r\n  \"ncap;\":0x2a43, \"ncaron;\":0x148,\r\n  \"ncedil;\":0x146, \"ncong;\":0x2247,\r\n  \"ncongdot;\":[0x2a6d,0x338], \"ncup;\":0x2a42,\r\n  \"ncy;\":0x43d, \"ndash;\":0x2013,\r\n  \"ne;\":0x2260, \"neArr;\":0x21d7,\r\n  \"nearhk;\":0x2924, \"nearr;\":0x2197,\r\n  \"nearrow;\":0x2197, \"nedot;\":[0x2250,0x338],\r\n  \"nequiv;\":0x2262, \"nesear;\":0x2928,\r\n  \"nesim;\":[0x2242,0x338], \"nexist;\":0x2204,\r\n  \"nexists;\":0x2204, \"nfr;\":[0xd835,0xdd2b],\r\n  \"ngE;\":[0x2267,0x338], \"nge;\":0x2271,\r\n  \"ngeq;\":0x2271, \"ngeqq;\":[0x2267,0x338],\r\n  \"ngeqslant;\":[0x2a7e,0x338], \"nges;\":[0x2a7e,0x338],\r\n  \"ngsim;\":0x2275, \"ngt;\":0x226f,\r\n  \"ngtr;\":0x226f, \"nhArr;\":0x21ce,\r\n  \"nharr;\":0x21ae, \"nhpar;\":0x2af2,\r\n  \"ni;\":0x220b, \"nis;\":0x22fc,\r\n  \"nisd;\":0x22fa, \"niv;\":0x220b,\r\n  \"njcy;\":0x45a, \"nlArr;\":0x21cd,\r\n  \"nlE;\":[0x2266,0x338], \"nlarr;\":0x219a,\r\n  \"nldr;\":0x2025, \"nle;\":0x2270,\r\n  \"nleftarrow;\":0x219a, \"nleftrightarrow;\":0x21ae,\r\n  \"nleq;\":0x2270, \"nleqq;\":[0x2266,0x338],\r\n  \"nleqslant;\":[0x2a7d,0x338], \"nles;\":[0x2a7d,0x338],\r\n  \"nless;\":0x226e, \"nlsim;\":0x2274,\r\n  \"nlt;\":0x226e, \"nltri;\":0x22ea,\r\n  \"nltrie;\":0x22ec, \"nmid;\":0x2224,\r\n  \"nopf;\":[0xd835,0xdd5f], \"not\":0xac,\r\n  \"not;\":0xac, \"notin;\":0x2209,\r\n  \"notinE;\":[0x22f9,0x338], \"notindot;\":[0x22f5,0x338],\r\n  \"notinva;\":0x2209, \"notinvb;\":0x22f7,\r\n  \"notinvc;\":0x22f6, \"notni;\":0x220c,\r\n  \"notniva;\":0x220c, \"notnivb;\":0x22fe,\r\n  \"notnivc;\":0x22fd, \"npar;\":0x2226,\r\n  \"nparallel;\":0x2226, \"nparsl;\":[0x2afd,0x20e5],\r\n  \"npart;\":[0x2202,0x338], \"npolint;\":0x2a14,\r\n  \"npr;\":0x2280, \"nprcue;\":0x22e0,\r\n  \"npre;\":[0x2aaf,0x338], \"nprec;\":0x2280,\r\n  \"npreceq;\":[0x2aaf,0x338], \"nrArr;\":0x21cf,\r\n  \"nrarr;\":0x219b, \"nrarrc;\":[0x2933,0x338],\r\n  \"nrarrw;\":[0x219d,0x338], \"nrightarrow;\":0x219b,\r\n  \"nrtri;\":0x22eb, \"nrtrie;\":0x22ed,\r\n  \"nsc;\":0x2281, \"nsccue;\":0x22e1,\r\n  \"nsce;\":[0x2ab0,0x338], \"nscr;\":[0xd835,0xdcc3],\r\n  \"nshortmid;\":0x2224, \"nshortparallel;\":0x2226,\r\n  \"nsim;\":0x2241, \"nsime;\":0x2244,\r\n  \"nsimeq;\":0x2244, \"nsmid;\":0x2224,\r\n  \"nspar;\":0x2226, \"nsqsube;\":0x22e2,\r\n  \"nsqsupe;\":0x22e3, \"nsub;\":0x2284,\r\n  \"nsubE;\":[0x2ac5,0x338], \"nsube;\":0x2288,\r\n  \"nsubset;\":[0x2282,0x20d2], \"nsubseteq;\":0x2288,\r\n  \"nsubseteqq;\":[0x2ac5,0x338], \"nsucc;\":0x2281,\r\n  \"nsucceq;\":[0x2ab0,0x338], \"nsup;\":0x2285,\r\n  \"nsupE;\":[0x2ac6,0x338], \"nsupe;\":0x2289,\r\n  \"nsupset;\":[0x2283,0x20d2], \"nsupseteq;\":0x2289,\r\n  \"nsupseteqq;\":[0x2ac6,0x338], \"ntgl;\":0x2279,\r\n  \"ntilde\":0xf1, \"ntilde;\":0xf1,\r\n  \"ntlg;\":0x2278, \"ntriangleleft;\":0x22ea,\r\n  \"ntrianglelefteq;\":0x22ec, \"ntriangleright;\":0x22eb,\r\n  \"ntrianglerighteq;\":0x22ed, \"nu;\":0x3bd,\r\n  \"num;\":0x23, \"numero;\":0x2116,\r\n  \"numsp;\":0x2007, \"nvDash;\":0x22ad,\r\n  \"nvHarr;\":0x2904, \"nvap;\":[0x224d,0x20d2],\r\n  \"nvdash;\":0x22ac, \"nvge;\":[0x2265,0x20d2],\r\n  \"nvgt;\":[0x3e,0x20d2], \"nvinfin;\":0x29de,\r\n  \"nvlArr;\":0x2902, \"nvle;\":[0x2264,0x20d2],\r\n  \"nvlt;\":[0x3c,0x20d2], \"nvltrie;\":[0x22b4,0x20d2],\r\n  \"nvrArr;\":0x2903, \"nvrtrie;\":[0x22b5,0x20d2],\r\n  \"nvsim;\":[0x223c,0x20d2], \"nwArr;\":0x21d6,\r\n  \"nwarhk;\":0x2923, \"nwarr;\":0x2196,\r\n  \"nwarrow;\":0x2196, \"nwnear;\":0x2927,\r\n  \"oS;\":0x24c8, \"oacute\":0xf3,\r\n  \"oacute;\":0xf3, \"oast;\":0x229b,\r\n  \"ocir;\":0x229a, \"ocirc\":0xf4,\r\n  \"ocirc;\":0xf4, \"ocy;\":0x43e,\r\n  \"odash;\":0x229d, \"odblac;\":0x151,\r\n  \"odiv;\":0x2a38, \"odot;\":0x2299,\r\n  \"odsold;\":0x29bc, \"oelig;\":0x153,\r\n  \"ofcir;\":0x29bf, \"ofr;\":[0xd835,0xdd2c],\r\n  \"ogon;\":0x2db, \"ograve\":0xf2,\r\n  \"ograve;\":0xf2, \"ogt;\":0x29c1,\r\n  \"ohbar;\":0x29b5, \"ohm;\":0x3a9,\r\n  \"oint;\":0x222e, \"olarr;\":0x21ba,\r\n  \"olcir;\":0x29be, \"olcross;\":0x29bb,\r\n  \"oline;\":0x203e, \"olt;\":0x29c0,\r\n  \"omacr;\":0x14d, \"omega;\":0x3c9,\r\n  \"omicron;\":0x3bf, \"omid;\":0x29b6,\r\n  \"ominus;\":0x2296, \"oopf;\":[0xd835,0xdd60],\r\n  \"opar;\":0x29b7, \"operp;\":0x29b9,\r\n  \"oplus;\":0x2295, \"or;\":0x2228,\r\n  \"orarr;\":0x21bb, \"ord;\":0x2a5d,\r\n  \"order;\":0x2134, \"orderof;\":0x2134,\r\n  \"ordf\":0xaa, \"ordf;\":0xaa,\r\n  \"ordm\":0xba, \"ordm;\":0xba,\r\n  \"origof;\":0x22b6, \"oror;\":0x2a56,\r\n  \"orslope;\":0x2a57, \"orv;\":0x2a5b,\r\n  \"oscr;\":0x2134, \"oslash\":0xf8,\r\n  \"oslash;\":0xf8, \"osol;\":0x2298,\r\n  \"otilde\":0xf5, \"otilde;\":0xf5,\r\n  \"otimes;\":0x2297, \"otimesas;\":0x2a36,\r\n  \"ouml\":0xf6, \"ouml;\":0xf6,\r\n  \"ovbar;\":0x233d, \"par;\":0x2225,\r\n  \"para\":0xb6, \"para;\":0xb6,\r\n  \"parallel;\":0x2225, \"parsim;\":0x2af3,\r\n  \"parsl;\":0x2afd, \"part;\":0x2202,\r\n  \"pcy;\":0x43f, \"percnt;\":0x25,\r\n  \"period;\":0x2e, \"permil;\":0x2030,\r\n  \"perp;\":0x22a5, \"pertenk;\":0x2031,\r\n  \"pfr;\":[0xd835,0xdd2d], \"phi;\":0x3c6,\r\n  \"phiv;\":0x3d5, \"phmmat;\":0x2133,\r\n  \"phone;\":0x260e, \"pi;\":0x3c0,\r\n  \"pitchfork;\":0x22d4, \"piv;\":0x3d6,\r\n  \"planck;\":0x210f, \"planckh;\":0x210e,\r\n  \"plankv;\":0x210f, \"plus;\":0x2b,\r\n  \"plusacir;\":0x2a23, \"plusb;\":0x229e,\r\n  \"pluscir;\":0x2a22, \"plusdo;\":0x2214,\r\n  \"plusdu;\":0x2a25, \"pluse;\":0x2a72,\r\n  \"plusmn\":0xb1, \"plusmn;\":0xb1,\r\n  \"plussim;\":0x2a26, \"plustwo;\":0x2a27,\r\n  \"pm;\":0xb1, \"pointint;\":0x2a15,\r\n  \"popf;\":[0xd835,0xdd61], \"pound\":0xa3,\r\n  \"pound;\":0xa3, \"pr;\":0x227a,\r\n  \"prE;\":0x2ab3, \"prap;\":0x2ab7,\r\n  \"prcue;\":0x227c, \"pre;\":0x2aaf,\r\n  \"prec;\":0x227a, \"precapprox;\":0x2ab7,\r\n  \"preccurlyeq;\":0x227c, \"preceq;\":0x2aaf,\r\n  \"precnapprox;\":0x2ab9, \"precneqq;\":0x2ab5,\r\n  \"precnsim;\":0x22e8, \"precsim;\":0x227e,\r\n  \"prime;\":0x2032, \"primes;\":0x2119,\r\n  \"prnE;\":0x2ab5, \"prnap;\":0x2ab9,\r\n  \"prnsim;\":0x22e8, \"prod;\":0x220f,\r\n  \"profalar;\":0x232e, \"profline;\":0x2312,\r\n  \"profsurf;\":0x2313, \"prop;\":0x221d,\r\n  \"propto;\":0x221d, \"prsim;\":0x227e,\r\n  \"prurel;\":0x22b0, \"pscr;\":[0xd835,0xdcc5],\r\n  \"psi;\":0x3c8, \"puncsp;\":0x2008,\r\n  \"qfr;\":[0xd835,0xdd2e], \"qint;\":0x2a0c,\r\n  \"qopf;\":[0xd835,0xdd62], \"qprime;\":0x2057,\r\n  \"qscr;\":[0xd835,0xdcc6], \"quaternions;\":0x210d,\r\n  \"quatint;\":0x2a16, \"quest;\":0x3f,\r\n  \"questeq;\":0x225f, \"quot\":0x22,\r\n  \"quot;\":0x22, \"rAarr;\":0x21db,\r\n  \"rArr;\":0x21d2, \"rAtail;\":0x291c,\r\n  \"rBarr;\":0x290f, \"rHar;\":0x2964,\r\n  \"race;\":[0x223d,0x331], \"racute;\":0x155,\r\n  \"radic;\":0x221a, \"raemptyv;\":0x29b3,\r\n  \"rang;\":0x27e9, \"rangd;\":0x2992,\r\n  \"range;\":0x29a5, \"rangle;\":0x27e9,\r\n  \"raquo\":0xbb, \"raquo;\":0xbb,\r\n  \"rarr;\":0x2192, \"rarrap;\":0x2975,\r\n  \"rarrb;\":0x21e5, \"rarrbfs;\":0x2920,\r\n  \"rarrc;\":0x2933, \"rarrfs;\":0x291e,\r\n  \"rarrhk;\":0x21aa, \"rarrlp;\":0x21ac,\r\n  \"rarrpl;\":0x2945, \"rarrsim;\":0x2974,\r\n  \"rarrtl;\":0x21a3, \"rarrw;\":0x219d,\r\n  \"ratail;\":0x291a, \"ratio;\":0x2236,\r\n  \"rationals;\":0x211a, \"rbarr;\":0x290d,\r\n  \"rbbrk;\":0x2773, \"rbrace;\":0x7d,\r\n  \"rbrack;\":0x5d, \"rbrke;\":0x298c,\r\n  \"rbrksld;\":0x298e, \"rbrkslu;\":0x2990,\r\n  \"rcaron;\":0x159, \"rcedil;\":0x157,\r\n  \"rceil;\":0x2309, \"rcub;\":0x7d,\r\n  \"rcy;\":0x440, \"rdca;\":0x2937,\r\n  \"rdldhar;\":0x2969, \"rdquo;\":0x201d,\r\n  \"rdquor;\":0x201d, \"rdsh;\":0x21b3,\r\n  \"real;\":0x211c, \"realine;\":0x211b,\r\n  \"realpart;\":0x211c, \"reals;\":0x211d,\r\n  \"rect;\":0x25ad, \"reg\":0xae,\r\n  \"reg;\":0xae, \"rfisht;\":0x297d,\r\n  \"rfloor;\":0x230b, \"rfr;\":[0xd835,0xdd2f],\r\n  \"rhard;\":0x21c1, \"rharu;\":0x21c0,\r\n  \"rharul;\":0x296c, \"rho;\":0x3c1,\r\n  \"rhov;\":0x3f1, \"rightarrow;\":0x2192,\r\n  \"rightarrowtail;\":0x21a3, \"rightharpoondown;\":0x21c1,\r\n  \"rightharpoonup;\":0x21c0, \"rightleftarrows;\":0x21c4,\r\n  \"rightleftharpoons;\":0x21cc, \"rightrightarrows;\":0x21c9,\r\n  \"rightsquigarrow;\":0x219d, \"rightthreetimes;\":0x22cc,\r\n  \"ring;\":0x2da, \"risingdotseq;\":0x2253,\r\n  \"rlarr;\":0x21c4, \"rlhar;\":0x21cc,\r\n  \"rlm;\":0x200f, \"rmoust;\":0x23b1,\r\n  \"rmoustache;\":0x23b1, \"rnmid;\":0x2aee,\r\n  \"roang;\":0x27ed, \"roarr;\":0x21fe,\r\n  \"robrk;\":0x27e7, \"ropar;\":0x2986,\r\n  \"ropf;\":[0xd835,0xdd63], \"roplus;\":0x2a2e,\r\n  \"rotimes;\":0x2a35, \"rpar;\":0x29,\r\n  \"rpargt;\":0x2994, \"rppolint;\":0x2a12,\r\n  \"rrarr;\":0x21c9, \"rsaquo;\":0x203a,\r\n  \"rscr;\":[0xd835,0xdcc7], \"rsh;\":0x21b1,\r\n  \"rsqb;\":0x5d, \"rsquo;\":0x2019,\r\n  \"rsquor;\":0x2019, \"rthree;\":0x22cc,\r\n  \"rtimes;\":0x22ca, \"rtri;\":0x25b9,\r\n  \"rtrie;\":0x22b5, \"rtrif;\":0x25b8,\r\n  \"rtriltri;\":0x29ce, \"ruluhar;\":0x2968,\r\n  \"rx;\":0x211e, \"sacute;\":0x15b,\r\n  \"sbquo;\":0x201a, \"sc;\":0x227b,\r\n  \"scE;\":0x2ab4, \"scap;\":0x2ab8,\r\n  \"scaron;\":0x161, \"sccue;\":0x227d,\r\n  \"sce;\":0x2ab0, \"scedil;\":0x15f,\r\n  \"scirc;\":0x15d, \"scnE;\":0x2ab6,\r\n  \"scnap;\":0x2aba, \"scnsim;\":0x22e9,\r\n  \"scpolint;\":0x2a13, \"scsim;\":0x227f,\r\n  \"scy;\":0x441, \"sdot;\":0x22c5,\r\n  \"sdotb;\":0x22a1, \"sdote;\":0x2a66,\r\n  \"seArr;\":0x21d8, \"searhk;\":0x2925,\r\n  \"searr;\":0x2198, \"searrow;\":0x2198,\r\n  \"sect\":0xa7, \"sect;\":0xa7,\r\n  \"semi;\":0x3b, \"seswar;\":0x2929,\r\n  \"setminus;\":0x2216, \"setmn;\":0x2216,\r\n  \"sext;\":0x2736, \"sfr;\":[0xd835,0xdd30],\r\n  \"sfrown;\":0x2322, \"sharp;\":0x266f,\r\n  \"shchcy;\":0x449, \"shcy;\":0x448,\r\n  \"shortmid;\":0x2223, \"shortparallel;\":0x2225,\r\n  \"shy\":0xad, \"shy;\":0xad,\r\n  \"sigma;\":0x3c3, \"sigmaf;\":0x3c2,\r\n  \"sigmav;\":0x3c2, \"sim;\":0x223c,\r\n  \"simdot;\":0x2a6a, \"sime;\":0x2243,\r\n  \"simeq;\":0x2243, \"simg;\":0x2a9e,\r\n  \"simgE;\":0x2aa0, \"siml;\":0x2a9d,\r\n  \"simlE;\":0x2a9f, \"simne;\":0x2246,\r\n  \"simplus;\":0x2a24, \"simrarr;\":0x2972,\r\n  \"slarr;\":0x2190, \"smallsetminus;\":0x2216,\r\n  \"smashp;\":0x2a33, \"smeparsl;\":0x29e4,\r\n  \"smid;\":0x2223, \"smile;\":0x2323,\r\n  \"smt;\":0x2aaa, \"smte;\":0x2aac,\r\n  \"smtes;\":[0x2aac,0xfe00], \"softcy;\":0x44c,\r\n  \"sol;\":0x2f, \"solb;\":0x29c4,\r\n  \"solbar;\":0x233f, \"sopf;\":[0xd835,0xdd64],\r\n  \"spades;\":0x2660, \"spadesuit;\":0x2660,\r\n  \"spar;\":0x2225, \"sqcap;\":0x2293,\r\n  \"sqcaps;\":[0x2293,0xfe00], \"sqcup;\":0x2294,\r\n  \"sqcups;\":[0x2294,0xfe00], \"sqsub;\":0x228f,\r\n  \"sqsube;\":0x2291, \"sqsubset;\":0x228f,\r\n  \"sqsubseteq;\":0x2291, \"sqsup;\":0x2290,\r\n  \"sqsupe;\":0x2292, \"sqsupset;\":0x2290,\r\n  \"sqsupseteq;\":0x2292, \"squ;\":0x25a1,\r\n  \"square;\":0x25a1, \"squarf;\":0x25aa,\r\n  \"squf;\":0x25aa, \"srarr;\":0x2192,\r\n  \"sscr;\":[0xd835,0xdcc8], \"ssetmn;\":0x2216,\r\n  \"ssmile;\":0x2323, \"sstarf;\":0x22c6,\r\n  \"star;\":0x2606, \"starf;\":0x2605,\r\n  \"straightepsilon;\":0x3f5, \"straightphi;\":0x3d5,\r\n  \"strns;\":0xaf, \"sub;\":0x2282,\r\n  \"subE;\":0x2ac5, \"subdot;\":0x2abd,\r\n  \"sube;\":0x2286, \"subedot;\":0x2ac3,\r\n  \"submult;\":0x2ac1, \"subnE;\":0x2acb,\r\n  \"subne;\":0x228a, \"subplus;\":0x2abf,\r\n  \"subrarr;\":0x2979, \"subset;\":0x2282,\r\n  \"subseteq;\":0x2286, \"subseteqq;\":0x2ac5,\r\n  \"subsetneq;\":0x228a, \"subsetneqq;\":0x2acb,\r\n  \"subsim;\":0x2ac7, \"subsub;\":0x2ad5,\r\n  \"subsup;\":0x2ad3, \"succ;\":0x227b,\r\n  \"succapprox;\":0x2ab8, \"succcurlyeq;\":0x227d,\r\n  \"succeq;\":0x2ab0, \"succnapprox;\":0x2aba,\r\n  \"succneqq;\":0x2ab6, \"succnsim;\":0x22e9,\r\n  \"succsim;\":0x227f, \"sum;\":0x2211,\r\n  \"sung;\":0x266a, \"sup1\":0xb9,\r\n  \"sup1;\":0xb9, \"sup2\":0xb2,\r\n  \"sup2;\":0xb2, \"sup3\":0xb3,\r\n  \"sup3;\":0xb3, \"sup;\":0x2283,\r\n  \"supE;\":0x2ac6, \"supdot;\":0x2abe,\r\n  \"supdsub;\":0x2ad8, \"supe;\":0x2287,\r\n  \"supedot;\":0x2ac4, \"suphsol;\":0x27c9,\r\n  \"suphsub;\":0x2ad7, \"suplarr;\":0x297b,\r\n  \"supmult;\":0x2ac2, \"supnE;\":0x2acc,\r\n  \"supne;\":0x228b, \"supplus;\":0x2ac0,\r\n  \"supset;\":0x2283, \"supseteq;\":0x2287,\r\n  \"supseteqq;\":0x2ac6, \"supsetneq;\":0x228b,\r\n  \"supsetneqq;\":0x2acc, \"supsim;\":0x2ac8,\r\n  \"supsub;\":0x2ad4, \"supsup;\":0x2ad6,\r\n  \"swArr;\":0x21d9, \"swarhk;\":0x2926,\r\n  \"swarr;\":0x2199, \"swarrow;\":0x2199,\r\n  \"swnwar;\":0x292a, \"szlig\":0xdf,\r\n  \"szlig;\":0xdf, \"target;\":0x2316,\r\n  \"tau;\":0x3c4, \"tbrk;\":0x23b4,\r\n  \"tcaron;\":0x165, \"tcedil;\":0x163,\r\n  \"tcy;\":0x442, \"tdot;\":0x20db,\r\n  \"telrec;\":0x2315, \"tfr;\":[0xd835,0xdd31],\r\n  \"there4;\":0x2234, \"therefore;\":0x2234,\r\n  \"theta;\":0x3b8, \"thetasym;\":0x3d1,\r\n  \"thetav;\":0x3d1, \"thickapprox;\":0x2248,\r\n  \"thicksim;\":0x223c, \"thinsp;\":0x2009,\r\n  \"thkap;\":0x2248, \"thksim;\":0x223c,\r\n  \"thorn\":0xfe, \"thorn;\":0xfe,\r\n  \"tilde;\":0x2dc, \"times\":0xd7,\r\n  \"times;\":0xd7, \"timesb;\":0x22a0,\r\n  \"timesbar;\":0x2a31, \"timesd;\":0x2a30,\r\n  \"tint;\":0x222d, \"toea;\":0x2928,\r\n  \"top;\":0x22a4, \"topbot;\":0x2336,\r\n  \"topcir;\":0x2af1, \"topf;\":[0xd835,0xdd65],\r\n  \"topfork;\":0x2ada, \"tosa;\":0x2929,\r\n  \"tprime;\":0x2034, \"trade;\":0x2122,\r\n  \"triangle;\":0x25b5, \"triangledown;\":0x25bf,\r\n  \"triangleleft;\":0x25c3, \"trianglelefteq;\":0x22b4,\r\n  \"triangleq;\":0x225c, \"triangleright;\":0x25b9,\r\n  \"trianglerighteq;\":0x22b5, \"tridot;\":0x25ec,\r\n  \"trie;\":0x225c, \"triminus;\":0x2a3a,\r\n  \"triplus;\":0x2a39, \"trisb;\":0x29cd,\r\n  \"tritime;\":0x2a3b, \"trpezium;\":0x23e2,\r\n  \"tscr;\":[0xd835,0xdcc9], \"tscy;\":0x446,\r\n  \"tshcy;\":0x45b, \"tstrok;\":0x167,\r\n  \"twixt;\":0x226c, \"twoheadleftarrow;\":0x219e,\r\n  \"twoheadrightarrow;\":0x21a0, \"uArr;\":0x21d1,\r\n  \"uHar;\":0x2963, \"uacute\":0xfa,\r\n  \"uacute;\":0xfa, \"uarr;\":0x2191,\r\n  \"ubrcy;\":0x45e, \"ubreve;\":0x16d,\r\n  \"ucirc\":0xfb, \"ucirc;\":0xfb,\r\n  \"ucy;\":0x443, \"udarr;\":0x21c5,\r\n  \"udblac;\":0x171, \"udhar;\":0x296e,\r\n  \"ufisht;\":0x297e, \"ufr;\":[0xd835,0xdd32],\r\n  \"ugrave\":0xf9, \"ugrave;\":0xf9,\r\n  \"uharl;\":0x21bf, \"uharr;\":0x21be,\r\n  \"uhblk;\":0x2580, \"ulcorn;\":0x231c,\r\n  \"ulcorner;\":0x231c, \"ulcrop;\":0x230f,\r\n  \"ultri;\":0x25f8, \"umacr;\":0x16b,\r\n  \"uml\":0xa8, \"uml;\":0xa8,\r\n  \"uogon;\":0x173, \"uopf;\":[0xd835,0xdd66],\r\n  \"uparrow;\":0x2191, \"updownarrow;\":0x2195,\r\n  \"upharpoonleft;\":0x21bf, \"upharpoonright;\":0x21be,\r\n  \"uplus;\":0x228e, \"upsi;\":0x3c5,\r\n  \"upsih;\":0x3d2, \"upsilon;\":0x3c5,\r\n  \"upuparrows;\":0x21c8, \"urcorn;\":0x231d,\r\n  \"urcorner;\":0x231d, \"urcrop;\":0x230e,\r\n  \"uring;\":0x16f, \"urtri;\":0x25f9,\r\n  \"uscr;\":[0xd835,0xdcca], \"utdot;\":0x22f0,\r\n  \"utilde;\":0x169, \"utri;\":0x25b5,\r\n  \"utrif;\":0x25b4, \"uuarr;\":0x21c8,\r\n  \"uuml\":0xfc, \"uuml;\":0xfc,\r\n  \"uwangle;\":0x29a7, \"vArr;\":0x21d5,\r\n  \"vBar;\":0x2ae8, \"vBarv;\":0x2ae9,\r\n  \"vDash;\":0x22a8, \"vangrt;\":0x299c,\r\n  \"varepsilon;\":0x3f5, \"varkappa;\":0x3f0,\r\n  \"varnothing;\":0x2205, \"varphi;\":0x3d5,\r\n  \"varpi;\":0x3d6, \"varpropto;\":0x221d,\r\n  \"varr;\":0x2195, \"varrho;\":0x3f1,\r\n  \"varsigma;\":0x3c2, \"varsubsetneq;\":[0x228a,0xfe00],\r\n  \"varsubsetneqq;\":[0x2acb,0xfe00], \"varsupsetneq;\":[0x228b,0xfe00],\r\n  \"varsupsetneqq;\":[0x2acc,0xfe00], \"vartheta;\":0x3d1,\r\n  \"vartriangleleft;\":0x22b2, \"vartriangleright;\":0x22b3,\r\n  \"vcy;\":0x432, \"vdash;\":0x22a2,\r\n  \"vee;\":0x2228, \"veebar;\":0x22bb,\r\n  \"veeeq;\":0x225a, \"vellip;\":0x22ee,\r\n  \"verbar;\":0x7c, \"vert;\":0x7c,\r\n  \"vfr;\":[0xd835,0xdd33], \"vltri;\":0x22b2,\r\n  \"vnsub;\":[0x2282,0x20d2], \"vnsup;\":[0x2283,0x20d2],\r\n  \"vopf;\":[0xd835,0xdd67], \"vprop;\":0x221d,\r\n  \"vrtri;\":0x22b3, \"vscr;\":[0xd835,0xdccb],\r\n  \"vsubnE;\":[0x2acb,0xfe00], \"vsubne;\":[0x228a,0xfe00],\r\n  \"vsupnE;\":[0x2acc,0xfe00], \"vsupne;\":[0x228b,0xfe00],\r\n  \"vzigzag;\":0x299a, \"wcirc;\":0x175,\r\n  \"wedbar;\":0x2a5f, \"wedge;\":0x2227,\r\n  \"wedgeq;\":0x2259, \"weierp;\":0x2118,\r\n  \"wfr;\":[0xd835,0xdd34], \"wopf;\":[0xd835,0xdd68],\r\n  \"wp;\":0x2118, \"wr;\":0x2240,\r\n  \"wreath;\":0x2240, \"wscr;\":[0xd835,0xdccc],\r\n  \"xcap;\":0x22c2, \"xcirc;\":0x25ef,\r\n  \"xcup;\":0x22c3, \"xdtri;\":0x25bd,\r\n  \"xfr;\":[0xd835,0xdd35], \"xhArr;\":0x27fa,\r\n  \"xharr;\":0x27f7, \"xi;\":0x3be,\r\n  \"xlArr;\":0x27f8, \"xlarr;\":0x27f5,\r\n  \"xmap;\":0x27fc, \"xnis;\":0x22fb,\r\n  \"xodot;\":0x2a00, \"xopf;\":[0xd835,0xdd69],\r\n  \"xoplus;\":0x2a01, \"xotime;\":0x2a02,\r\n  \"xrArr;\":0x27f9, \"xrarr;\":0x27f6,\r\n  \"xscr;\":[0xd835,0xdccd], \"xsqcup;\":0x2a06,\r\n  \"xuplus;\":0x2a04, \"xutri;\":0x25b3,\r\n  \"xvee;\":0x22c1, \"xwedge;\":0x22c0,\r\n  \"yacute\":0xfd, \"yacute;\":0xfd,\r\n  \"yacy;\":0x44f, \"ycirc;\":0x177,\r\n  \"ycy;\":0x44b, \"yen\":0xa5,\r\n  \"yen;\":0xa5, \"yfr;\":[0xd835,0xdd36],\r\n  \"yicy;\":0x457, \"yopf;\":[0xd835,0xdd6a],\r\n  \"yscr;\":[0xd835,0xdcce], \"yucy;\":0x44e,\r\n  \"yuml\":0xff, \"yuml;\":0xff,\r\n  \"zacute;\":0x17a, \"zcaron;\":0x17e,\r\n  \"zcy;\":0x437, \"zdot;\":0x17c,\r\n  \"zeetrf;\":0x2128, \"zeta;\":0x3b6,\r\n  \"zfr;\":[0xd835,0xdd37], \"zhcy;\":0x436,\r\n  \"zigrarr;\":0x21dd, \"zopf;\":[0xd835,0xdd6b],\r\n  \"zscr;\":[0xd835,0xdccf], \"zwj;\":0x200d,\r\n  \"zwnj;\":0x200c,\r\n};\r\n/*\r\n * This regexp is generated with test/tools/update-entities.js\r\n * It will always match at least one character -- but note that there\r\n * are no entities whose names are a single character long.\r\n */\r\nvar NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\\s\\S]/g;\r\n\r\nvar NAMEDCHARREF_MAXLEN = 32;\r\n\r\n// Regular expression constants used by the tokenizer and parser\r\n\r\n// Note that \\r is included in all of these regexps because it will need\r\n// to be converted to LF by the scanChars() function.\r\nvar DBLQUOTEATTRVAL = /[^\\r\"&\\u0000]+/g;\r\nvar SINGLEQUOTEATTRVAL = /[^\\r'&\\u0000]+/g;\r\nvar UNQUOTEDATTRVAL = /[^\\r\\t\\n\\f &>\\u0000]+/g;\r\nvar TAGNAME = /[^\\r\\t\\n\\f \\/>A-Z\\u0000]+/g;\r\nvar ATTRNAME = /[^\\r\\t\\n\\f \\/=>A-Z\\u0000]+/g;\r\n\r\nvar CDATATEXT = /[^\\]\\r\\u0000\\uffff]*/g;\r\nvar DATATEXT = /[^&<\\r\\u0000\\uffff]*/g;\r\nvar RAWTEXT = /[^<\\r\\u0000\\uffff]*/g;\r\nvar PLAINTEXT = /[^\\r\\u0000\\uffff]*/g;\r\n// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG\r\n// and SIMPLEATTR so that we are guaranteed to always match.  This prevents\r\n// us from scanning past the lastIndex set. (Note that the desired matches\r\n// are always greater than 1 char long, so longest-match will ensure that .\r\n// is not matched unless the desired match fails.)\r\nvar SIMPLETAG = /(?:(\\/)?([a-z]+)>)|[\\s\\S]/g;\r\nvar SIMPLEATTR = /(?:([-a-z]+)[ \\t\\n\\f]*=[ \\t\\n\\f]*('[^'&\\r\\u0000]*'|\"[^\"&\\r\\u0000]*\"|[^\\t\\n\\r\\f \"&'\\u0000>][^&> \\t\\n\\r\\f\\u0000]*[ \\t\\n\\f]))|[\\s\\S]/g;\r\n\r\nvar NONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/;\r\nvar ALLNONWS = /[^\\x09\\x0A\\x0C\\x0D\\x20]/g; // like above, with g flag\r\nvar NONWSNONNUL = /[^\\x00\\x09\\x0A\\x0C\\x0D\\x20]/; // don't allow NUL either\r\nvar LEADINGWS = /^[\\x09\\x0A\\x0C\\x0D\\x20]+/;\r\nvar NULCHARS = /\\x00/g;\r\n\r\n/***\r\n * These are utility functions that don't use any of the parser's\r\n * internal state.\r\n */\r\nfunction buf2str(buf) {\r\n  var CHUNKSIZE=16384;\r\n  if (buf.length < CHUNKSIZE) {\r\n    return String.fromCharCode.apply(String, buf);\r\n  }\r\n  // special case for large strings, to avoid busting the stack.\r\n  var result = '';\r\n  for (var i = 0; i < buf.length; i += CHUNKSIZE) {\r\n    result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE));\r\n  }\r\n  return result;\r\n}\r\n\r\nfunction str2buf(s) {\r\n  var result = [];\r\n  for (var i=0; i<s.length; i++) {\r\n    result[i] = s.charCodeAt(i);\r\n  }\r\n  return result;\r\n}\r\n\r\n// Determine whether the element is a member of the set.\r\n// The set is an object that maps namespaces to objects. The objects\r\n// then map local tagnames to the value true if that tag is part of the set\r\nfunction isA(elt, set) {\r\n  if (typeof set === 'string') {\r\n    // convenience case for testing a particular HTML element\r\n    return elt.namespaceURI === NAMESPACE.HTML &&\r\n      elt.localName === set;\r\n  }\r\n  var tagnames = set[elt.namespaceURI];\r\n  return tagnames && tagnames[elt.localName];\r\n}\r\n\r\nfunction isMathmlTextIntegrationPoint(n) {\r\n  return isA(n, mathmlTextIntegrationPointSet);\r\n}\r\n\r\nfunction isHTMLIntegrationPoint(n) {\r\n  if (isA(n, htmlIntegrationPointSet)) return true;\r\n  if (n.namespaceURI === NAMESPACE.MATHML &&\r\n    n.localName === \"annotation-xml\") {\r\n    var encoding = n.getAttribute(\"encoding\");\r\n    if (encoding) encoding = encoding.toLowerCase();\r\n    if (encoding === \"text/html\" ||\r\n      encoding === \"application/xhtml+xml\")\r\n      return true;\r\n  }\r\n  return false;\r\n}\r\n\r\nfunction adjustSVGTagName(name) {\r\n  if (name in svgTagNameAdjustments)\r\n    return svgTagNameAdjustments[name];\r\n  else\r\n    return name;\r\n}\r\n\r\nfunction adjustSVGAttributes(attrs) {\r\n  for(var i = 0, n = attrs.length; i < n; i++) {\r\n    if (attrs[i][0] in svgAttrAdjustments) {\r\n      attrs[i][0] = svgAttrAdjustments[attrs[i][0]];\r\n    }\r\n  }\r\n}\r\n\r\nfunction adjustMathMLAttributes(attrs) {\r\n  for(var i = 0, n = attrs.length; i < n; i++) {\r\n    if (attrs[i][0] === \"definitionurl\") {\r\n      attrs[i][0] = \"definitionURL\";\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nfunction adjustForeignAttributes(attrs) {\r\n  for(var i = 0, n = attrs.length; i < n; i++) {\r\n    if (attrs[i][0] in foreignAttributes) {\r\n      // Attributes with namespaces get a 3rd element:\r\n      // [Qname, value, namespace]\r\n      attrs[i].push(foreignAttributes[attrs[i][0]]);\r\n    }\r\n  }\r\n}\r\n\r\n// For each attribute in attrs, if elt doesn't have an attribute\r\n// by that name, add the attribute to elt\r\n// XXX: I'm ignoring namespaces for now\r\nfunction transferAttributes(attrs, elt) {\r\n  for(var i = 0, n = attrs.length; i < n; i++) {\r\n    var name = attrs[i][0], value = attrs[i][1];\r\n    if (elt.hasAttribute(name)) continue;\r\n    elt._setAttribute(name, value);\r\n  }\r\n}\r\n\r\n/***\r\n * The ElementStack class\r\n */\r\nHTMLParser.ElementStack = function ElementStack() {\r\n  this.elements = [];\r\n  this.top = null; // stack.top is the \"current node\" in the spec\r\n};\r\n\r\n/*\r\n// This is for debugging only\r\nHTMLParser.ElementStack.prototype.toString = function(e) {\r\n  return \"STACK: \" +\r\n  this.elements.map(function(e) {return e.localName;}).join(\"-\");\r\n}\r\n*/\r\n\r\nHTMLParser.ElementStack.prototype.push = function(e) {\r\n  this.elements.push(e);\r\n  this.top = e;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.pop = function(e) {\r\n  this.elements.pop();\r\n  this.top = this.elements[this.elements.length-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the first\r\n// element with the specified (HTML) tagname\r\nHTMLParser.ElementStack.prototype.popTag = function(tag) {\r\n  for(var i = this.elements.length-1; i > 0; i--) {\r\n    var e = this.elements[i];\r\n    if (isA(e, tag)) break;\r\n  }\r\n  this.elements.length = i;\r\n  this.top = this.elements[i-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the first\r\n// element that is an instance of the specified type\r\nHTMLParser.ElementStack.prototype.popElementType = function(type) {\r\n  for(var i = this.elements.length-1; i > 0; i--) {\r\n    if (this.elements[i] instanceof type) break;\r\n  }\r\n  this.elements.length = i;\r\n  this.top = this.elements[i-1];\r\n};\r\n\r\n// Pop elements off the stack up to and including the element e.\r\n// Note that this is very different from removeElement()\r\n// This requires that e is on the stack.\r\nHTMLParser.ElementStack.prototype.popElement = function(e) {\r\n  for(var i = this.elements.length-1; i > 0; i--) {\r\n    if (this.elements[i] === e) break;\r\n  }\r\n  this.elements.length = i;\r\n  this.top = this.elements[i-1];\r\n};\r\n\r\n// Remove a specific element from the stack.\r\n// Do nothing if the element is not on the stack\r\nHTMLParser.ElementStack.prototype.removeElement = function(e) {\r\n  if (this.top === e) this.pop();\r\n  else {\r\n    var idx = this.elements.lastIndexOf(e);\r\n    if (idx !== -1)\r\n      this.elements.splice(idx, 1);\r\n  }\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.clearToContext = function(set) {\r\n  // Note that we don't loop to 0. Never pop the <html> elt off.\r\n  for(var i = this.elements.length-1; i > 0; i--) {\r\n    if (isA(this.elements[i], set)) break;\r\n  }\r\n  this.elements.length = i+1;\r\n  this.top = this.elements[i];\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.contains = function(tag) {\r\n  return this.inSpecificScope(tag, Object.create(null));\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) {\r\n  for(var i = this.elements.length-1; i >= 0; i--) {\r\n    var elt = this.elements[i];\r\n    if (isA(elt, tag)) return true;\r\n    if (isA(elt, set)) return false;\r\n  }\r\n  return false;\r\n};\r\n\r\n// Like the above, but for a specific element, not a tagname\r\nHTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) {\r\n  for(var i = this.elements.length-1; i >= 0; i--) {\r\n    var elt = this.elements[i];\r\n    if (elt === target) return true;\r\n    if (isA(elt, set)) return false;\r\n  }\r\n  return false;\r\n};\r\n\r\n// Like the above, but for an element interface, not a tagname\r\nHTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) {\r\n  for(var i = this.elements.length-1; i >= 0; i--) {\r\n    var elt = this.elements[i];\r\n    if (elt instanceof target) return true;\r\n    if (isA(elt, set)) return false;\r\n  }\r\n  return false;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inScope = function(tag) {\r\n  return this.inSpecificScope(tag, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.elementInScope = function(e) {\r\n  return this.elementInSpecificScope(e, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.elementTypeInScope = function(type) {\r\n  return this.elementTypeInSpecificScope(type, inScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inButtonScope = function(tag) {\r\n  return this.inSpecificScope(tag, inButtonScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inListItemScope = function(tag) {\r\n  return this.inSpecificScope(tag, inListItemScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inTableScope = function(tag) {\r\n  return this.inSpecificScope(tag, inTableScopeSet);\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.inSelectScope = function(tag) {\r\n  // Can't implement this one with inSpecificScope, since it involves\r\n  // a set defined by inverting another set. So implement manually.\r\n  for(var i = this.elements.length-1; i >= 0; i--) {\r\n    var elt = this.elements[i];\r\n    if (elt.namespaceURI !== NAMESPACE.HTML) return false;\r\n    var localname = elt.localName;\r\n    if (localname === tag) return true;\r\n    if (localname !== \"optgroup\" && localname !== \"option\")\r\n      return false;\r\n  }\r\n  return false;\r\n};\r\n\r\nHTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) {\r\n  var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet;\r\n  for(var i = this.elements.length-1; i >= 0; i--) {\r\n    var e = this.elements[i];\r\n    if (butnot && isA(e, butnot)) break;\r\n    if (!isA(this.elements[i], endTagSet)) break;\r\n  }\r\n\r\n  this.elements.length = i+1;\r\n  this.top = this.elements[i];\r\n};\r\n\r\n/***\r\n * The ActiveFormattingElements class\r\n */\r\nHTMLParser.ActiveFormattingElements = function AFE() {\r\n  this.list = []; // elements\r\n  this.attrs = []; // attribute tokens for cloning\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: \"|\" };\r\n\r\n/*\r\n// For debugging\r\nHTMLParser.ActiveFormattingElements.prototype.toString = function() {\r\n  return \"AFE: \" +\r\n  this.list.map(function(e) { return e.localName; }).join(\"-\");\r\n}\r\n*/\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.insertMarker = function() {\r\n  this.list.push(this.MARKER);\r\n  this.attrs.push(this.MARKER);\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) {\r\n  // Scan backwards: if there are already 3 copies of this element\r\n  // before we encounter a marker, then drop the last one\r\n  var count = 0;\r\n  for(var i = this.list.length-1; i >= 0; i--) {\r\n    if (this.list[i] === this.MARKER) break;\r\n    // equal() is defined below\r\n    if (equal(elt, this.list[i], this.attrs[i])) {\r\n      count++;\r\n      if (count === 3) {\r\n        this.list.splice(i, 1);\r\n        this.attrs.splice(i, 1);\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  // Now push the element onto the list\r\n  this.list.push(elt);\r\n\r\n  // Copy the attributes and push those on, too\r\n  var attrcopy = [];\r\n  for(var ii = 0; ii < attrs.length; ii++) {\r\n    attrcopy[ii] = attrs[ii];\r\n  }\r\n\r\n  this.attrs.push(attrcopy);\r\n\r\n  // This function defines equality of two elements for the purposes\r\n  // of the AFE list.  Note that it compares the new elements\r\n  // attributes to the saved array of attributes associated with\r\n  // the old element because a script could have changed the\r\n  // old element's set of attributes\r\n  function equal(newelt, oldelt, oldattrs) {\r\n    if (newelt.localName !== oldelt.localName) return false;\r\n    if (newelt._numattrs !== oldattrs.length) return false;\r\n    for(var i = 0, n = oldattrs.length; i < n; i++) {\r\n      var oldname = oldattrs[i][0];\r\n      var oldval = oldattrs[i][1];\r\n      if (!newelt.hasAttribute(oldname)) return false;\r\n      if (newelt.getAttribute(oldname) !== oldval) return false;\r\n    }\r\n    return true;\r\n  }\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() {\r\n  for(var i = this.list.length-1; i >= 0; i--) {\r\n    if (this.list[i] === this.MARKER) break;\r\n  }\r\n  if (i < 0) i = 0;\r\n  this.list.length = i;\r\n  this.attrs.length = i;\r\n};\r\n\r\n// Find and return the last element with the specified tag between the\r\n// end of the list and the last marker on the list.\r\n// Used when parsing <a> in_body_mode()\r\nHTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) {\r\n  for(var i = this.list.length-1; i >= 0; i--) {\r\n    var elt = this.list[i];\r\n    if (elt === this.MARKER) break;\r\n    if (elt.localName === tag) return elt;\r\n  }\r\n  return null;\r\n};\r\n\r\nHTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) {\r\n  return this.list.lastIndexOf(e);\r\n};\r\n\r\n// Find the element e in the list and remove it\r\n// Used when parsing <a> in_body()\r\nHTMLParser.ActiveFormattingElements.prototype.remove = function(e) {\r\n  var idx = this.list.lastIndexOf(e);\r\n  if (idx !== -1) {\r\n    this.list.splice(idx, 1);\r\n    this.attrs.splice(idx, 1);\r\n  }\r\n};\r\n\r\n// Find element a in the list and replace it with element b\r\n// XXX: Do I need to handle attributes here?\r\nHTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) {\r\n  var idx = this.list.lastIndexOf(a);\r\n  if (idx !== -1) {\r\n    this.list[idx] = b;\r\n    this.attrs[idx] = attrs;\r\n  }\r\n};\r\n\r\n// Find a in the list and insert b after it\r\n// This is only used for insert a bookmark object, so the\r\n// attrs array doesn't really matter\r\nHTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) {\r\n  var idx = this.list.lastIndexOf(a);\r\n  if (idx !== -1) {\r\n    this.list.splice(idx, 0, b);\r\n    this.attrs.splice(idx, 0, b);\r\n  }\r\n};\r\n\r\n\r\n\r\n\r\n/***\r\n * This is the parser factory function. It is the return value of\r\n * the outer closure that it is defined within.  Most of the parser\r\n * implementation details are inside this function.\r\n */\r\nfunction HTMLParser(address, fragmentContext, options) {\r\n  /***\r\n   * These are the parser's state variables\r\n   */\r\n  // Scanner state\r\n  var chars = null;\r\n  var numchars = 0; // Length of chars\r\n  var nextchar = 0; // Index of next char\r\n  var input_complete = false; // Becomes true when end() called.\r\n  var scanner_skip_newline = false; // If previous char was CR\r\n  var reentrant_invocations = 0;\r\n  var saved_scanner_state = [];\r\n  var leftovers = \"\";\r\n  var first_batch = true;\r\n  var paused = 0; // Becomes non-zero while loading scripts\r\n\r\n\r\n  // Tokenizer state\r\n  var tokenizer = data_state; // Current tokenizer state\r\n  var return_state;\r\n  var character_reference_code;\r\n  var tagnamebuf = \"\";\r\n  var lasttagname = \"\"; // holds the target end tag for text states\r\n  var tempbuf = [];\r\n  var attrnamebuf = \"\";\r\n  var attrvaluebuf = \"\";\r\n  var commentbuf = [];\r\n  var doctypenamebuf = [];\r\n  var doctypepublicbuf = [];\r\n  var doctypesystembuf = [];\r\n  var attributes = [];\r\n  var is_end_tag = false;\r\n\r\n  // Tree builder state\r\n  var parser = initial_mode; // Current insertion mode\r\n  var originalInsertionMode = null; // A saved insertion mode\r\n  var templateInsertionModes = []; // Stack of template insertion modes.\r\n  var stack = new HTMLParser.ElementStack(); // Stack of open elements\r\n  var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags\r\n  var fragment = (fragmentContext!==undefined); // For innerHTML, etc.\r\n  var head_element_pointer = null;\r\n  var form_element_pointer = null;\r\n  var scripting_enabled = true;\r\n  if (fragmentContext) {\r\n\tscripting_enabled = fragmentContext.ownerDocument._scripting_enabled;\r\n  }\r\n  if (options && options.scripting_enabled === false)\r\n    scripting_enabled = false;\r\n  var frameset_ok = true;\r\n  var force_quirks = false;\r\n  var pending_table_text;\r\n  var text_integration_mode; // XXX a spec bug workaround?\r\n\r\n  // A single run of characters, buffered up to be sent to\r\n  // the parser as a single string.\r\n  var textrun = [];\r\n  var textIncludesNUL = false;\r\n  var ignore_linefeed = false;\r\n\r\n  /***\r\n   * This is the parser object that will be the return value of this\r\n   * factory function, which is some 5000 lines below.\r\n   * Note that the variable \"parser\" is the current state of the\r\n   * parser's state machine.  This variable \"htmlparser\" is the\r\n   * return value and defines the public API of the parser\r\n   */\r\n  var htmlparser = {\r\n    document: function() {\r\n      return doc;\r\n    },\r\n\r\n    // Convenience function for internal use. Can only be called once,\r\n    // as it removes the nodes from `doc` to add them to fragment.\r\n    _asDocumentFragment: function() {\r\n      var frag = doc.createDocumentFragment();\r\n      var root = doc.firstChild;\r\n      while(root.hasChildNodes()) {\r\n        frag.appendChild(root.firstChild);\r\n      }\r\n      return frag;\r\n    },\r\n\r\n    // Internal function used from HTMLScriptElement to pause the\r\n    // parser while a script is being loaded from the network\r\n    pause: function() {\r\n      // print(\"pausing parser\");\r\n      paused++;\r\n    },\r\n\r\n    // Called when a script finishes loading\r\n    resume: function() {\r\n      // print(\"resuming parser\");\r\n      paused--;\r\n      // XXX: added this to force a resumption.\r\n      // Is this the right thing to do?\r\n      this.parse(\"\");\r\n    },\r\n\r\n    // Parse the HTML text s.\r\n    // The second argument should be true if there is no more\r\n    // text to be parsed, and should be false or omitted otherwise.\r\n    // The second argument must not be set for recursive invocations\r\n    // from document.write()\r\n    parse: function(s, end, shouldPauseFunc) {\r\n      var moreToDo;\r\n\r\n      // If we're paused, remember the text to parse, but\r\n      // don't parse it now.\r\n      // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.)\r\n      if (paused > 0) {\r\n        leftovers += s;\r\n        return true; // more to do\r\n      }\r\n\r\n\r\n      if (reentrant_invocations === 0) {\r\n        // A normal, top-level invocation\r\n        if (leftovers) {\r\n          s = leftovers + s;\r\n          leftovers = \"\";\r\n        }\r\n\r\n        // Add a special marker character to the end of\r\n        // the buffer.  If the scanner is at the end of\r\n        // the buffer and input_complete is set, then this\r\n        // character will transform into an EOF token.\r\n        // Having an actual character that represents EOF\r\n        // in the character buffer makes lookahead regexp\r\n        // matching work more easily, and this is\r\n        // important for character references.\r\n        if (end) {\r\n          s += \"\\uFFFF\";\r\n          input_complete = true; // Makes scanChars() send EOF\r\n        }\r\n\r\n        chars = s;\r\n        numchars = s.length;\r\n        nextchar = 0;\r\n\r\n        if (first_batch) {\r\n          // We skip a leading Byte Order Mark (\\uFEFF)\r\n          // on first batch of text we're given\r\n          first_batch = false;\r\n          if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1;\r\n        }\r\n\r\n        reentrant_invocations++;\r\n        moreToDo = scanChars(shouldPauseFunc);\r\n        leftovers = chars.substring(nextchar, numchars);\r\n        reentrant_invocations--;\r\n      }\r\n      else {\r\n        // This is the re-entrant case, which we have to\r\n        // handle a little differently.\r\n        reentrant_invocations++;\r\n\r\n        // Save current scanner state\r\n        saved_scanner_state.push(chars, numchars, nextchar);\r\n\r\n        // Set new scanner state\r\n        chars = s;\r\n        numchars = s.length;\r\n        nextchar = 0;\r\n\r\n        // Now scan as many of these new chars as we can\r\n        scanChars();\r\n        moreToDo = false;\r\n\r\n        leftovers = chars.substring(nextchar, numchars);\r\n\r\n        // restore old scanner state\r\n        nextchar = saved_scanner_state.pop();\r\n        numchars = saved_scanner_state.pop();\r\n        chars = saved_scanner_state.pop();\r\n\r\n        // If there were leftover chars from this invocation\r\n        // insert them into the pending invocation's buffer\r\n        // and trim already processed chars at the same time\r\n        if (leftovers) {\r\n          chars = leftovers + chars.substring(nextchar);\r\n          numchars = chars.length;\r\n          nextchar = 0;\r\n          leftovers = \"\";\r\n        }\r\n\r\n        // Decrement the counter\r\n        reentrant_invocations--;\r\n      }\r\n      return moreToDo;\r\n    }\r\n  };\r\n\r\n\r\n  // This is the document we'll be building up\r\n  var doc = new Document(true, address);\r\n\r\n  // The document needs to know about the parser, for document.write().\r\n  // This _parser property will be deleted when we're done parsing.\r\n  doc._parser = htmlparser;\r\n\r\n  // XXX I think that any document we use this parser on should support\r\n  // scripts. But I may need to configure that through a parser parameter\r\n  // Only documents with windows (\"browsing contexts\" to be precise)\r\n  // allow scripting.\r\n  doc._scripting_enabled = scripting_enabled;\r\n\r\n\r\n  /***\r\n   * The actual code of the HTMLParser() factory function begins here.\r\n   */\r\n\r\n  if (fragmentContext) { // for innerHTML parsing\r\n    if (fragmentContext.ownerDocument._quirks)\r\n      doc._quirks = true;\r\n    if (fragmentContext.ownerDocument._limitedQuirks)\r\n      doc._limitedQuirks = true;\r\n\r\n    // Set the initial tokenizer state\r\n    if (fragmentContext.namespaceURI === NAMESPACE.HTML) {\r\n      switch(fragmentContext.localName) {\r\n      case \"title\":\r\n      case \"textarea\":\r\n        tokenizer = rcdata_state;\r\n        break;\r\n      case \"style\":\r\n      case \"xmp\":\r\n      case \"iframe\":\r\n      case \"noembed\":\r\n      case \"noframes\":\r\n      case \"script\":\r\n      case \"plaintext\":\r\n        tokenizer = plaintext_state;\r\n        break;\r\n      }\r\n    }\r\n\r\n    var root = doc.createElement(\"html\");\r\n    doc._appendChild(root);\r\n    stack.push(root);\r\n    if (fragmentContext instanceof impl.HTMLTemplateElement) {\r\n      templateInsertionModes.push(in_template_mode);\r\n    }\r\n    resetInsertionMode();\r\n\r\n    for(var e = fragmentContext; e !== null; e = e.parentElement) {\r\n      if (e instanceof impl.HTMLFormElement) {\r\n        form_element_pointer = e;\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  /***\r\n   * Scanner functions\r\n   */\r\n  // Loop through the characters in chars, and pass them one at a time\r\n  // to the tokenizer FSM. Return when no more characters can be processed\r\n  // (This may leave 1 or more characters in the buffer: like a CR\r\n  // waiting to see if the next char is LF, or for states that require\r\n  // lookahead...)\r\n  function scanChars(shouldPauseFunc) {\r\n    var codepoint, s, pattern, eof;\r\n\r\n    while(nextchar < numchars) {\r\n\r\n      // If we just tokenized a </script> tag, then the paused flag\r\n      // may have been set to tell us to stop tokenizing while\r\n      // the script is loading\r\n      if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) {\r\n        return true;\r\n      }\r\n\r\n\r\n      switch(typeof tokenizer.lookahead) {\r\n      case 'undefined':\r\n        codepoint = chars.charCodeAt(nextchar++);\r\n        if (scanner_skip_newline) {\r\n          scanner_skip_newline = false;\r\n          if (codepoint === 0x000A) {\r\n            nextchar++;\r\n            continue;\r\n          }\r\n        }\r\n        switch(codepoint) {\r\n        case 0x000D:\r\n          // CR always turns into LF, but if the next character\r\n          // is LF, then that second LF is skipped.\r\n          if (nextchar < numchars) {\r\n            if (chars.charCodeAt(nextchar) === 0x000A)\r\n              nextchar++;\r\n          }\r\n          else {\r\n            // We don't know the next char right now, so we\r\n            // can't check if it is a LF.  So set a flag\r\n            scanner_skip_newline = true;\r\n          }\r\n\r\n          // In either case, emit a LF\r\n          tokenizer(0x000A);\r\n\r\n          break;\r\n        case 0xFFFF:\r\n          if (input_complete && nextchar === numchars) {\r\n            tokenizer(EOF); // codepoint will be 0xFFFF here\r\n            break;\r\n          }\r\n          /* falls through */\r\n        default:\r\n          tokenizer(codepoint);\r\n          break;\r\n        }\r\n        break;\r\n\r\n      case 'number':\r\n        codepoint = chars.charCodeAt(nextchar);\r\n\r\n        // The only tokenizer states that require fixed lookahead\r\n        // only consume alphanum characters, so we don't have\r\n        // to worry about CR and LF in this case\r\n\r\n        // tokenizer wants n chars of lookahead\r\n        var n = tokenizer.lookahead;\r\n        var needsString = true;\r\n        if (n < 0) {\r\n          needsString = false;\r\n          n = -n;\r\n        }\r\n\r\n        if (n < numchars - nextchar) {\r\n          // If we can look ahead that far\r\n          s = needsString ? chars.substring(nextchar, nextchar+n) : null;\r\n          eof = false;\r\n        }\r\n        else { // if we don't have that many characters\r\n          if (input_complete) { // If no more are coming\r\n            // Just return what we have\r\n            s = needsString ? chars.substring(nextchar, numchars) : null;\r\n            eof = true;\r\n            if (codepoint === 0xFFFF && nextchar === numchars-1)\r\n              codepoint = EOF;\r\n          }\r\n          else {\r\n            // Return now and wait for more chars later\r\n            return true;\r\n          }\r\n        }\r\n        tokenizer(codepoint, s, eof);\r\n        break;\r\n      case 'string':\r\n        codepoint = chars.charCodeAt(nextchar);\r\n\r\n        // tokenizer wants characters up to a matching string\r\n        pattern = tokenizer.lookahead;\r\n        var pos = chars.indexOf(pattern, nextchar);\r\n        if (pos !== -1) {\r\n          s = chars.substring(nextchar, pos + pattern.length);\r\n          eof = false;\r\n        }\r\n        else {  // No match\r\n          // If more characters coming, wait for them\r\n          if (!input_complete) return true;\r\n\r\n          // Otherwise, we've got to return what we've got\r\n          s = chars.substring(nextchar, numchars);\r\n          if (codepoint === 0xFFFF && nextchar === numchars-1)\r\n            codepoint = EOF;\r\n          eof = true;\r\n        }\r\n\r\n        // The tokenizer states that require this kind of\r\n        // lookahead have to be careful to handle CR characters\r\n        // correctly\r\n        tokenizer(codepoint, s, eof);\r\n        break;\r\n      }\r\n    }\r\n    return false; // no more characters to scan!\r\n  }\r\n\r\n\r\n  /***\r\n   * Tokenizer utility functions\r\n   */\r\n  function addAttribute(name,value) {\r\n    // Make sure there isn't already an attribute with this name\r\n    // If there is, ignore this one.\r\n    for(var i = 0; i < attributes.length; i++) {\r\n      if (attributes[i][0] === name) return;\r\n    }\r\n\r\n    if (value !== undefined) {\r\n      attributes.push([name, value]);\r\n    }\r\n    else {\r\n      attributes.push([name]);\r\n    }\r\n  }\r\n\r\n  // Shortcut for simple attributes\r\n  function handleSimpleAttribute() {\r\n    SIMPLEATTR.lastIndex = nextchar-1;\r\n    var matched = SIMPLEATTR.exec(chars);\r\n    if (!matched) throw new Error(\"should never happen\");\r\n    var name = matched[1];\r\n    if (!name) return false;\r\n    var value = matched[2];\r\n    var len = value.length;\r\n    switch(value[0]) {\r\n    case '\"':\r\n    case \"'\":\r\n      value = value.substring(1, len-1);\r\n      nextchar += (matched[0].length-1);\r\n      tokenizer = after_attribute_value_quoted_state;\r\n      break;\r\n    default:\r\n      tokenizer = before_attribute_name_state;\r\n      nextchar += (matched[0].length-1);\r\n      value = value.substring(0, len-1);\r\n      break;\r\n    }\r\n\r\n    // Make sure there isn't already an attribute with this name\r\n    // If there is, ignore this one.\r\n    for(var i = 0; i < attributes.length; i++) {\r\n      if (attributes[i][0] === name) return true;\r\n    }\r\n\r\n    attributes.push([name, value]);\r\n    return true;\r\n  }\r\n\r\n  function beginTagName() {\r\n    is_end_tag = false;\r\n    tagnamebuf = \"\";\r\n    attributes.length = 0;\r\n  }\r\n  function beginEndTagName() {\r\n    is_end_tag = true;\r\n    tagnamebuf = \"\";\r\n    attributes.length = 0;\r\n  }\r\n\r\n  function beginTempBuf() { tempbuf.length = 0; }\r\n  function beginAttrName() { attrnamebuf = \"\"; }\r\n  function beginAttrValue() { attrvaluebuf = \"\"; }\r\n  function beginComment() { commentbuf.length = 0; }\r\n  function beginDoctype() {\r\n    doctypenamebuf.length = 0;\r\n    doctypepublicbuf = null;\r\n    doctypesystembuf = null;\r\n  }\r\n  function beginDoctypePublicId() { doctypepublicbuf = []; }\r\n  function beginDoctypeSystemId() { doctypesystembuf = []; }\r\n  function forcequirks() { force_quirks = true; }\r\n  function cdataAllowed() {\r\n    return stack.top &&\r\n      stack.top.namespaceURI !== \"http://www.w3.org/1999/xhtml\";\r\n  }\r\n\r\n  // Return true if the codepoints in the specified buffer match the\r\n  // characters of lasttagname\r\n  function appropriateEndTag(buf) {\r\n    return lasttagname === buf;\r\n  }\r\n\r\n  function flushText() {\r\n    if (textrun.length > 0) {\r\n      var s = buf2str(textrun);\r\n      textrun.length = 0;\r\n\r\n      if (ignore_linefeed) {\r\n        ignore_linefeed = false;\r\n        if (s[0] === \"\\n\") s = s.substring(1);\r\n        if (s.length === 0) return;\r\n      }\r\n\r\n      insertToken(TEXT, s);\r\n      textIncludesNUL = false;\r\n    }\r\n    ignore_linefeed = false;\r\n  }\r\n\r\n  // Consume chars matched by the pattern and return them as a string. Starts\r\n  // matching at the current position, so users should drop the current char\r\n  // otherwise.\r\n  function getMatchingChars(pattern) {\r\n    pattern.lastIndex = nextchar - 1;\r\n    var match = pattern.exec(chars);\r\n    if (match && match.index === nextchar - 1) {\r\n      match = match[0];\r\n      nextchar += match.length - 1;\r\n      /* Careful!  Make sure we haven't matched the EOF character! */\r\n      if (input_complete && nextchar === numchars) {\r\n        // Oops, backup one.\r\n        match = match.slice(0, -1);\r\n        nextchar--;\r\n      }\r\n      return match;\r\n    } else {\r\n      throw new Error(\"should never happen\");\r\n    }\r\n  }\r\n\r\n  // emit a string of chars that match a regexp\r\n  // Returns false if no chars matched.\r\n  function emitCharsWhile(pattern) {\r\n    pattern.lastIndex = nextchar-1;\r\n    var match = pattern.exec(chars)[0];\r\n    if (!match) return false;\r\n    emitCharString(match);\r\n    nextchar += match.length - 1;\r\n    return true;\r\n  }\r\n\r\n  // This is used by CDATA sections\r\n  function emitCharString(s) {\r\n    if (textrun.length > 0) flushText();\r\n\r\n    if (ignore_linefeed) {\r\n      ignore_linefeed = false;\r\n      if (s[0] === \"\\n\") s = s.substring(1);\r\n      if (s.length === 0) return;\r\n    }\r\n\r\n    insertToken(TEXT, s);\r\n  }\r\n\r\n  function emitTag() {\r\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf);\r\n    else {\r\n      // Remember the last open tag we emitted\r\n      var tagname = tagnamebuf;\r\n      tagnamebuf = \"\";\r\n      lasttagname = tagname;\r\n      insertToken(TAG, tagname, attributes);\r\n    }\r\n  }\r\n\r\n\r\n  // A shortcut: look ahead and if this is a open or close tag\r\n  // in lowercase with no spaces and no attributes, just emit it now.\r\n  function emitSimpleTag() {\r\n    if (nextchar === numchars) { return false; /* not even 1 char left */ }\r\n    SIMPLETAG.lastIndex = nextchar;\r\n    var matched = SIMPLETAG.exec(chars);\r\n    if (!matched) throw new Error(\"should never happen\");\r\n    var tagname = matched[2];\r\n    if (!tagname) return false;\r\n    var endtag = matched[1];\r\n    if (endtag) {\r\n      nextchar += (tagname.length+2);\r\n      insertToken(ENDTAG, tagname);\r\n    }\r\n    else {\r\n      nextchar += (tagname.length+1);\r\n      lasttagname = tagname;\r\n      insertToken(TAG, tagname, NOATTRS);\r\n    }\r\n    return true;\r\n  }\r\n\r\n  function emitSelfClosingTag() {\r\n    if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true);\r\n    else {\r\n      insertToken(TAG, tagnamebuf, attributes, true);\r\n    }\r\n  }\r\n\r\n  function emitDoctype() {\r\n    insertToken(DOCTYPE,\r\n          buf2str(doctypenamebuf),\r\n          doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined,\r\n          doctypesystembuf ? buf2str(doctypesystembuf) : undefined);\r\n  }\r\n\r\n  function emitEOF() {\r\n    flushText();\r\n    parser(EOF); // EOF never goes to insertForeignContent()\r\n    doc.modclock = 1; // Start tracking modifications\r\n  }\r\n\r\n  // Insert a token, either using the current parser insertion mode\r\n  // (for HTML stuff) or using the insertForeignToken() method.\r\n  var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) {\r\n    flushText();\r\n    var current = stack.top;\r\n\r\n    if (!current || current.namespaceURI === NAMESPACE.HTML) {\r\n      // This is the common case\r\n      parser(t, value, arg3, arg4);\r\n    }\r\n    else {\r\n      // Otherwise we may need to insert this token as foreign content\r\n      if (t !== TAG && t !== TEXT) {\r\n        insertForeignToken(t, value, arg3, arg4);\r\n      }\r\n      else {\r\n        // But in some cases we treat it as regular content\r\n        if ((isMathmlTextIntegrationPoint(current) &&\r\n           (t === TEXT ||\r\n            (t === TAG &&\r\n             value !== \"mglyph\" && value !== \"malignmark\"))) ||\r\n          (t === TAG &&\r\n           value === \"svg\" &&\r\n           current.namespaceURI === NAMESPACE.MATHML &&\r\n           current.localName === \"annotation-xml\") ||\r\n          isHTMLIntegrationPoint(current)) {\r\n\r\n          // XXX: the text_integration_mode stuff is an\r\n          // attempted bug workaround of mine\r\n          text_integration_mode = true;\r\n          parser(t, value, arg3, arg4);\r\n          text_integration_mode = false;\r\n        }\r\n        // Otherwise it is foreign content\r\n        else {\r\n          insertForeignToken(t, value, arg3, arg4);\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n\r\n  /***\r\n   * Tree building utility functions\r\n   */\r\n  function insertComment(data) {\r\n    var parent = stack.top;\r\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\r\n      fosterParent(function(doc) { return doc.createComment(data); });\r\n    } else {\r\n      // \"If the adjusted insertion location is inside a template element,\r\n      // let it instead be inside the template element's template contents\"\r\n      if (parent instanceof impl.HTMLTemplateElement) {\r\n        parent = parent.content;\r\n      }\r\n      parent._appendChild(parent.ownerDocument.createComment(data));\r\n    }\r\n  }\r\n\r\n  function insertText(s) {\r\n    var parent = stack.top;\r\n    if (foster_parent_mode && isA(parent, tablesectionrowSet)) {\r\n      fosterParent(function(doc) { return doc.createTextNode(s); });\r\n    } else {\r\n      // \"If the adjusted insertion location is inside a template element,\r\n      // let it instead be inside the template element's template contents\"\r\n      if (parent instanceof impl.HTMLTemplateElement) {\r\n        parent = parent.content;\r\n      }\r\n      // \"If there is a Text node immediately before the adjusted insertion\r\n      // location, then append data to that Text node's data.\"\r\n      var lastChild = parent.lastChild;\r\n      if (lastChild && lastChild.nodeType === Node.TEXT_NODE) {\r\n        lastChild.appendData(s);\r\n      } else {\r\n        parent._appendChild(parent.ownerDocument.createTextNode(s));\r\n      }\r\n    }\r\n  }\r\n\r\n  function createHTMLElt(doc, name, attrs) {\r\n    // Create the element this way, rather than with\r\n    // doc.createElement because createElement() does error\r\n    // checking on the element name that we need to avoid here.\r\n    var elt = html.createElement(doc, name, null);\r\n\r\n    if (attrs) {\r\n      for(var i = 0, n = attrs.length; i < n; i++) {\r\n        // Use the _ version to avoid testing the validity\r\n        // of the attribute name\r\n        elt._setAttribute(attrs[i][0], attrs[i][1]);\r\n      }\r\n    }\r\n    // XXX\r\n    // If the element is a resettable form element,\r\n    // run its reset algorithm now\r\n    // XXX\r\n    // handle case where form-element-pointer is not null\r\n    return elt;\r\n  }\r\n\r\n  // The in_table insertion mode turns on this flag, and that makes\r\n  // insertHTMLElement use the foster parenting algorithm for elements\r\n  // tags inside a table\r\n  var foster_parent_mode = false;\r\n\r\n  function insertHTMLElement(name, attrs) {\r\n    var elt = insertElement(function(doc) {\r\n      return createHTMLElt(doc, name, attrs);\r\n    });\r\n\r\n    // XXX\r\n    // If this is a form element, set its form attribute property here\r\n    if (isA(elt, formassociatedSet)) {\r\n      elt._form = form_element_pointer;\r\n    }\r\n\r\n    return elt;\r\n  }\r\n\r\n  // Insert the element into the open element or foster parent it\r\n  function insertElement(eltFunc) {\r\n    var elt;\r\n    if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) {\r\n      elt = fosterParent(eltFunc);\r\n    }\r\n    else if (stack.top instanceof impl.HTMLTemplateElement) {\r\n      // \"If the adjusted insertion location is inside a template element,\r\n      // let it instead be inside the template element's template contents\"\r\n      elt = eltFunc(stack.top.content.ownerDocument);\r\n      stack.top.content._appendChild(elt);\r\n    } else {\r\n      elt = eltFunc(stack.top.ownerDocument);\r\n      stack.top._appendChild(elt);\r\n    }\r\n\r\n    stack.push(elt);\r\n    return elt;\r\n  }\r\n\r\n  function insertForeignElement(name, attrs, ns) {\r\n    return insertElement(function(doc) {\r\n      // We need to prevent createElementNS from trying to parse `name` as a\r\n      // `qname`, so use an internal Document#_createElementNS() interface.\r\n      var elt = doc._createElementNS(name, ns, null);\r\n      if (attrs) {\r\n        for(var i = 0, n = attrs.length; i < n; i++) {\r\n          var attr = attrs[i];\r\n          if (attr.length === 2)\r\n            elt._setAttribute(attr[0], attr[1]);\r\n          else {\r\n            elt._setAttributeNS(attr[2], attr[0], attr[1]);\r\n          }\r\n        }\r\n      }\r\n      return elt;\r\n    });\r\n  }\r\n\r\n  function lastElementOfType(type) {\r\n    for(var i = stack.elements.length-1; i >= 0; i--) {\r\n      if (stack.elements[i] instanceof type) {\r\n        return i;\r\n      }\r\n    }\r\n    return -1;\r\n  }\r\n\r\n  function fosterParent(eltFunc) {\r\n    var parent, before, lastTable = -1, lastTemplate = -1, elt;\r\n\r\n    lastTable = lastElementOfType(impl.HTMLTableElement);\r\n    lastTemplate = lastElementOfType(impl.HTMLTemplateElement);\r\n\r\n    if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) {\r\n      parent = stack.elements[lastTemplate];\r\n    } else if (lastTable >= 0) {\r\n      parent = stack.elements[lastTable].parentNode;\r\n      if (parent) {\r\n        before = stack.elements[lastTable];\r\n      } else {\r\n        parent = stack.elements[lastTable - 1];\r\n      }\r\n    }\r\n    if (!parent) parent = stack.elements[0]; // the `html` element.\r\n\r\n    // \"If the adjusted insertion location is inside a template element,\r\n    // let it instead be inside the template element's template contents\"\r\n    if (parent instanceof impl.HTMLTemplateElement) {\r\n      parent = parent.content;\r\n    }\r\n    // Create element in the appropriate document.\r\n    elt = eltFunc(parent.ownerDocument);\r\n\r\n    if (elt.nodeType === Node.TEXT_NODE) {\r\n      var prev;\r\n      if (before) prev = before.previousSibling;\r\n      else prev = parent.lastChild;\r\n      if (prev && prev.nodeType === Node.TEXT_NODE) {\r\n        prev.appendData(elt.data);\r\n        return elt;\r\n      }\r\n    }\r\n    if (before)\r\n      parent.insertBefore(elt, before);\r\n    else\r\n      parent._appendChild(elt);\r\n    return elt;\r\n  }\r\n\r\n\r\n  function resetInsertionMode() {\r\n    var last = false;\r\n    for(var i = stack.elements.length-1; i >= 0; i--) {\r\n      var node = stack.elements[i];\r\n      if (i === 0) {\r\n        last = true;\r\n        if (fragment) {\r\n          node = fragmentContext;\r\n        }\r\n      }\r\n      if (node.namespaceURI === NAMESPACE.HTML) {\r\n        var tag = node.localName;\r\n        switch(tag) {\r\n        case \"select\":\r\n          for(var j = i; j > 0; ) {\r\n            var ancestor = stack.elements[--j];\r\n            if (ancestor instanceof impl.HTMLTemplateElement) {\r\n              break;\r\n            } else if (ancestor instanceof impl.HTMLTableElement) {\r\n              parser = in_select_in_table_mode;\r\n              return;\r\n            }\r\n          }\r\n          parser = in_select_mode;\r\n          return;\r\n        case \"tr\":\r\n          parser = in_row_mode;\r\n          return;\r\n        case \"tbody\":\r\n        case \"tfoot\":\r\n        case \"thead\":\r\n          parser = in_table_body_mode;\r\n          return;\r\n        case \"caption\":\r\n          parser = in_caption_mode;\r\n          return;\r\n        case \"colgroup\":\r\n          parser = in_column_group_mode;\r\n          return;\r\n        case \"table\":\r\n          parser = in_table_mode;\r\n          return;\r\n        case \"template\":\r\n          parser = templateInsertionModes[templateInsertionModes.length-1];\r\n          return;\r\n        case \"body\":\r\n          parser = in_body_mode;\r\n          return;\r\n        case \"frameset\":\r\n          parser = in_frameset_mode;\r\n          return;\r\n        case \"html\":\r\n          if (head_element_pointer === null) {\r\n            parser = before_head_mode;\r\n          } else {\r\n            parser = after_head_mode;\r\n          }\r\n          return;\r\n        default:\r\n          if (!last) {\r\n            if (tag === \"head\") {\r\n              parser = in_head_mode;\r\n              return;\r\n            }\r\n            if (tag === \"td\" || tag === \"th\") {\r\n              parser = in_cell_mode;\r\n              return;\r\n            }\r\n          }\r\n        }\r\n      }\r\n      if (last) {\r\n        parser = in_body_mode;\r\n        return;\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  function parseRawText(name, attrs) {\r\n    insertHTMLElement(name, attrs);\r\n    tokenizer = rawtext_state;\r\n    originalInsertionMode = parser;\r\n    parser = text_mode;\r\n  }\r\n\r\n  function parseRCDATA(name, attrs) {\r\n    insertHTMLElement(name, attrs);\r\n    tokenizer = rcdata_state;\r\n    originalInsertionMode = parser;\r\n    parser = text_mode;\r\n  }\r\n\r\n  // Make a copy of element i on the list of active formatting\r\n  // elements, using its original attributes, not current\r\n  // attributes (which may have been modified by a script)\r\n  function afeclone(doc, i) {\r\n    return {\r\n      elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]),\r\n      attrs: afe.attrs[i],\r\n    };\r\n  }\r\n\r\n\r\n  function afereconstruct() {\r\n    if (afe.list.length === 0) return;\r\n    var entry = afe.list[afe.list.length-1];\r\n    // If the last is a marker , do nothing\r\n    if (entry === afe.MARKER) return;\r\n    // Or if it is an open element, do nothing\r\n    if (stack.elements.lastIndexOf(entry) !== -1) return;\r\n\r\n    // Loop backward through the list until we find a marker or an\r\n    // open element, and then move forward one from there.\r\n    for(var i = afe.list.length-2; i >= 0; i--) {\r\n      entry = afe.list[i];\r\n      if (entry === afe.MARKER) break;\r\n      if (stack.elements.lastIndexOf(entry) !== -1) break;\r\n    }\r\n\r\n    // Now loop forward, starting from the element after the current\r\n    // one, recreating formatting elements and pushing them back onto\r\n    // the list of open elements\r\n    for(i = i+1; i < afe.list.length; i++) {\r\n      var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; });\r\n      afe.list[i] = newelt;\r\n    }\r\n  }\r\n\r\n  // Used by the adoptionAgency() function\r\n  var BOOKMARK = {localName:\"BM\"};\r\n\r\n  function adoptionAgency(tag) {\r\n    // If the current node is an HTML element whose tag name is subject,\r\n    // and the current node is not in the list of active formatting\r\n    // elements, then pop the current node off the stack of open\r\n    // elements and abort these steps.\r\n    if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) {\r\n      stack.pop();\r\n      return true; // no more handling required\r\n    }\r\n\r\n    // Let outer loop counter be zero.\r\n    var outer = 0;\r\n\r\n    // Outer loop: If outer loop counter is greater than or\r\n    // equal to eight, then abort these steps.\r\n    while(outer < 8) {\r\n      // Increment outer loop counter by one.\r\n      outer++;\r\n\r\n      // Let the formatting element be the last element in the list\r\n      // of active formatting elements that: is between the end of\r\n      // the list and the last scope marker in the list, if any, or\r\n      // the start of the list otherwise, and has the same tag name\r\n      // as the token.\r\n      var fmtelt = afe.findElementByTag(tag);\r\n\r\n      // If there is no such node, then abort these steps and instead\r\n      // act as described in the \"any other end tag\" entry below.\r\n      if (!fmtelt) {\r\n        return false; // false means handle by the default case\r\n      }\r\n\r\n      // Otherwise, if there is such a node, but that node is not in\r\n      // the stack of open elements, then this is a parse error;\r\n      // remove the element from the list, and abort these steps.\r\n      var index = stack.elements.lastIndexOf(fmtelt);\r\n      if (index === -1) {\r\n        afe.remove(fmtelt);\r\n        return true;   // true means no more handling required\r\n      }\r\n\r\n      // Otherwise, if there is such a node, and that node is also in\r\n      // the stack of open elements, but the element is not in scope,\r\n      // then this is a parse error; ignore the token, and abort\r\n      // these steps.\r\n      if (!stack.elementInScope(fmtelt)) {\r\n        return true;\r\n      }\r\n\r\n      // Let the furthest block be the topmost node in the stack of\r\n      // open elements that is lower in the stack than the formatting\r\n      // element, and is an element in the special category. There\r\n      // might not be one.\r\n      var furthestblock = null, furthestblockindex;\r\n      for(var i = index+1; i < stack.elements.length; i++) {\r\n        if (isA(stack.elements[i], specialSet)) {\r\n          furthestblock = stack.elements[i];\r\n          furthestblockindex = i;\r\n          break;\r\n        }\r\n      }\r\n\r\n      // If there is no furthest block, then the UA must skip the\r\n      // subsequent steps and instead just pop all the nodes from the\r\n      // bottom of the stack of open elements, from the current node\r\n      // up to and including the formatting element, and remove the\r\n      // formatting element from the list of active formatting\r\n      // elements.\r\n      if (!furthestblock) {\r\n        stack.popElement(fmtelt);\r\n        afe.remove(fmtelt);\r\n        return true;\r\n      }\r\n      else {\r\n        // Let the common ancestor be the element immediately above\r\n        // the formatting element in the stack of open elements.\r\n        var ancestor = stack.elements[index-1];\r\n\r\n        // Let a bookmark note the position of the formatting\r\n        // element in the list of active formatting elements\r\n        // relative to the elements on either side of it in the\r\n        // list.\r\n        afe.insertAfter(fmtelt, BOOKMARK);\r\n\r\n        // Let node and last node be the furthest block.\r\n        var node = furthestblock;\r\n        var lastnode = furthestblock;\r\n        var nodeindex = furthestblockindex;\r\n        var nodeafeindex;\r\n\r\n        // Let inner loop counter be zero.\r\n        var inner = 0;\r\n\r\n        while (true) {\r\n\r\n          // Increment inner loop counter by one.\r\n          inner++;\r\n\r\n          // Let node be the element immediately above node in\r\n          // the stack of open elements, or if node is no longer\r\n          // in the stack of open elements (e.g. because it got\r\n          // removed by this algorithm), the element that was\r\n          // immediately above node in the stack of open elements\r\n          // before node was removed.\r\n          node = stack.elements[--nodeindex];\r\n\r\n          // If node is the formatting element, then go\r\n          // to the next step in the overall algorithm.\r\n          if (node === fmtelt) break;\r\n\r\n          // If the inner loop counter is greater than three and node\r\n          // is in the list of active formatting elements, then remove\r\n          // node from the list of active formatting elements.\r\n          nodeafeindex = afe.indexOf(node);\r\n          if (inner > 3 && nodeafeindex !== -1) {\r\n            afe.remove(node);\r\n            nodeafeindex = -1;\r\n          }\r\n\r\n          // If node is not in the list of active formatting\r\n          // elements, then remove node from the stack of open\r\n          // elements and then go back to the step labeled inner\r\n          // loop.\r\n          if (nodeafeindex === -1) {\r\n            stack.removeElement(node);\r\n            continue;\r\n          }\r\n\r\n          // Create an element for the token for which the\r\n          // element node was created with common ancestor as\r\n          // the intended parent, replace the entry for node\r\n          // in the list of active formatting elements with an\r\n          // entry for the new element, replace the entry for\r\n          // node in the stack of open elements with an entry for\r\n          // the new element, and let node be the new element.\r\n          var newelt = afeclone(ancestor.ownerDocument, nodeafeindex);\r\n          afe.replace(node, newelt.elt, newelt.attrs);\r\n          stack.elements[nodeindex] = newelt.elt;\r\n          node = newelt.elt;\r\n\r\n          // If last node is the furthest block, then move the\r\n          // aforementioned bookmark to be immediately after the\r\n          // new node in the list of active formatting elements.\r\n          if (lastnode === furthestblock) {\r\n            afe.remove(BOOKMARK);\r\n            afe.insertAfter(newelt.elt, BOOKMARK);\r\n          }\r\n\r\n          // Insert last node into node, first removing it from\r\n          // its previous parent node if any.\r\n          node._appendChild(lastnode);\r\n\r\n          // Let last node be node.\r\n          lastnode = node;\r\n        }\r\n\r\n        // If the common ancestor node is a table, tbody, tfoot,\r\n        // thead, or tr element, then, foster parent whatever last\r\n        // node ended up being in the previous step, first removing\r\n        // it from its previous parent node if any.\r\n        if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) {\r\n          fosterParent(function() { return lastnode; });\r\n        }\r\n        // Otherwise, append whatever last node ended up being in\r\n        // the previous step to the common ancestor node, first\r\n        // removing it from its previous parent node if any.\r\n        else if (ancestor instanceof impl.HTMLTemplateElement) {\r\n          ancestor.content._appendChild(lastnode);\r\n        } else {\r\n          ancestor._appendChild(lastnode);\r\n        }\r\n\r\n        // Create an element for the token for which the\r\n        // formatting element was created, with furthest block\r\n        // as the intended parent.\r\n        var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt));\r\n\r\n        // Take all of the child nodes of the furthest block and\r\n        // append them to the element created in the last step.\r\n        while(furthestblock.hasChildNodes()) {\r\n          newelt2.elt._appendChild(furthestblock.firstChild);\r\n        }\r\n\r\n        // Append that new element to the furthest block.\r\n        furthestblock._appendChild(newelt2.elt);\r\n\r\n        // Remove the formatting element from the list of active\r\n        // formatting elements, and insert the new element into the\r\n        // list of active formatting elements at the position of\r\n        // the aforementioned bookmark.\r\n        afe.remove(fmtelt);\r\n        afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs);\r\n\r\n        // Remove the formatting element from the stack of open\r\n        // elements, and insert the new element into the stack of\r\n        // open elements immediately below the position of the\r\n        // furthest block in that stack.\r\n        stack.removeElement(fmtelt);\r\n        var pos = stack.elements.lastIndexOf(furthestblock);\r\n        stack.elements.splice(pos+1, 0, newelt2.elt);\r\n      }\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  // We do this when we get /script in in_text_mode\r\n  function handleScriptEnd() {\r\n    // XXX:\r\n    // This is just a stub implementation right now and doesn't run scripts.\r\n    // Getting this method right involves the event loop, URL resolution\r\n    // script fetching etc. For now I just want to be able to parse\r\n    // documents and test the parser.\r\n\r\n    //var script = stack.top;\r\n    stack.pop();\r\n    parser = originalInsertionMode;\r\n    //script._prepare();\r\n    return;\r\n\r\n    // XXX: here is what this method is supposed to do\r\n\r\n    // Provide a stable state.\r\n\r\n    // Let script be the current node (which will be a script\r\n    // element).\r\n\r\n    // Pop the current node off the stack of open elements.\r\n\r\n    // Switch the insertion mode to the original insertion mode.\r\n\r\n    // Let the old insertion point have the same value as the current\r\n    // insertion point. Let the insertion point be just before the\r\n    // next input character.\r\n\r\n    // Increment the parser's script nesting level by one.\r\n\r\n    // Prepare the script. This might cause some script to execute,\r\n    // which might cause new characters to be inserted into the\r\n    // tokenizer, and might cause the tokenizer to output more tokens,\r\n    // resulting in a reentrant invocation of the parser.\r\n\r\n    // Decrement the parser's script nesting level by one. If the\r\n    // parser's script nesting level is zero, then set the parser\r\n    // pause flag to false.\r\n\r\n    // Let the insertion point have the value of the old insertion\r\n    // point. (In other words, restore the insertion point to its\r\n    // previous value. This value might be the \"undefined\" value.)\r\n\r\n    // At this stage, if there is a pending parsing-blocking script,\r\n    // then:\r\n\r\n    // If the script nesting level is not zero:\r\n\r\n    //   Set the parser pause flag to true, and abort the processing\r\n    //   of any nested invocations of the tokenizer, yielding\r\n    //   control back to the caller. (Tokenization will resume when\r\n    //   the caller returns to the \"outer\" tree construction stage.)\r\n\r\n    //   The tree construction stage of this particular parser is\r\n    //   being called reentrantly, say from a call to\r\n    //   document.write().\r\n\r\n    // Otherwise:\r\n\r\n    //     Run these steps:\r\n\r\n    //       Let the script be the pending parsing-blocking\r\n    //       script. There is no longer a pending\r\n    //       parsing-blocking script.\r\n\r\n    //       Block the tokenizer for this instance of the HTML\r\n    //       parser, such that the event loop will not run tasks\r\n    //       that invoke the tokenizer.\r\n\r\n    //       If the parser's Document has a style sheet that is\r\n    //       blocking scripts or the script's \"ready to be\r\n    //       parser-executed\" flag is not set: spin the event\r\n    //       loop until the parser's Document has no style sheet\r\n    //       that is blocking scripts and the script's \"ready to\r\n    //       be parser-executed\" flag is set.\r\n\r\n    //       Unblock the tokenizer for this instance of the HTML\r\n    //       parser, such that tasks that invoke the tokenizer\r\n    //       can again be run.\r\n\r\n    //       Let the insertion point be just before the next\r\n    //       input character.\r\n\r\n    //       Increment the parser's script nesting level by one\r\n    //       (it should be zero before this step, so this sets\r\n    //       it to one).\r\n\r\n    //       Execute the script.\r\n\r\n    //       Decrement the parser's script nesting level by\r\n    //       one. If the parser's script nesting level is zero\r\n    //       (which it always should be at this point), then set\r\n    //       the parser pause flag to false.\r\n\r\n    //       Let the insertion point be undefined again.\r\n\r\n    //       If there is once again a pending parsing-blocking\r\n    //       script, then repeat these steps from step 1.\r\n\r\n\r\n  }\r\n\r\n  function stopParsing() {\r\n    // XXX This is just a temporary implementation to get the parser working.\r\n    // A full implementation involves scripts and events and the event loop.\r\n\r\n    // Remove the link from document to parser.\r\n    // This is instead of \"set the insertion point to undefined\".\r\n    // It means that document.write() can't write into the doc anymore.\r\n    delete doc._parser;\r\n\r\n    stack.elements.length = 0; // pop everything off\r\n\r\n    // If there is a window object associated with the document\r\n    // then trigger an load event on it\r\n    if (doc.defaultView) {\r\n      doc.defaultView.dispatchEvent(new impl.Event(\"load\",{}));\r\n    }\r\n\r\n  }\r\n\r\n  /****\r\n   * Tokenizer states\r\n   */\r\n\r\n  /**\r\n   * This file was partially mechanically generated from\r\n   * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html\r\n   *\r\n   * After mechanical conversion, it was further converted from\r\n   * prose to JS by hand, but the intent is that it is a very\r\n   * faithful rendering of the HTML tokenization spec in\r\n   * JavaScript.\r\n   *\r\n   * It is not a goal of this tokenizer to detect or report\r\n   * parse errors.\r\n   *\r\n   * XXX The tokenizer is supposed to work with straight UTF32\r\n   * codepoints. But I don't think it has any dependencies on\r\n   * any character outside of the BMP so I think it is safe to\r\n   * pass it UTF16 characters. I don't think it will ever change\r\n   * state in the middle of a surrogate pair.\r\n   */\r\n\r\n  /*\r\n   * Each state is represented by a function.  For most states, the\r\n   * scanner simply passes the next character (as an integer\r\n   * codepoint) to the current state function and automatically\r\n   * consumes the character.  If the state function can't process\r\n   * the character it can call pushback() to push it back to the\r\n   * scanner.\r\n   *\r\n   * Some states require lookahead, though.  If a state function has\r\n   * a lookahead property, then it is invoked differently.  In this\r\n   * case, the scanner invokes the function with 3 arguments: 1) the\r\n   * next codepoint 2) a string of lookahead text 3) a boolean that\r\n   * is true if the lookahead goes all the way to the EOF. (XXX\r\n   * actually maybe this third is not necessary... the lookahead\r\n   * could just include \\uFFFF?)\r\n   *\r\n   * If the lookahead property of a state function is an integer, it\r\n   * specifies the number of characters required. If it is a string,\r\n   * then the scanner will scan for that string and return all\r\n   * characters up to and including that sequence, or up to EOF.  If\r\n   * the lookahead property is a regexp, then the scanner will match\r\n   * the regexp at the current point and return the matching string.\r\n   *\r\n   * States that require lookahead are responsible for explicitly\r\n   * consuming the characters they process. They do this by\r\n   * incrementing nextchar by the number of processed characters.\r\n   */\r\n  function reconsume(c, new_state) {\r\n    tokenizer = new_state;\r\n    nextchar--; // pushback\r\n  }\r\n\r\n  function data_state(c) {\r\n    switch(c) {\r\n    case 0x0026: // AMPERSAND\r\n      return_state = data_state;\r\n      tokenizer = character_reference_state;\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      if (emitSimpleTag()) // Shortcut for <p>, <dl>, </div> etc.\r\n        break;\r\n      tokenizer = tag_open_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      // Usually null characters emitted by the tokenizer will be\r\n      // ignored by the tree builder, but sometimes they'll be\r\n      // converted to \\uFFFD.  I don't want to have the search every\r\n      // string emitted to replace NULs, so I'll set a flag\r\n      // if I've emitted a NUL.\r\n      textrun.push(c);\r\n      textIncludesNUL = true;\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      // Instead of just pushing a single character and then\r\n      // coming back to the very same place, lookahead and\r\n      // emit everything we can at once.\r\n      /*jshint -W030 */\r\n      emitCharsWhile(DATATEXT) || textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function rcdata_state(c) {\r\n    // Save the open tag so we can find a matching close tag\r\n    switch(c) {\r\n    case 0x0026: // AMPERSAND\r\n      return_state = rcdata_state;\r\n      tokenizer = character_reference_state;\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = rcdata_less_than_sign_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      textIncludesNUL = true;\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function rawtext_state(c) {\r\n    switch(c) {\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = rawtext_less_than_sign_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      /*jshint -W030 */\r\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_state(c) {\r\n    switch(c) {\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_less_than_sign_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      /*jshint -W030 */\r\n      emitCharsWhile(RAWTEXT) || textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function plaintext_state(c) {\r\n    switch(c) {\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      /*jshint -W030 */\r\n      emitCharsWhile(PLAINTEXT) || textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function tag_open_state(c) {\r\n    switch(c) {\r\n    case 0x0021: // EXCLAMATION MARK\r\n      tokenizer = markup_declaration_open_state;\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      tokenizer = end_tag_open_state;\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginTagName();\r\n      reconsume(c, tag_name_state);\r\n      break;\r\n    case 0x003F: // QUESTION MARK\r\n      reconsume(c, bogus_comment_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, data_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function end_tag_open_state(c) {\r\n    switch(c) {\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginEndTagName();\r\n      reconsume(c, tag_name_state);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      break;\r\n    case -1: // EOF\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x002F); // SOLIDUS\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      reconsume(c, bogus_comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function tag_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = before_attribute_name_state;\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      tokenizer = self_closing_start_tag_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitTag();\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      tagnamebuf += String.fromCharCode(c + 0x0020);\r\n      break;\r\n    case 0x0000: // NULL\r\n      tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tagnamebuf += getMatchingChars(TAGNAME);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function rcdata_less_than_sign_state(c) {\r\n    /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */\r\n    if (c === 0x002F) {  // SOLIDUS\r\n      beginTempBuf();\r\n      tokenizer = rcdata_end_tag_open_state;\r\n    }\r\n    else {\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, rcdata_state);\r\n    }\r\n  }\r\n\r\n  function rcdata_end_tag_open_state(c) {\r\n    /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */\r\n    switch(c) {\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginEndTagName();\r\n      reconsume(c, rcdata_end_tag_name_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x002F); // SOLIDUS\r\n      reconsume(c, rcdata_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function rcdata_end_tag_name_state(c) {\r\n    /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = before_attribute_name_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = self_closing_start_tag_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = data_state;\r\n        emitTag();\r\n        return;\r\n      }\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n\r\n      tagnamebuf += String.fromCharCode(c + 0x0020);\r\n      tempbuf.push(c);\r\n      return;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n\r\n      tagnamebuf += String.fromCharCode(c);\r\n      tempbuf.push(c);\r\n      return;\r\n    default:\r\n      break;\r\n    }\r\n\r\n    // If we don't return in one of the cases above, then this was not\r\n    // an appropriately matching close tag, so back out by emitting all\r\n    // the characters as text\r\n    textrun.push(0x003C); // LESS-THAN SIGN\r\n    textrun.push(0x002F); // SOLIDUS\r\n    pushAll(textrun, tempbuf);\r\n    reconsume(c, rcdata_state);\r\n  }\r\n\r\n  function rawtext_less_than_sign_state(c) {\r\n    /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g\r\n     */\r\n    if (c === 0x002F) { // SOLIDUS\r\n      beginTempBuf();\r\n      tokenizer = rawtext_end_tag_open_state;\r\n    }\r\n    else {\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, rawtext_state);\r\n    }\r\n  }\r\n\r\n  function rawtext_end_tag_open_state(c) {\r\n    /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */\r\n    switch(c) {\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginEndTagName();\r\n      reconsume(c, rawtext_end_tag_name_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x002F); // SOLIDUS\r\n      reconsume(c, rawtext_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function rawtext_end_tag_name_state(c) {\r\n    /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = before_attribute_name_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = self_closing_start_tag_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = data_state;\r\n        emitTag();\r\n        return;\r\n      }\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      tagnamebuf += String.fromCharCode(c + 0x0020);\r\n      tempbuf.push(c);\r\n      return;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      tagnamebuf += String.fromCharCode(c);\r\n      tempbuf.push(c);\r\n      return;\r\n    default:\r\n      break;\r\n    }\r\n\r\n    // If we don't return in one of the cases above, then this was not\r\n    // an appropriately matching close tag, so back out by emitting all\r\n    // the characters as text\r\n    textrun.push(0x003C); // LESS-THAN SIGN\r\n    textrun.push(0x002F); // SOLIDUS\r\n    pushAll(textrun,tempbuf);\r\n    reconsume(c, rawtext_state);\r\n  }\r\n\r\n  function script_data_less_than_sign_state(c) {\r\n    switch(c) {\r\n    case 0x002F: // SOLIDUS\r\n      beginTempBuf();\r\n      tokenizer = script_data_end_tag_open_state;\r\n      break;\r\n    case 0x0021: // EXCLAMATION MARK\r\n      tokenizer = script_data_escape_start_state;\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x0021); // EXCLAMATION MARK\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, script_data_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_end_tag_open_state(c) {\r\n    /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */\r\n    switch(c) {\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginEndTagName();\r\n      reconsume(c, script_data_end_tag_name_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x002F); // SOLIDUS\r\n      reconsume(c, script_data_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_end_tag_name_state(c) {\r\n    /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = before_attribute_name_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = self_closing_start_tag_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = data_state;\r\n        emitTag();\r\n        return;\r\n      }\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n\r\n      tagnamebuf += String.fromCharCode(c + 0x0020);\r\n      tempbuf.push(c);\r\n      return;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n\r\n      tagnamebuf += String.fromCharCode(c);\r\n      tempbuf.push(c);\r\n      return;\r\n    default:\r\n      break;\r\n    }\r\n\r\n    // If we don't return in one of the cases above, then this was not\r\n    // an appropriately matching close tag, so back out by emitting all\r\n    // the characters as text\r\n    textrun.push(0x003C); // LESS-THAN SIGN\r\n    textrun.push(0x002F); // SOLIDUS\r\n    pushAll(textrun,tempbuf);\r\n    reconsume(c, script_data_state);\r\n  }\r\n\r\n  function script_data_escape_start_state(c) {\r\n    if (c === 0x002D) { // HYPHEN-MINUS\r\n      tokenizer = script_data_escape_start_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n    }\r\n    else {\r\n      reconsume(c, script_data_state);\r\n    }\r\n  }\r\n\r\n  function script_data_escape_start_dash_state(c) {\r\n    if (c === 0x002D) { // HYPHEN-MINUS\r\n      tokenizer = script_data_escaped_dash_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n    }\r\n    else {\r\n      reconsume(c, script_data_state);\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = script_data_escaped_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_escaped_less_than_sign_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = script_data_escaped_dash_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_escaped_less_than_sign_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      tokenizer = script_data_escaped_state;\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tokenizer = script_data_escaped_state;\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_dash_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_escaped_less_than_sign_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = script_data_state;\r\n      textrun.push(0x003E); // GREATER-THAN SIGN\r\n      break;\r\n    case 0x0000: // NULL\r\n      tokenizer = script_data_escaped_state;\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tokenizer = script_data_escaped_state;\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_less_than_sign_state(c) {\r\n    switch(c) {\r\n    case 0x002F: // SOLIDUS\r\n      beginTempBuf();\r\n      tokenizer = script_data_escaped_end_tag_open_state;\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginTempBuf();\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, script_data_double_escape_start_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      reconsume(c, script_data_escaped_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_end_tag_open_state(c) {\r\n    switch(c) {\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      beginEndTagName();\r\n      reconsume(c, script_data_escaped_end_tag_name_state);\r\n      break;\r\n    default:\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      textrun.push(0x002F); // SOLIDUS\r\n      reconsume(c, script_data_escaped_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_escaped_end_tag_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = before_attribute_name_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = self_closing_start_tag_state;\r\n        return;\r\n      }\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (appropriateEndTag(tagnamebuf)) {\r\n        tokenizer = data_state;\r\n        emitTag();\r\n        return;\r\n      }\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      tagnamebuf += String.fromCharCode(c + 0x0020);\r\n      tempbuf.push(c);\r\n      return;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      tagnamebuf += String.fromCharCode(c);\r\n      tempbuf.push(c);\r\n      return;\r\n    default:\r\n      break;\r\n    }\r\n\r\n    // We get here in the default case, and if the closing tagname\r\n    // is not an appropriate tagname.\r\n    textrun.push(0x003C); // LESS-THAN SIGN\r\n    textrun.push(0x002F); // SOLIDUS\r\n    pushAll(textrun,tempbuf);\r\n    reconsume(c, script_data_escaped_state);\r\n  }\r\n\r\n  function script_data_double_escape_start_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n    case 0x002F: // SOLIDUS\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (buf2str(tempbuf) === \"script\") {\r\n        tokenizer = script_data_double_escaped_state;\r\n      }\r\n      else {\r\n        tokenizer = script_data_escaped_state;\r\n      }\r\n      textrun.push(c);\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      tempbuf.push(c + 0x0020);\r\n      textrun.push(c);\r\n      break;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      tempbuf.push(c);\r\n      textrun.push(c);\r\n      break;\r\n    default:\r\n      reconsume(c, script_data_escaped_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_double_escaped_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = script_data_double_escaped_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_double_escaped_less_than_sign_state;\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      break;\r\n    case 0x0000: // NULL\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_double_escaped_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = script_data_double_escaped_dash_dash_state;\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_double_escaped_less_than_sign_state;\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      break;\r\n    case 0x0000: // NULL\r\n      tokenizer = script_data_double_escaped_state;\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tokenizer = script_data_double_escaped_state;\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_double_escaped_dash_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      textrun.push(0x002D); // HYPHEN-MINUS\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      tokenizer = script_data_double_escaped_less_than_sign_state;\r\n      textrun.push(0x003C); // LESS-THAN SIGN\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = script_data_state;\r\n      textrun.push(0x003E); // GREATER-THAN SIGN\r\n      break;\r\n    case 0x0000: // NULL\r\n      tokenizer = script_data_double_escaped_state;\r\n      textrun.push(0xFFFD); // REPLACEMENT CHARACTER\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tokenizer = script_data_double_escaped_state;\r\n      textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function script_data_double_escaped_less_than_sign_state(c) {\r\n    if (c === 0x002F) { // SOLIDUS\r\n      beginTempBuf();\r\n      tokenizer = script_data_double_escape_end_state;\r\n      textrun.push(0x002F); // SOLIDUS\r\n    }\r\n    else {\r\n      reconsume(c, script_data_double_escaped_state);\r\n    }\r\n  }\r\n\r\n  function script_data_double_escape_end_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n    case 0x002F: // SOLIDUS\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      if (buf2str(tempbuf) === \"script\") {\r\n        tokenizer = script_data_escaped_state;\r\n      }\r\n      else {\r\n        tokenizer = script_data_double_escaped_state;\r\n      }\r\n      textrun.push(c);\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      tempbuf.push(c + 0x0020);\r\n      textrun.push(c);\r\n      break;\r\n    case 0x0061:  // [a-z]\r\n    case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066:\r\n    case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B:\r\n    case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070:\r\n    case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075:\r\n    case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A:\r\n      tempbuf.push(c);\r\n      textrun.push(c);\r\n      break;\r\n    default:\r\n      reconsume(c, script_data_double_escaped_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function before_attribute_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says \"reconsume in\r\n    // the after attribute name state\", but in our implementation that\r\n    // state always has an active attribute in attrnamebuf.  Just clone\r\n    // the rules here, without the addAttribute business.\r\n    case 0x002F: // SOLIDUS\r\n      tokenizer = self_closing_start_tag_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitTag();\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    case 0x003D: // EQUALS SIGN\r\n      beginAttrName();\r\n      attrnamebuf += String.fromCharCode(c);\r\n      tokenizer = attribute_name_state;\r\n      break;\r\n    default:\r\n      if (handleSimpleAttribute()) break;\r\n      beginAttrName();\r\n      reconsume(c, attribute_name_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // beginAttrName() must have been called before this point\r\n  // There is an active attribute in attrnamebuf (but not attrvaluebuf)\r\n  function attribute_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n    case 0x002F: // SOLIDUS\r\n    case 0x003E: // GREATER-THAN SIGN\r\n    case -1: // EOF\r\n      reconsume(c, after_attribute_name_state);\r\n      break;\r\n    case 0x003D: // EQUALS SIGN\r\n      tokenizer = before_attribute_value_state;\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      attrnamebuf += String.fromCharCode(c + 0x0020);\r\n      break;\r\n    case 0x0000: // NULL\r\n      attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n    case 0x0027: // APOSTROPHE\r\n    case 0x003C: // LESS-THAN SIGN\r\n      /* falls through */\r\n    default:\r\n      attrnamebuf += getMatchingChars(ATTRNAME);\r\n      break;\r\n    }\r\n  }\r\n\r\n  // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf.\r\n  function after_attribute_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      // Keep in sync with before_attribute_name_state.\r\n      addAttribute(attrnamebuf);\r\n      tokenizer = self_closing_start_tag_state;\r\n      break;\r\n    case 0x003D: // EQUALS SIGN\r\n      tokenizer = before_attribute_value_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      // Keep in sync with before_attribute_name_state.\r\n      tokenizer = data_state;\r\n      addAttribute(attrnamebuf);\r\n      emitTag();\r\n      break;\r\n    case -1: // EOF\r\n      // Keep in sync with before_attribute_name_state.\r\n      addAttribute(attrnamebuf);\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      addAttribute(attrnamebuf);\r\n      beginAttrName();\r\n      reconsume(c, attribute_name_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function before_attribute_value_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginAttrValue();\r\n      tokenizer = attribute_value_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginAttrValue();\r\n      tokenizer = attribute_value_single_quoted_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      /* falls through */\r\n    default:\r\n      beginAttrValue();\r\n      reconsume(c, attribute_value_unquoted_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function attribute_value_double_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0022: // QUOTATION MARK\r\n      addAttribute(attrnamebuf, attrvaluebuf);\r\n      tokenizer = after_attribute_value_quoted_state;\r\n      break;\r\n    case 0x0026: // AMPERSAND\r\n      return_state = attribute_value_double_quoted_state;\r\n      tokenizer = character_reference_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    case 0x000A: // LF\r\n      // this could be a converted \\r, so don't use getMatchingChars\r\n      attrvaluebuf += String.fromCharCode(c);\r\n      break;\r\n    default:\r\n      attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function attribute_value_single_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0027: // APOSTROPHE\r\n      addAttribute(attrnamebuf, attrvaluebuf);\r\n      tokenizer = after_attribute_value_quoted_state;\r\n      break;\r\n    case 0x0026: // AMPERSAND\r\n      return_state = attribute_value_single_quoted_state;\r\n      tokenizer = character_reference_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    case 0x000A: // LF\r\n      // this could be a converted \\r, so don't use getMatchingChars\r\n      attrvaluebuf += String.fromCharCode(c);\r\n      break;\r\n    default:\r\n      attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function attribute_value_unquoted_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      addAttribute(attrnamebuf, attrvaluebuf);\r\n      tokenizer = before_attribute_name_state;\r\n      break;\r\n    case 0x0026: // AMPERSAND\r\n      return_state = attribute_value_unquoted_state;\r\n      tokenizer = character_reference_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      addAttribute(attrnamebuf, attrvaluebuf);\r\n      tokenizer = data_state;\r\n      emitTag();\r\n      break;\r\n    case 0x0000: // NULL\r\n      attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      nextchar--; // pushback\r\n      tokenizer = data_state;\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n    case 0x0027: // APOSTROPHE\r\n    case 0x003C: // LESS-THAN SIGN\r\n    case 0x003D: // EQUALS SIGN\r\n    case 0x0060: // GRAVE ACCENT\r\n      /* falls through */\r\n    default:\r\n      attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function after_attribute_value_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = before_attribute_name_state;\r\n      break;\r\n    case 0x002F: // SOLIDUS\r\n      tokenizer = self_closing_start_tag_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitTag();\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      reconsume(c, before_attribute_name_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function self_closing_start_tag_state(c) {\r\n    switch(c) {\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      // Set the <i>self-closing flag</i> of the current tag token.\r\n      tokenizer = data_state;\r\n      emitSelfClosingTag(true);\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      reconsume(c, before_attribute_name_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function bogus_comment_state(c, lookahead, eof) {\r\n    var len = lookahead.length;\r\n\r\n    if (eof) {\r\n      nextchar += len-1; // don't consume the eof\r\n    }\r\n    else {\r\n      nextchar += len;\r\n    }\r\n\r\n    var comment = lookahead.substring(0, len-1);\r\n\r\n    comment = comment.replace(/\\u0000/g,\"\\uFFFD\");\r\n    comment = comment.replace(/\\u000D\\u000A/g,\"\\u000A\");\r\n    comment = comment.replace(/\\u000D/g,\"\\u000A\");\r\n\r\n    insertToken(COMMENT, comment);\r\n    tokenizer = data_state;\r\n  }\r\n  bogus_comment_state.lookahead = \">\";\r\n\r\n  function markup_declaration_open_state(c, lookahead, eof) {\r\n    if (lookahead[0] === \"-\" && lookahead[1] === \"-\") {\r\n      nextchar += 2;\r\n      beginComment();\r\n      tokenizer = comment_start_state;\r\n      return;\r\n    }\r\n\r\n    if (lookahead.toUpperCase() === \"DOCTYPE\") {\r\n      nextchar += 7;\r\n      tokenizer = doctype_state;\r\n    }\r\n    else if (lookahead === \"[CDATA[\" && cdataAllowed()) {\r\n      nextchar += 7;\r\n      tokenizer = cdata_section_state;\r\n    }\r\n    else {\r\n      tokenizer = bogus_comment_state;\r\n    }\r\n  }\r\n  markup_declaration_open_state.lookahead = 7;\r\n\r\n  function comment_start_state(c) {\r\n    beginComment();\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_start_dash_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      break; /* see comment in comment end state */\r\n    default:\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_start_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_end_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      break;\r\n    case -1: // EOF\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      emitEOF();\r\n      break; /* see comment in comment end state */\r\n    default:\r\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_state(c) {\r\n    switch(c) {\r\n    case 0x003C: // LESS-THAN SIGN\r\n      commentbuf.push(c);\r\n      tokenizer = comment_less_than_sign_state;\r\n      break;\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_end_dash_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      emitEOF();\r\n      break; /* see comment in comment end state */\r\n    default:\r\n      commentbuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_less_than_sign_state(c) {\r\n    switch(c) {\r\n    case 0x0021: // EXCLAMATION MARK\r\n      commentbuf.push(c);\r\n      tokenizer = comment_less_than_sign_bang_state;\r\n      break;\r\n    case 0x003C: // LESS-THAN SIGN\r\n      commentbuf.push(c);\r\n      break;\r\n    default:\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_less_than_sign_bang_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_less_than_sign_bang_dash_state;\r\n      break;\r\n    default:\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_less_than_sign_bang_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_less_than_sign_bang_dash_dash_state;\r\n      break;\r\n    default:\r\n      reconsume(c, comment_end_dash_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_less_than_sign_bang_dash_dash_state(c) {\r\n    switch(c) {\r\n    case 0x003E: // GREATER-THAN SIGN\r\n    case -1: // EOF\r\n      reconsume(c, comment_end_state);\r\n      break;\r\n    default:\r\n      // parse error\r\n      reconsume(c, comment_end_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_end_dash_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      tokenizer = comment_end_state;\r\n      break;\r\n    case -1: // EOF\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      emitEOF();\r\n      break; /* see comment in comment end state */\r\n    default:\r\n      commentbuf.push(0x002D /* HYPHEN-MINUS */);\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_end_state(c) {\r\n    switch(c) {\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      break;\r\n    case 0x0021: // EXCLAMATION MARK\r\n      tokenizer = comment_end_bang_state;\r\n      break;\r\n    case 0x002D: // HYPHEN-MINUS\r\n      commentbuf.push(0x002D);\r\n      break;\r\n    case -1: // EOF\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      emitEOF();\r\n      break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */\r\n    default:\r\n      commentbuf.push(0x002D);\r\n      commentbuf.push(0x002D);\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function comment_end_bang_state(c) {\r\n    switch(c) {\r\n    case 0x002D: // HYPHEN-MINUS\r\n      commentbuf.push(0x002D);\r\n      commentbuf.push(0x002D);\r\n      commentbuf.push(0x0021);\r\n      tokenizer = comment_end_dash_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      break;\r\n    case -1: // EOF\r\n      insertToken(COMMENT, buf2str(commentbuf));\r\n      emitEOF();\r\n      break; /* see comment in comment end state */\r\n    default:\r\n      commentbuf.push(0x002D);\r\n      commentbuf.push(0x002D);\r\n      commentbuf.push(0x0021);\r\n      reconsume(c, comment_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = before_doctype_name_state;\r\n      break;\r\n    case -1: // EOF\r\n      beginDoctype();\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      reconsume(c, before_doctype_name_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function before_doctype_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      beginDoctype();\r\n      doctypenamebuf.push(c + 0x0020);\r\n      tokenizer = doctype_name_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      beginDoctype();\r\n      doctypenamebuf.push(0xFFFD);\r\n      tokenizer = doctype_name_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      beginDoctype();\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      beginDoctype();\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      beginDoctype();\r\n      doctypenamebuf.push(c);\r\n      tokenizer = doctype_name_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_name_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = after_doctype_name_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case 0x0041:  // [A-Z]\r\n    case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046:\r\n    case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B:\r\n    case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050:\r\n    case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055:\r\n    case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A:\r\n      doctypenamebuf.push(c + 0x0020);\r\n      break;\r\n    case 0x0000: // NULL\r\n      doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      doctypenamebuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function after_doctype_name_state(c, lookahead, eof) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      nextchar += 1;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      nextchar += 1;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      lookahead = lookahead.toUpperCase();\r\n      if (lookahead === \"PUBLIC\") {\r\n        nextchar += 6;\r\n        tokenizer = after_doctype_public_keyword_state;\r\n      }\r\n      else if (lookahead === \"SYSTEM\") {\r\n        nextchar += 6;\r\n        tokenizer = after_doctype_system_keyword_state;\r\n      }\r\n      else {\r\n        forcequirks();\r\n        tokenizer = bogus_doctype_state;\r\n      }\r\n      break;\r\n    }\r\n  }\r\n  after_doctype_name_state.lookahead = 6;\r\n\r\n  function after_doctype_public_keyword_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = before_doctype_public_identifier_state;\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypePublicId();\r\n      tokenizer = doctype_public_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypePublicId();\r\n      tokenizer = doctype_public_identifier_single_quoted_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function before_doctype_public_identifier_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypePublicId();\r\n      tokenizer = doctype_public_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypePublicId();\r\n      tokenizer = doctype_public_identifier_single_quoted_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_public_identifier_double_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0022: // QUOTATION MARK\r\n      tokenizer = after_doctype_public_identifier_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      doctypepublicbuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_public_identifier_single_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0027: // APOSTROPHE\r\n      tokenizer = after_doctype_public_identifier_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      doctypepublicbuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function after_doctype_public_identifier_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = between_doctype_public_and_system_identifiers_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_single_quoted_state;\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function between_doctype_public_and_system_identifiers_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE Ignore the character.\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_single_quoted_state;\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function after_doctype_system_keyword_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      tokenizer = before_doctype_system_identifier_state;\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_single_quoted_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function before_doctype_system_identifier_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE Ignore the character.\r\n      break;\r\n    case 0x0022: // QUOTATION MARK\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_double_quoted_state;\r\n      break;\r\n    case 0x0027: // APOSTROPHE\r\n      beginDoctypeSystemId();\r\n      tokenizer = doctype_system_identifier_single_quoted_state;\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      forcequirks();\r\n      tokenizer = bogus_doctype_state;\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_system_identifier_double_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0022: // QUOTATION MARK\r\n      tokenizer = after_doctype_system_identifier_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      doctypesystembuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function doctype_system_identifier_single_quoted_state(c) {\r\n    switch(c) {\r\n    case 0x0027: // APOSTROPHE\r\n      tokenizer = after_doctype_system_identifier_state;\r\n      break;\r\n    case 0x0000: // NULL\r\n      doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      forcequirks();\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      doctypesystembuf.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function after_doctype_system_identifier_state(c) {\r\n    switch(c) {\r\n    case 0x0009: // CHARACTER TABULATION (tab)\r\n    case 0x000A: // LINE FEED (LF)\r\n    case 0x000C: // FORM FEED (FF)\r\n    case 0x0020: // SPACE\r\n      /* Ignore the character. */\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      forcequirks();\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      tokenizer = bogus_doctype_state;\r\n      /* This does *not* set the DOCTYPE token's force-quirks flag. */\r\n      break;\r\n    }\r\n  }\r\n\r\n  function bogus_doctype_state(c) {\r\n    switch(c) {\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      tokenizer = data_state;\r\n      emitDoctype();\r\n      break;\r\n    case -1: // EOF\r\n      emitDoctype();\r\n      emitEOF();\r\n      break;\r\n    default:\r\n      /* Ignore the character. */\r\n      break;\r\n    }\r\n  }\r\n\r\n  function cdata_section_state(c) {\r\n    switch(c) {\r\n    case 0x005D: // RIGHT SQUARE BRACKET\r\n      tokenizer = cdata_section_bracket_state;\r\n      break;\r\n    case -1: // EOF\r\n      emitEOF();\r\n      break;\r\n    case 0x0000: // NULL\r\n      textIncludesNUL = true;\r\n      /* fall through */\r\n    default:\r\n      // Instead of just pushing a single character and then\r\n      // coming back to the very same place, lookahead and\r\n      // emit everything we can at once.\r\n      /*jshint -W030 */\r\n      emitCharsWhile(CDATATEXT) || textrun.push(c);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function cdata_section_bracket_state(c) {\r\n    switch(c) {\r\n    case 0x005D: // RIGHT SQUARE BRACKET\r\n      tokenizer = cdata_section_end_state;\r\n      break;\r\n    default:\r\n      textrun.push(0x005D);\r\n      reconsume(c, cdata_section_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function cdata_section_end_state(c) {\r\n    switch(c) {\r\n    case 0x005D: // RIGHT SQUARE BRACKET\r\n      textrun.push(0x005D);\r\n      break;\r\n    case 0x003E: // GREATER-THAN SIGN\r\n      flushText();\r\n      tokenizer = data_state;\r\n      break;\r\n    default:\r\n      textrun.push(0x005D);\r\n      textrun.push(0x005D);\r\n      reconsume(c, cdata_section_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function character_reference_state(c) {\r\n    beginTempBuf();\r\n    tempbuf.push(0x0026);\r\n    switch(c) {\r\n    case 0x0009: // TAB\r\n    case 0x000A: // LINE FEED\r\n    case 0x000C: // FORM FEED\r\n    case 0x0020: // SPACE\r\n    case 0x003C: // LESS-THAN SIGN\r\n    case 0x0026: // AMPERSAND\r\n    case -1: // EOF\r\n      reconsume(c, character_reference_end_state);\r\n      break;\r\n    case 0x0023: // NUMBER SIGN\r\n      tempbuf.push(c);\r\n      tokenizer = numeric_character_reference_state;\r\n      break;\r\n    default:\r\n      reconsume(c, named_character_reference_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function named_character_reference_state(c) {\r\n    NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed\r\n    var matched = NAMEDCHARREF.exec(chars);\r\n    if (!matched) throw new Error(\"should never happen\");\r\n    var name = matched[1];\r\n    if (!name) {\r\n      // If no match can be made, switch to the character reference end state\r\n      tokenizer = character_reference_end_state;\r\n      return;\r\n    }\r\n\r\n    // Consume the matched characters and append them to temporary buffer\r\n    nextchar += name.length;\r\n    pushAll(tempbuf, str2buf(name));\r\n\r\n    switch(return_state) {\r\n    case attribute_value_double_quoted_state:\r\n    case attribute_value_single_quoted_state:\r\n    case attribute_value_unquoted_state:\r\n      // If the character reference was consumed as part of an attribute...\r\n      if (name[name.length-1] !== ';') { // ...and the last char is not ;\r\n        if (/[=A-Za-z0-9]/.test(chars[nextchar])) {\r\n          tokenizer = character_reference_end_state;\r\n          return;\r\n        }\r\n      }\r\n      break;\r\n    default:\r\n      break;\r\n    }\r\n\r\n    beginTempBuf();\r\n    var rv = namedCharRefs[name];\r\n    if (typeof rv === 'number') {\r\n      tempbuf.push(rv);\r\n    } else {\r\n      pushAll(tempbuf, rv);\r\n    }\r\n    tokenizer = character_reference_end_state;\r\n  }\r\n  // We might need to pause tokenization until we have enough characters\r\n  // in the buffer for longest possible character reference.\r\n  named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN;\r\n\r\n  function numeric_character_reference_state(c) {\r\n    character_reference_code = 0;\r\n    switch(c) {\r\n    case 0x0078: // x\r\n    case 0x0058: // X\r\n      tempbuf.push(c);\r\n      tokenizer = hexadecimal_character_reference_start_state;\r\n      break;\r\n    default:\r\n      reconsume(c, decimal_character_reference_start_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function hexadecimal_character_reference_start_state(c) {\r\n    switch(c) {\r\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\r\n    case 0x0046: // [A-F]\r\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\r\n    case 0x0066: // [a-f]\r\n      reconsume(c, hexadecimal_character_reference_state);\r\n      break;\r\n    default:\r\n      reconsume(c, character_reference_end_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function decimal_character_reference_start_state(c) {\r\n    switch(c) {\r\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n      reconsume(c, decimal_character_reference_state);\r\n      break;\r\n    default:\r\n      reconsume(c, character_reference_end_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function hexadecimal_character_reference_state(c) {\r\n    switch(c) {\r\n    case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045:\r\n    case 0x0046: // [A-F]\r\n      character_reference_code *= 16;\r\n      character_reference_code += (c - 0x0037);\r\n      break;\r\n    case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065:\r\n    case 0x0066: // [a-f]\r\n      character_reference_code *= 16;\r\n      character_reference_code += (c - 0x0057);\r\n      break;\r\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n      character_reference_code *= 16;\r\n      character_reference_code += (c - 0x0030);\r\n      break;\r\n    case 0x003B: // SEMICOLON\r\n      tokenizer = numeric_character_reference_end_state;\r\n      break;\r\n    default:\r\n      reconsume(c, numeric_character_reference_end_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function decimal_character_reference_state(c) {\r\n    switch(c) {\r\n    case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034:\r\n    case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9]\r\n      character_reference_code *= 10;\r\n      character_reference_code += (c - 0x0030);\r\n      break;\r\n    case 0x003B: // SEMICOLON\r\n      tokenizer = numeric_character_reference_end_state;\r\n      break;\r\n    default:\r\n      reconsume(c, numeric_character_reference_end_state);\r\n      break;\r\n    }\r\n  }\r\n\r\n  function numeric_character_reference_end_state(c) {\r\n    if (character_reference_code in numericCharRefReplacements) {\r\n      character_reference_code = numericCharRefReplacements[character_reference_code];\r\n    } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) {\r\n      character_reference_code = 0xFFFD;\r\n    }\r\n\r\n    beginTempBuf();\r\n    if (character_reference_code <= 0xFFFF) {\r\n      tempbuf.push(character_reference_code);\r\n    } else {\r\n      character_reference_code = character_reference_code - 0x10000;\r\n      /* jshint bitwise: false */\r\n      tempbuf.push(0xD800 + (character_reference_code >> 10));\r\n      tempbuf.push(0xDC00 + (character_reference_code & 0x03FF));\r\n    }\r\n    reconsume(c, character_reference_end_state);\r\n  }\r\n\r\n  function character_reference_end_state(c) {\r\n    switch(return_state) {\r\n    case attribute_value_double_quoted_state:\r\n    case attribute_value_single_quoted_state:\r\n    case attribute_value_unquoted_state:\r\n      // append each character to the current attribute's value\r\n      attrvaluebuf += buf2str(tempbuf);\r\n      break;\r\n    default:\r\n      pushAll(textrun, tempbuf);\r\n      break;\r\n    }\r\n    reconsume(c, return_state);\r\n  }\r\n\r\n  /***\r\n   * The tree builder insertion modes\r\n   */\r\n\r\n  // 11.2.5.4.1 The \"initial\" insertion mode\r\n  function initial_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\r\n      if (value.length === 0) return; // Are we done?\r\n      break; // Handle anything non-space text below\r\n    case 4: // COMMENT\r\n      doc._appendChild(doc.createComment(value));\r\n      return;\r\n    case 5: // DOCTYPE\r\n      var name = value;\r\n      var publicid = arg3;\r\n      var systemid = arg4;\r\n      // Use the constructor directly instead of\r\n      // implementation.createDocumentType because the create\r\n      // function throws errors on invalid characters, and\r\n      // we don't want the parser to throw them.\r\n      doc.appendChild(new DocumentType(doc, name, publicid, systemid));\r\n\r\n      // Note that there is no public API for setting quirks mode We can\r\n      // do this here because we have access to implementation details\r\n      if (force_quirks ||\r\n        name.toLowerCase() !== \"html\" ||\r\n        quirkyPublicIds.test(publicid) ||\r\n        (systemid && systemid.toLowerCase() === quirkySystemId) ||\r\n        (systemid === undefined &&\r\n         conditionallyQuirkyPublicIds.test(publicid)))\r\n        doc._quirks = true;\r\n      else if (limitedQuirkyPublicIds.test(publicid) ||\r\n           (systemid !== undefined &&\r\n            conditionallyQuirkyPublicIds.test(publicid)))\r\n        doc._limitedQuirks = true;\r\n      parser = before_html_mode;\r\n      return;\r\n    }\r\n\r\n    // tags or non-whitespace text\r\n    doc._quirks = true;\r\n    parser = before_html_mode;\r\n    parser(t,value,arg3,arg4);\r\n  }\r\n\r\n  // 11.2.5.4.2 The \"before html\" insertion mode\r\n  function before_html_mode(t,value,arg3,arg4) {\r\n    var elt;\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      value = value.replace(LEADINGWS, \"\"); // Ignore spaces\r\n      if (value.length === 0) return; // Are we done?\r\n      break; // Handle anything non-space text below\r\n    case 5: // DOCTYPE\r\n      /* ignore the token */\r\n      return;\r\n    case 4: // COMMENT\r\n      doc._appendChild(doc.createComment(value));\r\n      return;\r\n    case 2: // TAG\r\n      if (value === \"html\") {\r\n        elt = createHTMLElt(doc, value, arg3);\r\n        stack.push(elt);\r\n        doc.appendChild(elt);\r\n        // XXX: handle application cache here\r\n        parser = before_head_mode;\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"html\":\r\n      case \"head\":\r\n      case \"body\":\r\n      case \"br\":\r\n        break;  // fall through on these\r\n      default:\r\n        return; // ignore most end tags\r\n      }\r\n    }\r\n\r\n    // Anything that didn't get handled above is handled like this:\r\n    elt = createHTMLElt(doc, \"html\", null);\r\n    stack.push(elt);\r\n    doc.appendChild(elt);\r\n    // XXX: handle application cache here\r\n    parser = before_head_mode;\r\n    parser(t,value,arg3,arg4);\r\n  }\r\n\r\n  // 11.2.5.4.3 The \"before head\" insertion mode\r\n  function before_head_mode(t,value,arg3,arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      value = value.replace(LEADINGWS, \"\");  // Ignore spaces\r\n      if (value.length === 0) return; // Are we done?\r\n      break;  // Handle anything non-space text below\r\n    case 5: // DOCTYPE\r\n      /* ignore the token */\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t,value,arg3,arg4);\r\n        return;\r\n      case \"head\":\r\n        var elt = insertHTMLElement(value, arg3);\r\n        head_element_pointer = elt;\r\n        parser = in_head_mode;\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"html\":\r\n      case \"head\":\r\n      case \"body\":\r\n      case \"br\":\r\n        break;\r\n      default:\r\n        return; // ignore most end tags\r\n      }\r\n    }\r\n\r\n    // If not handled explicitly above\r\n    before_head_mode(TAG, \"head\", null); // create a head tag\r\n    parser(t, value, arg3, arg4); // then try again with this token\r\n  }\r\n\r\n  function in_head_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      var ws = value.match(LEADINGWS);\r\n      if (ws) {\r\n        insertText(ws[0]);\r\n        value = value.substring(ws[0].length);\r\n      }\r\n      if (value.length === 0) return;\r\n      break; // Handle non-whitespace below\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"meta\":\r\n        // XXX:\r\n        // May need to change the encoding based on this tag\r\n        /* falls through */\r\n      case \"base\":\r\n      case \"basefont\":\r\n      case \"bgsound\":\r\n      case \"link\":\r\n        insertHTMLElement(value, arg3);\r\n        stack.pop();\r\n        return;\r\n      case \"title\":\r\n        parseRCDATA(value, arg3);\r\n        return;\r\n      case \"noscript\":\r\n        if (!scripting_enabled) {\r\n          insertHTMLElement(value, arg3);\r\n          parser = in_head_noscript_mode;\r\n          return;\r\n        }\r\n        // Otherwise, if scripting is enabled...\r\n        /* falls through */\r\n      case \"noframes\":\r\n      case \"style\":\r\n        parseRawText(value,arg3);\r\n        return;\r\n      case \"script\":\r\n        insertElement(function(doc) {\r\n          var elt = createHTMLElt(doc, value, arg3);\r\n          elt._parser_inserted = true;\r\n          elt._force_async = false;\r\n          if (fragment) elt._already_started = true;\r\n          flushText();\r\n          return elt;\r\n        });\r\n        tokenizer = script_data_state;\r\n        originalInsertionMode = parser;\r\n        parser = text_mode;\r\n        return;\r\n      case \"template\":\r\n        insertHTMLElement(value, arg3);\r\n        afe.insertMarker();\r\n        frameset_ok = false;\r\n        parser = in_template_mode;\r\n        templateInsertionModes.push(parser);\r\n        return;\r\n      case \"head\":\r\n        return; // ignore it\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"head\":\r\n        stack.pop();\r\n        parser = after_head_mode;\r\n        return;\r\n      case \"body\":\r\n      case \"html\":\r\n      case \"br\":\r\n        break; // handle these at the bottom of the function\r\n      case \"template\":\r\n        if (!stack.contains(\"template\")) {\r\n          return;\r\n        }\r\n        stack.generateImpliedEndTags(null, \"thorough\");\r\n        stack.popTag(\"template\");\r\n        afe.clearToMarker();\r\n        templateInsertionModes.pop();\r\n        resetInsertionMode();\r\n        return;\r\n      default:\r\n        // ignore any other end tag\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // If not handled above\r\n    in_head_mode(ENDTAG, \"head\", null);   // synthetic </head>\r\n    parser(t, value, arg3, arg4);   // Then redo this one\r\n  }\r\n\r\n  // 13.2.5.4.5 The \"in head noscript\" insertion mode\r\n  function in_head_noscript_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 4: // COMMENT\r\n      in_head_mode(t, value);\r\n      return;\r\n    case 1: // TEXT\r\n      var ws = value.match(LEADINGWS);\r\n      if (ws) {\r\n        in_head_mode(t, ws[0]);\r\n        value = value.substring(ws[0].length);\r\n      }\r\n      if (value.length === 0) return; // no more text\r\n      break; // Handle non-whitespace below\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"basefont\":\r\n      case \"bgsound\":\r\n      case \"link\":\r\n      case \"meta\":\r\n      case \"noframes\":\r\n      case \"style\":\r\n        in_head_mode(t, value, arg3);\r\n        return;\r\n      case \"head\":\r\n      case \"noscript\":\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"noscript\":\r\n        stack.pop();\r\n        parser = in_head_mode;\r\n        return;\r\n      case \"br\":\r\n        break;  // goes to the outer default\r\n      default:\r\n        return; // ignore other end tags\r\n      }\r\n      break;\r\n    }\r\n\r\n    // If not handled above\r\n    in_head_noscript_mode(ENDTAG, \"noscript\", null);\r\n    parser(t, value, arg3, arg4);\r\n  }\r\n\r\n  function after_head_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      var ws = value.match(LEADINGWS);\r\n      if (ws) {\r\n        insertText(ws[0]);\r\n        value = value.substring(ws[0].length);\r\n      }\r\n      if (value.length === 0) return;\r\n      break; // Handle non-whitespace below\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"body\":\r\n        insertHTMLElement(value, arg3);\r\n        frameset_ok = false;\r\n        parser = in_body_mode;\r\n        return;\r\n      case \"frameset\":\r\n        insertHTMLElement(value, arg3);\r\n        parser = in_frameset_mode;\r\n        return;\r\n      case \"base\":\r\n      case \"basefont\":\r\n      case \"bgsound\":\r\n      case \"link\":\r\n      case \"meta\":\r\n      case \"noframes\":\r\n      case \"script\":\r\n      case \"style\":\r\n      case \"template\":\r\n      case \"title\":\r\n        stack.push(head_element_pointer);\r\n        in_head_mode(TAG, value, arg3);\r\n        stack.removeElement(head_element_pointer);\r\n        return;\r\n      case \"head\":\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"template\":\r\n        return in_head_mode(t, value, arg3, arg4);\r\n      case \"body\":\r\n      case \"html\":\r\n      case \"br\":\r\n        break;\r\n      default:\r\n        return;  // ignore any other end tag\r\n      }\r\n      break;\r\n    }\r\n\r\n    after_head_mode(TAG, \"body\", null);\r\n    frameset_ok = true;\r\n    parser(t, value, arg3, arg4);\r\n  }\r\n\r\n  // 13.2.5.4.7 The \"in body\" insertion mode\r\n  function in_body_mode(t,value,arg3,arg4) {\r\n    var body, i, node, elt;\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      if (textIncludesNUL) {\r\n        value = value.replace(NULCHARS, \"\");\r\n        if (value.length === 0) return;\r\n      }\r\n      // If any non-space characters\r\n      if (frameset_ok && NONWS.test(value))\r\n        frameset_ok = false;\r\n      afereconstruct();\r\n      insertText(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case -1: // EOF\r\n      if (templateInsertionModes.length) {\r\n        return in_template_mode(t);\r\n      }\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        if (stack.contains(\"template\")) {\r\n          return;\r\n        }\r\n        transferAttributes(arg3, stack.elements[0]);\r\n        return;\r\n      case \"base\":\r\n      case \"basefont\":\r\n      case \"bgsound\":\r\n      case \"link\":\r\n      case \"meta\":\r\n      case \"noframes\":\r\n      case \"script\":\r\n      case \"style\":\r\n      case \"template\":\r\n      case \"title\":\r\n        in_head_mode(TAG, value, arg3);\r\n        return;\r\n      case \"body\":\r\n        body = stack.elements[1];\r\n        if (!body || !(body instanceof impl.HTMLBodyElement) ||\r\n            stack.contains(\"template\"))\r\n          return;\r\n        frameset_ok = false;\r\n        transferAttributes(arg3, body);\r\n        return;\r\n      case \"frameset\":\r\n        if (!frameset_ok) return;\r\n        body = stack.elements[1];\r\n        if (!body || !(body instanceof impl.HTMLBodyElement))\r\n          return;\r\n        if (body.parentNode) body.parentNode.removeChild(body);\r\n        while(!(stack.top instanceof impl.HTMLHtmlElement))\r\n          stack.pop();\r\n        insertHTMLElement(value, arg3);\r\n        parser = in_frameset_mode;\r\n        return;\r\n\r\n      case \"address\":\r\n      case \"article\":\r\n      case \"aside\":\r\n      case \"blockquote\":\r\n      case \"center\":\r\n      case \"details\":\r\n      case \"dialog\":\r\n      case \"dir\":\r\n      case \"div\":\r\n      case \"dl\":\r\n      case \"fieldset\":\r\n      case \"figcaption\":\r\n      case \"figure\":\r\n      case \"footer\":\r\n      case \"header\":\r\n      case \"hgroup\":\r\n      case \"main\":\r\n      case \"nav\":\r\n      case \"ol\":\r\n      case \"p\":\r\n      case \"section\":\r\n      case \"summary\":\r\n      case \"ul\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"menu\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        if (isA(stack.top, 'menuitem')) {\r\n          stack.pop();\r\n        }\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"h1\":\r\n      case \"h2\":\r\n      case \"h3\":\r\n      case \"h4\":\r\n      case \"h5\":\r\n      case \"h6\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        if (stack.top instanceof impl.HTMLHeadingElement)\r\n          stack.pop();\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"pre\":\r\n      case \"listing\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        insertHTMLElement(value, arg3);\r\n        ignore_linefeed = true;\r\n        frameset_ok = false;\r\n        return;\r\n\r\n      case \"form\":\r\n        if (form_element_pointer && !stack.contains(\"template\")) return;\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        elt = insertHTMLElement(value, arg3);\r\n        if (!stack.contains(\"template\"))\r\n          form_element_pointer = elt;\r\n        return;\r\n\r\n      case \"li\":\r\n        frameset_ok = false;\r\n        for(i = stack.elements.length-1; i >= 0; i--) {\r\n          node = stack.elements[i];\r\n          if (node instanceof impl.HTMLLIElement) {\r\n            in_body_mode(ENDTAG, \"li\");\r\n            break;\r\n          }\r\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\r\n            break;\r\n        }\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"dd\":\r\n      case \"dt\":\r\n        frameset_ok = false;\r\n        for(i = stack.elements.length-1; i >= 0; i--) {\r\n          node = stack.elements[i];\r\n          if (isA(node, dddtSet)) {\r\n            in_body_mode(ENDTAG, node.localName);\r\n            break;\r\n          }\r\n          if (isA(node, specialSet) && !isA(node, addressdivpSet))\r\n            break;\r\n        }\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"plaintext\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        insertHTMLElement(value, arg3);\r\n        tokenizer = plaintext_state;\r\n        return;\r\n\r\n      case \"button\":\r\n        if (stack.inScope(\"button\")) {\r\n          in_body_mode(ENDTAG, \"button\");\r\n          parser(t, value, arg3, arg4);\r\n        }\r\n        else {\r\n          afereconstruct();\r\n          insertHTMLElement(value, arg3);\r\n          frameset_ok = false;\r\n        }\r\n        return;\r\n\r\n      case \"a\":\r\n        var activeElement = afe.findElementByTag(\"a\");\r\n        if (activeElement) {\r\n          in_body_mode(ENDTAG, value);\r\n          afe.remove(activeElement);\r\n          stack.removeElement(activeElement);\r\n        }\r\n        /* falls through */\r\n      case \"b\":\r\n      case \"big\":\r\n      case \"code\":\r\n      case \"em\":\r\n      case \"font\":\r\n      case \"i\":\r\n      case \"s\":\r\n      case \"small\":\r\n      case \"strike\":\r\n      case \"strong\":\r\n      case \"tt\":\r\n      case \"u\":\r\n        afereconstruct();\r\n        afe.push(insertHTMLElement(value,arg3), arg3);\r\n        return;\r\n\r\n      case \"nobr\":\r\n        afereconstruct();\r\n\r\n        if (stack.inScope(value)) {\r\n          in_body_mode(ENDTAG, value);\r\n          afereconstruct();\r\n        }\r\n        afe.push(insertHTMLElement(value,arg3), arg3);\r\n        return;\r\n\r\n      case \"applet\":\r\n      case \"marquee\":\r\n      case \"object\":\r\n        afereconstruct();\r\n        insertHTMLElement(value,arg3);\r\n        afe.insertMarker();\r\n        frameset_ok = false;\r\n        return;\r\n\r\n      case \"table\":\r\n        if (!doc._quirks && stack.inButtonScope(\"p\")) {\r\n          in_body_mode(ENDTAG, \"p\");\r\n        }\r\n        insertHTMLElement(value,arg3);\r\n        frameset_ok = false;\r\n        parser = in_table_mode;\r\n        return;\r\n\r\n      case \"area\":\r\n      case \"br\":\r\n      case \"embed\":\r\n      case \"img\":\r\n      case \"keygen\":\r\n      case \"wbr\":\r\n        afereconstruct();\r\n        insertHTMLElement(value,arg3);\r\n        stack.pop();\r\n        frameset_ok = false;\r\n        return;\r\n\r\n      case \"input\":\r\n        afereconstruct();\r\n        elt = insertHTMLElement(value,arg3);\r\n        stack.pop();\r\n        var type = elt.getAttribute(\"type\");\r\n        if (!type || type.toLowerCase() !== \"hidden\")\r\n          frameset_ok = false;\r\n        return;\r\n\r\n      case \"param\":\r\n      case \"source\":\r\n      case \"track\":\r\n        insertHTMLElement(value,arg3);\r\n        stack.pop();\r\n        return;\r\n\r\n      case \"hr\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        if (isA(stack.top, 'menuitem')) {\r\n          stack.pop();\r\n        }\r\n        insertHTMLElement(value,arg3);\r\n        stack.pop();\r\n        frameset_ok = false;\r\n        return;\r\n\r\n      case \"image\":\r\n        in_body_mode(TAG, \"img\", arg3, arg4);\r\n        return;\r\n\r\n      case \"textarea\":\r\n        insertHTMLElement(value,arg3);\r\n        ignore_linefeed = true;\r\n        frameset_ok = false;\r\n        tokenizer = rcdata_state;\r\n        originalInsertionMode = parser;\r\n        parser = text_mode;\r\n        return;\r\n\r\n      case \"xmp\":\r\n        if (stack.inButtonScope(\"p\")) in_body_mode(ENDTAG, \"p\");\r\n        afereconstruct();\r\n        frameset_ok = false;\r\n        parseRawText(value, arg3);\r\n        return;\r\n\r\n      case \"iframe\":\r\n        frameset_ok = false;\r\n        parseRawText(value, arg3);\r\n        return;\r\n\r\n      case \"noembed\":\r\n        parseRawText(value,arg3);\r\n        return;\r\n\r\n      case \"select\":\r\n        afereconstruct();\r\n        insertHTMLElement(value,arg3);\r\n        frameset_ok = false;\r\n        if (parser === in_table_mode ||\r\n          parser === in_caption_mode ||\r\n          parser === in_table_body_mode ||\r\n          parser === in_row_mode ||\r\n          parser === in_cell_mode)\r\n          parser = in_select_in_table_mode;\r\n        else\r\n          parser = in_select_mode;\r\n        return;\r\n\r\n      case \"optgroup\":\r\n      case \"option\":\r\n        if (stack.top instanceof impl.HTMLOptionElement) {\r\n          in_body_mode(ENDTAG, \"option\");\r\n        }\r\n        afereconstruct();\r\n        insertHTMLElement(value,arg3);\r\n        return;\r\n\r\n      case \"menuitem\":\r\n        if (isA(stack.top, 'menuitem')) {\r\n          stack.pop();\r\n        }\r\n        afereconstruct();\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n\r\n      case \"rb\":\r\n      case \"rtc\":\r\n        if (stack.inScope(\"ruby\")) {\r\n          stack.generateImpliedEndTags();\r\n        }\r\n        insertHTMLElement(value,arg3);\r\n        return;\r\n\r\n      case \"rp\":\r\n      case \"rt\":\r\n        if (stack.inScope(\"ruby\")) {\r\n          stack.generateImpliedEndTags(\"rtc\");\r\n        }\r\n        insertHTMLElement(value,arg3);\r\n        return;\r\n\r\n      case \"math\":\r\n        afereconstruct();\r\n        adjustMathMLAttributes(arg3);\r\n        adjustForeignAttributes(arg3);\r\n        insertForeignElement(value, arg3, NAMESPACE.MATHML);\r\n        if (arg4) // self-closing flag\r\n          stack.pop();\r\n        return;\r\n\r\n      case \"svg\":\r\n        afereconstruct();\r\n        adjustSVGAttributes(arg3);\r\n        adjustForeignAttributes(arg3);\r\n        insertForeignElement(value, arg3, NAMESPACE.SVG);\r\n        if (arg4) // self-closing flag\r\n          stack.pop();\r\n        return;\r\n\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"frame\":\r\n      case \"head\":\r\n      case \"tbody\":\r\n      case \"td\":\r\n      case \"tfoot\":\r\n      case \"th\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        // Ignore table tags if we're not in_table mode\r\n        return;\r\n      }\r\n\r\n      // Handle any other start tag here\r\n      // (and also noscript tags when scripting is disabled)\r\n      afereconstruct();\r\n      insertHTMLElement(value,arg3);\r\n      return;\r\n\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"template\":\r\n        in_head_mode(ENDTAG, value, arg3);\r\n        return;\r\n      case \"body\":\r\n        if (!stack.inScope(\"body\")) return;\r\n        parser = after_body_mode;\r\n        return;\r\n      case \"html\":\r\n        if (!stack.inScope(\"body\")) return;\r\n        parser = after_body_mode;\r\n        parser(t, value, arg3);\r\n        return;\r\n\r\n      case \"address\":\r\n      case \"article\":\r\n      case \"aside\":\r\n      case \"blockquote\":\r\n      case \"button\":\r\n      case \"center\":\r\n      case \"details\":\r\n      case \"dialog\":\r\n      case \"dir\":\r\n      case \"div\":\r\n      case \"dl\":\r\n      case \"fieldset\":\r\n      case \"figcaption\":\r\n      case \"figure\":\r\n      case \"footer\":\r\n      case \"header\":\r\n      case \"hgroup\":\r\n      case \"listing\":\r\n      case \"main\":\r\n      case \"menu\":\r\n      case \"nav\":\r\n      case \"ol\":\r\n      case \"pre\":\r\n      case \"section\":\r\n      case \"summary\":\r\n      case \"ul\":\r\n        // Ignore if there is not a matching open tag\r\n        if (!stack.inScope(value)) return;\r\n        stack.generateImpliedEndTags();\r\n        stack.popTag(value);\r\n        return;\r\n\r\n      case \"form\":\r\n        if (!stack.contains(\"template\")) {\r\n          var openform = form_element_pointer;\r\n          form_element_pointer = null;\r\n          if (!openform || !stack.elementInScope(openform)) return;\r\n          stack.generateImpliedEndTags();\r\n          stack.removeElement(openform);\r\n        } else {\r\n          if (!stack.inScope(\"form\")) return;\r\n          stack.generateImpliedEndTags();\r\n          stack.popTag(\"form\");\r\n        }\r\n        return;\r\n\r\n      case \"p\":\r\n        if (!stack.inButtonScope(value)) {\r\n          in_body_mode(TAG, value, null);\r\n          parser(t, value, arg3, arg4);\r\n        }\r\n        else {\r\n          stack.generateImpliedEndTags(value);\r\n          stack.popTag(value);\r\n        }\r\n        return;\r\n\r\n      case \"li\":\r\n        if (!stack.inListItemScope(value)) return;\r\n        stack.generateImpliedEndTags(value);\r\n        stack.popTag(value);\r\n        return;\r\n\r\n      case \"dd\":\r\n      case \"dt\":\r\n        if (!stack.inScope(value)) return;\r\n        stack.generateImpliedEndTags(value);\r\n        stack.popTag(value);\r\n        return;\r\n\r\n      case \"h1\":\r\n      case \"h2\":\r\n      case \"h3\":\r\n      case \"h4\":\r\n      case \"h5\":\r\n      case \"h6\":\r\n        if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return;\r\n        stack.generateImpliedEndTags();\r\n        stack.popElementType(impl.HTMLHeadingElement);\r\n        return;\r\n\r\n      case \"sarcasm\":\r\n        // Take a deep breath, and then:\r\n        break;\r\n\r\n      case \"a\":\r\n      case \"b\":\r\n      case \"big\":\r\n      case \"code\":\r\n      case \"em\":\r\n      case \"font\":\r\n      case \"i\":\r\n      case \"nobr\":\r\n      case \"s\":\r\n      case \"small\":\r\n      case \"strike\":\r\n      case \"strong\":\r\n      case \"tt\":\r\n      case \"u\":\r\n        var result = adoptionAgency(value);\r\n        if (result) return;  // If we did something we're done\r\n        break;         // Go to the \"any other end tag\" case\r\n\r\n      case \"applet\":\r\n      case \"marquee\":\r\n      case \"object\":\r\n        if (!stack.inScope(value)) return;\r\n        stack.generateImpliedEndTags();\r\n        stack.popTag(value);\r\n        afe.clearToMarker();\r\n        return;\r\n\r\n      case \"br\":\r\n        in_body_mode(TAG, value, null);  // Turn </br> into <br>\r\n        return;\r\n      }\r\n\r\n      // Any other end tag goes here\r\n      for(i = stack.elements.length-1; i >= 0; i--) {\r\n        node = stack.elements[i];\r\n        if (isA(node, value)) {\r\n          stack.generateImpliedEndTags(value);\r\n          stack.popElement(node);\r\n          break;\r\n        }\r\n        else if (isA(node, specialSet)) {\r\n          return;\r\n        }\r\n      }\r\n\r\n      return;\r\n    }\r\n  }\r\n\r\n  function text_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      insertText(value);\r\n      return;\r\n    case -1: // EOF\r\n      if (stack.top instanceof impl.HTMLScriptElement)\r\n        stack.top._already_started = true;\r\n      stack.pop();\r\n      parser = originalInsertionMode;\r\n      parser(t);\r\n      return;\r\n    case 3: // ENDTAG\r\n      if (value === \"script\") {\r\n        handleScriptEnd();\r\n      }\r\n      else {\r\n        stack.pop();\r\n        parser = originalInsertionMode;\r\n      }\r\n      return;\r\n    default:\r\n      // We should never get any other token types\r\n      return;\r\n    }\r\n  }\r\n\r\n  function in_table_mode(t, value, arg3, arg4) {\r\n    function getTypeAttr(attrs) {\r\n      for(var i = 0, n = attrs.length; i < n; i++) {\r\n        if (attrs[i][0] === \"type\")\r\n          return attrs[i][1].toLowerCase();\r\n      }\r\n      return null;\r\n    }\r\n\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // XXX the text_integration_mode stuff is\r\n      // just a hack I made up\r\n      if (text_integration_mode) {\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      else if (isA(stack.top, tablesectionrowSet)) {\r\n        pending_table_text = [];\r\n        originalInsertionMode = parser;\r\n        parser = in_table_text_mode;\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"caption\":\r\n        stack.clearToContext(tableContextSet);\r\n        afe.insertMarker();\r\n        insertHTMLElement(value,arg3);\r\n        parser = in_caption_mode;\r\n        return;\r\n      case \"colgroup\":\r\n        stack.clearToContext(tableContextSet);\r\n        insertHTMLElement(value,arg3);\r\n        parser = in_column_group_mode;\r\n        return;\r\n      case \"col\":\r\n        in_table_mode(TAG, \"colgroup\", null);\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n        stack.clearToContext(tableContextSet);\r\n        insertHTMLElement(value,arg3);\r\n        parser = in_table_body_mode;\r\n        return;\r\n      case \"td\":\r\n      case \"th\":\r\n      case \"tr\":\r\n        in_table_mode(TAG, \"tbody\", null);\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n\r\n      case \"table\":\r\n        if (!stack.inTableScope(value)) {\r\n          return; // Ignore the token\r\n        }\r\n        in_table_mode(ENDTAG, value);\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n\r\n      case \"style\":\r\n      case \"script\":\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n\r\n      case \"input\":\r\n        var type = getTypeAttr(arg3);\r\n        if (type !== \"hidden\") break;  // to the anything else case\r\n        insertHTMLElement(value,arg3);\r\n        stack.pop();\r\n        return;\r\n\r\n      case \"form\":\r\n        if (form_element_pointer || stack.contains(\"template\")) return;\r\n        form_element_pointer = insertHTMLElement(value, arg3);\r\n        stack.popElement(form_element_pointer);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"table\":\r\n        if (!stack.inTableScope(value)) return;\r\n        stack.popTag(value);\r\n        resetInsertionMode();\r\n        return;\r\n      case \"body\":\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"html\":\r\n      case \"tbody\":\r\n      case \"td\":\r\n      case \"tfoot\":\r\n      case \"th\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        return;\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n\r\n      break;\r\n    case -1: // EOF\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    }\r\n\r\n    // This is the anything else case\r\n    foster_parent_mode = true;\r\n    in_body_mode(t, value, arg3, arg4);\r\n    foster_parent_mode = false;\r\n  }\r\n\r\n  function in_table_text_mode(t, value, arg3, arg4) {\r\n    if (t === TEXT) {\r\n      if (textIncludesNUL) {\r\n        value = value.replace(NULCHARS, \"\");\r\n        if (value.length === 0) return;\r\n      }\r\n      pending_table_text.push(value);\r\n    }\r\n    else {\r\n      var s = pending_table_text.join(\"\");\r\n      pending_table_text.length = 0;\r\n      if (NONWS.test(s)) { // If any non-whitespace characters\r\n        // This must be the same code as the \"anything else\"\r\n        // case of the in_table mode above.\r\n        foster_parent_mode = true;\r\n        in_body_mode(TEXT, s);\r\n        foster_parent_mode = false;\r\n      }\r\n      else {\r\n        insertText(s);\r\n      }\r\n      parser = originalInsertionMode;\r\n      parser(t, value, arg3, arg4);\r\n    }\r\n  }\r\n\r\n\r\n  function in_caption_mode(t, value, arg3, arg4) {\r\n    function end_caption() {\r\n      if (!stack.inTableScope(\"caption\")) return false;\r\n      stack.generateImpliedEndTags();\r\n      stack.popTag(\"caption\");\r\n      afe.clearToMarker();\r\n      parser = in_table_mode;\r\n      return true;\r\n    }\r\n\r\n    switch(t) {\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"tbody\":\r\n      case \"td\":\r\n      case \"tfoot\":\r\n      case \"th\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        if (end_caption()) parser(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"caption\":\r\n        end_caption();\r\n        return;\r\n      case \"table\":\r\n        if (end_caption()) parser(t, value, arg3, arg4);\r\n        return;\r\n      case \"body\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"html\":\r\n      case \"tbody\":\r\n      case \"td\":\r\n      case \"tfoot\":\r\n      case \"th\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // The Anything Else case\r\n    in_body_mode(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_column_group_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      var ws = value.match(LEADINGWS);\r\n      if (ws) {\r\n        insertText(ws[0]);\r\n        value = value.substring(ws[0].length);\r\n      }\r\n      if (value.length === 0) return;\r\n      break; // Handle non-whitespace below\r\n\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"col\":\r\n        insertHTMLElement(value, arg3);\r\n        stack.pop();\r\n        return;\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"colgroup\":\r\n        if (!isA(stack.top, 'colgroup')) {\r\n          return; // Ignore the token.\r\n        }\r\n        stack.pop();\r\n        parser = in_table_mode;\r\n        return;\r\n      case \"col\":\r\n        return;\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case -1: // EOF\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    }\r\n\r\n    // Anything else\r\n    if (!isA(stack.top, 'colgroup')) {\r\n      return; // Ignore the token.\r\n    }\r\n    in_column_group_mode(ENDTAG, \"colgroup\");\r\n    parser(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_table_body_mode(t, value, arg3, arg4) {\r\n    function endsect() {\r\n      if (!stack.inTableScope(\"tbody\") &&\r\n        !stack.inTableScope(\"thead\") &&\r\n        !stack.inTableScope(\"tfoot\"))\r\n        return;\r\n      stack.clearToContext(tableBodyContextSet);\r\n      in_table_body_mode(ENDTAG, stack.top.localName, null);\r\n      parser(t, value, arg3, arg4);\r\n    }\r\n\r\n    switch(t) {\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"tr\":\r\n        stack.clearToContext(tableBodyContextSet);\r\n        insertHTMLElement(value, arg3);\r\n        parser = in_row_mode;\r\n        return;\r\n      case \"th\":\r\n      case \"td\":\r\n        in_table_body_mode(TAG, \"tr\", null);\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n        endsect();\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"table\":\r\n        endsect();\r\n        return;\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n        if (stack.inTableScope(value)) {\r\n          stack.clearToContext(tableBodyContextSet);\r\n          stack.pop();\r\n          parser = in_table_mode;\r\n        }\r\n        return;\r\n      case \"body\":\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"html\":\r\n      case \"td\":\r\n      case \"th\":\r\n      case \"tr\":\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // Anything else:\r\n    in_table_mode(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_row_mode(t, value, arg3, arg4) {\r\n    function endrow() {\r\n      if (!stack.inTableScope(\"tr\")) return false;\r\n      stack.clearToContext(tableRowContextSet);\r\n      stack.pop();\r\n      parser = in_table_body_mode;\r\n      return true;\r\n    }\r\n\r\n    switch(t) {\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"th\":\r\n      case \"td\":\r\n        stack.clearToContext(tableRowContextSet);\r\n        insertHTMLElement(value, arg3);\r\n        parser = in_cell_mode;\r\n        afe.insertMarker();\r\n        return;\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        if (endrow()) parser(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"tr\":\r\n        endrow();\r\n        return;\r\n      case \"table\":\r\n        if (endrow()) parser(t, value, arg3, arg4);\r\n        return;\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n        if (stack.inTableScope(value)) {\r\n          if (endrow()) parser(t, value, arg3, arg4);\r\n        }\r\n        return;\r\n      case \"body\":\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"html\":\r\n      case \"td\":\r\n      case \"th\":\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // anything else\r\n    in_table_mode(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_cell_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"tbody\":\r\n      case \"td\":\r\n      case \"tfoot\":\r\n      case \"th\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        if (stack.inTableScope(\"td\")) {\r\n          in_cell_mode(ENDTAG, \"td\");\r\n          parser(t, value, arg3, arg4);\r\n        }\r\n        else if (stack.inTableScope(\"th\")) {\r\n          in_cell_mode(ENDTAG, \"th\");\r\n          parser(t, value, arg3, arg4);\r\n        }\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"td\":\r\n      case \"th\":\r\n        if (!stack.inTableScope(value)) return;\r\n        stack.generateImpliedEndTags();\r\n        stack.popTag(value);\r\n        afe.clearToMarker();\r\n        parser = in_row_mode;\r\n        return;\r\n\r\n      case \"body\":\r\n      case \"caption\":\r\n      case \"col\":\r\n      case \"colgroup\":\r\n      case \"html\":\r\n        return;\r\n\r\n      case \"table\":\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n      case \"tr\":\r\n        if (!stack.inTableScope(value)) return;\r\n        in_cell_mode(ENDTAG, stack.inTableScope(\"td\") ? \"td\" : \"th\");\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // anything else\r\n    in_body_mode(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_select_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      if (textIncludesNUL) {\r\n        value = value.replace(NULCHARS, \"\");\r\n        if (value.length === 0) return;\r\n      }\r\n      insertText(value);\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case -1: // EOF\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"option\":\r\n        if (stack.top instanceof impl.HTMLOptionElement)\r\n          in_select_mode(ENDTAG, value);\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n      case \"optgroup\":\r\n        if (stack.top instanceof impl.HTMLOptionElement)\r\n          in_select_mode(ENDTAG, \"option\");\r\n        if (stack.top instanceof impl.HTMLOptGroupElement)\r\n          in_select_mode(ENDTAG, value);\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n      case \"select\":\r\n        in_select_mode(ENDTAG, value); // treat it as a close tag\r\n        return;\r\n\r\n      case \"input\":\r\n      case \"keygen\":\r\n      case \"textarea\":\r\n        if (!stack.inSelectScope(\"select\")) return;\r\n        in_select_mode(ENDTAG, \"select\");\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n\r\n      case \"script\":\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"optgroup\":\r\n        if (stack.top instanceof impl.HTMLOptionElement &&\r\n          stack.elements[stack.elements.length-2] instanceof\r\n          impl.HTMLOptGroupElement) {\r\n          in_select_mode(ENDTAG, \"option\");\r\n        }\r\n        if (stack.top instanceof impl.HTMLOptGroupElement)\r\n          stack.pop();\r\n\r\n        return;\r\n\r\n      case \"option\":\r\n        if (stack.top instanceof impl.HTMLOptionElement)\r\n          stack.pop();\r\n        return;\r\n\r\n      case \"select\":\r\n        if (!stack.inSelectScope(value)) return;\r\n        stack.popTag(value);\r\n        resetInsertionMode();\r\n        return;\r\n\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n\r\n      break;\r\n    }\r\n\r\n    // anything else: just ignore the token\r\n  }\r\n\r\n  function in_select_in_table_mode(t, value, arg3, arg4) {\r\n    switch(value) {\r\n    case \"caption\":\r\n    case \"table\":\r\n    case \"tbody\":\r\n    case \"tfoot\":\r\n    case \"thead\":\r\n    case \"tr\":\r\n    case \"td\":\r\n    case \"th\":\r\n      switch(t) {\r\n      case 2: // TAG\r\n        in_select_in_table_mode(ENDTAG, \"select\");\r\n        parser(t, value, arg3, arg4);\r\n        return;\r\n      case 3: // ENDTAG\r\n        if (stack.inTableScope(value)) {\r\n          in_select_in_table_mode(ENDTAG, \"select\");\r\n          parser(t, value, arg3, arg4);\r\n        }\r\n        return;\r\n      }\r\n    }\r\n\r\n    // anything else\r\n    in_select_mode(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_template_mode(t, value, arg3, arg4) {\r\n    function switchModeAndReprocess(mode) {\r\n      parser = mode;\r\n      templateInsertionModes[templateInsertionModes.length-1] = parser;\r\n      parser(t, value, arg3, arg4);\r\n    }\r\n    switch(t) {\r\n    case 1: // TEXT\r\n    case 4: // COMMENT\r\n    case 5: // DOCTYPE\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case -1: // EOF\r\n      if (!stack.contains(\"template\")) {\r\n        stopParsing();\r\n      } else {\r\n        stack.popTag(\"template\");\r\n        afe.clearToMarker();\r\n        templateInsertionModes.pop();\r\n        resetInsertionMode();\r\n        parser(t, value, arg3, arg4);\r\n      }\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"base\":\r\n      case \"basefont\":\r\n      case \"bgsound\":\r\n      case \"link\":\r\n      case \"meta\":\r\n      case \"noframes\":\r\n      case \"script\":\r\n      case \"style\":\r\n      case \"template\":\r\n      case \"title\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"caption\":\r\n      case \"colgroup\":\r\n      case \"tbody\":\r\n      case \"tfoot\":\r\n      case \"thead\":\r\n        switchModeAndReprocess(in_table_mode);\r\n        return;\r\n      case \"col\":\r\n        switchModeAndReprocess(in_column_group_mode);\r\n        return;\r\n      case \"tr\":\r\n        switchModeAndReprocess(in_table_body_mode);\r\n        return;\r\n      case \"td\":\r\n      case \"th\":\r\n        switchModeAndReprocess(in_row_mode);\r\n        return;\r\n      }\r\n      switchModeAndReprocess(in_body_mode);\r\n      return;\r\n    case 3: // ENDTAG\r\n      switch(value) {\r\n      case \"template\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      default:\r\n        return;\r\n      }\r\n    }\r\n  }\r\n\r\n  function after_body_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // If any non-space chars, handle below\r\n      if (NONWS.test(value)) break;\r\n      in_body_mode(t, value);\r\n      return;\r\n    case 4: // COMMENT\r\n      // Append it to the <html> element\r\n      stack.elements[0]._appendChild(doc.createComment(value));\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case -1: // EOF\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      if (value === \"html\") {\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break; // for any other tags\r\n    case 3: // ENDTAG\r\n      if (value === \"html\") {\r\n        if (fragment) return;\r\n        parser = after_after_body_mode;\r\n        return;\r\n      }\r\n      break; // for any other tags\r\n    }\r\n\r\n    // anything else\r\n    parser = in_body_mode;\r\n    parser(t, value, arg3, arg4);\r\n  }\r\n\r\n  function in_frameset_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // Ignore any non-space characters\r\n      value = value.replace(ALLNONWS, \"\");\r\n      if (value.length > 0) insertText(value);\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case -1: // EOF\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"frameset\":\r\n        insertHTMLElement(value, arg3);\r\n        return;\r\n      case \"frame\":\r\n        insertHTMLElement(value, arg3);\r\n        stack.pop();\r\n        return;\r\n      case \"noframes\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      if (value === \"frameset\") {\r\n        if (fragment && stack.top instanceof impl.HTMLHtmlElement)\r\n          return;\r\n        stack.pop();\r\n        if (!fragment &&\r\n          !(stack.top instanceof impl.HTMLFrameSetElement))\r\n          parser = after_frameset_mode;\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // ignore anything else\r\n  }\r\n\r\n  function after_frameset_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // Ignore any non-space characters\r\n      value = value.replace(ALLNONWS, \"\");\r\n      if (value.length > 0) insertText(value);\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      return;\r\n    case -1: // EOF\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"noframes\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    case 3: // ENDTAG\r\n      if (value === \"html\") {\r\n        parser = after_after_frameset_mode;\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // ignore anything else\r\n  }\r\n\r\n  function after_after_body_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // If any non-space chars, handle below\r\n      if (NONWS.test(value)) break;\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case 4: // COMMENT\r\n      doc._appendChild(doc.createComment(value));\r\n      return;\r\n    case 5: // DOCTYPE\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case -1: // EOF\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      if (value === \"html\") {\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // anything else\r\n    parser = in_body_mode;\r\n    parser(t, value, arg3, arg4);\r\n  }\r\n\r\n  function after_after_frameset_mode(t, value, arg3, arg4) {\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // Ignore any non-space characters\r\n      value = value.replace(ALLNONWS, \"\");\r\n      if (value.length > 0)\r\n        in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case 4: // COMMENT\r\n      doc._appendChild(doc.createComment(value));\r\n      return;\r\n    case 5: // DOCTYPE\r\n      in_body_mode(t, value, arg3, arg4);\r\n      return;\r\n    case -1: // EOF\r\n      stopParsing();\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"html\":\r\n        in_body_mode(t, value, arg3, arg4);\r\n        return;\r\n      case \"noframes\":\r\n        in_head_mode(t, value, arg3, arg4);\r\n        return;\r\n      }\r\n      break;\r\n    }\r\n\r\n    // ignore anything else\r\n  }\r\n\r\n\r\n  // 13.2.5.5 The rules for parsing tokens in foreign content\r\n  //\r\n  // This is like one of the insertion modes above, but is\r\n  // invoked somewhat differently when the current token is not HTML.\r\n  // See the insertToken() function.\r\n  function insertForeignToken(t, value, arg3, arg4) {\r\n    // A <font> tag is an HTML font tag if it has a color, font, or size\r\n    // attribute.  Otherwise we assume it is foreign content\r\n    function isHTMLFont(attrs) {\r\n      for(var i = 0, n = attrs.length; i < n; i++) {\r\n        switch(attrs[i][0]) {\r\n        case \"color\":\r\n        case \"face\":\r\n        case \"size\":\r\n          return true;\r\n        }\r\n      }\r\n      return false;\r\n    }\r\n\r\n    var current;\r\n\r\n    switch(t) {\r\n    case 1: // TEXT\r\n      // If any non-space, non-nul characters\r\n      if (frameset_ok && NONWSNONNUL.test(value))\r\n        frameset_ok = false;\r\n      if (textIncludesNUL) {\r\n        value = value.replace(NULCHARS, \"\\uFFFD\");\r\n      }\r\n      insertText(value);\r\n      return;\r\n    case 4: // COMMENT\r\n      insertComment(value);\r\n      return;\r\n    case 5: // DOCTYPE\r\n      // ignore it\r\n      return;\r\n    case 2: // TAG\r\n      switch(value) {\r\n      case \"font\":\r\n        if (!isHTMLFont(arg3)) break;\r\n        /* falls through */\r\n      case \"b\":\r\n      case \"big\":\r\n      case \"blockquote\":\r\n      case \"body\":\r\n      case \"br\":\r\n      case \"center\":\r\n      case \"code\":\r\n      case \"dd\":\r\n      case \"div\":\r\n      case \"dl\":\r\n      case \"dt\":\r\n      case \"em\":\r\n      case \"embed\":\r\n      case \"h1\":\r\n      case \"h2\":\r\n      case \"h3\":\r\n      case \"h4\":\r\n      case \"h5\":\r\n      case \"h6\":\r\n      case \"head\":\r\n      case \"hr\":\r\n      case \"i\":\r\n      case \"img\":\r\n      case \"li\":\r\n      case \"listing\":\r\n      case \"menu\":\r\n      case \"meta\":\r\n      case \"nobr\":\r\n      case \"ol\":\r\n      case \"p\":\r\n      case \"pre\":\r\n      case \"ruby\":\r\n      case \"s\":\r\n      case \"small\":\r\n      case \"span\":\r\n      case \"strong\":\r\n      case \"strike\":\r\n      case \"sub\":\r\n      case \"sup\":\r\n      case \"table\":\r\n      case \"tt\":\r\n      case \"u\":\r\n      case \"ul\":\r\n      case \"var\":\r\n        if (fragment) {\r\n          break;\r\n        }\r\n        do {\r\n          stack.pop();\r\n          current = stack.top;\r\n        } while(current.namespaceURI !== NAMESPACE.HTML &&\r\n            !isMathmlTextIntegrationPoint(current) &&\r\n            !isHTMLIntegrationPoint(current));\r\n\r\n        insertToken(t, value, arg3, arg4);  // reprocess\r\n        return;\r\n      }\r\n\r\n      // Any other start tag case goes here\r\n      current = (stack.elements.length===1 && fragment) ? fragmentContext :\r\n        stack.top;\r\n      if (current.namespaceURI === NAMESPACE.MATHML) {\r\n        adjustMathMLAttributes(arg3);\r\n      }\r\n      else if (current.namespaceURI === NAMESPACE.SVG) {\r\n        value = adjustSVGTagName(value);\r\n        adjustSVGAttributes(arg3);\r\n      }\r\n      adjustForeignAttributes(arg3);\r\n\r\n      insertForeignElement(value, arg3, current.namespaceURI);\r\n      if (arg4) { // the self-closing flag\r\n        if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) {\r\n          // XXX deal with SVG scripts here\r\n        }\r\n        stack.pop();\r\n      }\r\n      return;\r\n\r\n    case 3: // ENDTAG\r\n      current = stack.top;\r\n      if (value === \"script\" &&\r\n        current.namespaceURI === NAMESPACE.SVG &&\r\n        current.localName === \"script\") {\r\n\r\n        stack.pop();\r\n\r\n        // XXX\r\n        // Deal with SVG scripts here\r\n      }\r\n      else {\r\n        // The any other end tag case\r\n        var i = stack.elements.length-1;\r\n        var node = stack.elements[i];\r\n        for(;;) {\r\n          if (node.localName.toLowerCase() === value) {\r\n            stack.popElement(node);\r\n            break;\r\n          }\r\n          node = stack.elements[--i];\r\n          // If non-html, keep looping\r\n          if (node.namespaceURI !== NAMESPACE.HTML)\r\n            continue;\r\n          // Otherwise process the end tag as html\r\n          parser(t, value, arg3, arg4);\r\n          break;\r\n        }\r\n      }\r\n      return;\r\n    }\r\n  }\r\n\r\n  /***\r\n   * Finally, this is the end of the HTMLParser() factory function.\r\n   * It returns the htmlparser object with the append() and end() methods.\r\n   */\r\n\r\n  // Sneak another method into the htmlparser object to allow us to run\r\n  // tokenizer tests.  This can be commented out in production code.\r\n  // This is a hook for testing the tokenizer. It has to be here\r\n  // because the tokenizer details are all hidden away within the closure.\r\n  // It should return an array of tokens generated while parsing the\r\n  // input string.\r\n  htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) {\r\n    var tokens = [];\r\n\r\n    switch(initialState) {\r\n    case \"PCDATA state\":\r\n      tokenizer = data_state;\r\n      break;\r\n    case \"RCDATA state\":\r\n      tokenizer = rcdata_state;\r\n      break;\r\n    case \"RAWTEXT state\":\r\n      tokenizer = rawtext_state;\r\n      break;\r\n    case \"PLAINTEXT state\":\r\n      tokenizer = plaintext_state;\r\n      break;\r\n    }\r\n\r\n    if (lastStartTag) {\r\n      lasttagname = lastStartTag;\r\n    }\r\n\r\n    insertToken = function(t, value, arg3, arg4) {\r\n      flushText();\r\n      switch(t) {\r\n      case 1: // TEXT\r\n        if (tokens.length > 0 &&\r\n          tokens[tokens.length-1][0] === \"Character\") {\r\n          tokens[tokens.length-1][1] += value;\r\n        }\r\n        else tokens.push([\"Character\", value]);\r\n        break;\r\n      case 4: // COMMENT\r\n        tokens.push([\"Comment\", value]);\r\n        break;\r\n      case 5: // DOCTYPE\r\n        tokens.push([\"DOCTYPE\", value,\r\n               arg3 === undefined ? null : arg3,\r\n               arg4 === undefined ? null : arg4,\r\n               !force_quirks]);\r\n        break;\r\n      case 2: // TAG\r\n        var attrs = Object.create(null);\r\n        for(var i = 0; i < arg3.length; i++) {\r\n          // XXX: does attribute order matter?\r\n          var a = arg3[i];\r\n          if (a.length === 1) {\r\n            attrs[a[0]] = \"\";\r\n          }\r\n          else {\r\n            attrs[a[0]] = a[1];\r\n          }\r\n        }\r\n        var token = [\"StartTag\", value, attrs];\r\n        if (arg4) token.push(true);\r\n        tokens.push(token);\r\n        break;\r\n      case 3: // ENDTAG\r\n        tokens.push([\"EndTag\", value]);\r\n        break;\r\n      case -1: // EOF\r\n        break;\r\n      }\r\n    };\r\n\r\n    if (!charbychar) {\r\n      this.parse(input, true);\r\n    }\r\n    else {\r\n      for(var i = 0; i < input.length; i++) {\r\n        this.parse(input[i]);\r\n      }\r\n      this.parse(\"\", true);\r\n    }\r\n    return tokens;\r\n  };\r\n\r\n  // Return the parser object from the HTMLParser() factory function\r\n  return htmlparser;\r\n}\r\n","\"use strict\";\r\nmodule.exports = DOMImplementation;\r\n\r\nvar Document = require('./Document');\r\nvar DocumentType = require('./DocumentType');\r\nvar HTMLParser = require('./HTMLParser');\r\nvar utils = require('./utils');\r\nvar xml = require('./xmlnames');\r\n\r\n// Each document must have its own instance of the domimplementation object\r\nfunction DOMImplementation(contextObject) {\r\n  this.contextObject = contextObject;\r\n}\r\n\r\n\r\n// Feature/version pairs that DOMImplementation.hasFeature() returns\r\n// true for.  It returns false for anything else.\r\nvar supportedFeatures = {\r\n  'xml': { '': true, '1.0': true, '2.0': true },   // DOM Core\r\n  'core': { '': true, '2.0': true },               // DOM Core\r\n  'html': { '': true, '1.0': true, '2.0': true} ,  // HTML\r\n  'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML\r\n};\r\n\r\nDOMImplementation.prototype = {\r\n  hasFeature: function hasFeature(feature, version) {\r\n    var f = supportedFeatures[(feature || '').toLowerCase()];\r\n    return (f && f[version || '']) || false;\r\n  },\r\n\r\n  createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {\r\n    if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError();\r\n\r\n    return new DocumentType(this.contextObject, qualifiedName, publicId, systemId);\r\n  },\r\n\r\n  createDocument: function createDocument(namespace, qualifiedName, doctype) {\r\n    //\r\n    // Note that the current DOMCore spec makes it impossible to\r\n    // create an HTML document with this function, even if the\r\n    // namespace and doctype are propertly set.  See this thread:\r\n    // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html\r\n    //\r\n    var d = new Document(false, null);\r\n    var e;\r\n\r\n    if (qualifiedName)\r\n      e = d.createElementNS(namespace, qualifiedName);\r\n    else\r\n      e = null;\r\n\r\n    if (doctype) {\r\n      d.appendChild(doctype);\r\n    }\r\n\r\n    if (e) d.appendChild(e);\r\n    if (namespace === utils.NAMESPACE.HTML) {\r\n      d._contentType = 'application/xhtml+xml';\r\n    } else if (namespace === utils.NAMESPACE.SVG) {\r\n      d._contentType = 'image/svg+xml';\r\n    } else {\r\n      d._contentType = 'application/xml';\r\n    }\r\n\r\n    return d;\r\n  },\r\n\r\n  createHTMLDocument: function createHTMLDocument(titleText) {\r\n    var d = new Document(true, null);\r\n    d.appendChild(new DocumentType(d, 'html'));\r\n    var html = d.createElement('html');\r\n    d.appendChild(html);\r\n    var head = d.createElement('head');\r\n    html.appendChild(head);\r\n    if (titleText !== undefined) {\r\n      var title = d.createElement('title');\r\n      head.appendChild(title);\r\n      title.appendChild(d.createTextNode(titleText));\r\n    }\r\n    html.appendChild(d.createElement('body'));\r\n    d.modclock = 1; // Start tracking modifications\r\n    return d;\r\n  },\r\n\r\n  mozSetOutputMutationHandler: function(doc, handler) {\r\n    doc.mutationHandler = handler;\r\n  },\r\n\r\n  mozGetInputMutationHandler: function(doc) {\r\n    utils.nyi();\r\n  },\r\n\r\n  mozHTMLParser: HTMLParser,\r\n};\r\n","\"use strict\";\r\nvar URL = require('./URL');\r\nvar URLUtils = require('./URLUtils');\r\n\r\nmodule.exports = Location;\r\n\r\nfunction Location(window, href) {\r\n  this._window = window;\r\n  this._href = href;\r\n}\r\n\r\nLocation.prototype = Object.create(URLUtils.prototype, {\r\n  constructor: { value: Location },\r\n\r\n  // Special behavior when href is set\r\n  href: {\r\n    get: function() { return this._href; },\r\n    set: function(v) { this.assign(v); }\r\n  },\r\n\r\n  assign: { value: function(url) {\r\n    // Resolve the new url against the current one\r\n    // XXX:\r\n    // This is not actually correct. It should be resolved against\r\n    // the URL of the document of the script. For now, though, I only\r\n    // support a single window and there is only one base url.\r\n    // So this is good enough for now.\r\n    var current = new URL(this._href);\r\n    var newurl = current.resolve(url);\r\n\r\n    // Save the new url\r\n    this._href = newurl;\r\n\r\n    // Start loading the new document!\r\n    // XXX\r\n    // This is just something hacked together.\r\n    // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate\r\n  }},\r\n\r\n  replace: { value: function(url) {\r\n    // XXX\r\n    // Since we aren't tracking history yet, replace is the same as assign\r\n    this.assign(url);\r\n  }},\r\n\r\n  reload: { value: function() {\r\n    // XXX:\r\n    // Actually, the spec is a lot more complicated than this\r\n    this.assign(this.href);\r\n  }},\r\n\r\n  toString: { value: function() {\r\n    return this.href;\r\n  }}\r\n\r\n});\r\n","\"use strict\";\r\n\r\n// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid\r\nvar NavigatorID = Object.create(null, {\r\n  appCodeName: { value: \"Mozilla\" },\r\n  appName: { value: \"Netscape\" },\r\n  appVersion: { value: \"4.0\" },\r\n  platform: { value: \"\" },\r\n  product: { value: \"Gecko\" },\r\n  productSub: { value: \"20100101\" },\r\n  userAgent: { value: \"\" },\r\n  vendor: { value: \"\" },\r\n  vendorSub: { value: \"\" },\r\n  taintEnabled: { value: function() { return false; } }\r\n});\r\n\r\nmodule.exports = NavigatorID;\r\n","\"use strict\";\r\n\r\n// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers\r\nvar WindowTimers = {\r\n  setTimeout: setTimeout,\r\n  clearTimeout: clearTimeout,\r\n  setInterval: setInterval,\r\n  clearInterval: clearInterval\r\n};\r\n\r\nmodule.exports = WindowTimers;\r\n","\"use strict\";\r\nvar utils = require('./utils');\r\n\r\nexports = module.exports = {\r\n  CSSStyleDeclaration: require('./CSSStyleDeclaration'),\r\n  CharacterData: require('./CharacterData'),\r\n  Comment: require('./Comment'),\r\n  DOMException: require('./DOMException'),\r\n  DOMImplementation: require('./DOMImplementation'),\r\n  DOMTokenList: require('./DOMTokenList'),\r\n  Document: require('./Document'),\r\n  DocumentFragment: require('./DocumentFragment'),\r\n  DocumentType: require('./DocumentType'),\r\n  Element: require('./Element'),\r\n  HTMLParser: require('./HTMLParser'),\r\n  NamedNodeMap: require('./NamedNodeMap'),\r\n  Node: require('./Node'),\r\n  NodeList: require('./NodeList'),\r\n  NodeFilter: require('./NodeFilter'),\r\n  ProcessingInstruction: require('./ProcessingInstruction'),\r\n  Text: require('./Text'),\r\n  Window: require('./Window')\r\n};\r\n\r\nutils.merge(exports, require('./events'));\r\nutils.merge(exports, require('./htmlelts').elements);\r\nutils.merge(exports, require('./svg').elements);\r\n","\"use strict\";\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar EventTarget = require('./EventTarget');\r\nvar Location = require('./Location');\r\nvar utils = require('./utils');\r\n\r\nmodule.exports = Window;\r\n\r\nfunction Window(document) {\r\n  this.document = document || new DOMImplementation(null).createHTMLDocument(\"\");\r\n  this.document._scripting_enabled = true;\r\n  this.document.defaultView = this;\r\n  this.location = new Location(this, this.document._address || 'about:blank');\r\n}\r\n\r\nWindow.prototype = Object.create(EventTarget.prototype, {\r\n  console: { value: console },\r\n  history: { value: {\r\n    back: utils.nyi,\r\n    forward: utils.nyi,\r\n    go: utils.nyi\r\n  }},\r\n  navigator: { value: require(\"./NavigatorID\") },\r\n\r\n  // Self-referential properties\r\n  window: { get: function() { return this; }},\r\n  self: { get: function() { return this; }},\r\n  frames: { get: function() { return this; }},\r\n\r\n  // Self-referential properties for a top-level window\r\n  parent: { get: function() { return this; }},\r\n  top: { get: function() { return this; }},\r\n\r\n  // We don't support any other windows for now\r\n  length: { value: 0 },           // no frames\r\n  frameElement: { value: null },  // not part of a frame\r\n  opener: { value: null },        // not opened by another window\r\n\r\n  // The onload event handler.\r\n  // XXX: need to support a bunch of other event types, too,\r\n  // and have them interoperate with document.body.\r\n\r\n  onload: {\r\n    get: function() {\r\n      return this._getEventHandler(\"load\");\r\n    },\r\n    set: function(v) {\r\n      this._setEventHandler(\"load\", v);\r\n    }\r\n  },\r\n\r\n  // XXX This is a completely broken implementation\r\n  getComputedStyle: { value: function getComputedStyle(elt) {\r\n    return elt.style;\r\n  }}\r\n\r\n});\r\n\r\nutils.expose(require('./WindowTimers'), Window);\r\nutils.expose(require('./impl'), Window);\r\n","\"use strict\";\r\nvar DOMImplementation = require('./DOMImplementation');\r\nvar HTMLParser = require('./HTMLParser');\r\nvar Window = require('./Window');\r\nvar impl = require('./impl');\r\n\r\nexports.createDOMImplementation = function() {\r\n  return new DOMImplementation(null);\r\n};\r\n\r\nexports.createDocument = function(html, force) {\r\n  // Previous API couldn't let you pass '' as a document, and that\r\n  // yields a slightly different document than createHTMLDocument('')\r\n  // does.  The new `force` parameter lets you pass '' if you want to.\r\n  if (html || force) {\r\n    var parser = new HTMLParser();\r\n    parser.parse(html || '', true);\r\n    return parser.document();\r\n  }\r\n  return new DOMImplementation(null).createHTMLDocument(\"\");\r\n};\r\n\r\nexports.createIncrementalHTMLParser = function() {\r\n    var parser = new HTMLParser();\r\n    /** API for incremental parser. */\r\n    return {\r\n        /** Provide an additional chunk of text to be parsed. */\r\n        write: function(s) {\r\n          if (s.length > 0) {\r\n            parser.parse(s, false, function() { return true; });\r\n          }\r\n        },\r\n        /**\r\n         * Signal that we are done providing input text, optionally\r\n         * providing one last chunk as a parameter.\r\n         */\r\n        end: function(s) {\r\n          parser.parse(s || '', true, function() { return true; });\r\n        },\r\n        /**\r\n         * Performs a chunk of parsing work, returning at the end of\r\n         * the next token as soon as shouldPauseFunc() returns true.\r\n         * Returns true iff there is more work to do.\r\n         *\r\n         * For example:\r\n         * ```\r\n         *  var incrParser = domino.createIncrementalHTMLParser();\r\n         *  incrParser.end('...long html document...');\r\n         *  while (true) {\r\n         *    // Pause every 10ms\r\n         *    var start = Date.now();\r\n         *    var pauseIn10 = function() { return (Date.now() - start) >= 10; };\r\n         *    if (!incrParser.process(pauseIn10)) {\r\n         *      break;\r\n         *    }\r\n         *    ...yield to other tasks, do other housekeeping, etc...\r\n         *  }\r\n         * ```\r\n         */\r\n        process: function(shouldPauseFunc) {\r\n          return parser.parse('', false, shouldPauseFunc);\r\n        },\r\n        /**\r\n         * Returns the result of the incremental parse.  Valid after\r\n         * `this.end()` has been called and `this.process()` has returned\r\n         * false.\r\n         */\r\n        document: function() {\r\n          return parser.document();\r\n        },\r\n    };  \r\n};\r\n\r\nexports.createWindow = function(html, address) {\r\n  var document = exports.createDocument(html);\r\n  if (address !== undefined) { document._address = address; }\r\n  return new impl.Window(document);\r\n};\r\n\r\nexports.impl = impl;","function extend(destination) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) destination[key] = source[key];\n    }\n  }\n  return destination;\n}\nfunction repeat(character, count) {\n  return Array(count + 1).join(character);\n}\nfunction trimLeadingNewlines(string) {\n  return string.replace(/^\\n*/, '');\n}\nfunction trimTrailingNewlines(string) {\n  // avoid match-at-end regexp bottleneck, see #370\n  var indexEnd = string.length;\n  while (indexEnd > 0 && string[indexEnd - 1] === '\\n') indexEnd--;\n  return string.substring(0, indexEnd);\n}\nfunction trimNewlines(string) {\n  return trimTrailingNewlines(trimLeadingNewlines(string));\n}\nvar blockElements = ['ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS', 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES', 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD', 'TFOOT', 'TH', 'THEAD', 'TR', 'UL'];\nfunction isBlock(node) {\n  return is(node, blockElements);\n}\nvar voidElements = ['AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT', 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'];\nfunction isVoid(node) {\n  return is(node, voidElements);\n}\nfunction hasVoid(node) {\n  return has(node, voidElements);\n}\nvar meaningfulWhenBlankElements = ['A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT', 'AUDIO', 'VIDEO'];\nfunction isMeaningfulWhenBlank(node) {\n  return is(node, meaningfulWhenBlankElements);\n}\nfunction hasMeaningfulWhenBlank(node) {\n  return has(node, meaningfulWhenBlankElements);\n}\nfunction is(node, tagNames) {\n  return tagNames.indexOf(node.nodeName) >= 0;\n}\nfunction has(node, tagNames) {\n  return node.getElementsByTagName && tagNames.some(function (tagName) {\n    return node.getElementsByTagName(tagName).length;\n  });\n}\nvar markdownEscapes = [[/\\\\/g, '\\\\\\\\'], [/\\*/g, '\\\\*'], [/^-/g, '\\\\-'], [/^\\+ /g, '\\\\+ '], [/^(=+)/g, '\\\\$1'], [/^(#{1,6}) /g, '\\\\$1 '], [/`/g, '\\\\`'], [/^~~~/g, '\\\\~~~'], [/\\[/g, '\\\\['], [/\\]/g, '\\\\]'], [/^>/g, '\\\\>'], [/_/g, '\\\\_'], [/^(\\d+)\\. /g, '$1\\\\. ']];\nfunction escapeMarkdown(string) {\n  return markdownEscapes.reduce(function (accumulator, escape) {\n    return accumulator.replace(escape[0], escape[1]);\n  }, string);\n}\n\nvar rules = {};\nrules.paragraph = {\n  filter: 'p',\n  replacement: function (content) {\n    return '\\n\\n' + content + '\\n\\n';\n  }\n};\nrules.lineBreak = {\n  filter: 'br',\n  replacement: function (content, node, options) {\n    return options.br + '\\n';\n  }\n};\nrules.heading = {\n  filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n  replacement: function (content, node, options) {\n    var hLevel = Number(node.nodeName.charAt(1));\n    if (options.headingStyle === 'setext' && hLevel < 3) {\n      var underline = repeat(hLevel === 1 ? '=' : '-', content.length);\n      return '\\n\\n' + content + '\\n' + underline + '\\n\\n';\n    } else {\n      return '\\n\\n' + repeat('#', hLevel) + ' ' + content + '\\n\\n';\n    }\n  }\n};\nrules.blockquote = {\n  filter: 'blockquote',\n  replacement: function (content) {\n    content = trimNewlines(content).replace(/^/gm, '> ');\n    return '\\n\\n' + content + '\\n\\n';\n  }\n};\nrules.list = {\n  filter: ['ul', 'ol'],\n  replacement: function (content, node) {\n    var parent = node.parentNode;\n    if (parent.nodeName === 'LI' && parent.lastElementChild === node) {\n      return '\\n' + content;\n    } else {\n      return '\\n\\n' + content + '\\n\\n';\n    }\n  }\n};\nrules.listItem = {\n  filter: 'li',\n  replacement: function (content, node, options) {\n    var prefix = options.bulletListMarker + '   ';\n    var parent = node.parentNode;\n    if (parent.nodeName === 'OL') {\n      var start = parent.getAttribute('start');\n      var index = Array.prototype.indexOf.call(parent.children, node);\n      prefix = (start ? Number(start) + index : index + 1) + '.  ';\n    }\n    var isParagraph = /\\n$/.test(content);\n    content = trimNewlines(content) + (isParagraph ? '\\n' : '');\n    content = content.replace(/\\n/gm, '\\n' + ' '.repeat(prefix.length)); // indent\n    return prefix + content + (node.nextSibling ? '\\n' : '');\n  }\n};\nrules.indentedCodeBlock = {\n  filter: function (node, options) {\n    return options.codeBlockStyle === 'indented' && node.nodeName === 'PRE' && node.firstChild && node.firstChild.nodeName === 'CODE';\n  },\n  replacement: function (content, node, options) {\n    return '\\n\\n    ' + node.firstChild.textContent.replace(/\\n/g, '\\n    ') + '\\n\\n';\n  }\n};\nrules.fencedCodeBlock = {\n  filter: function (node, options) {\n    return options.codeBlockStyle === 'fenced' && node.nodeName === 'PRE' && node.firstChild && node.firstChild.nodeName === 'CODE';\n  },\n  replacement: function (content, node, options) {\n    var className = node.firstChild.getAttribute('class') || '';\n    var language = (className.match(/language-(\\S+)/) || [null, ''])[1];\n    var code = node.firstChild.textContent;\n    var fenceChar = options.fence.charAt(0);\n    var fenceSize = 3;\n    var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');\n    var match;\n    while (match = fenceInCodeRegex.exec(code)) {\n      if (match[0].length >= fenceSize) {\n        fenceSize = match[0].length + 1;\n      }\n    }\n    var fence = repeat(fenceChar, fenceSize);\n    return '\\n\\n' + fence + language + '\\n' + code.replace(/\\n$/, '') + '\\n' + fence + '\\n\\n';\n  }\n};\nrules.horizontalRule = {\n  filter: 'hr',\n  replacement: function (content, node, options) {\n    return '\\n\\n' + options.hr + '\\n\\n';\n  }\n};\nrules.inlineLink = {\n  filter: function (node, options) {\n    return options.linkStyle === 'inlined' && node.nodeName === 'A' && node.getAttribute('href');\n  },\n  replacement: function (content, node) {\n    var href = escapeLinkDestination(node.getAttribute('href'));\n    var title = escapeLinkTitle(cleanAttribute(node.getAttribute('title')));\n    var titlePart = title ? ' \"' + title + '\"' : '';\n    return '[' + content + '](' + href + titlePart + ')';\n  }\n};\nrules.referenceLink = {\n  filter: function (node, options) {\n    return options.linkStyle === 'referenced' && node.nodeName === 'A' && node.getAttribute('href');\n  },\n  replacement: function (content, node, options) {\n    var href = escapeLinkDestination(node.getAttribute('href'));\n    var title = cleanAttribute(node.getAttribute('title'));\n    if (title) title = ' \"' + escapeLinkTitle(title) + '\"';\n    var replacement;\n    var reference;\n    switch (options.linkReferenceStyle) {\n      case 'collapsed':\n        replacement = '[' + content + '][]';\n        reference = '[' + content + ']: ' + href + title;\n        break;\n      case 'shortcut':\n        replacement = '[' + content + ']';\n        reference = '[' + content + ']: ' + href + title;\n        break;\n      default:\n        var id = this.references.length + 1;\n        replacement = '[' + content + '][' + id + ']';\n        reference = '[' + id + ']: ' + href + title;\n    }\n    this.references.push(reference);\n    return replacement;\n  },\n  references: [],\n  append: function (options) {\n    var references = '';\n    if (this.references.length) {\n      references = '\\n\\n' + this.references.join('\\n') + '\\n\\n';\n      this.references = []; // Reset references\n    }\n    return references;\n  }\n};\nrules.emphasis = {\n  filter: ['em', 'i'],\n  replacement: function (content, node, options) {\n    if (!content.trim()) return '';\n    return options.emDelimiter + content + options.emDelimiter;\n  }\n};\nrules.strong = {\n  filter: ['strong', 'b'],\n  replacement: function (content, node, options) {\n    if (!content.trim()) return '';\n    return options.strongDelimiter + content + options.strongDelimiter;\n  }\n};\nrules.code = {\n  filter: function (node) {\n    var hasSiblings = node.previousSibling || node.nextSibling;\n    var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;\n    return node.nodeName === 'CODE' && !isCodeBlock;\n  },\n  replacement: function (content) {\n    if (!content) return '';\n    content = content.replace(/\\r?\\n|\\r/g, ' ');\n    var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';\n    var delimiter = '`';\n    var matches = content.match(/`+/gm) || [];\n    while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';\n    return delimiter + extraSpace + content + extraSpace + delimiter;\n  }\n};\nrules.image = {\n  filter: 'img',\n  replacement: function (content, node) {\n    var alt = escapeMarkdown(cleanAttribute(node.getAttribute('alt')));\n    var src = escapeLinkDestination(node.getAttribute('src') || '');\n    var title = cleanAttribute(node.getAttribute('title'));\n    var titlePart = title ? ' \"' + escapeLinkTitle(title) + '\"' : '';\n    return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : '';\n  }\n};\nfunction cleanAttribute(attribute) {\n  return attribute ? attribute.replace(/(\\n+\\s*)+/g, '\\n') : '';\n}\nfunction escapeLinkDestination(destination) {\n  var escaped = destination.replace(/([<>()])/g, '\\\\$1');\n  return escaped.indexOf(' ') >= 0 ? '<' + escaped + '>' : escaped;\n}\nfunction escapeLinkTitle(title) {\n  return title.replace(/\"/g, '\\\\\"');\n}\n\n/**\n * Manages a collection of rules used to convert HTML to Markdown\n */\n\nfunction Rules(options) {\n  this.options = options;\n  this._keep = [];\n  this._remove = [];\n  this.blankRule = {\n    replacement: options.blankReplacement\n  };\n  this.keepReplacement = options.keepReplacement;\n  this.defaultRule = {\n    replacement: options.defaultReplacement\n  };\n  this.array = [];\n  for (var key in options.rules) this.array.push(options.rules[key]);\n}\nRules.prototype = {\n  add: function (key, rule) {\n    this.array.unshift(rule);\n  },\n  keep: function (filter) {\n    this._keep.unshift({\n      filter: filter,\n      replacement: this.keepReplacement\n    });\n  },\n  remove: function (filter) {\n    this._remove.unshift({\n      filter: filter,\n      replacement: function () {\n        return '';\n      }\n    });\n  },\n  forNode: function (node) {\n    if (node.isBlank) return this.blankRule;\n    var rule;\n    if (rule = findRule(this.array, node, this.options)) return rule;\n    if (rule = findRule(this._keep, node, this.options)) return rule;\n    if (rule = findRule(this._remove, node, this.options)) return rule;\n    return this.defaultRule;\n  },\n  forEach: function (fn) {\n    for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);\n  }\n};\nfunction findRule(rules, node, options) {\n  for (var i = 0; i < rules.length; i++) {\n    var rule = rules[i];\n    if (filterValue(rule, node, options)) return rule;\n  }\n  return undefined;\n}\nfunction filterValue(rule, node, options) {\n  var filter = rule.filter;\n  if (typeof filter === 'string') {\n    if (filter === node.nodeName.toLowerCase()) return true;\n  } else if (Array.isArray(filter)) {\n    if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true;\n  } else if (typeof filter === 'function') {\n    if (filter.call(rule, node, options)) return true;\n  } else {\n    throw new TypeError('`filter` needs to be a string, array, or function');\n  }\n}\n\n/**\n * The collapseWhitespace function is adapted from collapse-whitespace\n * by Luc Thevenard.\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * collapseWhitespace(options) removes extraneous whitespace from an the given element.\n *\n * @param {Object} options\n */\nfunction collapseWhitespace(options) {\n  var element = options.element;\n  var isBlock = options.isBlock;\n  var isVoid = options.isVoid;\n  var isPre = options.isPre || function (node) {\n    return node.nodeName === 'PRE';\n  };\n  if (!element.firstChild || isPre(element)) return;\n  var prevText = null;\n  var keepLeadingWs = false;\n  var prev = null;\n  var node = next(prev, element, isPre);\n  while (node !== element) {\n    if (node.nodeType === 3 || node.nodeType === 4) {\n      // Node.TEXT_NODE or Node.CDATA_SECTION_NODE\n      var text = node.data.replace(/[ \\r\\n\\t]+/g, ' ');\n      if ((!prevText || / $/.test(prevText.data)) && !keepLeadingWs && text[0] === ' ') {\n        text = text.substr(1);\n      }\n\n      // `text` might be empty at this point.\n      if (!text) {\n        node = remove(node);\n        continue;\n      }\n      node.data = text;\n      prevText = node;\n    } else if (node.nodeType === 1) {\n      // Node.ELEMENT_NODE\n      if (isBlock(node) || node.nodeName === 'BR') {\n        if (prevText) {\n          prevText.data = prevText.data.replace(/ $/, '');\n        }\n        prevText = null;\n        keepLeadingWs = false;\n      } else if (isVoid(node) || isPre(node)) {\n        // Avoid trimming space around non-block, non-BR void elements and inline PRE.\n        prevText = null;\n        keepLeadingWs = true;\n      } else if (prevText) {\n        // Drop protection if set previously.\n        keepLeadingWs = false;\n      }\n    } else {\n      node = remove(node);\n      continue;\n    }\n    var nextNode = next(prev, node, isPre);\n    prev = node;\n    node = nextNode;\n  }\n  if (prevText) {\n    prevText.data = prevText.data.replace(/ $/, '');\n    if (!prevText.data) {\n      remove(prevText);\n    }\n  }\n}\n\n/**\n * remove(node) removes the given node from the DOM and returns the\n * next node in the sequence.\n *\n * @param {Node} node\n * @return {Node} node\n */\nfunction remove(node) {\n  var next = node.nextSibling || node.parentNode;\n  node.parentNode.removeChild(node);\n  return next;\n}\n\n/**\n * next(prev, current, isPre) returns the next node in the sequence, given the\n * current and previous nodes.\n *\n * @param {Node} prev\n * @param {Node} current\n * @param {Function} isPre\n * @return {Node}\n */\nfunction next(prev, current, isPre) {\n  if (prev && prev.parentNode === current || isPre(current)) {\n    return current.nextSibling || current.parentNode;\n  }\n  return current.firstChild || current.nextSibling || current.parentNode;\n}\n\n/*\n * Set up window for Node.js\n */\n\nvar root = typeof window !== 'undefined' ? window : {};\n\n/*\n * Parsing HTML strings\n */\n\nfunction canParseHTMLNatively() {\n  var Parser = root.DOMParser;\n  var canParse = false;\n\n  // Adapted from https://gist.github.com/1129031\n  // Firefox/Opera/IE throw errors on unsupported types\n  try {\n    // WebKit returns null on unsupported types\n    if (new Parser().parseFromString('', 'text/html')) {\n      canParse = true;\n    }\n  } catch (e) {}\n  return canParse;\n}\nfunction createHTMLParser() {\n  var Parser = function () {};\n  {\n    var domino = require('@mixmark-io/domino');\n    Parser.prototype.parseFromString = function (string) {\n      return domino.createDocument(string);\n    };\n  }\n  return Parser;\n}\nvar HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser();\n\nfunction RootNode(input, options) {\n  var root;\n  if (typeof input === 'string') {\n    var doc = htmlParser().parseFromString(\n    // DOM parsers arrange elements in the <head> and <body>.\n    // Wrapping in a custom element ensures elements are reliably arranged in\n    // a single element.\n    '<x-turndown id=\"turndown-root\">' + input + '</x-turndown>', 'text/html');\n    root = doc.getElementById('turndown-root');\n  } else {\n    root = input.cloneNode(true);\n  }\n  collapseWhitespace({\n    element: root,\n    isBlock: isBlock,\n    isVoid: isVoid,\n    isPre: options.preformattedCode ? isPreOrCode : null\n  });\n  return root;\n}\nvar _htmlParser;\nfunction htmlParser() {\n  _htmlParser = _htmlParser || new HTMLParser();\n  return _htmlParser;\n}\nfunction isPreOrCode(node) {\n  return node.nodeName === 'PRE' || node.nodeName === 'CODE';\n}\n\nfunction Node(node, options) {\n  node.isBlock = isBlock(node);\n  node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;\n  node.isBlank = isBlank(node);\n  node.flankingWhitespace = flankingWhitespace(node, options);\n  return node;\n}\nfunction isBlank(node) {\n  return !isVoid(node) && !isMeaningfulWhenBlank(node) && /^\\s*$/i.test(node.textContent) && !hasVoid(node) && !hasMeaningfulWhenBlank(node);\n}\nfunction flankingWhitespace(node, options) {\n  if (node.isBlock || options.preformattedCode && node.isCode) {\n    return {\n      leading: '',\n      trailing: ''\n    };\n  }\n  var edges = edgeWhitespace(node.textContent);\n\n  // abandon leading ASCII WS if left-flanked by ASCII WS\n  if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {\n    edges.leading = edges.leadingNonAscii;\n  }\n\n  // abandon trailing ASCII WS if right-flanked by ASCII WS\n  if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {\n    edges.trailing = edges.trailingNonAscii;\n  }\n  return {\n    leading: edges.leading,\n    trailing: edges.trailing\n  };\n}\nfunction edgeWhitespace(string) {\n  var m = string.match(/^(([ \\t\\r\\n]*)(\\s*))(?:(?=\\S)[\\s\\S]*\\S)?((\\s*?)([ \\t\\r\\n]*))$/);\n  return {\n    leading: m[1],\n    // whole string for whitespace-only strings\n    leadingAscii: m[2],\n    leadingNonAscii: m[3],\n    trailing: m[4],\n    // empty for whitespace-only strings\n    trailingNonAscii: m[5],\n    trailingAscii: m[6]\n  };\n}\nfunction isFlankedByWhitespace(side, node, options) {\n  var sibling;\n  var regExp;\n  var isFlanked;\n  if (side === 'left') {\n    sibling = node.previousSibling;\n    regExp = / $/;\n  } else {\n    sibling = node.nextSibling;\n    regExp = /^ /;\n  }\n  if (sibling) {\n    if (sibling.nodeType === 3) {\n      isFlanked = regExp.test(sibling.nodeValue);\n    } else if (options.preformattedCode && sibling.nodeName === 'CODE') {\n      isFlanked = false;\n    } else if (sibling.nodeType === 1 && !isBlock(sibling)) {\n      isFlanked = regExp.test(sibling.textContent);\n    }\n  }\n  return isFlanked;\n}\n\nvar reduce = Array.prototype.reduce;\nfunction TurndownService(options) {\n  if (!(this instanceof TurndownService)) return new TurndownService(options);\n  var defaults = {\n    rules: rules,\n    headingStyle: 'setext',\n    hr: '* * *',\n    bulletListMarker: '*',\n    codeBlockStyle: 'indented',\n    fence: '```',\n    emDelimiter: '_',\n    strongDelimiter: '**',\n    linkStyle: 'inlined',\n    linkReferenceStyle: 'full',\n    br: '  ',\n    preformattedCode: false,\n    blankReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' : '';\n    },\n    keepReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + node.outerHTML + '\\n\\n' : node.outerHTML;\n    },\n    defaultReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + content + '\\n\\n' : content;\n    }\n  };\n  this.options = extend({}, defaults, options);\n  this.rules = new Rules(this.options);\n}\nTurndownService.prototype = {\n  /**\n   * The entry point for converting a string or DOM node to Markdown\n   * @public\n   * @param {String|HTMLElement} input The string or DOM node to convert\n   * @returns A Markdown representation of the input\n   * @type String\n   */\n\n  turndown: function (input) {\n    if (!canConvert(input)) {\n      throw new TypeError(input + ' is not a string, or an element/document/fragment node.');\n    }\n    if (input === '') return '';\n    var output = process.call(this, new RootNode(input, this.options));\n    return postProcess.call(this, output);\n  },\n  /**\n   * Add one or more plugins\n   * @public\n   * @param {Function|Array} plugin The plugin or array of plugins to add\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  use: function (plugin) {\n    if (Array.isArray(plugin)) {\n      for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);\n    } else if (typeof plugin === 'function') {\n      plugin(this);\n    } else {\n      throw new TypeError('plugin must be a Function or an Array of Functions');\n    }\n    return this;\n  },\n  /**\n   * Adds a rule\n   * @public\n   * @param {String} key The unique key of the rule\n   * @param {Object} rule The rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  addRule: function (key, rule) {\n    this.rules.add(key, rule);\n    return this;\n  },\n  /**\n   * Keep a node (as HTML) that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  keep: function (filter) {\n    this.rules.keep(filter);\n    return this;\n  },\n  /**\n   * Remove a node that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  remove: function (filter) {\n    this.rules.remove(filter);\n    return this;\n  },\n  /**\n   * Escapes Markdown syntax\n   * @public\n   * @param {String} string The string to escape\n   * @returns A string with Markdown syntax escaped\n   * @type String\n   */\n\n  escape: function (string) {\n    return escapeMarkdown(string);\n  }\n};\n\n/**\n * Reduces a DOM node down to its Markdown string equivalent\n * @private\n * @param {HTMLElement} parentNode The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction process(parentNode) {\n  var self = this;\n  return reduce.call(parentNode.childNodes, function (output, node) {\n    node = new Node(node, self.options);\n    var replacement = '';\n    if (node.nodeType === 3) {\n      replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);\n    } else if (node.nodeType === 1) {\n      replacement = replacementForNode.call(self, node);\n    }\n    return join(output, replacement);\n  }, '');\n}\n\n/**\n * Appends strings as each rule requires and trims the output\n * @private\n * @param {String} output The conversion output\n * @returns A trimmed version of the ouput\n * @type String\n */\n\nfunction postProcess(output) {\n  var self = this;\n  this.rules.forEach(function (rule) {\n    if (typeof rule.append === 'function') {\n      output = join(output, rule.append(self.options));\n    }\n  });\n  return output.replace(/^[\\t\\r\\n]+/, '').replace(/[\\t\\r\\n\\s]+$/, '');\n}\n\n/**\n * Converts an element node to its Markdown equivalent\n * @private\n * @param {HTMLElement} node The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction replacementForNode(node) {\n  var rule = this.rules.forNode(node);\n  var content = process.call(this, node);\n  var whitespace = node.flankingWhitespace;\n  if (whitespace.leading || whitespace.trailing) content = content.trim();\n  return whitespace.leading + rule.replacement(content, node, this.options) + whitespace.trailing;\n}\n\n/**\n * Joins replacement to the current output with appropriate number of new lines\n * @private\n * @param {String} output The current conversion output\n * @param {String} replacement The string to append to the output\n * @returns Joined output\n * @type String\n */\n\nfunction join(output, replacement) {\n  var s1 = trimTrailingNewlines(output);\n  var s2 = trimLeadingNewlines(replacement);\n  var nls = Math.max(output.length - s1.length, replacement.length - s2.length);\n  var separator = '\\n\\n'.substring(0, nls);\n  return s1 + separator + s2;\n}\n\n/**\n * Determines whether an input can be converted\n * @private\n * @param {String|HTMLElement} input Describe this parameter\n * @returns Describe what it returns\n * @type String|Object|Array|Boolean|Number\n */\n\nfunction canConvert(input) {\n  return input != null && (typeof input === 'string' || input.nodeType && (input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11));\n}\n\nexport { TurndownService as default };\n",null,null,null,"/**\n * Tap — shared types.\n *\n * `TapProgress` is the seam of the whole chapter: every long-running function\n * takes an `onProgress` and emits these events. `done`/`total` are present on\n * EVERY event (not just `page`) because the consumer draws a bar from them and\n * a bar that only moves on some events stutters.\n */\n\nexport type TapPhase =\n    | \"discover\"\n    | \"fetch\"\n    | \"extract\"\n    | \"push\"\n    | \"delete\"\n    | \"reindex\";\n\nexport type TapEvent = \"start\" | \"page\" | \"done\" | \"error\";\n\nexport interface TapProgress {\n    phase: TapPhase;\n    event: TapEvent;\n    url?: string;\n    path?: string;\n    done: number;\n    total: number;\n    message?: string;\n}\n\nexport type OnProgress = (ev: TapProgress) => void;\n\n/** Emit helper — tolerates a missing callback and never lets a bad one throw. */\nexport function emit(onProgress: OnProgress | undefined, ev: TapProgress): void {\n    if (!onProgress) return;\n    try {\n        onProgress(ev);\n    } catch {\n        /* a progress listener must never break a crawl */\n    }\n}\n\n/** How the URL list was found. */\nexport type DiscoverySource = \"sitemap\" | \"links\";\n\nexport interface DiscoverResult {\n    source: DiscoverySource;\n    urls: string[];\n    /** Disallow rules read from robots.txt for `User-agent: *`. */\n    disallow: string[];\n    sitemaps: string[];\n}\n\nexport interface FetchedPage {\n    /** The URL as requested. */\n    url: string;\n    /** Where the redirects landed — this is what extraction resolves against. */\n    finalUrl: string;\n    status: number;\n    contentType: string;\n    etag: string | null;\n    lastModified: string | null;\n    body: string;\n    bytes: number;\n    ms: number;\n}\n\nexport interface ExtractedPage {\n    url: string;\n    title: string;\n    description: string;\n    author: string;\n    published: string;\n    site: string;\n    language: string;\n    wordCount: number;\n    extractorType: string;\n    markdown: string;\n    /** Visible text bytes / HTML bytes, rounded to 4 decimals. */\n    textRatio: number;\n    /** Fewer than `THIN_CONTENT_WORDS` words — short, not necessarily broken. */\n    thin: boolean;\n    /** Ratio below `SPA_TEXT_RATIO`: almost certainly a client-rendered shell. */\n    needsJs: boolean;\n    ms: number;\n}\n","/**\n * The ONE version string in the SDK.\n *\n * It used to live in four places (cli.ts, cli/ui.ts banner, tap/fetch.ts and\n * package.json) and all four had drifted apart. Everything that shows a\n * version now reads from here.\n *\n * At build time tsup's `define` substitutes `__PKG_VERSION__` with the literal\n * from package.json, so the shipped bundles can never disagree with the\n * manifest — the SDK builds to a bundle with no package.json alongside it, so\n * importing the manifest at runtime is not an option. The literal below is the\n * fallback for anything that runs the TypeScript directly (vitest, tsx); it is\n * kept honest by `npm run check:version`, which `prepublishOnly` runs.\n */\n\ndeclare const __PKG_VERSION__: string;\n\nexport const VERSION: string =\n    typeof __PKG_VERSION__ !== \"undefined\" ? __PKG_VERSION__ : \"0.15.0\";\n","/**\n * Plain HTTP fetching — the cheap path that covers every server-rendered site.\n *\n * No browser here by design: headless rendering is out of scope for tap, and a\n * page that needs it is reported honestly (`needsJs`) rather than rendered.\n * What this module does owe the site is politeness: an identifying user-agent,\n * a hard per-page timeout, and a refusal to download anything that is not HTML.\n */\n\nimport { emit, type FetchedPage, type OnProgress } from \"./types.js\";\nimport { VERSION } from \"../version.js\";\n\n/** The tap identifies itself with the SDK's own version — see src/version.ts. */\nexport const TAP_VERSION = VERSION;\n\nexport const USER_AGENT = `pinecall-tap/${TAP_VERSION} (+https://pinecall.io)`;\n\n/** A page must answer within this, or it is not worth the crawl budget. */\nexport const DEFAULT_TIMEOUT_MS = 15_000;\n\nexport class TapFetchError extends Error {\n    readonly url: string;\n    readonly status?: number;\n\n    constructor(message: string, info: { url: string; status?: number }) {\n        super(message);\n        this.name = \"TapFetchError\";\n        this.url = info.url;\n        this.status = info.status;\n    }\n}\n\nexport interface FetchPageOptions {\n    timeoutMs?: number;\n    /** `text/html` enforces the HTML check; use `application/xml` for sitemaps. */\n    accept?: string;\n    language?: string;\n    onProgress?: OnProgress;\n    /** Counters to stamp on the emitted events. */\n    done?: number;\n    total?: number;\n}\n\n/**\n * Fetch a URL as text, following redirects, refusing anything that is not HTML.\n * Returns the caching validators too — they are what makes a re-index free.\n */\nexport async function fetchPage(\n    url: string,\n    opts: FetchPageOptions = {},\n): Promise<FetchedPage> {\n    const {\n        timeoutMs = DEFAULT_TIMEOUT_MS,\n        accept = \"text/html\",\n        language,\n        onProgress,\n        done = 0,\n        total = 1,\n    } = opts;\n\n    const controller = new AbortController();\n    const timer = setTimeout(() => controller.abort(), timeoutMs);\n    const started = Date.now();\n\n    emit(onProgress, { phase: \"fetch\", event: \"start\", url, done, total });\n\n    try {\n        const res = await fetch(url, {\n            redirect: \"follow\",\n            signal: controller.signal,\n            headers: {\n                \"user-agent\": USER_AGENT,\n                accept: `${accept},*/*;q=0.5`,\n                \"accept-language\": language ? `${language},en;q=0.8` : \"en,es;q=0.8\",\n            },\n        });\n\n        if (!res.ok) {\n            throw new TapFetchError(`HTTP ${res.status} for ${url}`, {\n                url,\n                status: res.status,\n            });\n        }\n\n        const contentType = res.headers.get(\"content-type\") ?? \"\";\n        if (accept === \"text/html\" && !/text\\/html|application\\/xhtml/i.test(contentType)) {\n            throw new TapFetchError(\n                `not HTML (${contentType || \"no content-type\"}) for ${url}`,\n                { url, status: res.status },\n            );\n        }\n\n        const body = await res.text();\n        const page: FetchedPage = {\n            url,\n            finalUrl: res.url || url,\n            status: res.status,\n            contentType,\n            etag: res.headers.get(\"etag\"),\n            lastModified: res.headers.get(\"last-modified\"),\n            body,\n            bytes: byteLength(body),\n            ms: Date.now() - started,\n        };\n\n        emit(onProgress, {\n            phase: \"fetch\",\n            event: \"page\",\n            url: page.finalUrl,\n            done: done + 1,\n            total,\n        });\n        return page;\n    } catch (err) {\n        const message = err instanceof Error ? `${err.name}: ${err.message}` : String(err);\n        emit(onProgress, { phase: \"fetch\", event: \"error\", url, done, total, message });\n        throw err;\n    } finally {\n        clearTimeout(timer);\n    }\n}\n\n/** UTF-8 byte length without depending on Buffer being present. */\nexport function byteLength(text: string): number {\n    return new TextEncoder().encode(text).length;\n}\n\n/**\n * Run `fn` over the items with a bounded number of in-flight requests. The cap\n * is the politeness knob: four concurrent requests is a browser's worth of\n * load, not a scrape.\n */\nexport async function mapWithConcurrency<T, R>(\n    items: readonly T[],\n    limit: number,\n    fn: (item: T, index: number) => Promise<R>,\n): Promise<R[]> {\n    const results = new Array<R>(items.length);\n    let next = 0;\n    const width = Math.max(1, Math.min(limit, items.length));\n    const workers = Array.from({ length: width }, async () => {\n        for (;;) {\n            const i = next++;\n            if (i >= items.length) return;\n            results[i] = await fn(items[i]!, i);\n        }\n    });\n    await Promise.all(workers);\n    return results;\n}\n","/**\n * Which URLs make up \"a website\".\n *\n * Sitemap first — it is authoritative, costs one request and needs no HTML\n * parsing. The link crawl is the fallback, and it is deliberately one hop: a\n * preview that takes a minute to compute is a preview nobody waits for.\n *\n * Normalization is the other half of the job. Without it the same page lands\n * in the knowledge base once per tracking parameter, and a re-tap never\n * matches what the previous one pushed.\n */\n\nimport { parseHTML } from \"linkedom\";\n\nimport { fetchPage, USER_AGENT } from \"./fetch.js\";\nimport { emit, type DiscoverResult, type OnProgress } from \"./types.js\";\n\n/** Things that are not pages: fetching them wastes the budget and the host's. */\nconst SKIP_EXTENSIONS =\n    /\\.(pdf|zip|gz|tar|png|jpe?g|gif|svg|webp|avif|ico|mp4|webm|mp3|wav|css|js|json|xml|rss|atom)$/i;\n\n/** Parameters that identify a visit, never a page. */\nconst TRACKING_PARAMS = /^(utm_|fbclid|gclid|mc_|ref$|source$)/i;\n\n/** A sitemapindex may point at a sitemapindex; three levels is already unusual. */\nconst MAX_SITEMAP_DEPTH = 3;\n\nexport const DEFAULT_PAGE_LIMIT = 100;\nexport const DEFAULT_CONCURRENCY = 4;\n\n/**\n * Canonical form of a URL: absolute, http(s), no fragment, no tracking noise,\n * no trailing slash (except the root). Returns null for anything unusable.\n */\nexport function normalizeUrl(raw: string, base?: string): string | null {\n    let u: URL;\n    try {\n        u = new URL(raw, base);\n    } catch {\n        return null;\n    }\n    if (u.protocol !== \"http:\" && u.protocol !== \"https:\") return null;\n    u.hash = \"\";\n    for (const key of [...u.searchParams.keys()]) {\n        if (TRACKING_PARAMS.test(key)) u.searchParams.delete(key);\n    }\n    if (u.pathname !== \"/\" && u.pathname.endsWith(\"/\")) {\n        u.pathname = u.pathname.slice(0, -1);\n    }\n    return u.toString();\n}\n\n/** Same host — not merely same registrable domain: a subdomain is a site. */\nexport function sameSite(url: string, origin: string): boolean {\n    try {\n        return new URL(url).host === new URL(origin).host;\n    } catch {\n        return false;\n    }\n}\n\nexport function isIndexable(url: string): boolean {\n    try {\n        return !SKIP_EXTENSIONS.test(new URL(url).pathname);\n    } catch {\n        return false;\n    }\n}\n\nexport interface RobotsInfo {\n    sitemaps: string[];\n    disallow: string[];\n}\n\n/** robots.txt: the sitemap pointers and the disallow list for `User-agent: *`. */\nexport async function readRobots(\n    origin: string,\n    opts: { timeoutMs?: number } = {},\n): Promise<RobotsInfo> {\n    const out: RobotsInfo = { sitemaps: [], disallow: [] };\n    try {\n        const res = await fetch(new URL(\"/robots.txt\", origin).toString(), {\n            headers: { \"user-agent\": USER_AGENT },\n            signal: AbortSignal.timeout(opts.timeoutMs ?? 8_000),\n        });\n        if (!res.ok) return out;\n        const text = await res.text();\n        let applies = false;\n        for (const line of text.split(\"\\n\")) {\n            const [rawKey, ...rest] = line.split(\":\");\n            const key = (rawKey ?? \"\").trim().toLowerCase();\n            const value = rest.join(\":\").trim();\n            if (!value) continue;\n            if (key === \"sitemap\") out.sitemaps.push(value);\n            else if (key === \"user-agent\") applies = value === \"*\";\n            else if (key === \"disallow\" && applies) out.disallow.push(value);\n        }\n    } catch {\n        /* no robots.txt is a valid answer, and so is a broken one */\n    }\n    return out;\n}\n\n/**\n * A prefix match, which is what the robots.txt convention actually specifies.\n * A blanket `Disallow: /` is honoured like any other rule: tap is not\n * necessarily run by the site's owner — the first consumer lets any visitor\n * tap any third-party site — so a stranger's crawl must not enter a site that\n * refuses crawlers. Discovery then yields nothing and the caller can report\n * \"this site refuses crawlers\" honestly.\n */\nexport function allowedByRobots(url: string, disallow: readonly string[]): boolean {\n    if (!disallow.length) return true;\n    let path: string;\n    try {\n        path = new URL(url).pathname;\n    } catch {\n        return false;\n    }\n    return !disallow.some((rule) => path.startsWith(rule));\n}\n\nfunction decodeEntities(s: string): string {\n    return s\n        .replace(/&lt;/g, \"<\")\n        .replace(/&gt;/g, \">\")\n        .replace(/&quot;/g, '\"')\n        .replace(/&#39;/g, \"'\")\n        .replace(/&amp;/g, \"&\");\n}\n\nexport interface ReadSitemapOptions {\n    limit?: number;\n    depth?: number;\n    seen?: Set<string>;\n    timeoutMs?: number;\n}\n\n/**\n * One `<url>` element's worth of sitemap: the location, plus the `<priority>`\n * the site declared for it when it declared one. Priority is optional in the\n * protocol and most sitemaps omit it, so it stays `undefined` rather than\n * defaulting to the spec's 0.5 — \"no opinion\" and \"middling\" rank differently.\n */\nexport interface SitemapEntry {\n    url: string;\n    priority?: number;\n}\n\nconst LOC_RE = /<loc>\\s*([^<\\s]+)\\s*<\\/loc>/i;\nconst PRIORITY_RE = /<priority>\\s*([0-9.]+)\\s*<\\/priority>/i;\n\n/**\n * Locations with their priorities, read from the SAME `<url>` element so a\n * priority can never be attributed to a neighbouring loc. Falls back to a flat\n * scan of `<loc>` for documents that carry no `<url>` wrappers (a sitemapindex,\n * or a hand-written file).\n */\nfunction parseSitemapEntries(body: string): SitemapEntry[] {\n    const blocks = [...body.matchAll(/<url\\b[^>]*>([\\s\\S]*?)<\\/url>/gi)];\n    const out: SitemapEntry[] = [];\n    for (const block of blocks) {\n        const inner = block[1]!;\n        const loc = LOC_RE.exec(inner);\n        if (!loc) continue;\n        const prio = PRIORITY_RE.exec(inner);\n        const value = prio ? Number.parseFloat(prio[1]!) : Number.NaN;\n        out.push({\n            url: decodeEntities(loc[1]!),\n            ...(Number.isFinite(value) ? { priority: value } : {}),\n        });\n    }\n    if (out.length) return out;\n    return [...body.matchAll(/<loc>\\s*([^<\\s]+)\\s*<\\/loc>/gi)].map((m) => ({\n        url: decodeEntities(m[1]!),\n    }));\n}\n\n/**\n * Follow sitemap indexes recursively, bounded in both depth and count, keeping\n * each location's declared priority.\n */\nexport async function readSitemapEntries(\n    sitemapUrl: string,\n    opts: ReadSitemapOptions = {},\n): Promise<SitemapEntry[]> {\n    const { limit = 500, depth = 0, seen = new Set<string>(), timeoutMs } = opts;\n    if (depth > MAX_SITEMAP_DEPTH || seen.has(sitemapUrl) || limit <= 0) return [];\n    seen.add(sitemapUrl);\n\n    let body: string;\n    try {\n        ({ body } = await fetchPage(sitemapUrl, {\n            accept: \"application/xml\",\n            ...(timeoutMs === undefined ? {} : { timeoutMs }),\n        }));\n    } catch {\n        return [];\n    }\n\n    const entries = parseSitemapEntries(body);\n    if (!/<sitemapindex/i.test(body)) return entries.slice(0, limit);\n\n    const urls: SitemapEntry[] = [];\n    for (const child of entries) {\n        if (urls.length >= limit) break;\n        urls.push(\n            ...(await readSitemapEntries(child.url, {\n                limit: limit - urls.length,\n                depth: depth + 1,\n                seen,\n                ...(timeoutMs === undefined ? {} : { timeoutMs }),\n            })),\n        );\n    }\n    return urls;\n}\n\n/** The locations alone, for callers that do not care about priority. */\nexport async function readSitemap(\n    sitemapUrl: string,\n    opts: ReadSitemapOptions = {},\n): Promise<string[]> {\n    return (await readSitemapEntries(sitemapUrl, opts)).map((e) => e.url);\n}\n\n/** Path segments below the root: `/` is 0, `/docs` is 1, `/docs/a/b` is 3. */\nfunction pathDepth(url: string): number {\n    try {\n        return new URL(url).pathname.split(\"/\").filter(Boolean).length;\n    } catch {\n        return Number.MAX_SAFE_INTEGER;\n    }\n}\n\n/**\n * The order pages are offered to the limit, and the whole point of it: a\n * sitemap's own order is EXPORT order, not a ranking — linear.app's puts a few\n * hundred changelog posts ahead of the homepage, so a `limit=40` tap used to\n * index the changelog and miss what the site IS. So, before the cut:\n *\n *   1. path depth ascending — the homepage first, then `/docs`, `/pricing`,\n *      then their children. Shallow paths are the pages that explain the site.\n *   2. `<priority>` descending when the sitemap declares it — the site's own\n *      opinion, used to break depth ties. A page without one sorts after any\n *      page with one at the same depth: silence is not a claim.\n *   3. the original document index — a stable tiebreak, so the same sitemap\n *      always yields the same list.\n */\nfunction rankBySitemapShape(entries: readonly SitemapEntry[]): SitemapEntry[] {\n    return entries\n        .map((entry, index) => ({ entry, index, depth: pathDepth(entry.url) }))\n        .sort((a, b) => {\n            if (a.depth !== b.depth) return a.depth - b.depth;\n            const ap = a.entry.priority ?? -1;\n            const bp = b.entry.priority ?? -1;\n            if (ap !== bp) return bp - ap;\n            return a.index - b.index;\n        })\n        .map((r) => r.entry);\n}\n\n/** Every same-document link on a page, normalized and deduped. */\nexport function extractLinks(html: string, baseUrl: string): string[] {\n    const { document } = parseHTML(html);\n    const out = new Set<string>();\n    for (const a of document.querySelectorAll(\"a[href]\")) {\n        const href = a.getAttribute(\"href\");\n        if (!href) continue;\n        const normalized = normalizeUrl(href, baseUrl);\n        if (normalized) out.add(normalized);\n    }\n    return [...out];\n}\n\nexport interface DiscoverOptions {\n    limit?: number;\n    timeoutMs?: number;\n    onProgress?: OnProgress;\n}\n\n/**\n * The URL list for a site: sitemap when there is one, one hop of links\n * otherwise. Reports which path it took so the caller can say so out loud —\n * \"found 12 links off the homepage\" and \"read your sitemap\" are very\n * different promises about coverage.\n */\nexport async function discover(\n    startUrl: string,\n    opts: DiscoverOptions = {},\n): Promise<DiscoverResult> {\n    const { limit = DEFAULT_PAGE_LIMIT, timeoutMs, onProgress } = opts;\n    const origin = new URL(startUrl).origin;\n\n    emit(onProgress, {\n        phase: \"discover\",\n        event: \"start\",\n        url: startUrl,\n        done: 0,\n        total: limit,\n    });\n\n    const robots = await readRobots(origin, timeoutMs === undefined ? {} : { timeoutMs });\n    const candidates = robots.sitemaps.length\n        ? robots.sitemaps\n        : [new URL(\"/sitemap.xml\", origin).toString()];\n\n    // Collect the whole readable sitemap first — the same filters, the same\n    // internal read bound as before — because the cut can only pick well once\n    // it can see everything it is choosing between. The bound is at least\n    // `readSitemap`'s own default of 500: with a small limit, `limit * 4` alone\n    // would stop reading inside the changelog and never see the homepage the\n    // ranking exists to find.\n    const readBound = Math.max(limit * 4, 500);\n    const found = new Map<string, SitemapEntry>();\n    for (const sitemap of candidates) {\n        const entries = await readSitemapEntries(sitemap, {\n            limit: readBound,\n            ...(timeoutMs === undefined ? {} : { timeoutMs }),\n        });\n        for (const entry of entries) {\n            const n = normalizeUrl(entry.url, origin);\n            if (!n) continue;\n            if (!sameSite(n, origin)) continue;\n            if (!isIndexable(n)) continue;\n            if (!allowedByRobots(n, robots.disallow)) continue;\n            if (found.has(n)) continue;\n            found.set(n, {\n                url: n,\n                ...(entry.priority === undefined ? {} : { priority: entry.priority }),\n            });\n        }\n        if (found.size >= readBound) break;\n    }\n\n    if (found.size > 0) {\n        const urls = rankBySitemapShape([...found.values()])\n            .slice(0, limit)\n            .map((e) => e.url);\n        for (const [i, url] of urls.entries()) {\n            emit(onProgress, {\n                phase: \"discover\",\n                event: \"page\",\n                url,\n                done: i + 1,\n                total: Math.max(limit, urls.length),\n            });\n        }\n        emit(onProgress, {\n            phase: \"discover\",\n            event: \"done\",\n            done: urls.length,\n            total: urls.length,\n            message: \"sitemap\",\n        });\n        return { source: \"sitemap\", urls, disallow: robots.disallow, sitemaps: robots.sitemaps };\n    }\n\n    // Fallback: one hop off the entry page. The start URL stays in the list\n    // whatever happens — a site of one page is still a site — UNLESS robots\n    // forbids it, in which case discovery returns nothing and the caller can\n    // say the site refuses crawlers.\n    const start = normalizeUrl(startUrl, origin) ?? startUrl;\n    if (!allowedByRobots(start, robots.disallow)) {\n        emit(onProgress, {\n            phase: \"discover\",\n            event: \"done\",\n            done: 0,\n            total: 0,\n            message: \"robots\",\n        });\n        return {\n            source: \"links\",\n            urls: [],\n            disallow: robots.disallow,\n            sitemaps: robots.sitemaps,\n        };\n    }\n    const urls = new Set<string>([start]);\n    try {\n        const { body, finalUrl } = await fetchPage(start, {\n            ...(timeoutMs === undefined ? {} : { timeoutMs }),\n        });\n        for (const link of extractLinks(body, finalUrl)) {\n            if (urls.size >= limit) break;\n            if (!sameSite(link, origin)) continue;\n            if (!isIndexable(link)) continue;\n            if (!allowedByRobots(link, robots.disallow)) continue;\n            if (urls.has(link)) continue;\n            urls.add(link);\n            emit(onProgress, {\n                phase: \"discover\",\n                event: \"page\",\n                url: link,\n                done: urls.size,\n                total: Math.max(limit, urls.size),\n            });\n        }\n    } catch (err) {\n        const message = err instanceof Error ? `${err.name}: ${err.message}` : String(err);\n        emit(onProgress, {\n            phase: \"discover\",\n            event: \"error\",\n            url: start,\n            done: urls.size,\n            total: urls.size,\n            message,\n        });\n    }\n\n    const list = [...urls].slice(0, limit);\n    emit(onProgress, {\n        phase: \"discover\",\n        event: \"done\",\n        done: list.length,\n        total: list.length,\n        message: \"links\",\n    });\n    return { source: \"links\", urls: list, disallow: robots.disallow, sitemaps: robots.sitemaps };\n}\n","/**\n * HTML -> clean Markdown.\n *\n * Defuddle does both halves of the job: it isolates the main content (the\n * Readability role) and standardizes code blocks, math and footnotes before\n * converting — which is exactly where readability+turndown produces garbage.\n *\n * The two thresholds below were calibrated against real sites; see each one.\n */\n\nimport { parseHTML } from \"linkedom\";\nimport { Defuddle } from \"defuddle/node\";\n\nimport { emit, type ExtractedPage, type OnProgress } from \"./types.js\";\nimport { byteLength } from \"./fetch.js\";\n\n/** A page that yields less than this is short — not necessarily broken. */\nexport const THIN_CONTENT_WORDS = 120;\n\n/**\n * Visible-text-to-HTML ratio below which the page is almost certainly rendered\n * by JavaScript. Measured: vercel.com 0.0055 and stripe.com/docs/api 0.0065\n * (both client-rendered) against hono.dev 0.023 and bernardocastro.dev 0.195\n * (both server-rendered, one of them genuinely short). Word count alone\n * confuses \"short page\" with \"empty shell\"; this ratio separates them.\n */\nexport const SPA_TEXT_RATIO = 0.012;\n\n/** Ratio of visible text to raw HTML, with script/style/noscript discounted. */\nexport function textRatio(document: Document, htmlBytes: number): number {\n    const body = document.body;\n    if (!body) return 0;\n    let text = body.textContent ?? \"\";\n    for (const el of document.querySelectorAll(\"script,style,noscript\")) {\n        const inner = el.textContent ?? \"\";\n        if (inner) text = text.replace(inner, \"\");\n    }\n    return text.replace(/\\s+/g, \" \").trim().length / Math.max(htmlBytes, 1);\n}\n\nexport function countWords(text: string): number {\n    const m = text.match(/\\S+/g);\n    return m ? m.length : 0;\n}\n\n/** Rough token estimate — good enough to budget an index without a tokenizer. */\nexport function estimateTokens(text: string): number {\n    return Math.ceil(text.length / 4);\n}\n\nexport interface ExtractOptions {\n    language?: string;\n    removeImages?: boolean;\n    onProgress?: OnProgress;\n    done?: number;\n    total?: number;\n}\n\nexport async function extract(\n    html: string,\n    url: string,\n    opts: ExtractOptions = {},\n): Promise<ExtractedPage> {\n    const {\n        language,\n        removeImages = true,\n        onProgress,\n        done = 0,\n        total = 1,\n    } = opts;\n\n    const started = Date.now();\n    emit(onProgress, { phase: \"extract\", event: \"start\", url, done, total });\n\n    try {\n        const { document } = parseHTML(html);\n        const ratio = textRatio(document as unknown as Document, byteLength(html));\n\n        const result = await Defuddle(document, url, {\n            markdown: true,\n            removeImages,\n            language,\n            // No third-party API calls during extraction: an indexer must not\n            // fan out to YouTube/Reddit endpoints on behalf of a visitor.\n            useAsync: false,\n        });\n\n        const markdown = (result.content ?? \"\").trim();\n        const words = result.wordCount ?? countWords(markdown);\n\n        const page: ExtractedPage = {\n            url,\n            title: result.title ?? \"\",\n            description: result.description ?? \"\",\n            author: result.author ?? \"\",\n            published: result.published ?? \"\",\n            site: result.site ?? \"\",\n            language: result.language ?? \"\",\n            wordCount: words,\n            extractorType: result.extractorType ?? \"generic\",\n            markdown,\n            textRatio: Number(ratio.toFixed(4)),\n            thin: countWords(markdown) < THIN_CONTENT_WORDS,\n            // The only signal that should ever trigger a headless retry — and\n            // tap does not do one, it just says so.\n            needsJs: ratio < SPA_TEXT_RATIO,\n            ms: Date.now() - started,\n        };\n\n        emit(onProgress, { phase: \"extract\", event: \"page\", url, done: done + 1, total });\n        return page;\n    } catch (err) {\n        const message = err instanceof Error ? `${err.name}: ${err.message}` : String(err);\n        emit(onProgress, { phase: \"extract\", event: \"error\", url, done, total, message });\n        throw err;\n    }\n}\n","/**\n * Content hashing — the thing that makes a re-tap cheap.\n *\n * The hash is taken over the extracted MARKDOWN, not the HTML: a site that\n * ships a new build id or a rotating nonce changes its HTML on every request\n * while the prose stays identical, and hashing the HTML would re-push the\n * whole knowledge base each sync.\n */\n\nimport { createHash } from \"node:crypto\";\n\n/** sha256 of the text, first 16 hex characters — 64 bits, plenty for dedupe. */\nexport function contentHash(text: string): string {\n    return createHash(\"sha256\").update(text, \"utf8\").digest(\"hex\").slice(0, 16);\n}\n","/**\n * planTap — the preview that touches nothing.\n *\n * The whole point of a plan is that it is safe to run: it discovers, fetches\n * and extracts, and then hands back a table the caller can show a human before\n * anything is written anywhere. There is not a single knowledge-base call in\n * this module, by design — `tap` is the verb that writes.\n *\n * Two decisions worth knowing about:\n *\n * - **Excluded pages are marked, not dropped.** A preview that silently omits\n *   half a site cannot be checked. They carry `excluded: true` and are never\n *   fetched, so an exclusion also saves the requests.\n * - **A bad page is a row, not an exception.** One 404 in a hundred URLs must\n *   not lose the other ninety-nine, so failures land as pages with `error`.\n */\n\nimport { discover, DEFAULT_CONCURRENCY, DEFAULT_PAGE_LIMIT } from \"./discover.js\";\nimport { fetchPage, mapWithConcurrency } from \"./fetch.js\";\nimport { extract, countWords, estimateTokens } from \"./extract.js\";\nimport { contentHash } from \"./hash.js\";\nimport { emit, type DiscoverySource, type OnProgress } from \"./types.js\";\n\nexport interface TapPage {\n    url: string;\n    /** Knowledge-base document path: `/news/foo` -> `news__foo.md`. */\n    path: string;\n    title: string;\n    words: number;\n    /** Rough estimate (characters / 4) — enough to budget an index. */\n    tokens: number;\n    thin: boolean;\n    needsJs: boolean;\n    /** Hash of the extracted markdown; empty for excluded or failed pages. */\n    hash: string;\n    /** Filtered out by `include`/`exclude` — listed, never fetched. */\n    excluded?: true;\n    /** Why this page has no content. Its presence is what \"failed\" means. */\n    error?: string;\n    /**\n     * Only present when `keepContent` was requested. See {@link PlanTapOptions.keepContent}.\n     */\n    markdown?: string;\n}\n\nexport interface TapPlanTotals {\n    pages: number;\n    included: number;\n    excluded: number;\n    failed: number;\n    thin: number;\n    needsJs: number;\n    words: number;\n    tokens: number;\n}\n\nexport interface TapPlan {\n    startUrl: string;\n    source: DiscoverySource;\n    pages: TapPage[];\n    totals: TapPlanTotals;\n}\n\nexport interface PlanTapOptions {\n    /** Maximum pages to consider. Politeness default: 100. */\n    limit?: number;\n    /** In-flight requests. Politeness default: 4 — a browser's worth of load. */\n    concurrency?: number;\n    /** If given, a URL must match one of these to be included. */\n    include?: RegExp[];\n    /** A URL matching any of these is excluded, even if `include` matched. */\n    exclude?: RegExp[];\n    /** Preferred content language, passed to fetch and extraction. */\n    language?: string;\n    /** Per-page timeout override, in milliseconds. */\n    timeoutMs?: number;\n    /**\n     * Retain each page's markdown on the returned plan.\n     *\n     * Off by default and deliberately so: a 200-page site is several megabytes\n     * of prose, and a preview that a UI holds while a human reads it should not\n     * pin that. Turn it on when the caller is about to `tap` the plan straight\n     * away and wants to reuse the text instead of re-fetching the site.\n     */\n    keepContent?: boolean;\n    onProgress?: OnProgress;\n}\n\n/**\n * Knowledge-base document path for a URL: the pathname with `/` as separator\n * flattened to `__`, `index` for the root, and a `.md` suffix. Flat because a\n * knowledge base is a flat namespace, and reversible enough to read.\n */\nexport function docPath(url: string): string {\n    let pathname: string;\n    try {\n        pathname = new URL(url).pathname;\n    } catch {\n        pathname = url;\n    }\n    const trimmed = pathname.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n    if (!trimmed) return \"index.md\";\n    const base = trimmed.replace(/\\.(html?|php)$/i, \"\");\n    return `${base.replace(/\\//g, \"__\")}.md`;\n}\n\n/** `include` is an allow-list when present; `exclude` always wins. */\nexport function isExcluded(\n    url: string,\n    include?: readonly RegExp[],\n    exclude?: readonly RegExp[],\n): boolean {\n    if (include?.length && !include.some((re) => re.test(url))) return true;\n    if (exclude?.length && exclude.some((re) => re.test(url))) return true;\n    return false;\n}\n\nfunction totalsOf(pages: readonly TapPage[]): TapPlanTotals {\n    const totals: TapPlanTotals = {\n        pages: pages.length,\n        included: 0,\n        excluded: 0,\n        failed: 0,\n        thin: 0,\n        needsJs: 0,\n        words: 0,\n        tokens: 0,\n    };\n    for (const p of pages) {\n        if (p.excluded) {\n            totals.excluded++;\n            continue;\n        }\n        if (p.error) {\n            totals.failed++;\n            continue;\n        }\n        totals.included++;\n        if (p.thin) totals.thin++;\n        if (p.needsJs) totals.needsJs++;\n        totals.words += p.words;\n        totals.tokens += p.tokens;\n    }\n    return totals;\n}\n\n/**\n * Preview what tapping a site would index — without writing anything.\n *\n * Discovers the URL list (sitemap first, one hop of links as fallback), then\n * fetches and extracts every page that survived the include/exclude filter,\n * with a bounded worker pool. Progress is emitted for discovery, fetch and\n * extract with monotonic `done`/`total`.\n *\n * A site whose robots.txt refuses crawlers yields a plan with no pages rather\n * than an exception — \"this site refuses crawlers\" is an answer, not a crash.\n */\nexport async function planTap(\n    startUrl: string,\n    opts: PlanTapOptions = {},\n): Promise<TapPlan> {\n    const {\n        limit = DEFAULT_PAGE_LIMIT,\n        concurrency = DEFAULT_CONCURRENCY,\n        include,\n        exclude,\n        language,\n        timeoutMs,\n        keepContent = false,\n        onProgress,\n    } = opts;\n\n    const found = await discover(startUrl, {\n        limit,\n        ...(timeoutMs === undefined ? {} : { timeoutMs }),\n        ...(onProgress ? { onProgress } : {}),\n    });\n\n    const excludedPages: TapPage[] = [];\n    const targets: string[] = [];\n    for (const url of found.urls) {\n        if (isExcluded(url, include, exclude)) {\n            excludedPages.push({\n                url,\n                path: docPath(url),\n                title: \"\",\n                words: 0,\n                tokens: 0,\n                thin: false,\n                needsJs: false,\n                hash: \"\",\n                excluded: true,\n            });\n        } else {\n            targets.push(url);\n        }\n    }\n\n    const total = targets.length;\n    // One shared counter for both phases: the bar the consumer draws must move\n    // forward only, whichever worker finished first.\n    let done = 0;\n\n    emit(onProgress, { phase: \"fetch\", event: \"start\", url: startUrl, done: 0, total });\n\n    const fetched = await mapWithConcurrency(targets, concurrency, async (url) => {\n        try {\n            const page = await fetchPage(url, {\n                ...(timeoutMs === undefined ? {} : { timeoutMs }),\n                ...(language === undefined ? {} : { language }),\n            });\n            const extracted = await extract(page.body, page.finalUrl, {\n                ...(language === undefined ? {} : { language }),\n            });\n            const markdown = extracted.markdown;\n            const row: TapPage = {\n                url,\n                path: docPath(url),\n                title: extracted.title,\n                words: extracted.wordCount || countWords(markdown),\n                tokens: estimateTokens(markdown),\n                thin: extracted.thin,\n                needsJs: extracted.needsJs,\n                hash: contentHash(markdown),\n            };\n            if (keepContent) row.markdown = markdown;\n            done++;\n            emit(onProgress, {\n                phase: \"extract\",\n                event: \"page\",\n                url,\n                path: row.path,\n                done,\n                total,\n            });\n            return row;\n        } catch (err) {\n            const message = err instanceof Error ? `${err.name}: ${err.message}` : String(err);\n            done++;\n            emit(onProgress, {\n                phase: \"fetch\",\n                event: \"error\",\n                url,\n                done,\n                total,\n                message,\n            });\n            return {\n                url,\n                path: docPath(url),\n                title: \"\",\n                words: 0,\n                tokens: 0,\n                thin: false,\n                needsJs: false,\n                hash: \"\",\n                error: message,\n            } satisfies TapPage;\n        }\n    });\n\n    emit(onProgress, { phase: \"extract\", event: \"done\", done, total });\n\n    const pages = [...fetched, ...excludedPages];\n    return {\n        startUrl,\n        source: found.source,\n        pages,\n        totals: totalsOf(pages),\n    };\n}\n","/**\n * Base error type.\n *\n * Lives in kernel/ rather than client.ts so the domain layer (Call, Agent) can\n * throw it without importing the client — client.ts already imports the domain,\n * and the cycle would bite at module-evaluation time.\n *\n * `client.ts` re-exports it, so `import { PinecallError } from \"@pinecall/sdk\"`\n * keeps working exactly as before.\n */\nexport class PinecallError extends Error {\n    constructor(message: string, public code?: string) {\n        super(message);\n        this.name = \"PinecallError\";\n    }\n}\n\n/**\n * Terminal registration conflict — the agent id is held by another LIVE\n * process and retrying cannot change that.\n *\n * Emitted on the client's `error` event (so it is catchable programmatically,\n * not just a log line) when either:\n *   - the server answered `AGENT_CONFLICT_FATAL` (its liveness probe confirmed\n *     the holder alive), or\n *   - the retry budget (2× the server's stale-registration window) ran out.\n *\n * Lives here, not in client.ts, so a dispatch handler can construct one\n * without importing the orchestrator that dispatches it. `client.ts` and\n * `index.ts` re-export it, so both existing import paths keep working.\n */\nexport class AgentConflictError extends PinecallError {\n    constructor(\n        message: string,\n        /** The agent id that could not be registered. */\n        public readonly agentId: string,\n        /** How the terminal state was reached. */\n        public readonly reason: \"server_fatal\" | \"retry_budget_exhausted\",\n    ) {\n        super(message, \"AGENT_CONFLICT_FATAL\");\n        this.name = \"AgentConflictError\";\n    }\n}\n\n/**\n * The server ran out of client slots — it refused to register this agent.\n *\n * A distinct type because it is a distinct fact with a distinct remedy. The\n * server used to report the refusal as a nondescript REGISTRATION_ERROR, and\n * the token-mint endpoints — which only see that the agent never appeared —\n * answered `Agent 'x' is not online`. Nothing about the agent is wrong: the\n * SERVER is full. Surface the server's own words verbatim.\n */\nexport class ServerAtCapacityError extends PinecallError {\n    constructor(\n        message: string,\n        /** The agent id that could not be registered. */\n        public readonly agentId: string,\n        /** Client slots in use, as reported by the server (if provided). */\n        public readonly used?: number,\n        /** The server's max_clients ceiling (if provided). */\n        public readonly limit?: number,\n    ) {\n        super(message, \"SERVER_AT_CAPACITY\");\n        this.name = \"ServerAtCapacityError\";\n    }\n}\n","/**\n * Knowledge base (RAG) REST client — the documents an agent can look things up in.\n *\n * Knowledge bases live on the PLAYGROUND API (the management plane), not on\n * the voice server: creating a KB, pushing docs and rebuilding the index are\n * account operations, and they happen whether or not any agent is online.\n * That is why this module takes its own `playgroundUrl` instead of the\n * `apiUrl` the rest of the SDK talks to.\n *\n * Knowledge bases are a paid feature. The server answers HTTP 402 for orgs on\n * a plan without them, and that arrives here as a typed\n * `KnowledgeApiError` with `code === \"UPGRADE_REQUIRED\"` — catchable, so a\n * consumer can offer the upgrade instead of parsing a message.\n */\n\nimport { PinecallError } from \"../kernel/errors.js\";\n\nexport const DEFAULT_PLAYGROUND_URL = \"https://playground.pinecall.io\";\n\n// ── Types ────────────────────────────────────────────────────────────────\n\nexport interface KnowledgeBase {\n    id: string;\n    name: string;\n    description?: string;\n    docCount: number;\n    status: string;\n}\n\nexport interface KnowledgeDoc {\n    id: string;\n    path: string;\n    title: string;\n    bytes: number;\n}\n\n/** A document as returned by `getDoc` — the listing fields plus the text. */\nexport interface KnowledgeDocWithText extends KnowledgeDoc {\n    text: string;\n}\n\nexport interface KnowledgeHit {\n    score: number;\n    text: string;\n    heading?: string;\n    doc_title?: string;\n    doc_path?: string;\n}\n\nexport interface KnowledgeApiOptions {\n    apiKey: string;\n    /**\n     * Management API base. Defaults to `PINECALL_PLAYGROUND_URL` and then to\n     * https://playground.pinecall.io. Trailing slashes are stripped, so\n     * \"http://localhost:3000/\" and \"http://localhost:3000\" are the same host.\n     */\n    playgroundUrl?: string;\n}\n\n/** A document to upsert. `path` is the identity: pushing the same path updates. */\nexport interface KnowledgeDocInput {\n    path: string;\n    title?: string;\n    text: string;\n}\n\n/** One entry of a `pushDocs` batch — a failure never aborts the rest. */\nexport interface PushResult {\n    path: string;\n    ok: boolean;\n    doc?: KnowledgeDoc;\n    error?: Error;\n}\n\n// ── Errors ───────────────────────────────────────────────────────────────\n\nexport class KnowledgeApiError extends PinecallError {\n    constructor(message: string, public status: number, code?: string) {\n        super(message, code);\n        this.name = \"KnowledgeApiError\";\n    }\n}\n\n// ── Transport ────────────────────────────────────────────────────────────\n\nfunction baseUrl(opts: KnowledgeApiOptions): string {\n    const raw =\n        opts.playgroundUrl ??\n        (typeof process !== \"undefined\" ? process.env?.PINECALL_PLAYGROUND_URL : undefined) ??\n        DEFAULT_PLAYGROUND_URL;\n    return raw.replace(/\\/+$/, \"\");\n}\n\nasync function call<T>(\n    opts: KnowledgeApiOptions,\n    method: string,\n    path: string,\n    body?: unknown,\n): Promise<T> {\n    const url = `${baseUrl(opts)}/api/knowledge${path}`;\n    let res: Response;\n    try {\n        res = await fetch(url, {\n            method,\n            headers: {\n                \"Content-Type\": \"application/json\",\n                Authorization: `Bearer ${opts.apiKey}`,\n            },\n            ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n        });\n    } catch (err) {\n        throw new KnowledgeApiError(\n            `Cannot reach the Playground at ${baseUrl(opts)}: ${(err as Error)?.message ?? err}`,\n            0,\n            \"NETWORK_ERROR\",\n        );\n    }\n\n    if (res.status === 402) {\n        throw new KnowledgeApiError(\n            \"Knowledge bases are a paid feature — upgrade to Starter or higher.\",\n            402,\n            \"UPGRADE_REQUIRED\",\n        );\n    }\n\n    if (!res.ok) {\n        const text = await res.text().catch(() => \"\");\n        throw new KnowledgeApiError(\n            `knowledge ${method} ${path}: ${res.status} ${text || res.statusText}`,\n            res.status,\n        );\n    }\n\n    return (await res.json().catch(() => ({}))) as T;\n}\n\n// ── Knowledge bases ──────────────────────────────────────────────────────\n\nexport async function listKnowledgeBases(opts: KnowledgeApiOptions): Promise<KnowledgeBase[]> {\n    const data = await call<{ knowledgeBases?: KnowledgeBase[] }>(opts, \"GET\", \"\");\n    return data.knowledgeBases ?? [];\n}\n\nexport async function createKnowledgeBase(\n    opts: KnowledgeApiOptions,\n    name: string,\n    description?: string,\n): Promise<KnowledgeBase> {\n    const data = await call<{ knowledgeBase: KnowledgeBase }>(opts, \"POST\", \"\", { name, description });\n    return data.knowledgeBase;\n}\n\nexport async function getKnowledgeBase(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n): Promise<{ knowledgeBase: KnowledgeBase; docs: KnowledgeDoc[] }> {\n    const data = await call<{ knowledgeBase: KnowledgeBase; docs?: KnowledgeDoc[] }>(\n        opts, \"GET\", `/${encodeURIComponent(kbId)}`,\n    );\n    return { knowledgeBase: data.knowledgeBase, docs: data.docs ?? [] };\n}\n\nexport async function deleteKnowledgeBase(opts: KnowledgeApiOptions, kbId: string): Promise<void> {\n    await call<unknown>(opts, \"DELETE\", `/${encodeURIComponent(kbId)}`);\n}\n\nexport async function reindexKnowledge(opts: KnowledgeApiOptions, kbId: string): Promise<void> {\n    await call<unknown>(opts, \"POST\", `/${encodeURIComponent(kbId)}/reindex`);\n}\n\n// ── Documents ────────────────────────────────────────────────────────────\n\n/**\n * Upsert one document. The server keys on `path`, so pushing the same path\n * twice updates the document instead of duplicating it — which is what lets a\n * consumer re-push a whole folder on every build.\n */\nexport async function pushDoc(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n    doc: KnowledgeDocInput,\n): Promise<KnowledgeDoc> {\n    const data = await call<{ doc: KnowledgeDoc }>(\n        opts, \"POST\", `/${encodeURIComponent(kbId)}/docs`,\n        { path: doc.path, title: doc.title, text: doc.text },\n    );\n    return data.doc;\n}\n\n/**\n * Push a batch. One bad document does not lose the other forty: every entry\n * comes back with its own ok/error, in the order given.\n */\nexport async function pushDocs(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n    docs: KnowledgeDocInput[],\n): Promise<PushResult[]> {\n    const results: PushResult[] = [];\n    for (const doc of docs) {\n        try {\n            results.push({ path: doc.path, ok: true, doc: await pushDoc(opts, kbId, doc) });\n        } catch (err) {\n            results.push({ path: doc.path, ok: false, error: err as Error });\n        }\n    }\n    return results;\n}\n\nexport async function getDoc(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n    docId: string,\n): Promise<KnowledgeDocWithText> {\n    const data = await call<{ doc: KnowledgeDocWithText }>(\n        opts, \"GET\", `/${encodeURIComponent(kbId)}/docs/${encodeURIComponent(docId)}`,\n    );\n    return data.doc;\n}\n\nexport async function deleteDoc(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n    docId: string,\n): Promise<void> {\n    await call<unknown>(opts, \"DELETE\", `/${encodeURIComponent(kbId)}/docs/${encodeURIComponent(docId)}`);\n}\n\n// ── Query ────────────────────────────────────────────────────────────────\n\n/** Retrieval only — the top `k` chunks, no LLM in the loop. */\nexport async function queryKnowledge(\n    opts: KnowledgeApiOptions,\n    kbId: string,\n    query: string,\n    o: { k?: number } = {},\n): Promise<KnowledgeHit[]> {\n    const data = await call<{ hits?: KnowledgeHit[] }>(\n        opts, \"POST\", `/${encodeURIComponent(kbId)}/query`,\n        { query, k: o.k ?? 6 },\n    );\n    return data.hits ?? [];\n}\n","/**\n * tap / syncTap — the verbs that write.\n *\n * `planTap` looks; these two pour. The whole incremental story hangs on ONE\n * artefact: a document stored inside the knowledge base itself, at the path\n * `_tap-manifest.json`, mapping every doc path to the URL it came from and the\n * hash of the markdown that was pushed. Keeping it in the KB (instead of on\n * the caller's disk) is what makes a sync work from any machine, any process,\n * any CI job — the knowledge base carries its own provenance.\n *\n * Two rules the manifest buys us, and both are acceptance criteria:\n *\n * - **An unchanged page is not re-pushed.** Same hash ⇒ skipped, not written.\n * - **Zero delta ⇒ no reindex at all.** Re-indexing is the expensive half of\n *   the operation; a sync that found nothing must cost nothing.\n */\n\nimport {\n    getDoc,\n    getKnowledgeBase,\n    pushDoc,\n    deleteDoc,\n    reindexKnowledge,\n    KnowledgeApiError,\n    type KnowledgeApiOptions,\n    type KnowledgeDocInput,\n} from \"../api/knowledge.js\";\nimport { PinecallError } from \"../kernel/errors.js\";\nimport { fetchPage } from \"./fetch.js\";\nimport { extract } from \"./extract.js\";\nimport { contentHash } from \"./hash.js\";\nimport { planTap, isExcluded, type TapPage, type TapPlan } from \"./plan.js\";\nimport { emit, type DiscoverySource, type OnProgress } from \"./types.js\";\n\n/** Where the manifest lives, inside the knowledge base it describes. */\nexport const MANIFEST_PATH = \"_tap-manifest.json\";\nconst MANIFEST_TITLE = \"tap manifest\";\n\n// ── Types ────────────────────────────────────────────────────────────────\n\nexport interface TapManifestEntry {\n    url: string;\n    hash: string;\n}\n\n/**\n * The crawl options a tap ran with, in a shape that survives JSON.\n *\n * `include`/`exclude` are stored as **RegExp sources** (`re.source`) because a\n * `RegExp` does not serialize — `JSON.stringify(/a/)` is `{}` — and they are\n * rebuilt with `new RegExp(s)` on read. Flags are deliberately not kept: the\n * filters are matched against URLs, where case matters.\n */\nexport interface TapCrawlOptions {\n    limit?: number;\n    /** RegExp sources, not patterns with delimiters: `\\\\/docs\\\\/`, not `/docs/`. */\n    include?: string[];\n    exclude?: string[];\n}\n\nexport interface TapManifest {\n    version: 1;\n    startUrl: string;\n    source: DiscoverySource;\n    tappedAt: string;\n    /**\n     * The crawl options the tap that wrote this manifest actually used, so a\n     * later `syncTap` re-plans the same slice of the site instead of the whole\n     * of it.\n     *\n     * **Optional on read, and that is not a version bump.** A manifest written\n     * before this field existed simply has none, and syncs with the library\n     * defaults (limit 100, no include/exclude) — exactly the behaviour it had\n     * when it was written. Manifest `version` stays `1`.\n     */\n    options?: TapCrawlOptions;\n    /** Keyed by knowledge-base document path. */\n    pages: Record<string, TapManifestEntry>;\n}\n\nexport interface TapFailure {\n    path: string;\n    error: string;\n}\n\nexport interface TapReport {\n    /** Documents whose path was not in the previous manifest. */\n    pushed: number;\n    /** Documents that existed with a different hash. */\n    updated: number;\n    /** Documents whose hash was unchanged — never sent. */\n    skipped: number;\n    failed: TapFailure[];\n    /** Documents removed because the site no longer serves them. */\n    deleted: number;\n    reindexed: boolean;\n}\n\nexport interface TapOptions {\n    /**\n     * Maximum pages to consider. Politeness default: 100.\n     *\n     * Used when `tap` plans the site itself; when it is handed a prebuilt plan\n     * the plan already decided, and this is recorded in the manifest so the\n     * next `syncTap` re-plans with the same bound.\n     */\n    limit?: number;\n    include?: RegExp[];\n    exclude?: RegExp[];\n    onProgress?: OnProgress;\n    /** Rebuild the index at the end when something moved. Default: true. */\n    reindex?: boolean;\n}\n\nexport interface SyncTapOptions {\n    /**\n     * Override the limit stored in the manifest. Omitted, the stored one is\n     * used; given, it wins and is written back on the next manifest write.\n     */\n    limit?: number;\n    /** Override the manifest's stored `include`. Same rule as {@link SyncTapOptions.limit}. */\n    include?: RegExp[];\n    /** Override the manifest's stored `exclude`. Same rule as {@link SyncTapOptions.limit}. */\n    exclude?: RegExp[];\n    onProgress?: OnProgress;\n    reindex?: boolean;\n}\n\n/** Thrown by `syncTap` when the knowledge base carries no manifest. */\nexport class TapSyncError extends PinecallError {\n    constructor(message: string, code: string) {\n        super(message, code);\n        this.name = \"TapSyncError\";\n    }\n}\n\n// ── Manifest ─────────────────────────────────────────────────────────────\n\n/**\n * The manifest's document id, or null when it is not there.\n *\n * The knowledge API addresses documents by id, and the manifest is identified\n * by PATH, so every read starts with a listing. A KB that was never tapped is\n * a normal answer here, not an error.\n */\nasync function manifestDocId(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n): Promise<string | null> {\n    const { docs } = await getKnowledgeBase(auth, kbId);\n    return docs.find((d) => d.path === MANIFEST_PATH)?.id ?? null;\n}\n\n/** The live shape of {@link TapCrawlOptions}: sources compiled back to RegExp. */\ninterface CrawlOptions {\n    limit?: number;\n    include?: RegExp[];\n    exclude?: RegExp[];\n}\n\nfunction compile(sources: unknown): RegExp[] | undefined {\n    if (!Array.isArray(sources)) return undefined;\n    const out: RegExp[] = [];\n    for (const s of sources) {\n        if (typeof s !== \"string\") continue;\n        try {\n            out.push(new RegExp(s));\n        } catch {\n            // A source that no longer compiles is dropped rather than fatal: a\n            // sync must not be bricked by one bad pattern in a stored manifest.\n        }\n    }\n    return out.length ? out : undefined;\n}\n\n/** Manifest options → the live options planTap takes. */\nfunction crawlOptionsOf(stored: TapCrawlOptions | undefined): CrawlOptions {\n    if (!stored) return {};\n    const out: CrawlOptions = {};\n    if (typeof stored.limit === \"number\" && Number.isFinite(stored.limit)) {\n        out.limit = stored.limit;\n    }\n    const include = compile(stored.include);\n    if (include) out.include = include;\n    const exclude = compile(stored.exclude);\n    if (exclude) out.exclude = exclude;\n    return out;\n}\n\n/**\n * Live options → what goes in the manifest. Returns undefined when nothing was\n * constrained, so a default tap does not grow an empty object in its manifest.\n */\nfunction storedOptionsOf(opts: CrawlOptions): TapCrawlOptions | undefined {\n    const out: TapCrawlOptions = {};\n    if (typeof opts.limit === \"number\") out.limit = opts.limit;\n    if (opts.include?.length) out.include = opts.include.map((re) => re.source);\n    if (opts.exclude?.length) out.exclude = opts.exclude.map((re) => re.source);\n    return Object.keys(out).length ? out : undefined;\n}\n\nfunction parseOptions(raw: unknown): TapCrawlOptions | undefined {\n    if (!raw || typeof raw !== \"object\") return undefined;\n    return storedOptionsOf(crawlOptionsOf(raw as TapCrawlOptions));\n}\n\nfunction parseManifest(text: string): TapManifest | null {\n    try {\n        const parsed = JSON.parse(text) as Partial<TapManifest>;\n        if (!parsed || typeof parsed !== \"object\" || !parsed.pages) return null;\n        const options = parseOptions(parsed.options);\n        return {\n            version: 1,\n            startUrl: String(parsed.startUrl ?? \"\"),\n            source: (parsed.source ?? \"sitemap\") as DiscoverySource,\n            tappedAt: String(parsed.tappedAt ?? \"\"),\n            ...(options ? { options } : {}),\n            pages: parsed.pages as Record<string, TapManifestEntry>,\n        };\n    } catch {\n        return null;\n    }\n}\n\n/**\n * Read the manifest out of the knowledge base. Returns null both when there is\n * no manifest document and when the one there cannot be parsed — a corrupt\n * manifest is treated as \"never tapped\", which re-pushes rather than deletes.\n */\nexport async function readManifest(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n): Promise<{ manifest: TapManifest | null; docId: string | null }> {\n    let docId: string | null;\n    try {\n        docId = await manifestDocId(auth, kbId);\n    } catch (err) {\n        if (err instanceof KnowledgeApiError && err.status === 404) {\n            return { manifest: null, docId: null };\n        }\n        throw err;\n    }\n    if (!docId) return { manifest: null, docId: null };\n    try {\n        const doc = await getDoc(auth, kbId, docId);\n        return { manifest: parseManifest(doc.text), docId };\n    } catch (err) {\n        if (err instanceof KnowledgeApiError && err.status === 404) {\n            return { manifest: null, docId: null };\n        }\n        throw err;\n    }\n}\n\nasync function writeManifest(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n    manifest: TapManifest,\n): Promise<void> {\n    await pushDoc(auth, kbId, {\n        path: MANIFEST_PATH,\n        title: MANIFEST_TITLE,\n        text: JSON.stringify(manifest, null, 2),\n    });\n}\n\n// ── Documents ────────────────────────────────────────────────────────────\n\n/**\n * The header every tapped document carries.\n *\n * It is what lets a retrieval hit point back at a real page: the answer an\n * agent gives out of this knowledge base can cite the URL it came from. The\n * title is JSON-escaped because a page title with a quote or a newline in it\n * must not break the block.\n */\nexport function frontmatter(page: {\n    url: string;\n    title: string;\n    hash: string;\n    fetchedAt: string;\n}): string {\n    return (\n        \"---\\n\" +\n        `url: ${page.url}\\n` +\n        `title: ${JSON.stringify(page.title)}\\n` +\n        `hash: ${page.hash}\\n` +\n        `fetchedAt: ${page.fetchedAt}\\n` +\n        \"---\\n\\n\"\n    );\n}\n\nfunction docFor(page: TapPage, markdown: string, fetchedAt: string): KnowledgeDocInput {\n    return {\n        path: page.path,\n        title: page.title,\n        text:\n            frontmatter({\n                url: page.url,\n                title: page.title,\n                hash: page.hash,\n                fetchedAt,\n            }) + markdown,\n    };\n}\n\n/**\n * The markdown for a page, re-fetching only when the plan does not carry it.\n *\n * A plan taken without `keepContent` is a table of hashes with no prose, and\n * tapping it must still work — so the pages that need text get fetched again\n * here rather than the caller being told to re-plan.\n */\nasync function materialize(\n    pages: TapPage[],\n    onProgress: OnProgress | undefined,\n): Promise<Map<string, string>> {\n    const out = new Map<string, string>();\n    const missing = pages.filter((p) => p.markdown === undefined);\n    for (const p of pages) {\n        if (p.markdown !== undefined) out.set(p.url, p.markdown);\n    }\n    if (!missing.length) return out;\n\n    const total = missing.length;\n    let done = 0;\n    emit(onProgress, { phase: \"fetch\", event: \"start\", done, total });\n    for (const p of missing) {\n        try {\n            const fetched = await fetchPage(p.url);\n            const extracted = await extract(fetched.body, fetched.finalUrl);\n            out.set(p.url, extracted.markdown);\n            // The hash travels with the text it was taken over.\n            p.hash = contentHash(extracted.markdown);\n            done++;\n            emit(onProgress, {\n                phase: \"extract\", event: \"page\", url: p.url, path: p.path, done, total,\n            });\n        } catch (err) {\n            done++;\n            emit(onProgress, {\n                phase: \"fetch\",\n                event: \"error\",\n                url: p.url,\n                path: p.path,\n                done,\n                total,\n                message: err instanceof Error ? err.message : String(err),\n            });\n        }\n    }\n    emit(onProgress, { phase: \"fetch\", event: \"done\", done, total });\n    return out;\n}\n\n/** Included, fetched, non-broken pages — the only ones that ever get pushed. */\nfunction indexable(plan: TapPlan, opts: Pick<TapOptions, \"include\" | \"exclude\">): TapPage[] {\n    return plan.pages.filter(\n        (p) =>\n            !p.excluded &&\n            !p.error &&\n            !isExcluded(p.url, opts.include, opts.exclude),\n    );\n}\n\n/**\n * Push a batch and fold the results into a report, classifying each document\n * against the previous manifest: a path nobody had seen is `pushed`, a path\n * that was there under a different hash is `updated`.\n */\nasync function pushBatch(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n    entries: Array<{ doc: KnowledgeDocInput; isNew: boolean }>,\n    report: TapReport,\n    onProgress: OnProgress | undefined,\n): Promise<void> {\n    const total = entries.length;\n    emit(onProgress, { phase: \"push\", event: \"start\", done: 0, total });\n    if (!total) {\n        emit(onProgress, { phase: \"push\", event: \"done\", done: 0, total: 0 });\n        return;\n    }\n\n    // One doc at a time, EMITTING AS EACH ONE LANDS — not pushDocs and a loop\n    // over its results afterwards. The batch call answered only when all N\n    // uploads were done, so a consumer's progress bar sat at 0/N for the whole\n    // push phase (~0.6s x N against the playground) and then jumped to done in\n    // one burst — measured on the live site with a 39-page crawl. Failure\n    // semantics are pushDocs's own: one bad document never aborts the rest.\n    let done = 0;\n    for (const entry of entries) {\n        done++;\n        try {\n            await pushDoc(auth, kbId, entry.doc);\n            if (entry.isNew) report.pushed++;\n            else report.updated++;\n            emit(onProgress, { phase: \"push\", event: \"page\", path: entry.doc.path, done, total });\n        } catch (err) {\n            const message = err instanceof Error ? err.message : \"push failed\";\n            report.failed.push({ path: entry.doc.path, error: message });\n            emit(onProgress, {\n                phase: \"push\",\n                event: \"error\",\n                path: entry.doc.path,\n                done,\n                total,\n                message,\n            });\n        }\n    }\n    emit(onProgress, { phase: \"push\", event: \"done\", done, total });\n}\n\nasync function maybeReindex(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n    report: TapReport,\n    wanted: boolean,\n    onProgress: OnProgress | undefined,\n): Promise<void> {\n    const moved = report.pushed + report.updated + report.deleted > 0;\n    if (!wanted || !moved) return;\n    emit(onProgress, { phase: \"reindex\", event: \"start\", done: 0, total: 1 });\n    await reindexKnowledge(auth, kbId);\n    report.reindexed = true;\n    emit(onProgress, { phase: \"reindex\", event: \"done\", done: 1, total: 1 });\n}\n\nfunction emptyReport(): TapReport {\n    return { pushed: 0, updated: 0, skipped: 0, failed: [], deleted: 0, reindexed: false };\n}\n\n// ── tap ──────────────────────────────────────────────────────────────────\n\n/**\n * Pour a plan into a knowledge base.\n *\n * Give it a URL and it plans the site first; give it a plan a human already\n * approved and it uses exactly that. Unchanged pages (same hash as the last\n * tap) are skipped without a request, and the manifest is rewritten at the end\n * so the next `syncTap` knows what this run left behind.\n */\nexport async function tap(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n    plan: TapPlan | string,\n    opts: TapOptions = {},\n): Promise<TapReport> {\n    const { limit, include, exclude, onProgress, reindex = true } = opts;\n    // What this run actually crawled with — written into the manifest so the\n    // next syncTap re-plans the same slice instead of the whole site.\n    const used: CrawlOptions = {\n        ...(limit === undefined ? {} : { limit }),\n        ...(include ? { include } : {}),\n        ...(exclude ? { exclude } : {}),\n    };\n\n    const resolved: TapPlan =\n        typeof plan === \"string\"\n            ? await planTap(plan, {\n                  keepContent: true,\n                  ...(limit === undefined ? {} : { limit }),\n                  ...(include ? { include } : {}),\n                  ...(exclude ? { exclude } : {}),\n                  ...(onProgress ? { onProgress } : {}),\n              })\n            : plan;\n\n    const report = emptyReport();\n    const pages = indexable(resolved, { ...(include ? { include } : {}), ...(exclude ? { exclude } : {}) });\n    const content = await materialize(pages, onProgress);\n\n    const { manifest: previous } = await readManifest(auth, kbId);\n    const known = previous?.pages ?? {};\n    const tappedAt = new Date().toISOString();\n\n    const entries: Array<{ doc: KnowledgeDocInput; isNew: boolean }> = [];\n    const manifestPages: Record<string, TapManifestEntry> = {};\n\n    for (const page of pages) {\n        const markdown = content.get(page.url);\n        if (markdown === undefined) {\n            report.failed.push({ path: page.path, error: \"no content extracted\" });\n            continue;\n        }\n        manifestPages[page.path] = { url: page.url, hash: page.hash };\n        const before = known[page.path];\n        if (before && before.hash === page.hash) {\n            report.skipped++;\n            continue;\n        }\n        entries.push({ doc: docFor(page, markdown, tappedAt), isNew: !before });\n    }\n\n    await pushBatch(auth, kbId, entries, report, onProgress);\n\n    const storedOptions = storedOptionsOf(used);\n    await writeManifest(auth, kbId, {\n        version: 1,\n        startUrl: resolved.startUrl,\n        source: resolved.source,\n        tappedAt,\n        ...(storedOptions ? { options: storedOptions } : {}),\n        pages: manifestPages,\n    });\n\n    await maybeReindex(auth, kbId, report, reindex, onProgress);\n    return report;\n}\n\n// ── syncTap ──────────────────────────────────────────────────────────────\n\n/**\n * Re-tap a knowledge base from its own manifest.\n *\n * Needs no arguments beyond the KB because the manifest already says which\n * site this is and what was in it. Pages that changed are pushed, pages the\n * site stopped serving are deleted, and everything else is left alone — so a\n * sync over a site that did not move is a handful of GETs and nothing else.\n */\nexport async function syncTap(\n    auth: KnowledgeApiOptions,\n    kbId: string,\n    opts: SyncTapOptions = {},\n): Promise<TapReport> {\n    const { onProgress, reindex = true } = opts;\n\n    const { manifest } = await readManifest(auth, kbId);\n\n    if (!manifest || !manifest.startUrl) {\n        throw new TapSyncError(\n            `Knowledge base ${kbId} has no ${MANIFEST_PATH}: it was never tapped. Run tap() first.`,\n            \"NEVER_TAPPED\",\n        );\n    }\n\n    // The manifest's own crawl options are the baseline — re-planning with the\n    // library defaults would pull in pages the original tap deliberately left\n    // out. An explicit option here overrides, per key, and is persisted below.\n    const stored = crawlOptionsOf(manifest.options);\n    const effective: CrawlOptions = {\n        ...stored,\n        ...(opts.limit === undefined ? {} : { limit: opts.limit }),\n        ...(opts.include ? { include: opts.include } : {}),\n        ...(opts.exclude ? { exclude: opts.exclude } : {}),\n    };\n\n    const plan = await planTap(manifest.startUrl, {\n        keepContent: true,\n        ...(effective.limit === undefined ? {} : { limit: effective.limit }),\n        ...(effective.include ? { include: effective.include } : {}),\n        ...(effective.exclude ? { exclude: effective.exclude } : {}),\n        ...(onProgress ? { onProgress } : {}),\n    });\n\n    const report = emptyReport();\n    const pages = indexable(plan, {\n        ...(effective.include ? { include: effective.include } : {}),\n        ...(effective.exclude ? { exclude: effective.exclude } : {}),\n    });\n    const content = await materialize(pages, onProgress);\n    const tappedAt = new Date().toISOString();\n\n    const entries: Array<{ doc: KnowledgeDocInput; isNew: boolean }> = [];\n    const manifestPages: Record<string, TapManifestEntry> = {};\n\n    for (const page of pages) {\n        const markdown = content.get(page.url);\n        if (markdown === undefined) {\n            report.failed.push({ path: page.path, error: \"no content extracted\" });\n            continue;\n        }\n        manifestPages[page.path] = { url: page.url, hash: page.hash };\n        const before = manifest.pages[page.path];\n        if (before && before.hash === page.hash) {\n            report.skipped++;\n            continue;\n        }\n        entries.push({ doc: docFor(page, markdown, tappedAt), isNew: !before });\n    }\n\n    await pushBatch(auth, kbId, entries, report, onProgress);\n\n    // Gone from the site — the manifest is the only record that they were ever\n    // there, so this is the one chance to take them out of the index.\n    const gone = Object.keys(manifest.pages).filter((path) => !(path in manifestPages));\n    if (gone.length) {\n        const { docs } = await getKnowledgeBase(auth, kbId);\n        const byPath = new Map(docs.map((d) => [d.path, d.id]));\n        const total = gone.length;\n        let done = 0;\n        emit(onProgress, { phase: \"delete\", event: \"start\", done, total });\n        for (const path of gone) {\n            const docId = byPath.get(path);\n            done++;\n            if (!docId) {\n                // Already absent from the KB: nothing to delete, and dropping it\n                // from the manifest is the whole fix.\n                emit(onProgress, { phase: \"delete\", event: \"page\", path, done, total });\n                continue;\n            }\n            try {\n                await deleteDoc(auth, kbId, docId);\n                report.deleted++;\n                emit(onProgress, { phase: \"delete\", event: \"page\", path, done, total });\n            } catch (err) {\n                report.failed.push({\n                    path,\n                    error: err instanceof Error ? err.message : String(err),\n                });\n                emit(onProgress, {\n                    phase: \"delete\",\n                    event: \"error\",\n                    path,\n                    done,\n                    total,\n                    message: err instanceof Error ? err.message : String(err),\n                });\n            }\n        }\n        emit(onProgress, { phase: \"delete\", event: \"done\", done, total });\n    }\n\n    const delta = report.pushed + report.updated + report.deleted > 0;\n    const storedOptions = storedOptionsOf(effective);\n    // An override that changed nothing on the site still has to be recorded,\n    // or the next sync would silently fall back to the old bounds.\n    const optionsMoved =\n        JSON.stringify(storedOptions ?? null) !== JSON.stringify(manifest.options ?? null);\n    if (delta || optionsMoved) {\n        await writeManifest(auth, kbId, {\n            version: 1,\n            startUrl: manifest.startUrl,\n            source: plan.source,\n            tappedAt,\n            ...(storedOptions ? { options: storedOptions } : {}),\n            pages: manifestPages,\n        });\n    }\n\n    await maybeReindex(auth, kbId, report, reindex, onProgress);\n    return report;\n}\n"]}