@vue/compiler-vapor 3.6.0-alpha.7 → 3.6.0-beta.1

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-vapor v3.6.0-alpha.7
2
+ * @vue/compiler-vapor v3.6.0-beta.1
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -21,7 +21,7 @@ const remove = (arr, el) => {
21
21
  arr.splice(i, 1);
22
22
  }
23
23
  };
24
- const isArray = Array.isArray;
24
+ const isArray$1 = Array.isArray;
25
25
  const isString = (val) => typeof val === "string";
26
26
  const isBuiltInDirective = /* @__PURE__ */ makeMap(
27
27
  "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
@@ -133,10 +133,10 @@ function escapeHtml(string) {
133
133
  return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
134
134
  }
135
135
 
136
- const TELEPORT = Symbol(`Teleport` );
137
- const SUSPENSE = Symbol(`Suspense` );
138
- const KEEP_ALIVE = Symbol(`KeepAlive` );
139
- const BASE_TRANSITION = Symbol(
136
+ const TELEPORT = /* @__PURE__ */ Symbol(`Teleport` );
137
+ const SUSPENSE = /* @__PURE__ */ Symbol(`Suspense` );
138
+ const KEEP_ALIVE = /* @__PURE__ */ Symbol(`KeepAlive` );
139
+ const BASE_TRANSITION = /* @__PURE__ */ Symbol(
140
140
  `BaseTransition`
141
141
  );
142
142
  function registerRuntimeHelpers(helpers) {
@@ -175,81 +175,2098 @@ function createSimpleExpression(content, isStatic = false, loc = locStub, constT
175
175
  };
176
176
  }
177
177
 
178
- // Generated using scripts/write-decode-map.ts
179
- var htmlDecodeTree = new Uint16Array(
180
- // prettier-ignore
181
- "\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"
182
- .split("")
183
- .map((c) => c.charCodeAt(0)));
178
+ // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
179
+ var _a;
180
+ const decodeMap = new Map([
181
+ [0, 65533],
182
+ // C1 Unicode control character reference replacements
183
+ [128, 8364],
184
+ [130, 8218],
185
+ [131, 402],
186
+ [132, 8222],
187
+ [133, 8230],
188
+ [134, 8224],
189
+ [135, 8225],
190
+ [136, 710],
191
+ [137, 8240],
192
+ [138, 352],
193
+ [139, 8249],
194
+ [140, 338],
195
+ [142, 381],
196
+ [145, 8216],
197
+ [146, 8217],
198
+ [147, 8220],
199
+ [148, 8221],
200
+ [149, 8226],
201
+ [150, 8211],
202
+ [151, 8212],
203
+ [152, 732],
204
+ [153, 8482],
205
+ [154, 353],
206
+ [155, 8250],
207
+ [156, 339],
208
+ [158, 382],
209
+ [159, 376],
210
+ ]);
211
+ /**
212
+ * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
213
+ */
214
+ const fromCodePoint =
215
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
216
+ (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
217
+ let output = "";
218
+ if (codePoint > 65535) {
219
+ codePoint -= 65536;
220
+ output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
221
+ codePoint = 56320 | (codePoint & 1023);
222
+ }
223
+ output += String.fromCharCode(codePoint);
224
+ return output;
225
+ });
226
+ /**
227
+ * Replace the given code point with a replacement character if it is a
228
+ * surrogate or is outside the valid range. Otherwise return the code
229
+ * point unchanged.
230
+ */
231
+ function replaceCodePoint(codePoint) {
232
+ var _a;
233
+ if ((codePoint >= 55296 && codePoint <= 57343) ||
234
+ codePoint > 1114111) {
235
+ return 65533;
236
+ }
237
+ return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
238
+ }
239
+
240
+ var global$1 = (typeof global !== "undefined" ? global :
241
+ typeof self !== "undefined" ? self :
242
+ typeof window !== "undefined" ? window : {});
243
+
244
+ var lookup = [];
245
+ var revLookup = [];
246
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
247
+ var inited = false;
248
+ function init () {
249
+ inited = true;
250
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
251
+ for (var i = 0, len = code.length; i < len; ++i) {
252
+ lookup[i] = code[i];
253
+ revLookup[code.charCodeAt(i)] = i;
254
+ }
255
+
256
+ revLookup['-'.charCodeAt(0)] = 62;
257
+ revLookup['_'.charCodeAt(0)] = 63;
258
+ }
259
+
260
+ function toByteArray (b64) {
261
+ if (!inited) {
262
+ init();
263
+ }
264
+ var i, j, l, tmp, placeHolders, arr;
265
+ var len = b64.length;
266
+
267
+ if (len % 4 > 0) {
268
+ throw new Error('Invalid string. Length must be a multiple of 4')
269
+ }
270
+
271
+ // the number of equal signs (place holders)
272
+ // if there are two placeholders, than the two characters before it
273
+ // represent one byte
274
+ // if there is only one, then the three characters before it represent 2 bytes
275
+ // this is just a cheap hack to not do indexOf twice
276
+ placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
277
+
278
+ // base64 is 4/3 + up to two characters of the original data
279
+ arr = new Arr(len * 3 / 4 - placeHolders);
280
+
281
+ // if there are placeholders, only get up to the last complete 4 chars
282
+ l = placeHolders > 0 ? len - 4 : len;
283
+
284
+ var L = 0;
285
+
286
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
287
+ tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];
288
+ arr[L++] = (tmp >> 16) & 0xFF;
289
+ arr[L++] = (tmp >> 8) & 0xFF;
290
+ arr[L++] = tmp & 0xFF;
291
+ }
292
+
293
+ if (placeHolders === 2) {
294
+ tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
295
+ arr[L++] = tmp & 0xFF;
296
+ } else if (placeHolders === 1) {
297
+ tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);
298
+ arr[L++] = (tmp >> 8) & 0xFF;
299
+ arr[L++] = tmp & 0xFF;
300
+ }
301
+
302
+ return arr
303
+ }
304
+
305
+ function tripletToBase64 (num) {
306
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
307
+ }
308
+
309
+ function encodeChunk (uint8, start, end) {
310
+ var tmp;
311
+ var output = [];
312
+ for (var i = start; i < end; i += 3) {
313
+ tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
314
+ output.push(tripletToBase64(tmp));
315
+ }
316
+ return output.join('')
317
+ }
318
+
319
+ function fromByteArray (uint8) {
320
+ if (!inited) {
321
+ init();
322
+ }
323
+ var tmp;
324
+ var len = uint8.length;
325
+ var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
326
+ var output = '';
327
+ var parts = [];
328
+ var maxChunkLength = 16383; // must be multiple of 3
329
+
330
+ // go through the array every three bytes, we'll deal with trailing stuff later
331
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
332
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
333
+ }
334
+
335
+ // pad the end with zeros, but make sure to not forget the extra bytes
336
+ if (extraBytes === 1) {
337
+ tmp = uint8[len - 1];
338
+ output += lookup[tmp >> 2];
339
+ output += lookup[(tmp << 4) & 0x3F];
340
+ output += '==';
341
+ } else if (extraBytes === 2) {
342
+ tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
343
+ output += lookup[tmp >> 10];
344
+ output += lookup[(tmp >> 4) & 0x3F];
345
+ output += lookup[(tmp << 2) & 0x3F];
346
+ output += '=';
347
+ }
348
+
349
+ parts.push(output);
350
+
351
+ return parts.join('')
352
+ }
353
+
354
+ function read (buffer, offset, isLE, mLen, nBytes) {
355
+ var e, m;
356
+ var eLen = nBytes * 8 - mLen - 1;
357
+ var eMax = (1 << eLen) - 1;
358
+ var eBias = eMax >> 1;
359
+ var nBits = -7;
360
+ var i = isLE ? (nBytes - 1) : 0;
361
+ var d = isLE ? -1 : 1;
362
+ var s = buffer[offset + i];
363
+
364
+ i += d;
365
+
366
+ e = s & ((1 << (-nBits)) - 1);
367
+ s >>= (-nBits);
368
+ nBits += eLen;
369
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
370
+
371
+ m = e & ((1 << (-nBits)) - 1);
372
+ e >>= (-nBits);
373
+ nBits += mLen;
374
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
375
+
376
+ if (e === 0) {
377
+ e = 1 - eBias;
378
+ } else if (e === eMax) {
379
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
380
+ } else {
381
+ m = m + Math.pow(2, mLen);
382
+ e = e - eBias;
383
+ }
384
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
385
+ }
386
+
387
+ function write (buffer, value, offset, isLE, mLen, nBytes) {
388
+ var e, m, c;
389
+ var eLen = nBytes * 8 - mLen - 1;
390
+ var eMax = (1 << eLen) - 1;
391
+ var eBias = eMax >> 1;
392
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
393
+ var i = isLE ? 0 : (nBytes - 1);
394
+ var d = isLE ? 1 : -1;
395
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
396
+
397
+ value = Math.abs(value);
398
+
399
+ if (isNaN(value) || value === Infinity) {
400
+ m = isNaN(value) ? 1 : 0;
401
+ e = eMax;
402
+ } else {
403
+ e = Math.floor(Math.log(value) / Math.LN2);
404
+ if (value * (c = Math.pow(2, -e)) < 1) {
405
+ e--;
406
+ c *= 2;
407
+ }
408
+ if (e + eBias >= 1) {
409
+ value += rt / c;
410
+ } else {
411
+ value += rt * Math.pow(2, 1 - eBias);
412
+ }
413
+ if (value * c >= 2) {
414
+ e++;
415
+ c /= 2;
416
+ }
417
+
418
+ if (e + eBias >= eMax) {
419
+ m = 0;
420
+ e = eMax;
421
+ } else if (e + eBias >= 1) {
422
+ m = (value * c - 1) * Math.pow(2, mLen);
423
+ e = e + eBias;
424
+ } else {
425
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
426
+ e = 0;
427
+ }
428
+ }
429
+
430
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
431
+
432
+ e = (e << mLen) | m;
433
+ eLen += mLen;
434
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
435
+
436
+ buffer[offset + i - d] |= s * 128;
437
+ }
438
+
439
+ var toString = {}.toString;
440
+
441
+ var isArray = Array.isArray || function (arr) {
442
+ return toString.call(arr) == '[object Array]';
443
+ };
444
+
445
+ /*!
446
+ * The buffer module from node.js, for the browser.
447
+ *
448
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
449
+ * @license MIT
450
+ */
451
+ /* eslint-disable no-proto */
452
+
453
+
454
+ var INSPECT_MAX_BYTES = 50;
455
+
456
+ /**
457
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
458
+ * === true Use Uint8Array implementation (fastest)
459
+ * === false Use Object implementation (most compatible, even IE6)
460
+ *
461
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
462
+ * Opera 11.6+, iOS 4.2+.
463
+ *
464
+ * Due to various browser bugs, sometimes the Object implementation will be used even
465
+ * when the browser supports typed arrays.
466
+ *
467
+ * Note:
468
+ *
469
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
470
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
471
+ *
472
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
473
+ *
474
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
475
+ * incorrect length in some situations.
476
+
477
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
478
+ * get the Object implementation, which is slower but behaves correctly.
479
+ */
480
+ Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
481
+ ? global$1.TYPED_ARRAY_SUPPORT
482
+ : true;
483
+
484
+ /*
485
+ * Export kMaxLength after typed array support is determined.
486
+ */
487
+ kMaxLength();
488
+
489
+ function kMaxLength () {
490
+ return Buffer.TYPED_ARRAY_SUPPORT
491
+ ? 0x7fffffff
492
+ : 0x3fffffff
493
+ }
494
+
495
+ function createBuffer (that, length) {
496
+ if (kMaxLength() < length) {
497
+ throw new RangeError('Invalid typed array length')
498
+ }
499
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
500
+ // Return an augmented `Uint8Array` instance, for best performance
501
+ that = new Uint8Array(length);
502
+ that.__proto__ = Buffer.prototype;
503
+ } else {
504
+ // Fallback: Return an object instance of the Buffer class
505
+ if (that === null) {
506
+ that = new Buffer(length);
507
+ }
508
+ that.length = length;
509
+ }
510
+
511
+ return that
512
+ }
513
+
514
+ /**
515
+ * The Buffer constructor returns instances of `Uint8Array` that have their
516
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
517
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
518
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
519
+ * returns a single octet.
520
+ *
521
+ * The `Uint8Array` prototype remains unmodified.
522
+ */
523
+
524
+ function Buffer (arg, encodingOrOffset, length) {
525
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
526
+ return new Buffer(arg, encodingOrOffset, length)
527
+ }
528
+
529
+ // Common case.
530
+ if (typeof arg === 'number') {
531
+ if (typeof encodingOrOffset === 'string') {
532
+ throw new Error(
533
+ 'If encoding is specified then the first argument must be a string'
534
+ )
535
+ }
536
+ return allocUnsafe(this, arg)
537
+ }
538
+ return from(this, arg, encodingOrOffset, length)
539
+ }
540
+
541
+ Buffer.poolSize = 8192; // not used by this implementation
542
+
543
+ // TODO: Legacy, not needed anymore. Remove in next major version.
544
+ Buffer._augment = function (arr) {
545
+ arr.__proto__ = Buffer.prototype;
546
+ return arr
547
+ };
548
+
549
+ function from (that, value, encodingOrOffset, length) {
550
+ if (typeof value === 'number') {
551
+ throw new TypeError('"value" argument must not be a number')
552
+ }
553
+
554
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
555
+ return fromArrayBuffer(that, value, encodingOrOffset, length)
556
+ }
557
+
558
+ if (typeof value === 'string') {
559
+ return fromString(that, value, encodingOrOffset)
560
+ }
561
+
562
+ return fromObject(that, value)
563
+ }
564
+
565
+ /**
566
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
567
+ * if value is a number.
568
+ * Buffer.from(str[, encoding])
569
+ * Buffer.from(array)
570
+ * Buffer.from(buffer)
571
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
572
+ **/
573
+ Buffer.from = function (value, encodingOrOffset, length) {
574
+ return from(null, value, encodingOrOffset, length)
575
+ };
576
+
577
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
578
+ Buffer.prototype.__proto__ = Uint8Array.prototype;
579
+ Buffer.__proto__ = Uint8Array;
580
+ if (typeof Symbol !== 'undefined' && Symbol.species &&
581
+ Buffer[Symbol.species] === Buffer) ;
582
+ }
583
+
584
+ function assertSize (size) {
585
+ if (typeof size !== 'number') {
586
+ throw new TypeError('"size" argument must be a number')
587
+ } else if (size < 0) {
588
+ throw new RangeError('"size" argument must not be negative')
589
+ }
590
+ }
591
+
592
+ function alloc (that, size, fill, encoding) {
593
+ assertSize(size);
594
+ if (size <= 0) {
595
+ return createBuffer(that, size)
596
+ }
597
+ if (fill !== undefined) {
598
+ // Only pay attention to encoding if it's a string. This
599
+ // prevents accidentally sending in a number that would
600
+ // be interpretted as a start offset.
601
+ return typeof encoding === 'string'
602
+ ? createBuffer(that, size).fill(fill, encoding)
603
+ : createBuffer(that, size).fill(fill)
604
+ }
605
+ return createBuffer(that, size)
606
+ }
607
+
608
+ /**
609
+ * Creates a new filled Buffer instance.
610
+ * alloc(size[, fill[, encoding]])
611
+ **/
612
+ Buffer.alloc = function (size, fill, encoding) {
613
+ return alloc(null, size, fill, encoding)
614
+ };
615
+
616
+ function allocUnsafe (that, size) {
617
+ assertSize(size);
618
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
619
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
620
+ for (var i = 0; i < size; ++i) {
621
+ that[i] = 0;
622
+ }
623
+ }
624
+ return that
625
+ }
626
+
627
+ /**
628
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
629
+ * */
630
+ Buffer.allocUnsafe = function (size) {
631
+ return allocUnsafe(null, size)
632
+ };
633
+ /**
634
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
635
+ */
636
+ Buffer.allocUnsafeSlow = function (size) {
637
+ return allocUnsafe(null, size)
638
+ };
639
+
640
+ function fromString (that, string, encoding) {
641
+ if (typeof encoding !== 'string' || encoding === '') {
642
+ encoding = 'utf8';
643
+ }
644
+
645
+ if (!Buffer.isEncoding(encoding)) {
646
+ throw new TypeError('"encoding" must be a valid string encoding')
647
+ }
648
+
649
+ var length = byteLength(string, encoding) | 0;
650
+ that = createBuffer(that, length);
651
+
652
+ var actual = that.write(string, encoding);
653
+
654
+ if (actual !== length) {
655
+ // Writing a hex string, for example, that contains invalid characters will
656
+ // cause everything after the first invalid character to be ignored. (e.g.
657
+ // 'abxxcd' will be treated as 'ab')
658
+ that = that.slice(0, actual);
659
+ }
660
+
661
+ return that
662
+ }
663
+
664
+ function fromArrayLike (that, array) {
665
+ var length = array.length < 0 ? 0 : checked(array.length) | 0;
666
+ that = createBuffer(that, length);
667
+ for (var i = 0; i < length; i += 1) {
668
+ that[i] = array[i] & 255;
669
+ }
670
+ return that
671
+ }
672
+
673
+ function fromArrayBuffer (that, array, byteOffset, length) {
674
+ array.byteLength; // this throws if `array` is not a valid ArrayBuffer
675
+
676
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
677
+ throw new RangeError('\'offset\' is out of bounds')
678
+ }
679
+
680
+ if (array.byteLength < byteOffset + (length || 0)) {
681
+ throw new RangeError('\'length\' is out of bounds')
682
+ }
683
+
684
+ if (byteOffset === undefined && length === undefined) {
685
+ array = new Uint8Array(array);
686
+ } else if (length === undefined) {
687
+ array = new Uint8Array(array, byteOffset);
688
+ } else {
689
+ array = new Uint8Array(array, byteOffset, length);
690
+ }
691
+
692
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
693
+ // Return an augmented `Uint8Array` instance, for best performance
694
+ that = array;
695
+ that.__proto__ = Buffer.prototype;
696
+ } else {
697
+ // Fallback: Return an object instance of the Buffer class
698
+ that = fromArrayLike(that, array);
699
+ }
700
+ return that
701
+ }
702
+
703
+ function fromObject (that, obj) {
704
+ if (internalIsBuffer(obj)) {
705
+ var len = checked(obj.length) | 0;
706
+ that = createBuffer(that, len);
707
+
708
+ if (that.length === 0) {
709
+ return that
710
+ }
711
+
712
+ obj.copy(that, 0, 0, len);
713
+ return that
714
+ }
715
+
716
+ if (obj) {
717
+ if ((typeof ArrayBuffer !== 'undefined' &&
718
+ obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
719
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
720
+ return createBuffer(that, 0)
721
+ }
722
+ return fromArrayLike(that, obj)
723
+ }
724
+
725
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
726
+ return fromArrayLike(that, obj.data)
727
+ }
728
+ }
729
+
730
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
731
+ }
732
+
733
+ function checked (length) {
734
+ // Note: cannot use `length < kMaxLength()` here because that fails when
735
+ // length is NaN (which is otherwise coerced to zero.)
736
+ if (length >= kMaxLength()) {
737
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
738
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
739
+ }
740
+ return length | 0
741
+ }
742
+ Buffer.isBuffer = isBuffer;
743
+ function internalIsBuffer (b) {
744
+ return !!(b != null && b._isBuffer)
745
+ }
746
+
747
+ Buffer.compare = function compare (a, b) {
748
+ if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
749
+ throw new TypeError('Arguments must be Buffers')
750
+ }
751
+
752
+ if (a === b) return 0
753
+
754
+ var x = a.length;
755
+ var y = b.length;
756
+
757
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
758
+ if (a[i] !== b[i]) {
759
+ x = a[i];
760
+ y = b[i];
761
+ break
762
+ }
763
+ }
764
+
765
+ if (x < y) return -1
766
+ if (y < x) return 1
767
+ return 0
768
+ };
769
+
770
+ Buffer.isEncoding = function isEncoding (encoding) {
771
+ switch (String(encoding).toLowerCase()) {
772
+ case 'hex':
773
+ case 'utf8':
774
+ case 'utf-8':
775
+ case 'ascii':
776
+ case 'latin1':
777
+ case 'binary':
778
+ case 'base64':
779
+ case 'ucs2':
780
+ case 'ucs-2':
781
+ case 'utf16le':
782
+ case 'utf-16le':
783
+ return true
784
+ default:
785
+ return false
786
+ }
787
+ };
788
+
789
+ Buffer.concat = function concat (list, length) {
790
+ if (!isArray(list)) {
791
+ throw new TypeError('"list" argument must be an Array of Buffers')
792
+ }
793
+
794
+ if (list.length === 0) {
795
+ return Buffer.alloc(0)
796
+ }
797
+
798
+ var i;
799
+ if (length === undefined) {
800
+ length = 0;
801
+ for (i = 0; i < list.length; ++i) {
802
+ length += list[i].length;
803
+ }
804
+ }
805
+
806
+ var buffer = Buffer.allocUnsafe(length);
807
+ var pos = 0;
808
+ for (i = 0; i < list.length; ++i) {
809
+ var buf = list[i];
810
+ if (!internalIsBuffer(buf)) {
811
+ throw new TypeError('"list" argument must be an Array of Buffers')
812
+ }
813
+ buf.copy(buffer, pos);
814
+ pos += buf.length;
815
+ }
816
+ return buffer
817
+ };
818
+
819
+ function byteLength (string, encoding) {
820
+ if (internalIsBuffer(string)) {
821
+ return string.length
822
+ }
823
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
824
+ (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
825
+ return string.byteLength
826
+ }
827
+ if (typeof string !== 'string') {
828
+ string = '' + string;
829
+ }
830
+
831
+ var len = string.length;
832
+ if (len === 0) return 0
833
+
834
+ // Use a for loop to avoid recursion
835
+ var loweredCase = false;
836
+ for (;;) {
837
+ switch (encoding) {
838
+ case 'ascii':
839
+ case 'latin1':
840
+ case 'binary':
841
+ return len
842
+ case 'utf8':
843
+ case 'utf-8':
844
+ case undefined:
845
+ return utf8ToBytes(string).length
846
+ case 'ucs2':
847
+ case 'ucs-2':
848
+ case 'utf16le':
849
+ case 'utf-16le':
850
+ return len * 2
851
+ case 'hex':
852
+ return len >>> 1
853
+ case 'base64':
854
+ return base64ToBytes(string).length
855
+ default:
856
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
857
+ encoding = ('' + encoding).toLowerCase();
858
+ loweredCase = true;
859
+ }
860
+ }
861
+ }
862
+ Buffer.byteLength = byteLength;
863
+
864
+ function slowToString (encoding, start, end) {
865
+ var loweredCase = false;
866
+
867
+ // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
868
+ // property of a typed array.
869
+
870
+ // This behaves neither like String nor Uint8Array in that we set start/end
871
+ // to their upper/lower bounds if the value passed is out of range.
872
+ // undefined is handled specially as per ECMA-262 6th Edition,
873
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
874
+ if (start === undefined || start < 0) {
875
+ start = 0;
876
+ }
877
+ // Return early if start > this.length. Done here to prevent potential uint32
878
+ // coercion fail below.
879
+ if (start > this.length) {
880
+ return ''
881
+ }
882
+
883
+ if (end === undefined || end > this.length) {
884
+ end = this.length;
885
+ }
886
+
887
+ if (end <= 0) {
888
+ return ''
889
+ }
890
+
891
+ // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
892
+ end >>>= 0;
893
+ start >>>= 0;
894
+
895
+ if (end <= start) {
896
+ return ''
897
+ }
898
+
899
+ if (!encoding) encoding = 'utf8';
900
+
901
+ while (true) {
902
+ switch (encoding) {
903
+ case 'hex':
904
+ return hexSlice(this, start, end)
905
+
906
+ case 'utf8':
907
+ case 'utf-8':
908
+ return utf8Slice(this, start, end)
909
+
910
+ case 'ascii':
911
+ return asciiSlice(this, start, end)
912
+
913
+ case 'latin1':
914
+ case 'binary':
915
+ return latin1Slice(this, start, end)
916
+
917
+ case 'base64':
918
+ return base64Slice(this, start, end)
919
+
920
+ case 'ucs2':
921
+ case 'ucs-2':
922
+ case 'utf16le':
923
+ case 'utf-16le':
924
+ return utf16leSlice(this, start, end)
925
+
926
+ default:
927
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
928
+ encoding = (encoding + '').toLowerCase();
929
+ loweredCase = true;
930
+ }
931
+ }
932
+ }
933
+
934
+ // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
935
+ // Buffer instances.
936
+ Buffer.prototype._isBuffer = true;
937
+
938
+ function swap (b, n, m) {
939
+ var i = b[n];
940
+ b[n] = b[m];
941
+ b[m] = i;
942
+ }
943
+
944
+ Buffer.prototype.swap16 = function swap16 () {
945
+ var len = this.length;
946
+ if (len % 2 !== 0) {
947
+ throw new RangeError('Buffer size must be a multiple of 16-bits')
948
+ }
949
+ for (var i = 0; i < len; i += 2) {
950
+ swap(this, i, i + 1);
951
+ }
952
+ return this
953
+ };
954
+
955
+ Buffer.prototype.swap32 = function swap32 () {
956
+ var len = this.length;
957
+ if (len % 4 !== 0) {
958
+ throw new RangeError('Buffer size must be a multiple of 32-bits')
959
+ }
960
+ for (var i = 0; i < len; i += 4) {
961
+ swap(this, i, i + 3);
962
+ swap(this, i + 1, i + 2);
963
+ }
964
+ return this
965
+ };
966
+
967
+ Buffer.prototype.swap64 = function swap64 () {
968
+ var len = this.length;
969
+ if (len % 8 !== 0) {
970
+ throw new RangeError('Buffer size must be a multiple of 64-bits')
971
+ }
972
+ for (var i = 0; i < len; i += 8) {
973
+ swap(this, i, i + 7);
974
+ swap(this, i + 1, i + 6);
975
+ swap(this, i + 2, i + 5);
976
+ swap(this, i + 3, i + 4);
977
+ }
978
+ return this
979
+ };
980
+
981
+ Buffer.prototype.toString = function toString () {
982
+ var length = this.length | 0;
983
+ if (length === 0) return ''
984
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
985
+ return slowToString.apply(this, arguments)
986
+ };
987
+
988
+ Buffer.prototype.equals = function equals (b) {
989
+ if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
990
+ if (this === b) return true
991
+ return Buffer.compare(this, b) === 0
992
+ };
993
+
994
+ Buffer.prototype.inspect = function inspect () {
995
+ var str = '';
996
+ var max = INSPECT_MAX_BYTES;
997
+ if (this.length > 0) {
998
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
999
+ if (this.length > max) str += ' ... ';
1000
+ }
1001
+ return '<Buffer ' + str + '>'
1002
+ };
1003
+
1004
+ Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
1005
+ if (!internalIsBuffer(target)) {
1006
+ throw new TypeError('Argument must be a Buffer')
1007
+ }
1008
+
1009
+ if (start === undefined) {
1010
+ start = 0;
1011
+ }
1012
+ if (end === undefined) {
1013
+ end = target ? target.length : 0;
1014
+ }
1015
+ if (thisStart === undefined) {
1016
+ thisStart = 0;
1017
+ }
1018
+ if (thisEnd === undefined) {
1019
+ thisEnd = this.length;
1020
+ }
1021
+
1022
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
1023
+ throw new RangeError('out of range index')
1024
+ }
1025
+
1026
+ if (thisStart >= thisEnd && start >= end) {
1027
+ return 0
1028
+ }
1029
+ if (thisStart >= thisEnd) {
1030
+ return -1
1031
+ }
1032
+ if (start >= end) {
1033
+ return 1
1034
+ }
1035
+
1036
+ start >>>= 0;
1037
+ end >>>= 0;
1038
+ thisStart >>>= 0;
1039
+ thisEnd >>>= 0;
1040
+
1041
+ if (this === target) return 0
1042
+
1043
+ var x = thisEnd - thisStart;
1044
+ var y = end - start;
1045
+ var len = Math.min(x, y);
1046
+
1047
+ var thisCopy = this.slice(thisStart, thisEnd);
1048
+ var targetCopy = target.slice(start, end);
1049
+
1050
+ for (var i = 0; i < len; ++i) {
1051
+ if (thisCopy[i] !== targetCopy[i]) {
1052
+ x = thisCopy[i];
1053
+ y = targetCopy[i];
1054
+ break
1055
+ }
1056
+ }
1057
+
1058
+ if (x < y) return -1
1059
+ if (y < x) return 1
1060
+ return 0
1061
+ };
1062
+
1063
+ // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
1064
+ // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
1065
+ //
1066
+ // Arguments:
1067
+ // - buffer - a Buffer to search
1068
+ // - val - a string, Buffer, or number
1069
+ // - byteOffset - an index into `buffer`; will be clamped to an int32
1070
+ // - encoding - an optional encoding, relevant is val is a string
1071
+ // - dir - true for indexOf, false for lastIndexOf
1072
+ function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
1073
+ // Empty buffer means no match
1074
+ if (buffer.length === 0) return -1
1075
+
1076
+ // Normalize byteOffset
1077
+ if (typeof byteOffset === 'string') {
1078
+ encoding = byteOffset;
1079
+ byteOffset = 0;
1080
+ } else if (byteOffset > 0x7fffffff) {
1081
+ byteOffset = 0x7fffffff;
1082
+ } else if (byteOffset < -2147483648) {
1083
+ byteOffset = -2147483648;
1084
+ }
1085
+ byteOffset = +byteOffset; // Coerce to Number.
1086
+ if (isNaN(byteOffset)) {
1087
+ // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
1088
+ byteOffset = dir ? 0 : (buffer.length - 1);
1089
+ }
1090
+
1091
+ // Normalize byteOffset: negative offsets start from the end of the buffer
1092
+ if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
1093
+ if (byteOffset >= buffer.length) {
1094
+ if (dir) return -1
1095
+ else byteOffset = buffer.length - 1;
1096
+ } else if (byteOffset < 0) {
1097
+ if (dir) byteOffset = 0;
1098
+ else return -1
1099
+ }
1100
+
1101
+ // Normalize val
1102
+ if (typeof val === 'string') {
1103
+ val = Buffer.from(val, encoding);
1104
+ }
1105
+
1106
+ // Finally, search either indexOf (if dir is true) or lastIndexOf
1107
+ if (internalIsBuffer(val)) {
1108
+ // Special case: looking for empty string/buffer always fails
1109
+ if (val.length === 0) {
1110
+ return -1
1111
+ }
1112
+ return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
1113
+ } else if (typeof val === 'number') {
1114
+ val = val & 0xFF; // Search for a byte value [0-255]
1115
+ if (Buffer.TYPED_ARRAY_SUPPORT &&
1116
+ typeof Uint8Array.prototype.indexOf === 'function') {
1117
+ if (dir) {
1118
+ return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
1119
+ } else {
1120
+ return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
1121
+ }
1122
+ }
1123
+ return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
1124
+ }
1125
+
1126
+ throw new TypeError('val must be string, number or Buffer')
1127
+ }
1128
+
1129
+ function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
1130
+ var indexSize = 1;
1131
+ var arrLength = arr.length;
1132
+ var valLength = val.length;
1133
+
1134
+ if (encoding !== undefined) {
1135
+ encoding = String(encoding).toLowerCase();
1136
+ if (encoding === 'ucs2' || encoding === 'ucs-2' ||
1137
+ encoding === 'utf16le' || encoding === 'utf-16le') {
1138
+ if (arr.length < 2 || val.length < 2) {
1139
+ return -1
1140
+ }
1141
+ indexSize = 2;
1142
+ arrLength /= 2;
1143
+ valLength /= 2;
1144
+ byteOffset /= 2;
1145
+ }
1146
+ }
1147
+
1148
+ function read (buf, i) {
1149
+ if (indexSize === 1) {
1150
+ return buf[i]
1151
+ } else {
1152
+ return buf.readUInt16BE(i * indexSize)
1153
+ }
1154
+ }
1155
+
1156
+ var i;
1157
+ if (dir) {
1158
+ var foundIndex = -1;
1159
+ for (i = byteOffset; i < arrLength; i++) {
1160
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
1161
+ if (foundIndex === -1) foundIndex = i;
1162
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
1163
+ } else {
1164
+ if (foundIndex !== -1) i -= i - foundIndex;
1165
+ foundIndex = -1;
1166
+ }
1167
+ }
1168
+ } else {
1169
+ if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
1170
+ for (i = byteOffset; i >= 0; i--) {
1171
+ var found = true;
1172
+ for (var j = 0; j < valLength; j++) {
1173
+ if (read(arr, i + j) !== read(val, j)) {
1174
+ found = false;
1175
+ break
1176
+ }
1177
+ }
1178
+ if (found) return i
1179
+ }
1180
+ }
1181
+
1182
+ return -1
1183
+ }
1184
+
1185
+ Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
1186
+ return this.indexOf(val, byteOffset, encoding) !== -1
1187
+ };
1188
+
1189
+ Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
1190
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
1191
+ };
1192
+
1193
+ Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
1194
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
1195
+ };
1196
+
1197
+ function hexWrite (buf, string, offset, length) {
1198
+ offset = Number(offset) || 0;
1199
+ var remaining = buf.length - offset;
1200
+ if (!length) {
1201
+ length = remaining;
1202
+ } else {
1203
+ length = Number(length);
1204
+ if (length > remaining) {
1205
+ length = remaining;
1206
+ }
1207
+ }
1208
+
1209
+ // must be an even number of digits
1210
+ var strLen = string.length;
1211
+ if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
1212
+
1213
+ if (length > strLen / 2) {
1214
+ length = strLen / 2;
1215
+ }
1216
+ for (var i = 0; i < length; ++i) {
1217
+ var parsed = parseInt(string.substr(i * 2, 2), 16);
1218
+ if (isNaN(parsed)) return i
1219
+ buf[offset + i] = parsed;
1220
+ }
1221
+ return i
1222
+ }
1223
+
1224
+ function utf8Write (buf, string, offset, length) {
1225
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
1226
+ }
1227
+
1228
+ function asciiWrite (buf, string, offset, length) {
1229
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
1230
+ }
1231
+
1232
+ function latin1Write (buf, string, offset, length) {
1233
+ return asciiWrite(buf, string, offset, length)
1234
+ }
1235
+
1236
+ function base64Write (buf, string, offset, length) {
1237
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
1238
+ }
1239
+
1240
+ function ucs2Write (buf, string, offset, length) {
1241
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
1242
+ }
1243
+
1244
+ Buffer.prototype.write = function write (string, offset, length, encoding) {
1245
+ // Buffer#write(string)
1246
+ if (offset === undefined) {
1247
+ encoding = 'utf8';
1248
+ length = this.length;
1249
+ offset = 0;
1250
+ // Buffer#write(string, encoding)
1251
+ } else if (length === undefined && typeof offset === 'string') {
1252
+ encoding = offset;
1253
+ length = this.length;
1254
+ offset = 0;
1255
+ // Buffer#write(string, offset[, length][, encoding])
1256
+ } else if (isFinite(offset)) {
1257
+ offset = offset | 0;
1258
+ if (isFinite(length)) {
1259
+ length = length | 0;
1260
+ if (encoding === undefined) encoding = 'utf8';
1261
+ } else {
1262
+ encoding = length;
1263
+ length = undefined;
1264
+ }
1265
+ // legacy write(string, encoding, offset, length) - remove in v0.13
1266
+ } else {
1267
+ throw new Error(
1268
+ 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
1269
+ )
1270
+ }
1271
+
1272
+ var remaining = this.length - offset;
1273
+ if (length === undefined || length > remaining) length = remaining;
1274
+
1275
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
1276
+ throw new RangeError('Attempt to write outside buffer bounds')
1277
+ }
1278
+
1279
+ if (!encoding) encoding = 'utf8';
1280
+
1281
+ var loweredCase = false;
1282
+ for (;;) {
1283
+ switch (encoding) {
1284
+ case 'hex':
1285
+ return hexWrite(this, string, offset, length)
1286
+
1287
+ case 'utf8':
1288
+ case 'utf-8':
1289
+ return utf8Write(this, string, offset, length)
1290
+
1291
+ case 'ascii':
1292
+ return asciiWrite(this, string, offset, length)
1293
+
1294
+ case 'latin1':
1295
+ case 'binary':
1296
+ return latin1Write(this, string, offset, length)
1297
+
1298
+ case 'base64':
1299
+ // Warning: maxLength not taken into account in base64Write
1300
+ return base64Write(this, string, offset, length)
1301
+
1302
+ case 'ucs2':
1303
+ case 'ucs-2':
1304
+ case 'utf16le':
1305
+ case 'utf-16le':
1306
+ return ucs2Write(this, string, offset, length)
1307
+
1308
+ default:
1309
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
1310
+ encoding = ('' + encoding).toLowerCase();
1311
+ loweredCase = true;
1312
+ }
1313
+ }
1314
+ };
1315
+
1316
+ Buffer.prototype.toJSON = function toJSON () {
1317
+ return {
1318
+ type: 'Buffer',
1319
+ data: Array.prototype.slice.call(this._arr || this, 0)
1320
+ }
1321
+ };
1322
+
1323
+ function base64Slice (buf, start, end) {
1324
+ if (start === 0 && end === buf.length) {
1325
+ return fromByteArray(buf)
1326
+ } else {
1327
+ return fromByteArray(buf.slice(start, end))
1328
+ }
1329
+ }
1330
+
1331
+ function utf8Slice (buf, start, end) {
1332
+ end = Math.min(buf.length, end);
1333
+ var res = [];
1334
+
1335
+ var i = start;
1336
+ while (i < end) {
1337
+ var firstByte = buf[i];
1338
+ var codePoint = null;
1339
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
1340
+ : (firstByte > 0xDF) ? 3
1341
+ : (firstByte > 0xBF) ? 2
1342
+ : 1;
1343
+
1344
+ if (i + bytesPerSequence <= end) {
1345
+ var secondByte, thirdByte, fourthByte, tempCodePoint;
1346
+
1347
+ switch (bytesPerSequence) {
1348
+ case 1:
1349
+ if (firstByte < 0x80) {
1350
+ codePoint = firstByte;
1351
+ }
1352
+ break
1353
+ case 2:
1354
+ secondByte = buf[i + 1];
1355
+ if ((secondByte & 0xC0) === 0x80) {
1356
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
1357
+ if (tempCodePoint > 0x7F) {
1358
+ codePoint = tempCodePoint;
1359
+ }
1360
+ }
1361
+ break
1362
+ case 3:
1363
+ secondByte = buf[i + 1];
1364
+ thirdByte = buf[i + 2];
1365
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
1366
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
1367
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
1368
+ codePoint = tempCodePoint;
1369
+ }
1370
+ }
1371
+ break
1372
+ case 4:
1373
+ secondByte = buf[i + 1];
1374
+ thirdByte = buf[i + 2];
1375
+ fourthByte = buf[i + 3];
1376
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
1377
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
1378
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
1379
+ codePoint = tempCodePoint;
1380
+ }
1381
+ }
1382
+ }
1383
+ }
1384
+
1385
+ if (codePoint === null) {
1386
+ // we did not generate a valid codePoint so insert a
1387
+ // replacement char (U+FFFD) and advance only 1 byte
1388
+ codePoint = 0xFFFD;
1389
+ bytesPerSequence = 1;
1390
+ } else if (codePoint > 0xFFFF) {
1391
+ // encode to utf16 (surrogate pair dance)
1392
+ codePoint -= 0x10000;
1393
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800);
1394
+ codePoint = 0xDC00 | codePoint & 0x3FF;
1395
+ }
1396
+
1397
+ res.push(codePoint);
1398
+ i += bytesPerSequence;
1399
+ }
1400
+
1401
+ return decodeCodePointsArray(res)
1402
+ }
1403
+
1404
+ // Based on http://stackoverflow.com/a/22747272/680742, the browser with
1405
+ // the lowest limit is Chrome, with 0x10000 args.
1406
+ // We go 1 magnitude less, for safety
1407
+ var MAX_ARGUMENTS_LENGTH = 0x1000;
1408
+
1409
+ function decodeCodePointsArray (codePoints) {
1410
+ var len = codePoints.length;
1411
+ if (len <= MAX_ARGUMENTS_LENGTH) {
1412
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
1413
+ }
1414
+
1415
+ // Decode in chunks to avoid "call stack size exceeded".
1416
+ var res = '';
1417
+ var i = 0;
1418
+ while (i < len) {
1419
+ res += String.fromCharCode.apply(
1420
+ String,
1421
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
1422
+ );
1423
+ }
1424
+ return res
1425
+ }
1426
+
1427
+ function asciiSlice (buf, start, end) {
1428
+ var ret = '';
1429
+ end = Math.min(buf.length, end);
1430
+
1431
+ for (var i = start; i < end; ++i) {
1432
+ ret += String.fromCharCode(buf[i] & 0x7F);
1433
+ }
1434
+ return ret
1435
+ }
1436
+
1437
+ function latin1Slice (buf, start, end) {
1438
+ var ret = '';
1439
+ end = Math.min(buf.length, end);
1440
+
1441
+ for (var i = start; i < end; ++i) {
1442
+ ret += String.fromCharCode(buf[i]);
1443
+ }
1444
+ return ret
1445
+ }
1446
+
1447
+ function hexSlice (buf, start, end) {
1448
+ var len = buf.length;
1449
+
1450
+ if (!start || start < 0) start = 0;
1451
+ if (!end || end < 0 || end > len) end = len;
1452
+
1453
+ var out = '';
1454
+ for (var i = start; i < end; ++i) {
1455
+ out += toHex(buf[i]);
1456
+ }
1457
+ return out
1458
+ }
1459
+
1460
+ function utf16leSlice (buf, start, end) {
1461
+ var bytes = buf.slice(start, end);
1462
+ var res = '';
1463
+ for (var i = 0; i < bytes.length; i += 2) {
1464
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
1465
+ }
1466
+ return res
1467
+ }
1468
+
1469
+ Buffer.prototype.slice = function slice (start, end) {
1470
+ var len = this.length;
1471
+ start = ~~start;
1472
+ end = end === undefined ? len : ~~end;
1473
+
1474
+ if (start < 0) {
1475
+ start += len;
1476
+ if (start < 0) start = 0;
1477
+ } else if (start > len) {
1478
+ start = len;
1479
+ }
1480
+
1481
+ if (end < 0) {
1482
+ end += len;
1483
+ if (end < 0) end = 0;
1484
+ } else if (end > len) {
1485
+ end = len;
1486
+ }
1487
+
1488
+ if (end < start) end = start;
1489
+
1490
+ var newBuf;
1491
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1492
+ newBuf = this.subarray(start, end);
1493
+ newBuf.__proto__ = Buffer.prototype;
1494
+ } else {
1495
+ var sliceLen = end - start;
1496
+ newBuf = new Buffer(sliceLen, undefined);
1497
+ for (var i = 0; i < sliceLen; ++i) {
1498
+ newBuf[i] = this[i + start];
1499
+ }
1500
+ }
1501
+
1502
+ return newBuf
1503
+ };
1504
+
1505
+ /*
1506
+ * Need to make sure that buffer isn't trying to write out of bounds.
1507
+ */
1508
+ function checkOffset (offset, ext, length) {
1509
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
1510
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
1511
+ }
1512
+
1513
+ Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
1514
+ offset = offset | 0;
1515
+ byteLength = byteLength | 0;
1516
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1517
+
1518
+ var val = this[offset];
1519
+ var mul = 1;
1520
+ var i = 0;
1521
+ while (++i < byteLength && (mul *= 0x100)) {
1522
+ val += this[offset + i] * mul;
1523
+ }
1524
+
1525
+ return val
1526
+ };
1527
+
1528
+ Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
1529
+ offset = offset | 0;
1530
+ byteLength = byteLength | 0;
1531
+ if (!noAssert) {
1532
+ checkOffset(offset, byteLength, this.length);
1533
+ }
1534
+
1535
+ var val = this[offset + --byteLength];
1536
+ var mul = 1;
1537
+ while (byteLength > 0 && (mul *= 0x100)) {
1538
+ val += this[offset + --byteLength] * mul;
1539
+ }
1540
+
1541
+ return val
1542
+ };
1543
+
1544
+ Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
1545
+ if (!noAssert) checkOffset(offset, 1, this.length);
1546
+ return this[offset]
1547
+ };
1548
+
1549
+ Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
1550
+ if (!noAssert) checkOffset(offset, 2, this.length);
1551
+ return this[offset] | (this[offset + 1] << 8)
1552
+ };
1553
+
1554
+ Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
1555
+ if (!noAssert) checkOffset(offset, 2, this.length);
1556
+ return (this[offset] << 8) | this[offset + 1]
1557
+ };
1558
+
1559
+ Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
1560
+ if (!noAssert) checkOffset(offset, 4, this.length);
1561
+
1562
+ return ((this[offset]) |
1563
+ (this[offset + 1] << 8) |
1564
+ (this[offset + 2] << 16)) +
1565
+ (this[offset + 3] * 0x1000000)
1566
+ };
1567
+
1568
+ Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
1569
+ if (!noAssert) checkOffset(offset, 4, this.length);
1570
+
1571
+ return (this[offset] * 0x1000000) +
1572
+ ((this[offset + 1] << 16) |
1573
+ (this[offset + 2] << 8) |
1574
+ this[offset + 3])
1575
+ };
1576
+
1577
+ Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
1578
+ offset = offset | 0;
1579
+ byteLength = byteLength | 0;
1580
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1581
+
1582
+ var val = this[offset];
1583
+ var mul = 1;
1584
+ var i = 0;
1585
+ while (++i < byteLength && (mul *= 0x100)) {
1586
+ val += this[offset + i] * mul;
1587
+ }
1588
+ mul *= 0x80;
1589
+
1590
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
1591
+
1592
+ return val
1593
+ };
1594
+
1595
+ Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
1596
+ offset = offset | 0;
1597
+ byteLength = byteLength | 0;
1598
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
1599
+
1600
+ var i = byteLength;
1601
+ var mul = 1;
1602
+ var val = this[offset + --i];
1603
+ while (i > 0 && (mul *= 0x100)) {
1604
+ val += this[offset + --i] * mul;
1605
+ }
1606
+ mul *= 0x80;
1607
+
1608
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
1609
+
1610
+ return val
1611
+ };
1612
+
1613
+ Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
1614
+ if (!noAssert) checkOffset(offset, 1, this.length);
1615
+ if (!(this[offset] & 0x80)) return (this[offset])
1616
+ return ((0xff - this[offset] + 1) * -1)
1617
+ };
1618
+
1619
+ Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
1620
+ if (!noAssert) checkOffset(offset, 2, this.length);
1621
+ var val = this[offset] | (this[offset + 1] << 8);
1622
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
1623
+ };
1624
+
1625
+ Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
1626
+ if (!noAssert) checkOffset(offset, 2, this.length);
1627
+ var val = this[offset + 1] | (this[offset] << 8);
1628
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
1629
+ };
1630
+
1631
+ Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
1632
+ if (!noAssert) checkOffset(offset, 4, this.length);
1633
+
1634
+ return (this[offset]) |
1635
+ (this[offset + 1] << 8) |
1636
+ (this[offset + 2] << 16) |
1637
+ (this[offset + 3] << 24)
1638
+ };
1639
+
1640
+ Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
1641
+ if (!noAssert) checkOffset(offset, 4, this.length);
1642
+
1643
+ return (this[offset] << 24) |
1644
+ (this[offset + 1] << 16) |
1645
+ (this[offset + 2] << 8) |
1646
+ (this[offset + 3])
1647
+ };
1648
+
1649
+ Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
1650
+ if (!noAssert) checkOffset(offset, 4, this.length);
1651
+ return read(this, offset, true, 23, 4)
1652
+ };
1653
+
1654
+ Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
1655
+ if (!noAssert) checkOffset(offset, 4, this.length);
1656
+ return read(this, offset, false, 23, 4)
1657
+ };
1658
+
1659
+ Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
1660
+ if (!noAssert) checkOffset(offset, 8, this.length);
1661
+ return read(this, offset, true, 52, 8)
1662
+ };
1663
+
1664
+ Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
1665
+ if (!noAssert) checkOffset(offset, 8, this.length);
1666
+ return read(this, offset, false, 52, 8)
1667
+ };
1668
+
1669
+ function checkInt (buf, value, offset, ext, max, min) {
1670
+ if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
1671
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
1672
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
1673
+ }
1674
+
1675
+ Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
1676
+ value = +value;
1677
+ offset = offset | 0;
1678
+ byteLength = byteLength | 0;
1679
+ if (!noAssert) {
1680
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
1681
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
1682
+ }
1683
+
1684
+ var mul = 1;
1685
+ var i = 0;
1686
+ this[offset] = value & 0xFF;
1687
+ while (++i < byteLength && (mul *= 0x100)) {
1688
+ this[offset + i] = (value / mul) & 0xFF;
1689
+ }
1690
+
1691
+ return offset + byteLength
1692
+ };
1693
+
1694
+ Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
1695
+ value = +value;
1696
+ offset = offset | 0;
1697
+ byteLength = byteLength | 0;
1698
+ if (!noAssert) {
1699
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
1700
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
1701
+ }
1702
+
1703
+ var i = byteLength - 1;
1704
+ var mul = 1;
1705
+ this[offset + i] = value & 0xFF;
1706
+ while (--i >= 0 && (mul *= 0x100)) {
1707
+ this[offset + i] = (value / mul) & 0xFF;
1708
+ }
1709
+
1710
+ return offset + byteLength
1711
+ };
1712
+
1713
+ Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
1714
+ value = +value;
1715
+ offset = offset | 0;
1716
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
1717
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
1718
+ this[offset] = (value & 0xff);
1719
+ return offset + 1
1720
+ };
1721
+
1722
+ function objectWriteUInt16 (buf, value, offset, littleEndian) {
1723
+ if (value < 0) value = 0xffff + value + 1;
1724
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
1725
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
1726
+ (littleEndian ? i : 1 - i) * 8;
1727
+ }
1728
+ }
1729
+
1730
+ Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
1731
+ value = +value;
1732
+ offset = offset | 0;
1733
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
1734
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1735
+ this[offset] = (value & 0xff);
1736
+ this[offset + 1] = (value >>> 8);
1737
+ } else {
1738
+ objectWriteUInt16(this, value, offset, true);
1739
+ }
1740
+ return offset + 2
1741
+ };
1742
+
1743
+ Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
1744
+ value = +value;
1745
+ offset = offset | 0;
1746
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
1747
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1748
+ this[offset] = (value >>> 8);
1749
+ this[offset + 1] = (value & 0xff);
1750
+ } else {
1751
+ objectWriteUInt16(this, value, offset, false);
1752
+ }
1753
+ return offset + 2
1754
+ };
1755
+
1756
+ function objectWriteUInt32 (buf, value, offset, littleEndian) {
1757
+ if (value < 0) value = 0xffffffff + value + 1;
1758
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
1759
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
1760
+ }
1761
+ }
1762
+
1763
+ Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
1764
+ value = +value;
1765
+ offset = offset | 0;
1766
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
1767
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1768
+ this[offset + 3] = (value >>> 24);
1769
+ this[offset + 2] = (value >>> 16);
1770
+ this[offset + 1] = (value >>> 8);
1771
+ this[offset] = (value & 0xff);
1772
+ } else {
1773
+ objectWriteUInt32(this, value, offset, true);
1774
+ }
1775
+ return offset + 4
1776
+ };
1777
+
1778
+ Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
1779
+ value = +value;
1780
+ offset = offset | 0;
1781
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
1782
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1783
+ this[offset] = (value >>> 24);
1784
+ this[offset + 1] = (value >>> 16);
1785
+ this[offset + 2] = (value >>> 8);
1786
+ this[offset + 3] = (value & 0xff);
1787
+ } else {
1788
+ objectWriteUInt32(this, value, offset, false);
1789
+ }
1790
+ return offset + 4
1791
+ };
1792
+
1793
+ Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
1794
+ value = +value;
1795
+ offset = offset | 0;
1796
+ if (!noAssert) {
1797
+ var limit = Math.pow(2, 8 * byteLength - 1);
1798
+
1799
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
1800
+ }
184
1801
 
185
- // Generated using scripts/write-decode-map.ts
186
- var xmlDecodeTree = new Uint16Array(
187
- // prettier-ignore
188
- "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
189
- .split("")
190
- .map((c) => c.charCodeAt(0)));
1802
+ var i = 0;
1803
+ var mul = 1;
1804
+ var sub = 0;
1805
+ this[offset] = value & 0xFF;
1806
+ while (++i < byteLength && (mul *= 0x100)) {
1807
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
1808
+ sub = 1;
1809
+ }
1810
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
1811
+ }
191
1812
 
192
- // Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
193
- var _a;
194
- const decodeMap = new Map([
195
- [0, 65533],
196
- // C1 Unicode control character reference replacements
197
- [128, 8364],
198
- [130, 8218],
199
- [131, 402],
200
- [132, 8222],
201
- [133, 8230],
202
- [134, 8224],
203
- [135, 8225],
204
- [136, 710],
205
- [137, 8240],
206
- [138, 352],
207
- [139, 8249],
208
- [140, 338],
209
- [142, 381],
210
- [145, 8216],
211
- [146, 8217],
212
- [147, 8220],
213
- [148, 8221],
214
- [149, 8226],
215
- [150, 8211],
216
- [151, 8212],
217
- [152, 732],
218
- [153, 8482],
219
- [154, 353],
220
- [155, 8250],
221
- [156, 339],
222
- [158, 382],
223
- [159, 376],
224
- ]);
225
- /**
226
- * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
227
- */
228
- const fromCodePoint =
229
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
230
- (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
231
- let output = "";
232
- if (codePoint > 0xffff) {
233
- codePoint -= 0x10000;
234
- output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
235
- codePoint = 0xdc00 | (codePoint & 0x3ff);
1813
+ return offset + byteLength
1814
+ };
1815
+
1816
+ Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
1817
+ value = +value;
1818
+ offset = offset | 0;
1819
+ if (!noAssert) {
1820
+ var limit = Math.pow(2, 8 * byteLength - 1);
1821
+
1822
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
1823
+ }
1824
+
1825
+ var i = byteLength - 1;
1826
+ var mul = 1;
1827
+ var sub = 0;
1828
+ this[offset + i] = value & 0xFF;
1829
+ while (--i >= 0 && (mul *= 0x100)) {
1830
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
1831
+ sub = 1;
236
1832
  }
237
- output += String.fromCharCode(codePoint);
238
- return output;
1833
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
1834
+ }
1835
+
1836
+ return offset + byteLength
239
1837
  };
240
- /**
241
- * Replace the given code point with a replacement character if it is a
242
- * surrogate or is outside the valid range. Otherwise return the code
243
- * point unchanged.
1838
+
1839
+ Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
1840
+ value = +value;
1841
+ offset = offset | 0;
1842
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);
1843
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
1844
+ if (value < 0) value = 0xff + value + 1;
1845
+ this[offset] = (value & 0xff);
1846
+ return offset + 1
1847
+ };
1848
+
1849
+ Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
1850
+ value = +value;
1851
+ offset = offset | 0;
1852
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
1853
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1854
+ this[offset] = (value & 0xff);
1855
+ this[offset + 1] = (value >>> 8);
1856
+ } else {
1857
+ objectWriteUInt16(this, value, offset, true);
1858
+ }
1859
+ return offset + 2
1860
+ };
1861
+
1862
+ Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
1863
+ value = +value;
1864
+ offset = offset | 0;
1865
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
1866
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1867
+ this[offset] = (value >>> 8);
1868
+ this[offset + 1] = (value & 0xff);
1869
+ } else {
1870
+ objectWriteUInt16(this, value, offset, false);
1871
+ }
1872
+ return offset + 2
1873
+ };
1874
+
1875
+ Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
1876
+ value = +value;
1877
+ offset = offset | 0;
1878
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
1879
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1880
+ this[offset] = (value & 0xff);
1881
+ this[offset + 1] = (value >>> 8);
1882
+ this[offset + 2] = (value >>> 16);
1883
+ this[offset + 3] = (value >>> 24);
1884
+ } else {
1885
+ objectWriteUInt32(this, value, offset, true);
1886
+ }
1887
+ return offset + 4
1888
+ };
1889
+
1890
+ Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
1891
+ value = +value;
1892
+ offset = offset | 0;
1893
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
1894
+ if (value < 0) value = 0xffffffff + value + 1;
1895
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
1896
+ this[offset] = (value >>> 24);
1897
+ this[offset + 1] = (value >>> 16);
1898
+ this[offset + 2] = (value >>> 8);
1899
+ this[offset + 3] = (value & 0xff);
1900
+ } else {
1901
+ objectWriteUInt32(this, value, offset, false);
1902
+ }
1903
+ return offset + 4
1904
+ };
1905
+
1906
+ function checkIEEE754 (buf, value, offset, ext, max, min) {
1907
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
1908
+ if (offset < 0) throw new RangeError('Index out of range')
1909
+ }
1910
+
1911
+ function writeFloat (buf, value, offset, littleEndian, noAssert) {
1912
+ if (!noAssert) {
1913
+ checkIEEE754(buf, value, offset, 4);
1914
+ }
1915
+ write(buf, value, offset, littleEndian, 23, 4);
1916
+ return offset + 4
1917
+ }
1918
+
1919
+ Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
1920
+ return writeFloat(this, value, offset, true, noAssert)
1921
+ };
1922
+
1923
+ Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
1924
+ return writeFloat(this, value, offset, false, noAssert)
1925
+ };
1926
+
1927
+ function writeDouble (buf, value, offset, littleEndian, noAssert) {
1928
+ if (!noAssert) {
1929
+ checkIEEE754(buf, value, offset, 8);
1930
+ }
1931
+ write(buf, value, offset, littleEndian, 52, 8);
1932
+ return offset + 8
1933
+ }
1934
+
1935
+ Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
1936
+ return writeDouble(this, value, offset, true, noAssert)
1937
+ };
1938
+
1939
+ Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
1940
+ return writeDouble(this, value, offset, false, noAssert)
1941
+ };
1942
+
1943
+ // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
1944
+ Buffer.prototype.copy = function copy (target, targetStart, start, end) {
1945
+ if (!start) start = 0;
1946
+ if (!end && end !== 0) end = this.length;
1947
+ if (targetStart >= target.length) targetStart = target.length;
1948
+ if (!targetStart) targetStart = 0;
1949
+ if (end > 0 && end < start) end = start;
1950
+
1951
+ // Copy 0 bytes; we're done
1952
+ if (end === start) return 0
1953
+ if (target.length === 0 || this.length === 0) return 0
1954
+
1955
+ // Fatal error conditions
1956
+ if (targetStart < 0) {
1957
+ throw new RangeError('targetStart out of bounds')
1958
+ }
1959
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
1960
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
1961
+
1962
+ // Are we oob?
1963
+ if (end > this.length) end = this.length;
1964
+ if (target.length - targetStart < end - start) {
1965
+ end = target.length - targetStart + start;
1966
+ }
1967
+
1968
+ var len = end - start;
1969
+ var i;
1970
+
1971
+ if (this === target && start < targetStart && targetStart < end) {
1972
+ // descending copy from end
1973
+ for (i = len - 1; i >= 0; --i) {
1974
+ target[i + targetStart] = this[i + start];
1975
+ }
1976
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
1977
+ // ascending copy from start
1978
+ for (i = 0; i < len; ++i) {
1979
+ target[i + targetStart] = this[i + start];
1980
+ }
1981
+ } else {
1982
+ Uint8Array.prototype.set.call(
1983
+ target,
1984
+ this.subarray(start, start + len),
1985
+ targetStart
1986
+ );
1987
+ }
1988
+
1989
+ return len
1990
+ };
1991
+
1992
+ // Usage:
1993
+ // buffer.fill(number[, offset[, end]])
1994
+ // buffer.fill(buffer[, offset[, end]])
1995
+ // buffer.fill(string[, offset[, end]][, encoding])
1996
+ Buffer.prototype.fill = function fill (val, start, end, encoding) {
1997
+ // Handle string cases:
1998
+ if (typeof val === 'string') {
1999
+ if (typeof start === 'string') {
2000
+ encoding = start;
2001
+ start = 0;
2002
+ end = this.length;
2003
+ } else if (typeof end === 'string') {
2004
+ encoding = end;
2005
+ end = this.length;
2006
+ }
2007
+ if (val.length === 1) {
2008
+ var code = val.charCodeAt(0);
2009
+ if (code < 256) {
2010
+ val = code;
2011
+ }
2012
+ }
2013
+ if (encoding !== undefined && typeof encoding !== 'string') {
2014
+ throw new TypeError('encoding must be a string')
2015
+ }
2016
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
2017
+ throw new TypeError('Unknown encoding: ' + encoding)
2018
+ }
2019
+ } else if (typeof val === 'number') {
2020
+ val = val & 255;
2021
+ }
2022
+
2023
+ // Invalid ranges are not set to a default, so can range check early.
2024
+ if (start < 0 || this.length < start || this.length < end) {
2025
+ throw new RangeError('Out of range index')
2026
+ }
2027
+
2028
+ if (end <= start) {
2029
+ return this
2030
+ }
2031
+
2032
+ start = start >>> 0;
2033
+ end = end === undefined ? this.length : end >>> 0;
2034
+
2035
+ if (!val) val = 0;
2036
+
2037
+ var i;
2038
+ if (typeof val === 'number') {
2039
+ for (i = start; i < end; ++i) {
2040
+ this[i] = val;
2041
+ }
2042
+ } else {
2043
+ var bytes = internalIsBuffer(val)
2044
+ ? val
2045
+ : utf8ToBytes(new Buffer(val, encoding).toString());
2046
+ var len = bytes.length;
2047
+ for (i = 0; i < end - start; ++i) {
2048
+ this[i + start] = bytes[i % len];
2049
+ }
2050
+ }
2051
+
2052
+ return this
2053
+ };
2054
+
2055
+ // HELPER FUNCTIONS
2056
+ // ================
2057
+
2058
+ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
2059
+
2060
+ function base64clean (str) {
2061
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
2062
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '');
2063
+ // Node converts strings with length < 2 to ''
2064
+ if (str.length < 2) return ''
2065
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
2066
+ while (str.length % 4 !== 0) {
2067
+ str = str + '=';
2068
+ }
2069
+ return str
2070
+ }
2071
+
2072
+ function stringtrim (str) {
2073
+ if (str.trim) return str.trim()
2074
+ return str.replace(/^\s+|\s+$/g, '')
2075
+ }
2076
+
2077
+ function toHex (n) {
2078
+ if (n < 16) return '0' + n.toString(16)
2079
+ return n.toString(16)
2080
+ }
2081
+
2082
+ function utf8ToBytes (string, units) {
2083
+ units = units || Infinity;
2084
+ var codePoint;
2085
+ var length = string.length;
2086
+ var leadSurrogate = null;
2087
+ var bytes = [];
2088
+
2089
+ for (var i = 0; i < length; ++i) {
2090
+ codePoint = string.charCodeAt(i);
2091
+
2092
+ // is surrogate component
2093
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
2094
+ // last char was a lead
2095
+ if (!leadSurrogate) {
2096
+ // no lead yet
2097
+ if (codePoint > 0xDBFF) {
2098
+ // unexpected trail
2099
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2100
+ continue
2101
+ } else if (i + 1 === length) {
2102
+ // unpaired lead
2103
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2104
+ continue
2105
+ }
2106
+
2107
+ // valid lead
2108
+ leadSurrogate = codePoint;
2109
+
2110
+ continue
2111
+ }
2112
+
2113
+ // 2 leads in a row
2114
+ if (codePoint < 0xDC00) {
2115
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2116
+ leadSurrogate = codePoint;
2117
+ continue
2118
+ }
2119
+
2120
+ // valid surrogate pair
2121
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
2122
+ } else if (leadSurrogate) {
2123
+ // valid bmp char, but last char was a lead
2124
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
2125
+ }
2126
+
2127
+ leadSurrogate = null;
2128
+
2129
+ // encode utf8
2130
+ if (codePoint < 0x80) {
2131
+ if ((units -= 1) < 0) break
2132
+ bytes.push(codePoint);
2133
+ } else if (codePoint < 0x800) {
2134
+ if ((units -= 2) < 0) break
2135
+ bytes.push(
2136
+ codePoint >> 0x6 | 0xC0,
2137
+ codePoint & 0x3F | 0x80
2138
+ );
2139
+ } else if (codePoint < 0x10000) {
2140
+ if ((units -= 3) < 0) break
2141
+ bytes.push(
2142
+ codePoint >> 0xC | 0xE0,
2143
+ codePoint >> 0x6 & 0x3F | 0x80,
2144
+ codePoint & 0x3F | 0x80
2145
+ );
2146
+ } else if (codePoint < 0x110000) {
2147
+ if ((units -= 4) < 0) break
2148
+ bytes.push(
2149
+ codePoint >> 0x12 | 0xF0,
2150
+ codePoint >> 0xC & 0x3F | 0x80,
2151
+ codePoint >> 0x6 & 0x3F | 0x80,
2152
+ codePoint & 0x3F | 0x80
2153
+ );
2154
+ } else {
2155
+ throw new Error('Invalid code point')
2156
+ }
2157
+ }
2158
+
2159
+ return bytes
2160
+ }
2161
+
2162
+ function asciiToBytes (str) {
2163
+ var byteArray = [];
2164
+ for (var i = 0; i < str.length; ++i) {
2165
+ // Node's code seems to be doing this and not & 0x7F..
2166
+ byteArray.push(str.charCodeAt(i) & 0xFF);
2167
+ }
2168
+ return byteArray
2169
+ }
2170
+
2171
+ function utf16leToBytes (str, units) {
2172
+ var c, hi, lo;
2173
+ var byteArray = [];
2174
+ for (var i = 0; i < str.length; ++i) {
2175
+ if ((units -= 2) < 0) break
2176
+
2177
+ c = str.charCodeAt(i);
2178
+ hi = c >> 8;
2179
+ lo = c % 256;
2180
+ byteArray.push(lo);
2181
+ byteArray.push(hi);
2182
+ }
2183
+
2184
+ return byteArray
2185
+ }
2186
+
2187
+
2188
+ function base64ToBytes (str) {
2189
+ return toByteArray(base64clean(str))
2190
+ }
2191
+
2192
+ function blitBuffer (src, dst, offset, length) {
2193
+ for (var i = 0; i < length; ++i) {
2194
+ if ((i + offset >= dst.length) || (i >= src.length)) break
2195
+ dst[i + offset] = src[i];
2196
+ }
2197
+ return i
2198
+ }
2199
+
2200
+ function isnan (val) {
2201
+ return val !== val // eslint-disable-line no-self-compare
2202
+ }
2203
+
2204
+
2205
+ // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
2206
+ // The _isBuffer check is for Safari 5-7 support, because it's missing
2207
+ // Object.prototype.constructor. Remove this eventually
2208
+ function isBuffer(obj) {
2209
+ return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
2210
+ }
2211
+
2212
+ function isFastBuffer (obj) {
2213
+ return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
2214
+ }
2215
+
2216
+ // For Node v0.10 support. Remove this eventually.
2217
+ function isSlowBuffer (obj) {
2218
+ return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
2219
+ }
2220
+
2221
+ /*
2222
+ * Shared base64 decode helper for generated decode data.
2223
+ * Assumes global atob is available.
244
2224
  */
245
- function replaceCodePoint(codePoint) {
246
- var _a;
247
- if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
248
- return 0xfffd;
2225
+ function decodeBase64(input) {
2226
+ const binary =
2227
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2228
+ typeof atob === "function"
2229
+ ? // Browser (and Node >=16)
2230
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2231
+ atob(input)
2232
+ : // Older Node versions (<16)
2233
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
2234
+ typeof Buffer.from === "function"
2235
+ ? // eslint-disable-next-line n/no-unsupported-features/node-builtins
2236
+ Buffer.from(input, "base64").toString("binary")
2237
+ : // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
2238
+ new Buffer(input, "base64").toString("binary");
2239
+ const evenLength = binary.length & -2; // Round down to even length
2240
+ const out = new Uint16Array(evenLength / 2);
2241
+ for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
2242
+ const lo = binary.charCodeAt(index);
2243
+ const hi = binary.charCodeAt(index + 1);
2244
+ out[outIndex++] = lo | (hi << 8);
249
2245
  }
250
- return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
2246
+ return out;
251
2247
  }
252
2248
 
2249
+ // Generated using scripts/write-decode-map.ts
2250
+ const htmlDecodeTree = /* #__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/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");
2251
+
2252
+ /**
2253
+ * Bit flags & masks for the binary trie encoding used for entity decoding.
2254
+ *
2255
+ * Bit layout (16 bits total):
2256
+ * 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
2257
+ * 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
2258
+ * If valueLength==0: compact run flag.
2259
+ * 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
2260
+ * 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
2261
+ */
2262
+ var BinTrieFlags;
2263
+ (function (BinTrieFlags) {
2264
+ BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
2265
+ BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
2266
+ BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
2267
+ BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
2268
+ })(BinTrieFlags || (BinTrieFlags = {}));
2269
+
253
2270
  var CharCodes;
254
2271
  (function (CharCodes) {
255
2272
  CharCodes[CharCodes["NUM"] = 35] = "NUM";
@@ -266,13 +2283,7 @@ var CharCodes;
266
2283
  CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
267
2284
  })(CharCodes || (CharCodes = {}));
268
2285
  /** Bit that needs to be set to convert an upper case ASCII character to lower case */
269
- const TO_LOWER_BIT = 0b100000;
270
- var BinTrieFlags;
271
- (function (BinTrieFlags) {
272
- BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
273
- BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
274
- BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
275
- })(BinTrieFlags || (BinTrieFlags = {}));
2286
+ const TO_LOWER_BIT = 32;
276
2287
  function isNumber(code) {
277
2288
  return code >= CharCodes.ZERO && code <= CharCodes.NINE;
278
2289
  }
@@ -317,6 +2328,7 @@ var DecodingMode;
317
2328
  class EntityDecoder {
318
2329
  constructor(
319
2330
  /** The tree used to decode entities. */
2331
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
320
2332
  decodeTree,
321
2333
  /**
322
2334
  * The function that is called when a codepoint is decoded.
@@ -367,32 +2379,32 @@ class EntityDecoder {
367
2379
  * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
368
2380
  * entity is incomplete, and resume when the next string is written.
369
2381
  *
370
- * @param string The string containing the entity (or a continuation of the entity).
2382
+ * @param input The string containing the entity (or a continuation of the entity).
371
2383
  * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
372
2384
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
373
2385
  */
374
- write(str, offset) {
2386
+ write(input, offset) {
375
2387
  switch (this.state) {
376
2388
  case EntityDecoderState.EntityStart: {
377
- if (str.charCodeAt(offset) === CharCodes.NUM) {
2389
+ if (input.charCodeAt(offset) === CharCodes.NUM) {
378
2390
  this.state = EntityDecoderState.NumericStart;
379
2391
  this.consumed += 1;
380
- return this.stateNumericStart(str, offset + 1);
2392
+ return this.stateNumericStart(input, offset + 1);
381
2393
  }
382
2394
  this.state = EntityDecoderState.NamedEntity;
383
- return this.stateNamedEntity(str, offset);
2395
+ return this.stateNamedEntity(input, offset);
384
2396
  }
385
2397
  case EntityDecoderState.NumericStart: {
386
- return this.stateNumericStart(str, offset);
2398
+ return this.stateNumericStart(input, offset);
387
2399
  }
388
2400
  case EntityDecoderState.NumericDecimal: {
389
- return this.stateNumericDecimal(str, offset);
2401
+ return this.stateNumericDecimal(input, offset);
390
2402
  }
391
2403
  case EntityDecoderState.NumericHex: {
392
- return this.stateNumericHex(str, offset);
2404
+ return this.stateNumericHex(input, offset);
393
2405
  }
394
2406
  case EntityDecoderState.NamedEntity: {
395
- return this.stateNamedEntity(str, offset);
2407
+ return this.stateNamedEntity(input, offset);
396
2408
  }
397
2409
  }
398
2410
  }
@@ -401,78 +2413,71 @@ class EntityDecoder {
401
2413
  *
402
2414
  * Equivalent to the `Numeric character reference state` in the HTML spec.
403
2415
  *
404
- * @param str The string containing the entity (or a continuation of the entity).
2416
+ * @param input The string containing the entity (or a continuation of the entity).
405
2417
  * @param offset The current offset.
406
2418
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
407
2419
  */
408
- stateNumericStart(str, offset) {
409
- if (offset >= str.length) {
2420
+ stateNumericStart(input, offset) {
2421
+ if (offset >= input.length) {
410
2422
  return -1;
411
2423
  }
412
- if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
2424
+ if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
413
2425
  this.state = EntityDecoderState.NumericHex;
414
2426
  this.consumed += 1;
415
- return this.stateNumericHex(str, offset + 1);
2427
+ return this.stateNumericHex(input, offset + 1);
416
2428
  }
417
2429
  this.state = EntityDecoderState.NumericDecimal;
418
- return this.stateNumericDecimal(str, offset);
419
- }
420
- addToNumericResult(str, start, end, base) {
421
- if (start !== end) {
422
- const digitCount = end - start;
423
- this.result =
424
- this.result * Math.pow(base, digitCount) +
425
- parseInt(str.substr(start, digitCount), base);
426
- this.consumed += digitCount;
427
- }
2430
+ return this.stateNumericDecimal(input, offset);
428
2431
  }
429
2432
  /**
430
2433
  * Parses a hexadecimal numeric entity.
431
2434
  *
432
2435
  * Equivalent to the `Hexademical character reference state` in the HTML spec.
433
2436
  *
434
- * @param str The string containing the entity (or a continuation of the entity).
2437
+ * @param input The string containing the entity (or a continuation of the entity).
435
2438
  * @param offset The current offset.
436
2439
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
437
2440
  */
438
- stateNumericHex(str, offset) {
439
- const startIdx = offset;
440
- while (offset < str.length) {
441
- const char = str.charCodeAt(offset);
2441
+ stateNumericHex(input, offset) {
2442
+ while (offset < input.length) {
2443
+ const char = input.charCodeAt(offset);
442
2444
  if (isNumber(char) || isHexadecimalCharacter(char)) {
443
- offset += 1;
2445
+ // Convert hex digit to value (0-15); 'a'/'A' -> 10.
2446
+ const digit = char <= CharCodes.NINE
2447
+ ? char - CharCodes.ZERO
2448
+ : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
2449
+ this.result = this.result * 16 + digit;
2450
+ this.consumed++;
2451
+ offset++;
444
2452
  }
445
2453
  else {
446
- this.addToNumericResult(str, startIdx, offset, 16);
447
2454
  return this.emitNumericEntity(char, 3);
448
2455
  }
449
2456
  }
450
- this.addToNumericResult(str, startIdx, offset, 16);
451
- return -1;
2457
+ return -1; // Incomplete entity
452
2458
  }
453
2459
  /**
454
2460
  * Parses a decimal numeric entity.
455
2461
  *
456
2462
  * Equivalent to the `Decimal character reference state` in the HTML spec.
457
2463
  *
458
- * @param str The string containing the entity (or a continuation of the entity).
2464
+ * @param input The string containing the entity (or a continuation of the entity).
459
2465
  * @param offset The current offset.
460
2466
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
461
2467
  */
462
- stateNumericDecimal(str, offset) {
463
- const startIdx = offset;
464
- while (offset < str.length) {
465
- const char = str.charCodeAt(offset);
2468
+ stateNumericDecimal(input, offset) {
2469
+ while (offset < input.length) {
2470
+ const char = input.charCodeAt(offset);
466
2471
  if (isNumber(char)) {
467
- offset += 1;
2472
+ this.result = this.result * 10 + (char - CharCodes.ZERO);
2473
+ this.consumed++;
2474
+ offset++;
468
2475
  }
469
2476
  else {
470
- this.addToNumericResult(str, startIdx, offset, 10);
471
2477
  return this.emitNumericEntity(char, 2);
472
2478
  }
473
2479
  }
474
- this.addToNumericResult(str, startIdx, offset, 10);
475
- return -1;
2480
+ return -1; // Incomplete entity
476
2481
  }
477
2482
  /**
478
2483
  * Validate and emit a numeric entity.
@@ -515,17 +2520,74 @@ class EntityDecoder {
515
2520
  *
516
2521
  * Equivalent to the `Named character reference state` in the HTML spec.
517
2522
  *
518
- * @param str The string containing the entity (or a continuation of the entity).
2523
+ * @param input The string containing the entity (or a continuation of the entity).
519
2524
  * @param offset The current offset.
520
2525
  * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
521
2526
  */
522
- stateNamedEntity(str, offset) {
2527
+ stateNamedEntity(input, offset) {
523
2528
  const { decodeTree } = this;
524
2529
  let current = decodeTree[this.treeIndex];
525
- // The mask is the number of bytes of the value, including the current byte.
2530
+ // The length is the number of bytes of the value, including the current byte.
526
2531
  let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
527
- for (; offset < str.length; offset++, this.excess++) {
528
- const char = str.charCodeAt(offset);
2532
+ while (offset < input.length) {
2533
+ // Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
2534
+ if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
2535
+ const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
2536
+ const firstChar = current & BinTrieFlags.JUMP_TABLE;
2537
+ // Fast-fail if we don't have enough remaining input for the full run (incomplete entity)
2538
+ if (offset + runLength > input.length)
2539
+ return -1;
2540
+ // Verify first char
2541
+ if (input.charCodeAt(offset) !== firstChar) {
2542
+ return this.result === 0
2543
+ ? 0
2544
+ : this.emitNotTerminatedNamedEntity();
2545
+ }
2546
+ offset++;
2547
+ this.excess++;
2548
+ // Remaining characters after the first
2549
+ const remaining = runLength - 1;
2550
+ // Iterate over packed 2-char words
2551
+ for (let runPos = 1; runPos < runLength; runPos += 2) {
2552
+ const packedWord = decodeTree[this.treeIndex + 1 + ((runPos - 1) >> 1)];
2553
+ const low = packedWord & 0xff;
2554
+ if (input.charCodeAt(offset) !== low) {
2555
+ return this.result === 0
2556
+ ? 0
2557
+ : this.emitNotTerminatedNamedEntity();
2558
+ }
2559
+ offset++;
2560
+ this.excess++;
2561
+ const high = (packedWord >> 8) & 0xff;
2562
+ if (runPos + 1 < runLength) {
2563
+ if (input.charCodeAt(offset) !== high) {
2564
+ return this.result === 0
2565
+ ? 0
2566
+ : this.emitNotTerminatedNamedEntity();
2567
+ }
2568
+ offset++;
2569
+ this.excess++;
2570
+ }
2571
+ }
2572
+ this.treeIndex += 1 + ((remaining + 1) >> 1);
2573
+ current = decodeTree[this.treeIndex];
2574
+ valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
2575
+ }
2576
+ if (offset >= input.length)
2577
+ break;
2578
+ const char = input.charCodeAt(offset);
2579
+ /*
2580
+ * Implicit semicolon handling for nodes that require a semicolon but
2581
+ * don't have an explicit ';' branch stored in the trie. If we have
2582
+ * a value on the current node, it requires a semicolon, and the
2583
+ * current input character is a semicolon, emit the entity using the
2584
+ * current node (without descending further).
2585
+ */
2586
+ if (char === CharCodes.SEMI &&
2587
+ valueLength !== 0 &&
2588
+ (current & BinTrieFlags.FLAG13) !== 0) {
2589
+ return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
2590
+ }
529
2591
  this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
530
2592
  if (this.treeIndex < 0) {
531
2593
  return this.result === 0 ||
@@ -547,12 +2609,16 @@ class EntityDecoder {
547
2609
  return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
548
2610
  }
549
2611
  // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
550
- if (this.decodeMode !== DecodingMode.Strict) {
2612
+ if (this.decodeMode !== DecodingMode.Strict &&
2613
+ (current & BinTrieFlags.FLAG13) === 0) {
551
2614
  this.result = this.treeIndex;
552
2615
  this.consumed += this.excess;
553
2616
  this.excess = 0;
554
2617
  }
555
2618
  }
2619
+ // Increment offset & excess for next iteration
2620
+ offset++;
2621
+ this.excess++;
556
2622
  }
557
2623
  return -1;
558
2624
  }
@@ -581,7 +2647,8 @@ class EntityDecoder {
581
2647
  emitNamedEntityData(result, valueLength, consumed) {
582
2648
  const { decodeTree } = this;
583
2649
  this.emitCodePoint(valueLength === 1
584
- ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH
2650
+ ? decodeTree[result] &
2651
+ ~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
585
2652
  : decodeTree[result + 1], consumed);
586
2653
  if (valueLength === 3) {
587
2654
  // For multi-byte values, we need to emit the second byte.
@@ -632,28 +2699,28 @@ class EntityDecoder {
632
2699
  * @returns A function that decodes entities in a string.
633
2700
  */
634
2701
  function getDecoder(decodeTree) {
635
- let ret = "";
636
- const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));
637
- return function decodeWithTrie(str, decodeMode) {
2702
+ let returnValue = "";
2703
+ const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
2704
+ return function decodeWithTrie(input, decodeMode) {
638
2705
  let lastIndex = 0;
639
2706
  let offset = 0;
640
- while ((offset = str.indexOf("&", offset)) >= 0) {
641
- ret += str.slice(lastIndex, offset);
2707
+ while ((offset = input.indexOf("&", offset)) >= 0) {
2708
+ returnValue += input.slice(lastIndex, offset);
642
2709
  decoder.startEntity(decodeMode);
643
- const len = decoder.write(str,
2710
+ const length = decoder.write(input,
644
2711
  // Skip the "&"
645
2712
  offset + 1);
646
- if (len < 0) {
2713
+ if (length < 0) {
647
2714
  lastIndex = offset + decoder.end();
648
2715
  break;
649
2716
  }
650
- lastIndex = offset + len;
651
- // If `len` is 0, skip the current `&` and continue.
652
- offset = len === 0 ? lastIndex + 1 : lastIndex;
2717
+ lastIndex = offset + length;
2718
+ // If `length` is 0, skip the current `&` and continue.
2719
+ offset = length === 0 ? lastIndex + 1 : lastIndex;
653
2720
  }
654
- const result = ret + str.slice(lastIndex);
2721
+ const result = returnValue + input.slice(lastIndex);
655
2722
  // Make sure we don't keep a reference to the final string.
656
- ret = "";
2723
+ returnValue = "";
657
2724
  return result;
658
2725
  };
659
2726
  }
@@ -667,50 +2734,55 @@ function getDecoder(decodeTree) {
667
2734
  * @param char The current character.
668
2735
  * @returns The index of the next node, or -1 if no branch is taken.
669
2736
  */
670
- function determineBranch(decodeTree, current, nodeIdx, char) {
2737
+ function determineBranch(decodeTree, current, nodeIndex, char) {
671
2738
  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
672
2739
  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
673
2740
  // Case 1: Single branch encoded in jump offset
674
2741
  if (branchCount === 0) {
675
- return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
2742
+ return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
676
2743
  }
677
2744
  // Case 2: Multiple branches encoded in jump table
678
2745
  if (jumpOffset) {
679
2746
  const value = char - jumpOffset;
680
2747
  return value < 0 || value >= branchCount
681
2748
  ? -1
682
- : decodeTree[nodeIdx + value] - 1;
2749
+ : decodeTree[nodeIndex + value] - 1;
683
2750
  }
684
- // Case 3: Multiple branches encoded in dictionary
685
- // Binary search for the character.
686
- let lo = nodeIdx;
687
- let hi = lo + branchCount - 1;
2751
+ // Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
2752
+ const packedKeySlots = (branchCount + 1) >> 1;
2753
+ /*
2754
+ * Treat packed keys as a virtual sorted array of length `branchCount`.
2755
+ * Key(i) = low byte for even i, high byte for odd i in slot i>>1.
2756
+ */
2757
+ let lo = 0;
2758
+ let hi = branchCount - 1;
688
2759
  while (lo <= hi) {
689
2760
  const mid = (lo + hi) >>> 1;
690
- const midVal = decodeTree[mid];
691
- if (midVal < char) {
2761
+ const slot = mid >> 1;
2762
+ const packed = decodeTree[nodeIndex + slot];
2763
+ const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
2764
+ if (midKey < char) {
692
2765
  lo = mid + 1;
693
2766
  }
694
- else if (midVal > char) {
2767
+ else if (midKey > char) {
695
2768
  hi = mid - 1;
696
2769
  }
697
2770
  else {
698
- return decodeTree[mid + branchCount];
2771
+ return decodeTree[nodeIndex + packedKeySlots + mid];
699
2772
  }
700
2773
  }
701
2774
  return -1;
702
2775
  }
703
- const htmlDecoder = getDecoder(htmlDecodeTree);
704
- getDecoder(xmlDecodeTree);
2776
+ const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);
705
2777
  /**
706
2778
  * Decodes an HTML string.
707
2779
  *
708
- * @param str The string to decode.
2780
+ * @param htmlString The string to decode.
709
2781
  * @param mode The decoding mode.
710
2782
  * @returns The decoded string.
711
2783
  */
712
- function decodeHTML(str, mode = DecodingMode.Legacy) {
713
- return htmlDecoder(str, mode);
2784
+ function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
2785
+ return htmlDecoder(htmlString, mode);
714
2786
  }
715
2787
 
716
2788
  const defaultDelimitersOpen = new Uint8Array([123, 123]);
@@ -820,14 +2892,28 @@ class Tokenizer {
820
2892
  getPos(index) {
821
2893
  let line = 1;
822
2894
  let column = index + 1;
823
- for (let i = this.newlines.length - 1; i >= 0; i--) {
824
- const newlineIndex = this.newlines[i];
825
- if (index > newlineIndex) {
826
- line = i + 2;
827
- column = index - newlineIndex;
828
- break;
2895
+ const length = this.newlines.length;
2896
+ let j = -1;
2897
+ if (length > 100) {
2898
+ let l = -1;
2899
+ let r = length;
2900
+ while (l + 1 < r) {
2901
+ const m = l + r >>> 1;
2902
+ this.newlines[m] < index ? l = m : r = m;
2903
+ }
2904
+ j = l;
2905
+ } else {
2906
+ for (let i = length - 1; i >= 0; i--) {
2907
+ if (index > this.newlines[i]) {
2908
+ j = i;
2909
+ break;
2910
+ }
829
2911
  }
830
2912
  }
2913
+ if (j >= 0) {
2914
+ line = j + 2;
2915
+ column = index - this.newlines[j];
2916
+ }
831
2917
  return {
832
2918
  column,
833
2919
  line,
@@ -1631,7 +3717,7 @@ const errorMessages = {
1631
3717
  [32]: `v-for has invalid expression.`,
1632
3718
  [33]: `<template v-for> key should be placed on the <template> tag.`,
1633
3719
  [34]: `v-bind is missing expression.`,
1634
- [52]: `v-bind with same-name shorthand only allows static argument.`,
3720
+ [53]: `v-bind with same-name shorthand only allows static argument.`,
1635
3721
  [35]: `v-on is missing expression.`,
1636
3722
  [36]: `Unexpected custom directive on <slot> outlet.`,
1637
3723
  [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
@@ -1643,16 +3729,17 @@ const errorMessages = {
1643
3729
  [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
1644
3730
  [44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
1645
3731
  Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
1646
- [45]: `Error parsing JavaScript expression: `,
1647
- [46]: `<KeepAlive> expects exactly one child component.`,
1648
- [51]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
3732
+ [45]: `v-model cannot be used on a const binding because it is not writable.`,
3733
+ [46]: `Error parsing JavaScript expression: `,
3734
+ [47]: `<KeepAlive> expects exactly one child component.`,
3735
+ [52]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
1649
3736
  // generic errors
1650
- [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
1651
- [48]: `ES module mode is not supported in this build of compiler.`,
1652
- [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
1653
- [50]: `"scopeId" option is only supported in module mode.`,
3737
+ [48]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
3738
+ [49]: `ES module mode is not supported in this build of compiler.`,
3739
+ [50]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
3740
+ [51]: `"scopeId" option is only supported in module mode.`,
1654
3741
  // just to fulfill types
1655
- [53]: ``
3742
+ [54]: ``
1656
3743
  };
1657
3744
 
1658
3745
  var lib = {};
@@ -17085,7 +19172,7 @@ function toValidAssetId(name, type) {
17085
19172
  })}`;
17086
19173
  }
17087
19174
  function filterNonCommentChildren(node) {
17088
- return node.children.filter((n) => n.type !== 3);
19175
+ return node.children.filter((n) => !isCommentOrWhitespace(n));
17089
19176
  }
17090
19177
  function hasSingleChild(node) {
17091
19178
  return filterNonCommentChildren(node).length === 1;
@@ -17746,7 +19833,7 @@ function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0
17746
19833
  }
17747
19834
  } catch (e) {
17748
19835
  exp.ast = false;
17749
- emitError(45, loc.start.offset, e.message);
19836
+ emitError(46, loc.start.offset, e.message);
17750
19837
  }
17751
19838
  }
17752
19839
  return exp;
@@ -18046,7 +20133,7 @@ var hasRequiredUtil;
18046
20133
  function requireUtil () {
18047
20134
  if (hasRequiredUtil) return util;
18048
20135
  hasRequiredUtil = 1;
18049
- (function (exports) {
20136
+ (function (exports$1) {
18050
20137
  /*
18051
20138
  * Copyright 2011 Mozilla Foundation and contributors
18052
20139
  * Licensed under the New BSD license. See LICENSE or:
@@ -18072,7 +20159,7 @@ function requireUtil () {
18072
20159
  throw new Error('"' + aName + '" is a required argument.');
18073
20160
  }
18074
20161
  }
18075
- exports.getArg = getArg;
20162
+ exports$1.getArg = getArg;
18076
20163
 
18077
20164
  var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
18078
20165
  var dataUrlRegexp = /^data:.+\,.+$/;
@@ -18090,7 +20177,7 @@ function requireUtil () {
18090
20177
  path: match[5]
18091
20178
  };
18092
20179
  }
18093
- exports.urlParse = urlParse;
20180
+ exports$1.urlParse = urlParse;
18094
20181
 
18095
20182
  function urlGenerate(aParsedUrl) {
18096
20183
  var url = '';
@@ -18112,7 +20199,7 @@ function requireUtil () {
18112
20199
  }
18113
20200
  return url;
18114
20201
  }
18115
- exports.urlGenerate = urlGenerate;
20202
+ exports$1.urlGenerate = urlGenerate;
18116
20203
 
18117
20204
  var MAX_CACHED_INPUTS = 32;
18118
20205
 
@@ -18171,7 +20258,7 @@ function requireUtil () {
18171
20258
  }
18172
20259
  path = url.path;
18173
20260
  }
18174
- var isAbsolute = exports.isAbsolute(path);
20261
+ var isAbsolute = exports$1.isAbsolute(path);
18175
20262
  // Split the path into parts between `/` characters. This is much faster than
18176
20263
  // using `.split(/\/+/g)`.
18177
20264
  var parts = [];
@@ -18222,7 +20309,7 @@ function requireUtil () {
18222
20309
  }
18223
20310
  return path;
18224
20311
  });
18225
- exports.normalize = normalize;
20312
+ exports$1.normalize = normalize;
18226
20313
 
18227
20314
  /**
18228
20315
  * Joins two paths/URLs.
@@ -18281,9 +20368,9 @@ function requireUtil () {
18281
20368
  }
18282
20369
  return joined;
18283
20370
  }
18284
- exports.join = join;
20371
+ exports$1.join = join;
18285
20372
 
18286
- exports.isAbsolute = function (aPath) {
20373
+ exports$1.isAbsolute = function (aPath) {
18287
20374
  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
18288
20375
  };
18289
20376
 
@@ -18325,7 +20412,7 @@ function requireUtil () {
18325
20412
  // Make sure we add a "../" for each component we removed from the root.
18326
20413
  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
18327
20414
  }
18328
- exports.relative = relative;
20415
+ exports$1.relative = relative;
18329
20416
 
18330
20417
  var supportsNullProto = (function () {
18331
20418
  var obj = Object.create(null);
@@ -18352,7 +20439,7 @@ function requireUtil () {
18352
20439
 
18353
20440
  return aStr;
18354
20441
  }
18355
- exports.toSetString = supportsNullProto ? identity : toSetString;
20442
+ exports$1.toSetString = supportsNullProto ? identity : toSetString;
18356
20443
 
18357
20444
  function fromSetString(aStr) {
18358
20445
  if (isProtoString(aStr)) {
@@ -18361,7 +20448,7 @@ function requireUtil () {
18361
20448
 
18362
20449
  return aStr;
18363
20450
  }
18364
- exports.fromSetString = supportsNullProto ? identity : fromSetString;
20451
+ exports$1.fromSetString = supportsNullProto ? identity : fromSetString;
18365
20452
 
18366
20453
  function isProtoString(s) {
18367
20454
  if (!s) {
@@ -18431,7 +20518,7 @@ function requireUtil () {
18431
20518
 
18432
20519
  return strcmp(mappingA.name, mappingB.name);
18433
20520
  }
18434
- exports.compareByOriginalPositions = compareByOriginalPositions;
20521
+ exports$1.compareByOriginalPositions = compareByOriginalPositions;
18435
20522
 
18436
20523
  function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
18437
20524
  var cmp;
@@ -18458,7 +20545,7 @@ function requireUtil () {
18458
20545
 
18459
20546
  return strcmp(mappingA.name, mappingB.name);
18460
20547
  }
18461
- exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
20548
+ exports$1.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
18462
20549
 
18463
20550
  /**
18464
20551
  * Comparator between two mappings with deflated source and name indices where
@@ -18497,7 +20584,7 @@ function requireUtil () {
18497
20584
 
18498
20585
  return strcmp(mappingA.name, mappingB.name);
18499
20586
  }
18500
- exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
20587
+ exports$1.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
18501
20588
 
18502
20589
  function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
18503
20590
  var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
@@ -18522,7 +20609,7 @@ function requireUtil () {
18522
20609
 
18523
20610
  return strcmp(mappingA.name, mappingB.name);
18524
20611
  }
18525
- exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
20612
+ exports$1.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
18526
20613
 
18527
20614
  function strcmp(aStr1, aStr2) {
18528
20615
  if (aStr1 === aStr2) {
@@ -18576,7 +20663,7 @@ function requireUtil () {
18576
20663
 
18577
20664
  return strcmp(mappingA.name, mappingB.name);
18578
20665
  }
18579
- exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
20666
+ exports$1.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
18580
20667
 
18581
20668
  /**
18582
20669
  * Strip any JSON XSSI avoidance prefix from the string (as documented
@@ -18586,7 +20673,7 @@ function requireUtil () {
18586
20673
  function parseSourceMapInput(str) {
18587
20674
  return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
18588
20675
  }
18589
- exports.parseSourceMapInput = parseSourceMapInput;
20676
+ exports$1.parseSourceMapInput = parseSourceMapInput;
18590
20677
 
18591
20678
  /**
18592
20679
  * Compute the URL of a source given the the source root, the source's
@@ -18639,7 +20726,7 @@ function requireUtil () {
18639
20726
 
18640
20727
  return normalize(sourceURL);
18641
20728
  }
18642
- exports.computeSourceURL = computeSourceURL;
20729
+ exports$1.computeSourceURL = computeSourceURL;
18643
20730
  } (util));
18644
20731
  return util;
18645
20732
  }
@@ -19330,15 +21417,15 @@ var hasRequiredBinarySearch;
19330
21417
  function requireBinarySearch () {
19331
21418
  if (hasRequiredBinarySearch) return binarySearch;
19332
21419
  hasRequiredBinarySearch = 1;
19333
- (function (exports) {
21420
+ (function (exports$1) {
19334
21421
  /*
19335
21422
  * Copyright 2011 Mozilla Foundation and contributors
19336
21423
  * Licensed under the New BSD license. See LICENSE or:
19337
21424
  * http://opensource.org/licenses/BSD-3-Clause
19338
21425
  */
19339
21426
 
19340
- exports.GREATEST_LOWER_BOUND = 1;
19341
- exports.LEAST_UPPER_BOUND = 2;
21427
+ exports$1.GREATEST_LOWER_BOUND = 1;
21428
+ exports$1.LEAST_UPPER_BOUND = 2;
19342
21429
 
19343
21430
  /**
19344
21431
  * Recursive implementation of binary search.
@@ -19378,7 +21465,7 @@ function requireBinarySearch () {
19378
21465
 
19379
21466
  // The exact needle element was not found in this haystack. Determine if
19380
21467
  // we are in termination case (3) or (2) and return the appropriate thing.
19381
- if (aBias == exports.LEAST_UPPER_BOUND) {
21468
+ if (aBias == exports$1.LEAST_UPPER_BOUND) {
19382
21469
  return aHigh < aHaystack.length ? aHigh : -1;
19383
21470
  } else {
19384
21471
  return mid;
@@ -19392,7 +21479,7 @@ function requireBinarySearch () {
19392
21479
  }
19393
21480
 
19394
21481
  // we are in termination case (3) or (2) and return the appropriate thing.
19395
- if (aBias == exports.LEAST_UPPER_BOUND) {
21482
+ if (aBias == exports$1.LEAST_UPPER_BOUND) {
19396
21483
  return mid;
19397
21484
  } else {
19398
21485
  return aLow < 0 ? -1 : aLow;
@@ -19418,13 +21505,13 @@ function requireBinarySearch () {
19418
21505
  * searching for, respectively, if the exact element cannot be found.
19419
21506
  * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
19420
21507
  */
19421
- exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
21508
+ exports$1.search = function search(aNeedle, aHaystack, aCompare, aBias) {
19422
21509
  if (aHaystack.length === 0) {
19423
21510
  return -1;
19424
21511
  }
19425
21512
 
19426
21513
  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
19427
- aCompare, aBias || exports.GREATEST_LOWER_BOUND);
21514
+ aCompare, aBias || exports$1.GREATEST_LOWER_BOUND);
19428
21515
  if (index < 0) {
19429
21516
  return -1;
19430
21517
  }
@@ -21229,26 +23316,26 @@ var sourceMapExports = /*@__PURE__*/ requireSourceMap();
21229
23316
 
21230
23317
  const isLiteralWhitelisted = /* @__PURE__ */ makeMap("true,false,null,this");
21231
23318
 
21232
- const V_MODEL_RADIO = Symbol(`vModelRadio` );
21233
- const V_MODEL_CHECKBOX = Symbol(
23319
+ const V_MODEL_RADIO = /* @__PURE__ */ Symbol(`vModelRadio` );
23320
+ const V_MODEL_CHECKBOX = /* @__PURE__ */ Symbol(
21234
23321
  `vModelCheckbox`
21235
23322
  );
21236
- const V_MODEL_TEXT = Symbol(`vModelText` );
21237
- const V_MODEL_SELECT = Symbol(
23323
+ const V_MODEL_TEXT = /* @__PURE__ */ Symbol(`vModelText` );
23324
+ const V_MODEL_SELECT = /* @__PURE__ */ Symbol(
21238
23325
  `vModelSelect`
21239
23326
  );
21240
- const V_MODEL_DYNAMIC = Symbol(
23327
+ const V_MODEL_DYNAMIC = /* @__PURE__ */ Symbol(
21241
23328
  `vModelDynamic`
21242
23329
  );
21243
- const V_ON_WITH_MODIFIERS = Symbol(
23330
+ const V_ON_WITH_MODIFIERS = /* @__PURE__ */ Symbol(
21244
23331
  `vOnModifiersGuard`
21245
23332
  );
21246
- const V_ON_WITH_KEYS = Symbol(
23333
+ const V_ON_WITH_KEYS = /* @__PURE__ */ Symbol(
21247
23334
  `vOnKeysGuard`
21248
23335
  );
21249
- const V_SHOW = Symbol(`vShow` );
21250
- const TRANSITION = Symbol(`Transition` );
21251
- const TRANSITION_GROUP = Symbol(
23336
+ const V_SHOW = /* @__PURE__ */ Symbol(`vShow` );
23337
+ const TRANSITION = /* @__PURE__ */ Symbol(`Transition` );
23338
+ const TRANSITION_GROUP = /* @__PURE__ */ Symbol(
21252
23339
  `TransitionGroup`
21253
23340
  );
21254
23341
  registerRuntimeHelpers({
@@ -21319,19 +23406,19 @@ function createDOMCompilerError(code, loc) {
21319
23406
  );
21320
23407
  }
21321
23408
  const DOMErrorMessages = {
21322
- [53]: `v-html is missing expression.`,
21323
- [54]: `v-html will override element children.`,
21324
- [55]: `v-text is missing expression.`,
21325
- [56]: `v-text will override element children.`,
21326
- [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
21327
- [58]: `v-model argument is not supported on plain elements.`,
21328
- [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
21329
- [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
21330
- [61]: `v-show is missing expression.`,
21331
- [62]: `<Transition> expects exactly one child element or component.`,
21332
- [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
23409
+ [54]: `v-html is missing expression.`,
23410
+ [55]: `v-html will override element children.`,
23411
+ [56]: `v-text is missing expression.`,
23412
+ [57]: `v-text will override element children.`,
23413
+ [58]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
23414
+ [59]: `v-model argument is not supported on plain elements.`,
23415
+ [60]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
23416
+ [61]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
23417
+ [62]: `v-show is missing expression.`,
23418
+ [63]: `<Transition> expects exactly one child element or component.`,
23419
+ [64]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
21333
23420
  // just to fulfill types
21334
- [64]: ``
23421
+ [65]: ``
21335
23422
  };
21336
23423
 
21337
23424
  const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
@@ -21387,7 +23474,7 @@ function postTransformTransition(node, onError, hasMultipleChildren = defaultHas
21387
23474
  }
21388
23475
  if (hasMultipleChildren(node)) {
21389
23476
  onError(
21390
- createDOMCompilerError(62, {
23477
+ createDOMCompilerError(63, {
21391
23478
  start: node.children[0].loc.start,
21392
23479
  end: node.children[node.children.length - 1].loc.end,
21393
23480
  source: ""
@@ -21874,7 +23961,7 @@ function transformNode(context) {
21874
23961
  for (const nodeTransform of nodeTransforms) {
21875
23962
  const onExit = nodeTransform(node, context);
21876
23963
  if (onExit) {
21877
- if (isArray(onExit)) {
23964
+ if (isArray$1(onExit)) {
21878
23965
  exitFns.push(...onExit);
21879
23966
  } else {
21880
23967
  exitFns.push(onExit);
@@ -21944,10 +24031,10 @@ const IMPORT_EXPR_RE = new RegExp(
21944
24031
  `${IMPORT_EXP_START}(.*?)${IMPORT_EXP_END}`,
21945
24032
  "g"
21946
24033
  );
21947
- const NEWLINE = Symbol(`newline` );
21948
- const LF = Symbol(`line feed` );
21949
- const INDENT_START = Symbol(`indent start` );
21950
- const INDENT_END = Symbol(`indent end` );
24034
+ const NEWLINE = /* @__PURE__ */ Symbol(`newline` );
24035
+ const LF = /* @__PURE__ */ Symbol(`line feed` );
24036
+ const INDENT_START = /* @__PURE__ */ Symbol(`indent start` );
24037
+ const INDENT_END = /* @__PURE__ */ Symbol(`indent end` );
21951
24038
  function buildCodeFragment(...frag) {
21952
24039
  const push = frag.push.bind(frag);
21953
24040
  const unshift = frag.unshift.bind(frag);
@@ -21971,7 +24058,7 @@ function genMulti([left, right, seg, placeholder], ...frags) {
21971
24058
  push(right);
21972
24059
  return frag;
21973
24060
  function push(fn) {
21974
- if (!isArray(fn)) fn = [fn];
24061
+ if (!isArray$1(fn)) fn = [fn];
21975
24062
  frag.push(...fn);
21976
24063
  }
21977
24064
  }
@@ -21988,7 +24075,7 @@ const DELIMITERS_OBJECT_NEWLINE = [
21988
24075
  [",", NEWLINE]
21989
24076
  ];
21990
24077
  function genCall(name, ...frags) {
21991
- const hasPlaceholder = isArray(name);
24078
+ const hasPlaceholder = isArray$1(name);
21992
24079
  const fnName = hasPlaceholder ? name[0] : name;
21993
24080
  const placeholder = hasPlaceholder ? name[1] : "null";
21994
24081
  return [fnName, ...genMulti(["(", ")", ", ", placeholder], ...frags)];
@@ -22658,7 +24745,7 @@ function genSetDynamicEvents(oper, context) {
22658
24745
  )
22659
24746
  ];
22660
24747
  }
22661
- function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, extraWrap = false) {
24748
+ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, asComponentProp = false, extraWrap = false) {
22662
24749
  let handlerExp = [];
22663
24750
  if (values) {
22664
24751
  values.forEach((value, index) => {
@@ -22666,7 +24753,7 @@ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] },
22666
24753
  if (value && value.content.trim()) {
22667
24754
  if (isMemberExpression$1(value, context.options)) {
22668
24755
  exp = genExpression(value, context);
22669
- if (!isConstantBinding(value, context) && !extraWrap) {
24756
+ if (!isConstantBinding(value, context) && !asComponentProp) {
22670
24757
  const isTSNode = value.ast && TS_NODE_TYPES.includes(value.ast.type);
22671
24758
  exp = [
22672
24759
  `e => `,
@@ -23196,7 +25283,7 @@ function genPropKey({ key: node, modifier, runtimeCamelize, handler, handlerModi
23196
25283
  const { helper } = context;
23197
25284
  const handlerModifierPostfix = handlerModifiers && handlerModifiers.options ? handlerModifiers.options.map(capitalize).join("") : "";
23198
25285
  if (node.isStatic) {
23199
- const keyName = (handler ? toHandlerKey(node.content) : node.content) + handlerModifierPostfix;
25286
+ const keyName = (handler ? toHandlerKey(camelize(node.content)) : node.content) + handlerModifierPostfix;
23200
25287
  return [
23201
25288
  [
23202
25289
  isSimpleIdentifier(keyName) ? keyName : JSON.stringify(keyName),
@@ -23449,7 +25536,7 @@ function genCreateComponent(operation, context) {
23449
25536
  const rawProps = context.withId(() => genRawProps(props, context), ids);
23450
25537
  const inlineHandlers = handlers.reduce(
23451
25538
  (acc, { name, value }) => {
23452
- const handler = genEventHandler(context, [value], void 0, false);
25539
+ const handler = genEventHandler(context, [value], void 0, false, false);
23453
25540
  return [...acc, `const ${name} = `, ...handler, NEWLINE];
23454
25541
  },
23455
25542
  []
@@ -23507,7 +25594,7 @@ function processInlineHandlers(props, context) {
23507
25594
  const ids = /* @__PURE__ */ Object.create(null);
23508
25595
  const handlers = [];
23509
25596
  const staticProps = props[0];
23510
- if (isArray(staticProps)) {
25597
+ if (isArray$1(staticProps)) {
23511
25598
  for (let i = 0; i < staticProps.length; i++) {
23512
25599
  const prop = staticProps[i];
23513
25600
  if (!prop.handler) continue;
@@ -23529,7 +25616,7 @@ function processInlineHandlers(props, context) {
23529
25616
  }
23530
25617
  function genRawProps(props, context) {
23531
25618
  const staticProps = props[0];
23532
- if (isArray(staticProps)) {
25619
+ if (isArray$1(staticProps)) {
23533
25620
  if (!staticProps.length && props.length === 1) {
23534
25621
  return;
23535
25622
  }
@@ -23543,7 +25630,89 @@ function genRawProps(props, context) {
23543
25630
  }
23544
25631
  }
23545
25632
  function genStaticProps(props, context, dynamicProps) {
23546
- const args = props.map((prop) => genProp(prop, context, true));
25633
+ const args = [];
25634
+ const handlerGroups = /* @__PURE__ */ new Map();
25635
+ const ensureHandlerGroup = (keyName, keyFrag) => {
25636
+ let group = handlerGroups.get(keyName);
25637
+ if (!group) {
25638
+ const index = args.length;
25639
+ args.push([]);
25640
+ group = { keyFrag, handlers: [], index };
25641
+ handlerGroups.set(keyName, group);
25642
+ }
25643
+ return group;
25644
+ };
25645
+ const addHandler = (keyName, keyFrag, handlerExp) => {
25646
+ ensureHandlerGroup(keyName, keyFrag).handlers.push(handlerExp);
25647
+ };
25648
+ const getStaticPropKeyName = (prop) => {
25649
+ if (!prop.key.isStatic) return;
25650
+ const handlerModifierPostfix = prop.handlerModifiers && prop.handlerModifiers.options ? prop.handlerModifiers.options.map((m) => m.charAt(0).toUpperCase() + m.slice(1)).join("") : "";
25651
+ const keyName = (prop.handler ? toHandlerKey(camelize(prop.key.content)) : prop.key.content) + handlerModifierPostfix;
25652
+ return keyName;
25653
+ };
25654
+ for (const prop of props) {
25655
+ if (prop.handler) {
25656
+ const keyName = getStaticPropKeyName(prop);
25657
+ if (!keyName) {
25658
+ args.push(genProp(prop, context, true));
25659
+ continue;
25660
+ }
25661
+ const keyFrag = genPropKey(prop, context);
25662
+ const hasModifiers = !!prop.handlerModifiers && (prop.handlerModifiers.keys.length > 0 || prop.handlerModifiers.nonKeys.length > 0);
25663
+ if (hasModifiers || prop.values.length <= 1) {
25664
+ const handlerExp = genEventHandler(
25665
+ context,
25666
+ prop.values,
25667
+ prop.handlerModifiers,
25668
+ true,
25669
+ false
25670
+ );
25671
+ addHandler(keyName, keyFrag, handlerExp);
25672
+ } else {
25673
+ for (const value of prop.values) {
25674
+ const handlerExp = genEventHandler(
25675
+ context,
25676
+ [value],
25677
+ prop.handlerModifiers,
25678
+ true,
25679
+ false
25680
+ );
25681
+ addHandler(keyName, keyFrag, handlerExp);
25682
+ }
25683
+ }
25684
+ continue;
25685
+ }
25686
+ args.push(genProp(prop, context, true));
25687
+ if (prop.model) {
25688
+ if (prop.key.isStatic) {
25689
+ const keyName = `onUpdate:${camelize(prop.key.content)}`;
25690
+ const keyFrag = [JSON.stringify(keyName)];
25691
+ addHandler(keyName, keyFrag, genModelHandler(prop.values[0], context));
25692
+ } else {
25693
+ const keyFrag = [
25694
+ '["onUpdate:" + ',
25695
+ ...genExpression(prop.key, context),
25696
+ "]"
25697
+ ];
25698
+ args.push([
25699
+ ...keyFrag,
25700
+ ": () => ",
25701
+ ...genModelHandler(prop.values[0], context)
25702
+ ]);
25703
+ }
25704
+ const { key, modelModifiers } = prop;
25705
+ if (modelModifiers && modelModifiers.length) {
25706
+ const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
25707
+ const modifiersVal = genDirectiveModifiers(modelModifiers);
25708
+ args.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
25709
+ }
25710
+ }
25711
+ }
25712
+ for (const group of handlerGroups.values()) {
25713
+ const handlerValue = group.handlers.length > 1 ? genMulti(DELIMITERS_ARRAY_NEWLINE, ...group.handlers) : group.handlers[0];
25714
+ args[group.index] = [...group.keyFrag, ": () => ", ...handlerValue];
25715
+ }
23547
25716
  if (dynamicProps) {
23548
25717
  args.push([`$: `, ...dynamicProps]);
23549
25718
  }
@@ -23557,17 +25726,52 @@ function genDynamicProps(props, context) {
23557
25726
  const frags = [];
23558
25727
  for (const p of props) {
23559
25728
  let expr;
23560
- if (isArray(p)) {
25729
+ if (isArray$1(p)) {
23561
25730
  if (p.length) {
23562
25731
  frags.push(genStaticProps(p, context));
23563
25732
  }
23564
25733
  continue;
23565
25734
  } else {
23566
- if (p.kind === 1)
23567
- expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
23568
- else {
25735
+ if (p.kind === 1) {
25736
+ if (p.model) {
25737
+ const entries = [genProp(p, context)];
25738
+ const updateKey = p.key.isStatic ? [
25739
+ JSON.stringify(`onUpdate:${camelize(p.key.content)}`)
25740
+ ] : [
25741
+ '["onUpdate:" + ',
25742
+ ...genExpression(p.key, context),
25743
+ "]"
25744
+ ];
25745
+ entries.push([
25746
+ ...updateKey,
25747
+ ": () => ",
25748
+ ...genModelHandler(p.values[0], context)
25749
+ ]);
25750
+ const { modelModifiers } = p;
25751
+ if (modelModifiers && modelModifiers.length) {
25752
+ const modifiersKey = p.key.isStatic ? [getModifierPropName(p.key.content)] : [
25753
+ "[",
25754
+ ...genExpression(p.key, context),
25755
+ ' + "Modifiers"]'
25756
+ ];
25757
+ const modifiersVal = genDirectiveModifiers(modelModifiers);
25758
+ entries.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
25759
+ }
25760
+ expr = genMulti(DELIMITERS_OBJECT_NEWLINE, ...entries);
25761
+ } else {
25762
+ expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
25763
+ }
25764
+ } else {
23569
25765
  expr = genExpression(p.value, context);
23570
- if (p.handler) expr = genCall(helper("toHandlers"), expr);
25766
+ if (p.handler)
25767
+ expr = genCall(
25768
+ helper("toHandlers"),
25769
+ expr,
25770
+ `false`,
25771
+ // preserveCaseIfNecessary: false, not needed for component
25772
+ `true`
25773
+ // wrap handler values in functions
25774
+ );
23571
25775
  }
23572
25776
  }
23573
25777
  frags.push(["() => (", ...expr, ")"]);
@@ -23585,23 +25789,11 @@ function genProp(prop, context, isStatic) {
23585
25789
  context,
23586
25790
  prop.values,
23587
25791
  prop.handlerModifiers,
25792
+ true,
23588
25793
  true
23589
- ) : isStatic ? ["() => (", ...values, ")"] : values,
23590
- ...prop.model ? [...genModelEvent(prop, context), ...genModelModifiers(prop, context)] : []
25794
+ ) : isStatic ? ["() => (", ...values, ")"] : values
23591
25795
  ];
23592
25796
  }
23593
- function genModelEvent(prop, context) {
23594
- const name = prop.key.isStatic ? [JSON.stringify(`onUpdate:${camelize(prop.key.content)}`)] : ['["onUpdate:" + ', ...genExpression(prop.key, context), "]"];
23595
- const handler = genModelHandler(prop.values[0], context);
23596
- return [",", NEWLINE, ...name, ": () => ", ...handler];
23597
- }
23598
- function genModelModifiers(prop, context) {
23599
- const { key, modelModifiers } = prop;
23600
- if (!modelModifiers || !modelModifiers.length) return [];
23601
- const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
23602
- const modifiersVal = genDirectiveModifiers(modelModifiers);
23603
- return [",", NEWLINE, ...modifiersKey, `: () => ({ ${modifiersVal} })`];
23604
- }
23605
25797
  function genRawSlots(slots, context) {
23606
25798
  if (!slots.length) return;
23607
25799
  const staticSlots = slots[0];
@@ -24040,7 +26232,13 @@ function genChildren(dynamic, context, pushBlock, from = `n${dynamic.id}`) {
24040
26232
  }
24041
26233
  } else {
24042
26234
  if (elementIndex === 0) {
24043
- pushBlock(...genCall(helper("child"), from, String(logicalIndex)));
26235
+ pushBlock(
26236
+ ...genCall(
26237
+ helper("child"),
26238
+ from,
26239
+ logicalIndex !== 0 ? String(logicalIndex) : void 0
26240
+ )
26241
+ );
24044
26242
  } else {
24045
26243
  let init = genCall(helper("child"), from);
24046
26244
  if (elementIndex === 1) {
@@ -24767,13 +26965,13 @@ const transformVHtml = (dir, node, context) => {
24767
26965
  let { exp, loc } = dir;
24768
26966
  if (!exp) {
24769
26967
  context.options.onError(
24770
- createDOMCompilerError(53, loc)
26968
+ createDOMCompilerError(54, loc)
24771
26969
  );
24772
26970
  exp = EMPTY_EXPRESSION;
24773
26971
  }
24774
26972
  if (node.children.length) {
24775
26973
  context.options.onError(
24776
- createDOMCompilerError(54, loc)
26974
+ createDOMCompilerError(55, loc)
24777
26975
  );
24778
26976
  context.childrenTemplate.length = 0;
24779
26977
  }
@@ -24789,13 +26987,13 @@ const transformVText = (dir, node, context) => {
24789
26987
  let { exp, loc } = dir;
24790
26988
  if (!exp) {
24791
26989
  context.options.onError(
24792
- createDOMCompilerError(55, loc)
26990
+ createDOMCompilerError(56, loc)
24793
26991
  );
24794
26992
  exp = EMPTY_EXPRESSION;
24795
26993
  }
24796
26994
  if (node.children.length) {
24797
26995
  context.options.onError(
24798
- createDOMCompilerError(56, loc)
26996
+ createDOMCompilerError(57, loc)
24799
26997
  );
24800
26998
  context.childrenTemplate.length = 0;
24801
26999
  }
@@ -24828,7 +27026,7 @@ function normalizeBindShorthand(arg, context) {
24828
27026
  if (arg.type !== 4 || !arg.isStatic) {
24829
27027
  context.options.onError(
24830
27028
  createCompilerError(
24831
- 52,
27029
+ 53,
24832
27030
  arg.loc
24833
27031
  )
24834
27032
  );
@@ -24942,7 +27140,7 @@ const transformVShow = (dir, node, context) => {
24942
27140
  const { exp, loc } = dir;
24943
27141
  if (!exp) {
24944
27142
  context.options.onError(
24945
- createDOMCompilerError(61, loc)
27143
+ createDOMCompilerError(62, loc)
24946
27144
  );
24947
27145
  return;
24948
27146
  }
@@ -25141,7 +27339,7 @@ const transformVModel = (dir, node, context) => {
25141
27339
  if (dir.arg)
25142
27340
  context.options.onError(
25143
27341
  createDOMCompilerError(
25144
- 58,
27342
+ 59,
25145
27343
  dir.arg.loc
25146
27344
  )
25147
27345
  );
@@ -25166,7 +27364,7 @@ const transformVModel = (dir, node, context) => {
25166
27364
  modelType = void 0;
25167
27365
  context.options.onError(
25168
27366
  createDOMCompilerError(
25169
- 59,
27367
+ 60,
25170
27368
  dir.loc
25171
27369
  )
25172
27370
  );
@@ -25189,7 +27387,7 @@ const transformVModel = (dir, node, context) => {
25189
27387
  } else {
25190
27388
  context.options.onError(
25191
27389
  createDOMCompilerError(
25192
- 57,
27390
+ 58,
25193
27391
  dir.loc
25194
27392
  )
25195
27393
  );
@@ -25208,7 +27406,7 @@ const transformVModel = (dir, node, context) => {
25208
27406
  if (value && isStaticArgOf(value.arg, "value")) {
25209
27407
  context.options.onError(
25210
27408
  createDOMCompilerError(
25211
- 60,
27409
+ 61,
25212
27410
  value.loc
25213
27411
  )
25214
27412
  );