{"version":3,"sources":["../node_modules/markdown-it/lib/index.js","../node_modules/mdurl/encode.js","../node_modules/mdurl/decode.js","../node_modules/mdurl/format.js","../node_modules/mdurl/parse.js","../node_modules/uc.micro/index.js","../node_modules/uc.micro/categories/Cf/regex.js","../node_modules/markdown-it/lib/helpers/index.js","../node_modules/markdown-it/lib/helpers/parse_link_label.js","../node_modules/markdown-it/lib/helpers/parse_link_destination.js","../node_modules/markdown-it/lib/helpers/parse_link_title.js","../node_modules/markdown-it/lib/renderer.js","../node_modules/markdown-it/lib/parser_core.js","../node_modules/markdown-it/lib/rules_core/normalize.js","../node_modules/markdown-it/lib/rules_core/block.js","../node_modules/markdown-it/lib/rules_core/inline.js","../node_modules/markdown-it/lib/rules_core/linkify.js","../node_modules/markdown-it/lib/rules_core/replacements.js","../node_modules/markdown-it/lib/rules_core/smartquotes.js","../node_modules/markdown-it/lib/rules_core/state_core.js","../node_modules/markdown-it/lib/parser_block.js","../node_modules/markdown-it/lib/rules_block/table.js","../node_modules/markdown-it/lib/rules_block/code.js","../node_modules/markdown-it/lib/rules_block/fence.js","../node_modules/markdown-it/lib/rules_block/blockquote.js","../node_modules/markdown-it/lib/rules_block/hr.js","../node_modules/markdown-it/lib/rules_block/list.js","../node_modules/markdown-it/lib/rules_block/reference.js","../node_modules/markdown-it/lib/rules_block/heading.js","../node_modules/markdown-it/lib/rules_block/lheading.js","../node_modules/markdown-it/lib/rules_block/html_block.js","../node_modules/markdown-it/lib/common/html_blocks.js","../node_modules/markdown-it/lib/rules_block/paragraph.js","../node_modules/markdown-it/lib/rules_block/state_block.js","../node_modules/markdown-it/lib/parser_inline.js","../node_modules/markdown-it/lib/rules_inline/text.js","../node_modules/markdown-it/lib/rules_inline/newline.js","../node_modules/markdown-it/lib/rules_inline/escape.js","../node_modules/markdown-it/lib/rules_inline/backticks.js","../node_modules/markdown-it/lib/rules_inline/link.js","../node_modules/markdown-it/lib/rules_inline/image.js","../node_modules/markdown-it/lib/rules_inline/autolink.js","../node_modules/markdown-it/lib/rules_inline/html_inline.js","../node_modules/markdown-it/lib/rules_inline/entity.js","../node_modules/markdown-it/lib/rules_inline/balance_pairs.js","../node_modules/markdown-it/lib/rules_inline/text_collapse.js","../node_modules/markdown-it/lib/rules_inline/state_inline.js","../node_modules/linkify-it/index.js","../node_modules/linkify-it/lib/re.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/markdown-it/lib/presets/default.js","../node_modules/markdown-it/lib/presets/zero.js","../node_modules/markdown-it/lib/presets/commonmark.js","../node_modules/markdown-it/lib/common/utils.js","../node_modules/markdown-it/index.js","../node_modules/uc.micro/categories/P/regex.js","../node_modules/markdown-it/lib/ruler.js","../node_modules/markdown-it/lib/token.js","../node_modules/markdown-it/lib/common/entities.js","../node_modules/mdurl/index.js","../node_modules/uc.micro/properties/Any/regex.js","../node_modules/uc.micro/categories/Cc/regex.js","../node_modules/uc.micro/categories/Z/regex.js","../node_modules/markdown-it/lib/common/html_re.js","../node_modules/markdown-it/lib/rules_inline/strikethrough.js","../node_modules/markdown-it/lib/rules_inline/emphasis.js"],"names":["utils","__webpack_require__","helpers","Renderer","ParserCore","ParserBlock","ParserInline","LinkifyIt","mdurl","punycode","config","default","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","url","str","trim","toLowerCase","test","RECODE_HOSTNAME_FOR","normalizeLink","parsed","parse","hostname","protocol","indexOf","toASCII","er","encode","format","normalizeLinkText","toUnicode","decode","MarkdownIt","presetName","options","this","isString","inline","block","core","renderer","linkify","assign","configure","set","prototype","presets","self","Error","components","Object","keys","forEach","name","rules","ruler","enableOnly","rules2","ruler2","enable","list","ignoreInvalid","result","Array","isArray","chain","concat","missed","filter","length","disable","use","plugin","args","slice","call","arguments","apply","src","env","state","State","process","tokens","render","parseInline","inlineMode","renderInline","module","exports","encodeCache","string","exclude","keepEscaped","i","l","code","nextCode","cache","defaultChars","ch","String","fromCharCode","push","toString","toUpperCase","charCodeAt","getEncodeCache","encodeURIComponent","componentChars","decodeCache","getDecodeCache","replace","seq","b1","b2","b3","b4","chr","parseInt","slashes","auth","port","pathname","search","hash","Url","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","javascript:","slashedProtocol","http","https","ftp","gopher","file","http:","https:","ftp:","gopher:","file:","slashesDenoteHost","lowerProto","hec","rest","split","simplePath","exec","proto","substr","match","atSign","hostEnd","lastIndexOf","host","parseHost","ipv6Hostname","hostparts","part","newpart","j","k","validParts","notHost","bit","unshift","join","qm","u","Any","Cc","Cf","P","Z","parseLinkLabel","parseLinkDestination","parseLinkTitle","start","disableNested","level","found","marker","prevPos","labelEnd","max","posMax","oldPos","pos","md","skipToken","isSpace","unescapeAll","ok","lines","escapeHtml","default_rules","code_inline","idx","slf","token","renderAttrs","content","code_block","fence","highlighted","tmpAttrs","tmpToken","info","langName","highlight","attrIndex","attrs","langPrefix","image","renderInlineAsText","children","renderToken","hardbreak","xhtmlOut","softbreak","breaks","text","html_block","html_inline","nextToken","needLf","hidden","nesting","tag","type","len","Ruler","_rules","Core","getRules","NEWLINES_RE","NULL_RE","Token","map","tok","arrayReplaceAt","isLinkClose","currentToken","nodes","ln","lastPos","htmlLinkLevel","fullUrl","urlText","links","blockTokens","pretest","schema","index","markup","lastIndex","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","c","r","p","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","blkIdx","typographer","isWhiteSpace","isPunctChar","isMdAsciiPunct","QUOTE_TEST_RE","QUOTE_RE","APOSTROPHE","replaceAt","process_inlines","t","thisLevel","item","lastChar","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","stack","openQuote","closeQuote","OUTER","single","quotes","StateCore","alt","tokenize","startLine","endLine","line","hasEmptyLines","maxNesting","skipEmptyLines","sCount","blkIndent","tight","isEmpty","outTokens","lineMax","getLine","bMarks","eMarks","escapedSplit","escapes","backTicked","lastBackTick","substring","silent","lineText","nextLine","columns","columnCount","aligns","tableLines","tbodyLines","tShift","last","getLines","params","mem","haveEndMarker","skipChars","skipSpaces","adjustTab","initial","lastLineEmpty","offset","oldBMarks","oldBSCount","oldIndent","oldParentType","oldSCount","oldTShift","spaceAfterMarker","terminate","terminatorRules","wasOutdented","oldLineMax","bsCount","parentType","cnt","skipBulletListMarker","skipOrderedListMarker","contentStart","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldLIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","Number","Math","min","markTightParagraphs","normalizeReference","_endLine","destEndPos","destEndLineNo","href","label","res","title","references","tmp","skipSpacesBack","skipCharsBack","block_names","HTML_OPEN_CLOSE_TAG_RE","HTML_SEQUENCES","RegExp","source","html","StateBlock","s","indent_found","ddIndent","from","begin","end","keepLastLF","lineIndent","first","queue","lineStart","_rules2","postProcess","pending","pushPending","isTerminatorChar","pmax","ESCAPED","matchStart","matchEnd","labelStart","ref","parseReference","EMAIL_RE","AUTOLINK_RE","tail","linkMatch","emailMatch","HTML_TAG_RE","lc","isLetter","entities","has","isValidEntityCode","fromCodePoint","DIGITAL_RE","NAMED_RE","lastDelim","currDelim","delimiters","close","jump","open","curr","StateInline","pendingLevel","scanDelims","canSplitWord","count","can_open","can_close","left_flanking","right_flanking","obj","key","_class","isFunction","escapeRE","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","validate","re","src_auth","src_host_port_strict","src_path","//","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto:","mailto","src_email_name","src_host_strict","tlds_2ch_src_re","tlds_default","compile","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","aliases","schemaError","val","__compiled__","__schemas__","compiled","link","isRegExp","normalize","alias","slist","schema_test","src_ZPCc","schema_search","__index__","__text_cache__","resetScanCache","Match","shift","__last_index__","__schema__","raw","createMatch","schemas","reduce","acc","hasOwnProperty","add","definition","m","ml","me","next","tld_pos","testSchemaAt","keepOld","sort","el","arr","reverse","opts","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","global","__WEBPACK_AMD_DEFINE_RESULT__","root","nodeType","freeGlobal","window","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","overflow","not-basic","invalid-input","baseMinusTMin","floor","stringFromCharCode","error","RangeError","array","fn","mapDomain","parts","ucs2decode","value","extra","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","input","out","basic","oldi","w","baseMinusT","codePoint","inputLength","n","bias","splice","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","version","ucs2","undefined","_hasOwnProperty","object","surrogate1","surrogate2","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","&","<",">","\"","replaceUnsafeChar","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","lib","ucmicro","TypeError","unescapeMd","escaped","entity","replaceEntityPattern","newElements","__rules__","__cache__","__find__","__compile__","chains","rule","enabled","altName","at","opt","before","beforeName","ruleName","after","afterName","chainName","meta","attrPush","attrData","attrSet","attrGet","attrJoin","open_tag","close_tag","scanned","startDelim","endDelim","loneMarkers","pop","isStrong"],"mappings":"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","file":"static/js/vendors~markdown~widget~widget-misc.ddd66556.chunk.js","sourcesContent":["// Main parser class\n\n'use strict';\n\n\nvar utils = require('./common/utils');\nvar helpers = require('./helpers');\nvar Renderer = require('./renderer');\nvar ParserCore = require('./parser_core');\nvar ParserBlock = require('./parser_block');\nvar ParserInline = require('./parser_inline');\nvar LinkifyIt = require('linkify-it');\nvar mdurl = require('mdurl');\nvar punycode = require('punycode');\n\n\nvar config = {\n 'default': require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n};\n\n////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n\n return BAD_PROTO_RE.test(str) ? (GOOD_DATA_RE.test(str) ? true : false) : true;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = [ 'http:', 'https:', 'mailto:' ];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) { /**/ }\n }\n }\n\n return mdurl.decode(mdurl.format(parsed));\n}\n\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(lang, str, true).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.inline = new ParserInline();\n\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.block = new ParserBlock();\n\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n this.core = new ParserCore();\n\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n this.renderer = new Renderer();\n\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n this.linkify = new LinkifyIt();\n\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n this.validateLink = validateLink;\n\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n this.normalizeLink = normalizeLink;\n\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n this.normalizeLinkText = normalizeLinkText;\n\n\n // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n this.utils = utils;\n\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n this.helpers = utils.assign({}, helpers);\n\n\n this.options = {};\n this.configure(presetName);\n\n if (options) { this.set(options); }\n}\n\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you with - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n var self = this, presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name'); }\n }\n\n if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty'); }\n\n if (presets.options) { self.set(presets.options); }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.enable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) { list = [ list ]; }\n\n [ 'core', 'block', 'inline' ].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n\n result = result.concat(this.inline.ruler2.disable(list, true));\n\n var missed = list.filter(function (name) { return result.indexOf(name) < 0; });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n return this;\n};\n\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n var args = [ this ].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and returns list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n\n state.inlineMode = true;\n this.core.process(state);\n\n return state.tokens;\n};\n\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\n\nmodule.exports = MarkdownIt;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\n'use strict';\n\n\nmodule.exports = function format(url) {\n var result = '';\n\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n\n return result;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = [ '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t' ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [ '{', '}', '|', '\\\\', '^', '`' ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = [ '\\'' ].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = [ '%', '/', '?', ';', '#' ].concat(autoEscape),\n hostEndingChars = [ '/', '?', '#' ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n /* eslint-disable no-script-url */\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n /* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, slashesDenoteHost) {\n var i, l, lowerProto, hec, slashes,\n rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd--; }\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost(host);\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function(host) {\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nmodule.exports = urlParse;\n","'use strict';\n\nexports.Any = require('./properties/Any/regex');\nexports.Cc = require('./categories/Cc/regex');\nexports.Cf = require('./categories/Cf/regex');\nexports.P = require('./categories/P/regex');\nexports.Z = require('./categories/Z/regex');\n","module.exports=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","// Just a shortcut for bulk export\n'use strict';\n\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level, found, marker, prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n if (marker === 0x5D /* ] */) {\n level--;\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n }\n\n // restore old state\n state.pos = oldPos;\n\n return labelEnd;\n};\n","// Parse link destination\n//\n'use strict';\n\n\nvar isSpace = require('../common/utils').isSpace;\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkDestination(str, pos, max) {\n var code, level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++;\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === 0x0A /* \\n */ || isSpace(code)) { return result; }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n }\n\n // no closing '>'\n return result;\n }\n\n // this should be ... } else { ... branch\n\n level = 0;\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) { break; }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break; }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n if (code === 0x28 /* ( */) {\n level++;\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break; }\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) { return result; }\n if (level !== 0) { return result; }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n};\n","// Parse link title\n//\n'use strict';\n\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\n\nmodule.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) { return result; }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return result; }\n\n pos++;\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29; }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++;\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n'use strict';\n\n\nvar assign = require('./common/utils').assign;\nvar unescapeAll = require('./common/utils').unescapeAll;\nvar escapeHtml = require('./common/utils').escapeHtml;\n\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar default_rules = {};\n\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '';\n};\n\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n return '' +\n escapeHtml(tokens[idx].content) +\n '\\n';\n};\n\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n highlighted, i, tmpAttrs, tmpToken;\n\n if (info) {\n langName = info.split(/\\s+/g)[0];\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf(''\n + highlighted\n + '\\n';\n }\n\n\n return '

'\n        + highlighted\n        + '
\\n';\n};\n\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n\n // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] =\n slf.renderInlineAsText(token.children, options, env);\n\n return slf.renderToken(tokens, idx, options);\n};\n\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n return options.breaks ? (options.xhtmlOut ? '
\\n' : '
\\n') : '\\n';\n};\n\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n return escapeHtml(tokens[idx].content);\n};\n\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n return tokens[idx].content;\n};\n\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer() {\n\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) { return ''; }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx];\n\n // Tight list paragraphs\n if (token.hidden) {\n return '';\n }\n\n // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n }\n\n // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n\n return result;\n};\n\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n }\n }\n\n return result;\n};\n\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to renter\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n var i, len, type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n [ 'normalize', require('./rules_core/normalize') ],\n [ 'block', require('./rules_core/block') ],\n [ 'inline', require('./rules_core/inline') ],\n [ 'linkify', require('./rules_core/linkify') ],\n [ 'replacements', require('./rules_core/replacements') ],\n [ 'smartquotes', require('./rules_core/smartquotes') ]\n];\n\n\n/**\n * new Core()\n **/\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n var i, l, rules;\n\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\n\n\nmodule.exports = Core;\n","// Normalize input string\n\n'use strict';\n\n\nvar NEWLINES_RE = /\\r[\\n\\u0085]?|[\\u2424\\u2028\\u0085]/g;\nvar NULL_RE = /\\u0000/g;\n\n\nmodule.exports = function inline(state) {\n var str;\n\n // Normalize newlines\n str = state.src.replace(NEWLINES_RE, '\\n');\n\n // Replace NULL characters\n str = str.replace(NULL_RE, '\\uFFFD');\n\n state.src = str;\n};\n","'use strict';\n\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [ 0, 1 ];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};\n","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens, tok, i, l;\n\n // Parse inlines\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\n\nmodule.exports = function linkify(state) {\n var i, j, l, tokens, token, currentToken, nodes, ln, text, pos, lastPos,\n level, htmlLinkLevel, url, fullUrl, urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) { return; }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' ||\n !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n\n htmlLinkLevel = 0;\n\n // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i];\n\n // Skip content of markdown links\n if (currentToken.type === 'link_close') {\n i--;\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n continue;\n }\n\n // Skip content of html tag links\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n if (htmlLinkLevel > 0) { continue; }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n\n text = currentToken.content;\n links = state.md.linkify.match(text);\n\n // Now split string to nodes\n nodes = [];\n level = currentToken.level;\n lastPos = 0;\n\n for (ln = 0; ln < links.length; ln++) {\n\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { continue; }\n\n urlText = links[ln].text;\n\n // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n\n lastPos = links[ln].lastIndex;\n }\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n }\n\n // replace current node\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};\n","// Simple typographyc replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict';\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - miltiplication 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r|p)\\)/i;\n\nvar SCOPED_ABBR_RE = /\\((c|tm|r|p)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n p: '§',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i, token, inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content\n .replace(/\\+-/g, '±')\n // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n // em-dash\n .replace(/(^|[^-])---([^-]|$)/mg, '$1\\u2014$2')\n // en-dash\n .replace(/(^|\\s)--(\\s|$)/mg, '$1\\u2013$2')\n .replace(/(^|[^-\\s])--([^-\\s]|$)/mg, '$1\\u2013$2');\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline') { continue; }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n\n }\n};\n","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = '\\u2019'; /* ’ */\n\n\nfunction replaceAt(str, index, ch) {\n return str.substr(0, index) + ch + str.substr(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar,\n isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace,\n canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) { break; }\n }\n stack.length = j + 1;\n\n if (token.type !== 'text') { continue; }\n\n text = token.content;\n pos = 0;\n max = text.length;\n\n /*eslint no-labels:0,block-scoped-var:0*/\n OUTER:\n while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n if (!t) { break; }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = (t[0] === \"'\");\n\n // Find previous character,\n // default to space if it's the beginning of the line\n //\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n if (tokens[j].type !== 'text') continue;\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n }\n\n // Find next character,\n // default to space if it's the end of the line\n //\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n if (tokens[j].type !== 'text') continue;\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // treat this as the middle of the word\n canOpen = false;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n if (stack[j].level < thisLevel) { break; }\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n }\n\n // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(\n tokens[item.token].content, item.pos, openQuote);\n\n pos += closeQuote.length - 1;\n if (item.token === i) { pos += openQuote.length - 1; }\n\n text = token.content;\n max = text.length;\n\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) { return; }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n\n if (state.tokens[blkIdx].type !== 'inline' ||\n !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};\n","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token;\n\n\nmodule.exports = StateCore;\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\nvar _rules = [\n // First 2 params - rule name & source. Secondary array - list of rules,\n // which can be terminated by this one.\n [ 'table', require('./rules_block/table'), [ 'paragraph', 'reference' ] ],\n [ 'code', require('./rules_block/code') ],\n [ 'fence', require('./rules_block/fence'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'blockquote', require('./rules_block/blockquote'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'hr', require('./rules_block/hr'), [ 'paragraph', 'reference', 'blockquote', 'list' ] ],\n [ 'list', require('./rules_block/list'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'reference', require('./rules_block/reference') ],\n [ 'heading', require('./rules_block/heading'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'lheading', require('./rules_block/lheading') ],\n [ 'html_block', require('./rules_block/html_block'), [ 'paragraph', 'reference', 'blockquote' ] ],\n [ 'paragraph', require('./rules_block/paragraph') ]\n];\n\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() });\n }\n}\n\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n if (line >= endLine) { break; }\n\n // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n if (state.sCount[line] < state.blkIndent) { break; }\n\n // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n }\n\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n if (ok) { break; }\n }\n\n // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n state.tight = !hasEmptyLines;\n\n // paragraph might \"eat\" one newline after it in nested lists\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n};\n\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) { return; }\n\n state = new this.State(src, md, env, outTokens);\n\n this.tokenize(state, state.line, state.lineMax);\n};\n\n\nParserBlock.prototype.State = require('./rules_block/state_block');\n\n\nmodule.exports = ParserBlock;\n","// GFM table, non-standard\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.blkIndent,\n max = state.eMarks[line];\n\n return state.src.substr(pos, max - pos);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n escapes = 0,\n lastPos = 0,\n backTicked = false,\n lastBackTick = 0;\n\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x60/* ` */) {\n if (backTicked) {\n // make \\` close code sequence, but not open it;\n // the reason is: `\\` is correct code block\n backTicked = false;\n lastBackTick = pos;\n } else if (escapes % 2 === 0) {\n backTicked = true;\n lastBackTick = pos;\n }\n } else if (ch === 0x7c/* | */ && (escapes % 2 === 0) && !backTicked) {\n result.push(str.substring(lastPos, pos));\n lastPos = pos + 1;\n }\n\n if (ch === 0x5c/* \\ */) {\n escapes++;\n } else {\n escapes = 0;\n }\n\n pos++;\n\n // If there was an un-closed backtick, go back to just after\n // the last backtick, but as if it was a normal character\n if (pos === max && backTicked) {\n backTicked = false;\n pos = lastBackTick + 1;\n }\n\n ch = str.charCodeAt(pos);\n }\n\n result.push(str.substring(lastPos));\n\n return result;\n}\n\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, nextLine, columns, columnCount, token,\n aligns, t, tableLines, tbodyLines;\n\n // should have at least two lines\n if (startLine + 2 > endLine) { return false; }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) { return false; }\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[nextLine] - state.blkIndent >= 4) { return false; }\n\n // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n if (pos >= state.eMarks[nextLine]) { return false; }\n\n ch = state.src.charCodeAt(pos++);\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */) { return false; }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false; }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n\n columns = lineText.split('|');\n aligns = [];\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) { return false; }\n if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A/* : */) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n if (lineText.indexOf('|') === -1) { return false; }\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, ''));\n\n // header row will define an amount of columns in the entire table,\n // and align row shouldn't be smaller than that (the rest of the rows can)\n columnCount = columns.length;\n if (columnCount > aligns.length) { return false; }\n\n if (silent) { return true; }\n\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [ startLine, 0 ];\n\n token = state.push('thead_open', 'thead', 1);\n token.map = [ startLine, startLine + 1 ];\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [ startLine, startLine + 1 ];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n token.map = [ startLine, startLine + 1 ];\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.map = [ startLine, startLine + 1 ];\n token.children = [];\n\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [ startLine + 2, 0 ];\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n lineText = getLine(state, nextLine).trim();\n if (lineText.indexOf('|') === -1) { break; }\n if (state.sCount[nextLine] - state.blkIndent >= 4) { break; }\n columns = escapedSplit(lineText.replace(/^\\||\\|$/g, ''));\n\n token = state.push('tr_open', 'tr', 1);\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n if (aligns[i]) {\n token.attrs = [ [ 'style', 'text-align:' + aligns[i] ] ];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n\n token = state.push('td_close', 'td', -1);\n }\n token = state.push('tr_close', 'tr', -1);\n }\n token = state.push('tbody_close', 'tbody', -1);\n token = state.push('table_close', 'table', -1);\n\n tableLines[1] = tbodyLines[1] = nextLine;\n state.line = nextLine;\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;\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 nextLine++;\n continue;\n }\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 it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\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(String.fromCharCode(marker)) >= 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 adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n wasOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\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 spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\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 + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [ state.bsCount[startLine] ];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\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 oldParentType = state.parentType;\n state.parentType = 'blockquote';\n wasOutdented = false;\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 // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n if (state.sCount[nextLine] < state.blkIndent) wasOutdented = true;\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/* > */ && !wasOutdented) {\n // This line is inside the blockquote.\n\n // skip spaces after \">\" and re-calculate offset\n initial = offset = state.sCount[nextLine] + pos - (state.bMarks[nextLine] + state.tShift[nextLine]);\n\n // skip one optional space after '>'\n if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\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 + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\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\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[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 oldIndent = state.blkIndent;\n state.blkIndent = 0;\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.lineMax = oldLineMax;\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 state.bsCount[i + startLine] = oldBSCount[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 // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\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","// Lists\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\n// Search `[-+*][\\n ]`, returns next pos after 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 after 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 ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldIndent,\n oldLIndent,\n oldParentType,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.tShift[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n }\n\n // Detect list type and position after marker\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.substr(start, posAfterMarker - start - 1));\n\n // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n if (isTerminatingParagraph && markerValue !== 1) return false;\n\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n\n } else {\n return false;\n }\n\n // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) 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 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 oldParentType = state.parentType;\n state.parentType = '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 (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\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 state.blkIndent = indent;\n state.tight = true;\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\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 //\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 // Finalize 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 state.parentType = oldParentType;\n\n // mark paragraphs tight if needed\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};\n","'use strict';\n\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1;\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false; }\n\n // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D /* ] */ &&\n state.src.charCodeAt(pos - 1) !== 0x5C/* \\ */) {\n if (pos + 1 === max) { return false; }\n if (state.src.charCodeAt(pos + 1) !== 0x3A/* : */) { return false; }\n break;\n }\n }\n\n endLine = state.lineMax;\n\n // jump line-by-line until empty one or EOF\n terminatorRules = state.md.block.ruler.getRules('reference');\n\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\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 // 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 str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x5B /* [ */) {\n return false;\n } else if (ch === 0x5D /* ] */) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A /* \\n */) {\n lines++;\n } else if (ch === 0x5C /* \\ */) {\n pos++;\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false; }\n\n // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n if (!res.ok) { return false; }\n\n href = state.md.normalizeLink(res.str);\n if (!state.md.validateLink(href)) { return false; }\n\n pos = res.pos;\n lines += res.lines;\n\n // save cursor state, we could require to rollback later\n destEndPos = pos;\n destEndLineNo = lines;\n\n // [label]: destination 'title'\n // ^^^ skipping those spaces\n start = pos;\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n }\n\n // [label]: destination 'title'\n // ^^^^^^^ parse this\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n }\n\n // skip trailing spaces until the rest of the line\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n while (pos < max) {\n ch = str.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n }\n\n // Reference can not terminate anything. This check is for safety only.\n /*istanbul ignore if*/\n if (silent) { return true; }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = { title: title, href: href };\n }\n\n state.parentType = oldParentType;\n\n state.line = startLine + lines + 1;\n return true;\n};\n","// 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 // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\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 && !isSpace(ch))) { 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, oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph');\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\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 state.parentType = oldParentType;\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 it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\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","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n\n'use strict';\n\n\nmodule.exports = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'meta',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n];\n","// Paragraph\n\n'use strict';\n\n\nmodule.exports = function paragraph(state, startLine/*, endLine*/) {\n var content, terminate, i, l, token, oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n\n oldParentType = state.parentType;\n state.parentType = '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 // 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 content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n\n state.line = nextLine;\n\n token = state.push('paragraph_open', 'p', 1);\n token.map = [ startLine, state.line ];\n\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [ startLine, state.line ];\n token.children = [];\n\n token = state.push('paragraph_close', 'p', -1);\n\n state.parentType = oldParentType;\n\n return true;\n};\n","// Parser state class\n\n'use strict';\n\nvar Token = require('../token');\nvar isSpace = require('../common/utils').isSpace;\n\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n\n this.src = src;\n\n // link to parser instance\n this.md = md;\n\n this.env = env;\n\n //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n\n this.bMarks = []; // line begin offsets for fast jumps\n this.eMarks = []; // line end offsets for fast jumps\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n this.sCount = []; // indents for each line (tabs expanded)\n\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n this.bsCount = [];\n\n // block parser variables\n this.blkIndent = 0; // required block content indent\n // (for example, if we are in list)\n this.line = 0; // line index in src\n this.lineMax = 0; // lines count\n this.tight = false; // loose/tight mode for lists\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n this.parentType = 'root';\n\n this.level = 0;\n\n // renderer\n this.result = '';\n\n // Create caches\n // Generate markers.\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) { pos++; }\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n }\n\n // Push fake entry to simplify cache bounds checks\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n\n if (nesting < 0) { this.level--; }\n token.level = this.level;\n if (nesting > 0) { this.level++; }\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n return from;\n};\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n }\n return pos;\n};\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1; }\n }\n return pos;\n};\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) { break; }\n }\n return pos;\n};\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) { return pos; }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) { return pos + 1; }\n }\n return pos;\n};\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i, lineIndent, ch, first, last, queue, lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n};\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token;\n\n\nmodule.exports = StateBlock;\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\n\nvar Ruler = require('./ruler');\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\nvar _rules = [\n [ 'text', require('./rules_inline/text') ],\n [ 'newline', require('./rules_inline/newline') ],\n [ 'escape', require('./rules_inline/escape') ],\n [ 'backticks', require('./rules_inline/backticks') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').tokenize ],\n [ 'emphasis', require('./rules_inline/emphasis').tokenize ],\n [ 'link', require('./rules_inline/link') ],\n [ 'image', require('./rules_inline/image') ],\n [ 'autolink', require('./rules_inline/autolink') ],\n [ 'html_inline', require('./rules_inline/html_inline') ],\n [ 'entity', require('./rules_inline/entity') ]\n];\n\nvar _rules2 = [\n [ 'balance_pairs', require('./rules_inline/balance_pairs') ],\n [ 'strikethrough', require('./rules_inline/strikethrough').postProcess ],\n [ 'emphasis', require('./rules_inline/emphasis').postProcess ],\n [ 'text_collapse', require('./rules_inline/text_collapse') ]\n];\n\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline() {\n var i;\n\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n}\n\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n var ok, i, pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) { break; }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) { state.pos++; }\n cache[pos] = state.pos;\n};\n\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n var ok, i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n if (ok) { break; }\n }\n }\n\n if (ok) {\n if (state.pos >= end) { break; }\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n\n this.tokenize(state);\n\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\n\n\nmodule.exports = ParserInline;\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n'use strict';\n\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A/* \\n */:\n case 0x21/* ! */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2D/* - */:\n case 0x3A/* : */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) { return false; }\n\n if (!silent) { state.pending += state.src.slice(state.pos, pos); }\n\n state.pos = pos;\n\n return true;\n};\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/\n","// Proceess '\\n'\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function newline(state, silent) {\n var pmax, max, pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false; }\n\n pmax = state.pending.length - 1;\n max = state.posMax;\n\n // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n state.pending = state.pending.replace(/ +$/, '');\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++;\n\n // skip heading spaces for next line\n while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++; }\n\n state.pos = pos;\n return true;\n};\n","// Process escaped chars and hardbreaks\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) { ESCAPED.push(0); }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1; });\n\n\nmodule.exports = function escape(state, silent) {\n var ch, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) { return false; }\n\n pos++;\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch < 256 && ESCAPED[ch] !== 0) {\n if (!silent) { state.pending += state.src[pos]; }\n state.pos += 2;\n return true;\n }\n\n if (ch === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++;\n // skip leading whitespaces from next line\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n if (!isSpace(ch)) { break; }\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n }\n\n if (!silent) { state.pending += '\\\\'; }\n state.pos++;\n return true;\n};\n","// Parse backticks\n\n'use strict';\n\nmodule.exports = function backtick(state, silent) {\n var start, max, marker, matchStart, matchEnd, token,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60/* ` */) { return false; }\n\n start = pos;\n pos++;\n max = state.posMax;\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; }\n\n marker = state.src.slice(start, pos);\n\n matchStart = matchEnd = pos;\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1;\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; }\n\n if (matchEnd - matchStart === marker.length) {\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart)\n .replace(/[ \\n]+/g, ' ')\n .trim();\n }\n state.pos = matchEnd;\n return true;\n }\n }\n\n if (!silent) { state.pending += marker; }\n state.pos += marker.length;\n return true;\n};\n","// Process [link]( \"stuff\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n title,\n token,\n href = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [ [ 'href', href ] ];\n if (title) {\n attrs.push([ 'title', title ]);\n }\n\n state.md.inline.tokenize(state);\n\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process ![image]( \"title\")\n\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\nvar isSpace = require('../common/utils').isSpace;\n\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false; }\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false; }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n\n // parser failed to find ']', so it's not a valid link\n if (labelEnd < 0) { return false; }\n\n pos = labelEnd + 1;\n if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n //\n // Inline link\n //\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n if (pos >= max) { return false; }\n\n // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n }\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n start = pos;\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n\n // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n\n // [link]( \"title\" )\n // ^^ skipping these spaces\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n if (!isSpace(code) && code !== 0x0A) { break; }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n state.pos = oldPos;\n return false;\n }\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') { return false; }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n }\n\n // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n if (!label) { label = state.src.slice(labelStart, labelEnd); }\n\n ref = state.env.references[normalizeReference(label)];\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n href = ref.href;\n title = ref.title;\n }\n\n //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n\n state.md.inline.parse(\n content,\n state.md,\n state.env,\n tokens = []\n );\n\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [ [ 'src', href ], [ 'alt', '' ] ];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push([ 'title', title ]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};\n","// Process autolinks ''\n\n'use strict';\n\n\n/*eslint max-len:0*/\nvar EMAIL_RE = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\nvar AUTOLINK_RE = /^<([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)>/;\n\n\nmodule.exports = function autolink(state, silent) {\n var tail, linkMatch, emailMatch, url, fullUrl, token,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n tail = state.src.slice(pos);\n\n if (tail.indexOf('>') < 0) { return false; }\n\n if (AUTOLINK_RE.test(tail)) {\n linkMatch = tail.match(AUTOLINK_RE);\n\n url = linkMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += linkMatch[0].length;\n return true;\n }\n\n if (EMAIL_RE.test(tail)) {\n emailMatch = tail.match(EMAIL_RE);\n\n url = emailMatch[0].slice(1, -1);\n fullUrl = state.md.normalizeLink('mailto:' + url);\n if (!state.md.validateLink(fullUrl)) { return false; }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [ [ 'href', fullUrl ] ];\n token.markup = 'autolink';\n token.info = 'auto';\n\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += emailMatch[0].length;\n return true;\n }\n\n return false;\n};\n","// Process html tags\n\n'use strict';\n\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */);\n}\n\n\nmodule.exports = function html_inline(state, silent) {\n var ch, match, max, token,\n pos = state.pos;\n\n if (!state.md.options.html) { return false; }\n\n // Check start\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n pos + 2 >= max) {\n return false;\n }\n\n // Quick fail on second char\n ch = state.src.charCodeAt(pos + 1);\n if (ch !== 0x21/* ! */ &&\n ch !== 0x3F/* ? */ &&\n ch !== 0x2F/* / */ &&\n !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n if (!match) { return false; }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n }\n state.pos += match[0].length;\n return true;\n};\n","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) { state.pending += entities[match[1]]; }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) { state.pending += '&'; }\n state.pos++;\n return true;\n};\n","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\n\nmodule.exports = function link_pairs(state) {\n var i, j, lastDelim, currDelim,\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n lastDelim = delimiters[i];\n\n if (!lastDelim.close) { continue; }\n\n j = i - lastDelim.jump - 1;\n\n while (j >= 0) {\n currDelim = delimiters[j];\n\n if (currDelim.open &&\n currDelim.marker === lastDelim.marker &&\n currDelim.end < 0 &&\n currDelim.level === lastDelim.level) {\n\n // typeofs are for backward compatibility with plugins\n var odd_match = (currDelim.close || lastDelim.open) &&\n typeof currDelim.length !== 'undefined' &&\n typeof lastDelim.length !== 'undefined' &&\n (currDelim.length + lastDelim.length) % 3 === 0;\n\n if (!odd_match) {\n lastDelim.jump = i - j;\n lastDelim.open = false;\n currDelim.end = i;\n currDelim.jump = 0;\n break;\n }\n }\n\n j -= currDelim.jump + 1;\n }\n }\n};\n","// Merge adjacent text nodes into one, and re-calculate all token levels\n//\n'use strict';\n\n\nmodule.exports = function text_collapse(state) {\n var curr, last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels\n level += tokens[curr].nesting;\n tokens[curr].level = level;\n\n if (tokens[curr].type === 'text' &&\n curr + 1 < max &&\n tokens[curr + 1].type === 'text') {\n\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) { tokens[last] = tokens[curr]; }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n};\n","// Inline parser state\n\n'use strict';\n\n\nvar Token = require('../token');\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\nvar isPunctChar = require('../common/utils').isPunctChar;\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0;\n\n this.cache = {}; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.delimiters = []; // Emphasis-like delimiters\n}\n\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n};\n\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n\n if (nesting < 0) { this.level--; }\n token.level = this.level;\n if (nesting > 0) { this.level++; }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n return token;\n};\n\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start, lastChar, nextChar, count, can_open, can_close,\n isLastWhiteSpace, isLastPunctChar,\n isNextWhiteSpace, isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start);\n\n // treat beginning of the line as a whitespace\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) { pos++; }\n\n count = pos - start;\n\n // treat end of the line as a whitespace\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n};\n\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token;\n\n\nmodule.exports = StateInline;\n","'use strict';\n\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n\n sources.forEach(function (source) {\n if (!source) { return; }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n\n return obj;\n}\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\nfunction isRegExp(obj) { return _class(obj) === '[object RegExp]'; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\n\n\nfunction escapeRE(str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&'); }\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\n\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\n\n\nvar defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp(\n '^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i'\n );\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp(\n '^' +\n self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' +\n self.re.src_port +\n self.re.src_host_terminator +\n self.re.src_path,\n\n 'i'\n );\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') { return 0; }\n if (pos >= 3 && text[pos - 3] === '/') { return 0; }\n return tail.match(self.re.no_http)[0].length;\n }\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp(\n '^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i'\n );\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n return 0;\n }\n }\n};\n\n/*eslint-disable max-len*/\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\n/*eslint-enable max-len*/\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\n\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n return 0;\n };\n}\n\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile(self) {\n\n // Load & clone RE patterns.\n var re = self.re = require('./lib/re')(self.__opts__);\n\n // Define dynamic patterns\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n tlds.push(re.src_xn);\n\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) { return tpl.replace('%TLDS%', re.src_tlds); }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n //\n // Compile each schema\n //\n\n var aliases = [];\n\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name];\n\n // skip disabled methods\n if (val === null) { return; }\n\n var compiled = { validate: null, link: null };\n\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n });\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate =\n self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize =\n self.__compiled__[self.__schemas__[alias]].normalize;\n });\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = { validate: null, normalize: createNormalizer() };\n\n //\n // Build schema condition\n //\n var slist = Object.keys(self.__compiled__)\n .filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n })\n .map(escapeRE)\n .join('|');\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n\n self.re.pretest = RegExp(\n '(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@',\n 'i'\n );\n\n //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text;\n}\n\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n}\n\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options);\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n this.__schema__ = '';\n this.__text_cache__ = '';\n\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n\n this.re = {};\n\n compile(this);\n}\n\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) { return false; }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ ||\n (shift === this.__index__ && next > this.__last_index__)) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n};\n\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0, result = [];\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n }\n\n // Cut head if cache was used\n var tail = shift ? text.slice(shift) : text;\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n};\n\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [ list ];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list)\n .sort()\n .filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n })\n .reverse();\n\n compile(this);\n return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize(match) {\n\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) { match.url = 'http://' + match.url; }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile() {\n};\n\n\nmodule.exports = LinkifyIt;\n","'use strict';\n\n\nmodule.exports = function (opts) {\n var re = {};\n\n // Use direct extract instead of `regenerate` to reduse browserified size\n re.src_Any = require('uc.micro/properties/Any/regex').source;\n re.src_Cc = require('uc.micro/categories/Cc/regex').source;\n re.src_Z = require('uc.micro/categories/Z/regex').source;\n re.src_P = require('uc.micro/categories/P/regex').source;\n\n // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n re.src_ZPCc = [ re.src_Z, re.src_P, re.src_Cc ].join('|');\n\n // \\p{\\Z\\Cc} (white spaces + control)\n re.src_ZCc = [ re.src_Z, re.src_Cc ].join('|');\n\n // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n var text_separators = '[><\\uff5c]';\n\n // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')';\n // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 =\n\n '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)';\n\n // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n\n re.src_port =\n\n '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n\n re.src_host_terminator =\n\n '(?=$|' + text_separators + '|' + re.src_ZPCc + ')(?!-|_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n\n re.src_path =\n\n '(?:' +\n '[/?#]' +\n '(?:' +\n '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-]).|' +\n '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' +\n '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' +\n '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' +\n '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' +\n \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" +\n \"\\\\'(?=\" + re.src_pseudo_letter + '|[-]).|' + // allow `I'm_king` if no pair found\n '\\\\.{2,3}[a-zA-Z0-9%/]|' + // github has ... in commit range links. Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]).|' +\n (opts && opts['---'] ?\n '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n :\n '\\\\-+|'\n ) +\n '\\\\,(?!' + re.src_ZCc + ').|' + // allow `,,,` in paths\n '\\\\!(?!' + re.src_ZCc + '|[!]).|' +\n '\\\\?(?!' + re.src_ZCc + '|[?]).' +\n ')+' +\n '|\\\\/' +\n ')?';\n\n re.src_email_name =\n\n '[\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]+';\n\n re.src_xn =\n\n 'xn--[a-z0-9\\\\-]{1,59}';\n\n // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root =\n\n // Allow letters & digits (http://test1)\n '(?:' +\n re.src_xn +\n '|' +\n re.src_pseudo_letter + '{1,63}' +\n ')';\n\n re.src_domain =\n\n '(?:' +\n re.src_xn +\n '|' +\n '(?:' + re.src_pseudo_letter + ')' +\n '|' +\n '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' +\n ')';\n\n re.src_host =\n\n '(?:' +\n // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain/*_root*/ + ')' +\n ')';\n\n re.tpl_host_fuzzy =\n\n '(?:' +\n re.src_ip4 +\n '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' +\n ')';\n\n re.tpl_host_no_ip_fuzzy =\n\n '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n\n re.src_host_strict =\n\n re.src_host + re.src_host_terminator;\n\n re.tpl_host_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_host_terminator;\n\n re.src_host_port_strict =\n\n re.src_host + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_fuzzy_strict =\n\n re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n\n re.tpl_host_port_no_ip_fuzzy_strict =\n\n re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n\n\n ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n\n // Rude test fuzzy links by host, for quick deny\n re.tpl_host_fuzzy_test =\n\n 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n\n re.tpl_email_fuzzy =\n\n '(^|' + text_separators + '|\\\\(|' + re.src_ZCc + ')(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n\n re.tpl_link_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n\n re.tpl_link_no_ip_fuzzy =\n // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n '(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|' + re.src_ZPCc + '))' +\n '((?![$+<=>^`|\\uff5c])' + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n\n return re;\n};\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","// markdown-it default options\n\n'use strict';\n\n\nmodule.exports = {\n options: {\n html: false, // Enable HTML tags in source\n xhtmlOut: false, // Use '/' to close single tags (
)\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false, // Convert '\\n' in paragraphs into
\n langPrefix: 'language-', // CSS language prefix for fenced blocks\n linkify: false, // autoconvert URL-like texts to links\n\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with = 0xD800 && c <= 0xDFFF) { return false; }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false; }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false; }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false; }\n if (c === 0x0B) { return false; }\n if (c >= 0x0E && c <= 0x1F) { return false; }\n if (c >= 0x7F && c <= 0x9F) { return false; }\n // out of range\n if (c > 0x10FFFF) { return false; }\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n\n return String.fromCharCode(surrogate1, surrogate2);\n }\n return String.fromCharCode(c);\n}\n\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\n\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ?\n parseInt(name.slice(2), 16)\n :\n parseInt(name.slice(1), 10);\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) { return str; }\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str; }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped; }\n return replaceEntityPattern(match, entity);\n });\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n return str;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n return false;\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) { return true; }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n return false;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex');\n\n// Currently without astral characters support.\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n}\n\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true;\n default:\n return false;\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference(str) {\n // use .toUpperCase() instead of .toLowerCase()\n // here to avoid a conflict with Object.prototype\n // members (most notably, `__proto__`)\n return str.trim().replace(/\\s+/g, ' ').toUpperCase();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\n\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint;\n// exports.replaceEntities = replaceEntities;\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;\n","'use strict';\n\n\nmodule.exports = require('./lib/');\n","module.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n\n\n/**\n * new Ruler()\n **/\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = [];\n\n // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n this.__cache__ = null;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n return -1;\n};\n\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = [ '' ];\n\n // collect unique names\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) { return; }\n\n if (chain && rule.alt.indexOf(chain) < 0) { return; }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + name); }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + beforeName); }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n var opt = options || {};\n\n if (index === -1) { throw new Error('Parser rule not found: ' + afterName); }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and enable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n this.__rules__.forEach(function (rule) { rule.enabled = false; });\n\n this.enable(list, ignoreInvalid);\n};\n\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) { list = [ list ]; }\n\n var result = [];\n\n // Search by name and disable\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) { return; }\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n\n this.__cache__ = null;\n return result;\n};\n\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n }\n\n // Chain can be empty, if rules disabled. But we still have to return Array.\n return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;\n","// Token class\n\n'use strict';\n\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n this.tag = tag;\n\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n this.attrs = null;\n\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n this.map = null;\n\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n this.nesting = nesting;\n\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n this.level = 0;\n\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n this.children = null;\n\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n this.content = '';\n\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n this.markup = '';\n\n /**\n * Token#info -> String\n *\n * fence infostring\n **/\n this.info = '';\n\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n this.meta = null;\n\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n this.block = false;\n\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n this.hidden = false;\n}\n\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) { return -1; }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) { return i; }\n }\n return -1;\n};\n\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [ attrData ];\n }\n};\n\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [ name, value ];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n};\n\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name), value = null;\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n return value;\n};\n\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([ name, value ]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n};\n\n\nmodule.exports = Token;\n","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n\n/*eslint quotes:0*/\nmodule.exports = require('entities/maps/entities.json');\n","'use strict';\n\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse = require('./parse');\n","module.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","module.exports=/[\\0-\\x1F\\x7F-\\x9F]/","module.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","// Regexps to match html elements\n\n'use strict';\n\nvar attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\n\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\n\nvar attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\n\nvar attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\n\nvar open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\n\nvar close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?].*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\n\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\n\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;\n","// ~~strike through~~\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function strikethrough(state, silent) {\n var i, scanned, token, len, ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x7E/* ~ */) { return false; }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) { return false; }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n\n state.delimiters.push({\n marker: marker,\n jump: i,\n token: state.tokens.length - 1,\n level: state.level,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function strikethrough(state) {\n var i, j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E/* ~ */) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' &&\n state.tokens[endDelim.token - 1].content === '~') {\n\n loneMarkers.push(endDelim.token - 1);\n }\n }\n\n // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n};\n","// Process *this* and _that_\n//\n'use strict';\n\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nmodule.exports.tokenize = function emphasis(state, silent) {\n var i, scanned, token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) { return false; }\n\n if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false; }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n\n // An amount of characters before this one that's equivalent to\n // current one. In plain English: if this delimiter does not open\n // an emphasis, neither do previous `jump` characters.\n //\n // Used to skip sequences like \"*****\" in one step, for 1st asterisk\n // value will be 0, for 2nd it's 1 and so on.\n //\n jump: i,\n\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n\n // Token level.\n //\n level: state.level,\n\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n\n return true;\n};\n\n\n// Walk through delimiter list and replace text tokens with tags\n//\nmodule.exports.postProcess = function emphasis(state) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n delimiters = state.delimiters,\n max = state.delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n continue;\n }\n\n // Process only opening markers\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n\n // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n isStrong = i > 0 &&\n delimiters[i - 1].end === startDelim.end + 1 &&\n delimiters[i - 1].token === startDelim.token - 1 &&\n delimiters[startDelim.end + 1].token === endDelim.token + 1 &&\n delimiters[i - 1].marker === startDelim.marker;\n\n ch = String.fromCharCode(startDelim.marker);\n\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n};\n"],"sourceRoot":""}