{"version":3,"sources":["webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/strong.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/html.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/decode.js","webpack:///./node_modules/is-alphabetical/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenizer.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/table.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/defaults.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/code-inline.js","webpack:///./node_modules/trim-trailing-lines/index.js","webpack:///./node_modules/react-markdown/lib/renderers.js","webpack:///./node_modules/state-toggle/index.js","webpack:///./node_modules/react-markdown/node_modules/replace-ext/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/text.js","webpack:///./node_modules/unherit/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-remove-position/index.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/parse.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/break.js","webpack:///./node_modules/vfile-location/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/react-markdown/lib/wrap-table-rows.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/link.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/url.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/url.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/delete.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/escape.js","webpack:///./node_modules/bail/index.js","webpack:///./src/components/markdown.js","webpack:///./src/templates/project.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/unescape.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-is/convert.js","webpack:///./node_modules/is-whitespace-character/index.js","webpack:///./node_modules/x-is-string/index.js","webpack:///./node_modules/react-markdown/lib/get-definitions.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./node_modules/is-alphanumerical/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/parser.js","webpack:///./node_modules/collapse-white-space/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/link.js","webpack:///./node_modules/markdown-escapes/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/tag.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:///./node_modules/react-markdown/lib/uri-transformer.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/list.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/repeat-string/index.js","webpack:///./node_modules/trim/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile/core.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.js","webpack:///./node_modules/mdast-add-list-metadata/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/locate/emphasis.js","webpack:///./node_modules/react-markdown/node_modules/parse-entities/index.js","webpack:///./node_modules/react-markdown/node_modules/is-plain-obj/index.js","webpack:///./node_modules/react-markdown/node_modules/unified/index.js","webpack:///./node_modules/is-decimal/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/newline.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/reference.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:///./node_modules/react-markdown/lib/plugins/naive-html.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/interrupt.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/normalize.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/delete.js","webpack:///./node_modules/is-hexadecimal/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/react-markdown/lib/symbols.js","webpack:///./node_modules/react-markdown/node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/break.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/escape.js","webpack:///./node_modules/is-word-character/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/strong.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/set-options.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-block.js","webpack:///./node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:///./node_modules/react-markdown/node_modules/vfile-message/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/definition.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile/index.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/get-indentation.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/util/remove-indentation.js","webpack:///./node_modules/react-markdown/node_modules/is-buffer/index.js","webpack:///./node_modules/mdast-add-list-metadata/index.js","webpack:///./node_modules/trough/index.js"],"names":["module","exports","value","fromIndex","asterisk","indexOf","underscore","openTag","closeTag","openCloseTag","RegExp","tag","xtend","entities","ctx","decoder","raw","position","options","normalize","warning","handleWarning","offsets","offset","line","result","push","start","indent","reason","code","file","message","handler","text","reference","textContext","referenceContext","character","charCodeAt","type","location","index","length","method","name","matched","valueLength","self","this","tokens","methods","tokenizers","column","eat","now","updatePosition","onlyAtStart","atStart","notInList","inList","notInBlock","inBlock","notInLink","inLink","apply","fail","Error","eof","subvalue","lastIndex","pos","toOffset","Position","end","before","indentation","last","getOffset","node","prev","combined","n","l","concat","current","substring","validateEat","reset","test","parent","children","MERGEABLE_NODES","mergeable","call","exitStart","add","arguments","blockquote","commonmark","whitespace","silent","alignments","alignment","row","lines","queue","hasDash","align","cell","preamble","count","opening","lineCount","rows","table","lineIndex","pipeIndex","first","gfm","slice","join","splice","charAt","tokenizeInline","footnotes","pedantic","blocks","normalizeArray","parts","allowAboveRoot","up","i","unshift","filter","xs","f","res","resolve","resolvedPath","resolvedAbsolute","path","process","cwd","TypeError","split","p","isAbsolute","trailingSlash","substr","paths","Array","prototype","relative","from","to","trim","arr","fromParts","toParts","Math","min","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","ext","extname","startDot","startPart","preDotState","str","len","String","replace","React","supportsStringRender","parseInt","version","createElement","SimpleRenderer","props","getCoreProps","break","paragraph","emphasis","strong","thematicBreak","delete","link","image","linkReference","imageReference","bind","tableHead","tableBody","tableRow","tableCell","style","textAlign","undefined","coreProps","isHeader","root","useFragment","className","Fragment","list","attrs","toString","ordered","listItem","checkbox","checked","readOnly","definition","heading","level","inlineCode","language","html","skipHtml","isBlock","escapeHtml","comp","nodeProps","dangerouslySetInnerHTML","__html","virtualHtml","parsedHtml","cloneElement","element","key","state","context","npath","nFileName","tokenizer","inlineMethods","inlineTokenizers","locator","decode","content","source","inherits","Super","Of","From","parameters","footnoteDefinition","EXPRESSION_INITIAL_TAB","currentLine","subqueue","identifier","exit","C_BRACKET_OPEN","enterBlock","tokenizeBlock","visit","hard","soft","force","hasOwn","Object","hasOwnProperty","toStr","defineProperty","gOPD","getOwnPropertyDescriptor","isArray","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","enumerable","configurable","newValue","writable","getProperty","extend","src","copy","copyIsArray","clone","deep","removePosition","EXPRESSION_LINE_BREAKS","offsetToPositionFactory","indices","positionToOffsetFactory","isNaN","contents","toPosition","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","e","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","array","noop","nextTick","args","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","dir","umask","wrap","word","locate","url","PROTOCOLS","PROTOCOLS_LENGTH","protocol","match","parenCount","nextCharacter","toLowerCase","enterLink","nonTerminated","fn","callback","invoked","params","done","error","then","err","Link","href","List","InlineCode","CodeBlock","Markdown","renderers","BOOKMARK_STATE","Project","data","allSanityCollection","allSanityProject","project","sanityProject","collectionForProject","flatten","map","collection","normalizeCollection","find","projects","id","useBookmarkState","slug","bookmarked","loaded","toggleBookmark","bookmarkState","description","shortDescription","asset","fluid","links","linkType","getPrimaryLinkText","data-bookmark-state","onClick","withGradientFill","longDescription","developer","getLinkText","PROJECTS_PER_COLLECTION","escape","convert","Boolean","typeFactory","ok","anyFactory","matchesFactory","tests","checks","results","convertAll","re","fromCode","fromCharCode","getDefinitions","defs","reduce","definitions","child","_toConsumableArray","arr2","_arrayWithoutHoles","iter","Symbol","iterator","_iterableToArray","_nonIterableSpread","unified","parse","PropTypes","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","uriTransformer","defaultRenderers","symbols","allTypes","keys","ReactMarkdown","parserOptions","allowedTypes","disallowedTypes","parser","plugins","applyParserPlugin","rawAst","renderProps","astPlugins","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","hasHtmlParser","some","item","identity","HtmlParser","determineAstPlugins","transformedAst","runSync","ast","plugin","use","defaultProps","sourcePos","rawSourcePos","transformLinkUri","propTypes","string","bool","func","arrayOf","oneOf","oneOfType","linkTarget","transformImageUri","object","types","alphabetical","decimal","toggle","vfileLocation","unescape","Parser","doc","setOptions","proto","enterList","interruptParagraph","interruptList","interruptBlockquote","blockTokenizers","newline","indentedCode","fencedCode","atxHeading","setextHeading","footnote","autoLink","deletion","blockMethods","tokenizeFactory","own","LINK_MARKERS","COMMONMARK_LINK_MARKERS","closed","beforeURL","beforeTitle","hasMarker","markers","isImage","depth","alt","escapes","defaults","settings","default","point","trimTrailingLines","interrupt","size","interruptors","left","protocols","uri","colon","repeat","getIndent","removeIndent","nextIndex","startIndex","prefixed","currentMarker","prevEmpty","empty","items","allLines","emptyLines","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","TAB_SIZE","trail","loose","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","pedanticListItem","normalListItem","replacer","$0","max","bullet","rest","trimmedLines","$1","$2","$3","$4","Number","create","ctor","superCtor","super_","TempCtor","cache","num","right","buffer","VFile","encoding","order","prop","messages","history","assertPart","part","assertNonEmpty","assertPath","get","set","stem","MAILTO_LENGTH","hasAtCharacter","fenceCount","flag","exdentedContent","closing","exdentedClosing","lang","ReactIs","defaultNodePosition","renderer","isValidElementType","getNodeProps","resolveChildren","childNode","opts","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","ref","assignDefined","nodeKey","tight","unwrapParagraphs","getListItemChildren","inline","columnAlignment","parsedChildren","el","Children","toArray","mergeNodeChildren","tree","visitor","stack","one","pop","all","legacy","invalid","hexadecimal","alphanumerical","decodeEntity","option","entityCharacters","namedEntity","terminated","characters","following","output","entity","begin","next","diff","additional","handleText","handleReference","warningContext","hexa","attribute","bases","disallowed","flush","Function","x","getPrototypeOf","bail","vfile","trough","plain","attachers","transformers","namespace","frozen","freezeIndex","processor","assertUnfrozen","freeze","addPlugin","addList","addPreset","entry","assertParser","newable","stringify","Compiler","assertCompiler","assertNode","compile","complete","assertDone","processSync","destination","values","transformer","Infinity","cb","Promise","executor","reject","pipeline","asyncName","bracketed","intro","referenceType","contentQueue","openingCount","found","tickQueue","selfClosingRe","simpleTagRe","open","currentParent","selfClosing","getSelfClosing","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","interruptor","config","ignore","bools","collapseWhiteSpace","strikethrough","previous","preceding","visitParents","CONTINUE","SKIP","EXIT","reverse","parents","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","is","subresult","toResult","step","char","document","innerHTML","textContent","blankQueue","subvalueQueue","CODE_INDENT","SETEXT_MARKERS","hardBreak","b","for","c","d","g","h","k","m","q","r","t","v","w","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","typeOf","markerCount","indents","sequence","sequences","untangle","mode","forEach","disallow","VMessagePrototype","VMessage","origin","range","parseOrigin","ruleId","fatal","isEnclosedURLCharacter","isUnclosedURLCharacter","unherit","Local","filePath","info","warn","stops","floor","maximum","padding","minIndent","matrix","shift","isBuffer","readFloatLE","isSlowBuffer","_isBuffer","visitWithParents","listNode","fns","middleware","input"],"mappings":"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","file":"component---src-templates-project-js-43e14c29196419cd07bf.js","sourcesContent":["'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('**', fromIndex);\n var underscore = value.indexOf('__', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = \"[^\\\"'=<>`\\\\u0000-\\\\u0020]+\";\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?].*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\nexports.tag = new RegExp('^(?:' + openTag + '|' + closeTag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');","'use strict';\n\nvar xtend = require('xtend');\n\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n/* Factory to create an entity decoder. */\n\nfunction factory(ctx) {\n decoder.raw = decodeRaw;\n return decoder;\n /* Normalize `position` to add an `indent`. */\n\n function normalize(position) {\n var offsets = ctx.offset;\n var line = position.line;\n var result = [];\n\n while (++line) {\n if (!(line in offsets)) {\n break;\n }\n\n result.push((offsets[line] || 0) + 1);\n }\n\n return {\n start: position,\n indent: result\n };\n }\n /* Handle a warning.\n * See https://github.com/wooorm/parse-entities\n * for the warnings. */\n\n\n function handleWarning(reason, position, code) {\n if (code === 3) {\n return;\n }\n\n ctx.file.message(reason, position);\n }\n /* Decode `value` (at `position`) into text-nodes. */\n\n\n function decoder(value, position, handler) {\n entities(value, {\n position: normalize(position),\n warning: handleWarning,\n text: handler,\n reference: handler,\n textContext: ctx,\n referenceContext: ctx\n });\n }\n /* Decode `value` (at `position`) into a string. */\n\n\n function decodeRaw(value, position, options) {\n return entities(value, xtend(options, {\n position: normalize(position),\n warning: handleWarning\n }));\n }\n}","'use strict';\n\nmodule.exports = alphabetical; // Check if the given character code, or the character code at the first\n// character, is alphabetical.\n\nfunction alphabetical(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97 && code <= 122\n /* a-z */\n || code >= 65 && code <= 90\n /* A-Z */\n ;\n}","'use strict';\n\nmodule.exports = factory;\nvar MERGEABLE_NODES = {\n text: mergeText,\n blockquote: mergeBlockquote\n};\n/* Check whether a node is mergeable with adjacent nodes. */\n\nfunction mergeable(node) {\n var start;\n var end;\n\n if (node.type !== 'text' || !node.position) {\n return true;\n }\n\n start = node.position.start;\n end = node.position.end;\n /* Only merge nodes which occupy the same size as their\n * `value`. */\n\n return start.line !== end.line || end.column - start.column === node.value.length;\n}\n/* Merge two text nodes: `node` into `prev`. */\n\n\nfunction mergeText(prev, node) {\n prev.value += node.value;\n return prev;\n}\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\n\n\nfunction mergeBlockquote(prev, node) {\n if (this.options.commonmark) {\n return node;\n }\n\n prev.children = prev.children.concat(node.children);\n return prev;\n}\n/* Construct a tokenizer. This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\n\n\nfunction factory(type) {\n return tokenize;\n /* Tokenizer for a bound `type`. */\n\n function tokenize(value, location) {\n var self = this;\n var offset = self.offset;\n var tokens = [];\n var methods = self[type + 'Methods'];\n var tokenizers = self[type + 'Tokenizers'];\n var line = location.line;\n var column = location.column;\n var index;\n var length;\n var method;\n var name;\n var matched;\n var valueLength;\n /* Trim white space only lines. */\n\n if (!value) {\n return tokens;\n }\n /* Expose on `eat`. */\n\n\n eat.now = now;\n eat.file = self.file;\n /* Sync initial offset. */\n\n updatePosition('');\n /* Iterate over `value`, and iterate over all\n * tokenizers. When one eats something, re-iterate\n * with the remaining value. If no tokenizer eats,\n * something failed (should not happen) and an\n * exception is thrown. */\n\n while (value) {\n index = -1;\n length = methods.length;\n matched = false;\n\n while (++index < length) {\n name = methods[index];\n method = tokenizers[name];\n\n if (method && (\n /* istanbul ignore next */\n !method.onlyAtStart || self.atStart) && (!method.notInList || !self.inList) && (!method.notInBlock || !self.inBlock) && (!method.notInLink || !self.inLink)) {\n valueLength = value.length;\n method.apply(self, [eat, value]);\n matched = valueLength !== value.length;\n\n if (matched) {\n break;\n }\n }\n }\n /* istanbul ignore if */\n\n\n if (!matched) {\n self.file.fail(new Error('Infinite loop'), eat.now());\n }\n }\n\n self.eof = now();\n return tokens;\n /* Update line, column, and offset based on\n * `value`. */\n\n function updatePosition(subvalue) {\n var lastIndex = -1;\n var index = subvalue.indexOf('\\n');\n\n while (index !== -1) {\n line++;\n lastIndex = index;\n index = subvalue.indexOf('\\n', index + 1);\n }\n\n if (lastIndex === -1) {\n column += subvalue.length;\n } else {\n column = subvalue.length - lastIndex;\n }\n\n if (line in offset) {\n if (lastIndex !== -1) {\n column += offset[line];\n } else if (column <= offset[line]) {\n column = offset[line] + 1;\n }\n }\n }\n /* Get offset. Called before the first character is\n * eaten to retrieve the range's offsets. */\n\n\n function getOffset() {\n var indentation = [];\n var pos = line + 1;\n /* Done. Called when the last character is\n * eaten to retrieve the range’s offsets. */\n\n return function () {\n var last = line + 1;\n\n while (pos < last) {\n indentation.push((offset[pos] || 0) + 1);\n pos++;\n }\n\n return indentation;\n };\n }\n /* Get the current position. */\n\n\n function now() {\n var pos = {\n line: line,\n column: column\n };\n pos.offset = self.toOffset(pos);\n return pos;\n }\n /* Store position information for a node. */\n\n\n function Position(start) {\n this.start = start;\n this.end = now();\n }\n /* Throw when a value is incorrectly eaten.\n * This shouldn’t happen but will throw on new,\n * incorrect rules. */\n\n\n function validateEat(subvalue) {\n /* istanbul ignore if */\n if (value.substring(0, subvalue.length) !== subvalue) {\n /* Capture stack-trace. */\n self.file.fail(new Error('Incorrectly eaten value: please report this ' + 'warning on http://git.io/vg5Ft'), now());\n }\n }\n /* Mark position and patch `node.position`. */\n\n\n function position() {\n var before = now();\n return update;\n /* Add the position to a node. */\n\n function update(node, indent) {\n var prev = node.position;\n var start = prev ? prev.start : before;\n var combined = [];\n var n = prev && prev.end.line;\n var l = before.line;\n node.position = new Position(start);\n /* If there was already a `position`, this\n * node was merged. Fixing `start` wasn’t\n * hard, but the indent is different.\n * Especially because some information, the\n * indent between `n` and `l` wasn’t\n * tracked. Luckily, that space is\n * (should be?) empty, so we can safely\n * check for it now. */\n\n if (prev && indent && prev.indent) {\n combined = prev.indent;\n\n if (n < l) {\n while (++n < l) {\n combined.push((offset[n] || 0) + 1);\n }\n\n combined.push(before.column);\n }\n\n indent = combined.concat(indent);\n }\n\n node.position.indent = indent || [];\n return node;\n }\n }\n /* Add `node` to `parent`s children or to `tokens`.\n * Performs merges where possible. */\n\n\n function add(node, parent) {\n var children = parent ? parent.children : tokens;\n var prev = children[children.length - 1];\n\n if (prev && node.type === prev.type && node.type in MERGEABLE_NODES && mergeable(prev) && mergeable(node)) {\n node = MERGEABLE_NODES[node.type].call(self, prev, node);\n }\n\n if (node !== prev) {\n children.push(node);\n }\n\n if (self.atStart && tokens.length !== 0) {\n self.exitStart();\n }\n\n return node;\n }\n /* Remove `subvalue` from `value`.\n * `subvalue` must be at the start of `value`. */\n\n\n function eat(subvalue) {\n var indent = getOffset();\n var pos = position();\n var current = now();\n validateEat(subvalue);\n apply.reset = reset;\n reset.test = test;\n apply.test = test;\n value = value.substring(subvalue.length);\n updatePosition(subvalue);\n indent = indent();\n return apply;\n /* Add the given arguments, add `position` to\n * the returned node, and return the node. */\n\n function apply(node, parent) {\n return pos(add(pos(node), parent), indent);\n }\n /* Functions just like apply, but resets the\n * content: the line and column are reversed,\n * and the eaten value is re-added.\n * This is useful for nodes with a single\n * type of content, such as lists and tables.\n * See `apply` above for what parameters are\n * expected. */\n\n\n function reset() {\n var node = apply.apply(null, arguments);\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return node;\n }\n /* Test the position, after eating, and reverse\n * to a not-eaten state. */\n\n\n function test() {\n var result = pos({});\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return result.position;\n }\n }\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n var self = this;\n var index;\n var alignments;\n var alignment;\n var subvalue;\n var row;\n var length;\n var lines;\n var queue;\n var character;\n var hasDash;\n var align;\n var cell;\n var preamble;\n var count;\n var opening;\n var now;\n var position;\n var lineCount;\n var line;\n var rows;\n var table;\n var lineIndex;\n var pipeIndex;\n var first;\n /* Exit when not in gfm-mode. */\n\n if (!self.options.gfm) {\n return;\n }\n /* Get the rows.\n * Detecting tables soon is hard, so there are some\n * checks for performance here, such as the minimum\n * number of rows, and allowed characters in the\n * alignment row. */\n\n\n index = 0;\n lineCount = 0;\n length = value.length + 1;\n lines = [];\n\n while (index < length) {\n lineIndex = value.indexOf(C_NEWLINE, index);\n pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n if (lineIndex === -1) {\n lineIndex = value.length;\n }\n\n if (pipeIndex === -1 || pipeIndex > lineIndex) {\n if (lineCount < MIN_TABLE_ROWS) {\n return;\n }\n\n break;\n }\n\n lines.push(value.slice(index, lineIndex));\n lineCount++;\n index = lineIndex + 1;\n }\n /* Parse the alignment row. */\n\n\n subvalue = lines.join(C_NEWLINE);\n alignments = lines.splice(1, 1)[0] || [];\n index = 0;\n length = alignments.length;\n lineCount--;\n alignment = false;\n align = [];\n\n while (index < length) {\n character = alignments.charAt(index);\n\n if (character === C_PIPE) {\n hasDash = null;\n\n if (alignment === false) {\n if (first === false) {\n return;\n }\n } else {\n align.push(alignment);\n alignment = false;\n }\n\n first = false;\n } else if (character === C_DASH) {\n hasDash = true;\n alignment = alignment || TABLE_ALIGN_NONE;\n } else if (character === C_COLON) {\n if (alignment === TABLE_ALIGN_LEFT) {\n alignment = TABLE_ALIGN_CENTER;\n } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n alignment = TABLE_ALIGN_RIGHT;\n } else {\n alignment = TABLE_ALIGN_LEFT;\n }\n } else if (!whitespace(character)) {\n return;\n }\n\n index++;\n }\n\n if (alignment !== false) {\n align.push(alignment);\n }\n /* Exit when without enough columns. */\n\n\n if (align.length < MIN_TABLE_COLUMNS) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n /* Parse the rows. */\n\n\n position = -1;\n rows = [];\n table = eat(subvalue).reset({\n type: 'table',\n align: align,\n children: rows\n });\n\n while (++position < lineCount) {\n line = lines[position];\n row = {\n type: 'tableRow',\n children: []\n };\n /* Eat a newline character when this is not the\n * first row. */\n\n if (position) {\n eat(C_NEWLINE);\n }\n /* Eat the row. */\n\n\n eat(line).reset(row, table);\n length = line.length + 1;\n index = 0;\n queue = '';\n cell = '';\n preamble = true;\n count = null;\n opening = null;\n\n while (index < length) {\n character = line.charAt(index);\n\n if (character === C_TAB || character === C_SPACE) {\n if (cell) {\n queue += character;\n } else {\n eat(character);\n }\n\n index++;\n continue;\n }\n\n if (character === '' || character === C_PIPE) {\n if (preamble) {\n eat(character);\n } else {\n if (character && opening) {\n queue += character;\n index++;\n continue;\n }\n\n if ((cell || character) && !preamble) {\n subvalue = cell;\n\n if (queue.length > 1) {\n if (character) {\n subvalue += queue.slice(0, queue.length - 1);\n queue = queue.charAt(queue.length - 1);\n } else {\n subvalue += queue;\n queue = '';\n }\n }\n\n now = eat.now();\n eat(subvalue)({\n type: 'tableCell',\n children: self.tokenizeInline(cell, now)\n }, row);\n }\n\n eat(queue + character);\n queue = '';\n cell = '';\n }\n } else {\n if (queue) {\n cell += queue;\n queue = '';\n }\n\n cell += character;\n\n if (character === C_BACKSLASH && index !== length - 2) {\n cell += line.charAt(index + 1);\n index++;\n }\n\n if (character === C_TICK) {\n count = 1;\n\n while (line.charAt(index + 1) === character) {\n cell += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n }\n }\n\n preamble = false;\n index++;\n }\n /* Eat the alignment row. */\n\n\n if (!position) {\n eat(C_NEWLINE + alignments);\n }\n }\n\n return table;\n}","'use strict';\n\nmodule.exports = {\n position: true,\n gfm: true,\n commonmark: false,\n footnotes: false,\n pedantic: false,\n blocks: require('./block-elements.json')\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\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// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('`', fromIndex);\n}","'use strict';\n\nmodule.exports = trimTrailingLines; // Remove final newline characters from `value`.\n\nfunction trimTrailingLines(value) {\n return String(value).replace(/\\n+$/, '');\n}","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n return supportsStringRender ? props.children : createElement('span', null, props.children);\n}\n\nfunction Root(props) {\n var useFragment = !props.className;\n var root = useFragment ? React.Fragment || 'div' : 'div';\n return createElement(root, useFragment ? null : props, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var tag = props.isBlock ? 'div' : 'span';\n\n if (props.escapeHtml) {\n var comp = React.Fragment || tag;\n return createElement(comp, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n return props['data-sourcepos'] ? {\n 'data-sourcepos': props['data-sourcepos']\n } : {};\n}","'use strict';\n\nmodule.exports = factory; // Construct a state `toggler`: a function which inverses `property` in context\n// based on its current value.\n// The by `toggler` returned function restores that value.\n\nfunction factory(key, state, ctx) {\n return enter;\n\n function enter() {\n var context = ctx || this;\n var current = context[key];\n context[key] = !state;\n return exit;\n\n function exit() {\n context[key] = current;\n }\n }\n}","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n if (typeof npath !== 'string') {\n return npath;\n }\n\n if (npath.length === 0) {\n return npath;\n }\n\n var nFileName = path.basename(npath, path.extname(npath)) + ext;\n return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n var self = this;\n var methods;\n var tokenizers;\n var index;\n var length;\n var subvalue;\n var position;\n var tokenizer;\n var name;\n var min;\n var now;\n /* istanbul ignore if - never used (yet) */\n\n if (silent) {\n return true;\n }\n\n methods = self.inlineMethods;\n length = methods.length;\n tokenizers = self.inlineTokenizers;\n index = -1;\n min = value.length;\n\n while (++index < length) {\n name = methods[index];\n\n if (name === 'text' || !tokenizers[name]) {\n continue;\n }\n\n tokenizer = tokenizers[name].locator;\n\n if (!tokenizer) {\n eat.file.fail('Missing locator: `' + name + '`');\n }\n\n position = tokenizer.call(self, value, 1);\n\n if (position !== -1 && position < min) {\n min = position;\n }\n }\n\n subvalue = value.slice(0, min);\n now = eat.now();\n self.decode(subvalue, now, function (content, position, source) {\n eat(source || content)({\n type: 'text',\n value: content\n });\n });\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar inherits = require('inherits');\n\nmodule.exports = unherit; // Create a custom constructor which can be modified without affecting the\n// original class.\n\nfunction unherit(Super) {\n var result;\n var key;\n var value;\n inherits(Of, Super);\n inherits(From, Of); // Clone values.\n\n result = Of.prototype;\n\n for (key in result) {\n value = result[key];\n\n if (value && typeof value === 'object') {\n result[key] = 'concat' in value ? value.concat() : xtend(value);\n }\n }\n\n return Of; // Constructor accepting a single argument, which itself is an `arguments`\n // object.\n\n function From(parameters) {\n return Super.apply(this, parameters);\n } // Constructor accepting variadic arguments.\n\n\n function Of() {\n if (!(this instanceof Of)) {\n return new From(arguments);\n }\n\n return Super.apply(this, arguments);\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var index;\n var length;\n var subvalue;\n var now;\n var currentLine;\n var content;\n var queue;\n var subqueue;\n var character;\n var identifier;\n var add;\n var exit;\n\n if (!self.options.footnotes) {\n return;\n }\n\n index = 0;\n length = value.length;\n subvalue = '';\n now = eat.now();\n currentLine = now.line;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_BRACKET_OPEN || value.charAt(index + 1) !== C_CARET) {\n return;\n }\n\n subvalue += C_BRACKET_OPEN + C_CARET;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n identifier = normalize(queue);\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n queue = '';\n content = '';\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n subqueue = character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n queue += subqueue;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n if (subqueue.length === 0) {\n break;\n }\n\n queue += subqueue;\n }\n\n if (queue) {\n content += queue;\n queue = '';\n }\n\n content += character;\n index++;\n }\n\n subvalue += content;\n content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n currentLine++;\n return '';\n });\n add = eat(subvalue);\n exit = self.enterBlock();\n content = self.tokenizeBlock(content, now);\n exit();\n return add({\n type: 'footnoteDefinition',\n identifier: identifier,\n children: content\n });\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = removePosition;\n\nfunction removePosition(node, force) {\n visit(node, force ? hard : soft);\n return node;\n}\n\nfunction hard(node) {\n delete node.position;\n}\n\nfunction soft(node) {\n node.position = undefined;\n}","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n}; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\nvar setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n}; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\nvar getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n};\n\nmodule.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n};","'use strict';\n\nvar xtend = require('xtend');\n\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n/* Parse the bound file. */\n\nfunction parse() {\n var self = this;\n var value = String(self.file);\n var start = {\n line: 1,\n column: 1,\n offset: 0\n };\n var content = xtend(start);\n var node;\n /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n * changed to `\\n`. This should not affect positional\n * information. */\n\n value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n if (value.charCodeAt(0) === 0xFEFF) {\n value = value.slice(1);\n content.column++;\n content.offset++;\n }\n\n node = {\n type: 'root',\n children: self.tokenizeBlock(value, content),\n position: {\n start: start,\n end: self.eof || xtend(start)\n }\n };\n\n if (!self.options.position) {\n removePosition(node, true);\n }\n\n return node;\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var index = value.indexOf('\\n', fromIndex);\n\n while (index > fromIndex) {\n if (value.charAt(index - 1) !== ' ') {\n break;\n }\n\n index--;\n }\n\n return index;\n}","'use strict';\n\nmodule.exports = factory;\n\nfunction factory(file) {\n var contents = indices(String(file));\n return {\n toPosition: offsetToPositionFactory(contents),\n toOffset: positionToOffsetFactory(contents)\n };\n} // Factory to get the line and column-based `position` for `offset` in the bound\n// indices.\n\n\nfunction offsetToPositionFactory(indices) {\n return offsetToPosition; // Get the line and column-based `position` for `offset` in the bound indices.\n\n function offsetToPosition(offset) {\n var index = -1;\n var length = indices.length;\n\n if (offset < 0) {\n return {};\n }\n\n while (++index < length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n };\n }\n }\n\n return {};\n }\n} // Factory to get the `offset` for a line and column-based `position` in the\n// bound indices.\n\n\nfunction positionToOffsetFactory(indices) {\n return positionToOffset; // Get the `offset` for a line and column-based `position` in the bound\n // indices.\n\n function positionToOffset(position) {\n var line = position && position.line;\n var column = position && position.column;\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n return (indices[line - 2] || 0) + column - 1 || 0;\n }\n\n return -1;\n }\n} // Get indices of line-breaks in `value`.\n\n\nfunction indices(value) {\n var result = [];\n var index = value.indexOf('\\n');\n\n while (index !== -1) {\n result.push(index + 1);\n index = value.indexOf('\\n', index + 1);\n }\n\n result.push(value.length + 1);\n return result;\n}","// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var link = value.indexOf('[', fromIndex);\n var image = value.indexOf('![', fromIndex);\n\n if (image === -1) {\n return link;\n }\n /* Link can never be `-1` if an image is found, so we don’t need\n * to check for that :) */\n\n\n return link < image ? link : image;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar word = require('is-word-character');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n return;\n }\n\n pedantic = self.options.pedantic;\n subvalue = character;\n marker = character;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(++index);\n\n if (character !== marker) {\n if (!trim(queue) || prev === marker) {\n return;\n }\n\n if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n queue += marker;\n continue;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column++;\n now.offset++;\n return eat(subvalue + queue + marker)({\n type: 'emphasis',\n children: self.tokenizeInline(queue, now)\n });\n }\n\n queue += marker;\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","'use strict';\n\nvar decode = require('parse-entities');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\nvar PROTOCOLS = [HTTP_PROTOCOL, HTTPS_PROTOCOL, MAILTO_PROTOCOL];\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n var self = this;\n var subvalue;\n var content;\n var character;\n var index;\n var position;\n var protocol;\n var match;\n var length;\n var queue;\n var parenCount;\n var nextCharacter;\n var exit;\n\n if (!self.options.gfm) {\n return;\n }\n\n subvalue = '';\n index = -1;\n length = PROTOCOLS_LENGTH;\n\n while (++index < length) {\n protocol = PROTOCOLS[index];\n match = value.slice(0, protocol.length);\n\n if (match.toLowerCase() === protocol) {\n subvalue = match;\n break;\n }\n }\n\n if (!subvalue) {\n return;\n }\n\n index = subvalue.length;\n length = value.length;\n queue = '';\n parenCount = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_LT) {\n break;\n }\n\n if (character === '.' || character === ',' || character === ':' || character === ';' || character === '\"' || character === '\\'' || character === ')' || character === ']') {\n nextCharacter = value.charAt(index + 1);\n\n if (!nextCharacter || whitespace(nextCharacter)) {\n break;\n }\n }\n\n if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n parenCount++;\n }\n\n if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n parenCount--;\n\n if (parenCount < 0) {\n break;\n }\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue += queue;\n content = subvalue;\n\n if (protocol === MAILTO_PROTOCOL) {\n position = queue.indexOf(C_AT_SIGN);\n\n if (position === -1 || position === length - 1) {\n return;\n }\n\n content = content.substr(MAILTO_PROTOCOL.length);\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n exit = self.enterLink();\n content = self.tokenizeInline(content, eat.now());\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(subvalue, {\n nonTerminated: false\n }),\n children: content\n });\n}","'use strict';\n\nmodule.exports = locate;\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n var length = PROTOCOLS.length;\n var index = -1;\n var min = -1;\n var position;\n\n if (!this.options.gfm) {\n return -1;\n }\n\n while (++index < length) {\n position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n if (position !== -1 && (position < min || min === -1)) {\n min = position;\n }\n }\n\n return min;\n}","'use strict';\n\nvar slice = [].slice;\nmodule.exports = wrap; // Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\n\nfunction wrap(fn, callback) {\n var invoked;\n return wrapped;\n\n function wrapped() {\n var params = slice.call(arguments, 0);\n var callback = fn.length > params.length;\n var result;\n\n if (callback) {\n params.push(done);\n }\n\n try {\n result = fn.apply(null, params);\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error;\n }\n\n return done(error);\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done);\n } else if (result instanceof Error) {\n done(result);\n } else {\n then(result);\n }\n }\n } // Invoke `next`, only once.\n\n\n function done() {\n if (!invoked) {\n invoked = true;\n callback.apply(null, arguments);\n }\n } // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n\n\n function then(value) {\n done(null, value);\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('~~', fromIndex);\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('\\\\', fromIndex);\n}","'use strict';\n\nmodule.exports = bail;\n\nfunction bail(err) {\n if (err) {\n throw err;\n }\n}","import React from \"react\"\nimport ReactMarkdown from \"react-markdown\"\n\nimport \"@cloudflare/cloudflare-brand-assets/css/components/link.css\"\nimport \"@cloudflare/cloudflare-brand-assets/css/components/inline-code.css\"\nimport \"@cloudflare/cloudflare-brand-assets/css/components/code-block.css\"\nimport \"@cloudflare/cloudflare-brand-assets/css/components/unordered-list-workers-themed.css\"\n\nimport \"./markdown.css\"\n\nconst Link = (props) => {props.children}\n\nconst List = (props) => {\n return props.ordered ?\n
    {props.children}
:\n \n}\n\nconst InlineCode = (props) => {props.children}\n\nconst CodeBlock = (props) =>
{props.value}
\n\n// TODO - look through for more renderers\n// https://www.npmjs.com/package/react-markdown\n\nconst Markdown = (props) => (\n \n)\n\nexport default Markdown\n","import React from \"react\"\nimport { graphql, Link } from \"gatsby\"\nimport Img from \"gatsby-image\"\n\nimport BookmarkIcon from \"../components/bookmark_icon\"\nimport Layout from \"../components/layout\"\nimport Markdown from \"../components/markdown\"\nimport RelatedProject from \"../components/project\"\nimport SEO from \"../components/seo\"\nimport useBookmarkState from \"../components/bookmark_state\"\n\nimport { flatten, normalizeCollection, PROJECTS_PER_COLLECTION } from \"../utils\"\n\nimport \"../pages/built-with-workers-page.css\"\nimport \"./project-page.css\"\nimport \"@cloudflare/cloudflare-brand-assets/css/components/definition-list.css\"\n\nconst getPrimaryLinkText = linkType => {\n switch (linkType) {\n case \"announcement\":\n return \"Read announcement\"\n case \"code\":\n return \"Read code\"\n case \"twitter\":\n return \"View on Twitter\"\n case \"website\":\n return \"Visit website\"\n default:\n return \"Learn more\"\n }\n}\n\nconst getLinkText = linkType => {\n switch (linkType) {\n case \"announcement\":\n return \"Announcement\"\n case \"code\":\n return \"Code\"\n case \"twitter\":\n return \"Twitter\"\n case \"website\":\n return \"Website\"\n default:\n return \"Learn more\"\n }\n}\n\nconst BOOKMARK_STATE = {\n bookmarked: \"bookmarked\",\n loading: \"loading\",\n unbookmarked: \"unbookmarked\",\n}\n\nconst Project = ({\n data: { allSanityCollection, allSanityProject, sanityProject: project },\n}) => {\n const allCollections = flatten(allSanityCollection)\n let collections = allCollections.map(collection =>\n normalizeCollection(collection, flatten(allSanityProject))\n )\n\n const collectionForProject = collections.find(({ projects }) =>\n projects.find(({ id }) => id === project.id)\n )\n\n const { bookmarked, loaded, toggleBookmark } = useBookmarkState(project.slug)\n\n const bookmarkState = loaded\n ? bookmarked\n ? BOOKMARK_STATE.bookmarked\n : BOOKMARK_STATE.unbookmarked\n : BOOKMARK_STATE.loading\n\n return (\n \n \n\n
\n
\n
\n
\n \n Back\n \n
\n

{project.name}

\n

\n {project.shortDescription}\n

\n
\n\n {project.links.length > 0 && (\n
\n
\n {[project.links[0]].map(({ linkType, url }) => (\n \n {getPrimaryLinkText(linkType)}\n \n ))}\n
\n\n \n \n \n \n \n \n {bookmarked ? \"Bookmarked\" : \"Bookmark\"}\n \n \n
\n
\n )}\n
\n\n
\n \n
\n\n {project.longDescription && (\n
\n
\n \n
\n\n {(project.developer || project.links.length > 0) && (\n
\n
\n {project.developer && (\n <>\n
Developer
\n
\n {project.developer}\n
\n \n )}\n {project.links.length > 0 && (\n <>\n
Links
\n
\n {project.links.map(({ linkType, url }) => (\n \n \n {getLinkText(linkType)}\n \n \n ))}\n
\n \n )}\n
\n
\n )}\n
\n )}\n\n
\n
\n
\n

Also built with Workers...

\n
\n\n
\n {collectionForProject &&\n collectionForProject.projects\n .filter(({ id }) => id !== project.id)\n .slice(0, PROJECTS_PER_COLLECTION)\n .map(project => (\n
\n \n
\n ))}\n
\n
\n
\n \n
\n )\n}\n\nexport const query = graphql`\n query ProjectPage($slug: String!) {\n sanityProject(slug: { eq: $slug }) {\n ...Project\n }\n\n allSanityProject {\n edges {\n node {\n ...Project\n }\n }\n }\n\n allSanityCollection {\n edges {\n node {\n ...Collection\n feature {\n ...Feature\n }\n\n projects {\n ...Project\n }\n }\n }\n }\n }\n`\n\nexport default Project\n","'use strict';\n\nmodule.exports = factory;\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\n\nfunction factory(ctx, key) {\n return unescape;\n /* De-escape a string using the expression at `key`\n * in `ctx`. */\n\n function unescape(value) {\n var prev = 0;\n var index = value.indexOf('\\\\');\n var escape = ctx[key];\n var queue = [];\n var character;\n\n while (index !== -1) {\n queue.push(value.slice(prev, index));\n prev = index + 1;\n character = value.charAt(prev);\n /* If the following character is not a valid escape,\n * add the slash. */\n\n if (!character || escape.indexOf(character) === -1) {\n queue.push('\\\\');\n }\n\n index = value.indexOf('\\\\', prev);\n }\n\n queue.push(value.slice(prev));\n return queue.join('');\n }\n}","'use strict';\n\nmodule.exports = convert;\n\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n\n if (test === null || test === undefined) {\n return ok;\n }\n\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test);\n }\n\n if (typeof test === 'function') {\n return test;\n }\n\n throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n var results = [];\n var length = tests.length;\n var index = -1;\n\n while (++index < length) {\n results[index] = convert(tests[index]);\n }\n\n return results;\n} // Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\n\n\nfunction matchesFactory(test) {\n return matches;\n\n function matches(node) {\n var key;\n\n for (key in test) {\n if (node[key] !== test[key]) {\n return false;\n }\n }\n\n return true;\n }\n}\n\nfunction anyFactory(tests) {\n var checks = convertAll(tests);\n var length = checks.length;\n return matches;\n\n function matches() {\n var index = -1;\n\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true;\n }\n }\n\n return false;\n }\n} // Utility to convert a string into a function which checks a given node’s type\n// for said string.\n\n\nfunction typeFactory(test) {\n return type;\n\n function type(node) {\n return Boolean(node && node.type === test);\n }\n} // Utility to return true.\n\n\nfunction ok() {\n return true;\n}","'use strict';\n\nmodule.exports = whitespace;\nvar fromCode = String.fromCharCode;\nvar re = /\\s/; // Check if the given character code, or the character code at the first\n// character, is a whitespace character.\n\nfunction whitespace(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","var toString = Object.prototype.toString;\nmodule.exports = isString;\n\nfunction isString(obj) {\n return toString.call(obj) === \"[object String]\";\n}","'use strict';\n\nmodule.exports = function getDefinitions(node) {\n var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (node.children || []).reduce(function (definitions, child) {\n if (child.type === 'definition') {\n definitions[child.identifier] = {\n href: child.url,\n title: child.title\n };\n }\n\n return getDefinitions(child, definitions);\n }, defs);\n};","'use strict';\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n var src = props.source || props.children || '';\n var parserOptions = props.parserOptions;\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var plugins = [[parse, parserOptions]].concat(props.plugins || []);\n var parser = plugins.reduce(applyParserPlugin, unified());\n var rawAst = parser.parse(src);\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(rawAst)\n });\n var astPlugins = determineAstPlugins(props); // eslint-disable-next-line no-sync\n\n var transformedAst = parser.runSync(rawAst);\n var ast = astPlugins.reduce(function (node, plugin) {\n return plugin(node, renderProps);\n }, transformedAst);\n return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n var plugins = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n }\n\n var renderHtml = !props.escapeHtml && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (item) {\n var plugin = Array.isArray(item) ? item[0] : item;\n return plugin.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n plugins.push(naiveHtml);\n }\n\n return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n renderers: {},\n escapeHtml: true,\n skipHtml: false,\n sourcePos: false,\n rawSourcePos: false,\n transformLinkUri: uriTransformer,\n astPlugins: [],\n plugins: [],\n parserOptions: {}\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array,\n parserOptions: PropTypes.object\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar decimal = require('is-decimal');\n\nmodule.exports = alphanumerical; // Check if the given character code, or the character code at the first\n// character, is alphanumerical.\n\nfunction alphanumerical(character) {\n return alphabetical(character) || decimal(character);\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar toggle = require('state-toggle');\n\nvar vfileLocation = require('vfile-location');\n\nvar unescape = require('./unescape');\n\nvar decode = require('./decode');\n\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n this.file = file;\n this.offset = {};\n this.options = xtend(this.options);\n this.setOptions({});\n this.inList = false;\n this.inBlock = false;\n this.inLink = false;\n this.atStart = true;\n this.toOffset = vfileLocation(file).toOffset;\n this.unescape = unescape(this, 'escape');\n this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n/* Expose core. */\n\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n/* Expose `defaults`. */\n\nproto.options = require('./defaults');\n/* Enter and exit helpers. */\n\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\n\nproto.interruptParagraph = [['thematicBreak'], ['atxHeading'], ['fencedCode'], ['blockquote'], ['html'], ['setextHeading', {\n commonmark: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\n\nproto.interruptList = [['atxHeading', {\n pedantic: false\n}], ['fencedCode', {\n pedantic: false\n}], ['thematicBreak', {\n pedantic: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\n\nproto.interruptBlockquote = [['indentedCode', {\n commonmark: true\n}], ['fencedCode', {\n commonmark: true\n}], ['atxHeading', {\n commonmark: true\n}], ['setextHeading', {\n commonmark: true\n}], ['thematicBreak', {\n commonmark: true\n}], ['html', {\n commonmark: true\n}], ['list', {\n commonmark: true\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Handlers. */\n\nproto.blockTokenizers = {\n newline: require('./tokenize/newline'),\n indentedCode: require('./tokenize/code-indented'),\n fencedCode: require('./tokenize/code-fenced'),\n blockquote: require('./tokenize/blockquote'),\n atxHeading: require('./tokenize/heading-atx'),\n thematicBreak: require('./tokenize/thematic-break'),\n list: require('./tokenize/list'),\n setextHeading: require('./tokenize/heading-setext'),\n html: require('./tokenize/html-block'),\n footnote: require('./tokenize/footnote-definition'),\n definition: require('./tokenize/definition'),\n table: require('./tokenize/table'),\n paragraph: require('./tokenize/paragraph')\n};\nproto.inlineTokenizers = {\n escape: require('./tokenize/escape'),\n autoLink: require('./tokenize/auto-link'),\n url: require('./tokenize/url'),\n html: require('./tokenize/html-inline'),\n link: require('./tokenize/link'),\n reference: require('./tokenize/reference'),\n strong: require('./tokenize/strong'),\n emphasis: require('./tokenize/emphasis'),\n deletion: require('./tokenize/delete'),\n code: require('./tokenize/code-inline'),\n break: require('./tokenize/break'),\n text: require('./tokenize/text')\n};\n/* Expose precedence. */\n\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n/* Tokenizers. */\n\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n/* Get all keys in `value`. */\n\nfunction keys(value) {\n var result = [];\n var key;\n\n for (key in value) {\n result.push(key);\n }\n\n return result;\n}","'use strict';\n\nmodule.exports = collapse; // `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\n\nfunction collapse(value) {\n return String(value).replace(/\\s+/g, ' ');\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\nvar own = {}.hasOwnProperty;\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n/* Map of characters, which can be used to mark link\n * and image titles. */\n\nvar LINK_MARKERS = {};\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\n\nvar COMMONMARK_LINK_MARKERS = {};\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n var self = this;\n var subvalue = '';\n var index = 0;\n var character = value.charAt(0);\n var pedantic = self.options.pedantic;\n var commonmark = self.options.commonmark;\n var gfm = self.options.gfm;\n var closed;\n var count;\n var opening;\n var beforeURL;\n var beforeTitle;\n var subqueue;\n var hasMarker;\n var markers;\n var isImage;\n var content;\n var marker;\n var length;\n var title;\n var depth;\n var queue;\n var url;\n var now;\n var exit;\n var node;\n /* Detect whether this is an image. */\n\n if (character === '!') {\n isImage = true;\n subvalue = character;\n character = value.charAt(++index);\n }\n /* Eat the opening. */\n\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n /* Exit when this is a link and we’re already inside\n * a link. */\n\n\n if (!isImage && self.inLink) {\n return;\n }\n\n subvalue += character;\n queue = '';\n index++;\n /* Eat the content. */\n\n length = value.length;\n now = eat.now();\n depth = 0;\n now.column += index;\n now.offset += index;\n\n while (index < length) {\n character = value.charAt(index);\n subqueue = character;\n\n if (character === C_TICK) {\n /* Inline-code in link content. */\n count = 1;\n\n while (value.charAt(index + 1) === C_TICK) {\n subqueue += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n } else if (character === C_BACKSLASH) {\n /* Allow brackets to be escaped. */\n index++;\n subqueue += value.charAt(index);\n /* In GFM mode, brackets in code still count.\n * In all other modes, they don’t. This empty\n * block prevents the next statements are\n * entered. */\n } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n depth++;\n } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n if (depth) {\n depth--;\n } else {\n /* Allow white-space between content and\n * url in GFM mode. */\n if (!pedantic) {\n while (index < length) {\n character = value.charAt(index + 1);\n\n if (!whitespace(character)) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n }\n\n if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n return;\n }\n\n subqueue += C_PAREN_OPEN;\n closed = true;\n index++;\n break;\n }\n }\n\n queue += subqueue;\n subqueue = '';\n index++;\n }\n /* Eat the content closing. */\n\n\n if (!closed) {\n return;\n }\n\n content = queue;\n subvalue += queue + subqueue;\n index++;\n /* Eat white-space. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat the URL. */\n\n\n character = value.charAt(index);\n markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n beforeURL += C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_GT) {\n break;\n }\n\n if (commonmark && character === '\\n') {\n return;\n }\n\n queue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n subvalue += C_LT + queue + C_GT;\n url = queue;\n index++;\n } else {\n character = null;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (subqueue && own.call(markers, character)) {\n break;\n }\n\n if (whitespace(character)) {\n if (!pedantic) {\n break;\n }\n\n subqueue += character;\n } else {\n if (character === C_PAREN_OPEN) {\n depth++;\n } else if (character === C_PAREN_CLOSE) {\n if (depth === 0) {\n break;\n }\n\n depth--;\n }\n\n queue += subqueue;\n subqueue = '';\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n }\n\n index++;\n }\n\n subvalue += queue;\n url = queue;\n index = subvalue.length;\n }\n /* Eat white-space. */\n\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n subvalue += queue;\n /* Eat the title. */\n\n if (queue && own.call(markers, character)) {\n index++;\n subvalue += character;\n queue = '';\n marker = markers[character];\n beforeTitle = subvalue;\n /* In commonmark-mode, things are pretty easy: the\n * marker cannot occur inside the title.\n *\n * Non-commonmark does, however, support nested\n * delimiters. */\n\n if (commonmark) {\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n index++;\n queue += character;\n }\n\n character = value.charAt(index);\n\n if (character !== marker) {\n return;\n }\n\n title = queue;\n subvalue += queue + character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n } else {\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n if (hasMarker) {\n queue += marker + subqueue;\n subqueue = '';\n }\n\n hasMarker = true;\n } else if (!hasMarker) {\n queue += character;\n } else if (character === C_PAREN_CLOSE) {\n subvalue += queue + marker + subqueue;\n title = queue;\n break;\n } else if (whitespace(character)) {\n subqueue += character;\n } else {\n queue += marker + subqueue + character;\n subqueue = '';\n hasMarker = false;\n }\n\n index++;\n }\n }\n }\n\n if (value.charAt(index) !== C_PAREN_CLOSE) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n subvalue += C_PAREN_CLOSE;\n url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n node = {\n type: isImage ? 'image' : 'link',\n title: title || null,\n url: url\n };\n\n if (isImage) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n } else {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n }\n\n return eat(subvalue)(node);\n}","'use strict';\n\nmodule.exports = escapes;\nvar defaults = ['\\\\', '`', '*', '{', '}', '[', ']', '(', ')', '#', '+', '-', '.', '!', '_', '>'];\nvar gfm = defaults.concat(['~', '|']);\nvar commonmark = gfm.concat(['\\n', '\"', '$', '%', '&', \"'\", ',', '/', ':', ';', '<', '=', '?', '@', '^']);\nescapes.default = defaults;\nescapes.gfm = gfm;\nescapes.commonmark = commonmark; // Get markdown escapes.\n\nfunction escapes(options) {\n var settings = options || {};\n\n if (settings.commonmark) {\n return commonmark;\n }\n\n return settings.gfm ? gfm : defaults;\n}","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = stringify;\n\nfunction stringify(value) {\n /* Nothing. */\n if (!value || typeof value !== 'object') {\n return null;\n }\n /* Node. */\n\n\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position);\n }\n /* Position. */\n\n\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value);\n }\n /* Point. */\n\n\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value);\n }\n /* ? */\n\n\n return null;\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {};\n }\n\n return index(point.line) + ':' + index(point.column);\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {};\n }\n\n return point(pos.start) + '-' + point(pos.end);\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1;\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('<', fromIndex);\n}","'use strict';\n\nvar trim = require('trim');\n\nvar decimal = require('is-decimal');\n\nvar trimTrailingLines = require('trim-trailing-lines');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar TAB_SIZE = 4;\n/* Tokenise paragraph. */\n\nfunction paragraph(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var commonmark = settings.commonmark;\n var gfm = settings.gfm;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptParagraph;\n var index = value.indexOf(C_NEWLINE);\n var length = value.length;\n var position;\n var subvalue;\n var character;\n var size;\n var now;\n\n while (index < length) {\n /* Eat everything if there’s no following newline. */\n if (index === -1) {\n index = length;\n break;\n }\n /* Stop if the next character is NEWLINE. */\n\n\n if (value.charAt(index + 1) === C_NEWLINE) {\n break;\n }\n /* In commonmark-mode, following indented lines\n * are part of the paragraph. */\n\n\n if (commonmark) {\n size = 0;\n position = index + 1;\n\n while (position < length) {\n character = value.charAt(position);\n\n if (character === C_TAB) {\n size = TAB_SIZE;\n break;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n position++;\n }\n\n if (size >= TAB_SIZE) {\n index = value.indexOf(C_NEWLINE, index + 1);\n continue;\n }\n }\n\n subvalue = value.slice(index + 1);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n break;\n }\n /* Break if the following line starts a list, when\n * already in a list, or when in commonmark, or when\n * in gfm mode and the bullet is *not* numeric. */\n\n\n if (tokenizers.list.call(self, eat, subvalue, true) && (self.inList || commonmark || gfm && !decimal(trim.left(subvalue).charAt(0)))) {\n break;\n }\n\n position = index;\n index = value.indexOf(C_NEWLINE, index + 1);\n\n if (index !== -1 && trim(value.slice(position, index)) === '') {\n index = position;\n break;\n }\n }\n\n subvalue = value.slice(0, index);\n\n if (trim(subvalue) === '') {\n eat(subvalue);\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n subvalue = trimTrailingLines(subvalue);\n return eat(subvalue)({\n type: 'paragraph',\n children: self.tokenizeInline(subvalue, now)\n });\n}","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict';\n/* eslint-disable max-params */\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar decimal = require('is-decimal');\n\nvar getIndent = require('../util/get-indentation');\n\nvar removeIndent = require('../util/remove-indentation');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n/* Map of characters which can be used to mark\n * list-items. */\n\nvar LIST_UNORDERED_MARKERS = {};\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_MARKERS = {};\nLIST_ORDERED_MARKERS[C_DOT] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var pedantic = self.options.pedantic;\n var tokenizers = self.blockTokenizers;\n var interuptors = self.interruptList;\n var markers;\n var index = 0;\n var length = value.length;\n var start = null;\n var size = 0;\n var queue;\n var ordered;\n var character;\n var marker;\n var nextIndex;\n var startIndex;\n var prefixed;\n var currentMarker;\n var content;\n var line;\n var prevEmpty;\n var empty;\n var items;\n var allLines;\n var emptyLines;\n var item;\n var enterTop;\n var exitBlockquote;\n var isLoose;\n var node;\n var now;\n var end;\n var indented;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n return;\n }\n\n character = value.charAt(index);\n markers = commonmark ? LIST_ORDERED_COMMONMARK_MARKERS : LIST_ORDERED_MARKERS;\n\n if (LIST_UNORDERED_MARKERS[character] === true) {\n marker = character;\n ordered = false;\n } else {\n ordered = true;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || markers[character] !== true) {\n return;\n }\n\n start = parseInt(queue, 10);\n marker = character;\n }\n\n character = value.charAt(++index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n items = [];\n allLines = [];\n emptyLines = [];\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n indented = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n end = index + TAB_SIZE;\n size = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n indented = true;\n }\n\n if (item && size >= item.indent) {\n indented = true;\n }\n\n character = value.charAt(index);\n currentMarker = null;\n\n if (!indented) {\n if (LIST_UNORDERED_MARKERS[character] === true) {\n currentMarker = character;\n index++;\n size++;\n } else {\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n index++;\n\n if (queue && markers[character] === true) {\n currentMarker = character;\n size += queue.length + 1;\n }\n }\n\n if (currentMarker) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n index++;\n } else if (character === C_SPACE) {\n end = index + TAB_SIZE;\n\n while (index < end) {\n if (value.charAt(index) !== C_SPACE) {\n break;\n }\n\n index++;\n size++;\n }\n\n if (index === end && value.charAt(index) === C_SPACE) {\n index -= TAB_SIZE - 1;\n size -= TAB_SIZE - 1;\n }\n } else if (character !== C_NEWLINE && character !== '') {\n currentMarker = null;\n }\n }\n }\n\n if (currentMarker) {\n if (!pedantic && marker !== currentMarker) {\n break;\n }\n\n prefixed = true;\n } else {\n if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n indented = true;\n } else if (commonmark && item) {\n indented = size >= item.indent || size > TAB_SIZE;\n }\n\n prefixed = false;\n index = startIndex;\n }\n\n line = value.slice(startIndex, nextIndex);\n content = startIndex === index ? line : value.slice(index, nextIndex);\n\n if (currentMarker === C_ASTERISK || currentMarker === C_UNDERSCORE || currentMarker === C_DASH) {\n if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n break;\n }\n }\n\n prevEmpty = empty;\n empty = !trim(content).length;\n\n if (indented && item) {\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (prefixed) {\n if (emptyLines.length !== 0) {\n item.value.push('');\n item.trail = emptyLines.concat();\n }\n\n item = {\n value: [line],\n indent: size,\n trail: []\n };\n items.push(item);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (empty) {\n if (prevEmpty) {\n break;\n }\n\n emptyLines.push(line);\n } else {\n if (prevEmpty) {\n break;\n }\n\n if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n break;\n }\n\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n }\n\n index = nextIndex + 1;\n }\n\n node = eat(allLines.join(C_NEWLINE)).reset({\n type: 'list',\n ordered: ordered,\n start: start,\n loose: null,\n children: []\n });\n enterTop = self.enterList();\n exitBlockquote = self.enterBlock();\n isLoose = false;\n index = -1;\n length = items.length;\n\n while (++index < length) {\n item = items[index].value.join(C_NEWLINE);\n now = eat.now();\n item = eat(item)(listItem(self, item, now), node);\n\n if (item.loose) {\n isLoose = true;\n }\n\n item = items[index].trail.join(C_NEWLINE);\n\n if (index !== length - 1) {\n item += C_NEWLINE;\n }\n\n eat(item);\n }\n\n enterTop();\n exitBlockquote();\n node.loose = isLoose;\n return node;\n}\n\nfunction listItem(ctx, value, position) {\n var offsets = ctx.offset;\n var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n var checked = null;\n var task;\n var indent;\n value = fn.apply(null, arguments);\n\n if (ctx.options.gfm) {\n task = value.match(EXPRESSION_TASK_ITEM);\n\n if (task) {\n indent = task[0].length;\n checked = task[1].toLowerCase() === C_X_LOWER;\n offsets[position.line] += indent;\n value = value.slice(indent);\n }\n }\n\n return {\n type: 'listItem',\n loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) || value.charAt(value.length - 1) === C_NEWLINE,\n checked: checked,\n children: ctx.tokenizeBlock(value, position)\n };\n}\n/* Create a list-item using overly simple mechanics. */\n\n\nfunction pedanticListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n /* The initial line was also matched by the below, so\n * we reset the `line`. */\n\n line = position.line;\n return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n /* A simple replacer which removed all matches,\n * and adds their length to `offset`. */\n\n function replacer($0) {\n offsets[line] = (offsets[line] || 0) + $0.length;\n line++;\n return '';\n }\n}\n/* Create a list-item using sane mechanics. */\n\n\nfunction normalListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n var max;\n var bullet;\n var rest;\n var lines;\n var trimmedLines;\n var index;\n var length;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_BULLET, replacer);\n lines = value.split(C_NEWLINE);\n trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n /* We replaced the initial bullet with something\n * else above, which was used to trick\n * `removeIndentation` into removing some more\n * characters when possible. However, that could\n * result in the initial line to be stripped more\n * than it should be. */\n\n trimmedLines[0] = rest;\n offsets[line] = (offsets[line] || 0) + bullet.length;\n line++;\n index = 0;\n length = lines.length;\n\n while (++index < length) {\n offsets[line] = (offsets[line] || 0) + lines[index].length - trimmedLines[index].length;\n line++;\n }\n\n return trimmedLines.join(C_NEWLINE);\n\n function replacer($0, $1, $2, $3, $4) {\n bullet = $1 + $2 + $3;\n rest = $4;\n /* Make sure that the first nine numbered list items\n * can indent with an extra space. That is, when\n * the bullet did not receive an extra final space. */\n\n if (Number($2) < 10 && bullet.length % 2 === 1) {\n $2 = C_SPACE + $2;\n }\n\n max = $1 + repeat(C_SPACE, $2.length) + $3;\n return max + rest;\n }\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}","/*!\n * repeat-string \n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n'use strict';\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n } // cover common, quick use cases\n\n\n if (num === 1) return str;\n if (num === 2) return str + str;\n var max = str.length * num;\n\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}","exports = module.exports = trim;\n\nfunction trim(str) {\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function (str) {\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function (str) {\n return str.replace(/\\s*$/, '');\n};","'use strict';\n\nvar path = require('path');\n\nvar replace = require('replace-ext');\n\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\nproto.toString = toString;\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\n\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\n/* Construct a new file. */\n\nfunction VFile(options) {\n var prop;\n var index;\n var length;\n\n if (!options) {\n options = {};\n } else if (typeof options === 'string' || buffer(options)) {\n options = {\n contents: options\n };\n } else if ('message' in options && 'messages' in options) {\n return options;\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options);\n }\n\n this.data = {};\n this.messages = [];\n this.history = [];\n this.cwd = process.cwd();\n /* Set path related properties in the correct order. */\n\n index = -1;\n length = order.length;\n\n while (++index < length) {\n prop = order[index];\n\n if (own.call(options, prop)) {\n this[prop] = options[prop];\n }\n }\n /* Set non-path related properties. */\n\n\n for (prop in options) {\n if (order.indexOf(prop) === -1) {\n this[prop] = options[prop];\n }\n }\n}\n/* Access full path (`~/index.min.js`). */\n\n\nObject.defineProperty(proto, 'path', {\n get: function get() {\n return this.history[this.history.length - 1];\n },\n set: function set(path) {\n assertNonEmpty(path, 'path');\n\n if (path !== this.path) {\n this.history.push(path);\n }\n }\n});\n/* Access parent path (`~`). */\n\nObject.defineProperty(proto, 'dirname', {\n get: function get() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n },\n set: function set(dirname) {\n assertPath(this.path, 'dirname');\n this.path = path.join(dirname || '', this.basename);\n }\n});\n/* Access basename (`index.min.js`). */\n\nObject.defineProperty(proto, 'basename', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n },\n set: function set(basename) {\n assertNonEmpty(basename, 'basename');\n assertPart(basename, 'basename');\n this.path = path.join(this.dirname || '', basename);\n }\n});\n/* Access extname (`.js`). */\n\nObject.defineProperty(proto, 'extname', {\n get: function get() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n },\n set: function set(extname) {\n var ext = extname || '';\n assertPart(ext, 'extname');\n assertPath(this.path, 'extname');\n\n if (ext) {\n if (ext.charAt(0) !== '.') {\n throw new Error('`extname` must start with `.`');\n }\n\n if (ext.indexOf('.', 1) !== -1) {\n throw new Error('`extname` cannot contain multiple dots');\n }\n }\n\n this.path = replace(this.path, ext);\n }\n});\n/* Access stem (`index.min`). */\n\nObject.defineProperty(proto, 'stem', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n },\n set: function set(stem) {\n assertNonEmpty(stem, 'stem');\n assertPart(stem, 'stem');\n this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n }\n});\n/* Get the value of the file. */\n\nfunction toString(encoding) {\n var value = this.contents || '';\n return buffer(value) ? value.toString(encoding) : String(value);\n}\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\n\n\nfunction assertPart(part, name) {\n if (part.indexOf(path.sep) !== -1) {\n throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n }\n}\n/* Assert that `part` is not empty. */\n\n\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty');\n }\n}\n/* Assert `path` exists. */\n\n\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too');\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar decode = require('parse-entities');\n\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n/* Tokenise a link. */\n\nfunction autoLink(eat, value, silent) {\n var self;\n var subvalue;\n var length;\n var index;\n var queue;\n var character;\n var hasAtCharacter;\n var link;\n var now;\n var content;\n var tokenizers;\n var exit;\n\n if (value.charAt(0) !== C_LT) {\n return;\n }\n\n self = this;\n subvalue = '';\n length = value.length;\n index = 0;\n queue = '';\n hasAtCharacter = false;\n link = '';\n index++;\n subvalue = C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT || character === C_AT_SIGN || character === ':' && value.charAt(index + 1) === C_SLASH) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n link += queue;\n queue = '';\n character = value.charAt(index);\n link += character;\n index++;\n\n if (character === C_AT_SIGN) {\n hasAtCharacter = true;\n } else {\n if (character !== ':' || value.charAt(index + 1) !== C_SLASH) {\n return;\n }\n\n link += C_SLASH;\n index++;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || character !== C_GT) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n link += queue;\n content = link;\n subvalue += link + character;\n now = eat.now();\n now.column++;\n now.offset++;\n\n if (hasAtCharacter) {\n if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n content = content.substr(MAILTO_LENGTH);\n now.column += MAILTO_LENGTH;\n now.offset += MAILTO_LENGTH;\n } else {\n link = MAILTO + link;\n }\n }\n /* Temporarily remove all tokenizers except text in autolinks. */\n\n\n tokenizers = self.inlineTokenizers;\n self.inlineTokenizers = {\n text: tokenizers.text\n };\n exit = self.enterLink();\n content = self.tokenizeInline(content, now);\n self.inlineTokenizers = tokenizers;\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(link, {\n nonTerminated: false\n }),\n children: content\n });\n}","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = 0;\n var subvalue = '';\n var fenceCount;\n var marker;\n var character;\n var flag;\n var queue;\n var content;\n var exdentedContent;\n var closing;\n var exdentedClosing;\n var indent;\n var now;\n\n if (!settings.gfm) {\n return;\n }\n /* Eat initial spacing. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n indent = index;\n /* Eat the fence. */\n\n character = value.charAt(index);\n\n if (character !== C_TILDE && character !== C_TICK) {\n return;\n }\n\n index++;\n marker = character;\n fenceCount = 1;\n subvalue += character;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n subvalue += character;\n fenceCount++;\n index++;\n }\n\n if (fenceCount < MIN_FENCE_COUNT) {\n return;\n }\n /* Eat spacing before flag. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat flag. */\n\n\n flag = '';\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === C_TILDE || character === C_TICK) {\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n flag += queue + character;\n queue = '';\n }\n\n index++;\n }\n\n character = value.charAt(index);\n\n if (character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += flag;\n flag = self.decode.raw(self.unescape(flag), now);\n\n if (queue) {\n subvalue += queue;\n }\n\n queue = '';\n closing = '';\n exdentedClosing = '';\n content = '';\n exdentedContent = '';\n /* Eat content. */\n\n while (index < length) {\n character = value.charAt(index);\n content += closing;\n exdentedContent += exdentedClosing;\n closing = '';\n exdentedClosing = '';\n\n if (character !== C_NEWLINE) {\n content += character;\n exdentedClosing += character;\n index++;\n continue;\n }\n /* Add the newline to `subvalue` if its the first\n * character. Otherwise, add it to the `closing`\n * queue. */\n\n\n if (content) {\n closing += character;\n exdentedClosing += character;\n } else {\n subvalue += character;\n }\n\n queue = '';\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue.slice(indent);\n\n if (queue.length >= CODE_INDENT_COUNT) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue;\n\n if (queue.length < fenceCount) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n closing += character;\n exdentedClosing += character;\n index++;\n }\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n }\n\n subvalue += content + closing;\n return eat(subvalue)({\n type: 'code',\n lang: flag || null,\n value: trim(exdentedContent)\n });\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nvar defaultNodePosition = {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n line: 1,\n column: 1,\n offset: 0\n }\n};\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // nodes generated by plugins may not have position data\n // much of the code after this point will attempt to access properties of the node.position\n // this will set the node position to the parent node's position to prevent errors\n\n if (node.position === undefined) {\n node.position = parent.node && parent.node.position || defaultNodePosition;\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isTagRenderer = typeof renderer === 'string'; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isTagRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ? opts.definitions[node.identifier] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.tight = !node.loose;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.tight = !node.loose;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n alt: node.alt || undefined,\n title: node.title || undefined,\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n title: ref.title || undefined,\n alt: node.alt || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = mergeNodeChildren(node, parsedChildren);\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isTagRenderer && node.value) {\n props.value = node.value;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n if (node.loose) {\n return node.children;\n }\n\n if (parent.node && node.index > 0 && parent.node.children[node.index - 1].loose) {\n return node.children;\n }\n\n return unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children || [] : [child]);\n }, []);\n}\n\nmodule.exports = astToReact;","'use strict';\n/* Expose. */\n\nmodule.exports = visitParents;\n/* Visit. */\n\nfunction visitParents(tree, type, visitor) {\n var stack = [];\n\n if (typeof type === 'function') {\n visitor = type;\n type = null;\n }\n\n one(tree);\n /* Visit a single node. */\n\n function one(node) {\n var result;\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat());\n }\n\n if (node.children && result !== false) {\n return all(node.children, node);\n }\n\n return result;\n }\n /* Visit children in `parent`. */\n\n\n function all(children, parent) {\n var length = children.length;\n var index = -1;\n var child;\n stack.push(parent);\n\n while (++index < length) {\n child = children[index];\n\n if (child && one(child) === false) {\n return false;\n }\n }\n\n stack.pop();\n return true;\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('*', fromIndex);\n var underscore = value.indexOf('_', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar legacy = require('character-entities-legacy');\n\nvar invalid = require('character-reference-invalid');\n\nvar decimal = require('is-decimal');\n\nvar hexadecimal = require('is-hexadecimal');\n\nvar alphanumerical = require('is-alphanumerical');\n\nvar decodeEntity = require('./decode-entity');\n\nmodule.exports = parseEntities;\nvar own = {}.hasOwnProperty;\nvar fromCharCode = String.fromCharCode;\nvar noop = Function.prototype; // Default settings.\n\nvar defaults = {\n warning: null,\n reference: null,\n text: null,\n warningContext: null,\n referenceContext: null,\n textContext: null,\n position: {},\n additional: null,\n attribute: false,\n nonTerminated: true\n}; // Characters.\n\nvar tab = 9; // '\\t'\n\nvar lineFeed = 10; // '\\n'\n\nvar formFeed = 12; // '\\f'\n\nvar space = 32; // ' '\n\nvar ampersand = 38; // '&'\n\nvar semicolon = 59; // ';'\n\nvar lessThan = 60; // '<'\n\nvar equalsTo = 61; // '='\n\nvar numberSign = 35; // '#'\n\nvar uppercaseX = 88; // 'X'\n\nvar lowercaseX = 120; // 'x'\n\nvar replacementCharacter = 65533; // '�'\n// Reference types.\n\nvar name = 'named';\nvar hexa = 'hexadecimal';\nvar deci = 'decimal'; // Map of bases.\n\nvar bases = {};\nbases[hexa] = 16;\nbases[deci] = 10; // Map of types to tests.\n// Each type of character reference accepts different characters.\n// This test is used to detect whether a reference has ended (as the semicolon\n// is not strictly needed).\n\nvar tests = {};\ntests[name] = alphanumerical;\ntests[deci] = decimal;\ntests[hexa] = hexadecimal; // Warning types.\n\nvar namedNotTerminated = 1;\nvar numericNotTerminated = 2;\nvar namedEmpty = 3;\nvar numericEmpty = 4;\nvar namedUnknown = 5;\nvar numericDisallowed = 6;\nvar numericProhibited = 7; // Warning messages.\n\nvar messages = {};\nmessages[namedNotTerminated] = 'Named character references must be terminated by a semicolon';\nmessages[numericNotTerminated] = 'Numeric character references must be terminated by a semicolon';\nmessages[namedEmpty] = 'Named character references cannot be empty';\nmessages[numericEmpty] = 'Numeric character references cannot be empty';\nmessages[namedUnknown] = 'Named character references must be known';\nmessages[numericDisallowed] = 'Numeric character references cannot be disallowed';\nmessages[numericProhibited] = 'Numeric character references cannot be outside the permissible Unicode range'; // Wrap to ensure clean parameters are given to `parse`.\n\nfunction parseEntities(value, options) {\n var settings = {};\n var option;\n var key;\n\n if (!options) {\n options = {};\n }\n\n for (key in defaults) {\n option = options[key];\n settings[key] = option === null || option === undefined ? defaults[key] : option;\n }\n\n if (settings.position.indent || settings.position.start) {\n settings.indent = settings.position.indent || [];\n settings.position = settings.position.start;\n }\n\n return parse(value, settings);\n} // Parse entities.\n// eslint-disable-next-line complexity\n\n\nfunction parse(value, settings) {\n var additional = settings.additional;\n var nonTerminated = settings.nonTerminated;\n var handleText = settings.text;\n var handleReference = settings.reference;\n var handleWarning = settings.warning;\n var textContext = settings.textContext;\n var referenceContext = settings.referenceContext;\n var warningContext = settings.warningContext;\n var pos = settings.position;\n var indent = settings.indent || [];\n var length = value.length;\n var index = 0;\n var lines = -1;\n var column = pos.column || 1;\n var line = pos.line || 1;\n var queue = '';\n var result = [];\n var entityCharacters;\n var namedEntity;\n var terminated;\n var characters;\n var character;\n var reference;\n var following;\n var warning;\n var reason;\n var output;\n var entity;\n var begin;\n var start;\n var type;\n var test;\n var prev;\n var next;\n var diff;\n var end;\n\n if (typeof additional === 'string') {\n additional = additional.charCodeAt(0);\n } // Cache the current point.\n\n\n prev = now(); // Wrap `handleWarning`.\n\n warning = handleWarning ? parseError : noop; // Ensure the algorithm walks over the first character and the end (inclusive).\n\n index--;\n length++;\n\n while (++index < length) {\n // If the previous character was a newline.\n if (character === lineFeed) {\n column = indent[lines] || 1;\n }\n\n character = value.charCodeAt(index);\n\n if (character === ampersand) {\n following = value.charCodeAt(index + 1); // The behaviour depends on the identity of the next character.\n\n if (following === tab || following === lineFeed || following === formFeed || following === space || following === ampersand || following === lessThan || following !== following || additional && following === additional) {\n // Not a character reference.\n // No characters are consumed, and nothing is returned.\n // This is not an error, either.\n queue += fromCharCode(character);\n column++;\n continue;\n }\n\n start = index + 1;\n begin = start;\n end = start;\n\n if (following === numberSign) {\n // Numerical entity.\n end = ++begin; // The behaviour further depends on the next character.\n\n following = value.charCodeAt(end);\n\n if (following === uppercaseX || following === lowercaseX) {\n // ASCII hex digits.\n type = hexa;\n end = ++begin;\n } else {\n // ASCII digits.\n type = deci;\n }\n } else {\n // Named entity.\n type = name;\n }\n\n entityCharacters = '';\n entity = '';\n characters = '';\n test = tests[type];\n end--;\n\n while (++end < length) {\n following = value.charCodeAt(end);\n\n if (!test(following)) {\n break;\n }\n\n characters += fromCharCode(following); // Check if we can match a legacy named reference.\n // If so, we cache that as the last viable named reference.\n // This ensures we do not need to walk backwards later.\n\n if (type === name && own.call(legacy, characters)) {\n entityCharacters = characters;\n entity = legacy[characters];\n }\n }\n\n terminated = value.charCodeAt(end) === semicolon;\n\n if (terminated) {\n end++;\n namedEntity = type === name ? decodeEntity(characters) : false;\n\n if (namedEntity) {\n entityCharacters = characters;\n entity = namedEntity;\n }\n }\n\n diff = 1 + end - start;\n\n if (!terminated && !nonTerminated) {// Empty.\n } else if (!characters) {\n // An empty (possible) entity is valid, unless it’s numeric (thus an\n // ampersand followed by an octothorp).\n if (type !== name) {\n warning(numericEmpty, diff);\n }\n } else if (type === name) {\n // An ampersand followed by anything unknown, and not terminated, is\n // invalid.\n if (terminated && !entity) {\n warning(namedUnknown, 1);\n } else {\n // If theres something after an entity name which is not known, cap\n // the reference.\n if (entityCharacters !== characters) {\n end = begin + entityCharacters.length;\n diff = 1 + end - begin;\n terminated = false;\n } // If the reference is not terminated, warn.\n\n\n if (!terminated) {\n reason = entityCharacters ? namedNotTerminated : namedEmpty;\n\n if (settings.attribute) {\n following = value.charCodeAt(end);\n\n if (following === equalsTo) {\n warning(reason, diff);\n entity = null;\n } else if (alphanumerical(following)) {\n entity = null;\n } else {\n warning(reason, diff);\n }\n } else {\n warning(reason, diff);\n }\n }\n }\n\n reference = entity;\n } else {\n if (!terminated) {\n // All non-terminated numeric entities are not rendered, and trigger a\n // warning.\n warning(numericNotTerminated, diff);\n } // When terminated and number, parse as either hexadecimal or decimal.\n\n\n reference = parseInt(characters, bases[type]); // Trigger a warning when the parsed number is prohibited, and replace\n // with replacement character.\n\n if (prohibited(reference)) {\n warning(numericProhibited, diff);\n reference = fromCharCode(replacementCharacter);\n } else if (reference in invalid) {\n // Trigger a warning when the parsed number is disallowed, and replace\n // by an alternative.\n warning(numericDisallowed, diff);\n reference = invalid[reference];\n } else {\n // Parse the number.\n output = ''; // Trigger a warning when the parsed number should not be used.\n\n if (disallowed(reference)) {\n warning(numericDisallowed, diff);\n } // Stringify the number.\n\n\n if (reference > 0xffff) {\n reference -= 0x10000;\n output += fromCharCode(reference >>> (10 & 0x3ff) | 0xd800);\n reference = 0xdc00 | reference & 0x3ff;\n }\n\n reference = output + fromCharCode(reference);\n }\n } // Found it!\n // First eat the queued characters as normal text, then eat an entity.\n\n\n if (reference) {\n flush();\n prev = now();\n index = end - 1;\n column += end - start + 1;\n result.push(reference);\n next = now();\n next.offset++;\n\n if (handleReference) {\n handleReference.call(referenceContext, reference, {\n start: prev,\n end: next\n }, value.slice(start - 1, end));\n }\n\n prev = next;\n } else {\n // If we could not find a reference, queue the checked characters (as\n // normal characters), and move the pointer to their end.\n // This is possible because we can be certain neither newlines nor\n // ampersands are included.\n characters = value.slice(start - 1, end);\n queue += characters;\n column += characters.length;\n index = end - 1;\n }\n } else {\n // Handle anything other than an ampersand, including newlines and EOF.\n if (character === 10 // Line feed\n ) {\n line++;\n lines++;\n column = 0;\n }\n\n if (character === character) {\n queue += fromCharCode(character);\n column++;\n } else {\n flush();\n }\n }\n } // Return the reduced nodes, and any possible warnings.\n\n\n return result.join(''); // Get current position.\n\n function now() {\n return {\n line: line,\n column: column,\n offset: index + (pos.offset || 0)\n };\n } // “Throw” a parse-error: a warning.\n\n\n function parseError(code, offset) {\n var position = now();\n position.column += offset;\n position.offset += offset;\n handleWarning.call(warningContext, messages[code], position, code);\n } // Flush `queue` (normal text).\n // Macro invoked before each entity and at the end of `value`.\n // Does nothing when `queue` is empty.\n\n\n function flush() {\n if (queue) {\n result.push(queue);\n\n if (handleText) {\n handleText.call(textContext, queue, {\n start: prev,\n end: now()\n });\n }\n\n queue = '';\n }\n }\n} // Check if `character` is outside the permissible unicode range.\n\n\nfunction prohibited(code) {\n return code >= 0xd800 && code <= 0xdfff || code > 0x10ffff;\n} // Check if `character` is disallowed.\n\n\nfunction disallowed(code) {\n return code >= 0x0001 && code <= 0x0008 || code === 0x000b || code >= 0x000d && code <= 0x001f || code >= 0x007f && code <= 0x009f || code >= 0xfdd0 && code <= 0xfdef || (code & 0xffff) === 0xffff || (code & 0xffff) === 0xfffe;\n}","'use strict';\n\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n var prototype;\n return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};","'use strict';\n/* Dependencies. */\n\nvar extend = require('extend');\n\nvar bail = require('bail');\n\nvar vfile = require('vfile');\n\nvar trough = require('trough');\n\nvar string = require('x-is-string');\n\nvar plain = require('is-plain-obj');\n/* Expose a frozen processor. */\n\n\nmodule.exports = unified().freeze();\nvar slice = [].slice;\nvar own = {}.hasOwnProperty;\n/* Process pipeline. */\n\nvar pipeline = trough().use(pipelineParse).use(pipelineRun).use(pipelineStringify);\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file);\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done);\n\n function done(err, tree, file) {\n if (err) {\n next(err);\n } else {\n ctx.tree = tree;\n ctx.file = file;\n next();\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n ctx.file.contents = p.stringify(ctx.tree, ctx.file);\n}\n/* Function to create the first processor. */\n\n\nfunction unified() {\n var attachers = [];\n var transformers = trough();\n var namespace = {};\n var frozen = false;\n var freezeIndex = -1;\n /* Data management. */\n\n processor.data = data;\n /* Lock. */\n\n processor.freeze = freeze;\n /* Plug-ins. */\n\n processor.attachers = attachers;\n processor.use = use;\n /* API. */\n\n processor.parse = parse;\n processor.stringify = stringify;\n processor.run = run;\n processor.runSync = runSync;\n processor.process = process;\n processor.processSync = processSync;\n /* Expose. */\n\n return processor;\n /* Create a new processor based on the processor\n * in the current scope. */\n\n function processor() {\n var destination = unified();\n var length = attachers.length;\n var index = -1;\n\n while (++index < length) {\n destination.use.apply(null, attachers[index]);\n }\n\n destination.data(extend(true, {}, namespace));\n return destination;\n }\n /* Freeze: used to signal a processor that has finished\n * configuration.\n *\n * For example, take unified itself. It’s frozen.\n * Plug-ins should not be added to it. Rather, it should\n * be extended, by invoking it, before modifying it.\n *\n * In essence, always invoke this when exporting a\n * processor. */\n\n\n function freeze() {\n var values;\n var plugin;\n var options;\n var transformer;\n\n if (frozen) {\n return processor;\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex];\n plugin = values[0];\n options = values[1];\n transformer = null;\n\n if (options === false) {\n continue;\n }\n\n if (options === true) {\n values[1] = undefined;\n }\n\n transformer = plugin.apply(processor, values.slice(1));\n\n if (typeof transformer === 'function') {\n transformers.use(transformer);\n }\n }\n\n frozen = true;\n freezeIndex = Infinity;\n return processor;\n }\n /* Data management.\n * Getter / setter for processor-specific informtion. */\n\n\n function data(key, value) {\n if (string(key)) {\n /* Set `key`. */\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen);\n namespace[key] = value;\n return processor;\n }\n /* Get `key`. */\n\n\n return own.call(namespace, key) && namespace[key] || null;\n }\n /* Set space. */\n\n\n if (key) {\n assertUnfrozen('data', frozen);\n namespace = key;\n return processor;\n }\n /* Get space. */\n\n\n return namespace;\n }\n /* Plug-in management.\n *\n * Pass it:\n * * an attacher and options,\n * * a preset,\n * * a list of presets, attachers, and arguments (list\n * of attachers and options). */\n\n\n function use(value) {\n var settings;\n assertUnfrozen('use', frozen);\n\n if (value === null || value === undefined) {\n /* Empty */\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings);\n }\n\n return processor;\n\n function addPreset(result) {\n addList(result.plugins);\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings);\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n }\n\n function addList(plugins) {\n var length;\n var index;\n\n if (plugins === null || plugins === undefined) {\n /* Empty */\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length;\n index = -1;\n\n while (++index < length) {\n add(plugins[index]);\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`');\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin);\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value);\n }\n\n entry[1] = value;\n } else {\n attachers.push(slice.call(arguments));\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length;\n var index = -1;\n var entry;\n\n while (++index < length) {\n entry = attachers[index];\n\n if (entry[0] === plugin) {\n return entry;\n }\n }\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the\n * processor. */\n\n\n function parse(doc) {\n var file = vfile(doc);\n var Parser;\n freeze();\n Parser = processor.Parser;\n assertParser('parse', Parser);\n\n if (newable(Parser)) {\n return new Parser(String(file), file).parse();\n }\n\n return Parser(String(file), file); // eslint-disable-line new-cap\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), async. */\n\n\n function run(node, file, cb) {\n assertNode(node);\n freeze();\n\n if (!cb && typeof file === 'function') {\n cb = file;\n file = null;\n }\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done);\n\n function done(err, tree, file) {\n tree = tree || node;\n\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(tree);\n } else {\n cb(null, tree, file);\n }\n }\n }\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), sync. */\n\n\n function runSync(node, file) {\n var complete = false;\n var result;\n run(node, file, done);\n assertDone('runSync', 'run', complete);\n return result;\n\n function done(err, tree) {\n complete = true;\n bail(err);\n result = tree;\n }\n }\n /* Stringify a Unist node representation of a file\n * (in string or VFile representation) into a string\n * using the `Compiler` on the processor. */\n\n\n function stringify(node, doc) {\n var file = vfile(doc);\n var Compiler;\n freeze();\n Compiler = processor.Compiler;\n assertCompiler('stringify', Compiler);\n assertNode(node);\n\n if (newable(Compiler)) {\n return new Compiler(node, file).compile();\n }\n\n return Compiler(node, file); // eslint-disable-line new-cap\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the processor,\n * then run transforms on that node, and compile the\n * resulting node using the `Compiler` on the processor,\n * and store that result on the VFile. */\n\n\n function process(doc, cb) {\n freeze();\n assertParser('process', processor.Parser);\n assertCompiler('process', processor.Compiler);\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n var file = vfile(doc);\n pipeline.run(processor, {\n file: file\n }, done);\n\n function done(err) {\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(file);\n } else {\n cb(null, file);\n }\n }\n }\n }\n /* Process the given document (in string or VFile\n * representation), sync. */\n\n\n function processSync(doc) {\n var complete = false;\n var file;\n freeze();\n assertParser('processSync', processor.Parser);\n assertCompiler('processSync', processor.Compiler);\n file = vfile(doc);\n process(file, done);\n assertDone('processSync', 'process', complete);\n return file;\n\n function done(err) {\n complete = true;\n bail(err);\n }\n }\n}\n/* Check if `func` is a constructor. */\n\n\nfunction newable(value) {\n return typeof value === 'function' && keys(value.prototype);\n}\n/* Check if `value` is an object with keys. */\n\n\nfunction keys(value) {\n var key;\n\n for (key in value) {\n return true;\n }\n\n return false;\n}\n/* Assert a parser is available. */\n\n\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`');\n }\n}\n/* Assert a compiler is available. */\n\n\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`');\n }\n}\n/* Assert the processor is not frozen. */\n\n\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(['Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ', 'processor first, by invoking it: use `processor()` instead of ', '`processor`.'].join(''));\n }\n}\n/* Assert `node` is a Unist node. */\n\n\nfunction assertNode(node) {\n if (!node || !string(node.type)) {\n throw new Error('Expected node, got `' + node + '`');\n }\n}\n/* Assert that `complete` is `true`. */\n\n\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n }\n}","'use strict';\n\nmodule.exports = decimal; // Check if the given character code, or the character code at the first\n// character, is decimal.\n\nfunction decimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 48 && code <= 57;\n /* 0-9 */\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n/* Tokenise newline. */\n\nfunction newline(eat, value, silent) {\n var character = value.charAt(0);\n var length;\n var subvalue;\n var queue;\n var index;\n\n if (character !== '\\n') {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n index = 1;\n length = value.length;\n subvalue = character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n\n if (character === '\\n') {\n subvalue += queue;\n queue = '';\n }\n\n index++;\n }\n\n eat(subvalue);\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n var self = this;\n var character = value.charAt(0);\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var intro = '';\n var type = T_LINK;\n var referenceType = REFERENCE_TYPE_SHORTCUT;\n var content;\n var identifier;\n var now;\n var node;\n var exit;\n var queue;\n var bracketed;\n var depth;\n /* Check whether we’re eating an image. */\n\n if (character === '!') {\n type = T_IMAGE;\n intro = character;\n character = value.charAt(++index);\n }\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n intro += character;\n queue = '';\n /* Check whether we’re eating a footnote. */\n\n if (self.options.footnotes && value.charAt(index) === C_CARET) {\n /* Exit if `![^` is found, so the `!` will be seen as text after this,\n * and we’ll enter this function again when `[^` is found. */\n if (type === T_IMAGE) {\n return;\n }\n\n intro += C_CARET;\n index++;\n type = T_FOOTNOTE;\n }\n /* Eat the text. */\n\n\n depth = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN) {\n bracketed = true;\n depth++;\n } else if (character === C_BRACKET_CLOSE) {\n if (!depth) {\n break;\n }\n\n depth--;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n\n subvalue = queue;\n content = queue;\n character = value.charAt(index);\n\n if (character !== C_BRACKET_CLOSE) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n /* Inline footnotes cannot have an identifier. */\n\n if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n identifier = '';\n queue += character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n identifier += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n identifier += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n queue += identifier + character;\n index++;\n } else {\n identifier = '';\n }\n\n subvalue += queue;\n queue = '';\n } else {\n if (!content) {\n return;\n }\n\n identifier = content;\n }\n /* Brackets cannot be inside the identifier. */\n\n\n if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n return;\n }\n\n subvalue = intro + subvalue;\n\n if (type === T_LINK && self.inLink) {\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n return eat(subvalue)({\n type: 'footnote',\n children: this.tokenizeInline(content, eat.now())\n });\n }\n\n now = eat.now();\n now.column += intro.length;\n now.offset += intro.length;\n identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n node = {\n type: type + 'Reference',\n identifier: normalize(identifier)\n };\n\n if (type === T_LINK || type === T_IMAGE) {\n node.referenceType = referenceType;\n }\n\n if (type === T_LINK) {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n } else if (type === T_IMAGE) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n }\n\n return eat(subvalue)(node);\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\nvar C_TICK = '`';\n/* Tokenise inline code. */\n\nfunction inlineCode(eat, value, silent) {\n var length = value.length;\n var index = 0;\n var queue = '';\n var tickQueue = '';\n var contentQueue;\n var subqueue;\n var count;\n var openingCount;\n var subvalue;\n var character;\n var found;\n var next;\n\n while (index < length) {\n if (value.charAt(index) !== C_TICK) {\n break;\n }\n\n queue += C_TICK;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue = queue;\n openingCount = index;\n queue = '';\n next = value.charAt(index);\n count = 0;\n\n while (index < length) {\n character = next;\n next = value.charAt(index + 1);\n\n if (character === C_TICK) {\n count++;\n tickQueue += character;\n } else {\n count = 0;\n queue += character;\n }\n\n if (count && next !== C_TICK) {\n if (count === openingCount) {\n subvalue += queue + tickQueue;\n found = true;\n break;\n }\n\n queue += tickQueue;\n tickQueue = '';\n }\n\n index++;\n }\n\n if (!found) {\n if (openingCount % 2 !== 0) {\n return;\n }\n\n queue = '';\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n contentQueue = '';\n subqueue = '';\n length = queue.length;\n index = -1;\n\n while (++index < length) {\n character = queue.charAt(index);\n\n if (whitespace(character)) {\n subqueue += character;\n continue;\n }\n\n if (subqueue) {\n if (contentQueue) {\n contentQueue += subqueue;\n }\n\n subqueue = '';\n }\n\n contentQueue += character;\n }\n\n return eat(subvalue)({\n type: 'inlineCode',\n value: contentQueue\n });\n}","\"use strict\";\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say foo, but not foo\n * For proper HTML support, you'll want a different plugin\n **/\n\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n var bools = ['pedantic', 'commonmark'];\n var count = bools.length;\n var length = interruptors.length;\n var index = -1;\n var interruptor;\n var config;\n var fn;\n var offset;\n var bool;\n var ignore;\n\n while (++index < length) {\n interruptor = interruptors[index];\n config = interruptor[1] || {};\n fn = interruptor[0];\n offset = -1;\n ignore = false;\n\n while (++offset < count) {\n bool = bools[offset];\n\n if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n ignore = true;\n break;\n }\n }\n\n if (ignore) {\n continue;\n }\n\n if (tokenizers[fn].apply(ctx, params)) {\n return true;\n }\n }\n\n return false;\n}","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n/* Normalize an identifier. Collapses multiple white space\n * characters into a single space, and removes casing. */\n\nfunction normalize(value) {\n return collapseWhiteSpace(value).toLowerCase();\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n var self = this;\n var character = '';\n var previous = '';\n var preceding = '';\n var subvalue = '';\n var index;\n var length;\n var now;\n\n if (!self.options.gfm || value.charAt(0) !== C_TILDE || value.charAt(1) !== C_TILDE || whitespace(value.charAt(2))) {\n return;\n }\n\n index = 1;\n length = value.length;\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_TILDE && previous === C_TILDE && (!preceding || !whitespace(preceding))) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n return eat(DOUBLE + subvalue + DOUBLE)({\n type: 'delete',\n children: self.tokenizeInline(subvalue, now)\n });\n }\n\n subvalue += previous;\n preceding = previous;\n previous = character;\n }\n}","'use strict';\n\nmodule.exports = hexadecimal; // Check if the given character code, or the character code at the first\n// character, is hexadecimal.\n\nfunction hexadecimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97\n /* a */\n && code <= 102\n /* z */\n || code >= 65\n /* A */\n && code <= 70\n /* Z */\n || code >= 48\n /* A */\n && code <= 57\n /* Z */\n ;\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n visitParents(tree, test, overload, reverse);\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar locate = require('../locate/tag');\n\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\nvar EXPRESSION_HTML_LINK_OPEN = /^/i;\n\nfunction inlineHTML(eat, value, silent) {\n var self = this;\n var length = value.length;\n var character;\n var subvalue;\n\n if (value.charAt(0) !== '<' || length < 3) {\n return;\n }\n\n character = value.charAt(1);\n\n if (!alphabetical(character) && character !== '?' && character !== '!' && character !== '/') {\n return;\n }\n\n subvalue = value.match(tag);\n\n if (!subvalue) {\n return;\n }\n /* istanbul ignore if - not used yet. */\n\n\n if (silent) {\n return true;\n }\n\n subvalue = subvalue[0];\n\n if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n self.inLink = true;\n } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n self.inLink = false;\n }\n\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","'use strict';\n\nmodule.exports = visitParents;\n\nvar convert = require('unist-util-is/convert');\n\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\n\nfunction visitParents(tree, test, visitor, reverse) {\n var is;\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n is = convert(test);\n one(tree, null, []); // Visit a single node.\n\n function one(node, index, parents) {\n var result = [];\n var subresult;\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n\n if (result[0] === EXIT) {\n return result;\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)));\n return subresult[0] === EXIT ? subresult : result;\n }\n\n return result;\n } // Visit children in `parent`.\n\n\n function all(children, parents) {\n var min = -1;\n var step = reverse ? -1 : 1;\n var index = (reverse ? children.length : min) + step;\n var result;\n\n while (index > min && index < children.length) {\n result = one(children[index], index, parents);\n\n if (result[0] === EXIT) {\n return result;\n }\n\n index = typeof result[1] === 'number' ? result[1] : index + step;\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value;\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n\n return [value];\n}","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","'use strict';\n/* eslint-env browser */\n\nvar el;\nvar semicolon = 59; // ';'\n\nmodule.exports = decodeEntity;\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';';\n var char;\n el = el || document.createElement('i');\n el.innerHTML = entity;\n char = el.textContent; // Some entities do not require the closing semicolon (`¬` - for instance),\n // which leads to situations where parsing the assumed entity of ¬it; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`;`), we can\n // assume that the matching was incomplete\n\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false;\n } // If the decoded string is equal to the input, the entity was not valid\n\n\n return char === entity ? false : char;\n}","'use strict';\n\nmodule.exports = atxHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = -1;\n var now = eat.now();\n var subvalue = '';\n var content = '';\n var character;\n var queue;\n var depth;\n /* Eat initial spacing. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat hashes. */\n\n\n depth = 0;\n\n while (++index <= length) {\n character = value.charAt(index);\n\n if (character !== C_HASH) {\n index--;\n break;\n }\n\n subvalue += character;\n depth++;\n }\n\n if (depth > MAX_ATX_COUNT) {\n return;\n }\n\n if (!depth || !settings.pedantic && value.charAt(index + 1) === C_HASH) {\n return;\n }\n\n length = value.length + 1;\n /* Eat intermediate white-space. */\n\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n queue += character;\n }\n /* Exit when not in pedantic mode without spacing. */\n\n\n if (!settings.pedantic && queue.length === 0 && character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n /* Eat content. */\n\n\n subvalue += queue;\n queue = '';\n content = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n\n if (character !== C_SPACE && character !== C_TAB && character !== C_HASH) {\n content += queue + character;\n queue = '';\n continue;\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_HASH) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n index--;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n return eat(subvalue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","'use strict';\n\nvar repeat = require('repeat-string');\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n/* Tokenise indented code. */\n\nfunction indentedCode(eat, value, silent) {\n var index = -1;\n var length = value.length;\n var subvalue = '';\n var content = '';\n var subvalueQueue = '';\n var contentQueue = '';\n var character;\n var blankQueue;\n var indent;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (indent) {\n indent = false;\n subvalue += subvalueQueue;\n content += contentQueue;\n subvalueQueue = '';\n contentQueue = '';\n\n if (character === C_NEWLINE) {\n subvalueQueue = character;\n contentQueue = character;\n } else {\n subvalue += character;\n content += character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n contentQueue = character;\n subvalueQueue = character;\n break;\n }\n\n subvalue += character;\n content += character;\n }\n }\n } else if (character === C_SPACE && value.charAt(index + 1) === character && value.charAt(index + 2) === character && value.charAt(index + 3) === character) {\n subvalueQueue += CODE_INDENT;\n index += 3;\n indent = true;\n } else if (character === C_TAB) {\n subvalueQueue += character;\n indent = true;\n } else {\n blankQueue = '';\n\n while (character === C_TAB || character === C_SPACE) {\n blankQueue += character;\n character = value.charAt(++index);\n }\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subvalueQueue += blankQueue + character;\n contentQueue += character;\n }\n }\n\n if (content) {\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'code',\n lang: null,\n value: trim(content)\n });\n }\n}","'use strict';\n\nmodule.exports = setextHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\nvar MAX_HEADING_INDENT = 3;\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\n\nvar SETEXT_MARKERS = {};\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n var self = this;\n var now = eat.now();\n var length = value.length;\n var index = -1;\n var subvalue = '';\n var content;\n var queue;\n var character;\n var marker;\n var depth;\n /* Eat initial indentation. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat content. */\n\n\n content = '';\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n index--;\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n content += queue + character;\n queue = '';\n }\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n /* Ensure the content is followed by a newline and a\n * valid marker. */\n\n character = value.charAt(++index);\n marker = value.charAt(++index);\n\n if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n return;\n }\n\n subvalue += character;\n /* Eat Setext-line. */\n\n queue = marker;\n depth = SETEXT_MARKERS[marker];\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n if (character !== C_NEWLINE) {\n return;\n }\n\n index--;\n break;\n }\n\n queue += character;\n }\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue + queue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n var length = value.length;\n var index = -1;\n var queue = '';\n var character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === '\\n') {\n if (index < MIN_BREAK_LENGTH) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n queue += character;\n return eat(queue)({\n type: 'break'\n });\n }\n\n if (character !== ' ') {\n return;\n }\n\n queue += character;\n }\n}","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n var self = this;\n var character;\n var node;\n\n if (value.charAt(0) === '\\\\') {\n character = value.charAt(1);\n\n if (self.escape.indexOf(character) !== -1) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n if (character === '\\n') {\n node = {\n type: 'break'\n };\n } else {\n node = {\n type: 'text',\n value: character\n };\n }\n\n return eat('\\\\' + character)(node);\n }\n }\n}","'use strict';\n\nmodule.exports = wordCharacter;\nvar fromCode = String.fromCharCode;\nvar re = /\\w/; // Check if the given character code, or the character code at the first\n// character, is a word character.\n\nfunction wordCharacter(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nvar trim = require('trim');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE || value.charAt(++index) !== character) {\n return;\n }\n\n pedantic = self.options.pedantic;\n marker = character;\n subvalue = marker + marker;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && value.charAt(index + 1) === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(index + 2);\n\n if (character !== marker) {\n if (!trim(queue)) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n return eat(subvalue + queue + subvalue)({\n type: 'strong',\n children: self.tokenizeInline(queue, now)\n });\n }\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\n\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n\n default:\n return u;\n }\n\n }\n\n case d:\n return u;\n }\n }\n}\n\nfunction A(a) {\n return z(a) === m;\n}\n\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\n\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\n\nexports.isConcurrentMode = A;\n\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\n\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\n\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\n\nexports.isFragment = function (a) {\n return z(a) === e;\n};\n\nexports.isLazy = function (a) {\n return z(a) === t;\n};\n\nexports.isMemo = function (a) {\n return z(a) === r;\n};\n\nexports.isPortal = function (a) {\n return z(a) === d;\n};\n\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\n\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\n\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n};\n\nexports.typeOf = z;","'use strict';\n\nvar xtend = require('xtend');\n\nvar escapes = require('markdown-escapes');\n\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n var self = this;\n var current = self.options;\n var key;\n var value;\n\n if (options == null) {\n options = {};\n } else if (typeof options === 'object') {\n options = xtend(options);\n } else {\n throw new Error('Invalid value `' + options + '` ' + 'for setting `options`');\n }\n\n for (key in defaults) {\n value = options[key];\n\n if (value == null) {\n value = current[key];\n }\n\n if (key !== 'blocks' && typeof value !== 'boolean' || key === 'blocks' && typeof value !== 'object') {\n throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n }\n\n options[key] = value;\n }\n\n self.options = options;\n self.escape = escapes(options);\n return self;\n}","'use strict';\n\nmodule.exports = thematicBreak;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n var index = -1;\n var length = value.length + 1;\n var subvalue = '';\n var character;\n var marker;\n var markerCount;\n var queue;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n }\n\n if (character !== C_ASTERISK && character !== C_DASH && character !== C_UNDERSCORE) {\n return;\n }\n\n marker = character;\n subvalue += character;\n markerCount = 1;\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n markerCount++;\n subvalue += queue + marker;\n queue = '';\n } else if (character === C_SPACE) {\n queue += character;\n } else if (markerCount >= THEMATIC_BREAK_MARKER_COUNT && (!character || character === C_NEWLINE)) {\n subvalue += queue;\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'thematicBreak'\n });\n } else {\n return;\n }\n }\n}","'use strict';\n\nvar trim = require('trim');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n/* Tokenise a blockquote. */\n\nfunction blockquote(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptBlockquote;\n var now = eat.now();\n var currentLine = now.line;\n var length = value.length;\n var values = [];\n var contents = [];\n var indents = [];\n var add;\n var index = 0;\n var character;\n var rest;\n var nextIndex;\n var content;\n var line;\n var startIndex;\n var prefixed;\n var exit;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) === C_GT) {\n index++;\n prefixed = true;\n\n if (value.charAt(index) === C_SPACE) {\n index++;\n }\n } else {\n index = startIndex;\n }\n\n content = value.slice(index, nextIndex);\n\n if (!prefixed && !trim(content)) {\n index = startIndex;\n break;\n }\n\n if (!prefixed) {\n rest = value.slice(index);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n break;\n }\n }\n\n line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n indents.push(index - startIndex);\n values.push(line);\n contents.push(content);\n index = nextIndex + 1;\n }\n\n index = -1;\n length = indents.length;\n add = eat(values.join(C_NEWLINE));\n\n while (++index < length) {\n offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n currentLine++;\n }\n\n exit = self.enterBlock();\n contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n exit();\n return add({\n type: 'blockquote',\n children: contents\n });\n}","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n var self = this;\n var blocks = self.options.blocks;\n var length = value.length;\n var index = 0;\n var next;\n var line;\n var offset;\n var character;\n var count;\n var sequence;\n var subvalue;\n var sequences = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^/, true], [/^<\\?/, /\\?>/, true], [/^/, true], [/^/, true], [new RegExp('^|$))', 'i'), /^$/, true], [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]];\n /* Eat initial spacing. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_LT) {\n return;\n }\n\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index, next);\n offset = -1;\n count = sequences.length;\n\n while (++offset < count) {\n if (sequences[offset][0].test(line)) {\n sequence = sequences[offset];\n break;\n }\n }\n\n if (!sequence) {\n return;\n }\n\n if (silent) {\n return sequence[2];\n }\n\n index = next;\n\n if (!sequence[1].test(line)) {\n while (index < length) {\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index + 1, next);\n\n if (sequence[1].test(line)) {\n if (line) {\n index = next;\n }\n\n break;\n }\n\n index = next;\n }\n }\n\n subvalue = value.slice(0, index);\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n return function (node) {\n types.forEach(function (type) {\n return visit(node, type, disallow, true);\n });\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n return function (node) {\n visit(node, disallow, true);\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent && !allowNode(node, index, parent)) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nfunction untangle(node, index, parent, mode) {\n if (mode === 'remove') {\n parent.children.splice(index, 1);\n } else if (mode === 'unwrap') {\n var args = [index, 1];\n\n if (node.children) {\n args = args.concat(node.children);\n }\n\n Array.prototype.splice.apply(parent.children, args);\n }\n}","'use strict';\n\nvar stringify = require('unist-util-stringify-position');\n\nmodule.exports = VMessage; // Inherit from `Error#`.\n\nfunction VMessagePrototype() {}\n\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype(); // Message properties.\n\nvar proto = VMessage.prototype;\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null; // Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\n\nfunction VMessage(reason, position, origin) {\n var parts;\n var range;\n var location;\n\n if (typeof position === 'string') {\n origin = position;\n position = null;\n }\n\n parts = parseOrigin(origin);\n range = stringify(position) || '1:1';\n location = {\n start: {\n line: null,\n column: null\n },\n end: {\n line: null,\n column: null\n }\n }; // Node.\n\n if (position && position.position) {\n position = position.position;\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position;\n position = position.start;\n } else {\n // Point.\n location.start = position;\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack;\n reason = reason.message;\n }\n\n this.message = reason;\n this.name = range;\n this.reason = reason;\n this.line = position ? position.line : null;\n this.column = position ? position.column : null;\n this.location = location;\n this.source = parts[0];\n this.ruleId = parts[1];\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null];\n var index;\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':');\n\n if (index === -1) {\n result[1] = origin;\n } else {\n result[0] = origin.slice(0, index);\n result[1] = origin.slice(index + 1);\n }\n }\n\n return result;\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var beforeURL;\n var beforeTitle;\n var queue;\n var character;\n var test;\n var identifier;\n var url;\n var title;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n identifier = queue;\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!isEnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === isEnclosedURLCharacter.delimiter) {\n subvalue += C_LT + queue + character;\n index++;\n } else {\n if (commonmark) {\n return;\n }\n\n index -= queue.length + 1;\n queue = '';\n }\n }\n\n if (!queue) {\n while (index < length) {\n character = value.charAt(index);\n\n if (!isUnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n subvalue += queue;\n }\n\n if (!queue) {\n return;\n }\n\n url = queue;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n test = null;\n\n if (character === C_DOUBLE_QUOTE) {\n test = C_DOUBLE_QUOTE;\n } else if (character === C_SINGLE_QUOTE) {\n test = C_SINGLE_QUOTE;\n } else if (character === C_PAREN_OPEN) {\n test = C_PAREN_CLOSE;\n }\n\n if (!test) {\n queue = '';\n index = subvalue.length;\n } else if (queue) {\n subvalue += queue + character;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === test) {\n break;\n }\n\n if (character === C_NEWLINE) {\n index++;\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === test) {\n return;\n }\n\n queue += C_NEWLINE;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== test) {\n return;\n }\n\n beforeTitle = subvalue;\n subvalue += queue + character;\n index++;\n title = queue;\n queue = '';\n } else {\n return;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n if (silent) {\n return true;\n }\n\n beforeURL = eat(beforeURL).test().end;\n url = self.decode.raw(self.unescape(url), beforeURL, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n return eat(subvalue)({\n type: 'definition',\n identifier: normalize(identifier),\n title: title || null,\n url: url\n });\n }\n}\n/* Check if `character` can be inside an enclosed URI. */\n\n\nfunction isEnclosedURLCharacter(character) {\n return character !== C_GT && character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n/* Check if `character` can be inside an unclosed URI. */\n\nfunction isUnclosedURLCharacter(character) {\n return character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE && !whitespace(character);\n}","'use strict';\n\nvar unherit = require('unherit');\n\nvar xtend = require('xtend');\n\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n var Local = unherit(Parser);\n Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n this.Parser = Local;\n}","'use strict';\n\nvar VMessage = require('vfile-message');\n\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\nvar proto = VFile.prototype;\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n/* Slight backwards compatibility. Remove in the future. */\n\nproto.warn = message;\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\n\nfunction message(reason, position, origin) {\n var filePath = this.path;\n var message = new VMessage(reason, position, origin);\n\n if (filePath) {\n message.name = filePath + ':' + message.name;\n message.file = filePath;\n }\n\n message.fatal = false;\n this.messages.push(message);\n return message;\n}\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\n\n\nfunction fail() {\n var message = this.message.apply(this, arguments);\n message.fatal = true;\n throw message;\n}\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\n\n\nfunction info() {\n var message = this.message.apply(this, arguments);\n message.fatal = null;\n return message;\n}","'use strict';\n\nmodule.exports = indentation;\n/* Map of characters, and their column length,\n * which can be used as indentation. */\n\nvar characters = {\n ' ': 1,\n '\\t': 4\n};\n/* Gets indentation information for a line. */\n\nfunction indentation(value) {\n var index = 0;\n var indent = 0;\n var character = value.charAt(index);\n var stops = {};\n var size;\n\n while (character in characters) {\n size = characters[character];\n indent += size;\n\n if (size > 1) {\n indent = Math.floor(indent / size) * size;\n }\n\n stops[indent] = index;\n character = value.charAt(++index);\n }\n\n return {\n indent: indent,\n stops: stops\n };\n}","'use strict';\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\n\nfunction indentation(value, maximum) {\n var values = value.split(C_NEWLINE);\n var position = values.length + 1;\n var minIndent = Infinity;\n var matrix = [];\n var index;\n var indentation;\n var stops;\n var padding;\n values.unshift(repeat(C_SPACE, maximum) + '!');\n\n while (position--) {\n indentation = getIndent(values[position]);\n matrix[position] = indentation.stops;\n\n if (trim(values[position]).length === 0) {\n continue;\n }\n\n if (indentation.indent) {\n if (indentation.indent > 0 && indentation.indent < minIndent) {\n minIndent = indentation.indent;\n }\n } else {\n minIndent = Infinity;\n break;\n }\n }\n\n if (minIndent !== Infinity) {\n position = values.length;\n\n while (position--) {\n stops = matrix[position];\n index = minIndent;\n\n while (index && !(index in stops)) {\n index--;\n }\n\n if (trim(values[position]).length !== 0 && minIndent && index !== minIndent) {\n padding = C_TAB;\n } else {\n padding = '';\n }\n\n values[position] = padding + values[position].slice(index in stops ? stops[index] + 1 : 0);\n }\n }\n\n values.shift();\n return values.join(C_NEWLINE);\n}","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n};\n\nfunction isBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n} // For Node v0.10 support. Remove this eventually.\n\n\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n}","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0,\n i,\n n;\n\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;","'use strict';\n\nvar wrap = require('./wrap.js');\n\nmodule.exports = trough;\ntrough.wrap = wrap;\nvar slice = [].slice; // Create new middleware.\n\nfunction trough() {\n var fns = [];\n var middleware = {};\n middleware.run = run;\n middleware.use = use;\n return middleware; // Run `fns`. Last argument must be a completion handler.\n\n function run() {\n var index = -1;\n var input = slice.call(arguments, 0, -1);\n var done = arguments[arguments.length - 1];\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done);\n }\n\n next.apply(null, [null].concat(input)); // Run the next `fn`, if any.\n\n function next(err) {\n var fn = fns[++index];\n var params = slice.call(arguments, 0);\n var values = params.slice(1);\n var length = input.length;\n var pos = -1;\n\n if (err) {\n done(err);\n return;\n } // Copy non-nully input into values.\n\n\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos];\n }\n }\n\n input = values; // Next or done.\n\n if (fn) {\n wrap(fn, next).apply(null, input);\n } else {\n done.apply(null, [null].concat(input));\n }\n }\n } // Add `fn` to the list.\n\n\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn);\n }\n\n fns.push(fn);\n return middleware;\n }\n}"],"sourceRoot":""}