{"version":3,"sources":["webpack:///./node_modules/markdown-it/lib/rules_block/heading.js","webpack:///./node_modules/markdown-it/lib/rules_block/lheading.js","webpack:///./node_modules/markdown-it/lib/rules_block/list.js","webpack:///./node_modules/markdown-it/lib/rules_block/html_block.js","webpack:///./node_modules/markdown-it/lib/rules_block/code.js","webpack:///./node_modules/markdown-it/lib/rules_block/fence.js","webpack:///./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack:///./node_modules/markdown-it/lib/rules_block/hr.js"],"names":["isSpace","module","exports","state","startLine","endLine","silent","ch","level","tmp","token","pos","bMarks","tShift","max","eMarks","src","charCodeAt","skipSpacesBack","skipCharsBack","line","push","String","markup","slice","map","content","trim","children","terminate","i","l","marker","nextLine","terminatorRules","md","block","ruler","getRules","isEmpty","sCount","blkIndent","skipChars","skipSpaces","length","getLines","fromCharCode","skipBulletListMarker","skipOrderedListMarker","start","markTightParagraphs","idx","tokens","type","hidden","initial","offset","indent","oldTShift","oldIndent","oldLIndent","oldTight","oldParentType","posAfterMarker","indentAfterMarker","markerValue","markerCharCode","isOrdered","contentStart","listTokIdx","prevEmptyEnd","listLines","itemLines","tight","Number","substr","attrs","parentType","Math","min","tokenize","block_names","HTML_OPEN_CLOSE_TAG_RE","HTML_SEQUENCES","RegExp","join","source","lineText","options","html","test","last","emptyLines","len","params","mem","haveEndMarker","indexOf","info","lastLineEmpty","oldSCount","oldBMarks","lines","cnt","Array"],"mappings":"kHAIA,IAAIA,EAAU,EAAQ,QAAmBA,QAGzCC,EAAOC,QAAU,SAAiBC,EAAOC,EAAWC,EAASC,GAC3D,IAAIC,EAAIC,EAAOC,EAAKC,EAChBC,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAIvB,GAFAG,EAAMJ,EAAMa,IAAIC,WAAWN,GAEhB,KAAPJ,GAAsBI,GAAOG,EAAO,OAAO,EAG/CN,EAAQ,EACRD,EAAKJ,EAAMa,IAAIC,aAAaN,GAC5B,MAAc,KAAPJ,GAAsBI,EAAMG,GAAON,GAAS,EACjDA,IACAD,EAAKJ,EAAMa,IAAIC,aAAaN,GAG9B,QAAIH,EAAQ,GAAMG,EAAMG,GAAc,KAAPP,KAE3BD,IAIJQ,EAAMX,EAAMe,eAAeJ,EAAKH,GAChCF,EAAMN,EAAMgB,cAAcL,EAAK,GAAMH,GACjCF,EAAME,GAAOX,EAAQG,EAAMa,IAAIC,WAAWR,EAAM,MAClDK,EAAML,GAGRN,EAAMiB,KAAOhB,EAAY,EAEzBM,EAAeP,EAAMkB,KAAK,eAAgB,IAAMC,OAAOd,GAAQ,GAC/DE,EAAMa,OAAS,WAAWC,MAAM,EAAGhB,GACnCE,EAAMe,IAAS,CAAErB,EAAWD,EAAMiB,MAElCV,EAAiBP,EAAMkB,KAAK,SAAU,GAAI,GAC1CX,EAAMgB,QAAWvB,EAAMa,IAAIQ,MAAMb,EAAKG,GAAKa,OAC3CjB,EAAMe,IAAW,CAAErB,EAAWD,EAAMiB,MACpCV,EAAMkB,SAAW,GAEjBlB,EAAeP,EAAMkB,KAAK,gBAAiB,IAAMC,OAAOd,IAAS,GACjEE,EAAMa,OAAS,WAAWC,MAAM,EAAGhB,KAtBd,K,oCCrBvBP,EAAOC,QAAU,SAAkBC,EAAOC,EAAWC,GAMnD,IALA,IAAIqB,EAASG,EAAWC,EAAGC,EAAGrB,EAAOC,EAAKG,EAAKN,EAAOwB,EAClDC,EAAW7B,EAAY,EACvB8B,EAAkB/B,EAAMgC,GAAGC,MAAMC,MAAMC,SAAS,aAG7CL,EAAW5B,IAAYF,EAAMoC,QAAQN,GAAWA,IAGrD,KAAI9B,EAAMqC,OAAOP,GAAY9B,EAAMsC,UAAY,GAA/C,CAKA,GAAItC,EAAMqC,OAAOP,IAAa9B,EAAMsC,YAClC9B,EAAMR,EAAMS,OAAOqB,GAAY9B,EAAMU,OAAOoB,GAC5CnB,EAAMX,EAAMY,OAAOkB,GAEftB,EAAMG,IACRkB,EAAS7B,EAAMa,IAAIC,WAAWN,IAEf,KAAXqB,GAAqC,KAAXA,KAC5BrB,EAAMR,EAAMuC,UAAU/B,EAAKqB,GAC3BrB,EAAMR,EAAMwC,WAAWhC,GAEnBA,GAAOG,KAAK,CACdN,EAAoB,KAAXwB,EAAyB,EAAI,EACtC,MAOR,KAAI7B,EAAMqC,OAAOP,GAAY,GAA7B,CAIA,IADAJ,GAAY,EACPC,EAAI,EAAGC,EAAIG,EAAgBU,OAAQd,EAAIC,EAAGD,IAC7C,GAAII,EAAgBJ,GAAG3B,EAAO8B,EAAU5B,GAAS,GAAO,CACtDwB,GAAY,EACZ,MAGJ,GAAIA,EAAa,OAGnB,QAAKrB,IAKLkB,EAAUvB,EAAM0C,SAASzC,EAAW6B,EAAU9B,EAAMsC,WAAW,GAAOd,OAEtExB,EAAMiB,KAAOa,EAAW,EAExBvB,EAAiBP,EAAMkB,KAAK,eAAgB,IAAMC,OAAOd,GAAQ,GACjEE,EAAMa,OAAWD,OAAOwB,aAAad,GACrCtB,EAAMe,IAAW,CAAErB,EAAWD,EAAMiB,MAEpCV,EAAiBP,EAAMkB,KAAK,SAAU,GAAI,GAC1CX,EAAMgB,QAAWA,EACjBhB,EAAMe,IAAW,CAAErB,EAAWD,EAAMiB,KAAO,GAC3CV,EAAMkB,SAAW,GAEjBlB,EAAiBP,EAAMkB,KAAK,gBAAiB,IAAMC,OAAOd,IAAS,GACnEE,EAAMa,OAAWD,OAAOwB,aAAad,IAE9B,K,oCCrET,IAAIhC,EAAU,EAAQ,QAAmBA,QAKzC,SAAS+C,EAAqB5C,EAAOC,GACnC,IAAI4B,EAAQrB,EAAKG,EAAKP,EAOtB,OALAI,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAEnB4B,EAAS7B,EAAMa,IAAIC,WAAWN,KAEf,KAAXqB,GACW,KAAXA,GACW,KAAXA,GAIArB,EAAMG,IACRP,EAAKJ,EAAMa,IAAIC,WAAWN,IAErBX,EAAQO,KANL,EAYHI,EAKT,SAASqC,EAAsB7C,EAAOC,GACpC,IAAIG,EACA0C,EAAQ9C,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC/CO,EAAMsC,EACNnC,EAAMX,EAAMY,OAAOX,GAGvB,GAAIO,EAAM,GAAKG,EAAO,OAAQ,EAI9B,GAFAP,EAAKJ,EAAMa,IAAIC,WAAWN,KAEtBJ,EAAK,IAAeA,EAAK,GAAe,OAAQ,EAEpD,OAAS,CAEP,GAAII,GAAOG,EAAO,OAAQ,EAI1B,GAFAP,EAAKJ,EAAMa,IAAIC,WAAWN,OAEtBJ,GAAM,IAAeA,GAAM,IAA/B,CAUA,GAAW,KAAPA,GAA6B,KAAPA,EACxB,MAGF,OAAQ,EAVN,GAAII,EAAMsC,GAAS,GAAM,OAAQ,EAcrC,OAAItC,EAAMG,IACRP,EAAKJ,EAAMa,IAAIC,WAAWN,IAErBX,EAAQO,KAEH,EAGLI,EAGT,SAASuC,EAAoB/C,EAAOgD,GAClC,IAAIrB,EAAGC,EACHvB,EAAQL,EAAMK,MAAQ,EAE1B,IAAKsB,EAAIqB,EAAM,EAAGpB,EAAI5B,EAAMiD,OAAOR,OAAS,EAAGd,EAAIC,EAAGD,IAChD3B,EAAMiD,OAAOtB,GAAGtB,QAAUA,GAAkC,mBAAzBL,EAAMiD,OAAOtB,GAAGuB,OACrDlD,EAAMiD,OAAOtB,EAAI,GAAGwB,QAAS,EAC7BnD,EAAMiD,OAAOtB,GAAGwB,QAAS,EACzBxB,GAAK,GAMX7B,EAAOC,QAAU,SAAcC,EAAOC,EAAWC,EAASC,GACxD,IAAI2B,EACAsB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAb,EACAc,EACAxD,EACAI,EACAG,EACAkD,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAtC,EACAxB,EACAoB,EAAGC,EAAGF,EAHN4C,GAAQ,EAMZ,IAAKV,EAAiBf,EAAsB7C,EAAOC,KAAe,EAChE+D,GAAY,MACP,OAAKJ,EAAiBhB,EAAqB5C,EAAOC,KAAe,GAGtE,OAAO,EAFP+D,GAAY,EASd,GAHAD,EAAiB/D,EAAMa,IAAIC,WAAW8C,EAAiB,GAGnDzD,EAAU,OAAO,EAGrB+D,EAAalE,EAAMiD,OAAOR,OAEtBuB,GACFlB,EAAQ9C,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC/C6D,EAAcS,OAAOvE,EAAMa,IAAI2D,OAAO1B,EAAOc,EAAiBd,EAAQ,IAEtEvC,EAAcP,EAAMkB,KAAK,oBAAqB,KAAM,GAChC,IAAhB4C,IACFvD,EAAMkE,MAAQ,CAAE,CAAE,QAASX,MAI7BvD,EAAcP,EAAMkB,KAAK,mBAAoB,KAAM,GAGrDX,EAAMe,IAAS8C,EAAY,CAAEnE,EAAW,GACxCM,EAAMa,OAASD,OAAOwB,aAAaoB,GAMnCjC,EAAW7B,EACXkE,GAAe,EACfpC,EAAkB/B,EAAMgC,GAAGC,MAAMC,MAAMC,SAAS,QAEhD,MAAOL,EAAW5B,EAAS,CACzBM,EAAMoD,EACNjD,EAAMX,EAAMY,OAAOkB,GAEnBsB,EAAUC,EAASrD,EAAMqC,OAAOP,GAAY8B,GAAkB5D,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,IAErG,MAAOO,EAAMG,EAAK,CAGhB,GAFAP,EAAKJ,EAAMa,IAAIC,WAAWN,IAEtBX,EAAQO,GAOV,MANW,IAAPA,EACFiD,GAAU,EAAIA,EAAS,EAEvBA,IAMJ7C,IAsEF,GAnEAyD,EAAezD,EAIbqD,EAFEI,GAAgBtD,EAEE,EAEA0C,EAASD,EAK3BS,EAAoB,IAAKA,EAAoB,GAIjDP,EAASF,EAAUS,EAGnBtD,EAAeP,EAAMkB,KAAK,iBAAkB,KAAM,GAClDX,EAAMa,OAASD,OAAOwB,aAAaoB,GACnCxD,EAAMe,IAAS+C,EAAY,CAAEpE,EAAW,GAExCuD,EAAYxD,EAAMsC,UAClBoB,EAAW1D,EAAMsE,MACjBf,EAAYvD,EAAMU,OAAOT,GACzBwD,EAAazD,EAAMqC,OAAOpC,GAC1B0D,EAAgB3D,EAAM0E,WACtB1E,EAAMsC,UAAYgB,EAClBtD,EAAMsE,OAAQ,EACdtE,EAAM0E,WAAa,OACnB1E,EAAMU,OAAOT,GAAagE,EAAejE,EAAMS,OAAOR,GACtDD,EAAMqC,OAAOpC,GAAaoD,EAEtBY,GAAgBtD,GAAOX,EAAMoC,QAAQnC,EAAY,GAQnDD,EAAMiB,KAAO0D,KAAKC,IAAI5E,EAAMiB,KAAO,EAAGf,GAEtCF,EAAMgC,GAAGC,MAAM4C,SAAS7E,EAAOC,EAAWC,GAAS,GAIhDF,EAAMsE,QAASH,IAClBG,GAAQ,GAIVH,EAAgBnE,EAAMiB,KAAOhB,EAAa,GAAKD,EAAMoC,QAAQpC,EAAMiB,KAAO,GAE1EjB,EAAMsC,UAAYkB,EAClBxD,EAAMU,OAAOT,GAAasD,EAC1BvD,EAAMqC,OAAOpC,GAAawD,EAC1BzD,EAAMsE,MAAQZ,EACd1D,EAAM0E,WAAaf,EAEnBpD,EAAeP,EAAMkB,KAAK,kBAAmB,MAAO,GACpDX,EAAMa,OAASD,OAAOwB,aAAaoB,GAEnCjC,EAAW7B,EAAYD,EAAMiB,KAC7BoD,EAAU,GAAKvC,EACfmC,EAAejE,EAAMS,OAAOR,GAExB6B,GAAY5B,EAAW,MAE3B,GAAIF,EAAMoC,QAAQN,GAChB,MAMF,GAAI9B,EAAMqC,OAAOP,GAAY9B,EAAMsC,UAAa,MAIhD,IADAZ,GAAY,EACPC,EAAI,EAAGC,EAAIG,EAAgBU,OAAQd,EAAIC,EAAGD,IAC7C,GAAII,EAAgBJ,GAAG3B,EAAO8B,EAAU5B,GAAS,GAAO,CACtDwB,GAAY,EACZ,MAGJ,GAAIA,EAAa,MAGjB,GAAIsC,GAEF,GADAJ,EAAiBf,EAAsB7C,EAAO8B,GAC1C8B,EAAiB,EAAK,WAG1B,GADAA,EAAiBhB,EAAqB5C,EAAO8B,GACzC8B,EAAiB,EAAK,MAG5B,GAAIG,IAAmB/D,EAAMa,IAAIC,WAAW8C,EAAiB,GAAM,MAmBrE,OAdErD,EADEyD,EACMhE,EAAMkB,KAAK,qBAAsB,MAAO,GAExClB,EAAMkB,KAAK,oBAAqB,MAAO,GAEjDX,EAAMa,OAASD,OAAOwB,aAAaoB,GAEnCK,EAAU,GAAKtC,EACf9B,EAAMiB,KAAOa,EAGTwC,GACFvB,EAAoB/C,EAAOkE,IAGtB,I,oCC/ST,IAAIY,EAAc,EAAQ,QACtBC,EAAyB,EAAQ,QAAqBA,uBAKtDC,EAAiB,CACnB,CAAE,oCAAqC,2BAA2B,GAClE,CAAE,QAAgB,OAAS,GAC3B,CAAE,OAAgB,OAAS,GAC3B,CAAE,WAAgB,KAAS,GAC3B,CAAE,eAAgB,SAAS,GAC3B,CAAE,IAAIC,OAAO,QAAUH,EAAYI,KAAK,KAAO,mBAAoB,KAAM,MAAM,GAC/E,CAAE,IAAID,OAAOF,EAAuBI,OAAS,SAAW,MAAM,IAIhErF,EAAOC,QAAU,SAAoBC,EAAOC,EAAWC,EAASC,GAC9D,IAAIwB,EAAGG,EAAUvB,EAAO6E,EACpB5E,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAEvB,IAAKD,EAAMgC,GAAGqD,QAAQC,KAAQ,OAAO,EAErC,GAAkC,KAA9BtF,EAAMa,IAAIC,WAAWN,GAAwB,OAAO,EAIxD,IAFA4E,EAAWpF,EAAMa,IAAIQ,MAAMb,EAAKG,GAE3BgB,EAAI,EAAGA,EAAIqD,EAAevC,OAAQd,IACrC,GAAIqD,EAAerD,GAAG,GAAG4D,KAAKH,GAAa,MAG7C,GAAIzD,IAAMqD,EAAevC,OAAU,OAAO,EAE1C,GAAItC,EAEF,OAAO6E,EAAerD,GAAG,GAO3B,GAJAG,EAAW7B,EAAY,GAIlB+E,EAAerD,GAAG,GAAG4D,KAAKH,GAC7B,KAAOtD,EAAW5B,EAAS4B,IAAY,CACrC,GAAI9B,EAAMqC,OAAOP,GAAY9B,EAAMsC,UAAa,MAMhD,GAJA9B,EAAMR,EAAMS,OAAOqB,GAAY9B,EAAMU,OAAOoB,GAC5CnB,EAAMX,EAAMY,OAAOkB,GACnBsD,EAAWpF,EAAMa,IAAIQ,MAAMb,EAAKG,GAE5BqE,EAAerD,GAAG,GAAG4D,KAAKH,GAAW,CACf,IAApBA,EAAS3C,QAAgBX,IAC7B,OAWN,OANA9B,EAAMiB,KAAOa,EAEbvB,EAAgBP,EAAMkB,KAAK,aAAc,GAAI,GAC7CX,EAAMe,IAAU,CAAErB,EAAW6B,GAC7BvB,EAAMgB,QAAUvB,EAAM0C,SAASzC,EAAW6B,EAAU9B,EAAMsC,WAAW,IAE9D,I,oCChETxC,EAAOC,QAAU,SAAcC,EAAOC,EAAWC,GAC/C,IAAI4B,EAAU0D,EAAMjF,EAAOkF,EAAa,EAExC,GAAIzF,EAAMqC,OAAOpC,GAAaD,EAAMsC,UAAY,EAAK,OAAO,EAE5DkD,EAAO1D,EAAW7B,EAAY,EAE9B,MAAO6B,EAAW5B,EAChB,GAAIF,EAAMoC,QAAQN,GAAlB,CAKE,GAJA2D,IAIIA,GAAc,GAA0B,SAArBzF,EAAM0E,WAC3B,MAGF5C,QATF,CAeA,GAFA2D,EAAa,IAETzF,EAAMqC,OAAOP,GAAY9B,EAAMsC,WAAa,GAKhD,MAJER,IACA0D,EAAO1D,EAYX,OANA9B,EAAMiB,KAAOuE,EAEbjF,EAAgBP,EAAMkB,KAAK,aAAc,OAAQ,GACjDX,EAAMgB,QAAUvB,EAAM0C,SAASzC,EAAWuF,EAAM,EAAIxF,EAAMsC,WAAW,GACrE/B,EAAMe,IAAU,CAAErB,EAAWD,EAAMiB,OAE5B,I,kCCrCTnB,EAAOC,QAAU,SAAeC,EAAOC,EAAWC,EAASC,GACzD,IAAI0B,EAAQ6D,EAAKC,EAAQ7D,EAAU8D,EAAKrF,EAAOa,EAC3CyE,GAAgB,EAChBrF,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAEvB,GAAIO,EAAM,EAAIG,EAAO,OAAO,EAI5B,GAFAkB,EAAS7B,EAAMa,IAAIC,WAAWN,GAEf,MAAXqB,GAAqC,KAAXA,EAC5B,OAAO,EAST,GALA+D,EAAMpF,EACNA,EAAMR,EAAMuC,UAAU/B,EAAKqB,GAE3B6D,EAAMlF,EAAMoF,EAERF,EAAM,EAAK,OAAO,EAKtB,GAHAtE,EAASpB,EAAMa,IAAIQ,MAAMuE,EAAKpF,GAC9BmF,EAAS3F,EAAMa,IAAIQ,MAAMb,EAAKG,GAE1BgF,EAAOG,QAAQ,MAAQ,EAAK,OAAO,EAGvC,GAAI3F,EAAU,OAAO,EAKrB,IAFA2B,EAAW7B,IAEF,CAEP,GADA6B,IACIA,GAAY5B,EAGd,MAMF,GAHAM,EAAMoF,EAAM5F,EAAMS,OAAOqB,GAAY9B,EAAMU,OAAOoB,GAClDnB,EAAMX,EAAMY,OAAOkB,GAEftB,EAAMG,GAAOX,EAAMqC,OAAOP,GAAY9B,EAAMsC,UAI9C,MAGF,GAAItC,EAAMa,IAAIC,WAAWN,KAASqB,MAE9B7B,EAAMqC,OAAOP,GAAY9B,EAAMsC,WAAa,KAKhD9B,EAAMR,EAAMuC,UAAU/B,EAAKqB,KAGvBrB,EAAMoF,EAAMF,KAGhBlF,EAAMR,EAAMwC,WAAWhC,KAEnBA,EAAMG,MAAV,CAEAkF,GAAgB,EAEhB,OAcF,OAVAH,EAAM1F,EAAMqC,OAAOpC,GAEnBD,EAAMiB,KAAOa,GAAY+D,EAAgB,EAAI,GAE7CtF,EAAgBP,EAAMkB,KAAK,QAAS,OAAQ,GAC5CX,EAAMwF,KAAUJ,EAChBpF,EAAMgB,QAAUvB,EAAM0C,SAASzC,EAAY,EAAG6B,EAAU4D,GAAK,GAC7DnF,EAAMa,OAAUA,EAChBb,EAAMe,IAAU,CAAErB,EAAWD,EAAMiB,OAE5B,I,kCCrFT,IAAIpB,EAAU,EAAQ,QAAmBA,QAGzCC,EAAOC,QAAU,SAAoBC,EAAOC,EAAWC,EAASC,GAC9D,IAAI2B,EAAUkE,EAAezC,EAAW0C,EAAWC,EAAW1C,EAAWG,EAAewC,EAAO/C,EAASC,EAAQjD,EAC5G2B,EAAiBxB,EACjBoB,EAAGC,EAAGF,EACNlB,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAGvB,GAAoC,KAAhCD,EAAMa,IAAIC,WAAWN,KAA0B,OAAO,EAI1D,GAAIL,EAAU,OAAO,EAGa,KAA9BH,EAAMa,IAAIC,WAAWN,IAAiBA,IAE1CgD,EAAYxD,EAAMsC,UAClBtC,EAAMsC,UAAY,EAGlBc,EAAUC,EAASrD,EAAMqC,OAAOpC,GAAaO,GAAOR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,IAE3FiG,EAAY,CAAElG,EAAMS,OAAOR,IAC3BD,EAAMS,OAAOR,GAAaO,EAE1B,MAAOA,EAAMG,EAAK,CAGhB,GAFAP,EAAKJ,EAAMa,IAAIC,WAAWN,IAEtBX,EAAQO,GAOV,MANW,IAAPA,EACFiD,GAAU,EAAIA,EAAS,EAEvBA,IAMJ7C,IA+BF,IA5BAwF,EAAgBxF,GAAOG,EAEvBsF,EAAY,CAAEjG,EAAMqC,OAAOpC,IAC3BD,EAAMqC,OAAOpC,GAAaoD,EAASD,EAEnCG,EAAY,CAAEvD,EAAMU,OAAOT,IAC3BD,EAAMU,OAAOT,GAAaO,EAAMR,EAAMS,OAAOR,GAE7C8B,EAAkB/B,EAAMgC,GAAGC,MAAMC,MAAMC,SAAS,cAoB3CL,EAAW7B,EAAY,EAAG6B,EAAW5B,EAAS4B,IAAY,CAC7D,GAAI9B,EAAMqC,OAAOP,GAAY0B,EAAa,MAK1C,GAHAhD,EAAMR,EAAMS,OAAOqB,GAAY9B,EAAMU,OAAOoB,GAC5CnB,EAAMX,EAAMY,OAAOkB,GAEftB,GAAOG,EAET,MAGF,GAAoC,KAAhCX,EAAMa,IAAIC,WAAWN,KAAzB,CAuCA,GAAIwF,EAAiB,MAIrB,IADAtE,GAAY,EACPC,EAAI,EAAGC,EAAIG,EAAgBU,OAAQd,EAAIC,EAAGD,IAC7C,GAAII,EAAgBJ,GAAG3B,EAAO8B,EAAU5B,GAAS,GAAO,CACtDwB,GAAY,EACZ,MAGJ,GAAIA,EAAa,MAEjBwE,EAAUhF,KAAKlB,EAAMS,OAAOqB,IAC5ByB,EAAUrC,KAAKlB,EAAMU,OAAOoB,IAC5BmE,EAAU/E,KAAKlB,EAAMqC,OAAOP,IAI5B9B,EAAMqC,OAAOP,IAAa,MAzD1B,CAIoC,KAA9B9B,EAAMa,IAAIC,WAAWN,IAAiBA,IAG1C4C,EAAUC,EAASrD,EAAMqC,OAAOP,GAAYtB,GAAOR,EAAMS,OAAOqB,GAAY9B,EAAMU,OAAOoB,IAEzFoE,EAAUhF,KAAKlB,EAAMS,OAAOqB,IAC5B9B,EAAMS,OAAOqB,GAAYtB,EAEzB,MAAOA,EAAMG,EAAK,CAGhB,GAFAP,EAAKJ,EAAMa,IAAIC,WAAWN,IAEtBX,EAAQO,GAOV,MANW,IAAPA,EACFiD,GAAU,EAAIA,EAAS,EAEvBA,IAMJ7C,IAGFwF,EAAgBxF,GAAOG,EAEvBsF,EAAU/E,KAAKlB,EAAMqC,OAAOP,IAC5B9B,EAAMqC,OAAOP,GAAYuB,EAASD,EAElCG,EAAUrC,KAAKlB,EAAMU,OAAOoB,IAC5B9B,EAAMU,OAAOoB,GAAYtB,EAAMR,EAAMS,OAAOqB,IA2ChD,IAjBA6B,EAAgB3D,EAAM0E,WACtB1E,EAAM0E,WAAa,aAEnBnE,EAAeP,EAAMkB,KAAK,kBAAmB,aAAc,GAC3DX,EAAMa,OAAS,IACfb,EAAMe,IAAS6E,EAAQ,CAAElG,EAAW,GAEpCD,EAAMgC,GAAGC,MAAM4C,SAAS7E,EAAOC,EAAW6B,GAE1CvB,EAAeP,EAAMkB,KAAK,mBAAoB,cAAe,GAC7DX,EAAMa,OAAS,IAEfpB,EAAM0E,WAAaf,EACnBwC,EAAM,GAAKnG,EAAMiB,KAIZU,EAAI,EAAGA,EAAI4B,EAAUd,OAAQd,IAChC3B,EAAMS,OAAOkB,EAAI1B,GAAaiG,EAAUvE,GACxC3B,EAAMU,OAAOiB,EAAI1B,GAAasD,EAAU5B,GACxC3B,EAAMqC,OAAOV,EAAI1B,GAAagG,EAAUtE,GAI1C,OAFA3B,EAAMsC,UAAYkB,GAEX,I,kCCxKT,IAAI3D,EAAU,EAAQ,QAAmBA,QAGzCC,EAAOC,QAAU,SAAYC,EAAOC,EAAWC,EAASC,GACtD,IAAI0B,EAAQuE,EAAKhG,EAAIG,EACjBC,EAAMR,EAAMS,OAAOR,GAAaD,EAAMU,OAAOT,GAC7CU,EAAMX,EAAMY,OAAOX,GAKvB,GAHA4B,EAAS7B,EAAMa,IAAIC,WAAWN,KAGf,KAAXqB,GACW,KAAXA,GACW,KAAXA,EACF,OAAO,EAKTuE,EAAM,EACN,MAAO5F,EAAMG,EAAK,CAEhB,GADAP,EAAKJ,EAAMa,IAAIC,WAAWN,KACtBJ,IAAOyB,IAAWhC,EAAQO,GAAO,OAAO,EACxCA,IAAOyB,GAAUuE,IAGvB,QAAIA,EAAM,KAENjG,IAEJH,EAAMiB,KAAOhB,EAAY,EAEzBM,EAAeP,EAAMkB,KAAK,KAAM,KAAM,GACtCX,EAAMe,IAAS,CAAErB,EAAWD,EAAMiB,MAClCV,EAAMa,OAASiF,MAAMD,EAAM,GAAGlB,KAAK/D,OAAOwB,aAAad,MANlC","file":"js/chunk-421f59c4.21e31d47.js","sourcesContent":["// heading (#, ##, ...)\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch, level, tmp, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23/* # */ || pos >= max) { return false; }\n\n // count heading level\n level = 1;\n ch = state.src.charCodeAt(++pos);\n while (ch === 0x23/* # */ && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || (pos < max && ch !== 0x20/* space */)) { return false; }\n\n if (silent) { return true; }\n\n // Let's cut tails like ' ### ' from the end of string\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n\n return true;\n};\n","// lheading (---, ===)\n\n'use strict';\n\n\nmodule.exports = function lheading(state, startLine, endLine/*, silent*/) {\n var content, terminate, i, l, token, pos, max, level, marker,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n // jump line-by-line until empty one or EOF\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) { continue; }\n\n //\n // Check for underline in setext header\n //\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = (marker === 0x3D/* = */ ? 1 : 2);\n break;\n }\n }\n }\n }\n\n // quirk for blockquotes, this line should already be checked by that rule\n if (state.sCount[nextLine] < 0) { continue; }\n\n // Some tags can terminate paragraph without empty line.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine + 1;\n\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line - 1 ];\n token.children = [];\n\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n\n return true;\n};\n","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n // Check bullet\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x2B/* + */) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos arter marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine];\n\n // List marker should have at least 2 chars (digit + dot)\n if (pos + 1 >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1; }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) { return -1; }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) { return -1; }\n\n continue;\n }\n\n // found valid marker\n if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n break;\n }\n\n return -1;\n }\n\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i, l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var nextLine,\n initial,\n offset,\n indent,\n oldTShift,\n oldIndent,\n oldLIndent,\n oldTight,\n oldParentType,\n start,\n posAfterMarker,\n ch,\n pos,\n max,\n indentAfterMarker,\n markerValue,\n markerCharCode,\n isOrdered,\n contentStart,\n listTokIdx,\n prevEmptyEnd,\n listLines,\n itemLines,\n tight = true,\n terminatorRules,\n token,\n i, l, terminate;\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n }\n\n // We should terminate list on style change. Remember first one to compare.\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n\n // For validation mode we can terminate immediately\n if (silent) { return true; }\n\n // Start list\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n\n token = state.push('ordered_list_open', 'ol', 1);\n if (markerValue !== 1) {\n token.attrs = [ [ 'start', markerValue ] ];\n }\n\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [ startLine, 0 ];\n token.markup = String.fromCharCode(markerCharCode);\n\n //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n }\n\n // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n if (indentAfterMarker > 4) { indentAfterMarker = 1; }\n\n // \" - test\"\n // ^^^^^ - calculating total length of this thing\n indent = initial + indentAfterMarker;\n\n // Run subparser & write tokens\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [ startLine, 0 ];\n\n oldIndent = state.blkIndent;\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldLIndent = state.sCount[startLine];\n oldParentType = state.parentType;\n state.blkIndent = indent;\n state.tight = true;\n state.parentType = 'list';\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n }\n\n // If any of list item is tight, mark list as tight\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n }\n // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n prevEmptyEnd = (state.line - startLine) > 1 && state.isEmpty(state.line - 1);\n\n state.blkIndent = oldIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldLIndent;\n state.tight = oldTight;\n state.parentType = oldParentType;\n\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) { break; }\n\n if (state.isEmpty(nextLine)) {\n break;\n }\n\n //\n // Try to check if list is terminated or continued.\n //\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n // fail if terminating block found\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n // fail if list has another type\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n if (posAfterMarker < 0) { break; }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break; }\n }\n\n // Finilize list\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n token.markup = String.fromCharCode(markerCharCode);\n\n listLines[1] = nextLine;\n state.line = nextLine;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","// Code block (4 spaces padded)\n\n'use strict';\n\n\nmodule.exports = function code(state, startLine, endLine/*, silent*/) {\n var nextLine, last, token, emptyLines = 0;\n\n if (state.sCount[startLine] - state.blkIndent < 4) { return false; }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n emptyLines++;\n\n // workaround for lists: 2 blank lines should terminate indented\n // code block, but not fenced code block\n if (emptyLines >= 2 && state.parentType === 'list') {\n break;\n }\n\n nextLine++;\n continue;\n }\n\n emptyLines = 0;\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n break;\n }\n\n state.line = last;\n\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, true);\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// fences (``` lang, ~~~ lang)\n\n'use strict';\n\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker, len, params, nextLine, mem, token, markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n if (pos + 3 > max) { return false; }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n return false;\n }\n\n // scan marker length\n mem = pos;\n pos = state.skipChars(pos, marker);\n\n len = pos - mem;\n\n if (len < 3) { return false; }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (params.indexOf('`') >= 0) { return false; }\n\n // Since start is found, we can report success here in validation mode\n if (silent) { return true; }\n\n // search end of block\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) { continue; }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker);\n\n // closing code fence must be at least as long as the opening one\n if (pos - mem < len) { continue; }\n\n // make sure tail has spaces only\n pos = state.skipSpaces(pos);\n\n if (pos < max) { continue; }\n\n haveEndMarker = true;\n // found!\n break;\n }\n\n // If a fence has heading spaces, they should be removed from its inner block\n len = state.sCount[startLine];\n\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [ startLine, state.line ];\n\n return true;\n};\n","// Block quotes\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var nextLine, lastLineEmpty, oldTShift, oldSCount, oldBMarks, oldIndent, oldParentType, lines, initial, offset, ch,\n terminatorRules, token,\n i, l, terminate,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // check the block quote marker\n if (state.src.charCodeAt(pos++) !== 0x3E/* > */) { return false; }\n\n // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n if (silent) { return true; }\n\n // skip one optional space (but not tab, check cmark impl) after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\n\n oldBMarks = [ state.bMarks[startLine] ];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldSCount = [ state.sCount[startLine] ];\n state.sCount[startLine] = offset - initial;\n\n oldTShift = [ state.tShift[startLine] ];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n\n // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag\n // ```\n // > test\n // - - -\n // ```\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < oldIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E/* > */) {\n // This line is inside the blockquote.\n\n // skip one optional space (but not tab, check cmark impl) after '>'\n if (state.src.charCodeAt(pos) === 0x20) { pos++; }\n\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n }\n\n // Case 2: line is not inside the blockquote, and the last line was empty.\n if (lastLineEmpty) { break; }\n\n // Case 3: another tag found.\n terminate = false;\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n if (terminate) { break; }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n\n // A negative indentation means that this is a paragraph continuation\n //\n state.sCount[nextLine] = -1;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'blockquote';\n\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [ startLine, 0 ];\n\n state.md.block.tokenize(state, startLine, nextLine);\n\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n\n state.parentType = oldParentType;\n lines[1] = state.line;\n\n // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n }\n state.blkIndent = oldIndent;\n\n return true;\n};\n","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker, cnt, ch, token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A/* * */ &&\n marker !== 0x2D/* - */ &&\n marker !== 0x5F/* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && !isSpace(ch)) { return false; }\n if (ch === marker) { cnt++; }\n }\n\n if (cnt < 3) { return false; }\n\n if (silent) { return true; }\n\n state.line = startLine + 1;\n\n token = state.push('hr', 'hr', 0);\n token.map = [ startLine, state.line ];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n\n return true;\n};\n"],"sourceRoot":""}