@qwickapps/react-framework 1.9.0 → 1.9.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/README.md +7 -4
- package/dist/components/forms/FormField.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +2179 -1517
- package/dist/index.js +2179 -1517
- package/dist/palettes/manifest.json +22 -22
- package/dist/palettes/{palette-boutique.1.8.0.css → palette-boutique.1.9.2.css} +29 -29
- package/dist/palettes/{palette-boutique.1.8.0.min.css → palette-boutique.1.9.2.min.css} +1 -1
- package/dist/palettes/palette-boutique.latest.css +29 -29
- package/dist/palettes/palette-boutique.latest.min.css +1 -1
- package/dist/schemas/FormFieldSchema.d.ts +0 -1
- package/dist/schemas/FormFieldSchema.d.ts.map +1 -1
- package/dist/schemas/FormSelectSchema.d.ts +0 -1
- package/dist/schemas/FormSelectSchema.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Html.tsx +1 -7
- package/src/components/Logo.tsx +1 -1
- package/src/components/QwickApp.css +2 -2
- package/src/components/blocks/index.ts +0 -2
- package/src/components/forms/FormField.tsx +0 -6
- package/src/components/forms/FormSelect.tsx +0 -6
- package/src/components/layout/GridCellWrapper.tsx +4 -4
- package/src/palettes/PaletteBoutique.css +29 -29
- package/src/schemas/FormFieldSchema.ts +0 -11
- package/src/schemas/FormSelectSchema.ts +0 -11
- package/src/schemas/transformers/ReactNodeTransformer.ts +1 -1
- package/dist/palettes/palette-autumn.1.8.1.css +0 -174
- package/dist/palettes/palette-autumn.1.8.1.min.css +0 -1
- package/dist/palettes/palette-boutique.1.8.1.css +0 -176
- package/dist/palettes/palette-boutique.1.8.1.min.css +0 -1
- package/dist/palettes/palette-cosmic.1.8.1.css +0 -174
- package/dist/palettes/palette-cosmic.1.8.1.min.css +0 -1
- package/dist/palettes/palette-default.1.8.1.css +0 -178
- package/dist/palettes/palette-default.1.8.1.min.css +0 -1
- package/dist/palettes/palette-ocean.1.8.1.css +0 -174
- package/dist/palettes/palette-ocean.1.8.1.min.css +0 -1
- package/dist/palettes/palette-spring.1.8.1.css +0 -168
- package/dist/palettes/palette-spring.1.8.1.min.css +0 -1
- package/dist/palettes/palette-winter.1.8.1.css +0 -174
- package/dist/palettes/palette-winter.1.8.1.min.css +0 -1
- package/src/components/blocks/HeroSlideshow.tsx +0 -156
- package/src/stories/HeroSlideshow.stories.tsx +0 -164
- /package/dist/palettes/{palette-autumn.1.8.0.css → palette-autumn.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-autumn.1.8.0.min.css → palette-autumn.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.css → palette-cosmic.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.min.css → palette-cosmic.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.css → palette-default.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.min.css → palette-default.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.css → palette-ocean.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.min.css → palette-ocean.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.css → palette-spring.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.min.css → palette-spring.1.9.2.min.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.css → palette-winter.1.9.2.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.min.css → palette-winter.1.9.2.min.css} +0 -0
package/dist/index.js
CHANGED
|
@@ -6326,42 +6326,24 @@ function getAugmentedNamespace(n) {
|
|
|
6326
6326
|
return a;
|
|
6327
6327
|
}
|
|
6328
6328
|
|
|
6329
|
-
var
|
|
6329
|
+
var commonjs = {};
|
|
6330
6330
|
|
|
6331
6331
|
var Parser$4 = {};
|
|
6332
6332
|
|
|
6333
|
-
var Tokenizer$
|
|
6333
|
+
var Tokenizer$2 = {};
|
|
6334
6334
|
|
|
6335
|
-
var decode = {};
|
|
6336
|
-
|
|
6337
|
-
var decodeDataHtml = {};
|
|
6338
|
-
|
|
6339
|
-
// Generated using scripts/write-decode-map.ts
|
|
6340
|
-
Object.defineProperty(decodeDataHtml, "__esModule", { value: true });
|
|
6341
|
-
decodeDataHtml.default = new Uint16Array(
|
|
6342
|
-
// prettier-ignore
|
|
6343
|
-
"\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"
|
|
6344
|
-
.split("")
|
|
6345
|
-
.map(function (c) { return c.charCodeAt(0); }));
|
|
6346
|
-
|
|
6347
|
-
var decodeDataXml = {};
|
|
6348
|
-
|
|
6349
|
-
// Generated using scripts/write-decode-map.ts
|
|
6350
|
-
Object.defineProperty(decodeDataXml, "__esModule", { value: true });
|
|
6351
|
-
decodeDataXml.default = new Uint16Array(
|
|
6352
|
-
// prettier-ignore
|
|
6353
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
6354
|
-
.split("")
|
|
6355
|
-
.map(function (c) { return c.charCodeAt(0); }));
|
|
6335
|
+
var decode$1 = {};
|
|
6356
6336
|
|
|
6357
|
-
var
|
|
6337
|
+
var decodeCodepoint = {};
|
|
6358
6338
|
|
|
6359
6339
|
(function (exports) {
|
|
6360
6340
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
6361
6341
|
var _a;
|
|
6362
6342
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6363
|
-
exports.
|
|
6364
|
-
|
|
6343
|
+
exports.fromCodePoint = void 0;
|
|
6344
|
+
exports.replaceCodePoint = replaceCodePoint;
|
|
6345
|
+
exports.decodeCodePoint = decodeCodePoint;
|
|
6346
|
+
const decodeMap = new Map([
|
|
6365
6347
|
[0, 65533],
|
|
6366
6348
|
// C1 Unicode control character reference replacements
|
|
6367
6349
|
[128, 8364],
|
|
@@ -6396,17 +6378,17 @@ var decode_codepoint = {};
|
|
|
6396
6378
|
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
6397
6379
|
*/
|
|
6398
6380
|
exports.fromCodePoint =
|
|
6399
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition,
|
|
6400
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a :
|
|
6401
|
-
|
|
6402
|
-
if (codePoint >
|
|
6403
|
-
codePoint -=
|
|
6404
|
-
output += String.fromCharCode(((codePoint >>> 10) &
|
|
6405
|
-
codePoint =
|
|
6381
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
6382
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
6383
|
+
let output = "";
|
|
6384
|
+
if (codePoint > 65535) {
|
|
6385
|
+
codePoint -= 65536;
|
|
6386
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
6387
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
6406
6388
|
}
|
|
6407
6389
|
output += String.fromCharCode(codePoint);
|
|
6408
6390
|
return output;
|
|
6409
|
-
};
|
|
6391
|
+
});
|
|
6410
6392
|
/**
|
|
6411
6393
|
* Replace the given code point with a replacement character if it is a
|
|
6412
6394
|
* surrogate or is outside the valid range. Otherwise return the code
|
|
@@ -6414,12 +6396,12 @@ var decode_codepoint = {};
|
|
|
6414
6396
|
*/
|
|
6415
6397
|
function replaceCodePoint(codePoint) {
|
|
6416
6398
|
var _a;
|
|
6417
|
-
if ((codePoint >=
|
|
6418
|
-
|
|
6399
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
6400
|
+
codePoint > 1114111) {
|
|
6401
|
+
return 65533;
|
|
6419
6402
|
}
|
|
6420
6403
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
6421
6404
|
}
|
|
6422
|
-
exports.replaceCodePoint = replaceCodePoint;
|
|
6423
6405
|
/**
|
|
6424
6406
|
* Replace the code point if relevant, then convert it to a string.
|
|
6425
6407
|
*
|
|
@@ -6430,48 +6412,91 @@ var decode_codepoint = {};
|
|
|
6430
6412
|
function decodeCodePoint(codePoint) {
|
|
6431
6413
|
return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
|
|
6432
6414
|
}
|
|
6433
|
-
exports.default = decodeCodePoint;
|
|
6434
6415
|
|
|
6435
|
-
} (
|
|
6416
|
+
} (decodeCodepoint));
|
|
6417
|
+
|
|
6418
|
+
var decodeDataHtml$1 = {};
|
|
6419
|
+
|
|
6420
|
+
var decodeShared = {};
|
|
6421
|
+
|
|
6422
|
+
Object.defineProperty(decodeShared, "__esModule", { value: true });
|
|
6423
|
+
decodeShared.decodeBase64 = decodeBase64;
|
|
6424
|
+
/*
|
|
6425
|
+
* Shared base64 decode helper for generated decode data.
|
|
6426
|
+
* Assumes global atob is available.
|
|
6427
|
+
*/
|
|
6428
|
+
function decodeBase64(input) {
|
|
6429
|
+
const binary =
|
|
6430
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6431
|
+
typeof atob === "function"
|
|
6432
|
+
? // Browser (and Node >=16)
|
|
6433
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6434
|
+
atob(input)
|
|
6435
|
+
: // Older Node versions (<16)
|
|
6436
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6437
|
+
typeof Buffer.from === "function"
|
|
6438
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
6439
|
+
Buffer.from(input, "base64").toString("binary")
|
|
6440
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
6441
|
+
new Buffer(input, "base64").toString("binary");
|
|
6442
|
+
const evenLength = binary.length & ~1; // Round down to even length
|
|
6443
|
+
const out = new Uint16Array(evenLength / 2);
|
|
6444
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
6445
|
+
const lo = binary.charCodeAt(index);
|
|
6446
|
+
const hi = binary.charCodeAt(index + 1);
|
|
6447
|
+
out[outIndex++] = lo | (hi << 8);
|
|
6448
|
+
}
|
|
6449
|
+
return out;
|
|
6450
|
+
}
|
|
6451
|
+
|
|
6452
|
+
// Generated using scripts/write-decode-map.ts
|
|
6453
|
+
Object.defineProperty(decodeDataHtml$1, "__esModule", { value: true });
|
|
6454
|
+
decodeDataHtml$1.htmlDecodeTree = void 0;
|
|
6455
|
+
const decode_shared_js_1$1 = decodeShared;
|
|
6456
|
+
decodeDataHtml$1.htmlDecodeTree = (0, decode_shared_js_1$1.decodeBase64)("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
6457
|
+
|
|
6458
|
+
var decodeDataXml$1 = {};
|
|
6459
|
+
|
|
6460
|
+
// Generated using scripts/write-decode-map.ts
|
|
6461
|
+
Object.defineProperty(decodeDataXml$1, "__esModule", { value: true });
|
|
6462
|
+
decodeDataXml$1.xmlDecodeTree = void 0;
|
|
6463
|
+
const decode_shared_js_1 = decodeShared;
|
|
6464
|
+
decodeDataXml$1.xmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
|
|
6465
|
+
|
|
6466
|
+
var binTrieFlags = {};
|
|
6467
|
+
|
|
6468
|
+
Object.defineProperty(binTrieFlags, "__esModule", { value: true });
|
|
6469
|
+
binTrieFlags.BinTrieFlags = void 0;
|
|
6470
|
+
/**
|
|
6471
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
6472
|
+
*
|
|
6473
|
+
* Bit layout (16 bits total):
|
|
6474
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
6475
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
6476
|
+
* If valueLength==0: compact run flag.
|
|
6477
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
6478
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
6479
|
+
*/
|
|
6480
|
+
var BinTrieFlags;
|
|
6481
|
+
(function (BinTrieFlags) {
|
|
6482
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
6483
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
6484
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
6485
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
6486
|
+
})(BinTrieFlags || (binTrieFlags.BinTrieFlags = BinTrieFlags = {}));
|
|
6436
6487
|
|
|
6437
6488
|
(function (exports) {
|
|
6438
|
-
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6439
|
-
if (k2 === undefined) k2 = k;
|
|
6440
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6441
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6442
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
6443
|
-
}
|
|
6444
|
-
Object.defineProperty(o, k2, desc);
|
|
6445
|
-
}) : (function(o, m, k, k2) {
|
|
6446
|
-
if (k2 === undefined) k2 = k;
|
|
6447
|
-
o[k2] = m[k];
|
|
6448
|
-
}));
|
|
6449
|
-
var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
6450
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
6451
|
-
}) : function(o, v) {
|
|
6452
|
-
o["default"] = v;
|
|
6453
|
-
});
|
|
6454
|
-
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {
|
|
6455
|
-
if (mod && mod.__esModule) return mod;
|
|
6456
|
-
var result = {};
|
|
6457
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
6458
|
-
__setModuleDefault(result, mod);
|
|
6459
|
-
return result;
|
|
6460
|
-
};
|
|
6461
|
-
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
6462
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6463
|
-
};
|
|
6464
6489
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6465
|
-
exports.
|
|
6466
|
-
|
|
6467
|
-
exports.
|
|
6468
|
-
|
|
6469
|
-
exports.
|
|
6470
|
-
|
|
6471
|
-
|
|
6472
|
-
|
|
6473
|
-
|
|
6474
|
-
|
|
6490
|
+
exports.xmlDecodeTree = exports.htmlDecodeTree = exports.replaceCodePoint = exports.fromCodePoint = exports.decodeCodePoint = exports.EntityDecoder = exports.DecodingMode = void 0;
|
|
6491
|
+
exports.determineBranch = determineBranch;
|
|
6492
|
+
exports.decodeHTML = decodeHTML;
|
|
6493
|
+
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
6494
|
+
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
6495
|
+
exports.decodeXML = decodeXML;
|
|
6496
|
+
const decode_codepoint_js_1 = decodeCodepoint;
|
|
6497
|
+
const decode_data_html_js_1 = decodeDataHtml$1;
|
|
6498
|
+
const decode_data_xml_js_1 = decodeDataXml$1;
|
|
6499
|
+
const bin_trie_flags_js_1 = binTrieFlags;
|
|
6475
6500
|
var CharCodes;
|
|
6476
6501
|
(function (CharCodes) {
|
|
6477
6502
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -6488,13 +6513,7 @@ var decode_codepoint = {};
|
|
|
6488
6513
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
6489
6514
|
})(CharCodes || (CharCodes = {}));
|
|
6490
6515
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
6491
|
-
|
|
6492
|
-
var BinTrieFlags;
|
|
6493
|
-
(function (BinTrieFlags) {
|
|
6494
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
6495
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
6496
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
6497
|
-
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
6516
|
+
const TO_LOWER_BIT = 32;
|
|
6498
6517
|
function isNumber(code) {
|
|
6499
6518
|
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
6500
6519
|
}
|
|
@@ -6532,13 +6551,14 @@ var decode_codepoint = {};
|
|
|
6532
6551
|
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
6533
6552
|
/** Entities in attributes have limitations on ending characters. */
|
|
6534
6553
|
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
6535
|
-
})(DecodingMode
|
|
6554
|
+
})(DecodingMode || (exports.DecodingMode = DecodingMode = {}));
|
|
6536
6555
|
/**
|
|
6537
6556
|
* Token decoder with support of writing partial entities.
|
|
6538
6557
|
*/
|
|
6539
|
-
|
|
6540
|
-
|
|
6558
|
+
class EntityDecoder {
|
|
6559
|
+
constructor(
|
|
6541
6560
|
/** The tree used to decode entities. */
|
|
6561
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
6542
6562
|
decodeTree,
|
|
6543
6563
|
/**
|
|
6544
6564
|
* The function that is called when a codepoint is decoded.
|
|
@@ -6572,16 +6592,19 @@ var decode_codepoint = {};
|
|
|
6572
6592
|
this.excess = 1;
|
|
6573
6593
|
/** The mode in which the decoder is operating. */
|
|
6574
6594
|
this.decodeMode = DecodingMode.Strict;
|
|
6595
|
+
/** The number of characters that have been consumed in the current run. */
|
|
6596
|
+
this.runConsumed = 0;
|
|
6575
6597
|
}
|
|
6576
6598
|
/** Resets the instance to make it reusable. */
|
|
6577
|
-
|
|
6599
|
+
startEntity(decodeMode) {
|
|
6578
6600
|
this.decodeMode = decodeMode;
|
|
6579
6601
|
this.state = EntityDecoderState.EntityStart;
|
|
6580
6602
|
this.result = 0;
|
|
6581
6603
|
this.treeIndex = 0;
|
|
6582
6604
|
this.excess = 1;
|
|
6583
6605
|
this.consumed = 1;
|
|
6584
|
-
|
|
6606
|
+
this.runConsumed = 0;
|
|
6607
|
+
}
|
|
6585
6608
|
/**
|
|
6586
6609
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
6587
6610
|
* If the entity is incomplete, the decoder will return -1.
|
|
@@ -6589,113 +6612,106 @@ var decode_codepoint = {};
|
|
|
6589
6612
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
6590
6613
|
* entity is incomplete, and resume when the next string is written.
|
|
6591
6614
|
*
|
|
6592
|
-
* @param
|
|
6615
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6593
6616
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
6594
6617
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6595
6618
|
*/
|
|
6596
|
-
|
|
6619
|
+
write(input, offset) {
|
|
6597
6620
|
switch (this.state) {
|
|
6598
6621
|
case EntityDecoderState.EntityStart: {
|
|
6599
|
-
if (
|
|
6622
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
6600
6623
|
this.state = EntityDecoderState.NumericStart;
|
|
6601
6624
|
this.consumed += 1;
|
|
6602
|
-
return this.stateNumericStart(
|
|
6625
|
+
return this.stateNumericStart(input, offset + 1);
|
|
6603
6626
|
}
|
|
6604
6627
|
this.state = EntityDecoderState.NamedEntity;
|
|
6605
|
-
return this.stateNamedEntity(
|
|
6628
|
+
return this.stateNamedEntity(input, offset);
|
|
6606
6629
|
}
|
|
6607
6630
|
case EntityDecoderState.NumericStart: {
|
|
6608
|
-
return this.stateNumericStart(
|
|
6631
|
+
return this.stateNumericStart(input, offset);
|
|
6609
6632
|
}
|
|
6610
6633
|
case EntityDecoderState.NumericDecimal: {
|
|
6611
|
-
return this.stateNumericDecimal(
|
|
6634
|
+
return this.stateNumericDecimal(input, offset);
|
|
6612
6635
|
}
|
|
6613
6636
|
case EntityDecoderState.NumericHex: {
|
|
6614
|
-
return this.stateNumericHex(
|
|
6637
|
+
return this.stateNumericHex(input, offset);
|
|
6615
6638
|
}
|
|
6616
6639
|
case EntityDecoderState.NamedEntity: {
|
|
6617
|
-
return this.stateNamedEntity(
|
|
6640
|
+
return this.stateNamedEntity(input, offset);
|
|
6618
6641
|
}
|
|
6619
6642
|
}
|
|
6620
|
-
}
|
|
6643
|
+
}
|
|
6621
6644
|
/**
|
|
6622
6645
|
* Switches between the numeric decimal and hexadecimal states.
|
|
6623
6646
|
*
|
|
6624
6647
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
6625
6648
|
*
|
|
6626
|
-
* @param
|
|
6649
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6627
6650
|
* @param offset The current offset.
|
|
6628
6651
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6629
6652
|
*/
|
|
6630
|
-
|
|
6631
|
-
if (offset >=
|
|
6653
|
+
stateNumericStart(input, offset) {
|
|
6654
|
+
if (offset >= input.length) {
|
|
6632
6655
|
return -1;
|
|
6633
6656
|
}
|
|
6634
|
-
if ((
|
|
6657
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
6635
6658
|
this.state = EntityDecoderState.NumericHex;
|
|
6636
6659
|
this.consumed += 1;
|
|
6637
|
-
return this.stateNumericHex(
|
|
6660
|
+
return this.stateNumericHex(input, offset + 1);
|
|
6638
6661
|
}
|
|
6639
6662
|
this.state = EntityDecoderState.NumericDecimal;
|
|
6640
|
-
return this.stateNumericDecimal(
|
|
6641
|
-
}
|
|
6642
|
-
EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {
|
|
6643
|
-
if (start !== end) {
|
|
6644
|
-
var digitCount = end - start;
|
|
6645
|
-
this.result =
|
|
6646
|
-
this.result * Math.pow(base, digitCount) +
|
|
6647
|
-
parseInt(str.substr(start, digitCount), base);
|
|
6648
|
-
this.consumed += digitCount;
|
|
6649
|
-
}
|
|
6650
|
-
};
|
|
6663
|
+
return this.stateNumericDecimal(input, offset);
|
|
6664
|
+
}
|
|
6651
6665
|
/**
|
|
6652
6666
|
* Parses a hexadecimal numeric entity.
|
|
6653
6667
|
*
|
|
6654
6668
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
6655
6669
|
*
|
|
6656
|
-
* @param
|
|
6670
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6657
6671
|
* @param offset The current offset.
|
|
6658
6672
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6659
6673
|
*/
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
var char = str.charCodeAt(offset);
|
|
6674
|
+
stateNumericHex(input, offset) {
|
|
6675
|
+
while (offset < input.length) {
|
|
6676
|
+
const char = input.charCodeAt(offset);
|
|
6664
6677
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
6665
|
-
|
|
6678
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
6679
|
+
const digit = char <= CharCodes.NINE
|
|
6680
|
+
? char - CharCodes.ZERO
|
|
6681
|
+
: (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
|
|
6682
|
+
this.result = this.result * 16 + digit;
|
|
6683
|
+
this.consumed++;
|
|
6684
|
+
offset++;
|
|
6666
6685
|
}
|
|
6667
6686
|
else {
|
|
6668
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
6669
6687
|
return this.emitNumericEntity(char, 3);
|
|
6670
6688
|
}
|
|
6671
6689
|
}
|
|
6672
|
-
|
|
6673
|
-
|
|
6674
|
-
};
|
|
6690
|
+
return -1; // Incomplete entity
|
|
6691
|
+
}
|
|
6675
6692
|
/**
|
|
6676
6693
|
* Parses a decimal numeric entity.
|
|
6677
6694
|
*
|
|
6678
6695
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
6679
6696
|
*
|
|
6680
|
-
* @param
|
|
6697
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6681
6698
|
* @param offset The current offset.
|
|
6682
6699
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6683
6700
|
*/
|
|
6684
|
-
|
|
6685
|
-
|
|
6686
|
-
|
|
6687
|
-
var char = str.charCodeAt(offset);
|
|
6701
|
+
stateNumericDecimal(input, offset) {
|
|
6702
|
+
while (offset < input.length) {
|
|
6703
|
+
const char = input.charCodeAt(offset);
|
|
6688
6704
|
if (isNumber(char)) {
|
|
6689
|
-
|
|
6705
|
+
this.result = this.result * 10 + (char - CharCodes.ZERO);
|
|
6706
|
+
this.consumed++;
|
|
6707
|
+
offset++;
|
|
6690
6708
|
}
|
|
6691
6709
|
else {
|
|
6692
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
6693
6710
|
return this.emitNumericEntity(char, 2);
|
|
6694
6711
|
}
|
|
6695
6712
|
}
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
};
|
|
6713
|
+
return -1; // Incomplete entity
|
|
6714
|
+
}
|
|
6699
6715
|
/**
|
|
6700
6716
|
* Validate and emit a numeric entity.
|
|
6701
6717
|
*
|
|
@@ -6709,7 +6725,7 @@ var decode_codepoint = {};
|
|
|
6709
6725
|
* was consumed.
|
|
6710
6726
|
* @returns The number of characters that were consumed.
|
|
6711
6727
|
*/
|
|
6712
|
-
|
|
6728
|
+
emitNumericEntity(lastCp, expectedLength) {
|
|
6713
6729
|
var _a;
|
|
6714
6730
|
// Ensure we consumed at least one digit.
|
|
6715
6731
|
if (this.consumed <= expectedLength) {
|
|
@@ -6731,23 +6747,77 @@ var decode_codepoint = {};
|
|
|
6731
6747
|
this.errors.validateNumericCharacterReference(this.result);
|
|
6732
6748
|
}
|
|
6733
6749
|
return this.consumed;
|
|
6734
|
-
}
|
|
6750
|
+
}
|
|
6735
6751
|
/**
|
|
6736
6752
|
* Parses a named entity.
|
|
6737
6753
|
*
|
|
6738
6754
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
6739
6755
|
*
|
|
6740
|
-
* @param
|
|
6756
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
6741
6757
|
* @param offset The current offset.
|
|
6742
6758
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
6743
6759
|
*/
|
|
6744
|
-
|
|
6745
|
-
|
|
6746
|
-
|
|
6747
|
-
// The
|
|
6748
|
-
|
|
6749
|
-
|
|
6750
|
-
|
|
6760
|
+
stateNamedEntity(input, offset) {
|
|
6761
|
+
const { decodeTree } = this;
|
|
6762
|
+
let current = decodeTree[this.treeIndex];
|
|
6763
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
6764
|
+
let valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6765
|
+
while (offset < input.length) {
|
|
6766
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
6767
|
+
if (valueLength === 0 && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) {
|
|
6768
|
+
const runLength = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
6769
|
+
// If we are starting a run, check the first char.
|
|
6770
|
+
if (this.runConsumed === 0) {
|
|
6771
|
+
const firstChar = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE;
|
|
6772
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
6773
|
+
return this.result === 0
|
|
6774
|
+
? 0
|
|
6775
|
+
: this.emitNotTerminatedNamedEntity();
|
|
6776
|
+
}
|
|
6777
|
+
offset++;
|
|
6778
|
+
this.excess++;
|
|
6779
|
+
this.runConsumed++;
|
|
6780
|
+
}
|
|
6781
|
+
// Check remaining characters in the run.
|
|
6782
|
+
while (this.runConsumed < runLength) {
|
|
6783
|
+
if (offset >= input.length) {
|
|
6784
|
+
return -1;
|
|
6785
|
+
}
|
|
6786
|
+
const charIndexInPacked = this.runConsumed - 1;
|
|
6787
|
+
const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
|
|
6788
|
+
const expectedChar = charIndexInPacked % 2 === 0
|
|
6789
|
+
? packedWord & 0xff
|
|
6790
|
+
: (packedWord >> 8) & 0xff;
|
|
6791
|
+
if (input.charCodeAt(offset) !== expectedChar) {
|
|
6792
|
+
this.runConsumed = 0;
|
|
6793
|
+
return this.result === 0
|
|
6794
|
+
? 0
|
|
6795
|
+
: this.emitNotTerminatedNamedEntity();
|
|
6796
|
+
}
|
|
6797
|
+
offset++;
|
|
6798
|
+
this.excess++;
|
|
6799
|
+
this.runConsumed++;
|
|
6800
|
+
}
|
|
6801
|
+
this.runConsumed = 0;
|
|
6802
|
+
this.treeIndex += 1 + (runLength >> 1);
|
|
6803
|
+
current = decodeTree[this.treeIndex];
|
|
6804
|
+
valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6805
|
+
}
|
|
6806
|
+
if (offset >= input.length)
|
|
6807
|
+
break;
|
|
6808
|
+
const char = input.charCodeAt(offset);
|
|
6809
|
+
/*
|
|
6810
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
6811
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
6812
|
+
* a value on the current node, it requires a semicolon, and the
|
|
6813
|
+
* current input character is a semicolon, emit the entity using the
|
|
6814
|
+
* current node (without descending further).
|
|
6815
|
+
*/
|
|
6816
|
+
if (char === CharCodes.SEMI &&
|
|
6817
|
+
valueLength !== 0 &&
|
|
6818
|
+
(current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) {
|
|
6819
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
6820
|
+
}
|
|
6751
6821
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
6752
6822
|
if (this.treeIndex < 0) {
|
|
6753
6823
|
return this.result === 0 ||
|
|
@@ -6761,7 +6831,7 @@ var decode_codepoint = {};
|
|
|
6761
6831
|
: this.emitNotTerminatedNamedEntity();
|
|
6762
6832
|
}
|
|
6763
6833
|
current = decodeTree[this.treeIndex];
|
|
6764
|
-
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6834
|
+
valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6765
6835
|
// If the branch is a value, store it and continue
|
|
6766
6836
|
if (valueLength !== 0) {
|
|
6767
6837
|
// If the entity is terminated by a semicolon, we are done.
|
|
@@ -6769,28 +6839,32 @@ var decode_codepoint = {};
|
|
|
6769
6839
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
6770
6840
|
}
|
|
6771
6841
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
6772
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
6842
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
6843
|
+
(current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) === 0) {
|
|
6773
6844
|
this.result = this.treeIndex;
|
|
6774
6845
|
this.consumed += this.excess;
|
|
6775
6846
|
this.excess = 0;
|
|
6776
6847
|
}
|
|
6777
6848
|
}
|
|
6849
|
+
// Increment offset & excess for next iteration
|
|
6850
|
+
offset++;
|
|
6851
|
+
this.excess++;
|
|
6778
6852
|
}
|
|
6779
6853
|
return -1;
|
|
6780
|
-
}
|
|
6854
|
+
}
|
|
6781
6855
|
/**
|
|
6782
6856
|
* Emit a named entity that was not terminated with a semicolon.
|
|
6783
6857
|
*
|
|
6784
6858
|
* @returns The number of characters consumed.
|
|
6785
6859
|
*/
|
|
6786
|
-
|
|
6860
|
+
emitNotTerminatedNamedEntity() {
|
|
6787
6861
|
var _a;
|
|
6788
|
-
|
|
6789
|
-
|
|
6862
|
+
const { result, decodeTree } = this;
|
|
6863
|
+
const valueLength = (decodeTree[result] & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
6790
6864
|
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
6791
6865
|
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
6792
6866
|
return this.consumed;
|
|
6793
|
-
}
|
|
6867
|
+
}
|
|
6794
6868
|
/**
|
|
6795
6869
|
* Emit a named entity.
|
|
6796
6870
|
*
|
|
@@ -6800,17 +6874,18 @@ var decode_codepoint = {};
|
|
|
6800
6874
|
*
|
|
6801
6875
|
* @returns The number of characters consumed.
|
|
6802
6876
|
*/
|
|
6803
|
-
|
|
6804
|
-
|
|
6877
|
+
emitNamedEntityData(result, valueLength, consumed) {
|
|
6878
|
+
const { decodeTree } = this;
|
|
6805
6879
|
this.emitCodePoint(valueLength === 1
|
|
6806
|
-
? decodeTree[result] &
|
|
6880
|
+
? decodeTree[result] &
|
|
6881
|
+
~(bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH | bin_trie_flags_js_1.BinTrieFlags.FLAG13)
|
|
6807
6882
|
: decodeTree[result + 1], consumed);
|
|
6808
6883
|
if (valueLength === 3) {
|
|
6809
6884
|
// For multi-byte values, we need to emit the second byte.
|
|
6810
6885
|
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
6811
6886
|
}
|
|
6812
6887
|
return consumed;
|
|
6813
|
-
}
|
|
6888
|
+
}
|
|
6814
6889
|
/**
|
|
6815
6890
|
* Signal to the parser that the end of the input was reached.
|
|
6816
6891
|
*
|
|
@@ -6818,7 +6893,7 @@ var decode_codepoint = {};
|
|
|
6818
6893
|
*
|
|
6819
6894
|
* @returns The number of characters consumed.
|
|
6820
6895
|
*/
|
|
6821
|
-
|
|
6896
|
+
end() {
|
|
6822
6897
|
var _a;
|
|
6823
6898
|
switch (this.state) {
|
|
6824
6899
|
case EntityDecoderState.NamedEntity: {
|
|
@@ -6845,9 +6920,8 @@ var decode_codepoint = {};
|
|
|
6845
6920
|
return 0;
|
|
6846
6921
|
}
|
|
6847
6922
|
}
|
|
6848
|
-
}
|
|
6849
|
-
|
|
6850
|
-
}());
|
|
6923
|
+
}
|
|
6924
|
+
}
|
|
6851
6925
|
exports.EntityDecoder = EntityDecoder;
|
|
6852
6926
|
/**
|
|
6853
6927
|
* Creates a function that decodes entities in a string.
|
|
@@ -6856,28 +6930,28 @@ var decode_codepoint = {};
|
|
|
6856
6930
|
* @returns A function that decodes entities in a string.
|
|
6857
6931
|
*/
|
|
6858
6932
|
function getDecoder(decodeTree) {
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
return function decodeWithTrie(
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
while ((offset =
|
|
6865
|
-
|
|
6933
|
+
let returnValue = "";
|
|
6934
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += (0, decode_codepoint_js_1.fromCodePoint)(data)));
|
|
6935
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
6936
|
+
let lastIndex = 0;
|
|
6937
|
+
let offset = 0;
|
|
6938
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
6939
|
+
returnValue += input.slice(lastIndex, offset);
|
|
6866
6940
|
decoder.startEntity(decodeMode);
|
|
6867
|
-
|
|
6941
|
+
const length = decoder.write(input,
|
|
6868
6942
|
// Skip the "&"
|
|
6869
6943
|
offset + 1);
|
|
6870
|
-
if (
|
|
6944
|
+
if (length < 0) {
|
|
6871
6945
|
lastIndex = offset + decoder.end();
|
|
6872
6946
|
break;
|
|
6873
6947
|
}
|
|
6874
|
-
lastIndex = offset +
|
|
6875
|
-
// If `
|
|
6876
|
-
offset =
|
|
6948
|
+
lastIndex = offset + length;
|
|
6949
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
6950
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
6877
6951
|
}
|
|
6878
|
-
|
|
6952
|
+
const result = returnValue + input.slice(lastIndex);
|
|
6879
6953
|
// Make sure we don't keep a reference to the final string.
|
|
6880
|
-
|
|
6954
|
+
returnValue = "";
|
|
6881
6955
|
return result;
|
|
6882
6956
|
};
|
|
6883
6957
|
}
|
|
@@ -6891,1017 +6965,892 @@ var decode_codepoint = {};
|
|
|
6891
6965
|
* @param char The current character.
|
|
6892
6966
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
6893
6967
|
*/
|
|
6894
|
-
function determineBranch(decodeTree, current,
|
|
6895
|
-
|
|
6896
|
-
|
|
6968
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
6969
|
+
const branchCount = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
6970
|
+
const jumpOffset = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE;
|
|
6897
6971
|
// Case 1: Single branch encoded in jump offset
|
|
6898
6972
|
if (branchCount === 0) {
|
|
6899
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
6973
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
6900
6974
|
}
|
|
6901
6975
|
// Case 2: Multiple branches encoded in jump table
|
|
6902
6976
|
if (jumpOffset) {
|
|
6903
|
-
|
|
6977
|
+
const value = char - jumpOffset;
|
|
6904
6978
|
return value < 0 || value >= branchCount
|
|
6905
6979
|
? -1
|
|
6906
|
-
: decodeTree[
|
|
6980
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
6907
6981
|
}
|
|
6908
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
6909
|
-
|
|
6910
|
-
|
|
6911
|
-
|
|
6982
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
6983
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
6984
|
+
/*
|
|
6985
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
6986
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
6987
|
+
*/
|
|
6988
|
+
let lo = 0;
|
|
6989
|
+
let hi = branchCount - 1;
|
|
6912
6990
|
while (lo <= hi) {
|
|
6913
|
-
|
|
6914
|
-
|
|
6915
|
-
|
|
6991
|
+
const mid = (lo + hi) >>> 1;
|
|
6992
|
+
const slot = mid >> 1;
|
|
6993
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
6994
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
6995
|
+
if (midKey < char) {
|
|
6916
6996
|
lo = mid + 1;
|
|
6917
6997
|
}
|
|
6918
|
-
else if (
|
|
6998
|
+
else if (midKey > char) {
|
|
6919
6999
|
hi = mid - 1;
|
|
6920
7000
|
}
|
|
6921
7001
|
else {
|
|
6922
|
-
return decodeTree[
|
|
7002
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
6923
7003
|
}
|
|
6924
7004
|
}
|
|
6925
7005
|
return -1;
|
|
6926
7006
|
}
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
|
|
7007
|
+
const htmlDecoder = /* #__PURE__ */ getDecoder(decode_data_html_js_1.htmlDecodeTree);
|
|
7008
|
+
const xmlDecoder = /* #__PURE__ */ getDecoder(decode_data_xml_js_1.xmlDecodeTree);
|
|
6930
7009
|
/**
|
|
6931
7010
|
* Decodes an HTML string.
|
|
6932
7011
|
*
|
|
6933
|
-
* @param
|
|
7012
|
+
* @param htmlString The string to decode.
|
|
6934
7013
|
* @param mode The decoding mode.
|
|
6935
7014
|
* @returns The decoded string.
|
|
6936
7015
|
*/
|
|
6937
|
-
function decodeHTML(
|
|
6938
|
-
|
|
6939
|
-
return htmlDecoder(str, mode);
|
|
7016
|
+
function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
|
|
7017
|
+
return htmlDecoder(htmlString, mode);
|
|
6940
7018
|
}
|
|
6941
|
-
exports.decodeHTML = decodeHTML;
|
|
6942
7019
|
/**
|
|
6943
7020
|
* Decodes an HTML string in an attribute.
|
|
6944
7021
|
*
|
|
6945
|
-
* @param
|
|
7022
|
+
* @param htmlAttribute The string to decode.
|
|
6946
7023
|
* @returns The decoded string.
|
|
6947
7024
|
*/
|
|
6948
|
-
function decodeHTMLAttribute(
|
|
6949
|
-
return htmlDecoder(
|
|
7025
|
+
function decodeHTMLAttribute(htmlAttribute) {
|
|
7026
|
+
return htmlDecoder(htmlAttribute, DecodingMode.Attribute);
|
|
6950
7027
|
}
|
|
6951
|
-
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
6952
7028
|
/**
|
|
6953
7029
|
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
6954
7030
|
*
|
|
6955
|
-
* @param
|
|
7031
|
+
* @param htmlString The string to decode.
|
|
6956
7032
|
* @returns The decoded string.
|
|
6957
7033
|
*/
|
|
6958
|
-
function decodeHTMLStrict(
|
|
6959
|
-
return htmlDecoder(
|
|
7034
|
+
function decodeHTMLStrict(htmlString) {
|
|
7035
|
+
return htmlDecoder(htmlString, DecodingMode.Strict);
|
|
6960
7036
|
}
|
|
6961
|
-
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
6962
7037
|
/**
|
|
6963
7038
|
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
6964
7039
|
*
|
|
6965
|
-
* @param
|
|
7040
|
+
* @param xmlString The string to decode.
|
|
6966
7041
|
* @returns The decoded string.
|
|
6967
7042
|
*/
|
|
6968
|
-
function decodeXML(
|
|
6969
|
-
return xmlDecoder(
|
|
7043
|
+
function decodeXML(xmlString) {
|
|
7044
|
+
return xmlDecoder(xmlString, DecodingMode.Strict);
|
|
6970
7045
|
}
|
|
6971
|
-
|
|
7046
|
+
var decode_codepoint_js_2 = decodeCodepoint;
|
|
7047
|
+
Object.defineProperty(exports, "decodeCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.decodeCodePoint; } });
|
|
7048
|
+
Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });
|
|
7049
|
+
Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });
|
|
7050
|
+
// Re-export for use by eg. htmlparser2
|
|
7051
|
+
var decode_data_html_js_2 = decodeDataHtml$1;
|
|
7052
|
+
Object.defineProperty(exports, "htmlDecodeTree", { enumerable: true, get: function () { return decode_data_html_js_2.htmlDecodeTree; } });
|
|
7053
|
+
var decode_data_xml_js_2 = decodeDataXml$1;
|
|
7054
|
+
Object.defineProperty(exports, "xmlDecodeTree", { enumerable: true, get: function () { return decode_data_xml_js_2.xmlDecodeTree; } });
|
|
6972
7055
|
|
|
6973
|
-
} (decode));
|
|
6974
|
-
|
|
6975
|
-
(
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
|
|
7014
|
-
|
|
7015
|
-
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7019
|
-
|
|
7020
|
-
|
|
7021
|
-
|
|
7022
|
-
|
|
7023
|
-
|
|
7024
|
-
|
|
7025
|
-
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7035
|
-
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7041
|
-
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
|
|
7067
|
-
|
|
7068
|
-
|
|
7069
|
-
|
|
7070
|
-
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7081
|
-
|
|
7082
|
-
|
|
7083
|
-
|
|
7084
|
-
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7090
|
-
|
|
7091
|
-
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7096
|
-
|
|
7097
|
-
|
|
7098
|
-
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
|
|
7102
|
-
|
|
7103
|
-
|
|
7104
|
-
|
|
7105
|
-
|
|
7106
|
-
|
|
7107
|
-
|
|
7108
|
-
|
|
7109
|
-
|
|
7110
|
-
|
|
7111
|
-
|
|
7112
|
-
|
|
7113
|
-
|
|
7114
|
-
|
|
7115
|
-
|
|
7116
|
-
|
|
7117
|
-
|
|
7118
|
-
|
|
7119
|
-
|
|
7120
|
-
|
|
7121
|
-
|
|
7122
|
-
|
|
7123
|
-
|
|
7124
|
-
|
|
7125
|
-
|
|
7126
|
-
|
|
7127
|
-
|
|
7128
|
-
|
|
7129
|
-
|
|
7130
|
-
|
|
7131
|
-
|
|
7132
|
-
|
|
7133
|
-
|
|
7134
|
-
|
|
7135
|
-
|
|
7136
|
-
|
|
7137
|
-
|
|
7138
|
-
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7170
|
-
|
|
7171
|
-
|
|
7172
|
-
|
|
7173
|
-
|
|
7174
|
-
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7178
|
-
|
|
7179
|
-
|
|
7180
|
-
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
|
|
7195
|
-
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
|
|
7200
|
-
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
|
|
7209
|
-
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
|
|
7219
|
-
|
|
7220
|
-
|
|
7221
|
-
|
|
7222
|
-
|
|
7223
|
-
|
|
7224
|
-
|
|
7225
|
-
|
|
7226
|
-
|
|
7227
|
-
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
|
|
7234
|
-
|
|
7235
|
-
|
|
7236
|
-
|
|
7237
|
-
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
|
|
7242
|
-
|
|
7243
|
-
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
|
|
7253
|
-
|
|
7254
|
-
|
|
7255
|
-
|
|
7256
|
-
|
|
7257
|
-
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
|
|
7293
|
-
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
|
|
7297
|
-
|
|
7298
|
-
|
|
7299
|
-
|
|
7300
|
-
|
|
7301
|
-
|
|
7302
|
-
|
|
7303
|
-
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7315
|
-
|
|
7316
|
-
|
|
7317
|
-
|
|
7318
|
-
|
|
7319
|
-
|
|
7320
|
-
|
|
7321
|
-
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
|
|
7332
|
-
|
|
7333
|
-
|
|
7334
|
-
|
|
7335
|
-
|
|
7336
|
-
|
|
7337
|
-
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
|
|
7371
|
-
|
|
7372
|
-
|
|
7373
|
-
|
|
7374
|
-
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
|
|
7387
|
-
|
|
7388
|
-
|
|
7389
|
-
|
|
7390
|
-
|
|
7391
|
-
|
|
7392
|
-
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7397
|
-
|
|
7398
|
-
|
|
7399
|
-
|
|
7400
|
-
|
|
7401
|
-
|
|
7402
|
-
|
|
7403
|
-
|
|
7404
|
-
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7415
|
-
|
|
7416
|
-
|
|
7417
|
-
|
|
7418
|
-
|
|
7419
|
-
|
|
7420
|
-
|
|
7421
|
-
|
|
7422
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
|
|
7436
|
-
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
|
|
7445
|
-
|
|
7446
|
-
|
|
7447
|
-
|
|
7448
|
-
|
|
7449
|
-
|
|
7450
|
-
|
|
7451
|
-
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7461
|
-
|
|
7462
|
-
|
|
7463
|
-
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
|
|
7474
|
-
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7496
|
-
|
|
7497
|
-
|
|
7498
|
-
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7502
|
-
|
|
7503
|
-
|
|
7504
|
-
|
|
7505
|
-
|
|
7506
|
-
|
|
7507
|
-
|
|
7508
|
-
|
|
7509
|
-
|
|
7510
|
-
|
|
7511
|
-
|
|
7512
|
-
|
|
7513
|
-
|
|
7514
|
-
|
|
7515
|
-
|
|
7516
|
-
|
|
7517
|
-
|
|
7518
|
-
|
|
7519
|
-
|
|
7520
|
-
|
|
7521
|
-
|
|
7522
|
-
|
|
7523
|
-
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
|
|
7528
|
-
|
|
7529
|
-
|
|
7530
|
-
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
|
|
7534
|
-
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
|
|
7560
|
-
|
|
7561
|
-
|
|
7562
|
-
|
|
7563
|
-
|
|
7564
|
-
|
|
7565
|
-
|
|
7566
|
-
|
|
7567
|
-
|
|
7568
|
-
|
|
7569
|
-
|
|
7570
|
-
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
|
|
7585
|
-
|
|
7586
|
-
|
|
7587
|
-
|
|
7588
|
-
|
|
7589
|
-
|
|
7590
|
-
|
|
7591
|
-
|
|
7592
|
-
|
|
7593
|
-
|
|
7594
|
-
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7598
|
-
|
|
7599
|
-
|
|
7600
|
-
|
|
7601
|
-
|
|
7602
|
-
|
|
7603
|
-
|
|
7604
|
-
|
|
7605
|
-
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
|
|
7609
|
-
|
|
7610
|
-
|
|
7611
|
-
|
|
7612
|
-
|
|
7613
|
-
|
|
7614
|
-
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7645
|
-
|
|
7646
|
-
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
-
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
|
|
7679
|
-
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7685
|
-
|
|
7686
|
-
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
|
|
7705
|
-
|
|
7706
|
-
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7720
|
-
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
|
|
7735
|
-
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7746
|
-
|
|
7747
|
-
|
|
7748
|
-
|
|
7749
|
-
|
|
7750
|
-
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
|
|
7757
|
-
|
|
7758
|
-
|
|
7759
|
-
|
|
7760
|
-
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
|
|
7770
|
-
|
|
7771
|
-
break;
|
|
7772
|
-
}
|
|
7773
|
-
case State.BeforeAttributeValue: {
|
|
7774
|
-
this.stateBeforeAttributeValue(c);
|
|
7775
|
-
break;
|
|
7776
|
-
}
|
|
7777
|
-
case State.BeforeClosingTagName: {
|
|
7778
|
-
this.stateBeforeClosingTagName(c);
|
|
7779
|
-
break;
|
|
7780
|
-
}
|
|
7781
|
-
case State.AfterClosingTagName: {
|
|
7782
|
-
this.stateAfterClosingTagName(c);
|
|
7783
|
-
break;
|
|
7784
|
-
}
|
|
7785
|
-
case State.BeforeSpecialS: {
|
|
7786
|
-
this.stateBeforeSpecialS(c);
|
|
7787
|
-
break;
|
|
7788
|
-
}
|
|
7789
|
-
case State.InAttributeValueNq: {
|
|
7790
|
-
this.stateInAttributeValueNoQuotes(c);
|
|
7791
|
-
break;
|
|
7792
|
-
}
|
|
7793
|
-
case State.InSelfClosingTag: {
|
|
7794
|
-
this.stateInSelfClosingTag(c);
|
|
7795
|
-
break;
|
|
7796
|
-
}
|
|
7797
|
-
case State.InDeclaration: {
|
|
7798
|
-
this.stateInDeclaration(c);
|
|
7799
|
-
break;
|
|
7800
|
-
}
|
|
7801
|
-
case State.BeforeDeclaration: {
|
|
7802
|
-
this.stateBeforeDeclaration(c);
|
|
7803
|
-
break;
|
|
7804
|
-
}
|
|
7805
|
-
case State.BeforeComment: {
|
|
7806
|
-
this.stateBeforeComment(c);
|
|
7807
|
-
break;
|
|
7808
|
-
}
|
|
7809
|
-
case State.InProcessingInstruction: {
|
|
7810
|
-
this.stateInProcessingInstruction(c);
|
|
7811
|
-
break;
|
|
7812
|
-
}
|
|
7813
|
-
case State.InNamedEntity: {
|
|
7814
|
-
this.stateInNamedEntity(c);
|
|
7815
|
-
break;
|
|
7816
|
-
}
|
|
7817
|
-
case State.BeforeEntity: {
|
|
7818
|
-
this.stateBeforeEntity(c);
|
|
7819
|
-
break;
|
|
7820
|
-
}
|
|
7821
|
-
case State.InHexEntity: {
|
|
7822
|
-
this.stateInHexEntity(c);
|
|
7823
|
-
break;
|
|
7824
|
-
}
|
|
7825
|
-
case State.InNumericEntity: {
|
|
7826
|
-
this.stateInNumericEntity(c);
|
|
7827
|
-
break;
|
|
7828
|
-
}
|
|
7829
|
-
default: {
|
|
7830
|
-
// `this._state === State.BeforeNumericEntity`
|
|
7831
|
-
this.stateBeforeNumericEntity(c);
|
|
7832
|
-
}
|
|
7833
|
-
}
|
|
7834
|
-
this.index++;
|
|
7835
|
-
}
|
|
7836
|
-
this.cleanup();
|
|
7837
|
-
};
|
|
7838
|
-
Tokenizer.prototype.finish = function () {
|
|
7839
|
-
if (this.state === State.InNamedEntity) {
|
|
7840
|
-
this.emitNamedEntity();
|
|
7841
|
-
}
|
|
7842
|
-
// If there is remaining data, emit it in a reasonable way
|
|
7843
|
-
if (this.sectionStart < this.index) {
|
|
7844
|
-
this.handleTrailingData();
|
|
7845
|
-
}
|
|
7846
|
-
this.cbs.onend();
|
|
7847
|
-
};
|
|
7848
|
-
/** Handle any trailing data. */
|
|
7849
|
-
Tokenizer.prototype.handleTrailingData = function () {
|
|
7850
|
-
var endIndex = this.buffer.length + this.offset;
|
|
7851
|
-
if (this.state === State.InCommentLike) {
|
|
7852
|
-
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7853
|
-
this.cbs.oncdata(this.sectionStart, endIndex, 0);
|
|
7854
|
-
}
|
|
7855
|
-
else {
|
|
7856
|
-
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
7857
|
-
}
|
|
7858
|
-
}
|
|
7859
|
-
else if (this.state === State.InNumericEntity &&
|
|
7860
|
-
this.allowLegacyEntity()) {
|
|
7861
|
-
this.emitNumericEntity(false);
|
|
7862
|
-
// All trailing data will have been consumed
|
|
7863
|
-
}
|
|
7864
|
-
else if (this.state === State.InHexEntity &&
|
|
7865
|
-
this.allowLegacyEntity()) {
|
|
7866
|
-
this.emitNumericEntity(false);
|
|
7867
|
-
// All trailing data will have been consumed
|
|
7868
|
-
}
|
|
7869
|
-
else if (this.state === State.InTagName ||
|
|
7870
|
-
this.state === State.BeforeAttributeName ||
|
|
7871
|
-
this.state === State.BeforeAttributeValue ||
|
|
7872
|
-
this.state === State.AfterAttributeName ||
|
|
7873
|
-
this.state === State.InAttributeName ||
|
|
7874
|
-
this.state === State.InAttributeValueSq ||
|
|
7875
|
-
this.state === State.InAttributeValueDq ||
|
|
7876
|
-
this.state === State.InAttributeValueNq ||
|
|
7877
|
-
this.state === State.InClosingTagName) ;
|
|
7878
|
-
else {
|
|
7879
|
-
this.cbs.ontext(this.sectionStart, endIndex);
|
|
7880
|
-
}
|
|
7881
|
-
};
|
|
7882
|
-
Tokenizer.prototype.emitPartial = function (start, endIndex) {
|
|
7883
|
-
if (this.baseState !== State.Text &&
|
|
7884
|
-
this.baseState !== State.InSpecialTag) {
|
|
7885
|
-
this.cbs.onattribdata(start, endIndex);
|
|
7886
|
-
}
|
|
7887
|
-
else {
|
|
7888
|
-
this.cbs.ontext(start, endIndex);
|
|
7889
|
-
}
|
|
7890
|
-
};
|
|
7891
|
-
Tokenizer.prototype.emitCodePoint = function (cp) {
|
|
7892
|
-
if (this.baseState !== State.Text &&
|
|
7893
|
-
this.baseState !== State.InSpecialTag) {
|
|
7894
|
-
this.cbs.onattribentity(cp);
|
|
7895
|
-
}
|
|
7896
|
-
else {
|
|
7897
|
-
this.cbs.ontextentity(cp);
|
|
7898
|
-
}
|
|
7899
|
-
};
|
|
7900
|
-
return Tokenizer;
|
|
7901
|
-
}());
|
|
7902
|
-
exports.default = Tokenizer;
|
|
7903
|
-
|
|
7904
|
-
} (Tokenizer$1));
|
|
7056
|
+
} (decode$1));
|
|
7057
|
+
|
|
7058
|
+
Object.defineProperty(Tokenizer$2, "__esModule", { value: true });
|
|
7059
|
+
Tokenizer$2.QuoteType = void 0;
|
|
7060
|
+
const decode_1$1 = decode$1;
|
|
7061
|
+
var CharCodes;
|
|
7062
|
+
(function (CharCodes) {
|
|
7063
|
+
CharCodes[CharCodes["Tab"] = 9] = "Tab";
|
|
7064
|
+
CharCodes[CharCodes["NewLine"] = 10] = "NewLine";
|
|
7065
|
+
CharCodes[CharCodes["FormFeed"] = 12] = "FormFeed";
|
|
7066
|
+
CharCodes[CharCodes["CarriageReturn"] = 13] = "CarriageReturn";
|
|
7067
|
+
CharCodes[CharCodes["Space"] = 32] = "Space";
|
|
7068
|
+
CharCodes[CharCodes["ExclamationMark"] = 33] = "ExclamationMark";
|
|
7069
|
+
CharCodes[CharCodes["Number"] = 35] = "Number";
|
|
7070
|
+
CharCodes[CharCodes["Amp"] = 38] = "Amp";
|
|
7071
|
+
CharCodes[CharCodes["SingleQuote"] = 39] = "SingleQuote";
|
|
7072
|
+
CharCodes[CharCodes["DoubleQuote"] = 34] = "DoubleQuote";
|
|
7073
|
+
CharCodes[CharCodes["Dash"] = 45] = "Dash";
|
|
7074
|
+
CharCodes[CharCodes["Slash"] = 47] = "Slash";
|
|
7075
|
+
CharCodes[CharCodes["Zero"] = 48] = "Zero";
|
|
7076
|
+
CharCodes[CharCodes["Nine"] = 57] = "Nine";
|
|
7077
|
+
CharCodes[CharCodes["Semi"] = 59] = "Semi";
|
|
7078
|
+
CharCodes[CharCodes["Lt"] = 60] = "Lt";
|
|
7079
|
+
CharCodes[CharCodes["Eq"] = 61] = "Eq";
|
|
7080
|
+
CharCodes[CharCodes["Gt"] = 62] = "Gt";
|
|
7081
|
+
CharCodes[CharCodes["Questionmark"] = 63] = "Questionmark";
|
|
7082
|
+
CharCodes[CharCodes["UpperA"] = 65] = "UpperA";
|
|
7083
|
+
CharCodes[CharCodes["LowerA"] = 97] = "LowerA";
|
|
7084
|
+
CharCodes[CharCodes["UpperF"] = 70] = "UpperF";
|
|
7085
|
+
CharCodes[CharCodes["LowerF"] = 102] = "LowerF";
|
|
7086
|
+
CharCodes[CharCodes["UpperZ"] = 90] = "UpperZ";
|
|
7087
|
+
CharCodes[CharCodes["LowerZ"] = 122] = "LowerZ";
|
|
7088
|
+
CharCodes[CharCodes["LowerX"] = 120] = "LowerX";
|
|
7089
|
+
CharCodes[CharCodes["OpeningSquareBracket"] = 91] = "OpeningSquareBracket";
|
|
7090
|
+
})(CharCodes || (CharCodes = {}));
|
|
7091
|
+
/** All the states the tokenizer can be in. */
|
|
7092
|
+
var State;
|
|
7093
|
+
(function (State) {
|
|
7094
|
+
State[State["Text"] = 1] = "Text";
|
|
7095
|
+
State[State["BeforeTagName"] = 2] = "BeforeTagName";
|
|
7096
|
+
State[State["InTagName"] = 3] = "InTagName";
|
|
7097
|
+
State[State["InSelfClosingTag"] = 4] = "InSelfClosingTag";
|
|
7098
|
+
State[State["BeforeClosingTagName"] = 5] = "BeforeClosingTagName";
|
|
7099
|
+
State[State["InClosingTagName"] = 6] = "InClosingTagName";
|
|
7100
|
+
State[State["AfterClosingTagName"] = 7] = "AfterClosingTagName";
|
|
7101
|
+
// Attributes
|
|
7102
|
+
State[State["BeforeAttributeName"] = 8] = "BeforeAttributeName";
|
|
7103
|
+
State[State["InAttributeName"] = 9] = "InAttributeName";
|
|
7104
|
+
State[State["AfterAttributeName"] = 10] = "AfterAttributeName";
|
|
7105
|
+
State[State["BeforeAttributeValue"] = 11] = "BeforeAttributeValue";
|
|
7106
|
+
State[State["InAttributeValueDq"] = 12] = "InAttributeValueDq";
|
|
7107
|
+
State[State["InAttributeValueSq"] = 13] = "InAttributeValueSq";
|
|
7108
|
+
State[State["InAttributeValueNq"] = 14] = "InAttributeValueNq";
|
|
7109
|
+
// Declarations
|
|
7110
|
+
State[State["BeforeDeclaration"] = 15] = "BeforeDeclaration";
|
|
7111
|
+
State[State["InDeclaration"] = 16] = "InDeclaration";
|
|
7112
|
+
// Processing instructions
|
|
7113
|
+
State[State["InProcessingInstruction"] = 17] = "InProcessingInstruction";
|
|
7114
|
+
// Comments & CDATA
|
|
7115
|
+
State[State["BeforeComment"] = 18] = "BeforeComment";
|
|
7116
|
+
State[State["CDATASequence"] = 19] = "CDATASequence";
|
|
7117
|
+
State[State["InSpecialComment"] = 20] = "InSpecialComment";
|
|
7118
|
+
State[State["InCommentLike"] = 21] = "InCommentLike";
|
|
7119
|
+
// Special tags
|
|
7120
|
+
State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS";
|
|
7121
|
+
State[State["BeforeSpecialT"] = 23] = "BeforeSpecialT";
|
|
7122
|
+
State[State["SpecialStartSequence"] = 24] = "SpecialStartSequence";
|
|
7123
|
+
State[State["InSpecialTag"] = 25] = "InSpecialTag";
|
|
7124
|
+
State[State["InEntity"] = 26] = "InEntity";
|
|
7125
|
+
})(State || (State = {}));
|
|
7126
|
+
function isWhitespace(c) {
|
|
7127
|
+
return (c === CharCodes.Space ||
|
|
7128
|
+
c === CharCodes.NewLine ||
|
|
7129
|
+
c === CharCodes.Tab ||
|
|
7130
|
+
c === CharCodes.FormFeed ||
|
|
7131
|
+
c === CharCodes.CarriageReturn);
|
|
7132
|
+
}
|
|
7133
|
+
function isEndOfTagSection(c) {
|
|
7134
|
+
return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);
|
|
7135
|
+
}
|
|
7136
|
+
function isASCIIAlpha(c) {
|
|
7137
|
+
return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||
|
|
7138
|
+
(c >= CharCodes.UpperA && c <= CharCodes.UpperZ));
|
|
7139
|
+
}
|
|
7140
|
+
var QuoteType;
|
|
7141
|
+
(function (QuoteType) {
|
|
7142
|
+
QuoteType[QuoteType["NoValue"] = 0] = "NoValue";
|
|
7143
|
+
QuoteType[QuoteType["Unquoted"] = 1] = "Unquoted";
|
|
7144
|
+
QuoteType[QuoteType["Single"] = 2] = "Single";
|
|
7145
|
+
QuoteType[QuoteType["Double"] = 3] = "Double";
|
|
7146
|
+
})(QuoteType || (Tokenizer$2.QuoteType = QuoteType = {}));
|
|
7147
|
+
/**
|
|
7148
|
+
* Sequences used to match longer strings.
|
|
7149
|
+
*
|
|
7150
|
+
* We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End
|
|
7151
|
+
* sequences with an increased offset.
|
|
7152
|
+
*/
|
|
7153
|
+
const Sequences = {
|
|
7154
|
+
Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[
|
|
7155
|
+
CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>
|
|
7156
|
+
CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`
|
|
7157
|
+
ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`
|
|
7158
|
+
StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`
|
|
7159
|
+
TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`
|
|
7160
|
+
TextareaEnd: new Uint8Array([
|
|
7161
|
+
0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,
|
|
7162
|
+
]), // `</textarea`
|
|
7163
|
+
XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`
|
|
7164
|
+
};
|
|
7165
|
+
let Tokenizer$1 = class Tokenizer {
|
|
7166
|
+
constructor({ xmlMode = false, decodeEntities = true, }, cbs) {
|
|
7167
|
+
this.cbs = cbs;
|
|
7168
|
+
/** The current state the tokenizer is in. */
|
|
7169
|
+
this.state = State.Text;
|
|
7170
|
+
/** The read buffer. */
|
|
7171
|
+
this.buffer = "";
|
|
7172
|
+
/** The beginning of the section that is currently being read. */
|
|
7173
|
+
this.sectionStart = 0;
|
|
7174
|
+
/** The index within the buffer that we are currently looking at. */
|
|
7175
|
+
this.index = 0;
|
|
7176
|
+
/** The start of the last entity. */
|
|
7177
|
+
this.entityStart = 0;
|
|
7178
|
+
/** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */
|
|
7179
|
+
this.baseState = State.Text;
|
|
7180
|
+
/** For special parsing behavior inside of script and style tags. */
|
|
7181
|
+
this.isSpecial = false;
|
|
7182
|
+
/** Indicates whether the tokenizer has been paused. */
|
|
7183
|
+
this.running = true;
|
|
7184
|
+
/** The offset of the current buffer. */
|
|
7185
|
+
this.offset = 0;
|
|
7186
|
+
this.currentSequence = undefined;
|
|
7187
|
+
this.sequenceIndex = 0;
|
|
7188
|
+
this.xmlMode = xmlMode;
|
|
7189
|
+
this.decodeEntities = decodeEntities;
|
|
7190
|
+
this.entityDecoder = new decode_1$1.EntityDecoder(xmlMode ? decode_1$1.xmlDecodeTree : decode_1$1.htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));
|
|
7191
|
+
}
|
|
7192
|
+
reset() {
|
|
7193
|
+
this.state = State.Text;
|
|
7194
|
+
this.buffer = "";
|
|
7195
|
+
this.sectionStart = 0;
|
|
7196
|
+
this.index = 0;
|
|
7197
|
+
this.baseState = State.Text;
|
|
7198
|
+
this.currentSequence = undefined;
|
|
7199
|
+
this.running = true;
|
|
7200
|
+
this.offset = 0;
|
|
7201
|
+
}
|
|
7202
|
+
write(chunk) {
|
|
7203
|
+
this.offset += this.buffer.length;
|
|
7204
|
+
this.buffer = chunk;
|
|
7205
|
+
this.parse();
|
|
7206
|
+
}
|
|
7207
|
+
end() {
|
|
7208
|
+
if (this.running)
|
|
7209
|
+
this.finish();
|
|
7210
|
+
}
|
|
7211
|
+
pause() {
|
|
7212
|
+
this.running = false;
|
|
7213
|
+
}
|
|
7214
|
+
resume() {
|
|
7215
|
+
this.running = true;
|
|
7216
|
+
if (this.index < this.buffer.length + this.offset) {
|
|
7217
|
+
this.parse();
|
|
7218
|
+
}
|
|
7219
|
+
}
|
|
7220
|
+
stateText(c) {
|
|
7221
|
+
if (c === CharCodes.Lt ||
|
|
7222
|
+
(!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {
|
|
7223
|
+
if (this.index > this.sectionStart) {
|
|
7224
|
+
this.cbs.ontext(this.sectionStart, this.index);
|
|
7225
|
+
}
|
|
7226
|
+
this.state = State.BeforeTagName;
|
|
7227
|
+
this.sectionStart = this.index;
|
|
7228
|
+
}
|
|
7229
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7230
|
+
this.startEntity();
|
|
7231
|
+
}
|
|
7232
|
+
}
|
|
7233
|
+
stateSpecialStartSequence(c) {
|
|
7234
|
+
const isEnd = this.sequenceIndex === this.currentSequence.length;
|
|
7235
|
+
const isMatch = isEnd
|
|
7236
|
+
? // If we are at the end of the sequence, make sure the tag name has ended
|
|
7237
|
+
isEndOfTagSection(c)
|
|
7238
|
+
: // Otherwise, do a case-insensitive comparison
|
|
7239
|
+
(c | 0x20) === this.currentSequence[this.sequenceIndex];
|
|
7240
|
+
if (!isMatch) {
|
|
7241
|
+
this.isSpecial = false;
|
|
7242
|
+
}
|
|
7243
|
+
else if (!isEnd) {
|
|
7244
|
+
this.sequenceIndex++;
|
|
7245
|
+
return;
|
|
7246
|
+
}
|
|
7247
|
+
this.sequenceIndex = 0;
|
|
7248
|
+
this.state = State.InTagName;
|
|
7249
|
+
this.stateInTagName(c);
|
|
7250
|
+
}
|
|
7251
|
+
/** Look for an end tag. For <title> tags, also decode entities. */
|
|
7252
|
+
stateInSpecialTag(c) {
|
|
7253
|
+
if (this.sequenceIndex === this.currentSequence.length) {
|
|
7254
|
+
if (c === CharCodes.Gt || isWhitespace(c)) {
|
|
7255
|
+
const endOfText = this.index - this.currentSequence.length;
|
|
7256
|
+
if (this.sectionStart < endOfText) {
|
|
7257
|
+
// Spoof the index so that reported locations match up.
|
|
7258
|
+
const actualIndex = this.index;
|
|
7259
|
+
this.index = endOfText;
|
|
7260
|
+
this.cbs.ontext(this.sectionStart, endOfText);
|
|
7261
|
+
this.index = actualIndex;
|
|
7262
|
+
}
|
|
7263
|
+
this.isSpecial = false;
|
|
7264
|
+
this.sectionStart = endOfText + 2; // Skip over the `</`
|
|
7265
|
+
this.stateInClosingTagName(c);
|
|
7266
|
+
return; // We are done; skip the rest of the function.
|
|
7267
|
+
}
|
|
7268
|
+
this.sequenceIndex = 0;
|
|
7269
|
+
}
|
|
7270
|
+
if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {
|
|
7271
|
+
this.sequenceIndex += 1;
|
|
7272
|
+
}
|
|
7273
|
+
else if (this.sequenceIndex === 0) {
|
|
7274
|
+
if (this.currentSequence === Sequences.TitleEnd) {
|
|
7275
|
+
// We have to parse entities in <title> tags.
|
|
7276
|
+
if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7277
|
+
this.startEntity();
|
|
7278
|
+
}
|
|
7279
|
+
}
|
|
7280
|
+
else if (this.fastForwardTo(CharCodes.Lt)) {
|
|
7281
|
+
// Outside of <title> tags, we can fast-forward.
|
|
7282
|
+
this.sequenceIndex = 1;
|
|
7283
|
+
}
|
|
7284
|
+
}
|
|
7285
|
+
else {
|
|
7286
|
+
// If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.
|
|
7287
|
+
this.sequenceIndex = Number(c === CharCodes.Lt);
|
|
7288
|
+
}
|
|
7289
|
+
}
|
|
7290
|
+
stateCDATASequence(c) {
|
|
7291
|
+
if (c === Sequences.Cdata[this.sequenceIndex]) {
|
|
7292
|
+
if (++this.sequenceIndex === Sequences.Cdata.length) {
|
|
7293
|
+
this.state = State.InCommentLike;
|
|
7294
|
+
this.currentSequence = Sequences.CdataEnd;
|
|
7295
|
+
this.sequenceIndex = 0;
|
|
7296
|
+
this.sectionStart = this.index + 1;
|
|
7297
|
+
}
|
|
7298
|
+
}
|
|
7299
|
+
else {
|
|
7300
|
+
this.sequenceIndex = 0;
|
|
7301
|
+
this.state = State.InDeclaration;
|
|
7302
|
+
this.stateInDeclaration(c); // Reconsume the character
|
|
7303
|
+
}
|
|
7304
|
+
}
|
|
7305
|
+
/**
|
|
7306
|
+
* When we wait for one specific character, we can speed things up
|
|
7307
|
+
* by skipping through the buffer until we find it.
|
|
7308
|
+
*
|
|
7309
|
+
* @returns Whether the character was found.
|
|
7310
|
+
*/
|
|
7311
|
+
fastForwardTo(c) {
|
|
7312
|
+
while (++this.index < this.buffer.length + this.offset) {
|
|
7313
|
+
if (this.buffer.charCodeAt(this.index - this.offset) === c) {
|
|
7314
|
+
return true;
|
|
7315
|
+
}
|
|
7316
|
+
}
|
|
7317
|
+
/*
|
|
7318
|
+
* We increment the index at the end of the `parse` loop,
|
|
7319
|
+
* so set it to `buffer.length - 1` here.
|
|
7320
|
+
*
|
|
7321
|
+
* TODO: Refactor `parse` to increment index before calling states.
|
|
7322
|
+
*/
|
|
7323
|
+
this.index = this.buffer.length + this.offset - 1;
|
|
7324
|
+
return false;
|
|
7325
|
+
}
|
|
7326
|
+
/**
|
|
7327
|
+
* Comments and CDATA end with `-->` and `]]>`.
|
|
7328
|
+
*
|
|
7329
|
+
* Their common qualities are:
|
|
7330
|
+
* - Their end sequences have a distinct character they start with.
|
|
7331
|
+
* - That character is then repeated, so we have to check multiple repeats.
|
|
7332
|
+
* - All characters but the start character of the sequence can be skipped.
|
|
7333
|
+
*/
|
|
7334
|
+
stateInCommentLike(c) {
|
|
7335
|
+
if (c === this.currentSequence[this.sequenceIndex]) {
|
|
7336
|
+
if (++this.sequenceIndex === this.currentSequence.length) {
|
|
7337
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7338
|
+
this.cbs.oncdata(this.sectionStart, this.index, 2);
|
|
7339
|
+
}
|
|
7340
|
+
else {
|
|
7341
|
+
this.cbs.oncomment(this.sectionStart, this.index, 2);
|
|
7342
|
+
}
|
|
7343
|
+
this.sequenceIndex = 0;
|
|
7344
|
+
this.sectionStart = this.index + 1;
|
|
7345
|
+
this.state = State.Text;
|
|
7346
|
+
}
|
|
7347
|
+
}
|
|
7348
|
+
else if (this.sequenceIndex === 0) {
|
|
7349
|
+
// Fast-forward to the first character of the sequence
|
|
7350
|
+
if (this.fastForwardTo(this.currentSequence[0])) {
|
|
7351
|
+
this.sequenceIndex = 1;
|
|
7352
|
+
}
|
|
7353
|
+
}
|
|
7354
|
+
else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
|
|
7355
|
+
// Allow long sequences, eg. --->, ]]]>
|
|
7356
|
+
this.sequenceIndex = 0;
|
|
7357
|
+
}
|
|
7358
|
+
}
|
|
7359
|
+
/**
|
|
7360
|
+
* HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.
|
|
7361
|
+
*
|
|
7362
|
+
* XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).
|
|
7363
|
+
* We allow anything that wouldn't end the tag.
|
|
7364
|
+
*/
|
|
7365
|
+
isTagStartChar(c) {
|
|
7366
|
+
return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);
|
|
7367
|
+
}
|
|
7368
|
+
startSpecial(sequence, offset) {
|
|
7369
|
+
this.isSpecial = true;
|
|
7370
|
+
this.currentSequence = sequence;
|
|
7371
|
+
this.sequenceIndex = offset;
|
|
7372
|
+
this.state = State.SpecialStartSequence;
|
|
7373
|
+
}
|
|
7374
|
+
stateBeforeTagName(c) {
|
|
7375
|
+
if (c === CharCodes.ExclamationMark) {
|
|
7376
|
+
this.state = State.BeforeDeclaration;
|
|
7377
|
+
this.sectionStart = this.index + 1;
|
|
7378
|
+
}
|
|
7379
|
+
else if (c === CharCodes.Questionmark) {
|
|
7380
|
+
this.state = State.InProcessingInstruction;
|
|
7381
|
+
this.sectionStart = this.index + 1;
|
|
7382
|
+
}
|
|
7383
|
+
else if (this.isTagStartChar(c)) {
|
|
7384
|
+
const lower = c | 0x20;
|
|
7385
|
+
this.sectionStart = this.index;
|
|
7386
|
+
if (this.xmlMode) {
|
|
7387
|
+
this.state = State.InTagName;
|
|
7388
|
+
}
|
|
7389
|
+
else if (lower === Sequences.ScriptEnd[2]) {
|
|
7390
|
+
this.state = State.BeforeSpecialS;
|
|
7391
|
+
}
|
|
7392
|
+
else if (lower === Sequences.TitleEnd[2] ||
|
|
7393
|
+
lower === Sequences.XmpEnd[2]) {
|
|
7394
|
+
this.state = State.BeforeSpecialT;
|
|
7395
|
+
}
|
|
7396
|
+
else {
|
|
7397
|
+
this.state = State.InTagName;
|
|
7398
|
+
}
|
|
7399
|
+
}
|
|
7400
|
+
else if (c === CharCodes.Slash) {
|
|
7401
|
+
this.state = State.BeforeClosingTagName;
|
|
7402
|
+
}
|
|
7403
|
+
else {
|
|
7404
|
+
this.state = State.Text;
|
|
7405
|
+
this.stateText(c);
|
|
7406
|
+
}
|
|
7407
|
+
}
|
|
7408
|
+
stateInTagName(c) {
|
|
7409
|
+
if (isEndOfTagSection(c)) {
|
|
7410
|
+
this.cbs.onopentagname(this.sectionStart, this.index);
|
|
7411
|
+
this.sectionStart = -1;
|
|
7412
|
+
this.state = State.BeforeAttributeName;
|
|
7413
|
+
this.stateBeforeAttributeName(c);
|
|
7414
|
+
}
|
|
7415
|
+
}
|
|
7416
|
+
stateBeforeClosingTagName(c) {
|
|
7417
|
+
if (isWhitespace(c)) ;
|
|
7418
|
+
else if (c === CharCodes.Gt) {
|
|
7419
|
+
this.state = State.Text;
|
|
7420
|
+
}
|
|
7421
|
+
else {
|
|
7422
|
+
this.state = this.isTagStartChar(c)
|
|
7423
|
+
? State.InClosingTagName
|
|
7424
|
+
: State.InSpecialComment;
|
|
7425
|
+
this.sectionStart = this.index;
|
|
7426
|
+
}
|
|
7427
|
+
}
|
|
7428
|
+
stateInClosingTagName(c) {
|
|
7429
|
+
if (c === CharCodes.Gt || isWhitespace(c)) {
|
|
7430
|
+
this.cbs.onclosetag(this.sectionStart, this.index);
|
|
7431
|
+
this.sectionStart = -1;
|
|
7432
|
+
this.state = State.AfterClosingTagName;
|
|
7433
|
+
this.stateAfterClosingTagName(c);
|
|
7434
|
+
}
|
|
7435
|
+
}
|
|
7436
|
+
stateAfterClosingTagName(c) {
|
|
7437
|
+
// Skip everything until ">"
|
|
7438
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7439
|
+
this.state = State.Text;
|
|
7440
|
+
this.sectionStart = this.index + 1;
|
|
7441
|
+
}
|
|
7442
|
+
}
|
|
7443
|
+
stateBeforeAttributeName(c) {
|
|
7444
|
+
if (c === CharCodes.Gt) {
|
|
7445
|
+
this.cbs.onopentagend(this.index);
|
|
7446
|
+
if (this.isSpecial) {
|
|
7447
|
+
this.state = State.InSpecialTag;
|
|
7448
|
+
this.sequenceIndex = 0;
|
|
7449
|
+
}
|
|
7450
|
+
else {
|
|
7451
|
+
this.state = State.Text;
|
|
7452
|
+
}
|
|
7453
|
+
this.sectionStart = this.index + 1;
|
|
7454
|
+
}
|
|
7455
|
+
else if (c === CharCodes.Slash) {
|
|
7456
|
+
this.state = State.InSelfClosingTag;
|
|
7457
|
+
}
|
|
7458
|
+
else if (!isWhitespace(c)) {
|
|
7459
|
+
this.state = State.InAttributeName;
|
|
7460
|
+
this.sectionStart = this.index;
|
|
7461
|
+
}
|
|
7462
|
+
}
|
|
7463
|
+
stateInSelfClosingTag(c) {
|
|
7464
|
+
if (c === CharCodes.Gt) {
|
|
7465
|
+
this.cbs.onselfclosingtag(this.index);
|
|
7466
|
+
this.state = State.Text;
|
|
7467
|
+
this.sectionStart = this.index + 1;
|
|
7468
|
+
this.isSpecial = false; // Reset special state, in case of self-closing special tags
|
|
7469
|
+
}
|
|
7470
|
+
else if (!isWhitespace(c)) {
|
|
7471
|
+
this.state = State.BeforeAttributeName;
|
|
7472
|
+
this.stateBeforeAttributeName(c);
|
|
7473
|
+
}
|
|
7474
|
+
}
|
|
7475
|
+
stateInAttributeName(c) {
|
|
7476
|
+
if (c === CharCodes.Eq || isEndOfTagSection(c)) {
|
|
7477
|
+
this.cbs.onattribname(this.sectionStart, this.index);
|
|
7478
|
+
this.sectionStart = this.index;
|
|
7479
|
+
this.state = State.AfterAttributeName;
|
|
7480
|
+
this.stateAfterAttributeName(c);
|
|
7481
|
+
}
|
|
7482
|
+
}
|
|
7483
|
+
stateAfterAttributeName(c) {
|
|
7484
|
+
if (c === CharCodes.Eq) {
|
|
7485
|
+
this.state = State.BeforeAttributeValue;
|
|
7486
|
+
}
|
|
7487
|
+
else if (c === CharCodes.Slash || c === CharCodes.Gt) {
|
|
7488
|
+
this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
|
|
7489
|
+
this.sectionStart = -1;
|
|
7490
|
+
this.state = State.BeforeAttributeName;
|
|
7491
|
+
this.stateBeforeAttributeName(c);
|
|
7492
|
+
}
|
|
7493
|
+
else if (!isWhitespace(c)) {
|
|
7494
|
+
this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);
|
|
7495
|
+
this.state = State.InAttributeName;
|
|
7496
|
+
this.sectionStart = this.index;
|
|
7497
|
+
}
|
|
7498
|
+
}
|
|
7499
|
+
stateBeforeAttributeValue(c) {
|
|
7500
|
+
if (c === CharCodes.DoubleQuote) {
|
|
7501
|
+
this.state = State.InAttributeValueDq;
|
|
7502
|
+
this.sectionStart = this.index + 1;
|
|
7503
|
+
}
|
|
7504
|
+
else if (c === CharCodes.SingleQuote) {
|
|
7505
|
+
this.state = State.InAttributeValueSq;
|
|
7506
|
+
this.sectionStart = this.index + 1;
|
|
7507
|
+
}
|
|
7508
|
+
else if (!isWhitespace(c)) {
|
|
7509
|
+
this.sectionStart = this.index;
|
|
7510
|
+
this.state = State.InAttributeValueNq;
|
|
7511
|
+
this.stateInAttributeValueNoQuotes(c); // Reconsume token
|
|
7512
|
+
}
|
|
7513
|
+
}
|
|
7514
|
+
handleInAttributeValue(c, quote) {
|
|
7515
|
+
if (c === quote ||
|
|
7516
|
+
(!this.decodeEntities && this.fastForwardTo(quote))) {
|
|
7517
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7518
|
+
this.sectionStart = -1;
|
|
7519
|
+
this.cbs.onattribend(quote === CharCodes.DoubleQuote
|
|
7520
|
+
? QuoteType.Double
|
|
7521
|
+
: QuoteType.Single, this.index + 1);
|
|
7522
|
+
this.state = State.BeforeAttributeName;
|
|
7523
|
+
}
|
|
7524
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7525
|
+
this.startEntity();
|
|
7526
|
+
}
|
|
7527
|
+
}
|
|
7528
|
+
stateInAttributeValueDoubleQuotes(c) {
|
|
7529
|
+
this.handleInAttributeValue(c, CharCodes.DoubleQuote);
|
|
7530
|
+
}
|
|
7531
|
+
stateInAttributeValueSingleQuotes(c) {
|
|
7532
|
+
this.handleInAttributeValue(c, CharCodes.SingleQuote);
|
|
7533
|
+
}
|
|
7534
|
+
stateInAttributeValueNoQuotes(c) {
|
|
7535
|
+
if (isWhitespace(c) || c === CharCodes.Gt) {
|
|
7536
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7537
|
+
this.sectionStart = -1;
|
|
7538
|
+
this.cbs.onattribend(QuoteType.Unquoted, this.index);
|
|
7539
|
+
this.state = State.BeforeAttributeName;
|
|
7540
|
+
this.stateBeforeAttributeName(c);
|
|
7541
|
+
}
|
|
7542
|
+
else if (this.decodeEntities && c === CharCodes.Amp) {
|
|
7543
|
+
this.startEntity();
|
|
7544
|
+
}
|
|
7545
|
+
}
|
|
7546
|
+
stateBeforeDeclaration(c) {
|
|
7547
|
+
if (c === CharCodes.OpeningSquareBracket) {
|
|
7548
|
+
this.state = State.CDATASequence;
|
|
7549
|
+
this.sequenceIndex = 0;
|
|
7550
|
+
}
|
|
7551
|
+
else {
|
|
7552
|
+
this.state =
|
|
7553
|
+
c === CharCodes.Dash
|
|
7554
|
+
? State.BeforeComment
|
|
7555
|
+
: State.InDeclaration;
|
|
7556
|
+
}
|
|
7557
|
+
}
|
|
7558
|
+
stateInDeclaration(c) {
|
|
7559
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7560
|
+
this.cbs.ondeclaration(this.sectionStart, this.index);
|
|
7561
|
+
this.state = State.Text;
|
|
7562
|
+
this.sectionStart = this.index + 1;
|
|
7563
|
+
}
|
|
7564
|
+
}
|
|
7565
|
+
stateInProcessingInstruction(c) {
|
|
7566
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7567
|
+
this.cbs.onprocessinginstruction(this.sectionStart, this.index);
|
|
7568
|
+
this.state = State.Text;
|
|
7569
|
+
this.sectionStart = this.index + 1;
|
|
7570
|
+
}
|
|
7571
|
+
}
|
|
7572
|
+
stateBeforeComment(c) {
|
|
7573
|
+
if (c === CharCodes.Dash) {
|
|
7574
|
+
this.state = State.InCommentLike;
|
|
7575
|
+
this.currentSequence = Sequences.CommentEnd;
|
|
7576
|
+
// Allow short comments (eg. <!-->)
|
|
7577
|
+
this.sequenceIndex = 2;
|
|
7578
|
+
this.sectionStart = this.index + 1;
|
|
7579
|
+
}
|
|
7580
|
+
else {
|
|
7581
|
+
this.state = State.InDeclaration;
|
|
7582
|
+
}
|
|
7583
|
+
}
|
|
7584
|
+
stateInSpecialComment(c) {
|
|
7585
|
+
if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {
|
|
7586
|
+
this.cbs.oncomment(this.sectionStart, this.index, 0);
|
|
7587
|
+
this.state = State.Text;
|
|
7588
|
+
this.sectionStart = this.index + 1;
|
|
7589
|
+
}
|
|
7590
|
+
}
|
|
7591
|
+
stateBeforeSpecialS(c) {
|
|
7592
|
+
const lower = c | 0x20;
|
|
7593
|
+
if (lower === Sequences.ScriptEnd[3]) {
|
|
7594
|
+
this.startSpecial(Sequences.ScriptEnd, 4);
|
|
7595
|
+
}
|
|
7596
|
+
else if (lower === Sequences.StyleEnd[3]) {
|
|
7597
|
+
this.startSpecial(Sequences.StyleEnd, 4);
|
|
7598
|
+
}
|
|
7599
|
+
else {
|
|
7600
|
+
this.state = State.InTagName;
|
|
7601
|
+
this.stateInTagName(c); // Consume the token again
|
|
7602
|
+
}
|
|
7603
|
+
}
|
|
7604
|
+
stateBeforeSpecialT(c) {
|
|
7605
|
+
const lower = c | 0x20;
|
|
7606
|
+
switch (lower) {
|
|
7607
|
+
case Sequences.TitleEnd[3]: {
|
|
7608
|
+
this.startSpecial(Sequences.TitleEnd, 4);
|
|
7609
|
+
break;
|
|
7610
|
+
}
|
|
7611
|
+
case Sequences.TextareaEnd[3]: {
|
|
7612
|
+
this.startSpecial(Sequences.TextareaEnd, 4);
|
|
7613
|
+
break;
|
|
7614
|
+
}
|
|
7615
|
+
case Sequences.XmpEnd[3]: {
|
|
7616
|
+
this.startSpecial(Sequences.XmpEnd, 4);
|
|
7617
|
+
break;
|
|
7618
|
+
}
|
|
7619
|
+
default: {
|
|
7620
|
+
this.state = State.InTagName;
|
|
7621
|
+
this.stateInTagName(c); // Consume the token again
|
|
7622
|
+
}
|
|
7623
|
+
}
|
|
7624
|
+
}
|
|
7625
|
+
startEntity() {
|
|
7626
|
+
this.baseState = this.state;
|
|
7627
|
+
this.state = State.InEntity;
|
|
7628
|
+
this.entityStart = this.index;
|
|
7629
|
+
this.entityDecoder.startEntity(this.xmlMode
|
|
7630
|
+
? decode_1$1.DecodingMode.Strict
|
|
7631
|
+
: this.baseState === State.Text ||
|
|
7632
|
+
this.baseState === State.InSpecialTag
|
|
7633
|
+
? decode_1$1.DecodingMode.Legacy
|
|
7634
|
+
: decode_1$1.DecodingMode.Attribute);
|
|
7635
|
+
}
|
|
7636
|
+
stateInEntity() {
|
|
7637
|
+
const indexInBuffer = this.index - this.offset;
|
|
7638
|
+
const length = this.entityDecoder.write(this.buffer, indexInBuffer);
|
|
7639
|
+
// If `length` is positive, we are done with the entity.
|
|
7640
|
+
if (length >= 0) {
|
|
7641
|
+
this.state = this.baseState;
|
|
7642
|
+
if (length === 0) {
|
|
7643
|
+
this.index -= 1;
|
|
7644
|
+
}
|
|
7645
|
+
}
|
|
7646
|
+
else {
|
|
7647
|
+
if (indexInBuffer < this.buffer.length &&
|
|
7648
|
+
this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) {
|
|
7649
|
+
this.state = this.baseState;
|
|
7650
|
+
this.index -= 1;
|
|
7651
|
+
return;
|
|
7652
|
+
}
|
|
7653
|
+
// Mark buffer as consumed.
|
|
7654
|
+
this.index = this.offset + this.buffer.length - 1;
|
|
7655
|
+
}
|
|
7656
|
+
}
|
|
7657
|
+
/**
|
|
7658
|
+
* Remove data that has already been consumed from the buffer.
|
|
7659
|
+
*/
|
|
7660
|
+
cleanup() {
|
|
7661
|
+
// If we are inside of text or attributes, emit what we already have.
|
|
7662
|
+
if (this.running && this.sectionStart !== this.index) {
|
|
7663
|
+
if (this.state === State.Text ||
|
|
7664
|
+
(this.state === State.InSpecialTag && this.sequenceIndex === 0)) {
|
|
7665
|
+
this.cbs.ontext(this.sectionStart, this.index);
|
|
7666
|
+
this.sectionStart = this.index;
|
|
7667
|
+
}
|
|
7668
|
+
else if (this.state === State.InAttributeValueDq ||
|
|
7669
|
+
this.state === State.InAttributeValueSq ||
|
|
7670
|
+
this.state === State.InAttributeValueNq) {
|
|
7671
|
+
this.cbs.onattribdata(this.sectionStart, this.index);
|
|
7672
|
+
this.sectionStart = this.index;
|
|
7673
|
+
}
|
|
7674
|
+
}
|
|
7675
|
+
}
|
|
7676
|
+
shouldContinue() {
|
|
7677
|
+
return this.index < this.buffer.length + this.offset && this.running;
|
|
7678
|
+
}
|
|
7679
|
+
/**
|
|
7680
|
+
* Iterates through the buffer, calling the function corresponding to the current state.
|
|
7681
|
+
*
|
|
7682
|
+
* States that are more likely to be hit are higher up, as a performance improvement.
|
|
7683
|
+
*/
|
|
7684
|
+
parse() {
|
|
7685
|
+
while (this.shouldContinue()) {
|
|
7686
|
+
const c = this.buffer.charCodeAt(this.index - this.offset);
|
|
7687
|
+
switch (this.state) {
|
|
7688
|
+
case State.Text: {
|
|
7689
|
+
this.stateText(c);
|
|
7690
|
+
break;
|
|
7691
|
+
}
|
|
7692
|
+
case State.SpecialStartSequence: {
|
|
7693
|
+
this.stateSpecialStartSequence(c);
|
|
7694
|
+
break;
|
|
7695
|
+
}
|
|
7696
|
+
case State.InSpecialTag: {
|
|
7697
|
+
this.stateInSpecialTag(c);
|
|
7698
|
+
break;
|
|
7699
|
+
}
|
|
7700
|
+
case State.CDATASequence: {
|
|
7701
|
+
this.stateCDATASequence(c);
|
|
7702
|
+
break;
|
|
7703
|
+
}
|
|
7704
|
+
case State.InAttributeValueDq: {
|
|
7705
|
+
this.stateInAttributeValueDoubleQuotes(c);
|
|
7706
|
+
break;
|
|
7707
|
+
}
|
|
7708
|
+
case State.InAttributeName: {
|
|
7709
|
+
this.stateInAttributeName(c);
|
|
7710
|
+
break;
|
|
7711
|
+
}
|
|
7712
|
+
case State.InCommentLike: {
|
|
7713
|
+
this.stateInCommentLike(c);
|
|
7714
|
+
break;
|
|
7715
|
+
}
|
|
7716
|
+
case State.InSpecialComment: {
|
|
7717
|
+
this.stateInSpecialComment(c);
|
|
7718
|
+
break;
|
|
7719
|
+
}
|
|
7720
|
+
case State.BeforeAttributeName: {
|
|
7721
|
+
this.stateBeforeAttributeName(c);
|
|
7722
|
+
break;
|
|
7723
|
+
}
|
|
7724
|
+
case State.InTagName: {
|
|
7725
|
+
this.stateInTagName(c);
|
|
7726
|
+
break;
|
|
7727
|
+
}
|
|
7728
|
+
case State.InClosingTagName: {
|
|
7729
|
+
this.stateInClosingTagName(c);
|
|
7730
|
+
break;
|
|
7731
|
+
}
|
|
7732
|
+
case State.BeforeTagName: {
|
|
7733
|
+
this.stateBeforeTagName(c);
|
|
7734
|
+
break;
|
|
7735
|
+
}
|
|
7736
|
+
case State.AfterAttributeName: {
|
|
7737
|
+
this.stateAfterAttributeName(c);
|
|
7738
|
+
break;
|
|
7739
|
+
}
|
|
7740
|
+
case State.InAttributeValueSq: {
|
|
7741
|
+
this.stateInAttributeValueSingleQuotes(c);
|
|
7742
|
+
break;
|
|
7743
|
+
}
|
|
7744
|
+
case State.BeforeAttributeValue: {
|
|
7745
|
+
this.stateBeforeAttributeValue(c);
|
|
7746
|
+
break;
|
|
7747
|
+
}
|
|
7748
|
+
case State.BeforeClosingTagName: {
|
|
7749
|
+
this.stateBeforeClosingTagName(c);
|
|
7750
|
+
break;
|
|
7751
|
+
}
|
|
7752
|
+
case State.AfterClosingTagName: {
|
|
7753
|
+
this.stateAfterClosingTagName(c);
|
|
7754
|
+
break;
|
|
7755
|
+
}
|
|
7756
|
+
case State.BeforeSpecialS: {
|
|
7757
|
+
this.stateBeforeSpecialS(c);
|
|
7758
|
+
break;
|
|
7759
|
+
}
|
|
7760
|
+
case State.BeforeSpecialT: {
|
|
7761
|
+
this.stateBeforeSpecialT(c);
|
|
7762
|
+
break;
|
|
7763
|
+
}
|
|
7764
|
+
case State.InAttributeValueNq: {
|
|
7765
|
+
this.stateInAttributeValueNoQuotes(c);
|
|
7766
|
+
break;
|
|
7767
|
+
}
|
|
7768
|
+
case State.InSelfClosingTag: {
|
|
7769
|
+
this.stateInSelfClosingTag(c);
|
|
7770
|
+
break;
|
|
7771
|
+
}
|
|
7772
|
+
case State.InDeclaration: {
|
|
7773
|
+
this.stateInDeclaration(c);
|
|
7774
|
+
break;
|
|
7775
|
+
}
|
|
7776
|
+
case State.BeforeDeclaration: {
|
|
7777
|
+
this.stateBeforeDeclaration(c);
|
|
7778
|
+
break;
|
|
7779
|
+
}
|
|
7780
|
+
case State.BeforeComment: {
|
|
7781
|
+
this.stateBeforeComment(c);
|
|
7782
|
+
break;
|
|
7783
|
+
}
|
|
7784
|
+
case State.InProcessingInstruction: {
|
|
7785
|
+
this.stateInProcessingInstruction(c);
|
|
7786
|
+
break;
|
|
7787
|
+
}
|
|
7788
|
+
case State.InEntity: {
|
|
7789
|
+
this.stateInEntity();
|
|
7790
|
+
break;
|
|
7791
|
+
}
|
|
7792
|
+
}
|
|
7793
|
+
this.index++;
|
|
7794
|
+
}
|
|
7795
|
+
this.cleanup();
|
|
7796
|
+
}
|
|
7797
|
+
finish() {
|
|
7798
|
+
if (this.state === State.InEntity) {
|
|
7799
|
+
this.entityDecoder.end();
|
|
7800
|
+
this.state = this.baseState;
|
|
7801
|
+
}
|
|
7802
|
+
this.handleTrailingData();
|
|
7803
|
+
this.cbs.onend();
|
|
7804
|
+
}
|
|
7805
|
+
/** Handle any trailing data. */
|
|
7806
|
+
handleTrailingData() {
|
|
7807
|
+
const endIndex = this.buffer.length + this.offset;
|
|
7808
|
+
// If there is no remaining data, we are done.
|
|
7809
|
+
if (this.sectionStart >= endIndex) {
|
|
7810
|
+
return;
|
|
7811
|
+
}
|
|
7812
|
+
if (this.state === State.InCommentLike) {
|
|
7813
|
+
if (this.currentSequence === Sequences.CdataEnd) {
|
|
7814
|
+
this.cbs.oncdata(this.sectionStart, endIndex, 0);
|
|
7815
|
+
}
|
|
7816
|
+
else {
|
|
7817
|
+
this.cbs.oncomment(this.sectionStart, endIndex, 0);
|
|
7818
|
+
}
|
|
7819
|
+
}
|
|
7820
|
+
else if (this.state === State.InTagName ||
|
|
7821
|
+
this.state === State.BeforeAttributeName ||
|
|
7822
|
+
this.state === State.BeforeAttributeValue ||
|
|
7823
|
+
this.state === State.AfterAttributeName ||
|
|
7824
|
+
this.state === State.InAttributeName ||
|
|
7825
|
+
this.state === State.InAttributeValueSq ||
|
|
7826
|
+
this.state === State.InAttributeValueDq ||
|
|
7827
|
+
this.state === State.InAttributeValueNq ||
|
|
7828
|
+
this.state === State.InClosingTagName) ;
|
|
7829
|
+
else {
|
|
7830
|
+
this.cbs.ontext(this.sectionStart, endIndex);
|
|
7831
|
+
}
|
|
7832
|
+
}
|
|
7833
|
+
emitCodePoint(cp, consumed) {
|
|
7834
|
+
if (this.baseState !== State.Text &&
|
|
7835
|
+
this.baseState !== State.InSpecialTag) {
|
|
7836
|
+
if (this.sectionStart < this.entityStart) {
|
|
7837
|
+
this.cbs.onattribdata(this.sectionStart, this.entityStart);
|
|
7838
|
+
}
|
|
7839
|
+
this.sectionStart = this.entityStart + consumed;
|
|
7840
|
+
this.index = this.sectionStart - 1;
|
|
7841
|
+
this.cbs.onattribentity(cp);
|
|
7842
|
+
}
|
|
7843
|
+
else {
|
|
7844
|
+
if (this.sectionStart < this.entityStart) {
|
|
7845
|
+
this.cbs.ontext(this.sectionStart, this.entityStart);
|
|
7846
|
+
}
|
|
7847
|
+
this.sectionStart = this.entityStart + consumed;
|
|
7848
|
+
this.index = this.sectionStart - 1;
|
|
7849
|
+
this.cbs.ontextentity(cp, this.sectionStart);
|
|
7850
|
+
}
|
|
7851
|
+
}
|
|
7852
|
+
};
|
|
7853
|
+
Tokenizer$2.default = Tokenizer$1;
|
|
7905
7854
|
|
|
7906
7855
|
var __createBinding$1 = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7907
7856
|
if (k2 === undefined) k2 = k;
|
|
@@ -7919,18 +7868,28 @@ var __setModuleDefault$1 = (commonjsGlobal && commonjsGlobal.__setModuleDefault)
|
|
|
7919
7868
|
}) : function(o, v) {
|
|
7920
7869
|
o["default"] = v;
|
|
7921
7870
|
});
|
|
7922
|
-
var __importStar$1 = (commonjsGlobal && commonjsGlobal.__importStar) || function (
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
|
|
7928
|
-
};
|
|
7871
|
+
var __importStar$1 = (commonjsGlobal && commonjsGlobal.__importStar) || (function () {
|
|
7872
|
+
var ownKeys = function(o) {
|
|
7873
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
7874
|
+
var ar = [];
|
|
7875
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
7876
|
+
return ar;
|
|
7877
|
+
};
|
|
7878
|
+
return ownKeys(o);
|
|
7879
|
+
};
|
|
7880
|
+
return function (mod) {
|
|
7881
|
+
if (mod && mod.__esModule) return mod;
|
|
7882
|
+
var result = {};
|
|
7883
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding$1(result, mod, k[i]);
|
|
7884
|
+
__setModuleDefault$1(result, mod);
|
|
7885
|
+
return result;
|
|
7886
|
+
};
|
|
7887
|
+
})();
|
|
7929
7888
|
Object.defineProperty(Parser$4, "__esModule", { value: true });
|
|
7930
7889
|
Parser$4.Parser = void 0;
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7890
|
+
const Tokenizer_js_1 = __importStar$1(Tokenizer$2);
|
|
7891
|
+
const decode_1 = decode$1;
|
|
7892
|
+
const formTags = new Set([
|
|
7934
7893
|
"input",
|
|
7935
7894
|
"option",
|
|
7936
7895
|
"optgroup",
|
|
@@ -7939,11 +7898,11 @@ var formTags = new Set([
|
|
|
7939
7898
|
"datalist",
|
|
7940
7899
|
"textarea",
|
|
7941
7900
|
]);
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7945
|
-
|
|
7946
|
-
|
|
7901
|
+
const pTag = new Set(["p"]);
|
|
7902
|
+
const tableSectionTags = new Set(["thead", "tbody"]);
|
|
7903
|
+
const ddtTags = new Set(["dd", "dt"]);
|
|
7904
|
+
const rtpTags = new Set(["rt", "rp"]);
|
|
7905
|
+
const openImpliesClose = new Map([
|
|
7947
7906
|
["tr", new Set(["tr", "th", "td"])],
|
|
7948
7907
|
["th", new Set(["th"])],
|
|
7949
7908
|
["td", new Set(["thead", "th", "td"])],
|
|
@@ -7992,7 +7951,7 @@ var openImpliesClose = new Map([
|
|
|
7992
7951
|
["tbody", tableSectionTags],
|
|
7993
7952
|
["tfoot", tableSectionTags],
|
|
7994
7953
|
]);
|
|
7995
|
-
|
|
7954
|
+
const voidElements = new Set([
|
|
7996
7955
|
"area",
|
|
7997
7956
|
"base",
|
|
7998
7957
|
"basefont",
|
|
@@ -8013,8 +7972,8 @@ var voidElements = new Set([
|
|
|
8013
7972
|
"track",
|
|
8014
7973
|
"wbr",
|
|
8015
7974
|
]);
|
|
8016
|
-
|
|
8017
|
-
|
|
7975
|
+
const foreignContextElements = new Set(["math", "svg"]);
|
|
7976
|
+
const htmlIntegrationElements = new Set([
|
|
8018
7977
|
"mi",
|
|
8019
7978
|
"mo",
|
|
8020
7979
|
"mn",
|
|
@@ -8025,11 +7984,10 @@ var htmlIntegrationElements = new Set([
|
|
|
8025
7984
|
"desc",
|
|
8026
7985
|
"title",
|
|
8027
7986
|
]);
|
|
8028
|
-
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8032
|
-
var _a, _b, _c, _d, _e;
|
|
7987
|
+
const reNameEnd = /\s|\//;
|
|
7988
|
+
let Parser$3 = class Parser {
|
|
7989
|
+
constructor(cbs, options = {}) {
|
|
7990
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8033
7991
|
this.options = options;
|
|
8034
7992
|
/** The start index of the last event. */
|
|
8035
7993
|
this.startIndex = 0;
|
|
@@ -8045,7 +8003,6 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8045
8003
|
this.attribvalue = "";
|
|
8046
8004
|
this.attribs = null;
|
|
8047
8005
|
this.stack = [];
|
|
8048
|
-
this.foreignContext = [];
|
|
8049
8006
|
this.buffers = [];
|
|
8050
8007
|
this.bufferOffset = 0;
|
|
8051
8008
|
/** The index of the last written buffer. Used when resuming after a `pause()`. */
|
|
@@ -8053,71 +8010,75 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8053
8010
|
/** Indicates whether the parser has finished running / `.end` has been called. */
|
|
8054
8011
|
this.ended = false;
|
|
8055
8012
|
this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};
|
|
8056
|
-
this.
|
|
8013
|
+
this.htmlMode = !this.options.xmlMode;
|
|
8014
|
+
this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;
|
|
8057
8015
|
this.lowerCaseAttributeNames =
|
|
8058
|
-
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b :
|
|
8059
|
-
this.
|
|
8060
|
-
|
|
8016
|
+
(_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;
|
|
8017
|
+
this.recognizeSelfClosing =
|
|
8018
|
+
(_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;
|
|
8019
|
+
this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer_js_1.default)(this.options, this);
|
|
8020
|
+
this.foreignContext = [!this.htmlMode];
|
|
8021
|
+
(_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);
|
|
8061
8022
|
}
|
|
8062
8023
|
// Tokenizer event handlers
|
|
8063
8024
|
/** @internal */
|
|
8064
|
-
|
|
8025
|
+
ontext(start, endIndex) {
|
|
8065
8026
|
var _a, _b;
|
|
8066
|
-
|
|
8027
|
+
const data = this.getSlice(start, endIndex);
|
|
8067
8028
|
this.endIndex = endIndex - 1;
|
|
8068
8029
|
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);
|
|
8069
8030
|
this.startIndex = endIndex;
|
|
8070
|
-
}
|
|
8031
|
+
}
|
|
8071
8032
|
/** @internal */
|
|
8072
|
-
|
|
8033
|
+
ontextentity(cp, endIndex) {
|
|
8073
8034
|
var _a, _b;
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
|
|
8079
|
-
|
|
8080
|
-
|
|
8081
|
-
|
|
8082
|
-
|
|
8083
|
-
|
|
8084
|
-
|
|
8085
|
-
};
|
|
8035
|
+
this.endIndex = endIndex - 1;
|
|
8036
|
+
(_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_1.fromCodePoint)(cp));
|
|
8037
|
+
this.startIndex = endIndex;
|
|
8038
|
+
}
|
|
8039
|
+
/**
|
|
8040
|
+
* Checks if the current tag is a void element. Override this if you want
|
|
8041
|
+
* to specify your own additional void elements.
|
|
8042
|
+
*/
|
|
8043
|
+
isVoidElement(name) {
|
|
8044
|
+
return this.htmlMode && voidElements.has(name);
|
|
8045
|
+
}
|
|
8086
8046
|
/** @internal */
|
|
8087
|
-
|
|
8047
|
+
onopentagname(start, endIndex) {
|
|
8088
8048
|
this.endIndex = endIndex;
|
|
8089
|
-
|
|
8049
|
+
let name = this.getSlice(start, endIndex);
|
|
8090
8050
|
if (this.lowerCaseTagNames) {
|
|
8091
8051
|
name = name.toLowerCase();
|
|
8092
8052
|
}
|
|
8093
8053
|
this.emitOpenTag(name);
|
|
8094
|
-
}
|
|
8095
|
-
|
|
8054
|
+
}
|
|
8055
|
+
emitOpenTag(name) {
|
|
8096
8056
|
var _a, _b, _c, _d;
|
|
8097
8057
|
this.openTagStart = this.startIndex;
|
|
8098
8058
|
this.tagname = name;
|
|
8099
|
-
|
|
8059
|
+
const impliesClose = this.htmlMode && openImpliesClose.get(name);
|
|
8100
8060
|
if (impliesClose) {
|
|
8101
|
-
while (this.stack.length > 0 &&
|
|
8102
|
-
|
|
8103
|
-
var element = this.stack.pop();
|
|
8061
|
+
while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {
|
|
8062
|
+
const element = this.stack.shift();
|
|
8104
8063
|
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);
|
|
8105
8064
|
}
|
|
8106
8065
|
}
|
|
8107
8066
|
if (!this.isVoidElement(name)) {
|
|
8108
|
-
this.stack.
|
|
8109
|
-
if (
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8113
|
-
|
|
8067
|
+
this.stack.unshift(name);
|
|
8068
|
+
if (this.htmlMode) {
|
|
8069
|
+
if (foreignContextElements.has(name)) {
|
|
8070
|
+
this.foreignContext.unshift(true);
|
|
8071
|
+
}
|
|
8072
|
+
else if (htmlIntegrationElements.has(name)) {
|
|
8073
|
+
this.foreignContext.unshift(false);
|
|
8074
|
+
}
|
|
8114
8075
|
}
|
|
8115
8076
|
}
|
|
8116
8077
|
(_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);
|
|
8117
8078
|
if (this.cbs.onopentag)
|
|
8118
8079
|
this.attribs = {};
|
|
8119
|
-
}
|
|
8120
|
-
|
|
8080
|
+
}
|
|
8081
|
+
endOpenTag(isImplied) {
|
|
8121
8082
|
var _a, _b;
|
|
8122
8083
|
this.startIndex = this.openTagStart;
|
|
8123
8084
|
if (this.attribs) {
|
|
@@ -8128,60 +8089,55 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8128
8089
|
this.cbs.onclosetag(this.tagname, true);
|
|
8129
8090
|
}
|
|
8130
8091
|
this.tagname = "";
|
|
8131
|
-
}
|
|
8092
|
+
}
|
|
8132
8093
|
/** @internal */
|
|
8133
|
-
|
|
8094
|
+
onopentagend(endIndex) {
|
|
8134
8095
|
this.endIndex = endIndex;
|
|
8135
8096
|
this.endOpenTag(false);
|
|
8136
8097
|
// Set `startIndex` for next node
|
|
8137
8098
|
this.startIndex = endIndex + 1;
|
|
8138
|
-
}
|
|
8099
|
+
}
|
|
8139
8100
|
/** @internal */
|
|
8140
|
-
|
|
8141
|
-
var _a, _b, _c, _d, _e, _f;
|
|
8101
|
+
onclosetag(start, endIndex) {
|
|
8102
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8142
8103
|
this.endIndex = endIndex;
|
|
8143
|
-
|
|
8104
|
+
let name = this.getSlice(start, endIndex);
|
|
8144
8105
|
if (this.lowerCaseTagNames) {
|
|
8145
8106
|
name = name.toLowerCase();
|
|
8146
8107
|
}
|
|
8147
|
-
if (
|
|
8148
|
-
|
|
8149
|
-
|
|
8108
|
+
if (this.htmlMode &&
|
|
8109
|
+
(foreignContextElements.has(name) ||
|
|
8110
|
+
htmlIntegrationElements.has(name))) {
|
|
8111
|
+
this.foreignContext.shift();
|
|
8150
8112
|
}
|
|
8151
8113
|
if (!this.isVoidElement(name)) {
|
|
8152
|
-
|
|
8114
|
+
const pos = this.stack.indexOf(name);
|
|
8153
8115
|
if (pos !== -1) {
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
|
|
8157
|
-
|
|
8158
|
-
this.cbs.onclosetag(this.stack.pop(), count !== 0);
|
|
8159
|
-
}
|
|
8116
|
+
for (let index = 0; index <= pos; index++) {
|
|
8117
|
+
const element = this.stack.shift();
|
|
8118
|
+
// We know the stack has sufficient elements.
|
|
8119
|
+
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);
|
|
8160
8120
|
}
|
|
8161
|
-
else
|
|
8162
|
-
this.stack.length = pos;
|
|
8163
8121
|
}
|
|
8164
|
-
else if (
|
|
8122
|
+
else if (this.htmlMode && name === "p") {
|
|
8165
8123
|
// Implicit open before close
|
|
8166
8124
|
this.emitOpenTag("p");
|
|
8167
8125
|
this.closeCurrentTag(true);
|
|
8168
8126
|
}
|
|
8169
8127
|
}
|
|
8170
|
-
else if (
|
|
8128
|
+
else if (this.htmlMode && name === "br") {
|
|
8171
8129
|
// We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.
|
|
8172
|
-
(
|
|
8173
|
-
(
|
|
8174
|
-
(
|
|
8130
|
+
(_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br");
|
|
8131
|
+
(_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true);
|
|
8132
|
+
(_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false);
|
|
8175
8133
|
}
|
|
8176
8134
|
// Set `startIndex` for next node
|
|
8177
8135
|
this.startIndex = endIndex + 1;
|
|
8178
|
-
}
|
|
8136
|
+
}
|
|
8179
8137
|
/** @internal */
|
|
8180
|
-
|
|
8138
|
+
onselfclosingtag(endIndex) {
|
|
8181
8139
|
this.endIndex = endIndex;
|
|
8182
|
-
if (this.
|
|
8183
|
-
this.options.recognizeSelfClosing ||
|
|
8184
|
-
this.foreignContext[this.foreignContext.length - 1]) {
|
|
8140
|
+
if (this.recognizeSelfClosing || this.foreignContext[0]) {
|
|
8185
8141
|
this.closeCurrentTag(false);
|
|
8186
8142
|
// Set `startIndex` for next node
|
|
8187
8143
|
this.startIndex = endIndex + 1;
|
|
@@ -8190,36 +8146,36 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8190
8146
|
// Ignore the fact that the tag is self-closing.
|
|
8191
8147
|
this.onopentagend(endIndex);
|
|
8192
8148
|
}
|
|
8193
|
-
}
|
|
8194
|
-
|
|
8149
|
+
}
|
|
8150
|
+
closeCurrentTag(isOpenImplied) {
|
|
8195
8151
|
var _a, _b;
|
|
8196
|
-
|
|
8152
|
+
const name = this.tagname;
|
|
8197
8153
|
this.endOpenTag(isOpenImplied);
|
|
8198
8154
|
// Self-closing tags will be on the top of the stack
|
|
8199
|
-
if (this.stack[
|
|
8155
|
+
if (this.stack[0] === name) {
|
|
8200
8156
|
// If the opening tag isn't implied, the closing tag has to be implied.
|
|
8201
8157
|
(_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);
|
|
8202
|
-
this.stack.
|
|
8158
|
+
this.stack.shift();
|
|
8203
8159
|
}
|
|
8204
|
-
}
|
|
8160
|
+
}
|
|
8205
8161
|
/** @internal */
|
|
8206
|
-
|
|
8162
|
+
onattribname(start, endIndex) {
|
|
8207
8163
|
this.startIndex = start;
|
|
8208
|
-
|
|
8164
|
+
const name = this.getSlice(start, endIndex);
|
|
8209
8165
|
this.attribname = this.lowerCaseAttributeNames
|
|
8210
8166
|
? name.toLowerCase()
|
|
8211
8167
|
: name;
|
|
8212
|
-
}
|
|
8168
|
+
}
|
|
8213
8169
|
/** @internal */
|
|
8214
|
-
|
|
8170
|
+
onattribdata(start, endIndex) {
|
|
8215
8171
|
this.attribvalue += this.getSlice(start, endIndex);
|
|
8216
|
-
}
|
|
8172
|
+
}
|
|
8217
8173
|
/** @internal */
|
|
8218
|
-
|
|
8219
|
-
this.attribvalue += (0,
|
|
8220
|
-
}
|
|
8174
|
+
onattribentity(cp) {
|
|
8175
|
+
this.attribvalue += (0, decode_1.fromCodePoint)(cp);
|
|
8176
|
+
}
|
|
8221
8177
|
/** @internal */
|
|
8222
|
-
|
|
8178
|
+
onattribend(quote, endIndex) {
|
|
8223
8179
|
var _a, _b;
|
|
8224
8180
|
this.endIndex = endIndex;
|
|
8225
8181
|
(_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double
|
|
@@ -8234,78 +8190,79 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8234
8190
|
this.attribs[this.attribname] = this.attribvalue;
|
|
8235
8191
|
}
|
|
8236
8192
|
this.attribvalue = "";
|
|
8237
|
-
}
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
|
|
8193
|
+
}
|
|
8194
|
+
getInstructionName(value) {
|
|
8195
|
+
const index = value.search(reNameEnd);
|
|
8196
|
+
let name = index < 0 ? value : value.substr(0, index);
|
|
8241
8197
|
if (this.lowerCaseTagNames) {
|
|
8242
8198
|
name = name.toLowerCase();
|
|
8243
8199
|
}
|
|
8244
8200
|
return name;
|
|
8245
|
-
}
|
|
8201
|
+
}
|
|
8246
8202
|
/** @internal */
|
|
8247
|
-
|
|
8203
|
+
ondeclaration(start, endIndex) {
|
|
8248
8204
|
this.endIndex = endIndex;
|
|
8249
|
-
|
|
8205
|
+
const value = this.getSlice(start, endIndex);
|
|
8250
8206
|
if (this.cbs.onprocessinginstruction) {
|
|
8251
|
-
|
|
8252
|
-
this.cbs.onprocessinginstruction(
|
|
8207
|
+
const name = this.getInstructionName(value);
|
|
8208
|
+
this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);
|
|
8253
8209
|
}
|
|
8254
8210
|
// Set `startIndex` for next node
|
|
8255
8211
|
this.startIndex = endIndex + 1;
|
|
8256
|
-
}
|
|
8212
|
+
}
|
|
8257
8213
|
/** @internal */
|
|
8258
|
-
|
|
8214
|
+
onprocessinginstruction(start, endIndex) {
|
|
8259
8215
|
this.endIndex = endIndex;
|
|
8260
|
-
|
|
8216
|
+
const value = this.getSlice(start, endIndex);
|
|
8261
8217
|
if (this.cbs.onprocessinginstruction) {
|
|
8262
|
-
|
|
8263
|
-
this.cbs.onprocessinginstruction(
|
|
8218
|
+
const name = this.getInstructionName(value);
|
|
8219
|
+
this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);
|
|
8264
8220
|
}
|
|
8265
8221
|
// Set `startIndex` for next node
|
|
8266
8222
|
this.startIndex = endIndex + 1;
|
|
8267
|
-
}
|
|
8223
|
+
}
|
|
8268
8224
|
/** @internal */
|
|
8269
|
-
|
|
8225
|
+
oncomment(start, endIndex, offset) {
|
|
8270
8226
|
var _a, _b, _c, _d;
|
|
8271
8227
|
this.endIndex = endIndex;
|
|
8272
8228
|
(_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));
|
|
8273
8229
|
(_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);
|
|
8274
8230
|
// Set `startIndex` for next node
|
|
8275
8231
|
this.startIndex = endIndex + 1;
|
|
8276
|
-
}
|
|
8232
|
+
}
|
|
8277
8233
|
/** @internal */
|
|
8278
|
-
|
|
8234
|
+
oncdata(start, endIndex, offset) {
|
|
8279
8235
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
8280
8236
|
this.endIndex = endIndex;
|
|
8281
|
-
|
|
8282
|
-
if (this.
|
|
8237
|
+
const value = this.getSlice(start, endIndex - offset);
|
|
8238
|
+
if (!this.htmlMode || this.options.recognizeCDATA) {
|
|
8283
8239
|
(_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8284
8240
|
(_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);
|
|
8285
8241
|
(_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
8286
8242
|
}
|
|
8287
8243
|
else {
|
|
8288
|
-
(_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g,
|
|
8244
|
+
(_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);
|
|
8289
8245
|
(_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);
|
|
8290
8246
|
}
|
|
8291
8247
|
// Set `startIndex` for next node
|
|
8292
8248
|
this.startIndex = endIndex + 1;
|
|
8293
|
-
}
|
|
8249
|
+
}
|
|
8294
8250
|
/** @internal */
|
|
8295
|
-
|
|
8251
|
+
onend() {
|
|
8296
8252
|
var _a, _b;
|
|
8297
8253
|
if (this.cbs.onclosetag) {
|
|
8298
8254
|
// Set the end index for all remaining tags
|
|
8299
8255
|
this.endIndex = this.startIndex;
|
|
8300
|
-
for (
|
|
8301
|
-
;
|
|
8256
|
+
for (let index = 0; index < this.stack.length; index++) {
|
|
8257
|
+
this.cbs.onclosetag(this.stack[index], true);
|
|
8258
|
+
}
|
|
8302
8259
|
}
|
|
8303
8260
|
(_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8304
|
-
}
|
|
8261
|
+
}
|
|
8305
8262
|
/**
|
|
8306
8263
|
* Resets the parser to a blank state, ready to parse a new HTML document
|
|
8307
8264
|
*/
|
|
8308
|
-
|
|
8265
|
+
reset() {
|
|
8309
8266
|
var _a, _b, _c, _d;
|
|
8310
8267
|
(_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
8311
8268
|
this.tokenizer.reset();
|
|
@@ -8317,42 +8274,44 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8317
8274
|
this.endIndex = 0;
|
|
8318
8275
|
(_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);
|
|
8319
8276
|
this.buffers.length = 0;
|
|
8277
|
+
this.foreignContext.length = 0;
|
|
8278
|
+
this.foreignContext.unshift(!this.htmlMode);
|
|
8320
8279
|
this.bufferOffset = 0;
|
|
8321
8280
|
this.writeIndex = 0;
|
|
8322
8281
|
this.ended = false;
|
|
8323
|
-
}
|
|
8282
|
+
}
|
|
8324
8283
|
/**
|
|
8325
8284
|
* Resets the parser, then parses a complete document and
|
|
8326
8285
|
* pushes it to the handler.
|
|
8327
8286
|
*
|
|
8328
8287
|
* @param data Document to parse.
|
|
8329
8288
|
*/
|
|
8330
|
-
|
|
8289
|
+
parseComplete(data) {
|
|
8331
8290
|
this.reset();
|
|
8332
8291
|
this.end(data);
|
|
8333
|
-
}
|
|
8334
|
-
|
|
8292
|
+
}
|
|
8293
|
+
getSlice(start, end) {
|
|
8335
8294
|
while (start - this.bufferOffset >= this.buffers[0].length) {
|
|
8336
8295
|
this.shiftBuffer();
|
|
8337
8296
|
}
|
|
8338
|
-
|
|
8297
|
+
let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);
|
|
8339
8298
|
while (end - this.bufferOffset > this.buffers[0].length) {
|
|
8340
8299
|
this.shiftBuffer();
|
|
8341
8300
|
slice += this.buffers[0].slice(0, end - this.bufferOffset);
|
|
8342
8301
|
}
|
|
8343
8302
|
return slice;
|
|
8344
|
-
}
|
|
8345
|
-
|
|
8303
|
+
}
|
|
8304
|
+
shiftBuffer() {
|
|
8346
8305
|
this.bufferOffset += this.buffers[0].length;
|
|
8347
8306
|
this.writeIndex--;
|
|
8348
8307
|
this.buffers.shift();
|
|
8349
|
-
}
|
|
8308
|
+
}
|
|
8350
8309
|
/**
|
|
8351
8310
|
* Parses a chunk of data and calls the corresponding callbacks.
|
|
8352
8311
|
*
|
|
8353
8312
|
* @param chunk Chunk to parse.
|
|
8354
8313
|
*/
|
|
8355
|
-
|
|
8314
|
+
write(chunk) {
|
|
8356
8315
|
var _a, _b;
|
|
8357
8316
|
if (this.ended) {
|
|
8358
8317
|
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!"));
|
|
@@ -8363,13 +8322,13 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8363
8322
|
this.tokenizer.write(chunk);
|
|
8364
8323
|
this.writeIndex++;
|
|
8365
8324
|
}
|
|
8366
|
-
}
|
|
8325
|
+
}
|
|
8367
8326
|
/**
|
|
8368
8327
|
* Parses the end of the buffer and clears the stack, calls onend.
|
|
8369
8328
|
*
|
|
8370
8329
|
* @param chunk Optional final chunk to parse.
|
|
8371
8330
|
*/
|
|
8372
|
-
|
|
8331
|
+
end(chunk) {
|
|
8373
8332
|
var _a, _b;
|
|
8374
8333
|
if (this.ended) {
|
|
8375
8334
|
(_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!"));
|
|
@@ -8379,17 +8338,17 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8379
8338
|
this.write(chunk);
|
|
8380
8339
|
this.ended = true;
|
|
8381
8340
|
this.tokenizer.end();
|
|
8382
|
-
}
|
|
8341
|
+
}
|
|
8383
8342
|
/**
|
|
8384
8343
|
* Pauses parsing. The parser won't emit events until `resume` is called.
|
|
8385
8344
|
*/
|
|
8386
|
-
|
|
8345
|
+
pause() {
|
|
8387
8346
|
this.tokenizer.pause();
|
|
8388
|
-
}
|
|
8347
|
+
}
|
|
8389
8348
|
/**
|
|
8390
8349
|
* Resumes parsing after `pause` was called.
|
|
8391
8350
|
*/
|
|
8392
|
-
|
|
8351
|
+
resume() {
|
|
8393
8352
|
this.tokenizer.resume();
|
|
8394
8353
|
while (this.tokenizer.running &&
|
|
8395
8354
|
this.writeIndex < this.buffers.length) {
|
|
@@ -8397,27 +8356,26 @@ var Parser$3 = /** @class */ (function () {
|
|
|
8397
8356
|
}
|
|
8398
8357
|
if (this.ended)
|
|
8399
8358
|
this.tokenizer.end();
|
|
8400
|
-
}
|
|
8359
|
+
}
|
|
8401
8360
|
/**
|
|
8402
8361
|
* Alias of `write`, for backwards compatibility.
|
|
8403
8362
|
*
|
|
8404
8363
|
* @param chunk Chunk to parse.
|
|
8405
8364
|
* @deprecated
|
|
8406
8365
|
*/
|
|
8407
|
-
|
|
8366
|
+
parseChunk(chunk) {
|
|
8408
8367
|
this.write(chunk);
|
|
8409
|
-
}
|
|
8368
|
+
}
|
|
8410
8369
|
/**
|
|
8411
8370
|
* Alias of `end`, for backwards compatibility.
|
|
8412
8371
|
*
|
|
8413
8372
|
* @param chunk Optional final chunk to parse.
|
|
8414
8373
|
* @deprecated
|
|
8415
8374
|
*/
|
|
8416
|
-
|
|
8375
|
+
done(chunk) {
|
|
8417
8376
|
this.end(chunk);
|
|
8418
|
-
}
|
|
8419
|
-
|
|
8420
|
-
}());
|
|
8377
|
+
}
|
|
8378
|
+
};
|
|
8421
8379
|
Parser$4.Parser = Parser$3;
|
|
8422
8380
|
|
|
8423
8381
|
var lib$4 = {};
|
|
@@ -8969,168 +8927,808 @@ function cloneChildren(childs) {
|
|
|
8969
8927
|
if (k2 === undefined) k2 = k;
|
|
8970
8928
|
o[k2] = m[k];
|
|
8971
8929
|
}));
|
|
8972
|
-
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
8973
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
8930
|
+
var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) {
|
|
8931
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
8932
|
+
};
|
|
8933
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8934
|
+
exports.DomHandler = void 0;
|
|
8935
|
+
var domelementtype_1 = lib$3;
|
|
8936
|
+
var node_js_1 = node$1;
|
|
8937
|
+
__exportStar(node$1, exports);
|
|
8938
|
+
// Default options
|
|
8939
|
+
var defaultOpts = {
|
|
8940
|
+
withStartIndices: false,
|
|
8941
|
+
withEndIndices: false,
|
|
8942
|
+
xmlMode: false,
|
|
8943
|
+
};
|
|
8944
|
+
var DomHandler = /** @class */ (function () {
|
|
8945
|
+
/**
|
|
8946
|
+
* @param callback Called once parsing has completed.
|
|
8947
|
+
* @param options Settings for the handler.
|
|
8948
|
+
* @param elementCB Callback whenever a tag is closed.
|
|
8949
|
+
*/
|
|
8950
|
+
function DomHandler(callback, options, elementCB) {
|
|
8951
|
+
/** The elements of the DOM */
|
|
8952
|
+
this.dom = [];
|
|
8953
|
+
/** The root element for the DOM */
|
|
8954
|
+
this.root = new node_js_1.Document(this.dom);
|
|
8955
|
+
/** Indicated whether parsing has been completed. */
|
|
8956
|
+
this.done = false;
|
|
8957
|
+
/** Stack of open tags. */
|
|
8958
|
+
this.tagStack = [this.root];
|
|
8959
|
+
/** A data node that is still being written to. */
|
|
8960
|
+
this.lastNode = null;
|
|
8961
|
+
/** Reference to the parser instance. Used for location information. */
|
|
8962
|
+
this.parser = null;
|
|
8963
|
+
// Make it possible to skip arguments, for backwards-compatibility
|
|
8964
|
+
if (typeof options === "function") {
|
|
8965
|
+
elementCB = options;
|
|
8966
|
+
options = defaultOpts;
|
|
8967
|
+
}
|
|
8968
|
+
if (typeof callback === "object") {
|
|
8969
|
+
options = callback;
|
|
8970
|
+
callback = undefined;
|
|
8971
|
+
}
|
|
8972
|
+
this.callback = callback !== null && callback !== void 0 ? callback : null;
|
|
8973
|
+
this.options = options !== null && options !== void 0 ? options : defaultOpts;
|
|
8974
|
+
this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
|
|
8975
|
+
}
|
|
8976
|
+
DomHandler.prototype.onparserinit = function (parser) {
|
|
8977
|
+
this.parser = parser;
|
|
8978
|
+
};
|
|
8979
|
+
// Resets the handler back to starting state
|
|
8980
|
+
DomHandler.prototype.onreset = function () {
|
|
8981
|
+
this.dom = [];
|
|
8982
|
+
this.root = new node_js_1.Document(this.dom);
|
|
8983
|
+
this.done = false;
|
|
8984
|
+
this.tagStack = [this.root];
|
|
8985
|
+
this.lastNode = null;
|
|
8986
|
+
this.parser = null;
|
|
8987
|
+
};
|
|
8988
|
+
// Signals the handler that parsing is done
|
|
8989
|
+
DomHandler.prototype.onend = function () {
|
|
8990
|
+
if (this.done)
|
|
8991
|
+
return;
|
|
8992
|
+
this.done = true;
|
|
8993
|
+
this.parser = null;
|
|
8994
|
+
this.handleCallback(null);
|
|
8995
|
+
};
|
|
8996
|
+
DomHandler.prototype.onerror = function (error) {
|
|
8997
|
+
this.handleCallback(error);
|
|
8998
|
+
};
|
|
8999
|
+
DomHandler.prototype.onclosetag = function () {
|
|
9000
|
+
this.lastNode = null;
|
|
9001
|
+
var elem = this.tagStack.pop();
|
|
9002
|
+
if (this.options.withEndIndices) {
|
|
9003
|
+
elem.endIndex = this.parser.endIndex;
|
|
9004
|
+
}
|
|
9005
|
+
if (this.elementCB)
|
|
9006
|
+
this.elementCB(elem);
|
|
9007
|
+
};
|
|
9008
|
+
DomHandler.prototype.onopentag = function (name, attribs) {
|
|
9009
|
+
var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : undefined;
|
|
9010
|
+
var element = new node_js_1.Element(name, attribs, undefined, type);
|
|
9011
|
+
this.addNode(element);
|
|
9012
|
+
this.tagStack.push(element);
|
|
9013
|
+
};
|
|
9014
|
+
DomHandler.prototype.ontext = function (data) {
|
|
9015
|
+
var lastNode = this.lastNode;
|
|
9016
|
+
if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) {
|
|
9017
|
+
lastNode.data += data;
|
|
9018
|
+
if (this.options.withEndIndices) {
|
|
9019
|
+
lastNode.endIndex = this.parser.endIndex;
|
|
9020
|
+
}
|
|
9021
|
+
}
|
|
9022
|
+
else {
|
|
9023
|
+
var node = new node_js_1.Text(data);
|
|
9024
|
+
this.addNode(node);
|
|
9025
|
+
this.lastNode = node;
|
|
9026
|
+
}
|
|
9027
|
+
};
|
|
9028
|
+
DomHandler.prototype.oncomment = function (data) {
|
|
9029
|
+
if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) {
|
|
9030
|
+
this.lastNode.data += data;
|
|
9031
|
+
return;
|
|
9032
|
+
}
|
|
9033
|
+
var node = new node_js_1.Comment(data);
|
|
9034
|
+
this.addNode(node);
|
|
9035
|
+
this.lastNode = node;
|
|
9036
|
+
};
|
|
9037
|
+
DomHandler.prototype.oncommentend = function () {
|
|
9038
|
+
this.lastNode = null;
|
|
9039
|
+
};
|
|
9040
|
+
DomHandler.prototype.oncdatastart = function () {
|
|
9041
|
+
var text = new node_js_1.Text("");
|
|
9042
|
+
var node = new node_js_1.CDATA([text]);
|
|
9043
|
+
this.addNode(node);
|
|
9044
|
+
text.parent = node;
|
|
9045
|
+
this.lastNode = text;
|
|
9046
|
+
};
|
|
9047
|
+
DomHandler.prototype.oncdataend = function () {
|
|
9048
|
+
this.lastNode = null;
|
|
9049
|
+
};
|
|
9050
|
+
DomHandler.prototype.onprocessinginstruction = function (name, data) {
|
|
9051
|
+
var node = new node_js_1.ProcessingInstruction(name, data);
|
|
9052
|
+
this.addNode(node);
|
|
9053
|
+
};
|
|
9054
|
+
DomHandler.prototype.handleCallback = function (error) {
|
|
9055
|
+
if (typeof this.callback === "function") {
|
|
9056
|
+
this.callback(error, this.dom);
|
|
9057
|
+
}
|
|
9058
|
+
else if (error) {
|
|
9059
|
+
throw error;
|
|
9060
|
+
}
|
|
9061
|
+
};
|
|
9062
|
+
DomHandler.prototype.addNode = function (node) {
|
|
9063
|
+
var parent = this.tagStack[this.tagStack.length - 1];
|
|
9064
|
+
var previousSibling = parent.children[parent.children.length - 1];
|
|
9065
|
+
if (this.options.withStartIndices) {
|
|
9066
|
+
node.startIndex = this.parser.startIndex;
|
|
9067
|
+
}
|
|
9068
|
+
if (this.options.withEndIndices) {
|
|
9069
|
+
node.endIndex = this.parser.endIndex;
|
|
9070
|
+
}
|
|
9071
|
+
parent.children.push(node);
|
|
9072
|
+
if (previousSibling) {
|
|
9073
|
+
node.prev = previousSibling;
|
|
9074
|
+
previousSibling.next = node;
|
|
9075
|
+
}
|
|
9076
|
+
node.parent = parent;
|
|
9077
|
+
this.lastNode = null;
|
|
9078
|
+
};
|
|
9079
|
+
return DomHandler;
|
|
9080
|
+
}());
|
|
9081
|
+
exports.DomHandler = DomHandler;
|
|
9082
|
+
exports.default = DomHandler;
|
|
9083
|
+
} (lib$4));
|
|
9084
|
+
|
|
9085
|
+
var lib$2 = {};
|
|
9086
|
+
|
|
9087
|
+
var stringify$5 = {};
|
|
9088
|
+
|
|
9089
|
+
var lib$1 = {};
|
|
9090
|
+
|
|
9091
|
+
var lib = {};
|
|
9092
|
+
|
|
9093
|
+
var decode = {};
|
|
9094
|
+
|
|
9095
|
+
var decodeDataHtml = {};
|
|
9096
|
+
|
|
9097
|
+
// Generated using scripts/write-decode-map.ts
|
|
9098
|
+
Object.defineProperty(decodeDataHtml, "__esModule", { value: true });
|
|
9099
|
+
decodeDataHtml.default = new Uint16Array(
|
|
9100
|
+
// prettier-ignore
|
|
9101
|
+
"\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"
|
|
9102
|
+
.split("")
|
|
9103
|
+
.map(function (c) { return c.charCodeAt(0); }));
|
|
9104
|
+
|
|
9105
|
+
var decodeDataXml = {};
|
|
9106
|
+
|
|
9107
|
+
// Generated using scripts/write-decode-map.ts
|
|
9108
|
+
Object.defineProperty(decodeDataXml, "__esModule", { value: true });
|
|
9109
|
+
decodeDataXml.default = new Uint16Array(
|
|
9110
|
+
// prettier-ignore
|
|
9111
|
+
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
9112
|
+
.split("")
|
|
9113
|
+
.map(function (c) { return c.charCodeAt(0); }));
|
|
9114
|
+
|
|
9115
|
+
var decode_codepoint = {};
|
|
9116
|
+
|
|
9117
|
+
(function (exports) {
|
|
9118
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
9119
|
+
var _a;
|
|
9120
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9121
|
+
exports.replaceCodePoint = exports.fromCodePoint = void 0;
|
|
9122
|
+
var decodeMap = new Map([
|
|
9123
|
+
[0, 65533],
|
|
9124
|
+
// C1 Unicode control character reference replacements
|
|
9125
|
+
[128, 8364],
|
|
9126
|
+
[130, 8218],
|
|
9127
|
+
[131, 402],
|
|
9128
|
+
[132, 8222],
|
|
9129
|
+
[133, 8230],
|
|
9130
|
+
[134, 8224],
|
|
9131
|
+
[135, 8225],
|
|
9132
|
+
[136, 710],
|
|
9133
|
+
[137, 8240],
|
|
9134
|
+
[138, 352],
|
|
9135
|
+
[139, 8249],
|
|
9136
|
+
[140, 338],
|
|
9137
|
+
[142, 381],
|
|
9138
|
+
[145, 8216],
|
|
9139
|
+
[146, 8217],
|
|
9140
|
+
[147, 8220],
|
|
9141
|
+
[148, 8221],
|
|
9142
|
+
[149, 8226],
|
|
9143
|
+
[150, 8211],
|
|
9144
|
+
[151, 8212],
|
|
9145
|
+
[152, 732],
|
|
9146
|
+
[153, 8482],
|
|
9147
|
+
[154, 353],
|
|
9148
|
+
[155, 8250],
|
|
9149
|
+
[156, 339],
|
|
9150
|
+
[158, 382],
|
|
9151
|
+
[159, 376],
|
|
9152
|
+
]);
|
|
9153
|
+
/**
|
|
9154
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
9155
|
+
*/
|
|
9156
|
+
exports.fromCodePoint =
|
|
9157
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
9158
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
|
|
9159
|
+
var output = "";
|
|
9160
|
+
if (codePoint > 0xffff) {
|
|
9161
|
+
codePoint -= 0x10000;
|
|
9162
|
+
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
9163
|
+
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
9164
|
+
}
|
|
9165
|
+
output += String.fromCharCode(codePoint);
|
|
9166
|
+
return output;
|
|
9167
|
+
};
|
|
9168
|
+
/**
|
|
9169
|
+
* Replace the given code point with a replacement character if it is a
|
|
9170
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
9171
|
+
* point unchanged.
|
|
9172
|
+
*/
|
|
9173
|
+
function replaceCodePoint(codePoint) {
|
|
9174
|
+
var _a;
|
|
9175
|
+
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
9176
|
+
return 0xfffd;
|
|
9177
|
+
}
|
|
9178
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
9179
|
+
}
|
|
9180
|
+
exports.replaceCodePoint = replaceCodePoint;
|
|
9181
|
+
/**
|
|
9182
|
+
* Replace the code point if relevant, then convert it to a string.
|
|
9183
|
+
*
|
|
9184
|
+
* @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
|
|
9185
|
+
* @param codePoint The code point to decode.
|
|
9186
|
+
* @returns The decoded code point.
|
|
9187
|
+
*/
|
|
9188
|
+
function decodeCodePoint(codePoint) {
|
|
9189
|
+
return (0, exports.fromCodePoint)(replaceCodePoint(codePoint));
|
|
9190
|
+
}
|
|
9191
|
+
exports.default = decodeCodePoint;
|
|
9192
|
+
|
|
9193
|
+
} (decode_codepoint));
|
|
9194
|
+
|
|
9195
|
+
(function (exports) {
|
|
9196
|
+
var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9197
|
+
if (k2 === undefined) k2 = k;
|
|
9198
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9199
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9200
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9201
|
+
}
|
|
9202
|
+
Object.defineProperty(o, k2, desc);
|
|
9203
|
+
}) : (function(o, m, k, k2) {
|
|
9204
|
+
if (k2 === undefined) k2 = k;
|
|
9205
|
+
o[k2] = m[k];
|
|
9206
|
+
}));
|
|
9207
|
+
var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
9208
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
9209
|
+
}) : function(o, v) {
|
|
9210
|
+
o["default"] = v;
|
|
9211
|
+
});
|
|
9212
|
+
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) {
|
|
9213
|
+
if (mod && mod.__esModule) return mod;
|
|
9214
|
+
var result = {};
|
|
9215
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
9216
|
+
__setModuleDefault(result, mod);
|
|
9217
|
+
return result;
|
|
8974
9218
|
};
|
|
8975
|
-
|
|
8976
|
-
|
|
8977
|
-
var domelementtype_1 = lib$3;
|
|
8978
|
-
var node_js_1 = node$1;
|
|
8979
|
-
__exportStar(node$1, exports);
|
|
8980
|
-
// Default options
|
|
8981
|
-
var defaultOpts = {
|
|
8982
|
-
withStartIndices: false,
|
|
8983
|
-
withEndIndices: false,
|
|
8984
|
-
xmlMode: false,
|
|
9219
|
+
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
9220
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8985
9221
|
};
|
|
8986
|
-
|
|
9222
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9223
|
+
exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0;
|
|
9224
|
+
var decode_data_html_js_1 = __importDefault(decodeDataHtml);
|
|
9225
|
+
exports.htmlDecodeTree = decode_data_html_js_1.default;
|
|
9226
|
+
var decode_data_xml_js_1 = __importDefault(decodeDataXml);
|
|
9227
|
+
exports.xmlDecodeTree = decode_data_xml_js_1.default;
|
|
9228
|
+
var decode_codepoint_js_1 = __importStar(decode_codepoint);
|
|
9229
|
+
exports.decodeCodePoint = decode_codepoint_js_1.default;
|
|
9230
|
+
var decode_codepoint_js_2 = decode_codepoint;
|
|
9231
|
+
Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } });
|
|
9232
|
+
Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } });
|
|
9233
|
+
var CharCodes;
|
|
9234
|
+
(function (CharCodes) {
|
|
9235
|
+
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
9236
|
+
CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
|
|
9237
|
+
CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
|
|
9238
|
+
CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
|
|
9239
|
+
CharCodes[CharCodes["NINE"] = 57] = "NINE";
|
|
9240
|
+
CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
|
|
9241
|
+
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
9242
|
+
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
9243
|
+
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
9244
|
+
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
9245
|
+
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
9246
|
+
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
9247
|
+
})(CharCodes || (CharCodes = {}));
|
|
9248
|
+
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
9249
|
+
var TO_LOWER_BIT = 32;
|
|
9250
|
+
var BinTrieFlags;
|
|
9251
|
+
(function (BinTrieFlags) {
|
|
9252
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
9253
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
9254
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
9255
|
+
})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {}));
|
|
9256
|
+
function isNumber(code) {
|
|
9257
|
+
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
9258
|
+
}
|
|
9259
|
+
function isHexadecimalCharacter(code) {
|
|
9260
|
+
return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||
|
|
9261
|
+
(code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));
|
|
9262
|
+
}
|
|
9263
|
+
function isAsciiAlphaNumeric(code) {
|
|
9264
|
+
return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||
|
|
9265
|
+
(code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||
|
|
9266
|
+
isNumber(code));
|
|
9267
|
+
}
|
|
9268
|
+
/**
|
|
9269
|
+
* Checks if the given character is a valid end character for an entity in an attribute.
|
|
9270
|
+
*
|
|
9271
|
+
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
9272
|
+
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
9273
|
+
*/
|
|
9274
|
+
function isEntityInAttributeInvalidEnd(code) {
|
|
9275
|
+
return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);
|
|
9276
|
+
}
|
|
9277
|
+
var EntityDecoderState;
|
|
9278
|
+
(function (EntityDecoderState) {
|
|
9279
|
+
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
9280
|
+
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
9281
|
+
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
9282
|
+
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
9283
|
+
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
9284
|
+
})(EntityDecoderState || (EntityDecoderState = {}));
|
|
9285
|
+
var DecodingMode;
|
|
9286
|
+
(function (DecodingMode) {
|
|
9287
|
+
/** Entities in text nodes that can end with any character. */
|
|
9288
|
+
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
9289
|
+
/** Only allow entities terminated with a semicolon. */
|
|
9290
|
+
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
9291
|
+
/** Entities in attributes have limitations on ending characters. */
|
|
9292
|
+
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
9293
|
+
})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {}));
|
|
9294
|
+
/**
|
|
9295
|
+
* Token decoder with support of writing partial entities.
|
|
9296
|
+
*/
|
|
9297
|
+
var EntityDecoder = /** @class */ (function () {
|
|
9298
|
+
function EntityDecoder(
|
|
9299
|
+
/** The tree used to decode entities. */
|
|
9300
|
+
decodeTree,
|
|
9301
|
+
/**
|
|
9302
|
+
* The function that is called when a codepoint is decoded.
|
|
9303
|
+
*
|
|
9304
|
+
* For multi-byte named entities, this will be called multiple times,
|
|
9305
|
+
* with the second codepoint, and the same `consumed` value.
|
|
9306
|
+
*
|
|
9307
|
+
* @param codepoint The decoded codepoint.
|
|
9308
|
+
* @param consumed The number of bytes consumed by the decoder.
|
|
9309
|
+
*/
|
|
9310
|
+
emitCodePoint,
|
|
9311
|
+
/** An object that is used to produce errors. */
|
|
9312
|
+
errors) {
|
|
9313
|
+
this.decodeTree = decodeTree;
|
|
9314
|
+
this.emitCodePoint = emitCodePoint;
|
|
9315
|
+
this.errors = errors;
|
|
9316
|
+
/** The current state of the decoder. */
|
|
9317
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9318
|
+
/** Characters that were consumed while parsing an entity. */
|
|
9319
|
+
this.consumed = 1;
|
|
9320
|
+
/**
|
|
9321
|
+
* The result of the entity.
|
|
9322
|
+
*
|
|
9323
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
9324
|
+
* numeric entity.
|
|
9325
|
+
*/
|
|
9326
|
+
this.result = 0;
|
|
9327
|
+
/** The current index in the decode tree. */
|
|
9328
|
+
this.treeIndex = 0;
|
|
9329
|
+
/** The number of characters that were consumed in excess. */
|
|
9330
|
+
this.excess = 1;
|
|
9331
|
+
/** The mode in which the decoder is operating. */
|
|
9332
|
+
this.decodeMode = DecodingMode.Strict;
|
|
9333
|
+
}
|
|
9334
|
+
/** Resets the instance to make it reusable. */
|
|
9335
|
+
EntityDecoder.prototype.startEntity = function (decodeMode) {
|
|
9336
|
+
this.decodeMode = decodeMode;
|
|
9337
|
+
this.state = EntityDecoderState.EntityStart;
|
|
9338
|
+
this.result = 0;
|
|
9339
|
+
this.treeIndex = 0;
|
|
9340
|
+
this.excess = 1;
|
|
9341
|
+
this.consumed = 1;
|
|
9342
|
+
};
|
|
9343
|
+
/**
|
|
9344
|
+
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
9345
|
+
* If the entity is incomplete, the decoder will return -1.
|
|
9346
|
+
*
|
|
9347
|
+
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
9348
|
+
* entity is incomplete, and resume when the next string is written.
|
|
9349
|
+
*
|
|
9350
|
+
* @param string The string containing the entity (or a continuation of the entity).
|
|
9351
|
+
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
9352
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9353
|
+
*/
|
|
9354
|
+
EntityDecoder.prototype.write = function (str, offset) {
|
|
9355
|
+
switch (this.state) {
|
|
9356
|
+
case EntityDecoderState.EntityStart: {
|
|
9357
|
+
if (str.charCodeAt(offset) === CharCodes.NUM) {
|
|
9358
|
+
this.state = EntityDecoderState.NumericStart;
|
|
9359
|
+
this.consumed += 1;
|
|
9360
|
+
return this.stateNumericStart(str, offset + 1);
|
|
9361
|
+
}
|
|
9362
|
+
this.state = EntityDecoderState.NamedEntity;
|
|
9363
|
+
return this.stateNamedEntity(str, offset);
|
|
9364
|
+
}
|
|
9365
|
+
case EntityDecoderState.NumericStart: {
|
|
9366
|
+
return this.stateNumericStart(str, offset);
|
|
9367
|
+
}
|
|
9368
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9369
|
+
return this.stateNumericDecimal(str, offset);
|
|
9370
|
+
}
|
|
9371
|
+
case EntityDecoderState.NumericHex: {
|
|
9372
|
+
return this.stateNumericHex(str, offset);
|
|
9373
|
+
}
|
|
9374
|
+
case EntityDecoderState.NamedEntity: {
|
|
9375
|
+
return this.stateNamedEntity(str, offset);
|
|
9376
|
+
}
|
|
9377
|
+
}
|
|
9378
|
+
};
|
|
8987
9379
|
/**
|
|
8988
|
-
*
|
|
8989
|
-
*
|
|
8990
|
-
*
|
|
9380
|
+
* Switches between the numeric decimal and hexadecimal states.
|
|
9381
|
+
*
|
|
9382
|
+
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
9383
|
+
*
|
|
9384
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9385
|
+
* @param offset The current offset.
|
|
9386
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
8991
9387
|
*/
|
|
8992
|
-
function
|
|
8993
|
-
|
|
8994
|
-
|
|
8995
|
-
/** The root element for the DOM */
|
|
8996
|
-
this.root = new node_js_1.Document(this.dom);
|
|
8997
|
-
/** Indicated whether parsing has been completed. */
|
|
8998
|
-
this.done = false;
|
|
8999
|
-
/** Stack of open tags. */
|
|
9000
|
-
this.tagStack = [this.root];
|
|
9001
|
-
/** A data node that is still being written to. */
|
|
9002
|
-
this.lastNode = null;
|
|
9003
|
-
/** Reference to the parser instance. Used for location information. */
|
|
9004
|
-
this.parser = null;
|
|
9005
|
-
// Make it possible to skip arguments, for backwards-compatibility
|
|
9006
|
-
if (typeof options === "function") {
|
|
9007
|
-
elementCB = options;
|
|
9008
|
-
options = defaultOpts;
|
|
9388
|
+
EntityDecoder.prototype.stateNumericStart = function (str, offset) {
|
|
9389
|
+
if (offset >= str.length) {
|
|
9390
|
+
return -1;
|
|
9009
9391
|
}
|
|
9010
|
-
if (
|
|
9011
|
-
|
|
9012
|
-
|
|
9392
|
+
if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
9393
|
+
this.state = EntityDecoderState.NumericHex;
|
|
9394
|
+
this.consumed += 1;
|
|
9395
|
+
return this.stateNumericHex(str, offset + 1);
|
|
9013
9396
|
}
|
|
9014
|
-
this.
|
|
9015
|
-
this.
|
|
9016
|
-
this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null;
|
|
9017
|
-
}
|
|
9018
|
-
DomHandler.prototype.onparserinit = function (parser) {
|
|
9019
|
-
this.parser = parser;
|
|
9020
|
-
};
|
|
9021
|
-
// Resets the handler back to starting state
|
|
9022
|
-
DomHandler.prototype.onreset = function () {
|
|
9023
|
-
this.dom = [];
|
|
9024
|
-
this.root = new node_js_1.Document(this.dom);
|
|
9025
|
-
this.done = false;
|
|
9026
|
-
this.tagStack = [this.root];
|
|
9027
|
-
this.lastNode = null;
|
|
9028
|
-
this.parser = null;
|
|
9029
|
-
};
|
|
9030
|
-
// Signals the handler that parsing is done
|
|
9031
|
-
DomHandler.prototype.onend = function () {
|
|
9032
|
-
if (this.done)
|
|
9033
|
-
return;
|
|
9034
|
-
this.done = true;
|
|
9035
|
-
this.parser = null;
|
|
9036
|
-
this.handleCallback(null);
|
|
9037
|
-
};
|
|
9038
|
-
DomHandler.prototype.onerror = function (error) {
|
|
9039
|
-
this.handleCallback(error);
|
|
9397
|
+
this.state = EntityDecoderState.NumericDecimal;
|
|
9398
|
+
return this.stateNumericDecimal(str, offset);
|
|
9040
9399
|
};
|
|
9041
|
-
|
|
9042
|
-
|
|
9043
|
-
|
|
9044
|
-
|
|
9045
|
-
|
|
9400
|
+
EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) {
|
|
9401
|
+
if (start !== end) {
|
|
9402
|
+
var digitCount = end - start;
|
|
9403
|
+
this.result =
|
|
9404
|
+
this.result * Math.pow(base, digitCount) +
|
|
9405
|
+
parseInt(str.substr(start, digitCount), base);
|
|
9406
|
+
this.consumed += digitCount;
|
|
9046
9407
|
}
|
|
9047
|
-
if (this.elementCB)
|
|
9048
|
-
this.elementCB(elem);
|
|
9049
9408
|
};
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9060
|
-
|
|
9061
|
-
|
|
9409
|
+
/**
|
|
9410
|
+
* Parses a hexadecimal numeric entity.
|
|
9411
|
+
*
|
|
9412
|
+
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
9413
|
+
*
|
|
9414
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9415
|
+
* @param offset The current offset.
|
|
9416
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9417
|
+
*/
|
|
9418
|
+
EntityDecoder.prototype.stateNumericHex = function (str, offset) {
|
|
9419
|
+
var startIdx = offset;
|
|
9420
|
+
while (offset < str.length) {
|
|
9421
|
+
var char = str.charCodeAt(offset);
|
|
9422
|
+
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
9423
|
+
offset += 1;
|
|
9424
|
+
}
|
|
9425
|
+
else {
|
|
9426
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
9427
|
+
return this.emitNumericEntity(char, 3);
|
|
9062
9428
|
}
|
|
9063
9429
|
}
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
this.addNode(node);
|
|
9067
|
-
this.lastNode = node;
|
|
9068
|
-
}
|
|
9430
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
9431
|
+
return -1;
|
|
9069
9432
|
};
|
|
9070
|
-
|
|
9071
|
-
|
|
9072
|
-
|
|
9073
|
-
|
|
9433
|
+
/**
|
|
9434
|
+
* Parses a decimal numeric entity.
|
|
9435
|
+
*
|
|
9436
|
+
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
9437
|
+
*
|
|
9438
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9439
|
+
* @param offset The current offset.
|
|
9440
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9441
|
+
*/
|
|
9442
|
+
EntityDecoder.prototype.stateNumericDecimal = function (str, offset) {
|
|
9443
|
+
var startIdx = offset;
|
|
9444
|
+
while (offset < str.length) {
|
|
9445
|
+
var char = str.charCodeAt(offset);
|
|
9446
|
+
if (isNumber(char)) {
|
|
9447
|
+
offset += 1;
|
|
9448
|
+
}
|
|
9449
|
+
else {
|
|
9450
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
9451
|
+
return this.emitNumericEntity(char, 2);
|
|
9452
|
+
}
|
|
9074
9453
|
}
|
|
9075
|
-
|
|
9076
|
-
|
|
9077
|
-
this.lastNode = node;
|
|
9454
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
9455
|
+
return -1;
|
|
9078
9456
|
};
|
|
9079
|
-
|
|
9080
|
-
|
|
9457
|
+
/**
|
|
9458
|
+
* Validate and emit a numeric entity.
|
|
9459
|
+
*
|
|
9460
|
+
* Implements the logic from the `Hexademical character reference start
|
|
9461
|
+
* state` and `Numeric character reference end state` in the HTML spec.
|
|
9462
|
+
*
|
|
9463
|
+
* @param lastCp The last code point of the entity. Used to see if the
|
|
9464
|
+
* entity was terminated with a semicolon.
|
|
9465
|
+
* @param expectedLength The minimum number of characters that should be
|
|
9466
|
+
* consumed. Used to validate that at least one digit
|
|
9467
|
+
* was consumed.
|
|
9468
|
+
* @returns The number of characters that were consumed.
|
|
9469
|
+
*/
|
|
9470
|
+
EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) {
|
|
9471
|
+
var _a;
|
|
9472
|
+
// Ensure we consumed at least one digit.
|
|
9473
|
+
if (this.consumed <= expectedLength) {
|
|
9474
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9475
|
+
return 0;
|
|
9476
|
+
}
|
|
9477
|
+
// Figure out if this is a legit end of the entity
|
|
9478
|
+
if (lastCp === CharCodes.SEMI) {
|
|
9479
|
+
this.consumed += 1;
|
|
9480
|
+
}
|
|
9481
|
+
else if (this.decodeMode === DecodingMode.Strict) {
|
|
9482
|
+
return 0;
|
|
9483
|
+
}
|
|
9484
|
+
this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed);
|
|
9485
|
+
if (this.errors) {
|
|
9486
|
+
if (lastCp !== CharCodes.SEMI) {
|
|
9487
|
+
this.errors.missingSemicolonAfterCharacterReference();
|
|
9488
|
+
}
|
|
9489
|
+
this.errors.validateNumericCharacterReference(this.result);
|
|
9490
|
+
}
|
|
9491
|
+
return this.consumed;
|
|
9081
9492
|
};
|
|
9082
|
-
|
|
9083
|
-
|
|
9084
|
-
|
|
9085
|
-
|
|
9086
|
-
|
|
9087
|
-
|
|
9493
|
+
/**
|
|
9494
|
+
* Parses a named entity.
|
|
9495
|
+
*
|
|
9496
|
+
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
9497
|
+
*
|
|
9498
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
9499
|
+
* @param offset The current offset.
|
|
9500
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
9501
|
+
*/
|
|
9502
|
+
EntityDecoder.prototype.stateNamedEntity = function (str, offset) {
|
|
9503
|
+
var decodeTree = this.decodeTree;
|
|
9504
|
+
var current = decodeTree[this.treeIndex];
|
|
9505
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
9506
|
+
var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9507
|
+
for (; offset < str.length; offset++, this.excess++) {
|
|
9508
|
+
var char = str.charCodeAt(offset);
|
|
9509
|
+
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
9510
|
+
if (this.treeIndex < 0) {
|
|
9511
|
+
return this.result === 0 ||
|
|
9512
|
+
// If we are parsing an attribute
|
|
9513
|
+
(this.decodeMode === DecodingMode.Attribute &&
|
|
9514
|
+
// We shouldn't have consumed any characters after the entity,
|
|
9515
|
+
(valueLength === 0 ||
|
|
9516
|
+
// And there should be no invalid characters.
|
|
9517
|
+
isEntityInAttributeInvalidEnd(char)))
|
|
9518
|
+
? 0
|
|
9519
|
+
: this.emitNotTerminatedNamedEntity();
|
|
9520
|
+
}
|
|
9521
|
+
current = decodeTree[this.treeIndex];
|
|
9522
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9523
|
+
// If the branch is a value, store it and continue
|
|
9524
|
+
if (valueLength !== 0) {
|
|
9525
|
+
// If the entity is terminated by a semicolon, we are done.
|
|
9526
|
+
if (char === CharCodes.SEMI) {
|
|
9527
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
9528
|
+
}
|
|
9529
|
+
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
9530
|
+
if (this.decodeMode !== DecodingMode.Strict) {
|
|
9531
|
+
this.result = this.treeIndex;
|
|
9532
|
+
this.consumed += this.excess;
|
|
9533
|
+
this.excess = 0;
|
|
9534
|
+
}
|
|
9535
|
+
}
|
|
9536
|
+
}
|
|
9537
|
+
return -1;
|
|
9088
9538
|
};
|
|
9089
|
-
|
|
9090
|
-
|
|
9539
|
+
/**
|
|
9540
|
+
* Emit a named entity that was not terminated with a semicolon.
|
|
9541
|
+
*
|
|
9542
|
+
* @returns The number of characters consumed.
|
|
9543
|
+
*/
|
|
9544
|
+
EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () {
|
|
9545
|
+
var _a;
|
|
9546
|
+
var _b = this, result = _b.result, decodeTree = _b.decodeTree;
|
|
9547
|
+
var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
9548
|
+
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
9549
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
9550
|
+
return this.consumed;
|
|
9091
9551
|
};
|
|
9092
|
-
|
|
9093
|
-
|
|
9094
|
-
|
|
9552
|
+
/**
|
|
9553
|
+
* Emit a named entity.
|
|
9554
|
+
*
|
|
9555
|
+
* @param result The index of the entity in the decode tree.
|
|
9556
|
+
* @param valueLength The number of bytes in the entity.
|
|
9557
|
+
* @param consumed The number of characters consumed.
|
|
9558
|
+
*
|
|
9559
|
+
* @returns The number of characters consumed.
|
|
9560
|
+
*/
|
|
9561
|
+
EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) {
|
|
9562
|
+
var decodeTree = this.decodeTree;
|
|
9563
|
+
this.emitCodePoint(valueLength === 1
|
|
9564
|
+
? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
|
|
9565
|
+
: decodeTree[result + 1], consumed);
|
|
9566
|
+
if (valueLength === 3) {
|
|
9567
|
+
// For multi-byte values, we need to emit the second byte.
|
|
9568
|
+
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
9569
|
+
}
|
|
9570
|
+
return consumed;
|
|
9095
9571
|
};
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9572
|
+
/**
|
|
9573
|
+
* Signal to the parser that the end of the input was reached.
|
|
9574
|
+
*
|
|
9575
|
+
* Remaining data will be emitted and relevant errors will be produced.
|
|
9576
|
+
*
|
|
9577
|
+
* @returns The number of characters consumed.
|
|
9578
|
+
*/
|
|
9579
|
+
EntityDecoder.prototype.end = function () {
|
|
9580
|
+
var _a;
|
|
9581
|
+
switch (this.state) {
|
|
9582
|
+
case EntityDecoderState.NamedEntity: {
|
|
9583
|
+
// Emit a named entity if we have one.
|
|
9584
|
+
return this.result !== 0 &&
|
|
9585
|
+
(this.decodeMode !== DecodingMode.Attribute ||
|
|
9586
|
+
this.result === this.treeIndex)
|
|
9587
|
+
? this.emitNotTerminatedNamedEntity()
|
|
9588
|
+
: 0;
|
|
9589
|
+
}
|
|
9590
|
+
// Otherwise, emit a numeric entity if we have one.
|
|
9591
|
+
case EntityDecoderState.NumericDecimal: {
|
|
9592
|
+
return this.emitNumericEntity(0, 2);
|
|
9593
|
+
}
|
|
9594
|
+
case EntityDecoderState.NumericHex: {
|
|
9595
|
+
return this.emitNumericEntity(0, 3);
|
|
9596
|
+
}
|
|
9597
|
+
case EntityDecoderState.NumericStart: {
|
|
9598
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
9599
|
+
return 0;
|
|
9600
|
+
}
|
|
9601
|
+
case EntityDecoderState.EntityStart: {
|
|
9602
|
+
// Return 0 if we have no entity.
|
|
9603
|
+
return 0;
|
|
9604
|
+
}
|
|
9099
9605
|
}
|
|
9100
|
-
|
|
9101
|
-
|
|
9606
|
+
};
|
|
9607
|
+
return EntityDecoder;
|
|
9608
|
+
}());
|
|
9609
|
+
exports.EntityDecoder = EntityDecoder;
|
|
9610
|
+
/**
|
|
9611
|
+
* Creates a function that decodes entities in a string.
|
|
9612
|
+
*
|
|
9613
|
+
* @param decodeTree The decode tree.
|
|
9614
|
+
* @returns A function that decodes entities in a string.
|
|
9615
|
+
*/
|
|
9616
|
+
function getDecoder(decodeTree) {
|
|
9617
|
+
var ret = "";
|
|
9618
|
+
var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); });
|
|
9619
|
+
return function decodeWithTrie(str, decodeMode) {
|
|
9620
|
+
var lastIndex = 0;
|
|
9621
|
+
var offset = 0;
|
|
9622
|
+
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
9623
|
+
ret += str.slice(lastIndex, offset);
|
|
9624
|
+
decoder.startEntity(decodeMode);
|
|
9625
|
+
var len = decoder.write(str,
|
|
9626
|
+
// Skip the "&"
|
|
9627
|
+
offset + 1);
|
|
9628
|
+
if (len < 0) {
|
|
9629
|
+
lastIndex = offset + decoder.end();
|
|
9630
|
+
break;
|
|
9631
|
+
}
|
|
9632
|
+
lastIndex = offset + len;
|
|
9633
|
+
// If `len` is 0, skip the current `&` and continue.
|
|
9634
|
+
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
9102
9635
|
}
|
|
9636
|
+
var result = ret + str.slice(lastIndex);
|
|
9637
|
+
// Make sure we don't keep a reference to the final string.
|
|
9638
|
+
ret = "";
|
|
9639
|
+
return result;
|
|
9103
9640
|
};
|
|
9104
|
-
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9641
|
+
}
|
|
9642
|
+
/**
|
|
9643
|
+
* Determines the branch of the current node that is taken given the current
|
|
9644
|
+
* character. This function is used to traverse the trie.
|
|
9645
|
+
*
|
|
9646
|
+
* @param decodeTree The trie.
|
|
9647
|
+
* @param current The current node.
|
|
9648
|
+
* @param nodeIdx The index right after the current node and its value.
|
|
9649
|
+
* @param char The current character.
|
|
9650
|
+
* @returns The index of the next node, or -1 if no branch is taken.
|
|
9651
|
+
*/
|
|
9652
|
+
function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
9653
|
+
var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
9654
|
+
var jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
9655
|
+
// Case 1: Single branch encoded in jump offset
|
|
9656
|
+
if (branchCount === 0) {
|
|
9657
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
9658
|
+
}
|
|
9659
|
+
// Case 2: Multiple branches encoded in jump table
|
|
9660
|
+
if (jumpOffset) {
|
|
9661
|
+
var value = char - jumpOffset;
|
|
9662
|
+
return value < 0 || value >= branchCount
|
|
9663
|
+
? -1
|
|
9664
|
+
: decodeTree[nodeIdx + value] - 1;
|
|
9665
|
+
}
|
|
9666
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
9667
|
+
// Binary search for the character.
|
|
9668
|
+
var lo = nodeIdx;
|
|
9669
|
+
var hi = lo + branchCount - 1;
|
|
9670
|
+
while (lo <= hi) {
|
|
9671
|
+
var mid = (lo + hi) >>> 1;
|
|
9672
|
+
var midVal = decodeTree[mid];
|
|
9673
|
+
if (midVal < char) {
|
|
9674
|
+
lo = mid + 1;
|
|
9109
9675
|
}
|
|
9110
|
-
if (
|
|
9111
|
-
|
|
9676
|
+
else if (midVal > char) {
|
|
9677
|
+
hi = mid - 1;
|
|
9112
9678
|
}
|
|
9113
|
-
|
|
9114
|
-
|
|
9115
|
-
node.prev = previousSibling;
|
|
9116
|
-
previousSibling.next = node;
|
|
9679
|
+
else {
|
|
9680
|
+
return decodeTree[mid + branchCount];
|
|
9117
9681
|
}
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
|
|
9131
|
-
|
|
9132
|
-
|
|
9133
|
-
|
|
9682
|
+
}
|
|
9683
|
+
return -1;
|
|
9684
|
+
}
|
|
9685
|
+
exports.determineBranch = determineBranch;
|
|
9686
|
+
var htmlDecoder = getDecoder(decode_data_html_js_1.default);
|
|
9687
|
+
var xmlDecoder = getDecoder(decode_data_xml_js_1.default);
|
|
9688
|
+
/**
|
|
9689
|
+
* Decodes an HTML string.
|
|
9690
|
+
*
|
|
9691
|
+
* @param str The string to decode.
|
|
9692
|
+
* @param mode The decoding mode.
|
|
9693
|
+
* @returns The decoded string.
|
|
9694
|
+
*/
|
|
9695
|
+
function decodeHTML(str, mode) {
|
|
9696
|
+
if (mode === void 0) { mode = DecodingMode.Legacy; }
|
|
9697
|
+
return htmlDecoder(str, mode);
|
|
9698
|
+
}
|
|
9699
|
+
exports.decodeHTML = decodeHTML;
|
|
9700
|
+
/**
|
|
9701
|
+
* Decodes an HTML string in an attribute.
|
|
9702
|
+
*
|
|
9703
|
+
* @param str The string to decode.
|
|
9704
|
+
* @returns The decoded string.
|
|
9705
|
+
*/
|
|
9706
|
+
function decodeHTMLAttribute(str) {
|
|
9707
|
+
return htmlDecoder(str, DecodingMode.Attribute);
|
|
9708
|
+
}
|
|
9709
|
+
exports.decodeHTMLAttribute = decodeHTMLAttribute;
|
|
9710
|
+
/**
|
|
9711
|
+
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
9712
|
+
*
|
|
9713
|
+
* @param str The string to decode.
|
|
9714
|
+
* @returns The decoded string.
|
|
9715
|
+
*/
|
|
9716
|
+
function decodeHTMLStrict(str) {
|
|
9717
|
+
return htmlDecoder(str, DecodingMode.Strict);
|
|
9718
|
+
}
|
|
9719
|
+
exports.decodeHTMLStrict = decodeHTMLStrict;
|
|
9720
|
+
/**
|
|
9721
|
+
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
9722
|
+
*
|
|
9723
|
+
* @param str The string to decode.
|
|
9724
|
+
* @returns The decoded string.
|
|
9725
|
+
*/
|
|
9726
|
+
function decodeXML(str) {
|
|
9727
|
+
return xmlDecoder(str, DecodingMode.Strict);
|
|
9728
|
+
}
|
|
9729
|
+
exports.decodeXML = decodeXML;
|
|
9730
|
+
|
|
9731
|
+
} (decode));
|
|
9134
9732
|
|
|
9135
9733
|
var encode = {};
|
|
9136
9734
|
|
|
@@ -10881,22 +11479,37 @@ function isValidFeed(value) {
|
|
|
10881
11479
|
}) : function(o, v) {
|
|
10882
11480
|
o["default"] = v;
|
|
10883
11481
|
});
|
|
10884
|
-
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
10889
|
-
|
|
10890
|
-
|
|
11482
|
+
var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || (function () {
|
|
11483
|
+
var ownKeys = function(o) {
|
|
11484
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
11485
|
+
var ar = [];
|
|
11486
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
11487
|
+
return ar;
|
|
11488
|
+
};
|
|
11489
|
+
return ownKeys(o);
|
|
11490
|
+
};
|
|
11491
|
+
return function (mod) {
|
|
11492
|
+
if (mod && mod.__esModule) return mod;
|
|
11493
|
+
var result = {};
|
|
11494
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
11495
|
+
__setModuleDefault(result, mod);
|
|
11496
|
+
return result;
|
|
11497
|
+
};
|
|
11498
|
+
})();
|
|
10891
11499
|
var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) {
|
|
10892
11500
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10893
11501
|
};
|
|
10894
11502
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10895
|
-
exports.DomUtils = exports.
|
|
10896
|
-
|
|
11503
|
+
exports.DomUtils = exports.getFeed = exports.ElementType = exports.QuoteType = exports.Tokenizer = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0;
|
|
11504
|
+
exports.parseDocument = parseDocument;
|
|
11505
|
+
exports.parseDOM = parseDOM;
|
|
11506
|
+
exports.createDocumentStream = createDocumentStream;
|
|
11507
|
+
exports.createDomStream = createDomStream;
|
|
11508
|
+
exports.parseFeed = parseFeed;
|
|
11509
|
+
const Parser_js_1 = Parser$4;
|
|
10897
11510
|
var Parser_js_2 = Parser$4;
|
|
10898
11511
|
Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_js_2.Parser; } });
|
|
10899
|
-
|
|
11512
|
+
const domhandler_1 = lib$4;
|
|
10900
11513
|
var domhandler_2 = lib$4;
|
|
10901
11514
|
Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } });
|
|
10902
11515
|
// Old name for DomHandler
|
|
@@ -10906,14 +11519,13 @@ function isValidFeed(value) {
|
|
|
10906
11519
|
* Parses the data, returns the resulting document.
|
|
10907
11520
|
*
|
|
10908
11521
|
* @param data The data that should be parsed.
|
|
10909
|
-
* @param options Optional options for the parser and DOM
|
|
11522
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10910
11523
|
*/
|
|
10911
11524
|
function parseDocument(data, options) {
|
|
10912
|
-
|
|
11525
|
+
const handler = new domhandler_1.DomHandler(undefined, options);
|
|
10913
11526
|
new Parser_js_1.Parser(handler, options).end(data);
|
|
10914
11527
|
return handler.root;
|
|
10915
11528
|
}
|
|
10916
|
-
exports.parseDocument = parseDocument;
|
|
10917
11529
|
/**
|
|
10918
11530
|
* Parses data, returns an array of the root nodes.
|
|
10919
11531
|
*
|
|
@@ -10921,50 +11533,59 @@ function isValidFeed(value) {
|
|
|
10921
11533
|
* Use `parseDocument` to get the `Document` node instead.
|
|
10922
11534
|
*
|
|
10923
11535
|
* @param data The data that should be parsed.
|
|
10924
|
-
* @param options Optional options for the parser and DOM
|
|
11536
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10925
11537
|
* @deprecated Use `parseDocument` instead.
|
|
10926
11538
|
*/
|
|
10927
11539
|
function parseDOM(data, options) {
|
|
10928
11540
|
return parseDocument(data, options).children;
|
|
10929
11541
|
}
|
|
10930
|
-
exports.parseDOM = parseDOM;
|
|
10931
11542
|
/**
|
|
10932
11543
|
* Creates a parser instance, with an attached DOM handler.
|
|
10933
11544
|
*
|
|
10934
|
-
* @param callback A callback that will be called once parsing has been completed.
|
|
10935
|
-
* @param options Optional options for the parser and DOM
|
|
11545
|
+
* @param callback A callback that will be called once parsing has been completed, with the resulting document.
|
|
11546
|
+
* @param options Optional options for the parser and DOM handler.
|
|
11547
|
+
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
|
|
11548
|
+
*/
|
|
11549
|
+
function createDocumentStream(callback, options, elementCallback) {
|
|
11550
|
+
const handler = new domhandler_1.DomHandler((error) => callback(error, handler.root), options, elementCallback);
|
|
11551
|
+
return new Parser_js_1.Parser(handler, options);
|
|
11552
|
+
}
|
|
11553
|
+
/**
|
|
11554
|
+
* Creates a parser instance, with an attached DOM handler.
|
|
11555
|
+
*
|
|
11556
|
+
* @param callback A callback that will be called once parsing has been completed, with an array of root nodes.
|
|
11557
|
+
* @param options Optional options for the parser and DOM handler.
|
|
10936
11558
|
* @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM.
|
|
11559
|
+
* @deprecated Use `createDocumentStream` instead.
|
|
10937
11560
|
*/
|
|
10938
11561
|
function createDomStream(callback, options, elementCallback) {
|
|
10939
|
-
|
|
11562
|
+
const handler = new domhandler_1.DomHandler(callback, options, elementCallback);
|
|
10940
11563
|
return new Parser_js_1.Parser(handler, options);
|
|
10941
11564
|
}
|
|
10942
|
-
|
|
10943
|
-
var Tokenizer_js_1 = Tokenizer$1;
|
|
11565
|
+
var Tokenizer_js_1 = Tokenizer$2;
|
|
10944
11566
|
Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } });
|
|
11567
|
+
Object.defineProperty(exports, "QuoteType", { enumerable: true, get: function () { return Tokenizer_js_1.QuoteType; } });
|
|
10945
11568
|
/*
|
|
10946
11569
|
* All of the following exports exist for backwards-compatibility.
|
|
10947
11570
|
* They should probably be removed eventually.
|
|
10948
11571
|
*/
|
|
10949
11572
|
exports.ElementType = __importStar(lib$3);
|
|
10950
|
-
|
|
11573
|
+
const domutils_1 = lib$2;
|
|
10951
11574
|
var domutils_2 = lib$2;
|
|
10952
11575
|
Object.defineProperty(exports, "getFeed", { enumerable: true, get: function () { return domutils_2.getFeed; } });
|
|
10953
|
-
|
|
11576
|
+
const parseFeedDefaultOptions = { xmlMode: true };
|
|
10954
11577
|
/**
|
|
10955
11578
|
* Parse a feed.
|
|
10956
11579
|
*
|
|
10957
11580
|
* @param feed The feed that should be parsed, as a string.
|
|
10958
11581
|
* @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`.
|
|
10959
11582
|
*/
|
|
10960
|
-
function parseFeed(feed, options) {
|
|
10961
|
-
if (options === void 0) { options = parseFeedDefaultOptions; }
|
|
11583
|
+
function parseFeed(feed, options = parseFeedDefaultOptions) {
|
|
10962
11584
|
return (0, domutils_1.getFeed)(parseDOM(feed, options));
|
|
10963
11585
|
}
|
|
10964
|
-
exports.parseFeed = parseFeed;
|
|
10965
11586
|
exports.DomUtils = __importStar(lib$2);
|
|
10966
11587
|
|
|
10967
|
-
} (
|
|
11588
|
+
} (commonjs));
|
|
10968
11589
|
|
|
10969
11590
|
var escapeStringRegexp$1 = string => {
|
|
10970
11591
|
if (typeof string !== 'string') {
|
|
@@ -13695,7 +14316,15 @@ let MapGenerator$2 = class MapGenerator {
|
|
|
13695
14316
|
}
|
|
13696
14317
|
}
|
|
13697
14318
|
} else if (this.css) {
|
|
13698
|
-
|
|
14319
|
+
let startIndex;
|
|
14320
|
+
while ((startIndex = this.css.lastIndexOf('/*#')) !== -1) {
|
|
14321
|
+
let endIndex = this.css.indexOf('*/', startIndex + 3);
|
|
14322
|
+
if (endIndex === -1) break
|
|
14323
|
+
while (startIndex > 0 && this.css[startIndex - 1] === '\n') {
|
|
14324
|
+
startIndex--;
|
|
14325
|
+
}
|
|
14326
|
+
this.css = this.css.slice(0, startIndex) + this.css.slice(endIndex + 2);
|
|
14327
|
+
}
|
|
13699
14328
|
}
|
|
13700
14329
|
}
|
|
13701
14330
|
|
|
@@ -14428,7 +15057,7 @@ let Parser$2 = class Parser {
|
|
|
14428
15057
|
node.source.end.offset++;
|
|
14429
15058
|
|
|
14430
15059
|
let text = token[1].slice(2, -2);
|
|
14431
|
-
if (
|
|
15060
|
+
if (!text.trim()) {
|
|
14432
15061
|
node.text = '';
|
|
14433
15062
|
node.raws.left = text;
|
|
14434
15063
|
node.raws.right = '';
|
|
@@ -15607,10 +16236,9 @@ let NoWorkResult$1 = class NoWorkResult {
|
|
|
15607
16236
|
this._css = css;
|
|
15608
16237
|
this._opts = opts;
|
|
15609
16238
|
this._map = undefined;
|
|
15610
|
-
let root;
|
|
15611
16239
|
|
|
15612
16240
|
let str = stringify$1;
|
|
15613
|
-
this.result = new Result$1(this._processor,
|
|
16241
|
+
this.result = new Result$1(this._processor, undefined, this._opts);
|
|
15614
16242
|
this.result.css = css;
|
|
15615
16243
|
|
|
15616
16244
|
let self = this;
|
|
@@ -15620,7 +16248,7 @@ let NoWorkResult$1 = class NoWorkResult {
|
|
|
15620
16248
|
}
|
|
15621
16249
|
});
|
|
15622
16250
|
|
|
15623
|
-
let map = new MapGenerator(str,
|
|
16251
|
+
let map = new MapGenerator(str, undefined, this._opts, css);
|
|
15624
16252
|
if (map.isMap()) {
|
|
15625
16253
|
let [generatedCSS, generatedMap] = map.generate();
|
|
15626
16254
|
if (generatedCSS) {
|
|
@@ -15686,7 +16314,7 @@ let Root$1 = root;
|
|
|
15686
16314
|
|
|
15687
16315
|
let Processor$1 = class Processor {
|
|
15688
16316
|
constructor(plugins = []) {
|
|
15689
|
-
this.version = '8.5.
|
|
16317
|
+
this.version = '8.5.8';
|
|
15690
16318
|
this.plugins = this.normalize(plugins);
|
|
15691
16319
|
}
|
|
15692
16320
|
|
|
@@ -15845,7 +16473,7 @@ LazyResult.registerPostcss(postcss);
|
|
|
15845
16473
|
var postcss_1 = postcss;
|
|
15846
16474
|
postcss.default = postcss;
|
|
15847
16475
|
|
|
15848
|
-
const htmlparser =
|
|
16476
|
+
const htmlparser = commonjs;
|
|
15849
16477
|
const escapeStringRegexp = escapeStringRegexp$1;
|
|
15850
16478
|
const { isPlainObject } = isPlainObject$2;
|
|
15851
16479
|
const deepmerge = cjs;
|
|
@@ -15935,7 +16563,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15935
16563
|
}
|
|
15936
16564
|
|
|
15937
16565
|
let result = '';
|
|
15938
|
-
// Used for hot swapping the result variable with an empty string
|
|
16566
|
+
// Used for hot swapping the result variable with an empty string
|
|
16567
|
+
// in order to "capture" the text written to it.
|
|
15939
16568
|
let tempResult = '';
|
|
15940
16569
|
|
|
15941
16570
|
function Frame(tag, attribs) {
|
|
@@ -15966,7 +16595,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15966
16595
|
options.parser = Object.assign({}, htmlParserDefaults, options.parser);
|
|
15967
16596
|
|
|
15968
16597
|
const tagAllowed = function (name) {
|
|
15969
|
-
return options.allowedTags === false ||
|
|
16598
|
+
return options.allowedTags === false ||
|
|
16599
|
+
(options.allowedTags || []).indexOf(name) > -1;
|
|
15970
16600
|
};
|
|
15971
16601
|
|
|
15972
16602
|
// vulnerableTags
|
|
@@ -16148,7 +16778,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16148
16778
|
}
|
|
16149
16779
|
|
|
16150
16780
|
const isBeingEscaped = skip && (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape');
|
|
16151
|
-
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16781
|
+
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16782
|
+
options.preserveEscapedAttributes;
|
|
16152
16783
|
|
|
16153
16784
|
if (shouldPreserveEscapedAttributes) {
|
|
16154
16785
|
each(attribs, function(value, a) {
|
|
@@ -16162,8 +16793,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16162
16793
|
delete frame.attribs[a];
|
|
16163
16794
|
return;
|
|
16164
16795
|
}
|
|
16165
|
-
// If the value is empty, check if the attribute is
|
|
16166
|
-
//
|
|
16796
|
+
// If the value is empty, check if the attribute is
|
|
16797
|
+
// in the allowedEmptyAttributes array.
|
|
16798
|
+
// If it is not in the allowedEmptyAttributes array,
|
|
16799
|
+
// and it is a known non-boolean attribute, delete it
|
|
16167
16800
|
// List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3
|
|
16168
16801
|
if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&
|
|
16169
16802
|
(options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {
|
|
@@ -16174,9 +16807,11 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16174
16807
|
// as necessary if there are specific values defined.
|
|
16175
16808
|
let passedAllowedAttributesMapCheck = false;
|
|
16176
16809
|
if (!allowedAttributesMap ||
|
|
16177
|
-
(has(allowedAttributesMap, name) &&
|
|
16810
|
+
(has(allowedAttributesMap, name) &&
|
|
16811
|
+
allowedAttributesMap[name].indexOf(a) !== -1) ||
|
|
16178
16812
|
(allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||
|
|
16179
|
-
(has(allowedAttributesGlobMap, name) &&
|
|
16813
|
+
(has(allowedAttributesGlobMap, name) &&
|
|
16814
|
+
allowedAttributesGlobMap[name].test(a)) ||
|
|
16180
16815
|
(allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {
|
|
16181
16816
|
passedAllowedAttributesMapCheck = true;
|
|
16182
16817
|
} else if (allowedAttributesMap && allowedAttributesMap[name]) {
|
|
@@ -16220,12 +16855,14 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16220
16855
|
const parsed = parseUrl(value);
|
|
16221
16856
|
|
|
16222
16857
|
if (options.allowedScriptHostnames || options.allowedScriptDomains) {
|
|
16223
|
-
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
|
|
16858
|
+
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16859
|
+
.find(function (hostname) {
|
|
16860
|
+
return hostname === parsed.url.hostname;
|
|
16861
|
+
});
|
|
16862
|
+
const allowedDomain = (options.allowedScriptDomains || [])
|
|
16863
|
+
.find(function(domain) {
|
|
16864
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16865
|
+
});
|
|
16229
16866
|
allowed = allowedHostname || allowedDomain;
|
|
16230
16867
|
}
|
|
16231
16868
|
} catch (e) {
|
|
@@ -16249,13 +16886,18 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16249
16886
|
allowed = has(options, 'allowIframeRelativeUrls')
|
|
16250
16887
|
? options.allowIframeRelativeUrls
|
|
16251
16888
|
: (!options.allowedIframeHostnames && !options.allowedIframeDomains);
|
|
16252
|
-
} else if (
|
|
16253
|
-
|
|
16254
|
-
|
|
16255
|
-
|
|
16256
|
-
const
|
|
16257
|
-
|
|
16258
|
-
|
|
16889
|
+
} else if (
|
|
16890
|
+
options.allowedIframeHostnames ||
|
|
16891
|
+
options.allowedIframeDomains
|
|
16892
|
+
) {
|
|
16893
|
+
const allowedHostname = (options.allowedIframeHostnames || [])
|
|
16894
|
+
.find(function (hostname) {
|
|
16895
|
+
return hostname === parsed.url.hostname;
|
|
16896
|
+
});
|
|
16897
|
+
const allowedDomain = (options.allowedIframeDomains || [])
|
|
16898
|
+
.find(function(domain) {
|
|
16899
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16900
|
+
});
|
|
16259
16901
|
allowed = allowedHostname || allowedDomain;
|
|
16260
16902
|
}
|
|
16261
16903
|
} catch (e) {
|
|
@@ -16309,9 +16951,17 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16309
16951
|
return t;
|
|
16310
16952
|
});
|
|
16311
16953
|
if (allowedSpecificClasses && allowedWildcardClasses) {
|
|
16312
|
-
value = filterClasses(
|
|
16954
|
+
value = filterClasses(
|
|
16955
|
+
value,
|
|
16956
|
+
deepmerge(allowedSpecificClasses, allowedWildcardClasses),
|
|
16957
|
+
allowedClassesGlobs
|
|
16958
|
+
);
|
|
16313
16959
|
} else {
|
|
16314
|
-
value = filterClasses(
|
|
16960
|
+
value = filterClasses(
|
|
16961
|
+
value,
|
|
16962
|
+
allowedSpecificClasses || allowedWildcardClasses,
|
|
16963
|
+
allowedClassesGlobs
|
|
16964
|
+
);
|
|
16315
16965
|
}
|
|
16316
16966
|
if (!value.length) {
|
|
16317
16967
|
delete frame.attribs[a];
|
|
@@ -16322,7 +16972,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16322
16972
|
if (options.parseStyleAttributes) {
|
|
16323
16973
|
try {
|
|
16324
16974
|
const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });
|
|
16325
|
-
const filteredAST = filterCss(
|
|
16975
|
+
const filteredAST = filterCss(
|
|
16976
|
+
abstractSyntaxTree,
|
|
16977
|
+
options.allowedStyles
|
|
16978
|
+
);
|
|
16326
16979
|
|
|
16327
16980
|
value = stringifyStyleAttributes(filteredAST);
|
|
16328
16981
|
|
|
@@ -16388,6 +17041,11 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16388
17041
|
// your concern, don't allow them. The same is essentially true for style tags
|
|
16389
17042
|
// which have their own collection of XSS vectors.
|
|
16390
17043
|
result += text;
|
|
17044
|
+
} else if ((options.disallowedTagsMode === 'discard' || options.disallowedTagsMode === 'completelyDiscard') && (nonTextTagsArray.indexOf(tag) !== -1)) {
|
|
17045
|
+
// htmlparser2 does not decode entities inside raw text elements like
|
|
17046
|
+
// textarea and option. The text is already properly encoded, so pass
|
|
17047
|
+
// it through without additional escaping to avoid double-encoding.
|
|
17048
|
+
result += text;
|
|
16391
17049
|
} else if (!addedText) {
|
|
16392
17050
|
const escaped = escapeHtml(text, false);
|
|
16393
17051
|
if (options.textFilter) {
|
|
@@ -16455,7 +17113,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16455
17113
|
tempResult = '';
|
|
16456
17114
|
}
|
|
16457
17115
|
// remove the opening tag from the result
|
|
16458
|
-
result = result.substring(0, frame.tagPosition) +
|
|
17116
|
+
result = result.substring(0, frame.tagPosition) +
|
|
17117
|
+
result.substring(frame.tagPosition + frame.openingTagLength);
|
|
16459
17118
|
return;
|
|
16460
17119
|
} else if (filterResult) {
|
|
16461
17120
|
result = result.substring(0, frame.tagPosition);
|
|
@@ -16490,6 +17149,17 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16490
17149
|
parser.write(html);
|
|
16491
17150
|
parser.end();
|
|
16492
17151
|
|
|
17152
|
+
if (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape') {
|
|
17153
|
+
const lastParsedIndex = parser.endIndex;
|
|
17154
|
+
if (lastParsedIndex != null && lastParsedIndex >= 0 &&
|
|
17155
|
+
lastParsedIndex < html.length) {
|
|
17156
|
+
const unparsed = html.substring(lastParsedIndex);
|
|
17157
|
+
result += escapeHtml(unparsed);
|
|
17158
|
+
} else if ((lastParsedIndex == null || lastParsedIndex < 0) && html.length > 0 && result === '') {
|
|
17159
|
+
result = escapeHtml(html);
|
|
17160
|
+
}
|
|
17161
|
+
}
|
|
17162
|
+
|
|
16493
17163
|
return result;
|
|
16494
17164
|
|
|
16495
17165
|
function initializeState() {
|
|
@@ -16600,8 +17270,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16600
17270
|
* Modifies the abstractSyntaxTree object.
|
|
16601
17271
|
*
|
|
16602
17272
|
* @param {object} abstractSyntaxTree - Object representation of CSS attributes.
|
|
16603
|
-
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
16604
|
-
*
|
|
17273
|
+
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
17274
|
+
* Each object contains prop and value key, i.e { prop: 'color', value: 'red' }.
|
|
17275
|
+
* @param {object} allowedStyles - Keys are properties (i.e color),
|
|
17276
|
+
* value is list of permitted regex rules (i.e /green/i).
|
|
16605
17277
|
* @return {object} - The modified tree.
|
|
16606
17278
|
*/
|
|
16607
17279
|
function filterCss(abstractSyntaxTree, allowedStyles) {
|
|
@@ -16623,7 +17295,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16623
17295
|
}
|
|
16624
17296
|
|
|
16625
17297
|
if (selectedRule) {
|
|
16626
|
-
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
17298
|
+
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
17299
|
+
.reduce(filterDeclarations(selectedRule), []);
|
|
16627
17300
|
}
|
|
16628
17301
|
|
|
16629
17302
|
return abstractSyntaxTree;
|
|
@@ -16634,7 +17307,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16634
17307
|
* values in the inline style attribute format.
|
|
16635
17308
|
*
|
|
16636
17309
|
* @param {AbstractSyntaxTree} filteredAST
|
|
16637
|
-
* @return {string} - Example:
|
|
17310
|
+
* @return {string} - Example:
|
|
17311
|
+
* "color:yellow;text-align:center !important;font-family:helvetica;"
|
|
16638
17312
|
*/
|
|
16639
17313
|
function stringifyStyleAttributes(filteredAST) {
|
|
16640
17314
|
return filteredAST.nodes[0].nodes
|
|
@@ -16651,21 +17325,25 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16651
17325
|
* Filters the existing attributes for the given property. Discards any attributes
|
|
16652
17326
|
* which don't match the allowlist.
|
|
16653
17327
|
*
|
|
16654
|
-
* @param {object} selectedRule
|
|
16655
|
-
* @param {array} allowedDeclarationsList
|
|
16656
|
-
*
|
|
16657
|
-
* @
|
|
16658
|
-
* @property {string} attributeObject.
|
|
16659
|
-
* @property {string} attributeObject.
|
|
16660
|
-
* @
|
|
17328
|
+
* @param {object} selectedRule - Example: { color: red, font-family: helvetica }
|
|
17329
|
+
* @param {array} allowedDeclarationsList - List of declarations
|
|
17330
|
+
* which pass the allowlist.
|
|
17331
|
+
* @param {object} attributeObject - Object representing the current css property.
|
|
17332
|
+
* @property {string} attributeObject.type - Typically 'declaration'.
|
|
17333
|
+
* @property {string} attributeObject.prop - The CSS property, i.e 'color'.
|
|
17334
|
+
* @property {string} attributeObject.value - The corresponding value to
|
|
17335
|
+
* the css property, i.e 'red'.
|
|
17336
|
+
* @return {function} - When used in Array.reduce,
|
|
17337
|
+
* will return an array of Declaration objects
|
|
16661
17338
|
*/
|
|
16662
17339
|
function filterDeclarations(selectedRule) {
|
|
16663
17340
|
return function (allowedDeclarationsList, attributeObject) {
|
|
16664
17341
|
// If this property is allowlisted...
|
|
16665
17342
|
if (has(selectedRule, attributeObject.prop)) {
|
|
16666
|
-
const matchesRegex = selectedRule[attributeObject.prop]
|
|
16667
|
-
|
|
16668
|
-
|
|
17343
|
+
const matchesRegex = selectedRule[attributeObject.prop]
|
|
17344
|
+
.some(function(regularExpression) {
|
|
17345
|
+
return regularExpression.test(attributeObject.value);
|
|
17346
|
+
});
|
|
16669
17347
|
|
|
16670
17348
|
if (matchesRegex) {
|
|
16671
17349
|
allowedDeclarationsList.push(attributeObject);
|
|
@@ -16797,7 +17475,7 @@ sanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {
|
|
|
16797
17475
|
|
|
16798
17476
|
return {
|
|
16799
17477
|
tagName: newTagName,
|
|
16800
|
-
attribs
|
|
17478
|
+
attribs
|
|
16801
17479
|
};
|
|
16802
17480
|
};
|
|
16803
17481
|
};
|
|
@@ -23223,7 +23901,6 @@ function FormFieldView({
|
|
|
23223
23901
|
multiline = false,
|
|
23224
23902
|
rows,
|
|
23225
23903
|
placeholder,
|
|
23226
|
-
name,
|
|
23227
23904
|
startAdornment,
|
|
23228
23905
|
endAdornment,
|
|
23229
23906
|
inputProps,
|
|
@@ -23289,7 +23966,6 @@ function FormFieldView({
|
|
|
23289
23966
|
children: label
|
|
23290
23967
|
}), jsxRuntime.jsx(material.Input, {
|
|
23291
23968
|
id: fieldId,
|
|
23292
|
-
name: name,
|
|
23293
23969
|
type: type,
|
|
23294
23970
|
value: value,
|
|
23295
23971
|
onChange: handleChange,
|
|
@@ -23339,7 +24015,6 @@ function FormSelectView({
|
|
|
23339
24015
|
fullWidth = true,
|
|
23340
24016
|
size = 'small',
|
|
23341
24017
|
placeholder,
|
|
23342
|
-
name,
|
|
23343
24018
|
// Exclude ViewProps that conflict with MUI FormControl types
|
|
23344
24019
|
margin: _margin,
|
|
23345
24020
|
marginTop: _marginTop,
|
|
@@ -23389,7 +24064,6 @@ function FormSelectView({
|
|
|
23389
24064
|
shrink: true,
|
|
23390
24065
|
children: label
|
|
23391
24066
|
}), jsxRuntime.jsxs(material.Select, {
|
|
23392
|
-
name: name,
|
|
23393
24067
|
value: value,
|
|
23394
24068
|
onChange: handleChange,
|
|
23395
24069
|
disabled: disabled,
|
|
@@ -31364,12 +32038,6 @@ __decorate([schema.Field(), schema.Editor({
|
|
|
31364
32038
|
description: 'Placeholder text when no value is selected',
|
|
31365
32039
|
placeholder: 'Select an option...'
|
|
31366
32040
|
}), classValidator.IsOptional(), classValidator.IsString(), __metadata("design:type", String)], exports.FormSelectModel.prototype, "placeholder", void 0);
|
|
31367
|
-
__decorate([schema.Field(), schema.Editor({
|
|
31368
|
-
field_type: schema.FieldType.TEXT,
|
|
31369
|
-
label: 'Name',
|
|
31370
|
-
description: 'Name attribute for the select (for forms and accessibility)',
|
|
31371
|
-
placeholder: 'Enter name...'
|
|
31372
|
-
}), classValidator.IsOptional(), classValidator.IsString(), __metadata("design:type", String)], exports.FormSelectModel.prototype, "name", void 0);
|
|
31373
32041
|
exports.FormSelectModel = __decorate([schema.Schema('FormSelect', '1.0.0')], exports.FormSelectModel);
|
|
31374
32042
|
|
|
31375
32043
|
/**
|
|
@@ -31456,12 +32124,6 @@ __decorate([schema.Field(), schema.Editor({
|
|
|
31456
32124
|
description: 'Placeholder text',
|
|
31457
32125
|
placeholder: 'Enter text...'
|
|
31458
32126
|
}), classValidator.IsOptional(), classValidator.IsString(), __metadata("design:type", String)], exports.FormFieldModel.prototype, "placeholder", void 0);
|
|
31459
|
-
__decorate([schema.Field(), schema.Editor({
|
|
31460
|
-
field_type: schema.FieldType.TEXT,
|
|
31461
|
-
label: 'Name',
|
|
31462
|
-
description: 'Name attribute for the input (for forms and accessibility)',
|
|
31463
|
-
placeholder: 'Enter name...'
|
|
31464
|
-
}), classValidator.IsOptional(), classValidator.IsString(), __metadata("design:type", String)], exports.FormFieldModel.prototype, "name", void 0);
|
|
31465
32127
|
exports.FormFieldModel = __decorate([schema.Schema('FormField', '1.0.0')], exports.FormFieldModel);
|
|
31466
32128
|
|
|
31467
32129
|
/**
|