{"version":3,"file":"DnRNJwPA.js","sources":["../../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../../node_modules/entities/lib/esm/decode.js","../../../../node_modules/html-void-elements/index.js","../../../../node_modules/zwitch/index.js","../../../../node_modules/stringify-entities/lib/core.js","../../../../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../../../../node_modules/stringify-entities/lib/util/to-decimal.js","../../../../node_modules/character-entities-legacy/index.js","../../../../node_modules/character-entities-html4/index.js","../../../../node_modules/stringify-entities/lib/constant/dangerous.js","../../../../node_modules/stringify-entities/lib/util/to-named.js","../../../../node_modules/stringify-entities/lib/util/format-smart.js","../../../../node_modules/stringify-entities/lib/util/format-basic.js","../../../../node_modules/stringify-entities/lib/index.js","../../../../node_modules/ccount/index.js","../../../../node_modules/comma-separated-tokens/index.js","../../../../node_modules/space-separated-tokens/index.js","../../../../node_modules/yaml/browser/dist/nodes/identity.js","../../../../node_modules/yaml/browser/dist/visit.js","../../../../node_modules/yaml/browser/dist/doc/directives.js","../../../../node_modules/yaml/browser/dist/doc/anchors.js","../../../../node_modules/yaml/browser/dist/doc/applyReviver.js","../../../../node_modules/yaml/browser/dist/nodes/toJS.js","../../../../node_modules/yaml/browser/dist/nodes/Node.js","../../../../node_modules/yaml/browser/dist/nodes/Alias.js","../../../../node_modules/yaml/browser/dist/nodes/Scalar.js","../../../../node_modules/yaml/browser/dist/doc/createNode.js","../../../../node_modules/yaml/browser/dist/nodes/Collection.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyComment.js","../../../../node_modules/yaml/browser/dist/stringify/foldFlowLines.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyString.js","../../../../node_modules/yaml/browser/dist/stringify/stringify.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyPair.js","../../../../node_modules/yaml/browser/dist/log.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js","../../../../node_modules/yaml/browser/dist/nodes/addPairToJSMap.js","../../../../node_modules/yaml/browser/dist/nodes/Pair.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyCollection.js","../../../../node_modules/yaml/browser/dist/nodes/YAMLMap.js","../../../../node_modules/yaml/browser/dist/schema/common/map.js","../../../../node_modules/yaml/browser/dist/nodes/YAMLSeq.js","../../../../node_modules/yaml/browser/dist/schema/common/seq.js","../../../../node_modules/yaml/browser/dist/schema/common/string.js","../../../../node_modules/yaml/browser/dist/schema/common/null.js","../../../../node_modules/yaml/browser/dist/schema/core/bool.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyNumber.js","../../../../node_modules/yaml/browser/dist/schema/core/float.js","../../../../node_modules/yaml/browser/dist/schema/core/int.js","../../../../node_modules/yaml/browser/dist/schema/core/schema.js","../../../../node_modules/yaml/browser/dist/schema/json/schema.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/float.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/int.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/set.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js","../../../../node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js","../../../../node_modules/yaml/browser/dist/schema/tags.js","../../../../node_modules/yaml/browser/dist/schema/Schema.js","../../../../node_modules/yaml/browser/dist/stringify/stringifyDocument.js","../../../../node_modules/yaml/browser/dist/doc/Document.js","../../../../node_modules/yaml/browser/dist/errors.js","../../../../node_modules/yaml/browser/dist/compose/resolve-props.js","../../../../node_modules/yaml/browser/dist/compose/util-contains-newline.js","../../../../node_modules/yaml/browser/dist/compose/util-flow-indent-check.js","../../../../node_modules/yaml/browser/dist/compose/util-map-includes.js","../../../../node_modules/yaml/browser/dist/compose/resolve-block-map.js","../../../../node_modules/yaml/browser/dist/compose/resolve-block-seq.js","../../../../node_modules/yaml/browser/dist/compose/resolve-end.js","../../../../node_modules/yaml/browser/dist/compose/resolve-flow-collection.js","../../../../node_modules/yaml/browser/dist/compose/compose-collection.js","../../../../node_modules/yaml/browser/dist/compose/resolve-block-scalar.js","../../../../node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js","../../../../node_modules/yaml/browser/dist/compose/compose-scalar.js","../../../../node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js","../../../../node_modules/yaml/browser/dist/compose/compose-node.js","../../../../node_modules/yaml/browser/dist/compose/compose-doc.js","../../../../node_modules/yaml/browser/dist/compose/composer.js","../../../../node_modules/yaml/browser/dist/parse/cst-scalar.js","../../../../node_modules/yaml/browser/dist/parse/cst-stringify.js","../../../../node_modules/yaml/browser/dist/parse/cst-visit.js","../../../../node_modules/yaml/browser/dist/parse/cst.js","../../../../node_modules/yaml/browser/dist/parse/lexer.js","../../../../node_modules/yaml/browser/dist/parse/line-counter.js","../../../../node_modules/yaml/browser/dist/parse/parser.js","../../../../node_modules/yaml/browser/dist/public-api.js"],"sourcesContent":["// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","/**\n * List of HTML void tag names.\n *\n * @type {Array}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n","/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it’s value is this function’s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record} [Handlers=Record]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record} [Handlers=Record]\n * @param {string} key\n * Field to switch on.\n * @param {Options} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters): ReturnType, (...parameters: Parameters): ReturnType}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn’t have a `key` property, the special\n * “invalid” handler will be called.\n * If `value` has an unknown `key`, the special “unknown” handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it’s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it’s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: ' ',\n iexcl: '¡',\n cent: '¢',\n pound: '£',\n curren: '¤',\n yen: '¥',\n brvbar: '¦',\n sect: '§',\n uml: '¨',\n copy: '©',\n ordf: 'ª',\n laquo: '«',\n not: '¬',\n shy: '­',\n reg: '®',\n macr: '¯',\n deg: '°',\n plusmn: '±',\n sup2: '²',\n sup3: '³',\n acute: '´',\n micro: 'µ',\n para: '¶',\n middot: '·',\n cedil: '¸',\n sup1: '¹',\n ordm: 'º',\n raquo: '»',\n frac14: '¼',\n frac12: '½',\n frac34: '¾',\n iquest: '¿',\n Agrave: 'À',\n Aacute: 'Á',\n Acirc: 'Â',\n Atilde: 'Ã',\n Auml: 'Ä',\n Aring: 'Å',\n AElig: 'Æ',\n Ccedil: 'Ç',\n Egrave: 'È',\n Eacute: 'É',\n Ecirc: 'Ê',\n Euml: 'Ë',\n Igrave: 'Ì',\n Iacute: 'Í',\n Icirc: 'Î',\n Iuml: 'Ï',\n ETH: 'Ð',\n Ntilde: 'Ñ',\n Ograve: 'Ò',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Otilde: 'Õ',\n Ouml: 'Ö',\n times: '×',\n Oslash: 'Ø',\n Ugrave: 'Ù',\n Uacute: 'Ú',\n Ucirc: 'Û',\n Uuml: 'Ü',\n Yacute: 'Ý',\n THORN: 'Þ',\n szlig: 'ß',\n agrave: 'à',\n aacute: 'á',\n acirc: 'â',\n atilde: 'ã',\n auml: 'ä',\n aring: 'å',\n aelig: 'æ',\n ccedil: 'ç',\n egrave: 'è',\n eacute: 'é',\n ecirc: 'ê',\n euml: 'ë',\n igrave: 'ì',\n iacute: 'í',\n icirc: 'î',\n iuml: 'ï',\n eth: 'ð',\n ntilde: 'ñ',\n ograve: 'ò',\n oacute: 'ó',\n ocirc: 'ô',\n otilde: 'õ',\n ouml: 'ö',\n divide: '÷',\n oslash: 'ø',\n ugrave: 'ù',\n uacute: 'ú',\n ucirc: 'û',\n uuml: 'ü',\n yacute: 'ý',\n thorn: 'þ',\n yuml: 'ÿ',\n fnof: 'ƒ',\n Alpha: 'Α',\n Beta: 'Β',\n Gamma: 'Γ',\n Delta: 'Δ',\n Epsilon: 'Ε',\n Zeta: 'Ζ',\n Eta: 'Η',\n Theta: 'Θ',\n Iota: 'Ι',\n Kappa: 'Κ',\n Lambda: 'Λ',\n Mu: 'Μ',\n Nu: 'Ν',\n Xi: 'Ξ',\n Omicron: 'Ο',\n Pi: 'Π',\n Rho: 'Ρ',\n Sigma: 'Σ',\n Tau: 'Τ',\n Upsilon: 'Υ',\n Phi: 'Φ',\n Chi: 'Χ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n epsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n omicron: 'ο',\n pi: 'π',\n rho: 'ρ',\n sigmaf: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n phi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n thetasym: 'ϑ',\n upsih: 'ϒ',\n piv: 'ϖ',\n bull: '•',\n hellip: '…',\n prime: '′',\n Prime: '″',\n oline: '‾',\n frasl: '⁄',\n weierp: '℘',\n image: 'ℑ',\n real: 'ℜ',\n trade: '™',\n alefsym: 'ℵ',\n larr: '←',\n uarr: '↑',\n rarr: '→',\n darr: '↓',\n harr: '↔',\n crarr: '↵',\n lArr: '⇐',\n uArr: '⇑',\n rArr: '⇒',\n dArr: '⇓',\n hArr: '⇔',\n forall: '∀',\n part: '∂',\n exist: '∃',\n empty: '∅',\n nabla: '∇',\n isin: '∈',\n notin: '∉',\n ni: '∋',\n prod: '∏',\n sum: '∑',\n minus: '−',\n lowast: '∗',\n radic: '√',\n prop: '∝',\n infin: '∞',\n ang: '∠',\n and: '∧',\n or: '∨',\n cap: '∩',\n cup: '∪',\n int: '∫',\n there4: '∴',\n sim: '∼',\n cong: '≅',\n asymp: '≈',\n ne: '≠',\n equiv: '≡',\n le: '≤',\n ge: '≥',\n sub: '⊂',\n sup: '⊃',\n nsub: '⊄',\n sube: '⊆',\n supe: '⊇',\n oplus: '⊕',\n otimes: '⊗',\n perp: '⊥',\n sdot: '⋅',\n lceil: '⌈',\n rceil: '⌉',\n lfloor: '⌊',\n rfloor: '⌋',\n lang: '〈',\n rang: '〉',\n loz: '◊',\n spades: '♠',\n clubs: '♣',\n hearts: '♥',\n diams: '♦',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: 'Œ',\n oelig: 'œ',\n Scaron: 'Š',\n scaron: 'š',\n Yuml: 'Ÿ',\n circ: 'ˆ',\n tilde: '˜',\n ensp: ' ',\n emsp: ' ',\n thinsp: ' ',\n zwnj: '‌',\n zwj: '‍',\n lrm: '‎',\n rlm: '‏',\n ndash: '–',\n mdash: '—',\n lsquo: '‘',\n rsquo: '’',\n sbquo: '‚',\n ldquo: '“',\n rdquo: '”',\n bdquo: '„',\n dagger: '†',\n Dagger: '‡',\n permil: '‰',\n lsaquo: '‹',\n rsaquo: '›',\n euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don’t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `c` vs `c` (decimal shorter)\n // * `d` vs `d` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n","/**\n * The smallest way to encode a character.\n *\n * @param {number} code\n * @returns {string}\n */\nexport function formatBasic(code) {\n return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","const ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexport { ALIAS, DOC, MAP, NODE_TYPE, PAIR, SCALAR, SEQ, hasAnchor, isAlias, isCollection, isDocument, isMap, isNode, isPair, isScalar, isSeq };\n","import { isDocument, isNode, isPair, isCollection, isMap, isSeq, isScalar, isAlias } from './nodes/identity.js';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (isNode(ctrl) || isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (isMap(node))\n return visitor.Map?.(key, node, path);\n if (isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (isPair(node))\n return visitor.Pair?.(key, node, path);\n if (isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexport { visit, visitAsync };\n","import { isNode } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && isNode(doc.contents)) {\n const tags = {};\n visit(doc.contents, (_key, node) => {\n if (isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexport { Directives };\n","import { isScalar, isCollection } from '../nodes/identity.js';\nimport { visit } from '../visit.js';\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n if (!prevAnchors)\n prevAnchors = anchorNames(doc);\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (isScalar(ref.node) || isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexport { anchorIsValid, anchorNames, createNodeAnchors, findNewAnchor };\n","/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexport { applyReviver };\n","import { hasAnchor } from './identity.js';\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexport { toJS };\n","import { applyReviver } from '../doc/applyReviver.js';\nimport { NODE_TYPE, isDocument } from './identity.js';\nimport { toJS } from './toJS.js';\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexport { NodeBase };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { visit } from '../visit.js';\nimport { ALIAS, isAlias, isCollection, isPair } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nclass Alias extends NodeBase {\n constructor(source) {\n super(ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc) {\n let found = undefined;\n visit(doc, {\n Node: (_key, node) => {\n if (node === this)\n return visit.BREAK;\n if (node.anchor === this.source)\n found = node;\n }\n });\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (!data || data.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexport { Alias };\n","import { SCALAR } from './identity.js';\nimport { NodeBase } from './Node.js';\nimport { toJS } from './toJS.js';\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends NodeBase {\n constructor(value) {\n super(SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexport { Scalar, isScalarValue };\n","import { Alias } from '../nodes/Alias.js';\nimport { isNode, isPair, MAP, SEQ, isDocument } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (isDocument(value))\n value = value.contents;\n if (isNode(value))\n return value;\n if (isPair(value)) {\n const map = ctx.schema[MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n if (!ref.anchor)\n ref.anchor = onAnchor(value);\n return new Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[MAP]\n : Symbol.iterator in Object(value)\n ? schema[SEQ]\n : schema[MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexport { createNode };\n","import { createNode } from '../doc/createNode.js';\nimport { isNode, isPair, isCollection, isScalar } from './identity.js';\nimport { NodeBase } from './Node.js';\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => isNode(it) || isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && isScalar(node) ? node.value : node;\n else\n return isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexport { Collection, collectionFromPath, isEmptyPath };\n","/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexport { indentComment, lineComment, stringifyComment };\n","const FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexport { FOLD_BLOCK, FOLD_FLOW, FOLD_QUOTED, foldFlowLines };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { foldFlowLines, FOLD_QUOTED, FOLD_FLOW, FOLD_BLOCK } from './foldFlowLines.js';\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines(res, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines(`${start}${foldedValue}${end}`, indent, FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (!value ||\n /^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - empty string, '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines(str, indent, FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.BLOCK_FOLDED:\n case Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexport { stringifyString };\n","import { anchorIsValid } from '../doc/anchors.js';\nimport { isPair, isAlias, isNode, isScalar, isCollection } from '../nodes/identity.js';\nimport { stringifyComment } from './stringifyComment.js';\nimport { stringifyString } from './stringifyString.js';\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? typeof obj;\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (isScalar(node) || isCollection(node)) && node.anchor;\n if (anchor && anchorIsValid(anchor)) {\n anchors.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ? node.tag : tagObj.default ? null : tagObj.tag;\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n if (!tagObj)\n tagObj = getTagObject(ctx.doc.schema.tags, node);\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : isScalar(node)\n ? stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexport { createStringifyContext, stringify };\n","import { isCollection, isNode, isScalar, isSeq } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (isCollection(key) || (!isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n isCollection(key) ||\n (isScalar(key)\n ? key.type === Scalar.BLOCK_FOLDED || key.type === Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n')\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexport { stringifyPair };\n","function debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n console.warn(warning);\n }\n}\n\nexport { debug, warn };\n","import { isScalar, isAlias, isSeq, isMap } from '../../nodes/identity.js';\nimport { Scalar } from '../../nodes/Scalar.js';\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (isScalar(key) &&\n (!key.type || key.type === Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexport { addMergeToJSMap, isMergeKey, merge };\n","import { warn } from '../log.js';\nimport { isMergeKey, addMergeToJSMap } from '../schema/yaml-1.1/merge.js';\nimport { createStringifyContext } from '../stringify/stringify.js';\nimport { isNode } from './identity.js';\nimport { toJS } from './toJS.js';\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (isMergeKey(ctx, key))\n addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (isNode(key) && ctx?.doc) {\n const strCtx = createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexport { addPairToJSMap };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyPair } from '../stringify/stringifyPair.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { NODE_TYPE, PAIR, isNode } from './identity.js';\n\nfunction createPair(key, value, ctx) {\n const k = createNode(key, undefined, ctx);\n const v = createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, NODE_TYPE, { value: PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (isNode(key))\n key = key.clone(schema);\n if (isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexport { Pair, createPair };\n","import { isNode, isPair } from '../nodes/identity.js';\nimport { stringify } from './stringify.js';\nimport { lineComment, indentComment } from './stringifyComment.js';\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (isPair(item)) {\n const ik = isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexport { stringifyCollection };\n","import { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { addPairToJSMap } from './addPairToJSMap.js';\nimport { Collection } from './Collection.js';\nimport { isPair, isScalar, MAP } from './identity.js';\nimport { Pair, createPair } from './Pair.js';\nimport { isScalarValue } from './Scalar.js';\n\nfunction findPair(items, key) {\n const k = isScalar(key) ? key.value : key;\n for (const it of items) {\n if (isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair(pair, pair?.value);\n }\n else\n _pair = new Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (isScalar(prev.value) && isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexport { YAMLMap, findPair };\n","import { isMap } from '../../nodes/identity.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.from(schema, obj, ctx)\n};\n\nexport { map };\n","import { createNode } from '../doc/createNode.js';\nimport { stringifyCollection } from '../stringify/stringifyCollection.js';\nimport { Collection } from './Collection.js';\nimport { SEQ, isScalar } from './identity.js';\nimport { isScalarValue } from './Scalar.js';\nimport { toJS } from './toJS.js';\n\nclass YAMLSeq extends Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (isScalar(prev) && isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexport { YAMLSeq };\n","import { isSeq } from '../../nodes/identity.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.from(schema, obj, ctx)\n};\n\nexport { seq };\n","import { stringifyString } from '../../stringify/stringifyString.js';\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexport { string };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexport { nullTag };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexport { boolTag };\n","function stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexport { stringifyNumber };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intHex, intOct };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { boolTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intOct, int, intHex } from './int.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n boolTag,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float\n];\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { map } from '../common/map.js';\nimport { seq } from '../common/seq.js';\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map, seq].concat(jsonScalars, jsonError);\n\nexport { schema };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyString } from '../../stringify/stringifyString.js';\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n if (!type)\n type = Scalar.BLOCK_LITERAL;\n if (type !== Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexport { binary };\n","import { isSeq, isPair, isMap } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { Scalar } from '../../nodes/Scalar.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\n\nfunction resolvePairs(seq, onError) {\n if (isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (isPair(item))\n continue;\n else if (isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair(new Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = isPair(item) ? item : new Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexport { createPairs, pairs, resolvePairs };\n","import { isScalar, isPair } from '../../nodes/identity.js';\nimport { toJS } from '../../nodes/toJS.js';\nimport { YAMLMap } from '../../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../../nodes/YAMLSeq.js';\nimport { resolvePairs, createPairs } from './pairs.js';\n\nclass YAMLOMap extends YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (isPair(pair)) {\n key = toJS(pair.key, '', ctx);\n value = toJS(pair.value, key, ctx);\n }\n else {\n key = toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs = createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs = resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs.items) {\n if (isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexport { YAMLOMap, omap };\n","import { Scalar } from '../../nodes/Scalar.js';\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar(false),\n stringify: boolStringify\n};\n\nexport { falseTag, trueTag };\n","import { Scalar } from '../../nodes/Scalar.js';\nimport { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber\n};\n\nexport { float, floatExp, floatNaN };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexport { int, intBin, intHex, intOct };\n","import { isMap, isPair, isScalar } from '../../nodes/identity.js';\nimport { Pair, createPair } from '../../nodes/Pair.js';\nimport { YAMLMap, findPair } from '../../nodes/YAMLMap.js';\n\nclass YAMLSet extends YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair(key.key, null);\n else\n pair = new Pair(key, null);\n const prev = findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = findPair(this.items, key);\n return !keepPair && isPair(pair)\n ? isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexport { YAMLSet, set };\n","import { stringifyNumber } from '../../stringify/stringifyNumber.js';\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value.toISOString().replace(/(T00:00:00)?\\.000Z$/, '')\n};\n\nexport { floatTime, intTime, timestamp };\n","import { map } from '../common/map.js';\nimport { nullTag } from '../common/null.js';\nimport { seq } from '../common/seq.js';\nimport { string } from '../common/string.js';\nimport { binary } from './binary.js';\nimport { trueTag, falseTag } from './bool.js';\nimport { floatNaN, floatExp, float } from './float.js';\nimport { intBin, intOct, int, intHex } from './int.js';\nimport { merge } from './merge.js';\nimport { omap } from './omap.js';\nimport { pairs } from './pairs.js';\nimport { set } from './set.js';\nimport { intTime, floatTime, timestamp } from './timestamp.js';\n\nconst schema = [\n map,\n seq,\n string,\n nullTag,\n trueTag,\n falseTag,\n intBin,\n intOct,\n int,\n intHex,\n floatNaN,\n floatExp,\n float,\n binary,\n merge,\n omap,\n pairs,\n set,\n intTime,\n floatTime,\n timestamp\n];\n\nexport { schema };\n","import { map } from './common/map.js';\nimport { nullTag } from './common/null.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { boolTag } from './core/bool.js';\nimport { float, floatExp, floatNaN } from './core/float.js';\nimport { int, intHex, intOct } from './core/int.js';\nimport { schema } from './core/schema.js';\nimport { schema as schema$1 } from './json/schema.js';\nimport { binary } from './yaml-1.1/binary.js';\nimport { merge } from './yaml-1.1/merge.js';\nimport { omap } from './yaml-1.1/omap.js';\nimport { pairs } from './yaml-1.1/pairs.js';\nimport { schema as schema$2 } from './yaml-1.1/schema.js';\nimport { set } from './yaml-1.1/set.js';\nimport { timestamp, floatTime, intTime } from './yaml-1.1/timestamp.js';\n\nconst schemas = new Map([\n ['core', schema],\n ['failsafe', [map, seq, string]],\n ['json', schema$1],\n ['yaml11', schema$2],\n ['yaml-1.1', schema$2]\n]);\nconst tagsByName = {\n binary,\n bool: boolTag,\n float,\n floatExp,\n floatNaN,\n floatTime,\n int,\n intHex,\n intOct,\n intTime,\n map,\n merge,\n null: nullTag,\n omap,\n pairs,\n seq,\n set,\n timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary,\n 'tag:yaml.org,2002:merge': merge,\n 'tag:yaml.org,2002:omap': omap,\n 'tag:yaml.org,2002:pairs': pairs,\n 'tag:yaml.org,2002:set': set,\n 'tag:yaml.org,2002:timestamp': timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge)\n ? schemaTags.concat(merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexport { coreKnownTags, getTags };\n","import { MAP, SCALAR, SEQ } from '../nodes/identity.js';\nimport { map } from './common/map.js';\nimport { seq } from './common/seq.js';\nimport { string } from './common/string.js';\nimport { getTags, coreKnownTags } from './tags.js';\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? getTags(compat, 'compat')\n : compat\n ? getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? coreKnownTags : {};\n this.tags = getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, MAP, { value: map });\n Object.defineProperty(this, SCALAR, { value: string });\n Object.defineProperty(this, SEQ, { value: seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexport { Schema };\n","import { isNode } from '../nodes/identity.js';\nimport { createStringifyContext, stringify } from './stringify.js';\nimport { indentComment, lineComment } from './stringifyComment.js';\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexport { stringifyDocument };\n","import { Alias } from '../nodes/Alias.js';\nimport { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';\nimport { NODE_TYPE, DOC, isNode, isCollection, isScalar } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { toJS } from '../nodes/toJS.js';\nimport { Schema } from '../schema/Schema.js';\nimport { stringifyDocument } from '../stringify/stringifyDocument.js';\nimport { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';\nimport { applyReviver } from './applyReviver.js';\nimport { createNode } from './createNode.js';\nimport { Directives } from './directives.js';\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, NODE_TYPE, { value: DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [NODE_TYPE]: { value: DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode(value, tag, ctx);\n if (flow && isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (isEmptyPath(path))\n return !keepScalar && isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (isEmptyPath(path))\n return this.contents !== undefined;\n return isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexport { Document };\n","class YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end && end.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexport { YAMLError, YAMLParseError, YAMLWarning, prettifyError };\n","function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n if (start === null)\n start = token.offset;\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexport { resolveProps };\n","function containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexport { containsNewline };\n","import { containsNewline } from './util-contains-newline.js';\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexport { flowIndentCheck };\n","import { isScalar } from '../nodes/identity.js';\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (isScalar(a) && isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexport { mapIncludes };\n","import { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexport { resolveBlockMap };\n","import { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveProps } from './resolve-props.js';\nimport { flowIndentCheck } from './util-flow-indent-check.js';\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value && value.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexport { resolveBlockSeq };\n","function resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexport { resolveEnd };\n","import { isPair } from '../nodes/identity.js';\nimport { Pair } from '../nodes/Pair.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\nimport { containsNewline } from './util-contains-newline.js';\nimport { mapIncludes } from './util-map-includes.js';\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source && value.source[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce && ce.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexport { resolveFlowCollection };\n","import { isNode } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { YAMLMap } from '../nodes/YAMLMap.js';\nimport { YAMLSeq } from '../nodes/YAMLSeq.js';\nimport { resolveBlockMap } from './resolve-block-map.js';\nimport { resolveBlockSeq } from './resolve-block-seq.js';\nimport { resolveFlowCollection } from './resolve-flow-collection.js';\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt && kt.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt?.collection) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = isNode(res)\n ? res\n : new Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexport { composeCollection };\n","import { Scalar } from '../nodes/Scalar.js';\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexport { resolveBlockScalar };\n","import { Scalar } from '../nodes/Scalar.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(? wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexport { resolveFlowScalar };\n","import { isScalar, SCALAR } from '../nodes/identity.js';\nimport { Scalar } from '../nodes/Scalar.js';\nimport { resolveBlockScalar } from './resolve-block-scalar.js';\nimport { resolveFlowScalar } from './resolve-flow-scalar.js';\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = isScalar(res) ? res : new Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexport { composeScalar };\n","function emptyScalarPosition(offset, before, pos) {\n if (before) {\n if (pos === null)\n pos = before.length;\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexport { emptyScalarPosition };\n","import { Alias } from '../nodes/Alias.js';\nimport { isScalar } from '../nodes/identity.js';\nimport { composeCollection } from './compose-collection.js';\nimport { composeScalar } from './compose-scalar.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { emptyScalarPosition } from './util-empty-scalar-position.js';\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexport { composeEmptyNode, composeNode };\n","import { Document } from '../doc/Document.js';\nimport { composeNode, composeEmptyNode } from './compose-node.js';\nimport { resolveEnd } from './resolve-end.js';\nimport { resolveProps } from './resolve-props.js';\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexport { composeDoc };\n","import { Directives } from '../doc/directives.js';\nimport { Document } from '../doc/Document.js';\nimport { YAMLWarning, YAMLParseError } from '../errors.js';\nimport { isCollection, isPair } from '../nodes/identity.js';\nimport { composeDoc } from './compose-doc.js';\nimport { resolveEnd } from './resolve-end.js';\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new YAMLWarning(pos, code, message));\n else\n this.errors.push(new YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexport { Composer };\n","import { resolveBlockScalar } from '../compose/resolve-block-scalar.js';\nimport { resolveFlowScalar } from '../compose/resolve-flow-scalar.js';\nimport { YAMLParseError } from '../errors.js';\nimport { stringifyString } from '../stringify/stringifyString.js';\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexport { createScalarToken, resolveAsScalar, setScalarValue };\n","/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexport { stringify };\n","const BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexport { visit };\n","export { createScalarToken, resolveAsScalar, setScalarValue } from './cst-scalar.js';\nexport { stringify } from './cst-stringify.js';\nexport { visit } from './cst-visit.js';\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '';\n case DOCUMENT:\n return '';\n case FLOW_END:\n return '';\n case SCALAR:\n return '';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexport { BOM, DOCUMENT, FLOW_END, SCALAR, isCollection, isScalar, prettyToken, tokenType };\n","import { BOM, DOCUMENT, FLOW_END, SCALAR } from './cst.js';\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexport { Lexer };\n","/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexport { LineCounter };\n","import { tokenType } from './cst.js';\nimport { Lexer } from './lexer.js';\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && (!top || top.type !== 'doc-end')) {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (atMapIndent && bv.type !== 'block-seq') {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top && top.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexport { Parser };\n","import { Composer } from './compose/composer.js';\nimport { Document } from './doc/Document.js';\nimport { prettifyError, YAMLParseError } from './errors.js';\nimport { warn } from './log.js';\nimport { isDocument } from './nodes/identity.js';\nimport { LineCounter } from './parse/line-counter.js';\nimport { Parser } from './parse/parser.js';\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter = options.lineCounter || (prettyErrors && new LineCounter()) || null;\n return { lineCounter, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n const docs = Array.from(composer.compose(parser.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser = new Parser(lineCounter?.addNewLine);\n const composer = new Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer.compose(parser.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(prettifyError(source, lineCounter));\n doc.warnings.forEach(prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document(value, _replacer, options).toString(options);\n}\n\nexport { parse, parseAllDocuments, parseDocument, stringify };\n"],"names":["htmlDecodeTree","c","xmlDecodeTree","_a","decodeMap","fromCodePoint","codePoint","output","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","code","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","str","offset","start","end","base","digitCount","startIdx","char","lastCp","expectedLength","current","valueLength","determineBranch","result","consumed","getDecoder","ret","decoder","lastIndex","len","nodeIdx","branchCount","jumpOffset","value","lo","hi","mid","midVal","htmlDecoder","decodeHTML","mode","htmlVoidElements","own","zwitch","key","options","settings","one","parameters","fn","handlers","id","defaultSubsetRegex","surrogatePairsRegex","controlCharactersRegex","regexEscapeRegex","subsetToRegexCache","core","charactersToExpressionCached","basic","surrogate","pair","index","all","character","subset","cached","charactersToExpression","groups","hexadecimalRegex","toHexadecimal","next","omit","decimalRegex","toDecimal","characterEntitiesLegacy","characterEntitiesHtml4","dangerous","characters","notAlphanumericRegex","toNamed","attribute","name","formatSmart","numeric","named","decimal","formatBasic","stringifyEntities","stringifyEntitiesLight","ccount","source","count","parse","tokens","input","token","stringify","values","ALIAS","DOC","MAP","PAIR","SCALAR","SEQ","NODE_TYPE","isAlias","node","isDocument","isMap","isPair","isScalar","isSeq","isCollection","isNode","hasAnchor","BREAK","SKIP","REMOVE","visit","visitor","visitor_","initVisitor","visit_","path","ctrl","callVisitor","replaceNode","ci","ck","cv","visitAsync","visitAsync_","_b","_c","_d","_e","parent","pt","escapeChars","escapeTagName","tn","ch","Directives","yaml","tags","copy","res","line","onError","parts","handle","prefix","version","isValid","verbatim","suffix","error","tag","doc","lines","tagEntries","tagNames","_key","anchorIsValid","anchor","msg","anchorNames","root","anchors","findNewAnchor","exclude","i","createNodeAnchors","aliasObjects","sourceObjects","prevAnchors","ref","applyReviver","reviver","obj","val","v0","v1","k","toJS","arg","ctx","v","data","NodeBase","type","mapAsMap","maxAliasCount","onAnchor","Alias","found","_arg","getAliasCount","_onComment","_onChompKeep","src","item","kc","vc","isScalarValue","Scalar","defaultTagPrefix","findTagObject","tagName","match","t","tagObj","createNode","map","aliasDuplicateObjects","onTagObj","schema","collectionFromPath","isEmptyPath","Collection","it","rest","keepScalar","allowScalar","n","stringifyComment","indentComment","comment","indent","lineComment","FOLD_FLOW","FOLD_BLOCK","FOLD_QUOTED","foldFlowLines","text","indentAtStart","lineWidth","minContentWidth","onFold","onOverflow","endStep","folds","escapedFolds","split","prev","overflow","escStart","escEnd","consumeMoreIndentedLines","j","fold","getFoldOptions","isBlock","containsDocumentMarker","lineLengthOverLimit","indentLength","limit","strLen","doubleQuotedString","json","implicitKey","minMultiLineLength","singleQuotedString","quotedString","singleQuote","qs","hasDouble","hasSingle","blockEndNewlines","blockString","onComment","onChompKeep","blockQuote","commentString","literal","chomp","endStart","endNlPos","startWithSpace","startEnd","startNlPos","header","foldedValue","literalFallback","foldOptions","body","plainString","actualString","indentStep","inFlow","test","compat","stringifyString","ss","_stringify","_type","defaultKeyType","defaultStringType","createStringifyContext","opt","getTagObject","testMatch","stringifyProps","props","stringifyPair","allNullValues","indentSeq","simpleKeys","keyComment","explicitKey","keyCommentDone","chompKeep","vsb","vcb","valueComment","valueCommentDone","valueStr","ws","cs","vs0","nl0","hasNewline","flow","hasPropsLine","sp0","warn","logLevel","warning","MERGE_KEY","merge","addMergeToJSMap","isMergeKey","mergeValue","srcMap","addPairToJSMap","jsKey","stringKey","stringifyKey","jsValue","strCtx","strKey","jsonStr","createPair","Pair","_","stringifyCollection","collection","stringifyFlowCollection","stringifyBlockCollection","items","blockItemPrefix","flowChars","itemIndent","itemCtx","addCommentBefore","ik","fcPadding","reqNewline","linesAtValue","iv","sum","ic","findPair","YAMLMap","keepUndefined","replacer","add","overwrite","_pair","sortEntries","Type","YAMLSeq","idx","asItemIndex","seq","string","nullTag","boolTag","sv","stringifyNumber","format","minFractionDigits","num","d","floatNaN","floatExp","float","dot","intIdentify","intResolve","radix","intAsBigInt","intStringify","intOct","_onError","int","intHex","stringifyJSON","jsonScalars","jsonError","binary","buffer","buf","s","o","resolvePairs","cn","createPairs","iterable","pairs","keys","YAMLOMap","omap","seenKeys","boolStringify","trueTag","falseTag","f","sign","intBin","YAMLSet","keepPair","set","parseSexagesimal","asBigInt","p","stringifySexagesimal","_60","intTime","floatTime","timestamp","year","month","day","hour","minute","second","millisec","date","tz","schemas","schema$1","schema$2","tagsByName","coreKnownTags","getTags","customTags","schemaName","addMergeTag","schemaTags","sortMapEntriesByKey","a","b","Schema","resolveKnownTags","sortMapEntries","toStringDefaults","stringifyDocument","hasDirectives","dir","contentComment","dc","Document","_replacer","assertCollection","keyToStr","asStr","anchorPrefix","setAnchors","jsonArg","contents","YAMLError","pos","message","YAMLParseError","YAMLWarning","prettifyError","lc","col","lineStr","trimStart","pointer","resolveProps","indicator","parentIndent","startOnNewline","spaceBefore","atNewline","hasSpace","commentSep","reqSpace","tab","newlineAfterProp","comma","cb","last","containsNewline","st","flowIndentCheck","fc","mapIncludes","search","uniqueKeys","isEqual","startColMsg","resolveBlockMap","composeNode","composeEmptyNode","bm","NodeClass","commentEnd","collItem","sep","keyProps","keyStart","keyNode","valueProps","valueNode","resolveBlockSeq","bs","resolveEnd","blockMsg","resolveFlowCollection","fcName","coll","atRoot","prevItemComment","loop","endRange","expectedEnd","ce","ee","cePos","resolveCollection","CN","Coll","composeCollection","tagToken","nl","lastProp","expType","kt","resolveBlockScalar","scalar","parseBlockScalarHeader","splitLines","chompStart","content","trimIndent","contentStart","prevMoreIndented","crlf","strict","length","ts","first","m","resolveFlowScalar","rel","plainValue","singleQuotedValue","doubleQuotedValue","valueEnd","re","badChar","foldLines","foldNewline","cc","escapeCodes","parseCharCode","raw","wsStart","composeScalar","range","findScalarTagByName","findScalarTagByTest","matchWithTest","atKey","directives","emptyScalarPosition","before","isSrcToken","composeAlias","alias","composeDoc","opts","contentEnd","getErrorPos","parsePrelude","prelude","atComment","afterEmptyLine","Composer","afterDoc","forceDoc","endOffset","resolveAsScalar","createScalarToken","context","he","head","addEndtoBlockProps","setScalarValue","afterKey","setBlockScalarValue","setFlowScalarValue","oa","tok","cst","stringifyToken","stringifyItem","_visit","field","BOM","DOCUMENT","FLOW_END","prettyToken","tokenType","isEmpty","hexDigits","tagChars","flowIndicatorChars","invalidAnchorChars","isNotAnchorChar","Lexer","incomplete","dt","state","dirEnd","sp","ch0","ch1","quote","qb","lastChar","allowEmpty","allowTabs","LineCounter","low","high","includesToken","list","findNonEmptyIndex","isFlowToken","getPrevProps","getFirstKeyStartProps","fixFlowSeqItems","Parser","onNewLine","lexeme","top","bv","atMapIndent","atNextItem","fs","docEnd","parseOptions","prettyErrors","parseAllDocuments","lineCounter","parser","composer","docs","parseDocument","_doc","_reviver"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89]}