@readme/markdown 13.7.0 → 13.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/TailwindStyle/index.tsx +14 -4
- package/dist/index.d.ts +1 -0
- package/dist/lib/mdxish.d.ts +1 -1
- package/dist/main.js +1949 -1023
- package/dist/main.node.js +1949 -1023
- package/dist/main.node.js.map +1 -1
- package/dist/processor/compile/anchor.d.ts +3 -0
- package/dist/processor/transform/mdxish/magic-blocks/types.d.ts +4 -0
- package/dist/processor/transform/mdxish/mdxish-self-closing-blocks.d.ts +21 -0
- package/dist/processor/transform/mdxish/mdxish-tables-to-jsx.d.ts +11 -0
- package/enums.ts +20 -0
- package/package.json +13 -11
- package/types.d.ts +281 -0
package/dist/main.js
CHANGED
|
@@ -11366,6 +11366,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
11366
11366
|
__webpack_require__.d(__webpack_exports__, {
|
|
11367
11367
|
Components: () => (/* reexport */ components_namespaceObject),
|
|
11368
11368
|
FLOW_TYPES: () => (/* reexport */ FLOW_TYPES),
|
|
11369
|
+
NodeTypes: () => (/* reexport */ NodeTypes),
|
|
11369
11370
|
Owlmoji: () => (/* reexport */ Owlmoji),
|
|
11370
11371
|
compile: () => (/* reexport */ lib_compile),
|
|
11371
11372
|
exports: () => (/* reexport */ lib_exports),
|
|
@@ -12308,10 +12309,19 @@ const TailwindStyle = ({ children, darkModeDataAttribute }) => {
|
|
|
12308
12309
|
records.forEach(record => {
|
|
12309
12310
|
if (record.type === 'childList') {
|
|
12310
12311
|
record.addedNodes.forEach(node => {
|
|
12311
|
-
if (!(node instanceof HTMLElement)
|
|
12312
|
+
if (!(node instanceof HTMLElement))
|
|
12312
12313
|
return;
|
|
12313
|
-
|
|
12314
|
-
|
|
12314
|
+
// Check the added node itself
|
|
12315
|
+
if (node.classList.contains(tailwindPrefix)) {
|
|
12316
|
+
traverse(node, addClasses);
|
|
12317
|
+
shouldUpdate = true;
|
|
12318
|
+
}
|
|
12319
|
+
// Also check descendants — React may insert a parent node
|
|
12320
|
+
// whose children contain TailwindRoot elements
|
|
12321
|
+
node.querySelectorAll(`.${tailwindPrefix}`).forEach(child => {
|
|
12322
|
+
traverse(child, addClasses);
|
|
12323
|
+
shouldUpdate = true;
|
|
12324
|
+
});
|
|
12315
12325
|
});
|
|
12316
12326
|
}
|
|
12317
12327
|
else if (record.type === 'attributes') {
|
|
@@ -43553,7 +43563,6 @@ var CODE_POINTS;
|
|
|
43553
43563
|
CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE";
|
|
43554
43564
|
CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
|
|
43555
43565
|
CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
|
|
43556
|
-
CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN";
|
|
43557
43566
|
CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND";
|
|
43558
43567
|
CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE";
|
|
43559
43568
|
CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
|
|
@@ -43566,17 +43575,12 @@ var CODE_POINTS;
|
|
|
43566
43575
|
CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
|
|
43567
43576
|
CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK";
|
|
43568
43577
|
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
|
|
43569
|
-
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F";
|
|
43570
|
-
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X";
|
|
43571
43578
|
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
|
|
43572
43579
|
CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
|
|
43573
43580
|
CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
|
|
43574
43581
|
CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
|
|
43575
|
-
CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F";
|
|
43576
|
-
CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X";
|
|
43577
43582
|
CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
|
|
43578
|
-
|
|
43579
|
-
})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));
|
|
43583
|
+
})(CODE_POINTS || (CODE_POINTS = {}));
|
|
43580
43584
|
const SEQUENCES = {
|
|
43581
43585
|
DASH_DASH: '--',
|
|
43582
43586
|
CDATA_START: '[CDATA[',
|
|
@@ -43603,7 +43607,7 @@ function isControlCodePoint(cp) {
|
|
|
43603
43607
|
function isUndefinedCodePoint(cp) {
|
|
43604
43608
|
return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);
|
|
43605
43609
|
}
|
|
43606
|
-
|
|
43610
|
+
|
|
43607
43611
|
;// ./node_modules/parse5/dist/common/error-codes.js
|
|
43608
43612
|
var ERR;
|
|
43609
43613
|
(function (ERR) {
|
|
@@ -43667,8 +43671,8 @@ var ERR;
|
|
|
43667
43671
|
ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element";
|
|
43668
43672
|
ERR["nestedNoscriptInHead"] = "nested-noscript-in-head";
|
|
43669
43673
|
ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text";
|
|
43670
|
-
})(ERR
|
|
43671
|
-
|
|
43674
|
+
})(ERR || (ERR = {}));
|
|
43675
|
+
|
|
43672
43676
|
;// ./node_modules/parse5/dist/tokenizer/preprocessor.js
|
|
43673
43677
|
|
|
43674
43678
|
|
|
@@ -43703,22 +43707,24 @@ class Preprocessor {
|
|
|
43703
43707
|
get offset() {
|
|
43704
43708
|
return this.droppedBufferSize + this.pos;
|
|
43705
43709
|
}
|
|
43706
|
-
getError(code) {
|
|
43710
|
+
getError(code, cpOffset) {
|
|
43707
43711
|
const { line, col, offset } = this;
|
|
43712
|
+
const startCol = col + cpOffset;
|
|
43713
|
+
const startOffset = offset + cpOffset;
|
|
43708
43714
|
return {
|
|
43709
43715
|
code,
|
|
43710
43716
|
startLine: line,
|
|
43711
43717
|
endLine: line,
|
|
43712
|
-
startCol
|
|
43713
|
-
endCol:
|
|
43714
|
-
startOffset
|
|
43715
|
-
endOffset:
|
|
43718
|
+
startCol,
|
|
43719
|
+
endCol: startCol,
|
|
43720
|
+
startOffset,
|
|
43721
|
+
endOffset: startOffset,
|
|
43716
43722
|
};
|
|
43717
43723
|
}
|
|
43718
43724
|
_err(code) {
|
|
43719
43725
|
if (this.handler.onParseError && this.lastErrOffset !== this.offset) {
|
|
43720
43726
|
this.lastErrOffset = this.offset;
|
|
43721
|
-
this.handler.onParseError(this.getError(code));
|
|
43727
|
+
this.handler.onParseError(this.getError(code, 0));
|
|
43722
43728
|
}
|
|
43723
43729
|
}
|
|
43724
43730
|
_addGap() {
|
|
@@ -43864,7 +43870,7 @@ class Preprocessor {
|
|
|
43864
43870
|
this.isEol = false;
|
|
43865
43871
|
}
|
|
43866
43872
|
}
|
|
43867
|
-
|
|
43873
|
+
|
|
43868
43874
|
;// ./node_modules/parse5/dist/common/token.js
|
|
43869
43875
|
var TokenType;
|
|
43870
43876
|
(function (TokenType) {
|
|
@@ -43877,7 +43883,7 @@ var TokenType;
|
|
|
43877
43883
|
TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE";
|
|
43878
43884
|
TokenType[TokenType["EOF"] = 7] = "EOF";
|
|
43879
43885
|
TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION";
|
|
43880
|
-
})(TokenType
|
|
43886
|
+
})(TokenType || (TokenType = {}));
|
|
43881
43887
|
function getTokenAttr(token, attrName) {
|
|
43882
43888
|
for (let i = token.attrs.length - 1; i >= 0; i--) {
|
|
43883
43889
|
if (token.attrs[i].name === attrName) {
|
|
@@ -43886,24 +43892,24 @@ function getTokenAttr(token, attrName) {
|
|
|
43886
43892
|
}
|
|
43887
43893
|
return null;
|
|
43888
43894
|
}
|
|
43889
|
-
|
|
43890
|
-
;// ./node_modules/entities/
|
|
43895
|
+
|
|
43896
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
43891
43897
|
// Generated using scripts/write-decode-map.ts
|
|
43892
|
-
|
|
43898
|
+
const decode_data_html_htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
43893
43899
|
// prettier-ignore
|
|
43894
|
-
"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
43900
|
+
/* #__PURE__ */ "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
43895
43901
|
.split("")
|
|
43896
|
-
.map((c) => c.charCodeAt(0)))
|
|
43902
|
+
.map((c) => c.charCodeAt(0)));
|
|
43897
43903
|
//# sourceMappingURL=decode-data-html.js.map
|
|
43898
|
-
;// ./node_modules/entities/
|
|
43904
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js
|
|
43899
43905
|
// Generated using scripts/write-decode-map.ts
|
|
43900
|
-
|
|
43906
|
+
const decode_data_xml_xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
43901
43907
|
// prettier-ignore
|
|
43902
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
43908
|
+
/* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
43903
43909
|
.split("")
|
|
43904
|
-
.map((c) => c.charCodeAt(0)))
|
|
43910
|
+
.map((c) => c.charCodeAt(0)));
|
|
43905
43911
|
//# sourceMappingURL=decode-data-xml.js.map
|
|
43906
|
-
;// ./node_modules/entities/
|
|
43912
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js
|
|
43907
43913
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
43908
43914
|
var decode_codepoint_a;
|
|
43909
43915
|
const decodeMap = new Map([
|
|
@@ -43940,14 +43946,14 @@ const decodeMap = new Map([
|
|
|
43940
43946
|
/**
|
|
43941
43947
|
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
43942
43948
|
*/
|
|
43943
|
-
const
|
|
43944
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition,
|
|
43949
|
+
const decode_codepoint_fromCodePoint =
|
|
43950
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
43945
43951
|
(decode_codepoint_a = String.fromCodePoint) !== null && decode_codepoint_a !== void 0 ? decode_codepoint_a : function (codePoint) {
|
|
43946
43952
|
let output = "";
|
|
43947
|
-
if (codePoint >
|
|
43948
|
-
codePoint -=
|
|
43949
|
-
output += String.fromCharCode(((codePoint >>> 10) &
|
|
43950
|
-
codePoint =
|
|
43953
|
+
if (codePoint > 65535) {
|
|
43954
|
+
codePoint -= 65536;
|
|
43955
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
43956
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
43951
43957
|
}
|
|
43952
43958
|
output += String.fromCharCode(codePoint);
|
|
43953
43959
|
return output;
|
|
@@ -43959,8 +43965,9 @@ const fromCodePoint =
|
|
|
43959
43965
|
*/
|
|
43960
43966
|
function replaceCodePoint(codePoint) {
|
|
43961
43967
|
var _a;
|
|
43962
|
-
if ((codePoint >=
|
|
43963
|
-
|
|
43968
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
43969
|
+
codePoint > 1114111) {
|
|
43970
|
+
return 65533;
|
|
43964
43971
|
}
|
|
43965
43972
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
43966
43973
|
}
|
|
@@ -43972,15 +43979,12 @@ function replaceCodePoint(codePoint) {
|
|
|
43972
43979
|
* @returns The decoded code point.
|
|
43973
43980
|
*/
|
|
43974
43981
|
function decodeCodePoint(codePoint) {
|
|
43975
|
-
return
|
|
43982
|
+
return decode_codepoint_fromCodePoint(replaceCodePoint(codePoint));
|
|
43976
43983
|
}
|
|
43977
|
-
//# sourceMappingURL=
|
|
43978
|
-
;// ./node_modules/entities/
|
|
43979
|
-
|
|
43984
|
+
//# sourceMappingURL=decode-codepoint.js.map
|
|
43985
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/decode.js
|
|
43980
43986
|
|
|
43981
43987
|
|
|
43982
|
-
// Re-export for use by eg. htmlparser2
|
|
43983
|
-
|
|
43984
43988
|
|
|
43985
43989
|
var CharCodes;
|
|
43986
43990
|
(function (CharCodes) {
|
|
@@ -43998,7 +44002,7 @@ var CharCodes;
|
|
|
43998
44002
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
43999
44003
|
})(CharCodes || (CharCodes = {}));
|
|
44000
44004
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
44001
|
-
const TO_LOWER_BIT =
|
|
44005
|
+
const TO_LOWER_BIT = 32;
|
|
44002
44006
|
var BinTrieFlags;
|
|
44003
44007
|
(function (BinTrieFlags) {
|
|
44004
44008
|
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
@@ -44099,32 +44103,32 @@ class EntityDecoder {
|
|
|
44099
44103
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
44100
44104
|
* entity is incomplete, and resume when the next string is written.
|
|
44101
44105
|
*
|
|
44102
|
-
* @param
|
|
44106
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
44103
44107
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
44104
44108
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
44105
44109
|
*/
|
|
44106
|
-
write(
|
|
44110
|
+
write(input, offset) {
|
|
44107
44111
|
switch (this.state) {
|
|
44108
44112
|
case EntityDecoderState.EntityStart: {
|
|
44109
|
-
if (
|
|
44113
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
44110
44114
|
this.state = EntityDecoderState.NumericStart;
|
|
44111
44115
|
this.consumed += 1;
|
|
44112
|
-
return this.stateNumericStart(
|
|
44116
|
+
return this.stateNumericStart(input, offset + 1);
|
|
44113
44117
|
}
|
|
44114
44118
|
this.state = EntityDecoderState.NamedEntity;
|
|
44115
|
-
return this.stateNamedEntity(
|
|
44119
|
+
return this.stateNamedEntity(input, offset);
|
|
44116
44120
|
}
|
|
44117
44121
|
case EntityDecoderState.NumericStart: {
|
|
44118
|
-
return this.stateNumericStart(
|
|
44122
|
+
return this.stateNumericStart(input, offset);
|
|
44119
44123
|
}
|
|
44120
44124
|
case EntityDecoderState.NumericDecimal: {
|
|
44121
|
-
return this.stateNumericDecimal(
|
|
44125
|
+
return this.stateNumericDecimal(input, offset);
|
|
44122
44126
|
}
|
|
44123
44127
|
case EntityDecoderState.NumericHex: {
|
|
44124
|
-
return this.stateNumericHex(
|
|
44128
|
+
return this.stateNumericHex(input, offset);
|
|
44125
44129
|
}
|
|
44126
44130
|
case EntityDecoderState.NamedEntity: {
|
|
44127
|
-
return this.stateNamedEntity(
|
|
44131
|
+
return this.stateNamedEntity(input, offset);
|
|
44128
44132
|
}
|
|
44129
44133
|
}
|
|
44130
44134
|
}
|
|
@@ -44133,28 +44137,28 @@ class EntityDecoder {
|
|
|
44133
44137
|
*
|
|
44134
44138
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
44135
44139
|
*
|
|
44136
|
-
* @param
|
|
44140
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
44137
44141
|
* @param offset The current offset.
|
|
44138
44142
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
44139
44143
|
*/
|
|
44140
|
-
stateNumericStart(
|
|
44141
|
-
if (offset >=
|
|
44144
|
+
stateNumericStart(input, offset) {
|
|
44145
|
+
if (offset >= input.length) {
|
|
44142
44146
|
return -1;
|
|
44143
44147
|
}
|
|
44144
|
-
if ((
|
|
44148
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
44145
44149
|
this.state = EntityDecoderState.NumericHex;
|
|
44146
44150
|
this.consumed += 1;
|
|
44147
|
-
return this.stateNumericHex(
|
|
44151
|
+
return this.stateNumericHex(input, offset + 1);
|
|
44148
44152
|
}
|
|
44149
44153
|
this.state = EntityDecoderState.NumericDecimal;
|
|
44150
|
-
return this.stateNumericDecimal(
|
|
44154
|
+
return this.stateNumericDecimal(input, offset);
|
|
44151
44155
|
}
|
|
44152
|
-
addToNumericResult(
|
|
44156
|
+
addToNumericResult(input, start, end, base) {
|
|
44153
44157
|
if (start !== end) {
|
|
44154
44158
|
const digitCount = end - start;
|
|
44155
44159
|
this.result =
|
|
44156
44160
|
this.result * Math.pow(base, digitCount) +
|
|
44157
|
-
parseInt(
|
|
44161
|
+
Number.parseInt(input.substr(start, digitCount), base);
|
|
44158
44162
|
this.consumed += digitCount;
|
|
44159
44163
|
}
|
|
44160
44164
|
}
|
|
@@ -44163,23 +44167,23 @@ class EntityDecoder {
|
|
|
44163
44167
|
*
|
|
44164
44168
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
44165
44169
|
*
|
|
44166
|
-
* @param
|
|
44170
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
44167
44171
|
* @param offset The current offset.
|
|
44168
44172
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
44169
44173
|
*/
|
|
44170
|
-
stateNumericHex(
|
|
44171
|
-
const
|
|
44172
|
-
while (offset <
|
|
44173
|
-
const char =
|
|
44174
|
+
stateNumericHex(input, offset) {
|
|
44175
|
+
const startIndex = offset;
|
|
44176
|
+
while (offset < input.length) {
|
|
44177
|
+
const char = input.charCodeAt(offset);
|
|
44174
44178
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
44175
44179
|
offset += 1;
|
|
44176
44180
|
}
|
|
44177
44181
|
else {
|
|
44178
|
-
this.addToNumericResult(
|
|
44182
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
44179
44183
|
return this.emitNumericEntity(char, 3);
|
|
44180
44184
|
}
|
|
44181
44185
|
}
|
|
44182
|
-
this.addToNumericResult(
|
|
44186
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
44183
44187
|
return -1;
|
|
44184
44188
|
}
|
|
44185
44189
|
/**
|
|
@@ -44187,23 +44191,23 @@ class EntityDecoder {
|
|
|
44187
44191
|
*
|
|
44188
44192
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
44189
44193
|
*
|
|
44190
|
-
* @param
|
|
44194
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
44191
44195
|
* @param offset The current offset.
|
|
44192
44196
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
44193
44197
|
*/
|
|
44194
|
-
stateNumericDecimal(
|
|
44195
|
-
const
|
|
44196
|
-
while (offset <
|
|
44197
|
-
const char =
|
|
44198
|
+
stateNumericDecimal(input, offset) {
|
|
44199
|
+
const startIndex = offset;
|
|
44200
|
+
while (offset < input.length) {
|
|
44201
|
+
const char = input.charCodeAt(offset);
|
|
44198
44202
|
if (isNumber(char)) {
|
|
44199
44203
|
offset += 1;
|
|
44200
44204
|
}
|
|
44201
44205
|
else {
|
|
44202
|
-
this.addToNumericResult(
|
|
44206
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
44203
44207
|
return this.emitNumericEntity(char, 2);
|
|
44204
44208
|
}
|
|
44205
44209
|
}
|
|
44206
|
-
this.addToNumericResult(
|
|
44210
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
44207
44211
|
return -1;
|
|
44208
44212
|
}
|
|
44209
44213
|
/**
|
|
@@ -44247,17 +44251,17 @@ class EntityDecoder {
|
|
|
44247
44251
|
*
|
|
44248
44252
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
44249
44253
|
*
|
|
44250
|
-
* @param
|
|
44254
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
44251
44255
|
* @param offset The current offset.
|
|
44252
44256
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
44253
44257
|
*/
|
|
44254
|
-
stateNamedEntity(
|
|
44258
|
+
stateNamedEntity(input, offset) {
|
|
44255
44259
|
const { decodeTree } = this;
|
|
44256
44260
|
let current = decodeTree[this.treeIndex];
|
|
44257
44261
|
// The mask is the number of bytes of the value, including the current byte.
|
|
44258
44262
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
44259
|
-
for (; offset <
|
|
44260
|
-
const char =
|
|
44263
|
+
for (; offset < input.length; offset++, this.excess++) {
|
|
44264
|
+
const char = input.charCodeAt(offset);
|
|
44261
44265
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
44262
44266
|
if (this.treeIndex < 0) {
|
|
44263
44267
|
return this.result === 0 ||
|
|
@@ -44364,28 +44368,28 @@ class EntityDecoder {
|
|
|
44364
44368
|
* @returns A function that decodes entities in a string.
|
|
44365
44369
|
*/
|
|
44366
44370
|
function getDecoder(decodeTree) {
|
|
44367
|
-
let
|
|
44368
|
-
const decoder = new EntityDecoder(decodeTree, (
|
|
44369
|
-
return function decodeWithTrie(
|
|
44371
|
+
let returnValue = "";
|
|
44372
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
|
|
44373
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
44370
44374
|
let lastIndex = 0;
|
|
44371
44375
|
let offset = 0;
|
|
44372
|
-
while ((offset =
|
|
44373
|
-
|
|
44376
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
44377
|
+
returnValue += input.slice(lastIndex, offset);
|
|
44374
44378
|
decoder.startEntity(decodeMode);
|
|
44375
|
-
const
|
|
44379
|
+
const length = decoder.write(input,
|
|
44376
44380
|
// Skip the "&"
|
|
44377
44381
|
offset + 1);
|
|
44378
|
-
if (
|
|
44382
|
+
if (length < 0) {
|
|
44379
44383
|
lastIndex = offset + decoder.end();
|
|
44380
44384
|
break;
|
|
44381
44385
|
}
|
|
44382
|
-
lastIndex = offset +
|
|
44383
|
-
// If `
|
|
44384
|
-
offset =
|
|
44386
|
+
lastIndex = offset + length;
|
|
44387
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
44388
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
44385
44389
|
}
|
|
44386
|
-
const result =
|
|
44390
|
+
const result = returnValue + input.slice(lastIndex);
|
|
44387
44391
|
// Make sure we don't keep a reference to the final string.
|
|
44388
|
-
|
|
44392
|
+
returnValue = "";
|
|
44389
44393
|
return result;
|
|
44390
44394
|
};
|
|
44391
44395
|
}
|
|
@@ -44399,31 +44403,31 @@ function getDecoder(decodeTree) {
|
|
|
44399
44403
|
* @param char The current character.
|
|
44400
44404
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
44401
44405
|
*/
|
|
44402
|
-
function determineBranch(decodeTree, current,
|
|
44406
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
44403
44407
|
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
44404
44408
|
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
44405
44409
|
// Case 1: Single branch encoded in jump offset
|
|
44406
44410
|
if (branchCount === 0) {
|
|
44407
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
44411
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
44408
44412
|
}
|
|
44409
44413
|
// Case 2: Multiple branches encoded in jump table
|
|
44410
44414
|
if (jumpOffset) {
|
|
44411
44415
|
const value = char - jumpOffset;
|
|
44412
44416
|
return value < 0 || value >= branchCount
|
|
44413
44417
|
? -1
|
|
44414
|
-
: decodeTree[
|
|
44418
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
44415
44419
|
}
|
|
44416
44420
|
// Case 3: Multiple branches encoded in dictionary
|
|
44417
44421
|
// Binary search for the character.
|
|
44418
|
-
let lo =
|
|
44422
|
+
let lo = nodeIndex;
|
|
44419
44423
|
let hi = lo + branchCount - 1;
|
|
44420
44424
|
while (lo <= hi) {
|
|
44421
44425
|
const mid = (lo + hi) >>> 1;
|
|
44422
|
-
const
|
|
44423
|
-
if (
|
|
44426
|
+
const midValue = decodeTree[mid];
|
|
44427
|
+
if (midValue < char) {
|
|
44424
44428
|
lo = mid + 1;
|
|
44425
44429
|
}
|
|
44426
|
-
else if (
|
|
44430
|
+
else if (midValue > char) {
|
|
44427
44431
|
hi = mid - 1;
|
|
44428
44432
|
}
|
|
44429
44433
|
else {
|
|
@@ -44432,45 +44436,49 @@ function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
|
44432
44436
|
}
|
|
44433
44437
|
return -1;
|
|
44434
44438
|
}
|
|
44435
|
-
const htmlDecoder = getDecoder(
|
|
44436
|
-
const xmlDecoder = getDecoder(
|
|
44439
|
+
const htmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(htmlDecodeTree)));
|
|
44440
|
+
const xmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(xmlDecodeTree)));
|
|
44437
44441
|
/**
|
|
44438
44442
|
* Decodes an HTML string.
|
|
44439
44443
|
*
|
|
44440
|
-
* @param
|
|
44444
|
+
* @param htmlString The string to decode.
|
|
44441
44445
|
* @param mode The decoding mode.
|
|
44442
44446
|
* @returns The decoded string.
|
|
44443
44447
|
*/
|
|
44444
|
-
function decode_decodeHTML(
|
|
44445
|
-
return htmlDecoder(
|
|
44448
|
+
function decode_decodeHTML(htmlString, mode = decode_DecodingMode.Legacy) {
|
|
44449
|
+
return htmlDecoder(htmlString, mode);
|
|
44446
44450
|
}
|
|
44447
44451
|
/**
|
|
44448
44452
|
* Decodes an HTML string in an attribute.
|
|
44449
44453
|
*
|
|
44450
|
-
* @param
|
|
44454
|
+
* @param htmlAttribute The string to decode.
|
|
44451
44455
|
* @returns The decoded string.
|
|
44452
44456
|
*/
|
|
44453
|
-
function decodeHTMLAttribute(
|
|
44454
|
-
return htmlDecoder(
|
|
44457
|
+
function decodeHTMLAttribute(htmlAttribute) {
|
|
44458
|
+
return htmlDecoder(htmlAttribute, decode_DecodingMode.Attribute);
|
|
44455
44459
|
}
|
|
44456
44460
|
/**
|
|
44457
44461
|
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
44458
44462
|
*
|
|
44459
|
-
* @param
|
|
44463
|
+
* @param htmlString The string to decode.
|
|
44460
44464
|
* @returns The decoded string.
|
|
44461
44465
|
*/
|
|
44462
|
-
function decodeHTMLStrict(
|
|
44463
|
-
return htmlDecoder(
|
|
44466
|
+
function decodeHTMLStrict(htmlString) {
|
|
44467
|
+
return htmlDecoder(htmlString, decode_DecodingMode.Strict);
|
|
44464
44468
|
}
|
|
44465
44469
|
/**
|
|
44466
44470
|
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
44467
44471
|
*
|
|
44468
|
-
* @param
|
|
44472
|
+
* @param xmlString The string to decode.
|
|
44469
44473
|
* @returns The decoded string.
|
|
44470
44474
|
*/
|
|
44471
|
-
function decode_decodeXML(
|
|
44472
|
-
return xmlDecoder(
|
|
44475
|
+
function decode_decodeXML(xmlString) {
|
|
44476
|
+
return xmlDecoder(xmlString, decode_DecodingMode.Strict);
|
|
44473
44477
|
}
|
|
44478
|
+
// Re-export for use by eg. htmlparser2
|
|
44479
|
+
|
|
44480
|
+
|
|
44481
|
+
|
|
44474
44482
|
//# sourceMappingURL=decode.js.map
|
|
44475
44483
|
;// ./node_modules/parse5/dist/common/html.js
|
|
44476
44484
|
/** All valid namespaces in HTML. */
|
|
@@ -44482,7 +44490,7 @@ var html_NS;
|
|
|
44482
44490
|
NS["XLINK"] = "http://www.w3.org/1999/xlink";
|
|
44483
44491
|
NS["XML"] = "http://www.w3.org/XML/1998/namespace";
|
|
44484
44492
|
NS["XMLNS"] = "http://www.w3.org/2000/xmlns/";
|
|
44485
|
-
})(html_NS
|
|
44493
|
+
})(html_NS || (html_NS = {}));
|
|
44486
44494
|
var ATTRS;
|
|
44487
44495
|
(function (ATTRS) {
|
|
44488
44496
|
ATTRS["TYPE"] = "type";
|
|
@@ -44493,7 +44501,7 @@ var ATTRS;
|
|
|
44493
44501
|
ATTRS["COLOR"] = "color";
|
|
44494
44502
|
ATTRS["FACE"] = "face";
|
|
44495
44503
|
ATTRS["SIZE"] = "size";
|
|
44496
|
-
})(ATTRS
|
|
44504
|
+
})(ATTRS || (ATTRS = {}));
|
|
44497
44505
|
/**
|
|
44498
44506
|
* The mode of the document.
|
|
44499
44507
|
*
|
|
@@ -44504,7 +44512,7 @@ var DOCUMENT_MODE;
|
|
|
44504
44512
|
DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks";
|
|
44505
44513
|
DOCUMENT_MODE["QUIRKS"] = "quirks";
|
|
44506
44514
|
DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks";
|
|
44507
|
-
})(DOCUMENT_MODE
|
|
44515
|
+
})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));
|
|
44508
44516
|
var TAG_NAMES;
|
|
44509
44517
|
(function (TAG_NAMES) {
|
|
44510
44518
|
TAG_NAMES["A"] = "a";
|
|
@@ -44600,6 +44608,7 @@ var TAG_NAMES;
|
|
|
44600
44608
|
TAG_NAMES["RUBY"] = "ruby";
|
|
44601
44609
|
TAG_NAMES["S"] = "s";
|
|
44602
44610
|
TAG_NAMES["SCRIPT"] = "script";
|
|
44611
|
+
TAG_NAMES["SEARCH"] = "search";
|
|
44603
44612
|
TAG_NAMES["SECTION"] = "section";
|
|
44604
44613
|
TAG_NAMES["SELECT"] = "select";
|
|
44605
44614
|
TAG_NAMES["SOURCE"] = "source";
|
|
@@ -44629,7 +44638,7 @@ var TAG_NAMES;
|
|
|
44629
44638
|
TAG_NAMES["VAR"] = "var";
|
|
44630
44639
|
TAG_NAMES["WBR"] = "wbr";
|
|
44631
44640
|
TAG_NAMES["XMP"] = "xmp";
|
|
44632
|
-
})(TAG_NAMES
|
|
44641
|
+
})(TAG_NAMES || (TAG_NAMES = {}));
|
|
44633
44642
|
/**
|
|
44634
44643
|
* Tag IDs are numeric IDs for known tag names.
|
|
44635
44644
|
*
|
|
@@ -44731,36 +44740,37 @@ var TAG_ID;
|
|
|
44731
44740
|
TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY";
|
|
44732
44741
|
TAG_ID[TAG_ID["S"] = 92] = "S";
|
|
44733
44742
|
TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT";
|
|
44734
|
-
TAG_ID[TAG_ID["
|
|
44735
|
-
TAG_ID[TAG_ID["
|
|
44736
|
-
TAG_ID[TAG_ID["
|
|
44737
|
-
TAG_ID[TAG_ID["
|
|
44738
|
-
TAG_ID[TAG_ID["
|
|
44739
|
-
TAG_ID[TAG_ID["
|
|
44740
|
-
TAG_ID[TAG_ID["
|
|
44741
|
-
TAG_ID[TAG_ID["
|
|
44742
|
-
TAG_ID[TAG_ID["
|
|
44743
|
-
TAG_ID[TAG_ID["
|
|
44744
|
-
TAG_ID[TAG_ID["
|
|
44745
|
-
TAG_ID[TAG_ID["
|
|
44746
|
-
TAG_ID[TAG_ID["
|
|
44747
|
-
TAG_ID[TAG_ID["
|
|
44748
|
-
TAG_ID[TAG_ID["
|
|
44749
|
-
TAG_ID[TAG_ID["
|
|
44750
|
-
TAG_ID[TAG_ID["
|
|
44751
|
-
TAG_ID[TAG_ID["
|
|
44752
|
-
TAG_ID[TAG_ID["
|
|
44753
|
-
TAG_ID[TAG_ID["
|
|
44754
|
-
TAG_ID[TAG_ID["
|
|
44755
|
-
TAG_ID[TAG_ID["
|
|
44756
|
-
TAG_ID[TAG_ID["
|
|
44757
|
-
TAG_ID[TAG_ID["
|
|
44758
|
-
TAG_ID[TAG_ID["
|
|
44759
|
-
TAG_ID[TAG_ID["
|
|
44760
|
-
TAG_ID[TAG_ID["
|
|
44761
|
-
TAG_ID[TAG_ID["
|
|
44762
|
-
TAG_ID[TAG_ID["
|
|
44763
|
-
|
|
44743
|
+
TAG_ID[TAG_ID["SEARCH"] = 94] = "SEARCH";
|
|
44744
|
+
TAG_ID[TAG_ID["SECTION"] = 95] = "SECTION";
|
|
44745
|
+
TAG_ID[TAG_ID["SELECT"] = 96] = "SELECT";
|
|
44746
|
+
TAG_ID[TAG_ID["SOURCE"] = 97] = "SOURCE";
|
|
44747
|
+
TAG_ID[TAG_ID["SMALL"] = 98] = "SMALL";
|
|
44748
|
+
TAG_ID[TAG_ID["SPAN"] = 99] = "SPAN";
|
|
44749
|
+
TAG_ID[TAG_ID["STRIKE"] = 100] = "STRIKE";
|
|
44750
|
+
TAG_ID[TAG_ID["STRONG"] = 101] = "STRONG";
|
|
44751
|
+
TAG_ID[TAG_ID["STYLE"] = 102] = "STYLE";
|
|
44752
|
+
TAG_ID[TAG_ID["SUB"] = 103] = "SUB";
|
|
44753
|
+
TAG_ID[TAG_ID["SUMMARY"] = 104] = "SUMMARY";
|
|
44754
|
+
TAG_ID[TAG_ID["SUP"] = 105] = "SUP";
|
|
44755
|
+
TAG_ID[TAG_ID["TABLE"] = 106] = "TABLE";
|
|
44756
|
+
TAG_ID[TAG_ID["TBODY"] = 107] = "TBODY";
|
|
44757
|
+
TAG_ID[TAG_ID["TEMPLATE"] = 108] = "TEMPLATE";
|
|
44758
|
+
TAG_ID[TAG_ID["TEXTAREA"] = 109] = "TEXTAREA";
|
|
44759
|
+
TAG_ID[TAG_ID["TFOOT"] = 110] = "TFOOT";
|
|
44760
|
+
TAG_ID[TAG_ID["TD"] = 111] = "TD";
|
|
44761
|
+
TAG_ID[TAG_ID["TH"] = 112] = "TH";
|
|
44762
|
+
TAG_ID[TAG_ID["THEAD"] = 113] = "THEAD";
|
|
44763
|
+
TAG_ID[TAG_ID["TITLE"] = 114] = "TITLE";
|
|
44764
|
+
TAG_ID[TAG_ID["TR"] = 115] = "TR";
|
|
44765
|
+
TAG_ID[TAG_ID["TRACK"] = 116] = "TRACK";
|
|
44766
|
+
TAG_ID[TAG_ID["TT"] = 117] = "TT";
|
|
44767
|
+
TAG_ID[TAG_ID["U"] = 118] = "U";
|
|
44768
|
+
TAG_ID[TAG_ID["UL"] = 119] = "UL";
|
|
44769
|
+
TAG_ID[TAG_ID["SVG"] = 120] = "SVG";
|
|
44770
|
+
TAG_ID[TAG_ID["VAR"] = 121] = "VAR";
|
|
44771
|
+
TAG_ID[TAG_ID["WBR"] = 122] = "WBR";
|
|
44772
|
+
TAG_ID[TAG_ID["XMP"] = 123] = "XMP";
|
|
44773
|
+
})(TAG_ID || (TAG_ID = {}));
|
|
44764
44774
|
const TAG_NAME_TO_ID = new Map([
|
|
44765
44775
|
[TAG_NAMES.A, TAG_ID.A],
|
|
44766
44776
|
[TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],
|
|
@@ -44855,6 +44865,7 @@ const TAG_NAME_TO_ID = new Map([
|
|
|
44855
44865
|
[TAG_NAMES.RUBY, TAG_ID.RUBY],
|
|
44856
44866
|
[TAG_NAMES.S, TAG_ID.S],
|
|
44857
44867
|
[TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],
|
|
44868
|
+
[TAG_NAMES.SEARCH, TAG_ID.SEARCH],
|
|
44858
44869
|
[TAG_NAMES.SECTION, TAG_ID.SECTION],
|
|
44859
44870
|
[TAG_NAMES.SELECT, TAG_ID.SELECT],
|
|
44860
44871
|
[TAG_NAMES.SOURCE, TAG_ID.SOURCE],
|
|
@@ -44980,9 +44991,7 @@ const SPECIAL_ELEMENTS = {
|
|
|
44980
44991
|
[html_NS.XML]: new Set(),
|
|
44981
44992
|
[html_NS.XMLNS]: new Set(),
|
|
44982
44993
|
};
|
|
44983
|
-
|
|
44984
|
-
return tn === html_$.H1 || tn === html_$.H2 || tn === html_$.H3 || tn === html_$.H4 || tn === html_$.H5 || tn === html_$.H6;
|
|
44985
|
-
}
|
|
44994
|
+
const NUMBERED_HEADERS = new Set([html_$.H1, html_$.H2, html_$.H3, html_$.H4, html_$.H5, html_$.H6]);
|
|
44986
44995
|
const UNESCAPED_TEXT = new Set([
|
|
44987
44996
|
TAG_NAMES.STYLE,
|
|
44988
44997
|
TAG_NAMES.SCRIPT,
|
|
@@ -44995,7 +45004,7 @@ const UNESCAPED_TEXT = new Set([
|
|
|
44995
45004
|
function html_hasUnescapedText(tn, scriptingEnabled) {
|
|
44996
45005
|
return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);
|
|
44997
45006
|
}
|
|
44998
|
-
|
|
45007
|
+
|
|
44999
45008
|
;// ./node_modules/parse5/dist/tokenizer/index.js
|
|
45000
45009
|
|
|
45001
45010
|
|
|
@@ -45003,36 +45012,6 @@ function html_hasUnescapedText(tn, scriptingEnabled) {
|
|
|
45003
45012
|
|
|
45004
45013
|
|
|
45005
45014
|
|
|
45006
|
-
//C1 Unicode control character reference replacements
|
|
45007
|
-
const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([
|
|
45008
|
-
[0x80, 8364],
|
|
45009
|
-
[0x82, 8218],
|
|
45010
|
-
[0x83, 402],
|
|
45011
|
-
[0x84, 8222],
|
|
45012
|
-
[0x85, 8230],
|
|
45013
|
-
[0x86, 8224],
|
|
45014
|
-
[0x87, 8225],
|
|
45015
|
-
[0x88, 710],
|
|
45016
|
-
[0x89, 8240],
|
|
45017
|
-
[0x8a, 352],
|
|
45018
|
-
[0x8b, 8249],
|
|
45019
|
-
[0x8c, 338],
|
|
45020
|
-
[0x8e, 381],
|
|
45021
|
-
[0x91, 8216],
|
|
45022
|
-
[0x92, 8217],
|
|
45023
|
-
[0x93, 8220],
|
|
45024
|
-
[0x94, 8221],
|
|
45025
|
-
[0x95, 8226],
|
|
45026
|
-
[0x96, 8211],
|
|
45027
|
-
[0x97, 8212],
|
|
45028
|
-
[0x98, 732],
|
|
45029
|
-
[0x99, 8482],
|
|
45030
|
-
[0x9a, 353],
|
|
45031
|
-
[0x9b, 8250],
|
|
45032
|
-
[0x9c, 339],
|
|
45033
|
-
[0x9e, 382],
|
|
45034
|
-
[0x9f, 376],
|
|
45035
|
-
]);
|
|
45036
45015
|
//States
|
|
45037
45016
|
var State;
|
|
45038
45017
|
(function (State) {
|
|
@@ -45108,13 +45087,7 @@ var State;
|
|
|
45108
45087
|
State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET";
|
|
45109
45088
|
State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END";
|
|
45110
45089
|
State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE";
|
|
45111
|
-
State[State["
|
|
45112
|
-
State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND";
|
|
45113
|
-
State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE";
|
|
45114
|
-
State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START";
|
|
45115
|
-
State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE";
|
|
45116
|
-
State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE";
|
|
45117
|
-
State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END";
|
|
45090
|
+
State[State["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND";
|
|
45118
45091
|
})(State || (State = {}));
|
|
45119
45092
|
//Tokenizer initial states for different modes
|
|
45120
45093
|
const TokenizerMode = {
|
|
@@ -45144,27 +45117,33 @@ function isAsciiLetter(cp) {
|
|
|
45144
45117
|
function tokenizer_isAsciiAlphaNumeric(cp) {
|
|
45145
45118
|
return isAsciiLetter(cp) || isAsciiDigit(cp);
|
|
45146
45119
|
}
|
|
45147
|
-
function isAsciiUpperHexDigit(cp) {
|
|
45148
|
-
return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F;
|
|
45149
|
-
}
|
|
45150
|
-
function isAsciiLowerHexDigit(cp) {
|
|
45151
|
-
return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F;
|
|
45152
|
-
}
|
|
45153
|
-
function isAsciiHexDigit(cp) {
|
|
45154
|
-
return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);
|
|
45155
|
-
}
|
|
45156
45120
|
function toAsciiLower(cp) {
|
|
45157
45121
|
return cp + 32;
|
|
45158
45122
|
}
|
|
45159
45123
|
function isWhitespace(cp) {
|
|
45160
45124
|
return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;
|
|
45161
45125
|
}
|
|
45162
|
-
function tokenizer_isEntityInAttributeInvalidEnd(nextCp) {
|
|
45163
|
-
return nextCp === CODE_POINTS.EQUALS_SIGN || tokenizer_isAsciiAlphaNumeric(nextCp);
|
|
45164
|
-
}
|
|
45165
45126
|
function isScriptDataDoubleEscapeSequenceEnd(cp) {
|
|
45166
45127
|
return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;
|
|
45167
45128
|
}
|
|
45129
|
+
function getErrorForNumericCharacterReference(code) {
|
|
45130
|
+
if (code === CODE_POINTS.NULL) {
|
|
45131
|
+
return ERR.nullCharacterReference;
|
|
45132
|
+
}
|
|
45133
|
+
else if (code > 1114111) {
|
|
45134
|
+
return ERR.characterReferenceOutsideUnicodeRange;
|
|
45135
|
+
}
|
|
45136
|
+
else if (isSurrogate(code)) {
|
|
45137
|
+
return ERR.surrogateCharacterReference;
|
|
45138
|
+
}
|
|
45139
|
+
else if (isUndefinedCodePoint(code)) {
|
|
45140
|
+
return ERR.noncharacterCharacterReference;
|
|
45141
|
+
}
|
|
45142
|
+
else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) {
|
|
45143
|
+
return ERR.controlCharacterReference;
|
|
45144
|
+
}
|
|
45145
|
+
return null;
|
|
45146
|
+
}
|
|
45168
45147
|
//Tokenizer
|
|
45169
45148
|
class Tokenizer {
|
|
45170
45149
|
constructor(options, handler) {
|
|
@@ -45184,18 +45163,38 @@ class Tokenizer {
|
|
|
45184
45163
|
this.active = false;
|
|
45185
45164
|
this.state = State.DATA;
|
|
45186
45165
|
this.returnState = State.DATA;
|
|
45187
|
-
this.
|
|
45166
|
+
this.entityStartPos = 0;
|
|
45188
45167
|
this.consumedAfterSnapshot = -1;
|
|
45189
45168
|
this.currentCharacterToken = null;
|
|
45190
45169
|
this.currentToken = null;
|
|
45191
45170
|
this.currentAttr = { name: '', value: '' };
|
|
45192
45171
|
this.preprocessor = new Preprocessor(handler);
|
|
45193
45172
|
this.currentLocation = this.getCurrentLocation(-1);
|
|
45173
|
+
this.entityDecoder = new EntityDecoder(decode_data_html_htmlDecodeTree, (cp, consumed) => {
|
|
45174
|
+
// Note: Set `pos` _before_ flushing, as flushing might drop
|
|
45175
|
+
// the current chunk and invalidate `entityStartPos`.
|
|
45176
|
+
this.preprocessor.pos = this.entityStartPos + consumed - 1;
|
|
45177
|
+
this._flushCodePointConsumedAsCharacterReference(cp);
|
|
45178
|
+
}, handler.onParseError
|
|
45179
|
+
? {
|
|
45180
|
+
missingSemicolonAfterCharacterReference: () => {
|
|
45181
|
+
this._err(ERR.missingSemicolonAfterCharacterReference, 1);
|
|
45182
|
+
},
|
|
45183
|
+
absenceOfDigitsInNumericCharacterReference: (consumed) => {
|
|
45184
|
+
this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);
|
|
45185
|
+
},
|
|
45186
|
+
validateNumericCharacterReference: (code) => {
|
|
45187
|
+
const error = getErrorForNumericCharacterReference(code);
|
|
45188
|
+
if (error)
|
|
45189
|
+
this._err(error, 1);
|
|
45190
|
+
},
|
|
45191
|
+
}
|
|
45192
|
+
: undefined);
|
|
45194
45193
|
}
|
|
45195
45194
|
//Errors
|
|
45196
|
-
_err(code) {
|
|
45195
|
+
_err(code, cpOffset = 0) {
|
|
45197
45196
|
var _a, _b;
|
|
45198
|
-
(_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));
|
|
45197
|
+
(_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));
|
|
45199
45198
|
}
|
|
45200
45199
|
// NOTE: `offset` may never run across line boundaries.
|
|
45201
45200
|
getCurrentLocation(offset) {
|
|
@@ -45257,7 +45256,8 @@ class Tokenizer {
|
|
|
45257
45256
|
//Hibernation
|
|
45258
45257
|
_ensureHibernation() {
|
|
45259
45258
|
if (this.preprocessor.endOfChunkHit) {
|
|
45260
|
-
this.
|
|
45259
|
+
this.preprocessor.retreat(this.consumedAfterSnapshot);
|
|
45260
|
+
this.consumedAfterSnapshot = 0;
|
|
45261
45261
|
this.active = false;
|
|
45262
45262
|
return true;
|
|
45263
45263
|
}
|
|
@@ -45268,14 +45268,6 @@ class Tokenizer {
|
|
|
45268
45268
|
this.consumedAfterSnapshot++;
|
|
45269
45269
|
return this.preprocessor.advance();
|
|
45270
45270
|
}
|
|
45271
|
-
_unconsume(count) {
|
|
45272
|
-
this.consumedAfterSnapshot -= count;
|
|
45273
|
-
this.preprocessor.retreat(count);
|
|
45274
|
-
}
|
|
45275
|
-
_reconsumeInState(state, cp) {
|
|
45276
|
-
this.state = state;
|
|
45277
|
-
this._callState(cp);
|
|
45278
|
-
}
|
|
45279
45271
|
_advanceBy(count) {
|
|
45280
45272
|
this.consumedAfterSnapshot += count;
|
|
45281
45273
|
for (let i = 0; i < count; i++) {
|
|
@@ -45447,7 +45439,7 @@ class Tokenizer {
|
|
|
45447
45439
|
this.active = false;
|
|
45448
45440
|
}
|
|
45449
45441
|
//Characters emission
|
|
45450
|
-
//OPTIMIZATION: specification uses only one type of character
|
|
45442
|
+
//OPTIMIZATION: The specification uses only one type of character token (one token per character).
|
|
45451
45443
|
//This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
|
|
45452
45444
|
//If we have a sequence of characters that belong to the same group, the parser can process it
|
|
45453
45445
|
//as a single solid character token.
|
|
@@ -45457,15 +45449,15 @@ class Tokenizer {
|
|
|
45457
45449
|
//3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
|
|
45458
45450
|
_appendCharToCurrentCharacterToken(type, ch) {
|
|
45459
45451
|
if (this.currentCharacterToken) {
|
|
45460
|
-
if (this.currentCharacterToken.type
|
|
45452
|
+
if (this.currentCharacterToken.type === type) {
|
|
45453
|
+
this.currentCharacterToken.chars += ch;
|
|
45454
|
+
return;
|
|
45455
|
+
}
|
|
45456
|
+
else {
|
|
45461
45457
|
this.currentLocation = this.getCurrentLocation(0);
|
|
45462
45458
|
this._emitCurrentCharacterToken(this.currentLocation);
|
|
45463
45459
|
this.preprocessor.dropParsedChunk();
|
|
45464
45460
|
}
|
|
45465
|
-
else {
|
|
45466
|
-
this.currentCharacterToken.chars += ch;
|
|
45467
|
-
return;
|
|
45468
|
-
}
|
|
45469
45461
|
}
|
|
45470
45462
|
this._createCharacterToken(type, ch);
|
|
45471
45463
|
}
|
|
@@ -45483,59 +45475,11 @@ class Tokenizer {
|
|
|
45483
45475
|
this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);
|
|
45484
45476
|
}
|
|
45485
45477
|
// Character reference helpers
|
|
45486
|
-
|
|
45487
|
-
|
|
45488
|
-
|
|
45489
|
-
|
|
45490
|
-
|
|
45491
|
-
i = determineBranch(decode_data_html, current, i + 1, cp);
|
|
45492
|
-
if (i < 0)
|
|
45493
|
-
break;
|
|
45494
|
-
excess += 1;
|
|
45495
|
-
current = decode_data_html[i];
|
|
45496
|
-
const masked = current & BinTrieFlags.VALUE_LENGTH;
|
|
45497
|
-
// If the branch is a value, store it and continue
|
|
45498
|
-
if (masked) {
|
|
45499
|
-
// The mask is the number of bytes of the value, including the current byte.
|
|
45500
|
-
const valueLength = (masked >> 14) - 1;
|
|
45501
|
-
// Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
45502
|
-
// See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
45503
|
-
if (cp !== CODE_POINTS.SEMICOLON &&
|
|
45504
|
-
this._isCharacterReferenceInAttribute() &&
|
|
45505
|
-
tokenizer_isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {
|
|
45506
|
-
//NOTE: we don't flush all consumed code points here, and instead switch back to the original state after
|
|
45507
|
-
//emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.
|
|
45508
|
-
result = [CODE_POINTS.AMPERSAND];
|
|
45509
|
-
// Skip over the value.
|
|
45510
|
-
i += valueLength;
|
|
45511
|
-
}
|
|
45512
|
-
else {
|
|
45513
|
-
// If this is a surrogate pair, consume the next two bytes.
|
|
45514
|
-
result =
|
|
45515
|
-
valueLength === 0
|
|
45516
|
-
? [decode_data_html[i] & ~BinTrieFlags.VALUE_LENGTH]
|
|
45517
|
-
: valueLength === 1
|
|
45518
|
-
? [decode_data_html[++i]]
|
|
45519
|
-
: [decode_data_html[++i], decode_data_html[++i]];
|
|
45520
|
-
excess = 0;
|
|
45521
|
-
withoutSemicolon = cp !== CODE_POINTS.SEMICOLON;
|
|
45522
|
-
}
|
|
45523
|
-
if (valueLength === 0) {
|
|
45524
|
-
// If the value is zero-length, we're done.
|
|
45525
|
-
this._consume();
|
|
45526
|
-
break;
|
|
45527
|
-
}
|
|
45528
|
-
}
|
|
45529
|
-
}
|
|
45530
|
-
this._unconsume(excess);
|
|
45531
|
-
if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {
|
|
45532
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
45533
|
-
}
|
|
45534
|
-
// We want to emit the error above on the code point after the entity.
|
|
45535
|
-
// We always consume one code point too many in the loop, and we wait to
|
|
45536
|
-
// unconsume it until after the error is emitted.
|
|
45537
|
-
this._unconsume(1);
|
|
45538
|
-
return result;
|
|
45478
|
+
_startCharacterReference() {
|
|
45479
|
+
this.returnState = this.state;
|
|
45480
|
+
this.state = State.CHARACTER_REFERENCE;
|
|
45481
|
+
this.entityStartPos = this.preprocessor.pos;
|
|
45482
|
+
this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? decode_DecodingMode.Attribute : decode_DecodingMode.Legacy);
|
|
45539
45483
|
}
|
|
45540
45484
|
_isCharacterReferenceInAttribute() {
|
|
45541
45485
|
return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||
|
|
@@ -45838,37 +45782,13 @@ class Tokenizer {
|
|
|
45838
45782
|
break;
|
|
45839
45783
|
}
|
|
45840
45784
|
case State.CHARACTER_REFERENCE: {
|
|
45841
|
-
this._stateCharacterReference(
|
|
45842
|
-
break;
|
|
45843
|
-
}
|
|
45844
|
-
case State.NAMED_CHARACTER_REFERENCE: {
|
|
45845
|
-
this._stateNamedCharacterReference(cp);
|
|
45785
|
+
this._stateCharacterReference();
|
|
45846
45786
|
break;
|
|
45847
45787
|
}
|
|
45848
45788
|
case State.AMBIGUOUS_AMPERSAND: {
|
|
45849
45789
|
this._stateAmbiguousAmpersand(cp);
|
|
45850
45790
|
break;
|
|
45851
45791
|
}
|
|
45852
|
-
case State.NUMERIC_CHARACTER_REFERENCE: {
|
|
45853
|
-
this._stateNumericCharacterReference(cp);
|
|
45854
|
-
break;
|
|
45855
|
-
}
|
|
45856
|
-
case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {
|
|
45857
|
-
this._stateHexademicalCharacterReferenceStart(cp);
|
|
45858
|
-
break;
|
|
45859
|
-
}
|
|
45860
|
-
case State.HEXADEMICAL_CHARACTER_REFERENCE: {
|
|
45861
|
-
this._stateHexademicalCharacterReference(cp);
|
|
45862
|
-
break;
|
|
45863
|
-
}
|
|
45864
|
-
case State.DECIMAL_CHARACTER_REFERENCE: {
|
|
45865
|
-
this._stateDecimalCharacterReference(cp);
|
|
45866
|
-
break;
|
|
45867
|
-
}
|
|
45868
|
-
case State.NUMERIC_CHARACTER_REFERENCE_END: {
|
|
45869
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
45870
|
-
break;
|
|
45871
|
-
}
|
|
45872
45792
|
default: {
|
|
45873
45793
|
throw new Error('Unknown state');
|
|
45874
45794
|
}
|
|
@@ -45884,8 +45804,7 @@ class Tokenizer {
|
|
|
45884
45804
|
break;
|
|
45885
45805
|
}
|
|
45886
45806
|
case CODE_POINTS.AMPERSAND: {
|
|
45887
|
-
this.
|
|
45888
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
45807
|
+
this._startCharacterReference();
|
|
45889
45808
|
break;
|
|
45890
45809
|
}
|
|
45891
45810
|
case CODE_POINTS.NULL: {
|
|
@@ -45907,8 +45826,7 @@ class Tokenizer {
|
|
|
45907
45826
|
_stateRcdata(cp) {
|
|
45908
45827
|
switch (cp) {
|
|
45909
45828
|
case CODE_POINTS.AMPERSAND: {
|
|
45910
|
-
this.
|
|
45911
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
45829
|
+
this._startCharacterReference();
|
|
45912
45830
|
break;
|
|
45913
45831
|
}
|
|
45914
45832
|
case CODE_POINTS.LESS_THAN_SIGN: {
|
|
@@ -46677,8 +46595,7 @@ class Tokenizer {
|
|
|
46677
46595
|
break;
|
|
46678
46596
|
}
|
|
46679
46597
|
case CODE_POINTS.AMPERSAND: {
|
|
46680
|
-
this.
|
|
46681
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
46598
|
+
this._startCharacterReference();
|
|
46682
46599
|
break;
|
|
46683
46600
|
}
|
|
46684
46601
|
case CODE_POINTS.NULL: {
|
|
@@ -46705,8 +46622,7 @@ class Tokenizer {
|
|
|
46705
46622
|
break;
|
|
46706
46623
|
}
|
|
46707
46624
|
case CODE_POINTS.AMPERSAND: {
|
|
46708
|
-
this.
|
|
46709
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
46625
|
+
this._startCharacterReference();
|
|
46710
46626
|
break;
|
|
46711
46627
|
}
|
|
46712
46628
|
case CODE_POINTS.NULL: {
|
|
@@ -46737,8 +46653,7 @@ class Tokenizer {
|
|
|
46737
46653
|
break;
|
|
46738
46654
|
}
|
|
46739
46655
|
case CODE_POINTS.AMPERSAND: {
|
|
46740
|
-
this.
|
|
46741
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
46656
|
+
this._startCharacterReference();
|
|
46742
46657
|
break;
|
|
46743
46658
|
}
|
|
46744
46659
|
case CODE_POINTS.GREATER_THAN_SIGN: {
|
|
@@ -47755,37 +47670,35 @@ class Tokenizer {
|
|
|
47755
47670
|
}
|
|
47756
47671
|
// Character reference state
|
|
47757
47672
|
//------------------------------------------------------------------
|
|
47758
|
-
_stateCharacterReference(
|
|
47759
|
-
|
|
47760
|
-
|
|
47761
|
-
|
|
47762
|
-
|
|
47763
|
-
|
|
47764
|
-
|
|
47673
|
+
_stateCharacterReference() {
|
|
47674
|
+
let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);
|
|
47675
|
+
if (length < 0) {
|
|
47676
|
+
if (this.preprocessor.lastChunkWritten) {
|
|
47677
|
+
length = this.entityDecoder.end();
|
|
47678
|
+
}
|
|
47679
|
+
else {
|
|
47680
|
+
// Wait for the rest of the entity.
|
|
47681
|
+
this.active = false;
|
|
47682
|
+
// Mark the entire buffer as read.
|
|
47683
|
+
this.preprocessor.pos = this.preprocessor.html.length - 1;
|
|
47684
|
+
this.consumedAfterSnapshot = 0;
|
|
47685
|
+
this.preprocessor.endOfChunkHit = true;
|
|
47686
|
+
return;
|
|
47687
|
+
}
|
|
47765
47688
|
}
|
|
47766
|
-
|
|
47689
|
+
if (length === 0) {
|
|
47690
|
+
// This was not a valid entity. Go back to the beginning, and
|
|
47691
|
+
// figure out what to do.
|
|
47692
|
+
this.preprocessor.pos = this.entityStartPos;
|
|
47767
47693
|
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
47768
|
-
this.
|
|
47769
|
-
|
|
47770
|
-
|
|
47771
|
-
|
|
47772
|
-
//------------------------------------------------------------------
|
|
47773
|
-
_stateNamedCharacterReference(cp) {
|
|
47774
|
-
const matchResult = this._matchNamedCharacterReference(cp);
|
|
47775
|
-
//NOTE: Matching can be abrupted by hibernation. In that case, match
|
|
47776
|
-
//results are no longer valid and we will need to start over.
|
|
47777
|
-
if (this._ensureHibernation()) {
|
|
47778
|
-
// Stay in the state, try again.
|
|
47779
|
-
}
|
|
47780
|
-
else if (matchResult) {
|
|
47781
|
-
for (let i = 0; i < matchResult.length; i++) {
|
|
47782
|
-
this._flushCodePointConsumedAsCharacterReference(matchResult[i]);
|
|
47783
|
-
}
|
|
47784
|
-
this.state = this.returnState;
|
|
47694
|
+
this.state =
|
|
47695
|
+
!this._isCharacterReferenceInAttribute() && tokenizer_isAsciiAlphaNumeric(this.preprocessor.peek(1))
|
|
47696
|
+
? State.AMBIGUOUS_AMPERSAND
|
|
47697
|
+
: this.returnState;
|
|
47785
47698
|
}
|
|
47786
47699
|
else {
|
|
47787
|
-
|
|
47788
|
-
this.state =
|
|
47700
|
+
// We successfully parsed an entity. Switch to the return state.
|
|
47701
|
+
this.state = this.returnState;
|
|
47789
47702
|
}
|
|
47790
47703
|
}
|
|
47791
47704
|
// Ambiguos ampersand state
|
|
@@ -47798,109 +47711,12 @@ class Tokenizer {
|
|
|
47798
47711
|
if (cp === CODE_POINTS.SEMICOLON) {
|
|
47799
47712
|
this._err(ERR.unknownNamedCharacterReference);
|
|
47800
47713
|
}
|
|
47801
|
-
this._reconsumeInState(this.returnState, cp);
|
|
47802
|
-
}
|
|
47803
|
-
}
|
|
47804
|
-
// Numeric character reference state
|
|
47805
|
-
//------------------------------------------------------------------
|
|
47806
|
-
_stateNumericCharacterReference(cp) {
|
|
47807
|
-
this.charRefCode = 0;
|
|
47808
|
-
if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) {
|
|
47809
|
-
this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;
|
|
47810
|
-
}
|
|
47811
|
-
// Inlined decimal character reference start state
|
|
47812
|
-
else if (isAsciiDigit(cp)) {
|
|
47813
|
-
this.state = State.DECIMAL_CHARACTER_REFERENCE;
|
|
47814
|
-
this._stateDecimalCharacterReference(cp);
|
|
47815
|
-
}
|
|
47816
|
-
else {
|
|
47817
|
-
this._err(ERR.absenceOfDigitsInNumericCharacterReference);
|
|
47818
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
47819
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
|
|
47820
|
-
this._reconsumeInState(this.returnState, cp);
|
|
47821
|
-
}
|
|
47822
|
-
}
|
|
47823
|
-
// Hexademical character reference start state
|
|
47824
|
-
//------------------------------------------------------------------
|
|
47825
|
-
_stateHexademicalCharacterReferenceStart(cp) {
|
|
47826
|
-
if (isAsciiHexDigit(cp)) {
|
|
47827
|
-
this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;
|
|
47828
|
-
this._stateHexademicalCharacterReference(cp);
|
|
47829
|
-
}
|
|
47830
|
-
else {
|
|
47831
|
-
this._err(ERR.absenceOfDigitsInNumericCharacterReference);
|
|
47832
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
47833
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
|
|
47834
|
-
this._unconsume(2);
|
|
47835
47714
|
this.state = this.returnState;
|
|
47715
|
+
this._callState(cp);
|
|
47836
47716
|
}
|
|
47837
47717
|
}
|
|
47838
|
-
// Hexademical character reference state
|
|
47839
|
-
//------------------------------------------------------------------
|
|
47840
|
-
_stateHexademicalCharacterReference(cp) {
|
|
47841
|
-
if (isAsciiUpperHexDigit(cp)) {
|
|
47842
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x37;
|
|
47843
|
-
}
|
|
47844
|
-
else if (isAsciiLowerHexDigit(cp)) {
|
|
47845
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x57;
|
|
47846
|
-
}
|
|
47847
|
-
else if (isAsciiDigit(cp)) {
|
|
47848
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x30;
|
|
47849
|
-
}
|
|
47850
|
-
else if (cp === CODE_POINTS.SEMICOLON) {
|
|
47851
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
47852
|
-
}
|
|
47853
|
-
else {
|
|
47854
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
47855
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
47856
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
47857
|
-
}
|
|
47858
|
-
}
|
|
47859
|
-
// Decimal character reference state
|
|
47860
|
-
//------------------------------------------------------------------
|
|
47861
|
-
_stateDecimalCharacterReference(cp) {
|
|
47862
|
-
if (isAsciiDigit(cp)) {
|
|
47863
|
-
this.charRefCode = this.charRefCode * 10 + cp - 0x30;
|
|
47864
|
-
}
|
|
47865
|
-
else if (cp === CODE_POINTS.SEMICOLON) {
|
|
47866
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
47867
|
-
}
|
|
47868
|
-
else {
|
|
47869
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
47870
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
47871
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
47872
|
-
}
|
|
47873
|
-
}
|
|
47874
|
-
// Numeric character reference end state
|
|
47875
|
-
//------------------------------------------------------------------
|
|
47876
|
-
_stateNumericCharacterReferenceEnd(cp) {
|
|
47877
|
-
if (this.charRefCode === CODE_POINTS.NULL) {
|
|
47878
|
-
this._err(ERR.nullCharacterReference);
|
|
47879
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
47880
|
-
}
|
|
47881
|
-
else if (this.charRefCode > 1114111) {
|
|
47882
|
-
this._err(ERR.characterReferenceOutsideUnicodeRange);
|
|
47883
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
47884
|
-
}
|
|
47885
|
-
else if (isSurrogate(this.charRefCode)) {
|
|
47886
|
-
this._err(ERR.surrogateCharacterReference);
|
|
47887
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
47888
|
-
}
|
|
47889
|
-
else if (isUndefinedCodePoint(this.charRefCode)) {
|
|
47890
|
-
this._err(ERR.noncharacterCharacterReference);
|
|
47891
|
-
}
|
|
47892
|
-
else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) {
|
|
47893
|
-
this._err(ERR.controlCharacterReference);
|
|
47894
|
-
const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);
|
|
47895
|
-
if (replacement !== undefined) {
|
|
47896
|
-
this.charRefCode = replacement;
|
|
47897
|
-
}
|
|
47898
|
-
}
|
|
47899
|
-
this._flushCodePointConsumedAsCharacterReference(this.charRefCode);
|
|
47900
|
-
this._reconsumeInState(this.returnState, cp);
|
|
47901
|
-
}
|
|
47902
47718
|
}
|
|
47903
|
-
|
|
47719
|
+
|
|
47904
47720
|
;// ./node_modules/parse5/dist/parser/open-element-stack.js
|
|
47905
47721
|
|
|
47906
47722
|
//Element utils
|
|
@@ -47916,31 +47732,25 @@ const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([
|
|
|
47916
47732
|
TAG_ID.THEAD,
|
|
47917
47733
|
TAG_ID.TR,
|
|
47918
47734
|
]);
|
|
47919
|
-
const
|
|
47920
|
-
|
|
47921
|
-
|
|
47922
|
-
|
|
47923
|
-
|
|
47924
|
-
|
|
47925
|
-
|
|
47926
|
-
|
|
47927
|
-
|
|
47928
|
-
|
|
47929
|
-
[TAG_ID.ANNOTATION_XML, html_NS.MATHML],
|
|
47930
|
-
[TAG_ID.MI, html_NS.MATHML],
|
|
47931
|
-
[TAG_ID.MN, html_NS.MATHML],
|
|
47932
|
-
[TAG_ID.MO, html_NS.MATHML],
|
|
47933
|
-
[TAG_ID.MS, html_NS.MATHML],
|
|
47934
|
-
[TAG_ID.MTEXT, html_NS.MATHML],
|
|
47935
|
-
[TAG_ID.DESC, html_NS.SVG],
|
|
47936
|
-
[TAG_ID.FOREIGN_OBJECT, html_NS.SVG],
|
|
47937
|
-
[TAG_ID.TITLE, html_NS.SVG],
|
|
47735
|
+
const SCOPING_ELEMENTS_HTML = new Set([
|
|
47736
|
+
TAG_ID.APPLET,
|
|
47737
|
+
TAG_ID.CAPTION,
|
|
47738
|
+
TAG_ID.HTML,
|
|
47739
|
+
TAG_ID.MARQUEE,
|
|
47740
|
+
TAG_ID.OBJECT,
|
|
47741
|
+
TAG_ID.TABLE,
|
|
47742
|
+
TAG_ID.TD,
|
|
47743
|
+
TAG_ID.TEMPLATE,
|
|
47744
|
+
TAG_ID.TH,
|
|
47938
47745
|
]);
|
|
47939
|
-
const
|
|
47940
|
-
const
|
|
47941
|
-
const
|
|
47942
|
-
const
|
|
47943
|
-
const
|
|
47746
|
+
const SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]);
|
|
47747
|
+
const SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]);
|
|
47748
|
+
const SCOPING_ELEMENTS_MATHML = new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]);
|
|
47749
|
+
const SCOPING_ELEMENTS_SVG = new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]);
|
|
47750
|
+
const TABLE_ROW_CONTEXT = new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
47751
|
+
const TABLE_BODY_CONTEXT = new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
47752
|
+
const TABLE_CONTEXT = new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
47753
|
+
const TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]);
|
|
47944
47754
|
//Stack of open elements
|
|
47945
47755
|
class OpenElementStack {
|
|
47946
47756
|
get currentTmplContentOrNode() {
|
|
@@ -48004,14 +47814,16 @@ class OpenElementStack {
|
|
|
48004
47814
|
if (insertionIdx === this.stackTop) {
|
|
48005
47815
|
this._updateCurrentElement();
|
|
48006
47816
|
}
|
|
48007
|
-
|
|
47817
|
+
if (this.current && this.currentTagId !== undefined) {
|
|
47818
|
+
this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);
|
|
47819
|
+
}
|
|
48008
47820
|
}
|
|
48009
47821
|
popUntilTagNamePopped(tagName) {
|
|
48010
47822
|
let targetIdx = this.stackTop + 1;
|
|
48011
47823
|
do {
|
|
48012
47824
|
targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);
|
|
48013
47825
|
} while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html_NS.HTML);
|
|
48014
|
-
this.shortenToLength(targetIdx
|
|
47826
|
+
this.shortenToLength(Math.max(targetIdx, 0));
|
|
48015
47827
|
}
|
|
48016
47828
|
shortenToLength(idx) {
|
|
48017
47829
|
while (this.stackTop >= idx) {
|
|
@@ -48026,14 +47838,14 @@ class OpenElementStack {
|
|
|
48026
47838
|
}
|
|
48027
47839
|
popUntilElementPopped(element) {
|
|
48028
47840
|
const idx = this._indexOf(element);
|
|
48029
|
-
this.shortenToLength(idx
|
|
47841
|
+
this.shortenToLength(Math.max(idx, 0));
|
|
48030
47842
|
}
|
|
48031
47843
|
popUntilPopped(tagNames, targetNS) {
|
|
48032
47844
|
const idx = this._indexOfTagNames(tagNames, targetNS);
|
|
48033
|
-
this.shortenToLength(idx
|
|
47845
|
+
this.shortenToLength(Math.max(idx, 0));
|
|
48034
47846
|
}
|
|
48035
47847
|
popUntilNumberedHeaderPopped() {
|
|
48036
|
-
this.popUntilPopped(
|
|
47848
|
+
this.popUntilPopped(NUMBERED_HEADERS, html_NS.HTML);
|
|
48037
47849
|
}
|
|
48038
47850
|
popUntilTableCellPopped() {
|
|
48039
47851
|
this.popUntilPopped(TABLE_CELLS, html_NS.HTML);
|
|
@@ -48046,7 +47858,7 @@ class OpenElementStack {
|
|
|
48046
47858
|
}
|
|
48047
47859
|
_indexOfTagNames(tagNames, namespace) {
|
|
48048
47860
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48049
|
-
if (tagNames.
|
|
47861
|
+
if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {
|
|
48050
47862
|
return i;
|
|
48051
47863
|
}
|
|
48052
47864
|
}
|
|
@@ -48096,124 +47908,141 @@ class OpenElementStack {
|
|
|
48096
47908
|
return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML;
|
|
48097
47909
|
}
|
|
48098
47910
|
//Element in scope
|
|
48099
|
-
|
|
47911
|
+
hasInDynamicScope(tagName, htmlScope) {
|
|
48100
47912
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48101
47913
|
const tn = this.tagIDs[i];
|
|
48102
|
-
|
|
48103
|
-
|
|
48104
|
-
|
|
48105
|
-
|
|
48106
|
-
|
|
48107
|
-
|
|
47914
|
+
switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
|
|
47915
|
+
case html_NS.HTML: {
|
|
47916
|
+
if (tn === tagName)
|
|
47917
|
+
return true;
|
|
47918
|
+
if (htmlScope.has(tn))
|
|
47919
|
+
return false;
|
|
47920
|
+
break;
|
|
47921
|
+
}
|
|
47922
|
+
case html_NS.SVG: {
|
|
47923
|
+
if (SCOPING_ELEMENTS_SVG.has(tn))
|
|
47924
|
+
return false;
|
|
47925
|
+
break;
|
|
47926
|
+
}
|
|
47927
|
+
case html_NS.MATHML: {
|
|
47928
|
+
if (SCOPING_ELEMENTS_MATHML.has(tn))
|
|
47929
|
+
return false;
|
|
47930
|
+
break;
|
|
47931
|
+
}
|
|
48108
47932
|
}
|
|
48109
47933
|
}
|
|
48110
47934
|
return true;
|
|
48111
47935
|
}
|
|
48112
|
-
|
|
48113
|
-
|
|
48114
|
-
const tn = this.tagIDs[i];
|
|
48115
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
48116
|
-
if (isNumberedHeader(tn) && ns === html_NS.HTML) {
|
|
48117
|
-
return true;
|
|
48118
|
-
}
|
|
48119
|
-
if (SCOPING_ELEMENT_NS.get(tn) === ns) {
|
|
48120
|
-
return false;
|
|
48121
|
-
}
|
|
48122
|
-
}
|
|
48123
|
-
return true;
|
|
47936
|
+
hasInScope(tagName) {
|
|
47937
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);
|
|
48124
47938
|
}
|
|
48125
47939
|
hasInListItemScope(tagName) {
|
|
48126
|
-
|
|
48127
|
-
const tn = this.tagIDs[i];
|
|
48128
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
48129
|
-
if (tn === tagName && ns === html_NS.HTML) {
|
|
48130
|
-
return true;
|
|
48131
|
-
}
|
|
48132
|
-
if (((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {
|
|
48133
|
-
return false;
|
|
48134
|
-
}
|
|
48135
|
-
}
|
|
48136
|
-
return true;
|
|
47940
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);
|
|
48137
47941
|
}
|
|
48138
47942
|
hasInButtonScope(tagName) {
|
|
47943
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);
|
|
47944
|
+
}
|
|
47945
|
+
hasNumberedHeaderInScope() {
|
|
48139
47946
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48140
47947
|
const tn = this.tagIDs[i];
|
|
48141
|
-
|
|
48142
|
-
|
|
48143
|
-
|
|
48144
|
-
|
|
48145
|
-
|
|
48146
|
-
|
|
47948
|
+
switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
|
|
47949
|
+
case html_NS.HTML: {
|
|
47950
|
+
if (NUMBERED_HEADERS.has(tn))
|
|
47951
|
+
return true;
|
|
47952
|
+
if (SCOPING_ELEMENTS_HTML.has(tn))
|
|
47953
|
+
return false;
|
|
47954
|
+
break;
|
|
47955
|
+
}
|
|
47956
|
+
case html_NS.SVG: {
|
|
47957
|
+
if (SCOPING_ELEMENTS_SVG.has(tn))
|
|
47958
|
+
return false;
|
|
47959
|
+
break;
|
|
47960
|
+
}
|
|
47961
|
+
case html_NS.MATHML: {
|
|
47962
|
+
if (SCOPING_ELEMENTS_MATHML.has(tn))
|
|
47963
|
+
return false;
|
|
47964
|
+
break;
|
|
47965
|
+
}
|
|
48147
47966
|
}
|
|
48148
47967
|
}
|
|
48149
47968
|
return true;
|
|
48150
47969
|
}
|
|
48151
47970
|
hasInTableScope(tagName) {
|
|
48152
47971
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48153
|
-
|
|
48154
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
48155
|
-
if (ns !== html_NS.HTML) {
|
|
47972
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
48156
47973
|
continue;
|
|
48157
47974
|
}
|
|
48158
|
-
|
|
48159
|
-
|
|
48160
|
-
|
|
48161
|
-
|
|
48162
|
-
|
|
47975
|
+
switch (this.tagIDs[i]) {
|
|
47976
|
+
case tagName: {
|
|
47977
|
+
return true;
|
|
47978
|
+
}
|
|
47979
|
+
case TAG_ID.TABLE:
|
|
47980
|
+
case TAG_ID.HTML: {
|
|
47981
|
+
return false;
|
|
47982
|
+
}
|
|
48163
47983
|
}
|
|
48164
47984
|
}
|
|
48165
47985
|
return true;
|
|
48166
47986
|
}
|
|
48167
47987
|
hasTableBodyContextInTableScope() {
|
|
48168
47988
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48169
|
-
|
|
48170
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
48171
|
-
if (ns !== html_NS.HTML) {
|
|
47989
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
48172
47990
|
continue;
|
|
48173
47991
|
}
|
|
48174
|
-
|
|
48175
|
-
|
|
48176
|
-
|
|
48177
|
-
|
|
48178
|
-
|
|
47992
|
+
switch (this.tagIDs[i]) {
|
|
47993
|
+
case TAG_ID.TBODY:
|
|
47994
|
+
case TAG_ID.THEAD:
|
|
47995
|
+
case TAG_ID.TFOOT: {
|
|
47996
|
+
return true;
|
|
47997
|
+
}
|
|
47998
|
+
case TAG_ID.TABLE:
|
|
47999
|
+
case TAG_ID.HTML: {
|
|
48000
|
+
return false;
|
|
48001
|
+
}
|
|
48179
48002
|
}
|
|
48180
48003
|
}
|
|
48181
48004
|
return true;
|
|
48182
48005
|
}
|
|
48183
48006
|
hasInSelectScope(tagName) {
|
|
48184
48007
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
48185
|
-
|
|
48186
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
48187
|
-
if (ns !== html_NS.HTML) {
|
|
48008
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
48188
48009
|
continue;
|
|
48189
48010
|
}
|
|
48190
|
-
|
|
48191
|
-
|
|
48192
|
-
|
|
48193
|
-
|
|
48194
|
-
|
|
48011
|
+
switch (this.tagIDs[i]) {
|
|
48012
|
+
case tagName: {
|
|
48013
|
+
return true;
|
|
48014
|
+
}
|
|
48015
|
+
case TAG_ID.OPTION:
|
|
48016
|
+
case TAG_ID.OPTGROUP: {
|
|
48017
|
+
break;
|
|
48018
|
+
}
|
|
48019
|
+
default: {
|
|
48020
|
+
return false;
|
|
48021
|
+
}
|
|
48195
48022
|
}
|
|
48196
48023
|
}
|
|
48197
48024
|
return true;
|
|
48198
48025
|
}
|
|
48199
48026
|
//Implied end tags
|
|
48200
48027
|
generateImpliedEndTags() {
|
|
48201
|
-
while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
|
|
48028
|
+
while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
|
|
48202
48029
|
this.pop();
|
|
48203
48030
|
}
|
|
48204
48031
|
}
|
|
48205
48032
|
generateImpliedEndTagsThoroughly() {
|
|
48206
|
-
while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
48033
|
+
while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
48207
48034
|
this.pop();
|
|
48208
48035
|
}
|
|
48209
48036
|
}
|
|
48210
48037
|
generateImpliedEndTagsWithExclusion(exclusionId) {
|
|
48211
|
-
while (this.currentTagId !==
|
|
48038
|
+
while (this.currentTagId !== undefined &&
|
|
48039
|
+
this.currentTagId !== exclusionId &&
|
|
48040
|
+
IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
48212
48041
|
this.pop();
|
|
48213
48042
|
}
|
|
48214
48043
|
}
|
|
48215
48044
|
}
|
|
48216
|
-
|
|
48045
|
+
|
|
48217
48046
|
;// ./node_modules/parse5/dist/parser/formatting-element-list.js
|
|
48218
48047
|
//Const
|
|
48219
48048
|
const NOAH_ARK_CAPACITY = 3;
|
|
@@ -48221,7 +48050,7 @@ var EntryType;
|
|
|
48221
48050
|
(function (EntryType) {
|
|
48222
48051
|
EntryType[EntryType["Marker"] = 0] = "Marker";
|
|
48223
48052
|
EntryType[EntryType["Element"] = 1] = "Element";
|
|
48224
|
-
})(EntryType
|
|
48053
|
+
})(EntryType || (EntryType = {}));
|
|
48225
48054
|
const MARKER = { type: EntryType.Marker };
|
|
48226
48055
|
//List of formatting elements
|
|
48227
48056
|
class FormattingElementList {
|
|
@@ -48298,7 +48127,7 @@ class FormattingElementList {
|
|
|
48298
48127
|
}
|
|
48299
48128
|
removeEntry(entry) {
|
|
48300
48129
|
const entryIndex = this.entries.indexOf(entry);
|
|
48301
|
-
if (entryIndex
|
|
48130
|
+
if (entryIndex !== -1) {
|
|
48302
48131
|
this.entries.splice(entryIndex, 1);
|
|
48303
48132
|
}
|
|
48304
48133
|
}
|
|
@@ -48309,11 +48138,11 @@ class FormattingElementList {
|
|
|
48309
48138
|
*/
|
|
48310
48139
|
clearToLastMarker() {
|
|
48311
48140
|
const markerIdx = this.entries.indexOf(MARKER);
|
|
48312
|
-
if (markerIdx
|
|
48313
|
-
this.entries.
|
|
48141
|
+
if (markerIdx === -1) {
|
|
48142
|
+
this.entries.length = 0;
|
|
48314
48143
|
}
|
|
48315
48144
|
else {
|
|
48316
|
-
this.entries.
|
|
48145
|
+
this.entries.splice(0, markerIdx + 1);
|
|
48317
48146
|
}
|
|
48318
48147
|
}
|
|
48319
48148
|
//Search
|
|
@@ -48325,16 +48154,9 @@ class FormattingElementList {
|
|
|
48325
48154
|
return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);
|
|
48326
48155
|
}
|
|
48327
48156
|
}
|
|
48328
|
-
|
|
48157
|
+
|
|
48329
48158
|
;// ./node_modules/parse5/dist/tree-adapters/default.js
|
|
48330
48159
|
|
|
48331
|
-
function createTextNode(value) {
|
|
48332
|
-
return {
|
|
48333
|
-
nodeName: '#text',
|
|
48334
|
-
value,
|
|
48335
|
-
parentNode: null,
|
|
48336
|
-
};
|
|
48337
|
-
}
|
|
48338
48160
|
const defaultTreeAdapter = {
|
|
48339
48161
|
//Node construction
|
|
48340
48162
|
createDocument() {
|
|
@@ -48367,6 +48189,13 @@ const defaultTreeAdapter = {
|
|
|
48367
48189
|
parentNode: null,
|
|
48368
48190
|
};
|
|
48369
48191
|
},
|
|
48192
|
+
createTextNode(value) {
|
|
48193
|
+
return {
|
|
48194
|
+
nodeName: '#text',
|
|
48195
|
+
value,
|
|
48196
|
+
parentNode: null,
|
|
48197
|
+
};
|
|
48198
|
+
},
|
|
48370
48199
|
//Tree mutation
|
|
48371
48200
|
appendChild(parentNode, newNode) {
|
|
48372
48201
|
parentNode.childNodes.push(newNode);
|
|
@@ -48422,7 +48251,7 @@ const defaultTreeAdapter = {
|
|
|
48422
48251
|
return;
|
|
48423
48252
|
}
|
|
48424
48253
|
}
|
|
48425
|
-
defaultTreeAdapter.appendChild(parentNode, createTextNode(text));
|
|
48254
|
+
defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));
|
|
48426
48255
|
},
|
|
48427
48256
|
insertTextBefore(parentNode, text, referenceNode) {
|
|
48428
48257
|
const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];
|
|
@@ -48430,7 +48259,7 @@ const defaultTreeAdapter = {
|
|
|
48430
48259
|
prevNode.value += text;
|
|
48431
48260
|
}
|
|
48432
48261
|
else {
|
|
48433
|
-
defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);
|
|
48262
|
+
defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);
|
|
48434
48263
|
}
|
|
48435
48264
|
},
|
|
48436
48265
|
adoptAttributes(recipient, attrs) {
|
|
@@ -48500,7 +48329,7 @@ const defaultTreeAdapter = {
|
|
|
48500
48329
|
node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };
|
|
48501
48330
|
},
|
|
48502
48331
|
};
|
|
48503
|
-
|
|
48332
|
+
|
|
48504
48333
|
;// ./node_modules/parse5/dist/common/doctype.js
|
|
48505
48334
|
|
|
48506
48335
|
//Const
|
|
@@ -48616,7 +48445,7 @@ function getDocumentMode(token) {
|
|
|
48616
48445
|
}
|
|
48617
48446
|
return DOCUMENT_MODE.NO_QUIRKS;
|
|
48618
48447
|
}
|
|
48619
|
-
|
|
48448
|
+
|
|
48620
48449
|
;// ./node_modules/parse5/dist/common/foreign-content.js
|
|
48621
48450
|
|
|
48622
48451
|
//MIME types
|
|
@@ -48695,7 +48524,6 @@ const XML_ATTRS_ADJUSTMENT_MAP = new Map([
|
|
|
48695
48524
|
['xlink:show', { prefix: 'xlink', name: 'show', namespace: html_NS.XLINK }],
|
|
48696
48525
|
['xlink:title', { prefix: 'xlink', name: 'title', namespace: html_NS.XLINK }],
|
|
48697
48526
|
['xlink:type', { prefix: 'xlink', name: 'type', namespace: html_NS.XLINK }],
|
|
48698
|
-
['xml:base', { prefix: 'xml', name: 'base', namespace: html_NS.XML }],
|
|
48699
48527
|
['xml:lang', { prefix: 'xml', name: 'lang', namespace: html_NS.XML }],
|
|
48700
48528
|
['xml:space', { prefix: 'xml', name: 'space', namespace: html_NS.XML }],
|
|
48701
48529
|
['xmlns', { prefix: '', name: 'xmlns', namespace: html_NS.XMLNS }],
|
|
@@ -48847,7 +48675,7 @@ function isIntegrationPoint(tn, ns, attrs, foreignNS) {
|
|
|
48847
48675
|
return (((!foreignNS || foreignNS === html_NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||
|
|
48848
48676
|
((!foreignNS || foreignNS === html_NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));
|
|
48849
48677
|
}
|
|
48850
|
-
|
|
48678
|
+
|
|
48851
48679
|
;// ./node_modules/parse5/dist/parser/index.js
|
|
48852
48680
|
|
|
48853
48681
|
|
|
@@ -48908,26 +48736,41 @@ const defaultParserOptions = {
|
|
|
48908
48736
|
};
|
|
48909
48737
|
//Parser
|
|
48910
48738
|
class Parser {
|
|
48911
|
-
constructor(options, document,
|
|
48739
|
+
constructor(options, document,
|
|
48740
|
+
/** @internal */
|
|
48741
|
+
fragmentContext = null,
|
|
48742
|
+
/** @internal */
|
|
48743
|
+
scriptHandler = null) {
|
|
48912
48744
|
this.fragmentContext = fragmentContext;
|
|
48913
48745
|
this.scriptHandler = scriptHandler;
|
|
48914
48746
|
this.currentToken = null;
|
|
48915
48747
|
this.stopped = false;
|
|
48748
|
+
/** @internal */
|
|
48916
48749
|
this.insertionMode = InsertionMode.INITIAL;
|
|
48750
|
+
/** @internal */
|
|
48917
48751
|
this.originalInsertionMode = InsertionMode.INITIAL;
|
|
48752
|
+
/** @internal */
|
|
48918
48753
|
this.headElement = null;
|
|
48754
|
+
/** @internal */
|
|
48919
48755
|
this.formElement = null;
|
|
48920
48756
|
/** Indicates that the current node is not an element in the HTML namespace */
|
|
48921
48757
|
this.currentNotInHTML = false;
|
|
48922
48758
|
/**
|
|
48923
48759
|
* The template insertion mode stack is maintained from the left.
|
|
48924
48760
|
* Ie. the topmost element will always have index 0.
|
|
48761
|
+
*
|
|
48762
|
+
* @internal
|
|
48925
48763
|
*/
|
|
48926
48764
|
this.tmplInsertionModeStack = [];
|
|
48765
|
+
/** @internal */
|
|
48927
48766
|
this.pendingCharacterTokens = [];
|
|
48767
|
+
/** @internal */
|
|
48928
48768
|
this.hasNonWhitespacePendingCharacterToken = false;
|
|
48769
|
+
/** @internal */
|
|
48929
48770
|
this.framesetOk = true;
|
|
48771
|
+
/** @internal */
|
|
48930
48772
|
this.skipNextNewLine = false;
|
|
48773
|
+
/** @internal */
|
|
48931
48774
|
this.fosterParentingEnabled = false;
|
|
48932
48775
|
this.options = {
|
|
48933
48776
|
...defaultParserOptions,
|
|
@@ -48981,6 +48824,7 @@ class Parser {
|
|
|
48981
48824
|
return fragment;
|
|
48982
48825
|
}
|
|
48983
48826
|
//Errors
|
|
48827
|
+
/** @internal */
|
|
48984
48828
|
_err(token, code, beforeToken) {
|
|
48985
48829
|
var _a;
|
|
48986
48830
|
if (!this.onParseError)
|
|
@@ -48998,12 +48842,14 @@ class Parser {
|
|
|
48998
48842
|
this.onParseError(err);
|
|
48999
48843
|
}
|
|
49000
48844
|
//Stack events
|
|
48845
|
+
/** @internal */
|
|
49001
48846
|
onItemPush(node, tid, isTop) {
|
|
49002
48847
|
var _a, _b;
|
|
49003
48848
|
(_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);
|
|
49004
48849
|
if (isTop && this.openElements.stackTop > 0)
|
|
49005
48850
|
this._setContextModes(node, tid);
|
|
49006
48851
|
}
|
|
48852
|
+
/** @internal */
|
|
49007
48853
|
onItemPop(node, isTop) {
|
|
49008
48854
|
var _a, _b;
|
|
49009
48855
|
if (this.options.sourceCodeLocationInfo) {
|
|
@@ -49024,10 +48870,12 @@ class Parser {
|
|
|
49024
48870
|
}
|
|
49025
48871
|
}
|
|
49026
48872
|
_setContextModes(current, tid) {
|
|
49027
|
-
const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html_NS.HTML;
|
|
48873
|
+
const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === html_NS.HTML);
|
|
49028
48874
|
this.currentNotInHTML = !isHTML;
|
|
49029
|
-
this.tokenizer.inForeignNode =
|
|
48875
|
+
this.tokenizer.inForeignNode =
|
|
48876
|
+
!isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);
|
|
49030
48877
|
}
|
|
48878
|
+
/** @protected */
|
|
49031
48879
|
_switchToTextParsing(currentToken, nextTokenizerState) {
|
|
49032
48880
|
this._insertElement(currentToken, html_NS.HTML);
|
|
49033
48881
|
this.tokenizer.state = nextTokenizerState;
|
|
@@ -49040,11 +48888,13 @@ class Parser {
|
|
|
49040
48888
|
this.tokenizer.state = TokenizerMode.PLAINTEXT;
|
|
49041
48889
|
}
|
|
49042
48890
|
//Fragment parsing
|
|
48891
|
+
/** @protected */
|
|
49043
48892
|
_getAdjustedCurrentElement() {
|
|
49044
48893
|
return this.openElements.stackTop === 0 && this.fragmentContext
|
|
49045
48894
|
? this.fragmentContext
|
|
49046
48895
|
: this.openElements.current;
|
|
49047
48896
|
}
|
|
48897
|
+
/** @protected */
|
|
49048
48898
|
_findFormInFragmentContext() {
|
|
49049
48899
|
let node = this.fragmentContext;
|
|
49050
48900
|
while (node) {
|
|
@@ -49087,6 +48937,7 @@ class Parser {
|
|
|
49087
48937
|
}
|
|
49088
48938
|
}
|
|
49089
48939
|
//Tree mutation
|
|
48940
|
+
/** @protected */
|
|
49090
48941
|
_setDocumentType(token) {
|
|
49091
48942
|
const name = token.name || '';
|
|
49092
48943
|
const publicId = token.publicId || '';
|
|
@@ -49100,6 +48951,7 @@ class Parser {
|
|
|
49100
48951
|
}
|
|
49101
48952
|
}
|
|
49102
48953
|
}
|
|
48954
|
+
/** @protected */
|
|
49103
48955
|
_attachElementToTree(element, location) {
|
|
49104
48956
|
if (this.options.sourceCodeLocationInfo) {
|
|
49105
48957
|
const loc = location && {
|
|
@@ -49113,23 +48965,31 @@ class Parser {
|
|
|
49113
48965
|
}
|
|
49114
48966
|
else {
|
|
49115
48967
|
const parent = this.openElements.currentTmplContentOrNode;
|
|
49116
|
-
this.treeAdapter.appendChild(parent, element);
|
|
48968
|
+
this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);
|
|
49117
48969
|
}
|
|
49118
48970
|
}
|
|
48971
|
+
/**
|
|
48972
|
+
* For self-closing tags. Add an element to the tree, but skip adding it
|
|
48973
|
+
* to the stack.
|
|
48974
|
+
*/
|
|
48975
|
+
/** @protected */
|
|
49119
48976
|
_appendElement(token, namespaceURI) {
|
|
49120
48977
|
const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
|
|
49121
48978
|
this._attachElementToTree(element, token.location);
|
|
49122
48979
|
}
|
|
48980
|
+
/** @protected */
|
|
49123
48981
|
_insertElement(token, namespaceURI) {
|
|
49124
48982
|
const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
|
|
49125
48983
|
this._attachElementToTree(element, token.location);
|
|
49126
48984
|
this.openElements.push(element, token.tagID);
|
|
49127
48985
|
}
|
|
48986
|
+
/** @protected */
|
|
49128
48987
|
_insertFakeElement(tagName, tagID) {
|
|
49129
48988
|
const element = this.treeAdapter.createElement(tagName, html_NS.HTML, []);
|
|
49130
48989
|
this._attachElementToTree(element, null);
|
|
49131
48990
|
this.openElements.push(element, tagID);
|
|
49132
48991
|
}
|
|
48992
|
+
/** @protected */
|
|
49133
48993
|
_insertTemplate(token) {
|
|
49134
48994
|
const tmpl = this.treeAdapter.createElement(token.tagName, html_NS.HTML, token.attrs);
|
|
49135
48995
|
const content = this.treeAdapter.createDocumentFragment();
|
|
@@ -49139,6 +48999,7 @@ class Parser {
|
|
|
49139
48999
|
if (this.options.sourceCodeLocationInfo)
|
|
49140
49000
|
this.treeAdapter.setNodeSourceCodeLocation(content, null);
|
|
49141
49001
|
}
|
|
49002
|
+
/** @protected */
|
|
49142
49003
|
_insertFakeRootElement() {
|
|
49143
49004
|
const element = this.treeAdapter.createElement(TAG_NAMES.HTML, html_NS.HTML, []);
|
|
49144
49005
|
if (this.options.sourceCodeLocationInfo)
|
|
@@ -49146,6 +49007,7 @@ class Parser {
|
|
|
49146
49007
|
this.treeAdapter.appendChild(this.openElements.current, element);
|
|
49147
49008
|
this.openElements.push(element, TAG_ID.HTML);
|
|
49148
49009
|
}
|
|
49010
|
+
/** @protected */
|
|
49149
49011
|
_appendCommentNode(token, parent) {
|
|
49150
49012
|
const commentNode = this.treeAdapter.createCommentNode(token.data);
|
|
49151
49013
|
this.treeAdapter.appendChild(parent, commentNode);
|
|
@@ -49153,6 +49015,7 @@ class Parser {
|
|
|
49153
49015
|
this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);
|
|
49154
49016
|
}
|
|
49155
49017
|
}
|
|
49018
|
+
/** @protected */
|
|
49156
49019
|
_insertCharacters(token) {
|
|
49157
49020
|
let parent;
|
|
49158
49021
|
let beforeElement;
|
|
@@ -49184,12 +49047,14 @@ class Parser {
|
|
|
49184
49047
|
this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);
|
|
49185
49048
|
}
|
|
49186
49049
|
}
|
|
49050
|
+
/** @protected */
|
|
49187
49051
|
_adoptNodes(donor, recipient) {
|
|
49188
49052
|
for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {
|
|
49189
49053
|
this.treeAdapter.detachNode(child);
|
|
49190
49054
|
this.treeAdapter.appendChild(recipient, child);
|
|
49191
49055
|
}
|
|
49192
49056
|
}
|
|
49057
|
+
/** @protected */
|
|
49193
49058
|
_setEndLocation(element, closingToken) {
|
|
49194
49059
|
if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {
|
|
49195
49060
|
const ctLoc = closingToken.location;
|
|
@@ -49237,8 +49102,10 @@ class Parser {
|
|
|
49237
49102
|
// If it _is_ an integration point, then we might have to check that it is not an HTML
|
|
49238
49103
|
// integration point.
|
|
49239
49104
|
((token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) &&
|
|
49105
|
+
currentTagId !== undefined &&
|
|
49240
49106
|
!this._isIntegrationPoint(currentTagId, current, html_NS.HTML)));
|
|
49241
49107
|
}
|
|
49108
|
+
/** @protected */
|
|
49242
49109
|
_processToken(token) {
|
|
49243
49110
|
switch (token.type) {
|
|
49244
49111
|
case TokenType.CHARACTER: {
|
|
@@ -49276,17 +49143,19 @@ class Parser {
|
|
|
49276
49143
|
}
|
|
49277
49144
|
}
|
|
49278
49145
|
//Integration points
|
|
49146
|
+
/** @protected */
|
|
49279
49147
|
_isIntegrationPoint(tid, element, foreignNS) {
|
|
49280
49148
|
const ns = this.treeAdapter.getNamespaceURI(element);
|
|
49281
49149
|
const attrs = this.treeAdapter.getAttrList(element);
|
|
49282
49150
|
return isIntegrationPoint(tid, ns, attrs, foreignNS);
|
|
49283
49151
|
}
|
|
49284
49152
|
//Active formatting elements reconstruction
|
|
49153
|
+
/** @protected */
|
|
49285
49154
|
_reconstructActiveFormattingElements() {
|
|
49286
49155
|
const listLength = this.activeFormattingElements.entries.length;
|
|
49287
49156
|
if (listLength) {
|
|
49288
49157
|
const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));
|
|
49289
|
-
const unopenIdx = endIndex
|
|
49158
|
+
const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;
|
|
49290
49159
|
for (let i = unopenIdx; i >= 0; i--) {
|
|
49291
49160
|
const entry = this.activeFormattingElements.entries[i];
|
|
49292
49161
|
this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));
|
|
@@ -49295,17 +49164,20 @@ class Parser {
|
|
|
49295
49164
|
}
|
|
49296
49165
|
}
|
|
49297
49166
|
//Close elements
|
|
49167
|
+
/** @protected */
|
|
49298
49168
|
_closeTableCell() {
|
|
49299
49169
|
this.openElements.generateImpliedEndTags();
|
|
49300
49170
|
this.openElements.popUntilTableCellPopped();
|
|
49301
49171
|
this.activeFormattingElements.clearToLastMarker();
|
|
49302
49172
|
this.insertionMode = InsertionMode.IN_ROW;
|
|
49303
49173
|
}
|
|
49174
|
+
/** @protected */
|
|
49304
49175
|
_closePElement() {
|
|
49305
49176
|
this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P);
|
|
49306
49177
|
this.openElements.popUntilTagNamePopped(TAG_ID.P);
|
|
49307
49178
|
}
|
|
49308
49179
|
//Insertion modes
|
|
49180
|
+
/** @protected */
|
|
49309
49181
|
_resetInsertionMode() {
|
|
49310
49182
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
49311
49183
|
//Insertion mode reset map
|
|
@@ -49371,6 +49243,7 @@ class Parser {
|
|
|
49371
49243
|
}
|
|
49372
49244
|
this.insertionMode = InsertionMode.IN_BODY;
|
|
49373
49245
|
}
|
|
49246
|
+
/** @protected */
|
|
49374
49247
|
_resetInsertionModeForSelect(selectIdx) {
|
|
49375
49248
|
if (selectIdx > 0) {
|
|
49376
49249
|
for (let i = selectIdx - 1; i > 0; i--) {
|
|
@@ -49387,12 +49260,17 @@ class Parser {
|
|
|
49387
49260
|
this.insertionMode = InsertionMode.IN_SELECT;
|
|
49388
49261
|
}
|
|
49389
49262
|
//Foster parenting
|
|
49263
|
+
/** @protected */
|
|
49390
49264
|
_isElementCausesFosterParenting(tn) {
|
|
49391
49265
|
return TABLE_STRUCTURE_TAGS.has(tn);
|
|
49392
49266
|
}
|
|
49267
|
+
/** @protected */
|
|
49393
49268
|
_shouldFosterParentOnInsertion() {
|
|
49394
|
-
return this.fosterParentingEnabled &&
|
|
49269
|
+
return (this.fosterParentingEnabled &&
|
|
49270
|
+
this.openElements.currentTagId !== undefined &&
|
|
49271
|
+
this._isElementCausesFosterParenting(this.openElements.currentTagId));
|
|
49395
49272
|
}
|
|
49273
|
+
/** @protected */
|
|
49396
49274
|
_findFosterParentingLocation() {
|
|
49397
49275
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
49398
49276
|
const openElement = this.openElements.items[i];
|
|
@@ -49416,6 +49294,7 @@ class Parser {
|
|
|
49416
49294
|
}
|
|
49417
49295
|
return { parent: this.openElements.items[0], beforeElement: null };
|
|
49418
49296
|
}
|
|
49297
|
+
/** @protected */
|
|
49419
49298
|
_fosterParentElement(element) {
|
|
49420
49299
|
const location = this._findFosterParentingLocation();
|
|
49421
49300
|
if (location.beforeElement) {
|
|
@@ -49426,10 +49305,12 @@ class Parser {
|
|
|
49426
49305
|
}
|
|
49427
49306
|
}
|
|
49428
49307
|
//Special elements
|
|
49308
|
+
/** @protected */
|
|
49429
49309
|
_isSpecialElement(element, id) {
|
|
49430
49310
|
const ns = this.treeAdapter.getNamespaceURI(element);
|
|
49431
49311
|
return SPECIAL_ELEMENTS[ns].has(id);
|
|
49432
49312
|
}
|
|
49313
|
+
/** @internal */
|
|
49433
49314
|
onCharacter(token) {
|
|
49434
49315
|
this.skipNextNewLine = false;
|
|
49435
49316
|
if (this.tokenizer.inForeignNode) {
|
|
@@ -49500,6 +49381,7 @@ class Parser {
|
|
|
49500
49381
|
// Do nothing
|
|
49501
49382
|
}
|
|
49502
49383
|
}
|
|
49384
|
+
/** @internal */
|
|
49503
49385
|
onNullCharacter(token) {
|
|
49504
49386
|
this.skipNextNewLine = false;
|
|
49505
49387
|
if (this.tokenizer.inForeignNode) {
|
|
@@ -49557,6 +49439,7 @@ class Parser {
|
|
|
49557
49439
|
// Do nothing
|
|
49558
49440
|
}
|
|
49559
49441
|
}
|
|
49442
|
+
/** @internal */
|
|
49560
49443
|
onComment(token) {
|
|
49561
49444
|
this.skipNextNewLine = false;
|
|
49562
49445
|
if (this.currentNotInHTML) {
|
|
@@ -49602,6 +49485,7 @@ class Parser {
|
|
|
49602
49485
|
// Do nothing
|
|
49603
49486
|
}
|
|
49604
49487
|
}
|
|
49488
|
+
/** @internal */
|
|
49605
49489
|
onDoctype(token) {
|
|
49606
49490
|
this.skipNextNewLine = false;
|
|
49607
49491
|
switch (this.insertionMode) {
|
|
@@ -49624,6 +49508,7 @@ class Parser {
|
|
|
49624
49508
|
// Do nothing
|
|
49625
49509
|
}
|
|
49626
49510
|
}
|
|
49511
|
+
/** @internal */
|
|
49627
49512
|
onStartTag(token) {
|
|
49628
49513
|
this.skipNextNewLine = false;
|
|
49629
49514
|
this.currentToken = token;
|
|
@@ -49641,6 +49526,7 @@ class Parser {
|
|
|
49641
49526
|
* for nested calls.
|
|
49642
49527
|
*
|
|
49643
49528
|
* @param token The token to process.
|
|
49529
|
+
* @protected
|
|
49644
49530
|
*/
|
|
49645
49531
|
_processStartTag(token) {
|
|
49646
49532
|
if (this.shouldProcessStartTagTokenInForeignContent(token)) {
|
|
@@ -49650,6 +49536,7 @@ class Parser {
|
|
|
49650
49536
|
this._startTagOutsideForeignContent(token);
|
|
49651
49537
|
}
|
|
49652
49538
|
}
|
|
49539
|
+
/** @protected */
|
|
49653
49540
|
_startTagOutsideForeignContent(token) {
|
|
49654
49541
|
switch (this.insertionMode) {
|
|
49655
49542
|
case InsertionMode.INITIAL: {
|
|
@@ -49744,6 +49631,7 @@ class Parser {
|
|
|
49744
49631
|
// Do nothing
|
|
49745
49632
|
}
|
|
49746
49633
|
}
|
|
49634
|
+
/** @internal */
|
|
49747
49635
|
onEndTag(token) {
|
|
49748
49636
|
this.skipNextNewLine = false;
|
|
49749
49637
|
this.currentToken = token;
|
|
@@ -49754,6 +49642,7 @@ class Parser {
|
|
|
49754
49642
|
this._endTagOutsideForeignContent(token);
|
|
49755
49643
|
}
|
|
49756
49644
|
}
|
|
49645
|
+
/** @protected */
|
|
49757
49646
|
_endTagOutsideForeignContent(token) {
|
|
49758
49647
|
switch (this.insertionMode) {
|
|
49759
49648
|
case InsertionMode.INITIAL: {
|
|
@@ -49848,6 +49737,7 @@ class Parser {
|
|
|
49848
49737
|
// Do nothing
|
|
49849
49738
|
}
|
|
49850
49739
|
}
|
|
49740
|
+
/** @internal */
|
|
49851
49741
|
onEof(token) {
|
|
49852
49742
|
switch (this.insertionMode) {
|
|
49853
49743
|
case InsertionMode.INITIAL: {
|
|
@@ -49910,6 +49800,7 @@ class Parser {
|
|
|
49910
49800
|
// Do nothing
|
|
49911
49801
|
}
|
|
49912
49802
|
}
|
|
49803
|
+
/** @internal */
|
|
49913
49804
|
onWhitespaceCharacter(token) {
|
|
49914
49805
|
if (this.skipNextNewLine) {
|
|
49915
49806
|
this.skipNextNewLine = false;
|
|
@@ -49996,7 +49887,7 @@ function aaObtainFurthestBlock(p, formattingElementEntry) {
|
|
|
49996
49887
|
}
|
|
49997
49888
|
}
|
|
49998
49889
|
if (!furthestBlock) {
|
|
49999
|
-
p.openElements.shortenToLength(idx
|
|
49890
|
+
p.openElements.shortenToLength(Math.max(idx, 0));
|
|
50000
49891
|
p.activeFormattingElements.removeEntry(formattingElementEntry);
|
|
50001
49892
|
}
|
|
50002
49893
|
return furthestBlock;
|
|
@@ -50482,7 +50373,7 @@ function numberedHeaderStartTagInBody(p, token) {
|
|
|
50482
50373
|
if (p.openElements.hasInButtonScope(TAG_ID.P)) {
|
|
50483
50374
|
p._closePElement();
|
|
50484
50375
|
}
|
|
50485
|
-
if (
|
|
50376
|
+
if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {
|
|
50486
50377
|
p.openElements.pop();
|
|
50487
50378
|
}
|
|
50488
50379
|
p._insertElement(token, html_NS.HTML);
|
|
@@ -50644,9 +50535,9 @@ function iframeStartTagInBody(p, token) {
|
|
|
50644
50535
|
p.framesetOk = false;
|
|
50645
50536
|
p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
|
|
50646
50537
|
}
|
|
50647
|
-
//NOTE: here we assume that we always act as
|
|
50648
|
-
//<noembed> as rawtext.
|
|
50649
|
-
function
|
|
50538
|
+
//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse
|
|
50539
|
+
//<noembed>/<noframes> as rawtext.
|
|
50540
|
+
function rawTextStartTagInBody(p, token) {
|
|
50650
50541
|
p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
|
|
50651
50542
|
}
|
|
50652
50543
|
function selectStartTagInBody(p, token) {
|
|
@@ -50758,6 +50649,7 @@ function startTagInBody(p, token) {
|
|
|
50758
50649
|
case TAG_ID.DETAILS:
|
|
50759
50650
|
case TAG_ID.ADDRESS:
|
|
50760
50651
|
case TAG_ID.ARTICLE:
|
|
50652
|
+
case TAG_ID.SEARCH:
|
|
50761
50653
|
case TAG_ID.SECTION:
|
|
50762
50654
|
case TAG_ID.SUMMARY:
|
|
50763
50655
|
case TAG_ID.FIELDSET:
|
|
@@ -50881,8 +50773,9 @@ function startTagInBody(p, token) {
|
|
|
50881
50773
|
optgroupStartTagInBody(p, token);
|
|
50882
50774
|
break;
|
|
50883
50775
|
}
|
|
50884
|
-
case TAG_ID.NOEMBED:
|
|
50885
|
-
|
|
50776
|
+
case TAG_ID.NOEMBED:
|
|
50777
|
+
case TAG_ID.NOFRAMES: {
|
|
50778
|
+
rawTextStartTagInBody(p, token);
|
|
50886
50779
|
break;
|
|
50887
50780
|
}
|
|
50888
50781
|
case TAG_ID.FRAMESET: {
|
|
@@ -50895,7 +50788,7 @@ function startTagInBody(p, token) {
|
|
|
50895
50788
|
}
|
|
50896
50789
|
case TAG_ID.NOSCRIPT: {
|
|
50897
50790
|
if (p.options.scriptingEnabled) {
|
|
50898
|
-
|
|
50791
|
+
rawTextStartTagInBody(p, token);
|
|
50899
50792
|
}
|
|
50900
50793
|
else {
|
|
50901
50794
|
genericStartTagInBody(p, token);
|
|
@@ -51067,6 +50960,7 @@ function endTagInBody(p, token) {
|
|
|
51067
50960
|
case TAG_ID.ADDRESS:
|
|
51068
50961
|
case TAG_ID.ARTICLE:
|
|
51069
50962
|
case TAG_ID.DETAILS:
|
|
50963
|
+
case TAG_ID.SEARCH:
|
|
51070
50964
|
case TAG_ID.SECTION:
|
|
51071
50965
|
case TAG_ID.SUMMARY:
|
|
51072
50966
|
case TAG_ID.LISTING:
|
|
@@ -51152,7 +51046,7 @@ function eofInText(p, token) {
|
|
|
51152
51046
|
// The "in table" insertion mode
|
|
51153
51047
|
//------------------------------------------------------------------
|
|
51154
51048
|
function characterInTable(p, token) {
|
|
51155
|
-
if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
|
|
51049
|
+
if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
|
|
51156
51050
|
p.pendingCharacterTokens.length = 0;
|
|
51157
51051
|
p.hasNonWhitespacePendingCharacterToken = false;
|
|
51158
51052
|
p.originalInsertionMode = p.insertionMode;
|
|
@@ -51667,6 +51561,17 @@ function startTagInSelect(p, token) {
|
|
|
51667
51561
|
p._insertElement(token, html_NS.HTML);
|
|
51668
51562
|
break;
|
|
51669
51563
|
}
|
|
51564
|
+
case TAG_ID.HR: {
|
|
51565
|
+
if (p.openElements.currentTagId === TAG_ID.OPTION) {
|
|
51566
|
+
p.openElements.pop();
|
|
51567
|
+
}
|
|
51568
|
+
if (p.openElements.currentTagId === TAG_ID.OPTGROUP) {
|
|
51569
|
+
p.openElements.pop();
|
|
51570
|
+
}
|
|
51571
|
+
p._appendElement(token, html_NS.HTML);
|
|
51572
|
+
token.ackSelfClosing = true;
|
|
51573
|
+
break;
|
|
51574
|
+
}
|
|
51670
51575
|
case TAG_ID.INPUT:
|
|
51671
51576
|
case TAG_ID.KEYGEN:
|
|
51672
51577
|
case TAG_ID.TEXTAREA:
|
|
@@ -51966,6 +51871,7 @@ function characterInForeignContent(p, token) {
|
|
|
51966
51871
|
}
|
|
51967
51872
|
function popUntilHtmlOrIntegrationPoint(p) {
|
|
51968
51873
|
while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html_NS.HTML &&
|
|
51874
|
+
p.openElements.currentTagId !== undefined &&
|
|
51969
51875
|
!p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {
|
|
51970
51876
|
p.openElements.pop();
|
|
51971
51877
|
}
|
|
@@ -52016,9 +51922,9 @@ function endTagInForeignContent(p, token) {
|
|
|
52016
51922
|
}
|
|
52017
51923
|
}
|
|
52018
51924
|
}
|
|
52019
|
-
|
|
52020
|
-
;// ./node_modules/entities/
|
|
52021
|
-
const escape_xmlReplacer = /["
|
|
51925
|
+
|
|
51926
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/escape.js
|
|
51927
|
+
const escape_xmlReplacer = /["$&'<>\u0080-\uFFFF]/g;
|
|
52022
51928
|
const xmlCodeMap = new Map([
|
|
52023
51929
|
[34, """],
|
|
52024
51930
|
[38, "&"],
|
|
@@ -52029,15 +51935,15 @@ const xmlCodeMap = new Map([
|
|
|
52029
51935
|
// For compatibility with node < 4, we wrap `codePointAt`
|
|
52030
51936
|
const escape_getCodePoint =
|
|
52031
51937
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
52032
|
-
String.prototype.codePointAt
|
|
52033
|
-
? (
|
|
51938
|
+
String.prototype.codePointAt == null
|
|
51939
|
+
? (c, index) => (c.charCodeAt(index) & 64512) === 55296
|
|
51940
|
+
? (c.charCodeAt(index) - 55296) * 1024 +
|
|
51941
|
+
c.charCodeAt(index + 1) -
|
|
51942
|
+
56320 +
|
|
51943
|
+
65536
|
|
51944
|
+
: c.charCodeAt(index)
|
|
52034
51945
|
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
52035
|
-
(
|
|
52036
|
-
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
52037
|
-
c.charCodeAt(index + 1) -
|
|
52038
|
-
0xdc00 +
|
|
52039
|
-
0x10000
|
|
52040
|
-
: c.charCodeAt(index);
|
|
51946
|
+
(input, index) => input.codePointAt(index);
|
|
52041
51947
|
/**
|
|
52042
51948
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
52043
51949
|
* documents using XML entities.
|
|
@@ -52045,25 +51951,25 @@ String.prototype.codePointAt != null
|
|
|
52045
51951
|
* If a character has no equivalent entity, a
|
|
52046
51952
|
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
52047
51953
|
*/
|
|
52048
|
-
function escape_encodeXML(
|
|
52049
|
-
let
|
|
52050
|
-
let
|
|
51954
|
+
function escape_encodeXML(input) {
|
|
51955
|
+
let returnValue = "";
|
|
51956
|
+
let lastIndex = 0;
|
|
52051
51957
|
let match;
|
|
52052
|
-
while ((match = escape_xmlReplacer.exec(
|
|
52053
|
-
const
|
|
52054
|
-
const char =
|
|
51958
|
+
while ((match = escape_xmlReplacer.exec(input)) !== null) {
|
|
51959
|
+
const { index } = match;
|
|
51960
|
+
const char = input.charCodeAt(index);
|
|
52055
51961
|
const next = xmlCodeMap.get(char);
|
|
52056
|
-
if (next
|
|
52057
|
-
|
|
52058
|
-
|
|
51962
|
+
if (next === undefined) {
|
|
51963
|
+
returnValue += `${input.substring(lastIndex, index)}&#x${escape_getCodePoint(input, index).toString(16)};`;
|
|
51964
|
+
// Increase by 1 if we have a surrogate pair
|
|
51965
|
+
lastIndex = escape_xmlReplacer.lastIndex += Number((char & 64512) === 55296);
|
|
52059
51966
|
}
|
|
52060
51967
|
else {
|
|
52061
|
-
|
|
52062
|
-
|
|
52063
|
-
lastIdx = escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
51968
|
+
returnValue += input.substring(lastIndex, index) + next;
|
|
51969
|
+
lastIndex = index + 1;
|
|
52064
51970
|
}
|
|
52065
51971
|
}
|
|
52066
|
-
return
|
|
51972
|
+
return returnValue + input.substr(lastIndex);
|
|
52067
51973
|
}
|
|
52068
51974
|
/**
|
|
52069
51975
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
@@ -52088,18 +51994,18 @@ const escape_escape = (/* unused pure expression or super */ null && (escape_enc
|
|
|
52088
51994
|
function getEscaper(regex, map) {
|
|
52089
51995
|
return function escape(data) {
|
|
52090
51996
|
let match;
|
|
52091
|
-
let
|
|
51997
|
+
let lastIndex = 0;
|
|
52092
51998
|
let result = "";
|
|
52093
51999
|
while ((match = regex.exec(data))) {
|
|
52094
|
-
if (
|
|
52095
|
-
result += data.substring(
|
|
52000
|
+
if (lastIndex !== match.index) {
|
|
52001
|
+
result += data.substring(lastIndex, match.index);
|
|
52096
52002
|
}
|
|
52097
52003
|
// We know that this character will be in the map.
|
|
52098
52004
|
result += map.get(match[0].charCodeAt(0));
|
|
52099
52005
|
// Every match will be of length 1
|
|
52100
|
-
|
|
52006
|
+
lastIndex = match.index + 1;
|
|
52101
52007
|
}
|
|
52102
|
-
return result + data.substring(
|
|
52008
|
+
return result + data.substring(lastIndex);
|
|
52103
52009
|
};
|
|
52104
52010
|
}
|
|
52105
52011
|
/**
|
|
@@ -52109,14 +52015,15 @@ function getEscaper(regex, map) {
|
|
|
52109
52015
|
*
|
|
52110
52016
|
* @param data String to escape.
|
|
52111
52017
|
*/
|
|
52112
|
-
const escape_escapeUTF8 = getEscaper(/[
|
|
52018
|
+
const escape_escapeUTF8 = /* #__PURE__ */ (/* unused pure expression or super */ null && (getEscaper(/["&'<>]/g, xmlCodeMap)));
|
|
52113
52019
|
/**
|
|
52114
52020
|
* Encodes all characters that have to be escaped in HTML attributes,
|
|
52115
52021
|
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
52116
52022
|
*
|
|
52117
52023
|
* @param data String to escape.
|
|
52118
52024
|
*/
|
|
52119
|
-
const escape_escapeAttribute =
|
|
52025
|
+
const escape_escapeAttribute =
|
|
52026
|
+
/* #__PURE__ */ getEscaper(/["&\u00A0]/g, new Map([
|
|
52120
52027
|
[34, """],
|
|
52121
52028
|
[38, "&"],
|
|
52122
52029
|
[160, " "],
|
|
@@ -52127,7 +52034,7 @@ const escape_escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
|
|
|
52127
52034
|
*
|
|
52128
52035
|
* @param data String to escape.
|
|
52129
52036
|
*/
|
|
52130
|
-
const escape_escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
|
|
52037
|
+
const escape_escapeText = /* #__PURE__ */ getEscaper(/[&<>\u00A0]/g, new Map([
|
|
52131
52038
|
[38, "&"],
|
|
52132
52039
|
[60, "<"],
|
|
52133
52040
|
[62, ">"],
|
|
@@ -52205,7 +52112,7 @@ function serializer_serialize(node, options) {
|
|
|
52205
52112
|
* const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');
|
|
52206
52113
|
*
|
|
52207
52114
|
* // Serializes the <div> element.
|
|
52208
|
-
* const
|
|
52115
|
+
* const str = parse5.serializeOuter(document.childNodes[0]);
|
|
52209
52116
|
*
|
|
52210
52117
|
* console.log(str); //> '<div>Hello, <b>world</b>!</div>'
|
|
52211
52118
|
* ```
|
|
@@ -52257,10 +52164,7 @@ function serializeAttributes(node, { treeAdapter }) {
|
|
|
52257
52164
|
let html = '';
|
|
52258
52165
|
for (const attr of treeAdapter.getAttrList(node)) {
|
|
52259
52166
|
html += ' ';
|
|
52260
|
-
if (
|
|
52261
|
-
html += attr.name;
|
|
52262
|
-
}
|
|
52263
|
-
else
|
|
52167
|
+
if (attr.namespace) {
|
|
52264
52168
|
switch (attr.namespace) {
|
|
52265
52169
|
case NS.XML: {
|
|
52266
52170
|
html += `xml:${attr.name}`;
|
|
@@ -52281,6 +52185,10 @@ function serializeAttributes(node, { treeAdapter }) {
|
|
|
52281
52185
|
html += `${attr.prefix}:${attr.name}`;
|
|
52282
52186
|
}
|
|
52283
52187
|
}
|
|
52188
|
+
}
|
|
52189
|
+
else {
|
|
52190
|
+
html += attr.name;
|
|
52191
|
+
}
|
|
52284
52192
|
html += `="${escapeAttribute(attr.value)}"`;
|
|
52285
52193
|
}
|
|
52286
52194
|
return html;
|
|
@@ -52302,7 +52210,7 @@ function serializeCommentNode(node, { treeAdapter }) {
|
|
|
52302
52210
|
function serializeDocumentTypeNode(node, { treeAdapter }) {
|
|
52303
52211
|
return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;
|
|
52304
52212
|
}
|
|
52305
|
-
|
|
52213
|
+
|
|
52306
52214
|
;// ./node_modules/parse5/dist/index.js
|
|
52307
52215
|
|
|
52308
52216
|
|
|
@@ -52311,9 +52219,7 @@ function serializeDocumentTypeNode(node, { treeAdapter }) {
|
|
|
52311
52219
|
|
|
52312
52220
|
/** @internal */
|
|
52313
52221
|
|
|
52314
|
-
/** @internal */
|
|
52315
52222
|
|
|
52316
|
-
/** @internal */
|
|
52317
52223
|
|
|
52318
52224
|
/** @internal */
|
|
52319
52225
|
|
|
@@ -52348,7 +52254,7 @@ function parseFragment(fragmentContext, html, options) {
|
|
|
52348
52254
|
parser.tokenizer.write(html, true);
|
|
52349
52255
|
return parser.getFragment();
|
|
52350
52256
|
}
|
|
52351
|
-
|
|
52257
|
+
|
|
52352
52258
|
;// ./node_modules/hast-util-from-html/lib/errors.js
|
|
52353
52259
|
/**
|
|
52354
52260
|
* @typedef ErrorInfo
|
|
@@ -70513,9 +70419,416 @@ const mdast = (text, opts = {}) => {
|
|
|
70513
70419
|
};
|
|
70514
70420
|
/* harmony default export */ const lib_mdast = (mdast);
|
|
70515
70421
|
|
|
70422
|
+
;// ./lib/utils/mdxish/protect-code-blocks.ts
|
|
70423
|
+
/**
|
|
70424
|
+
* Replaces code blocks and inline code with placeholders to protect them from preprocessing.
|
|
70425
|
+
*
|
|
70426
|
+
* @param content - The markdown content to process
|
|
70427
|
+
* @returns Object containing protected content and arrays of original code blocks
|
|
70428
|
+
* @example
|
|
70429
|
+
* ```typescript
|
|
70430
|
+
* const input = 'Text with `inline code` and ```fenced block```';
|
|
70431
|
+
* protectCodeBlocks(input)
|
|
70432
|
+
* // Returns: {
|
|
70433
|
+
* // protectedCode: {
|
|
70434
|
+
* // codeBlocks: ['```fenced block```'],
|
|
70435
|
+
* // inlineCode: ['`inline code`']
|
|
70436
|
+
* // },
|
|
70437
|
+
* // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
|
|
70438
|
+
* // }
|
|
70439
|
+
* ```
|
|
70440
|
+
*/
|
|
70441
|
+
function protectCodeBlocks(content) {
|
|
70442
|
+
const codeBlocks = [];
|
|
70443
|
+
const inlineCode = [];
|
|
70444
|
+
let protectedContent = '';
|
|
70445
|
+
let remaining = content;
|
|
70446
|
+
let codeBlockStart = remaining.indexOf('```');
|
|
70447
|
+
while (codeBlockStart !== -1) {
|
|
70448
|
+
protectedContent += remaining.slice(0, codeBlockStart);
|
|
70449
|
+
remaining = remaining.slice(codeBlockStart);
|
|
70450
|
+
const codeBlockEnd = remaining.indexOf('```', 3);
|
|
70451
|
+
if (codeBlockEnd === -1) {
|
|
70452
|
+
break;
|
|
70453
|
+
}
|
|
70454
|
+
const match = remaining.slice(0, codeBlockEnd + 3);
|
|
70455
|
+
const index = codeBlocks.length;
|
|
70456
|
+
codeBlocks.push(match);
|
|
70457
|
+
protectedContent += `___CODE_BLOCK_${index}___`;
|
|
70458
|
+
remaining = remaining.slice(codeBlockEnd + 3);
|
|
70459
|
+
codeBlockStart = remaining.indexOf('```');
|
|
70460
|
+
}
|
|
70461
|
+
protectedContent += remaining;
|
|
70462
|
+
protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
|
|
70463
|
+
const index = inlineCode.length;
|
|
70464
|
+
inlineCode.push(match);
|
|
70465
|
+
return `___INLINE_CODE_${index}___`;
|
|
70466
|
+
});
|
|
70467
|
+
return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
|
|
70468
|
+
}
|
|
70469
|
+
/**
|
|
70470
|
+
* Restores inline code by replacing placeholders with original content.
|
|
70471
|
+
*
|
|
70472
|
+
* @param content - Content with inline code placeholders
|
|
70473
|
+
* @param protectedCode - The protected code arrays
|
|
70474
|
+
* @returns Content with inline code restored
|
|
70475
|
+
*/
|
|
70476
|
+
function restoreInlineCode(content, protectedCode) {
|
|
70477
|
+
return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
|
|
70478
|
+
return protectedCode.inlineCode[parseInt(idx, 10)];
|
|
70479
|
+
});
|
|
70480
|
+
}
|
|
70481
|
+
/**
|
|
70482
|
+
* Restores fenced code blocks by replacing placeholders with original content.
|
|
70483
|
+
*
|
|
70484
|
+
* @param content - Content with code block placeholders
|
|
70485
|
+
* @param protectedCode - The protected code arrays
|
|
70486
|
+
* @returns Content with code blocks restored
|
|
70487
|
+
*/
|
|
70488
|
+
function restoreFencedCodeBlocks(content, protectedCode) {
|
|
70489
|
+
return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
|
|
70490
|
+
return protectedCode.codeBlocks[parseInt(idx, 10)];
|
|
70491
|
+
});
|
|
70492
|
+
}
|
|
70493
|
+
/**
|
|
70494
|
+
* Restores all code blocks and inline code by replacing placeholders with original content.
|
|
70495
|
+
*
|
|
70496
|
+
* @param content - Content with code placeholders
|
|
70497
|
+
* @param protectedCode - The protected code arrays
|
|
70498
|
+
* @returns Content with all code blocks and inline code restored
|
|
70499
|
+
* @example
|
|
70500
|
+
* ```typescript
|
|
70501
|
+
* const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
|
|
70502
|
+
* const protectedCode = {
|
|
70503
|
+
* codeBlocks: ['```js\ncode\n```'],
|
|
70504
|
+
* inlineCode: ['`inline`']
|
|
70505
|
+
* };
|
|
70506
|
+
* restoreCodeBlocks(content, protectedCode)
|
|
70507
|
+
* // Returns: 'Text with `inline` and ```js\ncode\n```'
|
|
70508
|
+
* ```
|
|
70509
|
+
*/
|
|
70510
|
+
function restoreCodeBlocks(content, protectedCode) {
|
|
70511
|
+
let restored = restoreFencedCodeBlocks(content, protectedCode);
|
|
70512
|
+
restored = restoreInlineCode(restored, protectedCode);
|
|
70513
|
+
return restored;
|
|
70514
|
+
}
|
|
70515
|
+
|
|
70516
|
+
;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
|
|
70517
|
+
|
|
70518
|
+
// Base64 encode (Node.js + browser compatible)
|
|
70519
|
+
function base64Encode(str) {
|
|
70520
|
+
if (typeof Buffer !== 'undefined') {
|
|
70521
|
+
return Buffer.from(str, 'utf-8').toString('base64');
|
|
70522
|
+
}
|
|
70523
|
+
return btoa(unescape(encodeURIComponent(str)));
|
|
70524
|
+
}
|
|
70525
|
+
// Base64 decode (Node.js + browser compatible)
|
|
70526
|
+
function base64Decode(str) {
|
|
70527
|
+
if (typeof Buffer !== 'undefined') {
|
|
70528
|
+
return Buffer.from(str, 'base64').toString('utf-8');
|
|
70529
|
+
}
|
|
70530
|
+
return decodeURIComponent(escape(atob(str)));
|
|
70531
|
+
}
|
|
70532
|
+
function escapeHtmlAttribute(value) {
|
|
70533
|
+
return value
|
|
70534
|
+
.replace(/&/g, '&')
|
|
70535
|
+
.replace(/"/g, '"')
|
|
70536
|
+
.replace(/</g, '<')
|
|
70537
|
+
.replace(/>/g, '>')
|
|
70538
|
+
.replace(/\n/g, ' ');
|
|
70539
|
+
}
|
|
70540
|
+
// Marker prefix for JSON-serialized complex values (arrays/objects)
|
|
70541
|
+
// Using a prefix that won't conflict with regular string values
|
|
70542
|
+
const JSON_VALUE_MARKER = '__MDXISH_JSON__';
|
|
70543
|
+
// Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
|
|
70544
|
+
const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
|
|
70545
|
+
const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
|
|
70546
|
+
/**
|
|
70547
|
+
* Evaluates a JavaScript expression using context variables.
|
|
70548
|
+
*
|
|
70549
|
+
* @param expression
|
|
70550
|
+
* @param context
|
|
70551
|
+
* @returns The evaluated result
|
|
70552
|
+
* @example
|
|
70553
|
+
* ```typescript
|
|
70554
|
+
* const context = { baseUrl: 'https://example.com', path: '/api' };
|
|
70555
|
+
* evaluateExpression('baseUrl + path', context)
|
|
70556
|
+
* // Returns: 'https://example.com/api'
|
|
70557
|
+
* ```
|
|
70558
|
+
*/
|
|
70559
|
+
function evaluateExpression(expression, context) {
|
|
70560
|
+
const contextKeys = Object.keys(context);
|
|
70561
|
+
const contextValues = Object.values(context);
|
|
70562
|
+
// eslint-disable-next-line no-new-func
|
|
70563
|
+
const func = new Function(...contextKeys, `return ${expression}`);
|
|
70564
|
+
return func(...contextValues);
|
|
70565
|
+
}
|
|
70566
|
+
/**
|
|
70567
|
+
* Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
|
|
70568
|
+
*
|
|
70569
|
+
* @param content
|
|
70570
|
+
* @returns Content with HTMLBlock template literals base64 encoded in HTML comments
|
|
70571
|
+
* @example
|
|
70572
|
+
* ```typescript
|
|
70573
|
+
* const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
|
|
70574
|
+
* protectHTMLBlockContent(input)
|
|
70575
|
+
* // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
|
|
70576
|
+
* ```
|
|
70577
|
+
*/
|
|
70578
|
+
function protectHTMLBlockContent(content) {
|
|
70579
|
+
return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
|
|
70580
|
+
const encoded = base64Encode(templateContent);
|
|
70581
|
+
return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
|
|
70582
|
+
});
|
|
70583
|
+
}
|
|
70584
|
+
/**
|
|
70585
|
+
* Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
|
|
70586
|
+
*
|
|
70587
|
+
* @param content
|
|
70588
|
+
* @returns Content with JSX comments removed
|
|
70589
|
+
* @example
|
|
70590
|
+
* ```typescript
|
|
70591
|
+
* removeJSXComments('Text { /* comment *\/ } more text')
|
|
70592
|
+
* // Returns: 'Text more text'
|
|
70593
|
+
* ```
|
|
70594
|
+
*/
|
|
70595
|
+
function removeJSXComments(content) {
|
|
70596
|
+
return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
|
|
70597
|
+
}
|
|
70598
|
+
/**
|
|
70599
|
+
* Extracts content between balanced braces, handling nested braces.
|
|
70600
|
+
*
|
|
70601
|
+
* @param content
|
|
70602
|
+
* @param start
|
|
70603
|
+
* @returns Object with extracted content and end position, or null if braces are unbalanced
|
|
70604
|
+
* @example
|
|
70605
|
+
* ```typescript
|
|
70606
|
+
* const input = 'foo{bar{baz}qux}end';
|
|
70607
|
+
* extractBalancedBraces(input, 3) // start at position 3 (after '{')
|
|
70608
|
+
* // Returns: { content: 'bar{baz}qux', end: 16 }
|
|
70609
|
+
* ```
|
|
70610
|
+
*/
|
|
70611
|
+
function extractBalancedBraces(content, start) {
|
|
70612
|
+
let depth = 1;
|
|
70613
|
+
let pos = start;
|
|
70614
|
+
while (pos < content.length && depth > 0) {
|
|
70615
|
+
const char = content[pos];
|
|
70616
|
+
if (char === '{')
|
|
70617
|
+
depth += 1;
|
|
70618
|
+
else if (char === '}')
|
|
70619
|
+
depth -= 1;
|
|
70620
|
+
pos += 1;
|
|
70621
|
+
}
|
|
70622
|
+
if (depth !== 0)
|
|
70623
|
+
return null;
|
|
70624
|
+
return { content: content.slice(start, pos - 1), end: pos };
|
|
70625
|
+
}
|
|
70626
|
+
/**
|
|
70627
|
+
* Escapes problematic braces in content to prevent MDX expression parsing errors.
|
|
70628
|
+
* Handles three cases:
|
|
70629
|
+
* 1. Unbalanced braces (e.g., `{foo` without closing `}`)
|
|
70630
|
+
* 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
|
|
70631
|
+
* 3. Skips HTML elements to prevent backslashes appearing in output
|
|
70632
|
+
*
|
|
70633
|
+
*/
|
|
70634
|
+
function escapeProblematicBraces(content) {
|
|
70635
|
+
// Skip HTML elements — their content should never be escaped because
|
|
70636
|
+
// rehypeRaw parses them into hast elements, making `\` literal text in output
|
|
70637
|
+
const htmlElements = [];
|
|
70638
|
+
const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
|
|
70639
|
+
const idx = htmlElements.length;
|
|
70640
|
+
htmlElements.push(match);
|
|
70641
|
+
return `___HTML_ELEM_${idx}___`;
|
|
70642
|
+
});
|
|
70643
|
+
const toEscape = new Set();
|
|
70644
|
+
// Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
|
|
70645
|
+
const chars = Array.from(safe);
|
|
70646
|
+
let strDelim = null;
|
|
70647
|
+
let strEscaped = false;
|
|
70648
|
+
// Stack of open braces with their state
|
|
70649
|
+
const openStack = [];
|
|
70650
|
+
// Track position of last newline (outside strings) to detect blank lines
|
|
70651
|
+
let lastNewlinePos = -2; // -2 means no recent newline
|
|
70652
|
+
for (let i = 0; i < chars.length; i += 1) {
|
|
70653
|
+
const ch = chars[i];
|
|
70654
|
+
// Track string delimiters inside expressions to ignore braces within them
|
|
70655
|
+
if (openStack.length > 0) {
|
|
70656
|
+
if (strDelim) {
|
|
70657
|
+
if (strEscaped)
|
|
70658
|
+
strEscaped = false;
|
|
70659
|
+
else if (ch === '\\')
|
|
70660
|
+
strEscaped = true;
|
|
70661
|
+
else if (ch === strDelim)
|
|
70662
|
+
strDelim = null;
|
|
70663
|
+
// eslint-disable-next-line no-continue
|
|
70664
|
+
continue;
|
|
70665
|
+
}
|
|
70666
|
+
if (ch === '"' || ch === "'" || ch === '`') {
|
|
70667
|
+
strDelim = ch;
|
|
70668
|
+
// eslint-disable-next-line no-continue
|
|
70669
|
+
continue;
|
|
70670
|
+
}
|
|
70671
|
+
// Track newlines to detect blank lines (paragraph boundaries)
|
|
70672
|
+
if (ch === '\n') {
|
|
70673
|
+
// Check if this newline creates a blank line (only whitespace since last newline)
|
|
70674
|
+
if (lastNewlinePos >= 0) {
|
|
70675
|
+
const between = chars.slice(lastNewlinePos + 1, i).join('');
|
|
70676
|
+
if (/^[ \t]*$/.test(between)) {
|
|
70677
|
+
// This is a blank line - mark all open expressions as paragraph-spanning
|
|
70678
|
+
openStack.forEach(entry => {
|
|
70679
|
+
entry.hasBlankLine = true;
|
|
70680
|
+
});
|
|
70681
|
+
}
|
|
70682
|
+
}
|
|
70683
|
+
lastNewlinePos = i;
|
|
70684
|
+
}
|
|
70685
|
+
}
|
|
70686
|
+
// Skip already-escaped braces (count preceding backslashes)
|
|
70687
|
+
if (ch === '{' || ch === '}') {
|
|
70688
|
+
let bs = 0;
|
|
70689
|
+
for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
|
|
70690
|
+
bs += 1;
|
|
70691
|
+
if (bs % 2 === 1) {
|
|
70692
|
+
// eslint-disable-next-line no-continue
|
|
70693
|
+
continue;
|
|
70694
|
+
}
|
|
70695
|
+
}
|
|
70696
|
+
if (ch === '{') {
|
|
70697
|
+
openStack.push({ pos: i, hasBlankLine: false });
|
|
70698
|
+
lastNewlinePos = -2; // Reset newline tracking for new expression
|
|
70699
|
+
}
|
|
70700
|
+
else if (ch === '}') {
|
|
70701
|
+
if (openStack.length > 0) {
|
|
70702
|
+
const entry = openStack.pop();
|
|
70703
|
+
// If expression spans paragraph boundary, escape both braces
|
|
70704
|
+
if (entry.hasBlankLine) {
|
|
70705
|
+
toEscape.add(entry.pos);
|
|
70706
|
+
toEscape.add(i);
|
|
70707
|
+
}
|
|
70708
|
+
}
|
|
70709
|
+
else {
|
|
70710
|
+
// Unbalanced closing brace (no matching open)
|
|
70711
|
+
toEscape.add(i);
|
|
70712
|
+
}
|
|
70713
|
+
}
|
|
70714
|
+
}
|
|
70715
|
+
// Any remaining open braces are unbalanced
|
|
70716
|
+
openStack.forEach(entry => toEscape.add(entry.pos));
|
|
70717
|
+
// If there are no problematic braces, return safe content as-is;
|
|
70718
|
+
// otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
|
|
70719
|
+
let result = toEscape.size === 0
|
|
70720
|
+
? safe
|
|
70721
|
+
: chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
|
|
70722
|
+
// Restore HTML elements
|
|
70723
|
+
if (htmlElements.length > 0) {
|
|
70724
|
+
result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
|
|
70725
|
+
}
|
|
70726
|
+
return result;
|
|
70727
|
+
}
|
|
70728
|
+
/**
|
|
70729
|
+
* Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
|
|
70730
|
+
* Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
|
|
70731
|
+
*
|
|
70732
|
+
* @param content
|
|
70733
|
+
* @param context
|
|
70734
|
+
* @returns Content with attribute expressions evaluated and converted to HTML attributes
|
|
70735
|
+
* @example
|
|
70736
|
+
* ```typescript
|
|
70737
|
+
* const context = { baseUrl: 'https://example.com' };
|
|
70738
|
+
* const input = '<a href={baseUrl}>Link</a>';
|
|
70739
|
+
* evaluateAttributeExpressions(input, context)
|
|
70740
|
+
* // Returns: '<a href="https://example.com">Link</a>'
|
|
70741
|
+
* ```
|
|
70742
|
+
*/
|
|
70743
|
+
function evaluateAttributeExpressions(content, context, protectedCode) {
|
|
70744
|
+
const attrStartRegex = /(\w+)=\{/g;
|
|
70745
|
+
let result = '';
|
|
70746
|
+
let lastEnd = 0;
|
|
70747
|
+
let match = attrStartRegex.exec(content);
|
|
70748
|
+
while (match !== null) {
|
|
70749
|
+
const attributeName = match[1];
|
|
70750
|
+
const braceStart = match.index + match[0].length;
|
|
70751
|
+
const extracted = extractBalancedBraces(content, braceStart);
|
|
70752
|
+
if (extracted) {
|
|
70753
|
+
// The expression might contain template literals in MDX component tag props
|
|
70754
|
+
// E.g. <Component greeting={`Hello World!`} />
|
|
70755
|
+
// that is marked as inline code. So we need to restore the inline codes
|
|
70756
|
+
// in the expression to evaluate it
|
|
70757
|
+
let expression = extracted.content;
|
|
70758
|
+
if (protectedCode) {
|
|
70759
|
+
expression = restoreInlineCode(expression, protectedCode);
|
|
70760
|
+
}
|
|
70761
|
+
const fullMatchEnd = extracted.end;
|
|
70762
|
+
result += content.slice(lastEnd, match.index);
|
|
70763
|
+
try {
|
|
70764
|
+
const evalResult = evaluateExpression(expression, context);
|
|
70765
|
+
if (typeof evalResult === 'object' && evalResult !== null) {
|
|
70766
|
+
if (attributeName === 'style') {
|
|
70767
|
+
const cssString = Object.entries(evalResult)
|
|
70768
|
+
.map(([key, value]) => {
|
|
70769
|
+
const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
70770
|
+
return `${cssKey}: ${value}`;
|
|
70771
|
+
})
|
|
70772
|
+
.join('; ');
|
|
70773
|
+
result += `style="${cssString}"`;
|
|
70774
|
+
}
|
|
70775
|
+
else {
|
|
70776
|
+
// These are arrays / objects attribute values
|
|
70777
|
+
// Mark JSON-serialized values with a prefix so they can be parsed back correctly
|
|
70778
|
+
const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
|
|
70779
|
+
// Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
|
|
70780
|
+
result += `${attributeName}="${jsonValue}"`;
|
|
70781
|
+
}
|
|
70782
|
+
}
|
|
70783
|
+
else if (attributeName === 'className') {
|
|
70784
|
+
// Escape special characters so that it doesn't break and split the attribute value to nodes
|
|
70785
|
+
// This will be restored later in the pipeline
|
|
70786
|
+
result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
70787
|
+
}
|
|
70788
|
+
else {
|
|
70789
|
+
result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
70790
|
+
}
|
|
70791
|
+
}
|
|
70792
|
+
catch (_error) {
|
|
70793
|
+
result += content.slice(match.index, fullMatchEnd);
|
|
70794
|
+
}
|
|
70795
|
+
lastEnd = fullMatchEnd;
|
|
70796
|
+
attrStartRegex.lastIndex = fullMatchEnd;
|
|
70797
|
+
}
|
|
70798
|
+
match = attrStartRegex.exec(content);
|
|
70799
|
+
}
|
|
70800
|
+
result += content.slice(lastEnd);
|
|
70801
|
+
return result;
|
|
70802
|
+
}
|
|
70803
|
+
/**
|
|
70804
|
+
* Preprocesses JSX-like expressions in markdown before parsing.
|
|
70805
|
+
* Inline expressions are handled separately; attribute expressions are processed here.
|
|
70806
|
+
*
|
|
70807
|
+
* @param content
|
|
70808
|
+
* @param context
|
|
70809
|
+
* @returns Preprocessed content ready for markdown parsing
|
|
70810
|
+
*/
|
|
70811
|
+
function preprocessJSXExpressions(content, context = {}) {
|
|
70812
|
+
// Step 0: Base64 encode HTMLBlock content
|
|
70813
|
+
let processed = protectHTMLBlockContent(content);
|
|
70814
|
+
// Step 1: Protect code blocks and inline code
|
|
70815
|
+
const { protectedCode, protectedContent } = protectCodeBlocks(processed);
|
|
70816
|
+
// Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
|
|
70817
|
+
// For inline expressions, we use a library to parse the expression & evaluate it later
|
|
70818
|
+
// For attribute expressions, it was difficult to use a library to parse them, so do it manually
|
|
70819
|
+
processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
|
|
70820
|
+
// Step 3: Escape problematic braces to prevent MDX expression parsing errors
|
|
70821
|
+
// This handles both unbalanced braces and paragraph-spanning expressions in one pass
|
|
70822
|
+
processed = escapeProblematicBraces(processed);
|
|
70823
|
+
// Step 4: Restore protected code blocks
|
|
70824
|
+
processed = restoreCodeBlocks(processed, protectedCode);
|
|
70825
|
+
return processed;
|
|
70826
|
+
}
|
|
70827
|
+
|
|
70516
70828
|
;// ./processor/utils.ts
|
|
70517
70829
|
|
|
70518
70830
|
|
|
70831
|
+
|
|
70519
70832
|
/**
|
|
70520
70833
|
* Formats the hProperties of a node as a string, so they can be compiled back into JSX/MDX.
|
|
70521
70834
|
* This currently sets all the values to a string since we process/compile the MDX on the fly
|
|
@@ -70571,7 +70884,17 @@ const getHPropKeys = (node) => {
|
|
|
70571
70884
|
const getAttrs = (jsx) => jsx.attributes.reduce((memo, attr) => {
|
|
70572
70885
|
if ('name' in attr) {
|
|
70573
70886
|
if (typeof attr.value === 'string') {
|
|
70574
|
-
|
|
70887
|
+
if (attr.value.startsWith(JSON_VALUE_MARKER)) {
|
|
70888
|
+
try {
|
|
70889
|
+
memo[attr.name] = JSON.parse(attr.value.slice(JSON_VALUE_MARKER.length));
|
|
70890
|
+
}
|
|
70891
|
+
catch {
|
|
70892
|
+
memo[attr.name] = attr.value;
|
|
70893
|
+
}
|
|
70894
|
+
}
|
|
70895
|
+
else {
|
|
70896
|
+
memo[attr.name] = attr.value;
|
|
70897
|
+
}
|
|
70575
70898
|
}
|
|
70576
70899
|
else if (attr.value === null) {
|
|
70577
70900
|
memo[attr.name] = true;
|
|
@@ -71345,10 +71668,10 @@ const hasFlowContent = (nodes) => {
|
|
|
71345
71668
|
* Process a Table node: re-parse text-only cell content, then output as
|
|
71346
71669
|
* a markdown table (phrasing-only) or keep as JSX <Table> (has flow content).
|
|
71347
71670
|
*/
|
|
71348
|
-
const processTableNode = (node, index, parent) => {
|
|
71671
|
+
const processTableNode = (node, index, parent, documentPosition) => {
|
|
71349
71672
|
if (node.name !== 'Table')
|
|
71350
71673
|
return;
|
|
71351
|
-
const
|
|
71674
|
+
const position = documentPosition ?? node.position;
|
|
71352
71675
|
const { align: alignAttr } = getAttrs(node);
|
|
71353
71676
|
const align = Array.isArray(alignAttr) ? alignAttr : null;
|
|
71354
71677
|
let tableHasFlowContent = false;
|
|
@@ -71471,7 +71794,7 @@ const mdxishTables = () => tree => {
|
|
|
71471
71794
|
const parsed = tableNodeProcessor.runSync(tableNodeProcessor.parse(node.value));
|
|
71472
71795
|
visit(parsed, isMDXElement, (tableNode) => {
|
|
71473
71796
|
if (tableNode.name === 'Table') {
|
|
71474
|
-
processTableNode(tableNode, index, parent);
|
|
71797
|
+
processTableNode(tableNode, index, parent, node.position);
|
|
71475
71798
|
// Stop after the outermost Table so nested Tables don't overwrite parent.children[index]
|
|
71476
71799
|
// we let it get handled naturally
|
|
71477
71800
|
return EXIT;
|
|
@@ -76886,6 +77209,12 @@ const deserializer = ($, _) => {
|
|
|
76886
77209
|
return as(BigInt(value), index);
|
|
76887
77210
|
case 'BigInt':
|
|
76888
77211
|
return as(Object(BigInt(value)), index);
|
|
77212
|
+
case 'ArrayBuffer':
|
|
77213
|
+
return as(new Uint8Array(value).buffer, value);
|
|
77214
|
+
case 'DataView': {
|
|
77215
|
+
const { buffer } = new Uint8Array(value);
|
|
77216
|
+
return as(new DataView(buffer), value);
|
|
77217
|
+
}
|
|
76889
77218
|
}
|
|
76890
77219
|
return as(new env[type](value), index);
|
|
76891
77220
|
};
|
|
@@ -76931,6 +77260,8 @@ const typeOf = value => {
|
|
|
76931
77260
|
return [MAP, EMPTY];
|
|
76932
77261
|
case 'Set':
|
|
76933
77262
|
return [SET, EMPTY];
|
|
77263
|
+
case 'DataView':
|
|
77264
|
+
return [ARRAY, asString];
|
|
76934
77265
|
}
|
|
76935
77266
|
|
|
76936
77267
|
if (asString.includes('Array'))
|
|
@@ -76980,9 +77311,17 @@ const serializer = (strict, json, $, _) => {
|
|
|
76980
77311
|
return as([TYPE, entry], value);
|
|
76981
77312
|
}
|
|
76982
77313
|
case ARRAY: {
|
|
76983
|
-
if (type)
|
|
76984
|
-
|
|
76985
|
-
|
|
77314
|
+
if (type) {
|
|
77315
|
+
let spread = value;
|
|
77316
|
+
if (type === 'DataView') {
|
|
77317
|
+
spread = new Uint8Array(value.buffer);
|
|
77318
|
+
}
|
|
77319
|
+
else if (type === 'ArrayBuffer') {
|
|
77320
|
+
spread = new Uint8Array(value);
|
|
77321
|
+
}
|
|
77322
|
+
return as([type, [...spread]], value);
|
|
77323
|
+
}
|
|
77324
|
+
|
|
76986
77325
|
const arr = [];
|
|
76987
77326
|
const index = as([TYPE, arr], value);
|
|
76988
77327
|
for (const entry of value)
|
|
@@ -91810,6 +92149,27 @@ function rehypeRemark(destination, options) {
|
|
|
91810
92149
|
}
|
|
91811
92150
|
}
|
|
91812
92151
|
|
|
92152
|
+
;// ./processor/compile/anchor.ts
|
|
92153
|
+
|
|
92154
|
+
|
|
92155
|
+
const anchor_anchor = (node) => {
|
|
92156
|
+
const { href, label, target, title } = getHProps(node);
|
|
92157
|
+
const attrs = {
|
|
92158
|
+
...(label && { label }),
|
|
92159
|
+
...(target && { target }),
|
|
92160
|
+
href: href ?? '',
|
|
92161
|
+
...(title && { title }),
|
|
92162
|
+
};
|
|
92163
|
+
// Serialize children (phrasing content) back to markdown
|
|
92164
|
+
// Wrap in paragraph to satisfy RootContent type requirement
|
|
92165
|
+
const children = toMarkdown({
|
|
92166
|
+
type: 'paragraph',
|
|
92167
|
+
children: node.children,
|
|
92168
|
+
}).trim();
|
|
92169
|
+
return `<Anchor ${formatProps(attrs)}>${children}</Anchor>`;
|
|
92170
|
+
};
|
|
92171
|
+
/* harmony default export */ const compile_anchor = (anchor_anchor);
|
|
92172
|
+
|
|
91813
92173
|
;// ./processor/compile/callout.ts
|
|
91814
92174
|
|
|
91815
92175
|
const callout = (node, _, state, info) => {
|
|
@@ -91992,10 +92352,12 @@ const plain_plain = (node) => node.value;
|
|
|
91992
92352
|
|
|
91993
92353
|
|
|
91994
92354
|
|
|
92355
|
+
|
|
91995
92356
|
function compilers(mdxish = false) {
|
|
91996
92357
|
const data = this.data();
|
|
91997
92358
|
const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
|
|
91998
92359
|
const handlers = {
|
|
92360
|
+
...(mdxish && { [NodeTypes.anchor]: compile_anchor }),
|
|
91999
92361
|
[NodeTypes.callout]: compile_callout,
|
|
92000
92362
|
[NodeTypes.codeTabs]: compile_code_tabs,
|
|
92001
92363
|
[NodeTypes.embedBlock]: compile_embed,
|
|
@@ -93907,412 +94269,6 @@ const mdxComponentHandlers = {
|
|
|
93907
94269
|
[NodeTypes.htmlBlock]: htmlBlockHandler,
|
|
93908
94270
|
};
|
|
93909
94271
|
|
|
93910
|
-
;// ./lib/utils/mdxish/protect-code-blocks.ts
|
|
93911
|
-
/**
|
|
93912
|
-
* Replaces code blocks and inline code with placeholders to protect them from preprocessing.
|
|
93913
|
-
*
|
|
93914
|
-
* @param content - The markdown content to process
|
|
93915
|
-
* @returns Object containing protected content and arrays of original code blocks
|
|
93916
|
-
* @example
|
|
93917
|
-
* ```typescript
|
|
93918
|
-
* const input = 'Text with `inline code` and ```fenced block```';
|
|
93919
|
-
* protectCodeBlocks(input)
|
|
93920
|
-
* // Returns: {
|
|
93921
|
-
* // protectedCode: {
|
|
93922
|
-
* // codeBlocks: ['```fenced block```'],
|
|
93923
|
-
* // inlineCode: ['`inline code`']
|
|
93924
|
-
* // },
|
|
93925
|
-
* // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
|
|
93926
|
-
* // }
|
|
93927
|
-
* ```
|
|
93928
|
-
*/
|
|
93929
|
-
function protectCodeBlocks(content) {
|
|
93930
|
-
const codeBlocks = [];
|
|
93931
|
-
const inlineCode = [];
|
|
93932
|
-
let protectedContent = '';
|
|
93933
|
-
let remaining = content;
|
|
93934
|
-
let codeBlockStart = remaining.indexOf('```');
|
|
93935
|
-
while (codeBlockStart !== -1) {
|
|
93936
|
-
protectedContent += remaining.slice(0, codeBlockStart);
|
|
93937
|
-
remaining = remaining.slice(codeBlockStart);
|
|
93938
|
-
const codeBlockEnd = remaining.indexOf('```', 3);
|
|
93939
|
-
if (codeBlockEnd === -1) {
|
|
93940
|
-
break;
|
|
93941
|
-
}
|
|
93942
|
-
const match = remaining.slice(0, codeBlockEnd + 3);
|
|
93943
|
-
const index = codeBlocks.length;
|
|
93944
|
-
codeBlocks.push(match);
|
|
93945
|
-
protectedContent += `___CODE_BLOCK_${index}___`;
|
|
93946
|
-
remaining = remaining.slice(codeBlockEnd + 3);
|
|
93947
|
-
codeBlockStart = remaining.indexOf('```');
|
|
93948
|
-
}
|
|
93949
|
-
protectedContent += remaining;
|
|
93950
|
-
protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
|
|
93951
|
-
const index = inlineCode.length;
|
|
93952
|
-
inlineCode.push(match);
|
|
93953
|
-
return `___INLINE_CODE_${index}___`;
|
|
93954
|
-
});
|
|
93955
|
-
return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
|
|
93956
|
-
}
|
|
93957
|
-
/**
|
|
93958
|
-
* Restores inline code by replacing placeholders with original content.
|
|
93959
|
-
*
|
|
93960
|
-
* @param content - Content with inline code placeholders
|
|
93961
|
-
* @param protectedCode - The protected code arrays
|
|
93962
|
-
* @returns Content with inline code restored
|
|
93963
|
-
*/
|
|
93964
|
-
function restoreInlineCode(content, protectedCode) {
|
|
93965
|
-
return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
|
|
93966
|
-
return protectedCode.inlineCode[parseInt(idx, 10)];
|
|
93967
|
-
});
|
|
93968
|
-
}
|
|
93969
|
-
/**
|
|
93970
|
-
* Restores fenced code blocks by replacing placeholders with original content.
|
|
93971
|
-
*
|
|
93972
|
-
* @param content - Content with code block placeholders
|
|
93973
|
-
* @param protectedCode - The protected code arrays
|
|
93974
|
-
* @returns Content with code blocks restored
|
|
93975
|
-
*/
|
|
93976
|
-
function restoreFencedCodeBlocks(content, protectedCode) {
|
|
93977
|
-
return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
|
|
93978
|
-
return protectedCode.codeBlocks[parseInt(idx, 10)];
|
|
93979
|
-
});
|
|
93980
|
-
}
|
|
93981
|
-
/**
|
|
93982
|
-
* Restores all code blocks and inline code by replacing placeholders with original content.
|
|
93983
|
-
*
|
|
93984
|
-
* @param content - Content with code placeholders
|
|
93985
|
-
* @param protectedCode - The protected code arrays
|
|
93986
|
-
* @returns Content with all code blocks and inline code restored
|
|
93987
|
-
* @example
|
|
93988
|
-
* ```typescript
|
|
93989
|
-
* const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
|
|
93990
|
-
* const protectedCode = {
|
|
93991
|
-
* codeBlocks: ['```js\ncode\n```'],
|
|
93992
|
-
* inlineCode: ['`inline`']
|
|
93993
|
-
* };
|
|
93994
|
-
* restoreCodeBlocks(content, protectedCode)
|
|
93995
|
-
* // Returns: 'Text with `inline` and ```js\ncode\n```'
|
|
93996
|
-
* ```
|
|
93997
|
-
*/
|
|
93998
|
-
function restoreCodeBlocks(content, protectedCode) {
|
|
93999
|
-
let restored = restoreFencedCodeBlocks(content, protectedCode);
|
|
94000
|
-
restored = restoreInlineCode(restored, protectedCode);
|
|
94001
|
-
return restored;
|
|
94002
|
-
}
|
|
94003
|
-
|
|
94004
|
-
;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
|
|
94005
|
-
|
|
94006
|
-
// Base64 encode (Node.js + browser compatible)
|
|
94007
|
-
function base64Encode(str) {
|
|
94008
|
-
if (typeof Buffer !== 'undefined') {
|
|
94009
|
-
return Buffer.from(str, 'utf-8').toString('base64');
|
|
94010
|
-
}
|
|
94011
|
-
return btoa(unescape(encodeURIComponent(str)));
|
|
94012
|
-
}
|
|
94013
|
-
// Base64 decode (Node.js + browser compatible)
|
|
94014
|
-
function base64Decode(str) {
|
|
94015
|
-
if (typeof Buffer !== 'undefined') {
|
|
94016
|
-
return Buffer.from(str, 'base64').toString('utf-8');
|
|
94017
|
-
}
|
|
94018
|
-
return decodeURIComponent(escape(atob(str)));
|
|
94019
|
-
}
|
|
94020
|
-
function escapeHtmlAttribute(value) {
|
|
94021
|
-
return value
|
|
94022
|
-
.replace(/&/g, '&')
|
|
94023
|
-
.replace(/"/g, '"')
|
|
94024
|
-
.replace(/</g, '<')
|
|
94025
|
-
.replace(/>/g, '>')
|
|
94026
|
-
.replace(/\n/g, ' ');
|
|
94027
|
-
}
|
|
94028
|
-
// Marker prefix for JSON-serialized complex values (arrays/objects)
|
|
94029
|
-
// Using a prefix that won't conflict with regular string values
|
|
94030
|
-
const JSON_VALUE_MARKER = '__MDXISH_JSON__';
|
|
94031
|
-
// Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
|
|
94032
|
-
const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
|
|
94033
|
-
const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
|
|
94034
|
-
/**
|
|
94035
|
-
* Evaluates a JavaScript expression using context variables.
|
|
94036
|
-
*
|
|
94037
|
-
* @param expression
|
|
94038
|
-
* @param context
|
|
94039
|
-
* @returns The evaluated result
|
|
94040
|
-
* @example
|
|
94041
|
-
* ```typescript
|
|
94042
|
-
* const context = { baseUrl: 'https://example.com', path: '/api' };
|
|
94043
|
-
* evaluateExpression('baseUrl + path', context)
|
|
94044
|
-
* // Returns: 'https://example.com/api'
|
|
94045
|
-
* ```
|
|
94046
|
-
*/
|
|
94047
|
-
function evaluateExpression(expression, context) {
|
|
94048
|
-
const contextKeys = Object.keys(context);
|
|
94049
|
-
const contextValues = Object.values(context);
|
|
94050
|
-
// eslint-disable-next-line no-new-func
|
|
94051
|
-
const func = new Function(...contextKeys, `return ${expression}`);
|
|
94052
|
-
return func(...contextValues);
|
|
94053
|
-
}
|
|
94054
|
-
/**
|
|
94055
|
-
* Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
|
|
94056
|
-
*
|
|
94057
|
-
* @param content
|
|
94058
|
-
* @returns Content with HTMLBlock template literals base64 encoded in HTML comments
|
|
94059
|
-
* @example
|
|
94060
|
-
* ```typescript
|
|
94061
|
-
* const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
|
|
94062
|
-
* protectHTMLBlockContent(input)
|
|
94063
|
-
* // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
|
|
94064
|
-
* ```
|
|
94065
|
-
*/
|
|
94066
|
-
function protectHTMLBlockContent(content) {
|
|
94067
|
-
return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
|
|
94068
|
-
const encoded = base64Encode(templateContent);
|
|
94069
|
-
return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
|
|
94070
|
-
});
|
|
94071
|
-
}
|
|
94072
|
-
/**
|
|
94073
|
-
* Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
|
|
94074
|
-
*
|
|
94075
|
-
* @param content
|
|
94076
|
-
* @returns Content with JSX comments removed
|
|
94077
|
-
* @example
|
|
94078
|
-
* ```typescript
|
|
94079
|
-
* removeJSXComments('Text { /* comment *\/ } more text')
|
|
94080
|
-
* // Returns: 'Text more text'
|
|
94081
|
-
* ```
|
|
94082
|
-
*/
|
|
94083
|
-
function removeJSXComments(content) {
|
|
94084
|
-
return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
|
|
94085
|
-
}
|
|
94086
|
-
/**
|
|
94087
|
-
* Extracts content between balanced braces, handling nested braces.
|
|
94088
|
-
*
|
|
94089
|
-
* @param content
|
|
94090
|
-
* @param start
|
|
94091
|
-
* @returns Object with extracted content and end position, or null if braces are unbalanced
|
|
94092
|
-
* @example
|
|
94093
|
-
* ```typescript
|
|
94094
|
-
* const input = 'foo{bar{baz}qux}end';
|
|
94095
|
-
* extractBalancedBraces(input, 3) // start at position 3 (after '{')
|
|
94096
|
-
* // Returns: { content: 'bar{baz}qux', end: 16 }
|
|
94097
|
-
* ```
|
|
94098
|
-
*/
|
|
94099
|
-
function extractBalancedBraces(content, start) {
|
|
94100
|
-
let depth = 1;
|
|
94101
|
-
let pos = start;
|
|
94102
|
-
while (pos < content.length && depth > 0) {
|
|
94103
|
-
const char = content[pos];
|
|
94104
|
-
if (char === '{')
|
|
94105
|
-
depth += 1;
|
|
94106
|
-
else if (char === '}')
|
|
94107
|
-
depth -= 1;
|
|
94108
|
-
pos += 1;
|
|
94109
|
-
}
|
|
94110
|
-
if (depth !== 0)
|
|
94111
|
-
return null;
|
|
94112
|
-
return { content: content.slice(start, pos - 1), end: pos };
|
|
94113
|
-
}
|
|
94114
|
-
/**
|
|
94115
|
-
* Escapes problematic braces in content to prevent MDX expression parsing errors.
|
|
94116
|
-
* Handles three cases:
|
|
94117
|
-
* 1. Unbalanced braces (e.g., `{foo` without closing `}`)
|
|
94118
|
-
* 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
|
|
94119
|
-
* 3. Skips HTML elements to prevent backslashes appearing in output
|
|
94120
|
-
*
|
|
94121
|
-
*/
|
|
94122
|
-
function escapeProblematicBraces(content) {
|
|
94123
|
-
// Skip HTML elements — their content should never be escaped because
|
|
94124
|
-
// rehypeRaw parses them into hast elements, making `\` literal text in output
|
|
94125
|
-
const htmlElements = [];
|
|
94126
|
-
const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
|
|
94127
|
-
const idx = htmlElements.length;
|
|
94128
|
-
htmlElements.push(match);
|
|
94129
|
-
return `___HTML_ELEM_${idx}___`;
|
|
94130
|
-
});
|
|
94131
|
-
const toEscape = new Set();
|
|
94132
|
-
// Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
|
|
94133
|
-
const chars = Array.from(safe);
|
|
94134
|
-
let strDelim = null;
|
|
94135
|
-
let strEscaped = false;
|
|
94136
|
-
// Stack of open braces with their state
|
|
94137
|
-
const openStack = [];
|
|
94138
|
-
// Track position of last newline (outside strings) to detect blank lines
|
|
94139
|
-
let lastNewlinePos = -2; // -2 means no recent newline
|
|
94140
|
-
for (let i = 0; i < chars.length; i += 1) {
|
|
94141
|
-
const ch = chars[i];
|
|
94142
|
-
// Track string delimiters inside expressions to ignore braces within them
|
|
94143
|
-
if (openStack.length > 0) {
|
|
94144
|
-
if (strDelim) {
|
|
94145
|
-
if (strEscaped)
|
|
94146
|
-
strEscaped = false;
|
|
94147
|
-
else if (ch === '\\')
|
|
94148
|
-
strEscaped = true;
|
|
94149
|
-
else if (ch === strDelim)
|
|
94150
|
-
strDelim = null;
|
|
94151
|
-
// eslint-disable-next-line no-continue
|
|
94152
|
-
continue;
|
|
94153
|
-
}
|
|
94154
|
-
if (ch === '"' || ch === "'" || ch === '`') {
|
|
94155
|
-
strDelim = ch;
|
|
94156
|
-
// eslint-disable-next-line no-continue
|
|
94157
|
-
continue;
|
|
94158
|
-
}
|
|
94159
|
-
// Track newlines to detect blank lines (paragraph boundaries)
|
|
94160
|
-
if (ch === '\n') {
|
|
94161
|
-
// Check if this newline creates a blank line (only whitespace since last newline)
|
|
94162
|
-
if (lastNewlinePos >= 0) {
|
|
94163
|
-
const between = chars.slice(lastNewlinePos + 1, i).join('');
|
|
94164
|
-
if (/^[ \t]*$/.test(between)) {
|
|
94165
|
-
// This is a blank line - mark all open expressions as paragraph-spanning
|
|
94166
|
-
openStack.forEach(entry => {
|
|
94167
|
-
entry.hasBlankLine = true;
|
|
94168
|
-
});
|
|
94169
|
-
}
|
|
94170
|
-
}
|
|
94171
|
-
lastNewlinePos = i;
|
|
94172
|
-
}
|
|
94173
|
-
}
|
|
94174
|
-
// Skip already-escaped braces (count preceding backslashes)
|
|
94175
|
-
if (ch === '{' || ch === '}') {
|
|
94176
|
-
let bs = 0;
|
|
94177
|
-
for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
|
|
94178
|
-
bs += 1;
|
|
94179
|
-
if (bs % 2 === 1) {
|
|
94180
|
-
// eslint-disable-next-line no-continue
|
|
94181
|
-
continue;
|
|
94182
|
-
}
|
|
94183
|
-
}
|
|
94184
|
-
if (ch === '{') {
|
|
94185
|
-
openStack.push({ pos: i, hasBlankLine: false });
|
|
94186
|
-
lastNewlinePos = -2; // Reset newline tracking for new expression
|
|
94187
|
-
}
|
|
94188
|
-
else if (ch === '}') {
|
|
94189
|
-
if (openStack.length > 0) {
|
|
94190
|
-
const entry = openStack.pop();
|
|
94191
|
-
// If expression spans paragraph boundary, escape both braces
|
|
94192
|
-
if (entry.hasBlankLine) {
|
|
94193
|
-
toEscape.add(entry.pos);
|
|
94194
|
-
toEscape.add(i);
|
|
94195
|
-
}
|
|
94196
|
-
}
|
|
94197
|
-
else {
|
|
94198
|
-
// Unbalanced closing brace (no matching open)
|
|
94199
|
-
toEscape.add(i);
|
|
94200
|
-
}
|
|
94201
|
-
}
|
|
94202
|
-
}
|
|
94203
|
-
// Any remaining open braces are unbalanced
|
|
94204
|
-
openStack.forEach(entry => toEscape.add(entry.pos));
|
|
94205
|
-
// If there are no problematic braces, return safe content as-is;
|
|
94206
|
-
// otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
|
|
94207
|
-
let result = toEscape.size === 0
|
|
94208
|
-
? safe
|
|
94209
|
-
: chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
|
|
94210
|
-
// Restore HTML elements
|
|
94211
|
-
if (htmlElements.length > 0) {
|
|
94212
|
-
result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
|
|
94213
|
-
}
|
|
94214
|
-
return result;
|
|
94215
|
-
}
|
|
94216
|
-
/**
|
|
94217
|
-
* Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
|
|
94218
|
-
* Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
|
|
94219
|
-
*
|
|
94220
|
-
* @param content
|
|
94221
|
-
* @param context
|
|
94222
|
-
* @returns Content with attribute expressions evaluated and converted to HTML attributes
|
|
94223
|
-
* @example
|
|
94224
|
-
* ```typescript
|
|
94225
|
-
* const context = { baseUrl: 'https://example.com' };
|
|
94226
|
-
* const input = '<a href={baseUrl}>Link</a>';
|
|
94227
|
-
* evaluateAttributeExpressions(input, context)
|
|
94228
|
-
* // Returns: '<a href="https://example.com">Link</a>'
|
|
94229
|
-
* ```
|
|
94230
|
-
*/
|
|
94231
|
-
function evaluateAttributeExpressions(content, context, protectedCode) {
|
|
94232
|
-
const attrStartRegex = /(\w+)=\{/g;
|
|
94233
|
-
let result = '';
|
|
94234
|
-
let lastEnd = 0;
|
|
94235
|
-
let match = attrStartRegex.exec(content);
|
|
94236
|
-
while (match !== null) {
|
|
94237
|
-
const attributeName = match[1];
|
|
94238
|
-
const braceStart = match.index + match[0].length;
|
|
94239
|
-
const extracted = extractBalancedBraces(content, braceStart);
|
|
94240
|
-
if (extracted) {
|
|
94241
|
-
// The expression might contain template literals in MDX component tag props
|
|
94242
|
-
// E.g. <Component greeting={`Hello World!`} />
|
|
94243
|
-
// that is marked as inline code. So we need to restore the inline codes
|
|
94244
|
-
// in the expression to evaluate it
|
|
94245
|
-
let expression = extracted.content;
|
|
94246
|
-
if (protectedCode) {
|
|
94247
|
-
expression = restoreInlineCode(expression, protectedCode);
|
|
94248
|
-
}
|
|
94249
|
-
const fullMatchEnd = extracted.end;
|
|
94250
|
-
result += content.slice(lastEnd, match.index);
|
|
94251
|
-
try {
|
|
94252
|
-
const evalResult = evaluateExpression(expression, context);
|
|
94253
|
-
if (typeof evalResult === 'object' && evalResult !== null) {
|
|
94254
|
-
if (attributeName === 'style') {
|
|
94255
|
-
const cssString = Object.entries(evalResult)
|
|
94256
|
-
.map(([key, value]) => {
|
|
94257
|
-
const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
94258
|
-
return `${cssKey}: ${value}`;
|
|
94259
|
-
})
|
|
94260
|
-
.join('; ');
|
|
94261
|
-
result += `style="${cssString}"`;
|
|
94262
|
-
}
|
|
94263
|
-
else {
|
|
94264
|
-
// These are arrays / objects attribute values
|
|
94265
|
-
// Mark JSON-serialized values with a prefix so they can be parsed back correctly
|
|
94266
|
-
const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
|
|
94267
|
-
// Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
|
|
94268
|
-
result += `${attributeName}="${jsonValue}"`;
|
|
94269
|
-
}
|
|
94270
|
-
}
|
|
94271
|
-
else if (attributeName === 'className') {
|
|
94272
|
-
// Escape special characters so that it doesn't break and split the attribute value to nodes
|
|
94273
|
-
// This will be restored later in the pipeline
|
|
94274
|
-
result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
94275
|
-
}
|
|
94276
|
-
else {
|
|
94277
|
-
result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
94278
|
-
}
|
|
94279
|
-
}
|
|
94280
|
-
catch (_error) {
|
|
94281
|
-
result += content.slice(match.index, fullMatchEnd);
|
|
94282
|
-
}
|
|
94283
|
-
lastEnd = fullMatchEnd;
|
|
94284
|
-
attrStartRegex.lastIndex = fullMatchEnd;
|
|
94285
|
-
}
|
|
94286
|
-
match = attrStartRegex.exec(content);
|
|
94287
|
-
}
|
|
94288
|
-
result += content.slice(lastEnd);
|
|
94289
|
-
return result;
|
|
94290
|
-
}
|
|
94291
|
-
/**
|
|
94292
|
-
* Preprocesses JSX-like expressions in markdown before parsing.
|
|
94293
|
-
* Inline expressions are handled separately; attribute expressions are processed here.
|
|
94294
|
-
*
|
|
94295
|
-
* @param content
|
|
94296
|
-
* @param context
|
|
94297
|
-
* @returns Preprocessed content ready for markdown parsing
|
|
94298
|
-
*/
|
|
94299
|
-
function preprocessJSXExpressions(content, context = {}) {
|
|
94300
|
-
// Step 0: Base64 encode HTMLBlock content
|
|
94301
|
-
let processed = protectHTMLBlockContent(content);
|
|
94302
|
-
// Step 1: Protect code blocks and inline code
|
|
94303
|
-
const { protectedCode, protectedContent } = protectCodeBlocks(processed);
|
|
94304
|
-
// Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
|
|
94305
|
-
// For inline expressions, we use a library to parse the expression & evaluate it later
|
|
94306
|
-
// For attribute expressions, it was difficult to use a library to parse them, so do it manually
|
|
94307
|
-
processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
|
|
94308
|
-
// Step 3: Escape problematic braces to prevent MDX expression parsing errors
|
|
94309
|
-
// This handles both unbalanced braces and paragraph-spanning expressions in one pass
|
|
94310
|
-
processed = escapeProblematicBraces(processed);
|
|
94311
|
-
// Step 4: Restore protected code blocks
|
|
94312
|
-
processed = restoreCodeBlocks(processed, protectedCode);
|
|
94313
|
-
return processed;
|
|
94314
|
-
}
|
|
94315
|
-
|
|
94316
94272
|
;// ./processor/transform/mdxish/evaluate-expressions.ts
|
|
94317
94273
|
|
|
94318
94274
|
|
|
@@ -94830,6 +94786,591 @@ function legacyVariable() {
|
|
|
94830
94786
|
*/
|
|
94831
94787
|
|
|
94832
94788
|
|
|
94789
|
+
;// ./node_modules/entities/lib/esm/generated/decode-data-html.js
|
|
94790
|
+
// Generated using scripts/write-decode-map.ts
|
|
94791
|
+
/* harmony default export */ const decode_data_html = (new Uint16Array(
|
|
94792
|
+
// prettier-ignore
|
|
94793
|
+
"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
94794
|
+
.split("")
|
|
94795
|
+
.map((c) => c.charCodeAt(0))));
|
|
94796
|
+
//# sourceMappingURL=decode-data-html.js.map
|
|
94797
|
+
;// ./node_modules/entities/lib/esm/generated/decode-data-xml.js
|
|
94798
|
+
// Generated using scripts/write-decode-map.ts
|
|
94799
|
+
/* harmony default export */ const decode_data_xml = (new Uint16Array(
|
|
94800
|
+
// prettier-ignore
|
|
94801
|
+
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
94802
|
+
.split("")
|
|
94803
|
+
.map((c) => c.charCodeAt(0))));
|
|
94804
|
+
//# sourceMappingURL=decode-data-xml.js.map
|
|
94805
|
+
;// ./node_modules/entities/lib/esm/decode_codepoint.js
|
|
94806
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
94807
|
+
var esm_decode_codepoint_a;
|
|
94808
|
+
const decode_codepoint_decodeMap = new Map([
|
|
94809
|
+
[0, 65533],
|
|
94810
|
+
// C1 Unicode control character reference replacements
|
|
94811
|
+
[128, 8364],
|
|
94812
|
+
[130, 8218],
|
|
94813
|
+
[131, 402],
|
|
94814
|
+
[132, 8222],
|
|
94815
|
+
[133, 8230],
|
|
94816
|
+
[134, 8224],
|
|
94817
|
+
[135, 8225],
|
|
94818
|
+
[136, 710],
|
|
94819
|
+
[137, 8240],
|
|
94820
|
+
[138, 352],
|
|
94821
|
+
[139, 8249],
|
|
94822
|
+
[140, 338],
|
|
94823
|
+
[142, 381],
|
|
94824
|
+
[145, 8216],
|
|
94825
|
+
[146, 8217],
|
|
94826
|
+
[147, 8220],
|
|
94827
|
+
[148, 8221],
|
|
94828
|
+
[149, 8226],
|
|
94829
|
+
[150, 8211],
|
|
94830
|
+
[151, 8212],
|
|
94831
|
+
[152, 732],
|
|
94832
|
+
[153, 8482],
|
|
94833
|
+
[154, 353],
|
|
94834
|
+
[155, 8250],
|
|
94835
|
+
[156, 339],
|
|
94836
|
+
[158, 382],
|
|
94837
|
+
[159, 376],
|
|
94838
|
+
]);
|
|
94839
|
+
/**
|
|
94840
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
94841
|
+
*/
|
|
94842
|
+
const esm_decode_codepoint_fromCodePoint =
|
|
94843
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
94844
|
+
(esm_decode_codepoint_a = String.fromCodePoint) !== null && esm_decode_codepoint_a !== void 0 ? esm_decode_codepoint_a : function (codePoint) {
|
|
94845
|
+
let output = "";
|
|
94846
|
+
if (codePoint > 0xffff) {
|
|
94847
|
+
codePoint -= 0x10000;
|
|
94848
|
+
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
94849
|
+
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
94850
|
+
}
|
|
94851
|
+
output += String.fromCharCode(codePoint);
|
|
94852
|
+
return output;
|
|
94853
|
+
};
|
|
94854
|
+
/**
|
|
94855
|
+
* Replace the given code point with a replacement character if it is a
|
|
94856
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
94857
|
+
* point unchanged.
|
|
94858
|
+
*/
|
|
94859
|
+
function decode_codepoint_replaceCodePoint(codePoint) {
|
|
94860
|
+
var _a;
|
|
94861
|
+
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
94862
|
+
return 0xfffd;
|
|
94863
|
+
}
|
|
94864
|
+
return (_a = decode_codepoint_decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
94865
|
+
}
|
|
94866
|
+
/**
|
|
94867
|
+
* Replace the code point if relevant, then convert it to a string.
|
|
94868
|
+
*
|
|
94869
|
+
* @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
|
|
94870
|
+
* @param codePoint The code point to decode.
|
|
94871
|
+
* @returns The decoded code point.
|
|
94872
|
+
*/
|
|
94873
|
+
function decode_codepoint_decodeCodePoint(codePoint) {
|
|
94874
|
+
return esm_decode_codepoint_fromCodePoint(decode_codepoint_replaceCodePoint(codePoint));
|
|
94875
|
+
}
|
|
94876
|
+
//# sourceMappingURL=decode_codepoint.js.map
|
|
94877
|
+
;// ./node_modules/entities/lib/esm/decode.js
|
|
94878
|
+
|
|
94879
|
+
|
|
94880
|
+
|
|
94881
|
+
// Re-export for use by eg. htmlparser2
|
|
94882
|
+
|
|
94883
|
+
|
|
94884
|
+
var decode_CharCodes;
|
|
94885
|
+
(function (CharCodes) {
|
|
94886
|
+
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
94887
|
+
CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
|
|
94888
|
+
CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
|
|
94889
|
+
CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
|
|
94890
|
+
CharCodes[CharCodes["NINE"] = 57] = "NINE";
|
|
94891
|
+
CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
|
|
94892
|
+
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
94893
|
+
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
94894
|
+
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
94895
|
+
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
94896
|
+
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
94897
|
+
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
94898
|
+
})(decode_CharCodes || (decode_CharCodes = {}));
|
|
94899
|
+
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
94900
|
+
const decode_TO_LOWER_BIT = 0b100000;
|
|
94901
|
+
var decode_BinTrieFlags;
|
|
94902
|
+
(function (BinTrieFlags) {
|
|
94903
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
94904
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
94905
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
94906
|
+
})(decode_BinTrieFlags || (decode_BinTrieFlags = {}));
|
|
94907
|
+
function decode_isNumber(code) {
|
|
94908
|
+
return code >= decode_CharCodes.ZERO && code <= decode_CharCodes.NINE;
|
|
94909
|
+
}
|
|
94910
|
+
function decode_isHexadecimalCharacter(code) {
|
|
94911
|
+
return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_F) ||
|
|
94912
|
+
(code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_F));
|
|
94913
|
+
}
|
|
94914
|
+
function decode_isAsciiAlphaNumeric(code) {
|
|
94915
|
+
return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_Z) ||
|
|
94916
|
+
(code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_Z) ||
|
|
94917
|
+
decode_isNumber(code));
|
|
94918
|
+
}
|
|
94919
|
+
/**
|
|
94920
|
+
* Checks if the given character is a valid end character for an entity in an attribute.
|
|
94921
|
+
*
|
|
94922
|
+
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
94923
|
+
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
94924
|
+
*/
|
|
94925
|
+
function decode_isEntityInAttributeInvalidEnd(code) {
|
|
94926
|
+
return code === decode_CharCodes.EQUALS || decode_isAsciiAlphaNumeric(code);
|
|
94927
|
+
}
|
|
94928
|
+
var decode_EntityDecoderState;
|
|
94929
|
+
(function (EntityDecoderState) {
|
|
94930
|
+
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
94931
|
+
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
94932
|
+
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
94933
|
+
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
94934
|
+
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
94935
|
+
})(decode_EntityDecoderState || (decode_EntityDecoderState = {}));
|
|
94936
|
+
var esm_decode_DecodingMode;
|
|
94937
|
+
(function (DecodingMode) {
|
|
94938
|
+
/** Entities in text nodes that can end with any character. */
|
|
94939
|
+
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
94940
|
+
/** Only allow entities terminated with a semicolon. */
|
|
94941
|
+
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
94942
|
+
/** Entities in attributes have limitations on ending characters. */
|
|
94943
|
+
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
94944
|
+
})(esm_decode_DecodingMode || (esm_decode_DecodingMode = {}));
|
|
94945
|
+
/**
|
|
94946
|
+
* Token decoder with support of writing partial entities.
|
|
94947
|
+
*/
|
|
94948
|
+
class decode_EntityDecoder {
|
|
94949
|
+
constructor(
|
|
94950
|
+
/** The tree used to decode entities. */
|
|
94951
|
+
decodeTree,
|
|
94952
|
+
/**
|
|
94953
|
+
* The function that is called when a codepoint is decoded.
|
|
94954
|
+
*
|
|
94955
|
+
* For multi-byte named entities, this will be called multiple times,
|
|
94956
|
+
* with the second codepoint, and the same `consumed` value.
|
|
94957
|
+
*
|
|
94958
|
+
* @param codepoint The decoded codepoint.
|
|
94959
|
+
* @param consumed The number of bytes consumed by the decoder.
|
|
94960
|
+
*/
|
|
94961
|
+
emitCodePoint,
|
|
94962
|
+
/** An object that is used to produce errors. */
|
|
94963
|
+
errors) {
|
|
94964
|
+
this.decodeTree = decodeTree;
|
|
94965
|
+
this.emitCodePoint = emitCodePoint;
|
|
94966
|
+
this.errors = errors;
|
|
94967
|
+
/** The current state of the decoder. */
|
|
94968
|
+
this.state = decode_EntityDecoderState.EntityStart;
|
|
94969
|
+
/** Characters that were consumed while parsing an entity. */
|
|
94970
|
+
this.consumed = 1;
|
|
94971
|
+
/**
|
|
94972
|
+
* The result of the entity.
|
|
94973
|
+
*
|
|
94974
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
94975
|
+
* numeric entity.
|
|
94976
|
+
*/
|
|
94977
|
+
this.result = 0;
|
|
94978
|
+
/** The current index in the decode tree. */
|
|
94979
|
+
this.treeIndex = 0;
|
|
94980
|
+
/** The number of characters that were consumed in excess. */
|
|
94981
|
+
this.excess = 1;
|
|
94982
|
+
/** The mode in which the decoder is operating. */
|
|
94983
|
+
this.decodeMode = esm_decode_DecodingMode.Strict;
|
|
94984
|
+
}
|
|
94985
|
+
/** Resets the instance to make it reusable. */
|
|
94986
|
+
startEntity(decodeMode) {
|
|
94987
|
+
this.decodeMode = decodeMode;
|
|
94988
|
+
this.state = decode_EntityDecoderState.EntityStart;
|
|
94989
|
+
this.result = 0;
|
|
94990
|
+
this.treeIndex = 0;
|
|
94991
|
+
this.excess = 1;
|
|
94992
|
+
this.consumed = 1;
|
|
94993
|
+
}
|
|
94994
|
+
/**
|
|
94995
|
+
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
94996
|
+
* If the entity is incomplete, the decoder will return -1.
|
|
94997
|
+
*
|
|
94998
|
+
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
94999
|
+
* entity is incomplete, and resume when the next string is written.
|
|
95000
|
+
*
|
|
95001
|
+
* @param string The string containing the entity (or a continuation of the entity).
|
|
95002
|
+
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
95003
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
95004
|
+
*/
|
|
95005
|
+
write(str, offset) {
|
|
95006
|
+
switch (this.state) {
|
|
95007
|
+
case decode_EntityDecoderState.EntityStart: {
|
|
95008
|
+
if (str.charCodeAt(offset) === decode_CharCodes.NUM) {
|
|
95009
|
+
this.state = decode_EntityDecoderState.NumericStart;
|
|
95010
|
+
this.consumed += 1;
|
|
95011
|
+
return this.stateNumericStart(str, offset + 1);
|
|
95012
|
+
}
|
|
95013
|
+
this.state = decode_EntityDecoderState.NamedEntity;
|
|
95014
|
+
return this.stateNamedEntity(str, offset);
|
|
95015
|
+
}
|
|
95016
|
+
case decode_EntityDecoderState.NumericStart: {
|
|
95017
|
+
return this.stateNumericStart(str, offset);
|
|
95018
|
+
}
|
|
95019
|
+
case decode_EntityDecoderState.NumericDecimal: {
|
|
95020
|
+
return this.stateNumericDecimal(str, offset);
|
|
95021
|
+
}
|
|
95022
|
+
case decode_EntityDecoderState.NumericHex: {
|
|
95023
|
+
return this.stateNumericHex(str, offset);
|
|
95024
|
+
}
|
|
95025
|
+
case decode_EntityDecoderState.NamedEntity: {
|
|
95026
|
+
return this.stateNamedEntity(str, offset);
|
|
95027
|
+
}
|
|
95028
|
+
}
|
|
95029
|
+
}
|
|
95030
|
+
/**
|
|
95031
|
+
* Switches between the numeric decimal and hexadecimal states.
|
|
95032
|
+
*
|
|
95033
|
+
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
95034
|
+
*
|
|
95035
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
95036
|
+
* @param offset The current offset.
|
|
95037
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
95038
|
+
*/
|
|
95039
|
+
stateNumericStart(str, offset) {
|
|
95040
|
+
if (offset >= str.length) {
|
|
95041
|
+
return -1;
|
|
95042
|
+
}
|
|
95043
|
+
if ((str.charCodeAt(offset) | decode_TO_LOWER_BIT) === decode_CharCodes.LOWER_X) {
|
|
95044
|
+
this.state = decode_EntityDecoderState.NumericHex;
|
|
95045
|
+
this.consumed += 1;
|
|
95046
|
+
return this.stateNumericHex(str, offset + 1);
|
|
95047
|
+
}
|
|
95048
|
+
this.state = decode_EntityDecoderState.NumericDecimal;
|
|
95049
|
+
return this.stateNumericDecimal(str, offset);
|
|
95050
|
+
}
|
|
95051
|
+
addToNumericResult(str, start, end, base) {
|
|
95052
|
+
if (start !== end) {
|
|
95053
|
+
const digitCount = end - start;
|
|
95054
|
+
this.result =
|
|
95055
|
+
this.result * Math.pow(base, digitCount) +
|
|
95056
|
+
parseInt(str.substr(start, digitCount), base);
|
|
95057
|
+
this.consumed += digitCount;
|
|
95058
|
+
}
|
|
95059
|
+
}
|
|
95060
|
+
/**
|
|
95061
|
+
* Parses a hexadecimal numeric entity.
|
|
95062
|
+
*
|
|
95063
|
+
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
95064
|
+
*
|
|
95065
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
95066
|
+
* @param offset The current offset.
|
|
95067
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
95068
|
+
*/
|
|
95069
|
+
stateNumericHex(str, offset) {
|
|
95070
|
+
const startIdx = offset;
|
|
95071
|
+
while (offset < str.length) {
|
|
95072
|
+
const char = str.charCodeAt(offset);
|
|
95073
|
+
if (decode_isNumber(char) || decode_isHexadecimalCharacter(char)) {
|
|
95074
|
+
offset += 1;
|
|
95075
|
+
}
|
|
95076
|
+
else {
|
|
95077
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
95078
|
+
return this.emitNumericEntity(char, 3);
|
|
95079
|
+
}
|
|
95080
|
+
}
|
|
95081
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
95082
|
+
return -1;
|
|
95083
|
+
}
|
|
95084
|
+
/**
|
|
95085
|
+
* Parses a decimal numeric entity.
|
|
95086
|
+
*
|
|
95087
|
+
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
95088
|
+
*
|
|
95089
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
95090
|
+
* @param offset The current offset.
|
|
95091
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
95092
|
+
*/
|
|
95093
|
+
stateNumericDecimal(str, offset) {
|
|
95094
|
+
const startIdx = offset;
|
|
95095
|
+
while (offset < str.length) {
|
|
95096
|
+
const char = str.charCodeAt(offset);
|
|
95097
|
+
if (decode_isNumber(char)) {
|
|
95098
|
+
offset += 1;
|
|
95099
|
+
}
|
|
95100
|
+
else {
|
|
95101
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
95102
|
+
return this.emitNumericEntity(char, 2);
|
|
95103
|
+
}
|
|
95104
|
+
}
|
|
95105
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
95106
|
+
return -1;
|
|
95107
|
+
}
|
|
95108
|
+
/**
|
|
95109
|
+
* Validate and emit a numeric entity.
|
|
95110
|
+
*
|
|
95111
|
+
* Implements the logic from the `Hexademical character reference start
|
|
95112
|
+
* state` and `Numeric character reference end state` in the HTML spec.
|
|
95113
|
+
*
|
|
95114
|
+
* @param lastCp The last code point of the entity. Used to see if the
|
|
95115
|
+
* entity was terminated with a semicolon.
|
|
95116
|
+
* @param expectedLength The minimum number of characters that should be
|
|
95117
|
+
* consumed. Used to validate that at least one digit
|
|
95118
|
+
* was consumed.
|
|
95119
|
+
* @returns The number of characters that were consumed.
|
|
95120
|
+
*/
|
|
95121
|
+
emitNumericEntity(lastCp, expectedLength) {
|
|
95122
|
+
var _a;
|
|
95123
|
+
// Ensure we consumed at least one digit.
|
|
95124
|
+
if (this.consumed <= expectedLength) {
|
|
95125
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
95126
|
+
return 0;
|
|
95127
|
+
}
|
|
95128
|
+
// Figure out if this is a legit end of the entity
|
|
95129
|
+
if (lastCp === decode_CharCodes.SEMI) {
|
|
95130
|
+
this.consumed += 1;
|
|
95131
|
+
}
|
|
95132
|
+
else if (this.decodeMode === esm_decode_DecodingMode.Strict) {
|
|
95133
|
+
return 0;
|
|
95134
|
+
}
|
|
95135
|
+
this.emitCodePoint(decode_codepoint_replaceCodePoint(this.result), this.consumed);
|
|
95136
|
+
if (this.errors) {
|
|
95137
|
+
if (lastCp !== decode_CharCodes.SEMI) {
|
|
95138
|
+
this.errors.missingSemicolonAfterCharacterReference();
|
|
95139
|
+
}
|
|
95140
|
+
this.errors.validateNumericCharacterReference(this.result);
|
|
95141
|
+
}
|
|
95142
|
+
return this.consumed;
|
|
95143
|
+
}
|
|
95144
|
+
/**
|
|
95145
|
+
* Parses a named entity.
|
|
95146
|
+
*
|
|
95147
|
+
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
95148
|
+
*
|
|
95149
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
95150
|
+
* @param offset The current offset.
|
|
95151
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
95152
|
+
*/
|
|
95153
|
+
stateNamedEntity(str, offset) {
|
|
95154
|
+
const { decodeTree } = this;
|
|
95155
|
+
let current = decodeTree[this.treeIndex];
|
|
95156
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
95157
|
+
let valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
95158
|
+
for (; offset < str.length; offset++, this.excess++) {
|
|
95159
|
+
const char = str.charCodeAt(offset);
|
|
95160
|
+
this.treeIndex = decode_determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
95161
|
+
if (this.treeIndex < 0) {
|
|
95162
|
+
return this.result === 0 ||
|
|
95163
|
+
// If we are parsing an attribute
|
|
95164
|
+
(this.decodeMode === esm_decode_DecodingMode.Attribute &&
|
|
95165
|
+
// We shouldn't have consumed any characters after the entity,
|
|
95166
|
+
(valueLength === 0 ||
|
|
95167
|
+
// And there should be no invalid characters.
|
|
95168
|
+
decode_isEntityInAttributeInvalidEnd(char)))
|
|
95169
|
+
? 0
|
|
95170
|
+
: this.emitNotTerminatedNamedEntity();
|
|
95171
|
+
}
|
|
95172
|
+
current = decodeTree[this.treeIndex];
|
|
95173
|
+
valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
95174
|
+
// If the branch is a value, store it and continue
|
|
95175
|
+
if (valueLength !== 0) {
|
|
95176
|
+
// If the entity is terminated by a semicolon, we are done.
|
|
95177
|
+
if (char === decode_CharCodes.SEMI) {
|
|
95178
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
95179
|
+
}
|
|
95180
|
+
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
95181
|
+
if (this.decodeMode !== esm_decode_DecodingMode.Strict) {
|
|
95182
|
+
this.result = this.treeIndex;
|
|
95183
|
+
this.consumed += this.excess;
|
|
95184
|
+
this.excess = 0;
|
|
95185
|
+
}
|
|
95186
|
+
}
|
|
95187
|
+
}
|
|
95188
|
+
return -1;
|
|
95189
|
+
}
|
|
95190
|
+
/**
|
|
95191
|
+
* Emit a named entity that was not terminated with a semicolon.
|
|
95192
|
+
*
|
|
95193
|
+
* @returns The number of characters consumed.
|
|
95194
|
+
*/
|
|
95195
|
+
emitNotTerminatedNamedEntity() {
|
|
95196
|
+
var _a;
|
|
95197
|
+
const { result, decodeTree } = this;
|
|
95198
|
+
const valueLength = (decodeTree[result] & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
95199
|
+
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
95200
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
95201
|
+
return this.consumed;
|
|
95202
|
+
}
|
|
95203
|
+
/**
|
|
95204
|
+
* Emit a named entity.
|
|
95205
|
+
*
|
|
95206
|
+
* @param result The index of the entity in the decode tree.
|
|
95207
|
+
* @param valueLength The number of bytes in the entity.
|
|
95208
|
+
* @param consumed The number of characters consumed.
|
|
95209
|
+
*
|
|
95210
|
+
* @returns The number of characters consumed.
|
|
95211
|
+
*/
|
|
95212
|
+
emitNamedEntityData(result, valueLength, consumed) {
|
|
95213
|
+
const { decodeTree } = this;
|
|
95214
|
+
this.emitCodePoint(valueLength === 1
|
|
95215
|
+
? decodeTree[result] & ~decode_BinTrieFlags.VALUE_LENGTH
|
|
95216
|
+
: decodeTree[result + 1], consumed);
|
|
95217
|
+
if (valueLength === 3) {
|
|
95218
|
+
// For multi-byte values, we need to emit the second byte.
|
|
95219
|
+
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
95220
|
+
}
|
|
95221
|
+
return consumed;
|
|
95222
|
+
}
|
|
95223
|
+
/**
|
|
95224
|
+
* Signal to the parser that the end of the input was reached.
|
|
95225
|
+
*
|
|
95226
|
+
* Remaining data will be emitted and relevant errors will be produced.
|
|
95227
|
+
*
|
|
95228
|
+
* @returns The number of characters consumed.
|
|
95229
|
+
*/
|
|
95230
|
+
end() {
|
|
95231
|
+
var _a;
|
|
95232
|
+
switch (this.state) {
|
|
95233
|
+
case decode_EntityDecoderState.NamedEntity: {
|
|
95234
|
+
// Emit a named entity if we have one.
|
|
95235
|
+
return this.result !== 0 &&
|
|
95236
|
+
(this.decodeMode !== esm_decode_DecodingMode.Attribute ||
|
|
95237
|
+
this.result === this.treeIndex)
|
|
95238
|
+
? this.emitNotTerminatedNamedEntity()
|
|
95239
|
+
: 0;
|
|
95240
|
+
}
|
|
95241
|
+
// Otherwise, emit a numeric entity if we have one.
|
|
95242
|
+
case decode_EntityDecoderState.NumericDecimal: {
|
|
95243
|
+
return this.emitNumericEntity(0, 2);
|
|
95244
|
+
}
|
|
95245
|
+
case decode_EntityDecoderState.NumericHex: {
|
|
95246
|
+
return this.emitNumericEntity(0, 3);
|
|
95247
|
+
}
|
|
95248
|
+
case decode_EntityDecoderState.NumericStart: {
|
|
95249
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
95250
|
+
return 0;
|
|
95251
|
+
}
|
|
95252
|
+
case decode_EntityDecoderState.EntityStart: {
|
|
95253
|
+
// Return 0 if we have no entity.
|
|
95254
|
+
return 0;
|
|
95255
|
+
}
|
|
95256
|
+
}
|
|
95257
|
+
}
|
|
95258
|
+
}
|
|
95259
|
+
/**
|
|
95260
|
+
* Creates a function that decodes entities in a string.
|
|
95261
|
+
*
|
|
95262
|
+
* @param decodeTree The decode tree.
|
|
95263
|
+
* @returns A function that decodes entities in a string.
|
|
95264
|
+
*/
|
|
95265
|
+
function decode_getDecoder(decodeTree) {
|
|
95266
|
+
let ret = "";
|
|
95267
|
+
const decoder = new decode_EntityDecoder(decodeTree, (str) => (ret += esm_decode_codepoint_fromCodePoint(str)));
|
|
95268
|
+
return function decodeWithTrie(str, decodeMode) {
|
|
95269
|
+
let lastIndex = 0;
|
|
95270
|
+
let offset = 0;
|
|
95271
|
+
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
95272
|
+
ret += str.slice(lastIndex, offset);
|
|
95273
|
+
decoder.startEntity(decodeMode);
|
|
95274
|
+
const len = decoder.write(str,
|
|
95275
|
+
// Skip the "&"
|
|
95276
|
+
offset + 1);
|
|
95277
|
+
if (len < 0) {
|
|
95278
|
+
lastIndex = offset + decoder.end();
|
|
95279
|
+
break;
|
|
95280
|
+
}
|
|
95281
|
+
lastIndex = offset + len;
|
|
95282
|
+
// If `len` is 0, skip the current `&` and continue.
|
|
95283
|
+
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
95284
|
+
}
|
|
95285
|
+
const result = ret + str.slice(lastIndex);
|
|
95286
|
+
// Make sure we don't keep a reference to the final string.
|
|
95287
|
+
ret = "";
|
|
95288
|
+
return result;
|
|
95289
|
+
};
|
|
95290
|
+
}
|
|
95291
|
+
/**
|
|
95292
|
+
* Determines the branch of the current node that is taken given the current
|
|
95293
|
+
* character. This function is used to traverse the trie.
|
|
95294
|
+
*
|
|
95295
|
+
* @param decodeTree The trie.
|
|
95296
|
+
* @param current The current node.
|
|
95297
|
+
* @param nodeIdx The index right after the current node and its value.
|
|
95298
|
+
* @param char The current character.
|
|
95299
|
+
* @returns The index of the next node, or -1 if no branch is taken.
|
|
95300
|
+
*/
|
|
95301
|
+
function decode_determineBranch(decodeTree, current, nodeIdx, char) {
|
|
95302
|
+
const branchCount = (current & decode_BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
95303
|
+
const jumpOffset = current & decode_BinTrieFlags.JUMP_TABLE;
|
|
95304
|
+
// Case 1: Single branch encoded in jump offset
|
|
95305
|
+
if (branchCount === 0) {
|
|
95306
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
95307
|
+
}
|
|
95308
|
+
// Case 2: Multiple branches encoded in jump table
|
|
95309
|
+
if (jumpOffset) {
|
|
95310
|
+
const value = char - jumpOffset;
|
|
95311
|
+
return value < 0 || value >= branchCount
|
|
95312
|
+
? -1
|
|
95313
|
+
: decodeTree[nodeIdx + value] - 1;
|
|
95314
|
+
}
|
|
95315
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
95316
|
+
// Binary search for the character.
|
|
95317
|
+
let lo = nodeIdx;
|
|
95318
|
+
let hi = lo + branchCount - 1;
|
|
95319
|
+
while (lo <= hi) {
|
|
95320
|
+
const mid = (lo + hi) >>> 1;
|
|
95321
|
+
const midVal = decodeTree[mid];
|
|
95322
|
+
if (midVal < char) {
|
|
95323
|
+
lo = mid + 1;
|
|
95324
|
+
}
|
|
95325
|
+
else if (midVal > char) {
|
|
95326
|
+
hi = mid - 1;
|
|
95327
|
+
}
|
|
95328
|
+
else {
|
|
95329
|
+
return decodeTree[mid + branchCount];
|
|
95330
|
+
}
|
|
95331
|
+
}
|
|
95332
|
+
return -1;
|
|
95333
|
+
}
|
|
95334
|
+
const decode_htmlDecoder = decode_getDecoder(decode_data_html);
|
|
95335
|
+
const decode_xmlDecoder = decode_getDecoder(decode_data_xml);
|
|
95336
|
+
/**
|
|
95337
|
+
* Decodes an HTML string.
|
|
95338
|
+
*
|
|
95339
|
+
* @param str The string to decode.
|
|
95340
|
+
* @param mode The decoding mode.
|
|
95341
|
+
* @returns The decoded string.
|
|
95342
|
+
*/
|
|
95343
|
+
function esm_decode_decodeHTML(str, mode = esm_decode_DecodingMode.Legacy) {
|
|
95344
|
+
return decode_htmlDecoder(str, mode);
|
|
95345
|
+
}
|
|
95346
|
+
/**
|
|
95347
|
+
* Decodes an HTML string in an attribute.
|
|
95348
|
+
*
|
|
95349
|
+
* @param str The string to decode.
|
|
95350
|
+
* @returns The decoded string.
|
|
95351
|
+
*/
|
|
95352
|
+
function decode_decodeHTMLAttribute(str) {
|
|
95353
|
+
return decode_htmlDecoder(str, esm_decode_DecodingMode.Attribute);
|
|
95354
|
+
}
|
|
95355
|
+
/**
|
|
95356
|
+
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
95357
|
+
*
|
|
95358
|
+
* @param str The string to decode.
|
|
95359
|
+
* @returns The decoded string.
|
|
95360
|
+
*/
|
|
95361
|
+
function decode_decodeHTMLStrict(str) {
|
|
95362
|
+
return decode_htmlDecoder(str, esm_decode_DecodingMode.Strict);
|
|
95363
|
+
}
|
|
95364
|
+
/**
|
|
95365
|
+
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
95366
|
+
*
|
|
95367
|
+
* @param str The string to decode.
|
|
95368
|
+
* @returns The decoded string.
|
|
95369
|
+
*/
|
|
95370
|
+
function esm_decode_decodeXML(str) {
|
|
95371
|
+
return decode_xmlDecoder(str, esm_decode_DecodingMode.Strict);
|
|
95372
|
+
}
|
|
95373
|
+
//# sourceMappingURL=decode.js.map
|
|
94833
95374
|
;// ./node_modules/entities/lib/esm/generated/encode-html.js
|
|
94834
95375
|
// Generated using scripts/write-encode-map.ts
|
|
94835
95376
|
function restoreDiff(arr) {
|
|
@@ -94841,6 +95382,123 @@ function restoreDiff(arr) {
|
|
|
94841
95382
|
// prettier-ignore
|
|
94842
95383
|
/* harmony default export */ const encode_html = (new Map(/* #__PURE__ */ restoreDiff([[9, "	"], [0, "
"], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])));
|
|
94843
95384
|
//# sourceMappingURL=encode-html.js.map
|
|
95385
|
+
;// ./node_modules/entities/lib/esm/escape.js
|
|
95386
|
+
const esm_escape_xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
|
|
95387
|
+
const escape_xmlCodeMap = new Map([
|
|
95388
|
+
[34, """],
|
|
95389
|
+
[38, "&"],
|
|
95390
|
+
[39, "'"],
|
|
95391
|
+
[60, "<"],
|
|
95392
|
+
[62, ">"],
|
|
95393
|
+
]);
|
|
95394
|
+
// For compatibility with node < 4, we wrap `codePointAt`
|
|
95395
|
+
const esm_escape_getCodePoint =
|
|
95396
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
95397
|
+
String.prototype.codePointAt != null
|
|
95398
|
+
? (str, index) => str.codePointAt(index)
|
|
95399
|
+
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
95400
|
+
(c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
|
|
95401
|
+
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
95402
|
+
c.charCodeAt(index + 1) -
|
|
95403
|
+
0xdc00 +
|
|
95404
|
+
0x10000
|
|
95405
|
+
: c.charCodeAt(index);
|
|
95406
|
+
/**
|
|
95407
|
+
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
95408
|
+
* documents using XML entities.
|
|
95409
|
+
*
|
|
95410
|
+
* If a character has no equivalent entity, a
|
|
95411
|
+
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
95412
|
+
*/
|
|
95413
|
+
function esm_escape_encodeXML(str) {
|
|
95414
|
+
let ret = "";
|
|
95415
|
+
let lastIdx = 0;
|
|
95416
|
+
let match;
|
|
95417
|
+
while ((match = esm_escape_xmlReplacer.exec(str)) !== null) {
|
|
95418
|
+
const i = match.index;
|
|
95419
|
+
const char = str.charCodeAt(i);
|
|
95420
|
+
const next = escape_xmlCodeMap.get(char);
|
|
95421
|
+
if (next !== undefined) {
|
|
95422
|
+
ret += str.substring(lastIdx, i) + next;
|
|
95423
|
+
lastIdx = i + 1;
|
|
95424
|
+
}
|
|
95425
|
+
else {
|
|
95426
|
+
ret += `${str.substring(lastIdx, i)}&#x${esm_escape_getCodePoint(str, i).toString(16)};`;
|
|
95427
|
+
// Increase by 1 if we have a surrogate pair
|
|
95428
|
+
lastIdx = esm_escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
95429
|
+
}
|
|
95430
|
+
}
|
|
95431
|
+
return ret + str.substr(lastIdx);
|
|
95432
|
+
}
|
|
95433
|
+
/**
|
|
95434
|
+
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
95435
|
+
* documents using numeric hexadecimal reference (eg. `ü`).
|
|
95436
|
+
*
|
|
95437
|
+
* Have a look at `escapeUTF8` if you want a more concise output at the expense
|
|
95438
|
+
* of reduced transportability.
|
|
95439
|
+
*
|
|
95440
|
+
* @param data String to escape.
|
|
95441
|
+
*/
|
|
95442
|
+
const esm_escape_escape = (/* unused pure expression or super */ null && (esm_escape_encodeXML));
|
|
95443
|
+
/**
|
|
95444
|
+
* Creates a function that escapes all characters matched by the given regular
|
|
95445
|
+
* expression using the given map of characters to escape to their entities.
|
|
95446
|
+
*
|
|
95447
|
+
* @param regex Regular expression to match characters to escape.
|
|
95448
|
+
* @param map Map of characters to escape to their entities.
|
|
95449
|
+
*
|
|
95450
|
+
* @returns Function that escapes all characters matched by the given regular
|
|
95451
|
+
* expression using the given map of characters to escape to their entities.
|
|
95452
|
+
*/
|
|
95453
|
+
function escape_getEscaper(regex, map) {
|
|
95454
|
+
return function escape(data) {
|
|
95455
|
+
let match;
|
|
95456
|
+
let lastIdx = 0;
|
|
95457
|
+
let result = "";
|
|
95458
|
+
while ((match = regex.exec(data))) {
|
|
95459
|
+
if (lastIdx !== match.index) {
|
|
95460
|
+
result += data.substring(lastIdx, match.index);
|
|
95461
|
+
}
|
|
95462
|
+
// We know that this character will be in the map.
|
|
95463
|
+
result += map.get(match[0].charCodeAt(0));
|
|
95464
|
+
// Every match will be of length 1
|
|
95465
|
+
lastIdx = match.index + 1;
|
|
95466
|
+
}
|
|
95467
|
+
return result + data.substring(lastIdx);
|
|
95468
|
+
};
|
|
95469
|
+
}
|
|
95470
|
+
/**
|
|
95471
|
+
* Encodes all characters not valid in XML documents using XML entities.
|
|
95472
|
+
*
|
|
95473
|
+
* Note that the output will be character-set dependent.
|
|
95474
|
+
*
|
|
95475
|
+
* @param data String to escape.
|
|
95476
|
+
*/
|
|
95477
|
+
const esm_escape_escapeUTF8 = escape_getEscaper(/[&<>'"]/g, escape_xmlCodeMap);
|
|
95478
|
+
/**
|
|
95479
|
+
* Encodes all characters that have to be escaped in HTML attributes,
|
|
95480
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
95481
|
+
*
|
|
95482
|
+
* @param data String to escape.
|
|
95483
|
+
*/
|
|
95484
|
+
const esm_escape_escapeAttribute = escape_getEscaper(/["&\u00A0]/g, new Map([
|
|
95485
|
+
[34, """],
|
|
95486
|
+
[38, "&"],
|
|
95487
|
+
[160, " "],
|
|
95488
|
+
]));
|
|
95489
|
+
/**
|
|
95490
|
+
* Encodes all characters that have to be escaped in HTML text,
|
|
95491
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
95492
|
+
*
|
|
95493
|
+
* @param data String to escape.
|
|
95494
|
+
*/
|
|
95495
|
+
const esm_escape_escapeText = escape_getEscaper(/[&<>\u00A0]/g, new Map([
|
|
95496
|
+
[38, "&"],
|
|
95497
|
+
[60, "<"],
|
|
95498
|
+
[62, ">"],
|
|
95499
|
+
[160, " "],
|
|
95500
|
+
]));
|
|
95501
|
+
//# sourceMappingURL=escape.js.map
|
|
94844
95502
|
;// ./node_modules/entities/lib/esm/encode.js
|
|
94845
95503
|
|
|
94846
95504
|
|
|
@@ -95018,7 +95676,7 @@ const looseHtmlEntityConstruct = {
|
|
|
95018
95676
|
};
|
|
95019
95677
|
function resolveEntity(name) {
|
|
95020
95678
|
const input = `&${name};`;
|
|
95021
|
-
const decoded =
|
|
95679
|
+
const decoded = decode_decodeHTMLStrict(input);
|
|
95022
95680
|
return decoded !== input ? decoded : undefined;
|
|
95023
95681
|
}
|
|
95024
95682
|
function tokenizeLooseHtmlEntity(effects, ok, nok) {
|
|
@@ -96591,7 +97249,7 @@ const transformCallout = (jsx) => {
|
|
|
96591
97249
|
};
|
|
96592
97250
|
const transformEmbed = (jsx) => {
|
|
96593
97251
|
const attrs = getAttrs(jsx);
|
|
96594
|
-
const { favicon, height, html, iframe, image, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = attrs;
|
|
97252
|
+
const { favicon, height, href, html, iframe, image, providerName, providerUrl, provider, title = '', typeOfEmbed, url = '', width, } = attrs;
|
|
96595
97253
|
return {
|
|
96596
97254
|
type: NodeTypes.embedBlock,
|
|
96597
97255
|
title,
|
|
@@ -96603,11 +97261,13 @@ const transformEmbed = (jsx) => {
|
|
|
96603
97261
|
url,
|
|
96604
97262
|
...(favicon && { favicon }),
|
|
96605
97263
|
...(height && { height }),
|
|
97264
|
+
...(href && { href }),
|
|
96606
97265
|
...(html && { html }),
|
|
96607
97266
|
...(iframe !== undefined && { iframe }),
|
|
96608
97267
|
...(image && { image }),
|
|
96609
97268
|
...(providerName && { providerName }),
|
|
96610
97269
|
...(providerUrl && { providerUrl }),
|
|
97270
|
+
...(provider && { provider }),
|
|
96611
97271
|
...(typeOfEmbed && { typeOfEmbed }),
|
|
96612
97272
|
...(width && { width }),
|
|
96613
97273
|
},
|
|
@@ -96671,7 +97331,7 @@ const transformMagicBlockImage = (node) => {
|
|
|
96671
97331
|
const transformMagicBlockEmbed = (node) => {
|
|
96672
97332
|
const { data, position } = node;
|
|
96673
97333
|
const hProps = data?.hProperties || {};
|
|
96674
|
-
const { favicon, html, image, providerName, providerUrl, title = '', url = '' } = hProps;
|
|
97334
|
+
const { favicon, height, href, html, iframe, image, provider, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = hProps;
|
|
96675
97335
|
return {
|
|
96676
97336
|
type: NodeTypes.embedBlock,
|
|
96677
97337
|
title,
|
|
@@ -96682,20 +97342,81 @@ const transformMagicBlockEmbed = (node) => {
|
|
|
96682
97342
|
title,
|
|
96683
97343
|
url,
|
|
96684
97344
|
...(favicon && { favicon }),
|
|
97345
|
+
...(height && { height }),
|
|
97346
|
+
...(href && { href }),
|
|
96685
97347
|
...(html && { html }),
|
|
97348
|
+
...(iframe !== undefined && { iframe }),
|
|
96686
97349
|
...(image && { image }),
|
|
97350
|
+
...(typeOfEmbed && { typeOfEmbed }),
|
|
96687
97351
|
...(providerName && { providerName }),
|
|
96688
97352
|
...(providerUrl && { providerUrl }),
|
|
97353
|
+
...(provider && { provider }),
|
|
97354
|
+
...(width && { width }),
|
|
96689
97355
|
},
|
|
96690
97356
|
},
|
|
96691
97357
|
position,
|
|
96692
97358
|
};
|
|
96693
97359
|
};
|
|
97360
|
+
const mdxish_jsx_to_mdast_isTableCell = (node) => isMDXElement(node) && ['th', 'td'].includes(node.name);
|
|
97361
|
+
/**
|
|
97362
|
+
* Converts a JSX <Table> element to an MDAST table node with alignment.
|
|
97363
|
+
* Returns null for header-less tables since MDAST always promotes the first row to <thead>.
|
|
97364
|
+
*/
|
|
97365
|
+
const transformTable = (jsx) => {
|
|
97366
|
+
let hasThead = false;
|
|
97367
|
+
visit(jsx, isMDXElement, (child) => {
|
|
97368
|
+
if (child.name === 'thead')
|
|
97369
|
+
hasThead = true;
|
|
97370
|
+
});
|
|
97371
|
+
if (!hasThead)
|
|
97372
|
+
return null;
|
|
97373
|
+
const { align: alignAttr } = getAttrs(jsx);
|
|
97374
|
+
const align = Array.isArray(alignAttr) ? alignAttr : null;
|
|
97375
|
+
const rows = [];
|
|
97376
|
+
visit(jsx, isMDXElement, (child) => {
|
|
97377
|
+
if (child.name !== 'thead' && child.name !== 'tbody')
|
|
97378
|
+
return;
|
|
97379
|
+
visit(child, isMDXElement, (row) => {
|
|
97380
|
+
if (row.name !== 'tr')
|
|
97381
|
+
return;
|
|
97382
|
+
const cells = [];
|
|
97383
|
+
visit(row, mdxish_jsx_to_mdast_isTableCell, (cell) => {
|
|
97384
|
+
const parsedChildren = cell.children.flatMap(parsedNode => {
|
|
97385
|
+
if (parsedNode.type === 'paragraph' && 'children' in parsedNode && parsedNode.children) {
|
|
97386
|
+
return parsedNode.children;
|
|
97387
|
+
}
|
|
97388
|
+
return [parsedNode];
|
|
97389
|
+
});
|
|
97390
|
+
cells.push({
|
|
97391
|
+
type: 'tableCell',
|
|
97392
|
+
children: parsedChildren,
|
|
97393
|
+
position: cell.position,
|
|
97394
|
+
});
|
|
97395
|
+
});
|
|
97396
|
+
rows.push({
|
|
97397
|
+
type: 'tableRow',
|
|
97398
|
+
children: cells,
|
|
97399
|
+
position: row.position,
|
|
97400
|
+
});
|
|
97401
|
+
});
|
|
97402
|
+
});
|
|
97403
|
+
const columnCount = rows[0]?.children?.length || 0;
|
|
97404
|
+
const alignArray = align && columnCount > 0
|
|
97405
|
+
? align.slice(0, columnCount).concat(Array.from({ length: Math.max(0, columnCount - align.length) }, () => null))
|
|
97406
|
+
: Array.from({ length: columnCount }, () => null);
|
|
97407
|
+
return {
|
|
97408
|
+
type: 'table',
|
|
97409
|
+
align: alignArray,
|
|
97410
|
+
position: jsx.position,
|
|
97411
|
+
children: rows,
|
|
97412
|
+
};
|
|
97413
|
+
};
|
|
96694
97414
|
const COMPONENT_MAP = {
|
|
96695
97415
|
Callout: transformCallout,
|
|
96696
97416
|
Embed: transformEmbed,
|
|
96697
97417
|
Image: transformImage,
|
|
96698
97418
|
Recipe: transformRecipe,
|
|
97419
|
+
Table: transformTable,
|
|
96699
97420
|
};
|
|
96700
97421
|
/**
|
|
96701
97422
|
* Transform mdxJsxFlowElement nodes and magic block nodes into proper MDAST node types.
|
|
@@ -96718,6 +97439,8 @@ const mdxishJsxToMdast = () => tree => {
|
|
|
96718
97439
|
if (!transformer)
|
|
96719
97440
|
return;
|
|
96720
97441
|
const newNode = transformer(node);
|
|
97442
|
+
if (!newNode)
|
|
97443
|
+
return;
|
|
96721
97444
|
// Replace the JSX node with the MDAST node
|
|
96722
97445
|
parent.children[index] = newNode;
|
|
96723
97446
|
});
|
|
@@ -96854,6 +97577,74 @@ const mdxishMermaidTransformer = () => (tree) => {
|
|
|
96854
97577
|
};
|
|
96855
97578
|
/* harmony default export */ const mdxish_mermaid = (mdxishMermaidTransformer);
|
|
96856
97579
|
|
|
97580
|
+
;// ./processor/transform/mdxish/mdxish-self-closing-blocks.ts
|
|
97581
|
+
|
|
97582
|
+
|
|
97583
|
+
/**
|
|
97584
|
+
* Tags to process as self-closing blocks.
|
|
97585
|
+
* These components use simple string attributes (no JSX expressions like `data={[...]}`).
|
|
97586
|
+
* Components with JSX expression attributes should NOT be added here as parseAttributes
|
|
97587
|
+
* cannot handle them correctly.
|
|
97588
|
+
*/
|
|
97589
|
+
const SELF_CLOSING_BLOCK_TAGS = new Set(['Embed', 'Recipe']);
|
|
97590
|
+
// Regex to match self-closing PascalCase tags (handles multi-line)
|
|
97591
|
+
const selfClosingTagPattern = /^<([A-Z][A-Za-z0-9_]*)([\s\S]*?)\/>$/;
|
|
97592
|
+
/**
|
|
97593
|
+
* Try to convert a paragraph node containing a self-closing JSX component into an mdxJsxFlowElement.
|
|
97594
|
+
* Returns the new node if conversion succeeded, or null if the node doesn't match.
|
|
97595
|
+
*/
|
|
97596
|
+
const tryConvertToMdxNode = (node) => {
|
|
97597
|
+
if (node.children.length !== 1)
|
|
97598
|
+
return null;
|
|
97599
|
+
const child = node.children[0];
|
|
97600
|
+
if (child.type !== 'html')
|
|
97601
|
+
return null;
|
|
97602
|
+
const value = child.value?.trim();
|
|
97603
|
+
if (!value)
|
|
97604
|
+
return null;
|
|
97605
|
+
const match = value.match(selfClosingTagPattern);
|
|
97606
|
+
if (!match)
|
|
97607
|
+
return null;
|
|
97608
|
+
const [, tag, attrString] = match;
|
|
97609
|
+
if (!SELF_CLOSING_BLOCK_TAGS.has(tag))
|
|
97610
|
+
return null;
|
|
97611
|
+
return {
|
|
97612
|
+
type: 'mdxJsxFlowElement',
|
|
97613
|
+
name: tag,
|
|
97614
|
+
attributes: parseAttributes(attrString),
|
|
97615
|
+
children: [],
|
|
97616
|
+
position: node.position,
|
|
97617
|
+
};
|
|
97618
|
+
};
|
|
97619
|
+
/**
|
|
97620
|
+
* Transform paragraph-wrapped self-closing JSX components into mdxJsxFlowElement nodes.
|
|
97621
|
+
*
|
|
97622
|
+
* CommonMark wraps multi-line JSX in paragraphs when the opening tag isn't complete
|
|
97623
|
+
* on one line. This plugin detects these structures and unwraps them for components
|
|
97624
|
+
* in the SELF_CLOSING_BLOCK_TAGS allowlist.
|
|
97625
|
+
*
|
|
97626
|
+
* Input structure:
|
|
97627
|
+
* ```
|
|
97628
|
+
* paragraph > html: "<Embed\n typeOfEmbed=\"youtube\"\n/>"
|
|
97629
|
+
* ```
|
|
97630
|
+
*
|
|
97631
|
+
* Output structure:
|
|
97632
|
+
* ```
|
|
97633
|
+
* mdxJsxFlowElement: { name: "Embed", attributes: [...], children: [] }
|
|
97634
|
+
* ```
|
|
97635
|
+
*/
|
|
97636
|
+
const mdxishSelfClosingBlocks = () => tree => {
|
|
97637
|
+
visit(tree, 'paragraph', (node, index, parent) => {
|
|
97638
|
+
if (index === undefined || !parent)
|
|
97639
|
+
return;
|
|
97640
|
+
const mdxNode = tryConvertToMdxNode(node);
|
|
97641
|
+
if (mdxNode) {
|
|
97642
|
+
parent.children.splice(index, 1, mdxNode);
|
|
97643
|
+
}
|
|
97644
|
+
});
|
|
97645
|
+
};
|
|
97646
|
+
/* harmony default export */ const mdxish_self_closing_blocks = (mdxishSelfClosingBlocks);
|
|
97647
|
+
|
|
96857
97648
|
;// ./processor/transform/mdxish/mdxish-snake-case-components.ts
|
|
96858
97649
|
|
|
96859
97650
|
|
|
@@ -96930,6 +97721,126 @@ function restoreSnakeCase(placeholderName, mapping) {
|
|
|
96930
97721
|
return matchingKey ? mapping[matchingKey] : placeholderName;
|
|
96931
97722
|
}
|
|
96932
97723
|
|
|
97724
|
+
;// ./processor/transform/mdxish/mdxish-tables-to-jsx.ts
|
|
97725
|
+
|
|
97726
|
+
|
|
97727
|
+
const mdxish_tables_to_jsx_alignToStyle = (align) => {
|
|
97728
|
+
if (!align || align === 'left')
|
|
97729
|
+
return null;
|
|
97730
|
+
return {
|
|
97731
|
+
type: 'mdxJsxAttribute',
|
|
97732
|
+
name: 'style',
|
|
97733
|
+
value: {
|
|
97734
|
+
type: 'mdxJsxAttributeValueExpression',
|
|
97735
|
+
value: `{ textAlign: "${align}" }`,
|
|
97736
|
+
},
|
|
97737
|
+
};
|
|
97738
|
+
};
|
|
97739
|
+
const mdxish_tables_to_jsx_isTableCell = (node) => ['tableHead', 'tableCell'].includes(node.type);
|
|
97740
|
+
const mdxish_tables_to_jsx_isLiteral = (node) => 'value' in node;
|
|
97741
|
+
/**
|
|
97742
|
+
* Mdxish-specific version of `tablesToJsx`. Differs from the shared MDX version:
|
|
97743
|
+
*
|
|
97744
|
+
* - Excludes `html` nodes from triggering JSX conversion because raw HTML
|
|
97745
|
+
* inside JSX `<Table>` breaks remarkMdx parsing on the deserialization roundtrip.
|
|
97746
|
+
* - Skips empty cells instead of aborting the entire visit so that flow content
|
|
97747
|
+
* in later cells is still detected.
|
|
97748
|
+
*/
|
|
97749
|
+
const mdxishTablesToJsx = () => tree => {
|
|
97750
|
+
visit(tree, (node) => ['table', 'tableau'].includes(node.type), (table, index, parent) => {
|
|
97751
|
+
let hasFlowContent = false;
|
|
97752
|
+
visit(table, mdxish_tables_to_jsx_isTableCell, (cell) => {
|
|
97753
|
+
if (cell.children.length === 0)
|
|
97754
|
+
return;
|
|
97755
|
+
const content = cell.children.length === 1 && cell.children[0].type === 'paragraph'
|
|
97756
|
+
? cell.children[0].children[0]
|
|
97757
|
+
: cell.children[0];
|
|
97758
|
+
if (!content)
|
|
97759
|
+
return;
|
|
97760
|
+
visit(cell, 'break', (_, breakIndex, breakParent) => {
|
|
97761
|
+
breakParent.children.splice(breakIndex, 1, { type: 'text', value: '\n' });
|
|
97762
|
+
});
|
|
97763
|
+
if (!(phrasing(content) || content.type === 'plain') && content.type !== 'escape') {
|
|
97764
|
+
if (content.type === 'html')
|
|
97765
|
+
return;
|
|
97766
|
+
hasFlowContent = true;
|
|
97767
|
+
return EXIT;
|
|
97768
|
+
}
|
|
97769
|
+
visit(cell, mdxish_tables_to_jsx_isLiteral, (node) => {
|
|
97770
|
+
if (node.value.match(/\n/)) {
|
|
97771
|
+
hasFlowContent = true;
|
|
97772
|
+
return EXIT;
|
|
97773
|
+
}
|
|
97774
|
+
});
|
|
97775
|
+
});
|
|
97776
|
+
if (!hasFlowContent) {
|
|
97777
|
+
table.type = 'table';
|
|
97778
|
+
return;
|
|
97779
|
+
}
|
|
97780
|
+
const styles = table.align.map(mdxish_tables_to_jsx_alignToStyle);
|
|
97781
|
+
const head = {
|
|
97782
|
+
attributes: [],
|
|
97783
|
+
type: 'mdxJsxFlowElement',
|
|
97784
|
+
name: 'thead',
|
|
97785
|
+
children: [
|
|
97786
|
+
{
|
|
97787
|
+
attributes: [],
|
|
97788
|
+
type: 'mdxJsxFlowElement',
|
|
97789
|
+
name: 'tr',
|
|
97790
|
+
children: table.children[0].children.map((cell, cellIndex) => {
|
|
97791
|
+
return {
|
|
97792
|
+
attributes: [],
|
|
97793
|
+
type: 'mdxJsxFlowElement',
|
|
97794
|
+
name: 'th',
|
|
97795
|
+
children: cell.children,
|
|
97796
|
+
...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
|
|
97797
|
+
};
|
|
97798
|
+
}),
|
|
97799
|
+
},
|
|
97800
|
+
],
|
|
97801
|
+
};
|
|
97802
|
+
const body = {
|
|
97803
|
+
attributes: [],
|
|
97804
|
+
type: 'mdxJsxFlowElement',
|
|
97805
|
+
name: 'tbody',
|
|
97806
|
+
children: table.children.splice(1).map(row => {
|
|
97807
|
+
return {
|
|
97808
|
+
attributes: [],
|
|
97809
|
+
type: 'mdxJsxFlowElement',
|
|
97810
|
+
name: 'tr',
|
|
97811
|
+
children: row.children.map((cell, cellIndex) => {
|
|
97812
|
+
return {
|
|
97813
|
+
type: 'mdxJsxFlowElement',
|
|
97814
|
+
name: 'td',
|
|
97815
|
+
children: cell.children,
|
|
97816
|
+
...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
|
|
97817
|
+
};
|
|
97818
|
+
}),
|
|
97819
|
+
};
|
|
97820
|
+
}),
|
|
97821
|
+
};
|
|
97822
|
+
const attributes = [
|
|
97823
|
+
{
|
|
97824
|
+
type: 'mdxJsxAttribute',
|
|
97825
|
+
name: 'align',
|
|
97826
|
+
value: {
|
|
97827
|
+
type: 'mdxJsxAttributeValueExpression',
|
|
97828
|
+
value: JSON.stringify(table.align),
|
|
97829
|
+
},
|
|
97830
|
+
},
|
|
97831
|
+
];
|
|
97832
|
+
const jsx = {
|
|
97833
|
+
type: 'mdxJsxFlowElement',
|
|
97834
|
+
name: 'Table',
|
|
97835
|
+
attributes: table.align.find(a => a) ? attributes : [],
|
|
97836
|
+
children: [head, body],
|
|
97837
|
+
};
|
|
97838
|
+
parent.children[index] = jsx;
|
|
97839
|
+
});
|
|
97840
|
+
return tree;
|
|
97841
|
+
};
|
|
97842
|
+
/* harmony default export */ const mdxish_tables_to_jsx = (mdxishTablesToJsx);
|
|
97843
|
+
|
|
96933
97844
|
;// ./processor/transform/mdxish/normalize-table-separator.ts
|
|
96934
97845
|
/**
|
|
96935
97846
|
* Preprocessor to normalize malformed GFM table separator syntax.
|
|
@@ -99096,6 +100007,9 @@ function loadComponents() {
|
|
|
99096
100007
|
|
|
99097
100008
|
|
|
99098
100009
|
|
|
100010
|
+
|
|
100011
|
+
|
|
100012
|
+
|
|
99099
100013
|
|
|
99100
100014
|
|
|
99101
100015
|
|
|
@@ -99173,6 +100087,7 @@ function mdxishAstProcessor(mdContent, opts = {}) {
|
|
|
99173
100087
|
.use(magic_block_transformer)
|
|
99174
100088
|
.use(transform_images, { isMdxish: true })
|
|
99175
100089
|
.use(defaultTransformers)
|
|
100090
|
+
.use(mdxish_self_closing_blocks)
|
|
99176
100091
|
.use(mdxish_component_blocks)
|
|
99177
100092
|
.use(restore_snake_case_component_name, { mapping: snakeCaseMapping })
|
|
99178
100093
|
.use(mdxish_tables)
|
|
@@ -99193,18 +100108,28 @@ function mdxishAstProcessor(mdContent, opts = {}) {
|
|
|
99193
100108
|
};
|
|
99194
100109
|
}
|
|
99195
100110
|
/**
|
|
99196
|
-
*
|
|
100111
|
+
* Registers the mdx-jsx serialization extension so remark-stringify
|
|
100112
|
+
* can convert JSX nodes (e.g. `<Table>`) to markdown.
|
|
100113
|
+
*/
|
|
100114
|
+
function mdxJsxStringify() {
|
|
100115
|
+
const data = this.data();
|
|
100116
|
+
const extensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
|
|
100117
|
+
extensions.push({ extensions: [mdxJsxToMarkdown()] });
|
|
100118
|
+
}
|
|
100119
|
+
/**
|
|
100120
|
+
* Serializes an Mdast back into a markdown string.
|
|
99197
100121
|
*/
|
|
99198
100122
|
function mdxishMdastToMd(mdast) {
|
|
99199
|
-
const
|
|
100123
|
+
const processor = unified()
|
|
99200
100124
|
.use(remarkGfm)
|
|
100125
|
+
.use(mdxish_tables_to_jsx)
|
|
99201
100126
|
.use(mdxishCompilers)
|
|
100127
|
+
.use(mdxJsxStringify)
|
|
99202
100128
|
.use(remarkStringify, {
|
|
99203
100129
|
bullet: '-',
|
|
99204
100130
|
emphasis: '_',
|
|
99205
|
-
})
|
|
99206
|
-
|
|
99207
|
-
return md;
|
|
100131
|
+
});
|
|
100132
|
+
return processor.stringify(processor.runSync(mdast));
|
|
99208
100133
|
}
|
|
99209
100134
|
/**
|
|
99210
100135
|
* Processes markdown content with MDX syntax support and returns a HAST.
|
|
@@ -99878,6 +100803,7 @@ const utils = {
|
|
|
99878
100803
|
|
|
99879
100804
|
|
|
99880
100805
|
|
|
100806
|
+
|
|
99881
100807
|
})();
|
|
99882
100808
|
|
|
99883
100809
|
/******/ return __webpack_exports__;
|