mm-mark 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- package/.github/workflows/publish.yml +22 -0
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +104 -5
- package/dist/index.js +111 -111
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +108 -108
- package/dist/index.mjs.map +1 -1
- package/import_map.json +7 -0
- package/jsr.json +13 -0
- package/lib/mathjax.ts +72 -0
- package/lib/style.ts +33 -0
- package/package.json +4 -2
- package/tsconfig.json +1 -1
- package/tsup.config.ts +2 -2
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/options.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/showdown.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/helpers.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/converter.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/anchors.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/autoLinks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/blockGamut.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/blockQuotes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/codeBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/codeSpans.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/completeHTMLDocument.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/detab.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/ellipsis.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/emoji.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeBackslashEscapes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeCode.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/githubCodeBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashBlock.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashCodeTags.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashElement.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashHTMLBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashHTMLSpans.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashPreCodeTags.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/headers.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/horizontalRule.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/images.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/italicsAndBold.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/lists.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/metadata.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/outdent.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/paragraphs.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/runExtension.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/spanGamut.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/strikethrough.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/stripLinkDefinitions.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/tables.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/underline.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/unescapeSpecialChars.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/header.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/hr.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/image.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/links.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/list.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/listItem.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/node.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/pre.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/strong.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/table.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/txt.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/loader.js","../node_modules/.pnpm/ptm-frontmatter@1.0.1/node_modules/ptm-frontmatter/node_modules/js-yaml/dist/js-yaml.mjs","../node_modules/.pnpm/ptm-frontmatter@1.0.1/node_modules/ptm-frontmatter/index.js","../src/index.ts","../src/postTemp.ts"],"names":["getDefaultOpts","simple","defaultOptions","ret","opt","allOptionsOn","options","showdown","parsers","extensions","globalOptions","setFlavor","flavor","key","value","name","preset","option","func","ext","validExtension","validate","extension","errMsg","i","baseMsg","type","ln","validateExtension","a","getType","obj","callback","prop","s","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","text","charsToEscape","afterBackslash","regexString","regex","txt","rgxFindMatchPos","str","left","right","flags","f","g","x","l","pos","t","m","start","end","matchPos","results","replacement","repStr","finalStr","lng","bits","fromIndex","indexOf","index","mail","encode","ch","r","targetLength","padString","msg","converterOptions","langExtensions","outputModifiers","listeners","setConvFlavor","metadata","_constructor","gOpt","_parseExtension","legacyExtensionLoading","validExt","listen","valid","rTrimInputText","rsp","rgx","evtName","globals","ei","nText","src","HTMLParser","doc","substitutePreCodeTags","clean","nodes","mdDoc","node","n","child","pres","presPH","content","language","classes","c","matches","extensionName","ii","raw","format","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","target","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","link","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","b","href","bq","pre","pattern","codeblock","nextChar","doctype","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiRgx","emojiCode","tags","comments","delim","repFunc","match","blockText","blockTags","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","html","repText","limit","num","headerLevelStart","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hLevel","hashBlock","matchFound","atxStyle","hText","span","header","prefix","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","writeImageTagBase64","altText","width","height","writeImageTag","gUrls","gTitles","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","re","base64Regex","replaceFunc","blankLines","tableRgx","singeColTblRgx","parseStyles","sLine","parseHeaders","id","parseCells","cell","subText","buildTable","headers","cells","tb","tblLgn","parseTable","rawTable","tableLines","rawHeaders","rawStyles","rawCells","styles","row","charCodeToReplace","children","childrenLength","innerTxt","headerLevel","headerMark","listItems","listItemsLenght","listNum","bullet","listItemTxt","childrenLenght","spansOnly","tagName","tableArray","headings","rows","headContent","allign","cols","cellContent","cellSpacesCount","strLen","root","module","isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","source","length","sourceKeys","Object","keys","repeat","string","count","cycle","isNegativeZero","number","Number","NEGATIVE_INFINITY","isNothing_1","isObject_1","toArray_1","repeat_1","isNegativeZero_1","extend_1","common","formatError","exception","compact","where","message","reason","mark","line","column","snippet","YAMLException$1","Error","call","captureStackTrace","constructor","stack","prototype","create","toString","getLine","buffer","lineStart","lineEnd","position","maxLineLength","head","tail","maxHalfLength","Math","floor","slice","replace","padStart","max","makeSnippet","maxLength","indent","linesBefore","linesAfter","lineStarts","lineEnds","foundLineNo","exec","push","lineNoLength","min","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","forEach","alias","String","Type$1","tag","kind","resolve","construct","data","instanceOf","predicate","represent","representName","defaultStyle","multi","styleAliases","compileList","schema","currentType","newIndex","previousType","previousIndex","compileMap","scalar","mapping","fallback","collectType","arguments","Schema$1","definition","implicit","explicit","concat","type$1","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","seq","failsafe","resolveYamlNull","constructYamlNull","isNull","object","_null","canonical","lowercase","uppercase","camelcase","empty","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","charCodeAt","constructYamlInteger","sign","parseInt","isInteger","int","binary","octal","decimal","hexadecimal","toUpperCase","YAML_FLOAT_PATTERN","RegExp","resolveYamlFloat","test","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isNaN","isFloat","float","json","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","timestamp","resolveYamlMerge","merge","BASE64_MAP","resolveYamlBinary","code","idx","bitlen","charAt","constructYamlBinary","tailbits","input","Uint8Array","representYamlBinary","isBinary","_hasOwnProperty$3","hasOwnProperty","_toString$2","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","omap","_toString$1","resolveYamlPairs","constructYamlPairs","pairs","_hasOwnProperty$2","resolveYamlSet","constructYamlSet","set","_default","_hasOwnProperty$1","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","simpleEscapeCheck","simpleEscapeMap","State$1","filename","onWarning","legacy","listener","implicitTypes","typeMap","lineIndent","firstTabInLine","documents","generateError","state","throwError","throwWarning","directiveHandlers","YAML","args","major","minor","version","checkLineBreaks","TAG","handle","tagMap","decodeURIComponent","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","defineProperty","configurable","enumerable","writable","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_pos","_tag","_anchor","anchor","terminator","isPair","isExplicitPair","isMapping","anchorMap","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","typeList","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll$1","iterator","load$1","loadAll_1","load_1","loader","loadAll","load","findMetaIndices","mem","emptyObject","getData","_ref","lines","metaIndices","join","getContent","_ref2","frontmatter","filePhat","contents","fs","readFileSync","split","reduce","import_showdown","htmlTemplate","postContent","postTitle","postDate","readingTime","lastUpdate","pc","postTemp_default","ShowdownMathjax","showdownPrism","Converter","filePath","words","converter","src_default"],"mappings":"ukBAIA,SAASA,EAAgBC,EAAQ,CAC/B,aAEA,IAAIC,EAAiB,CACnB,wBAAyB,CACvB,aAAc,GACd,SAAU,wDACV,KAAM,SACR,EACA,WAAY,CACV,aAAc,GACd,SAAU,kCACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,GACd,SAAU,4JACV,KAAM,QACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,uKACV,KAAM,SACR,EACA,qBAAsB,CACpB,aAAc,GACd,SAAU,oIACV,KAAM,SACR,EACA,YAAa,CACX,aAAc,GACd,SAAU,0JACV,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,SAAU,gCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,sCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,iCACV,KAAM,SACR,EACA,mCAAoC,CAClC,aAAc,GACd,SAAU,sEACV,KAAM,SACR,EACA,0BAA2B,CACzB,aAAc,GACd,SAAU,mDACV,KAAM,SACR,EACA,wBAAyB,CACvB,aAAc,GACd,SAAU,+CACV,KAAM,SACR,EACA,cAAe,CACb,aAAc,GACd,SAAU,oCACV,KAAM,SACR,EACA,OAAQ,CACN,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,aAAc,CACZ,aAAc,GACd,SAAU,6CACV,KAAM,SACR,EACA,UAAW,CACT,aAAc,GACd,SAAU,mCACV,KAAM,SACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,kEACV,KAAM,SACR,EACA,oBAAqB,CACnB,aAAc,GACd,SAAU,kDACV,KAAM,SACR,EACA,qCAAsC,CACpC,aAAc,GACd,SAAU,oEACV,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,SAAU,gDACV,KAAM,SACR,EACA,8BAA+B,CAC7B,aAAc,GACd,SAAU,6EACV,KAAM,SACR,EACA,WAAY,CACV,aAAc,GACd,SAAU,2BACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,yBACd,SAAU,yFACV,KAAM,QACR,E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","sourcesContent":["/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '"');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/</g, '<');\n\n // Encode >\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&')\n // double quotes\n .replace(/\"/g, '"');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '"');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n","\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\n\nvar common = {\n\tisNothing: isNothing_1,\n\tisObject: isObject_1,\n\ttoArray: toArray_1,\n\trepeat: repeat_1,\n\tisNegativeZero: isNegativeZero_1,\n\textend: extend_1\n};\n\n// YAML error class. http://stackoverflow.com/questions/8458984\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException$1(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\n\n\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nvar exception = YAMLException$1;\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nvar snippet = makeSnippet;\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type$1(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nvar type = Type$1;\n\n/*eslint-disable max-len*/\n\n\n\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\n\n\nSchema$1.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new exception('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type$1.loadKind && type$1.loadKind !== 'scalar') {\n throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type$1.multi) {\n throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema$1.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nvar schema = Schema$1;\n\nvar str = new type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n\nvar seq = new type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n\nvar map = new type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nvar _null = new type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nvar bool = new type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nvar int = new type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nvar float = new type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\n\nvar core = json;\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nvar timestamp = new type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nvar merge = new type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n\n/*eslint-disable no-bitwise*/\n\n\n\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nvar binary = new type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString$2.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nvar omap = new type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n\nvar _toString$1 = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString$1.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nvar pairs = new type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nvar set = new type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\n\n/*eslint-disable max-len,no-use-before-define*/\n\n\n\n\n\n\n\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State$1(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || _default;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = snippet(mark);\n\n return new exception(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty$1.call(overridableKeys, keyNode) &&\n _hasOwnProperty$1.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n // used for this specific key only because Object.defineProperty is slow\n if (keyNode === '__proto__') {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State$1(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception('expected a single document in the stream, but found more');\n}\n\n\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\n\nvar loader = {\n\tloadAll: loadAll_1,\n\tload: load_1\n};\n\n/*eslint-disable no-use-before-define*/\n\n\n\n\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new exception('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || _default;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string) + '\"';\n default:\n throw new exception('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new exception('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new exception('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new exception('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump$1(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nvar dump_1 = dump$1;\n\nvar dumper = {\n\tdump: dump_1\n};\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nvar Type = type;\nvar Schema = schema;\nvar FAILSAFE_SCHEMA = failsafe;\nvar JSON_SCHEMA = json;\nvar CORE_SCHEMA = core;\nvar DEFAULT_SCHEMA = _default;\nvar load = loader.load;\nvar loadAll = loader.loadAll;\nvar dump = dumper.dump;\nvar YAMLException = exception;\n\n// Re-export all types in case user wants to create custom schema\nvar types = {\n binary: binary,\n float: float,\n map: map,\n null: _null,\n pairs: pairs,\n set: set,\n timestamp: timestamp,\n bool: bool,\n int: int,\n merge: merge,\n omap: omap,\n seq: seq,\n str: str\n};\n\n// Removed functions from JS-YAML 3.0.x\nvar safeLoad = renamed('safeLoad', 'load');\nvar safeLoadAll = renamed('safeLoadAll', 'loadAll');\nvar safeDump = renamed('safeDump', 'dump');\n\nvar jsYaml = {\n\tType: Type,\n\tSchema: Schema,\n\tFAILSAFE_SCHEMA: FAILSAFE_SCHEMA,\n\tJSON_SCHEMA: JSON_SCHEMA,\n\tCORE_SCHEMA: CORE_SCHEMA,\n\tDEFAULT_SCHEMA: DEFAULT_SCHEMA,\n\tload: load,\n\tloadAll: loadAll,\n\tdump: dump,\n\tYAMLException: YAMLException,\n\ttypes: types,\n\tsafeLoad: safeLoad,\n\tsafeLoadAll: safeLoadAll,\n\tsafeDump: safeDump\n};\n\nexport default jsYaml;\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n","import { load } from 'js-yaml';\nimport fs from 'fs';\nconst findMetaIndices = (mem, item, i) => {\n if (/^---/.test(item)) {\n mem.push(i)\n }\n \n return mem\n}\n\nconst emptyObject = {}\n\nconst getData = ({ lines, metaIndices }) => {\n if (metaIndices.length > 0) {\n const data = lines.slice(metaIndices[0] + 1, metaIndices[1])\n return load(data.join('\\n'))\n }\n\n return emptyObject\n}\nconst getContent = ({ lines, metaIndices }) => {\n if (metaIndices.length > 0) {\n lines = lines.slice(metaIndices[1] + 1, lines.length)\n }\n \n return lines.join('\\n')\n}\n\nconst frontmatter = filePhat => {\n const contents = fs.readFileSync(filePhat, 'utf8');\n const lines = contents.split('\\n');\n const metaIndices = lines.reduce(findMetaIndices, []);\n const data = getData({ lines, metaIndices });\n const content = getContent({ lines, metaIndices });\n \n return { data, content }\n }\n \n export default frontmatter\n","import frontmatter from \"ptm-frontmatter\";\nimport showdown from \"showdown\";\nimport fs from \"fs\";\nimport htmlTemplate from \"./postTemp.js\";\nimport ShowdownMathjax from \"showdown-mathjax\";\nimport showdownPrism from \"showdown-prism\";\n\nclass Converter {\n filePath: string;\n constructor(filePath: string) {\n this.filePath = filePath;\n }\n formatDate(date: string) {\n return new Date(date).toLocaleString(\"en-US\", {\n weekday: \"short\",\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n });\n }\n readTime(text: string) {\n const wpm = 225;\n const words = text.trim().split(/\\s+/).length;\n return Math.ceil(words / wpm);\n }\n lastUpdate() {\n const stats = fs.statSync(this.filePath);\n const lastModifiedTime = stats.mtime.toISOString();\n return lastModifiedTime;\n }\n\n /**\n * Initializes and configures a showdown.Converter object with specific options and flavor.\n * @returns {showdown.Converter} The initialized converter object.\n */\n convert(): showdown.Converter {\n const converter = new showdown.Converter({\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n strikethrough: true,\n tables: true,\n tasklists: true,\n openLinksInNewWindow: true,\n emoji: true,\n moreStyling: true,\n extensions: [ShowdownMathjax, showdownPrism],\n });\n\n converter.setFlavor(\"github\");\n return converter;\n }\n\n filecontent() {\n return frontmatter(this.filePath);\n }\n\n get data() {\n return this.filecontent().data;\n }\n get content() {\n return this.filecontent().content;\n }\n get postTitle() {\n return this.data.title;\n }\n get postDate() {\n return this.formatDate(this.data.date);\n }\n get lastUpdatedDate() {\n const a = this.formatDate(this.lastUpdate());\n return `<small>Last Update : ${a}</small>`;\n }\n get readingTime() {\n const a = this.readTime(this.content);\n return `<small>Reading Time : ${a} minutes</small>`;\n }\n get json() {\n return JSON.stringify(this.filecontent());\n }\n get convertedContent() {\n return this.convert().makeHtml(this.content);\n }\n get postHtml() {\n return htmlTemplate({\n postContent: this.convertedContent,\n postTitle: this.postTitle,\n postDate: this.postDate,\n readingTime: this.readingTime,\n lastUpdate: this.lastUpdatedDate,\n });\n }\n\n get pageHtml() {\n return htmlTemplate({\n postContent: this.convertedContent,\n postTitle: \"\",\n postDate: \"\",\n readingTime: \"\",\n lastUpdate: \"\",\n });\n }\n}\n\nexport default Converter;\n","type props = {\n postContent: string;\n postTitle: string;\n postDate: string;\n readingTime: string;\n lastUpdate: string;\n};\nconst htmlTemplate = ({\n postContent,\n postTitle,\n postDate,\n readingTime,\n lastUpdate,\n}: props) => {\n const pc = postContent === undefined ? console.error(\"Error\") : postContent;\n const tt = postTitle === undefined ? \"\" : postTitle;\n const dat = postDate === undefined ? \"\" : postDate;\n const rt = readingTime === undefined ? \"\" : readingTime;\n const lud = lastUpdate === undefined ? \"\" : lastUpdate;\n const html = /* html */ `\n <div id=\"mm-mark\">\n <h2>${tt}</h2>\n <small>${dat}</small>\n ${rt}\n <div>${pc}</div>\n ${lud}\n </div>\n \n `;\n return html;\n};\n\nexport default htmlTemplate;\n"]}
|
1
|
+
{"version":3,"sources":["../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/options.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/showdown.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/helpers.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/converter.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/anchors.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/autoLinks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/blockGamut.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/blockQuotes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/codeBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/codeSpans.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/completeHTMLDocument.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/detab.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/ellipsis.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/emoji.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeAmpsAndAngles.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeBackslashEscapes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/encodeCode.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/escapeSpecialCharsWithinTagAttributes.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/githubCodeBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashBlock.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashCodeTags.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashElement.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashHTMLBlocks.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashHTMLSpans.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/hashPreCodeTags.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/headers.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/horizontalRule.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/images.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/italicsAndBold.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/lists.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/metadata.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/outdent.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/paragraphs.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/runExtension.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/spanGamut.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/strikethrough.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/stripLinkDefinitions.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/tables.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/underline.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/unescapeSpecialChars.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/blockquote.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/codeBlock.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/codeSpan.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/emphasis.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/header.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/hr.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/image.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/links.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/list.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/listItem.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/node.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/paragraph.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/pre.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/strikethrough.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/strong.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/table.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/tableCell.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/subParsers/makeMarkdown/txt.js","../node_modules/.pnpm/showdown@2.1.0/node_modules/showdown/src/loader.js","../src/index.ts","../src/postTemp.ts","../node_modules/.pnpm/js-yaml@4.1.0/node_modules/js-yaml/dist/js-yaml.mjs","../src/frontmatter.ts"],"names":["getDefaultOpts","simple","defaultOptions","ret","opt","allOptionsOn","options","showdown","parsers","extensions","globalOptions","setFlavor","flavor","key","value","name","preset","option","func","ext","validExtension","validate","extension","errMsg","i","baseMsg","type","ln","validateExtension","a","getType","obj","callback","prop","s","escapeCharactersCallback","wholeMatch","m1","charCodeToEscape","text","charsToEscape","afterBackslash","regexString","regex","txt","rgxFindMatchPos","str","left","right","flags","f","g","x","l","pos","t","m","start","end","matchPos","results","replacement","repStr","finalStr","lng","bits","fromIndex","indexOf","index","mail","encode","ch","r","targetLength","padString","msg","converterOptions","langExtensions","outputModifiers","listeners","setConvFlavor","metadata","_constructor","gOpt","_parseExtension","legacyExtensionLoading","validExt","listen","valid","rTrimInputText","rsp","rgx","evtName","globals","ei","nText","src","HTMLParser","doc","substitutePreCodeTags","clean","nodes","mdDoc","node","n","child","pres","presPH","content","language","classes","c","matches","extensionName","ii","raw","format","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","target","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","link","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","b","href","bq","pre","pattern","codeblock","nextChar","doctype","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiRgx","emojiCode","tags","comments","delim","repFunc","match","blockText","blockTags","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","html","repText","limit","num","headerLevelStart","setextRegexH1","setextRegexH2","spanGamut","hID","headerId","hLevel","hashBlock","matchFound","atxStyle","hText","span","header","prefix","inlineRegExp","crazyRegExp","base64RegExp","referenceRegExp","refShortcutRegExp","writeImageTagBase64","altText","width","height","writeImageTag","gUrls","gTitles","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","style","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","re","base64Regex","replaceFunc","blankLines","tableRgx","singeColTblRgx","parseStyles","sLine","parseHeaders","id","parseCells","cell","subText","buildTable","headers","cells","tb","tblLgn","parseTable","rawTable","tableLines","rawHeaders","rawStyles","rawCells","styles","row","charCodeToReplace","children","childrenLength","innerTxt","headerLevel","headerMark","listItems","listItemsLenght","listNum","bullet","listItemTxt","childrenLenght","spansOnly","tagName","tableArray","headings","rows","headContent","allign","cols","cellContent","cellSpacesCount","strLen","root","module","import_showdown","fs","htmlTemplate","postContent","postTitle","postDate","readingTime","lastUpdate","pc","postTemp_default","ShowdownMathjax","showdownPrism","isNothing","subject","isObject","toArray","sequence","extend","source","length","sourceKeys","repeat","string","count","cycle","isNegativeZero","number","isNothing_1","isObject_1","toArray_1","repeat_1","isNegativeZero_1","extend_1","common","formatError","exception","compact","where","message","YAMLException$1","reason","mark","getLine","buffer","lineStart","lineEnd","position","maxLineLength","head","tail","maxHalfLength","padStart","max","makeSnippet","lineStarts","lineEnds","foundLineNo","line","lineNoLength","snippet","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","map","alias","Type$1","tag","data","compileList","schema","currentType","newIndex","previousType","previousIndex","compileMap","collectType","Schema$1","definition","implicit","explicit","type$1","seq","failsafe","resolveYamlNull","constructYamlNull","isNull","object","_null","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","constructYamlInteger","sign","isInteger","int","YAML_FLOAT_PATTERN","resolveYamlFloat","constructYamlFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isFloat","float","json","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","representYamlTimestamp","timestamp","resolveYamlMerge","merge","BASE64_MAP","resolveYamlBinary","code","idx","bitlen","constructYamlBinary","tailbits","input","representYamlBinary","isBinary","binary","_hasOwnProperty$3","_toString$2","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","omap","_toString$1","resolveYamlPairs","keys","constructYamlPairs","pairs","_hasOwnProperty$2","resolveYamlSet","constructYamlSet","set","_default","_hasOwnProperty$1","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","simpleEscapeCheck","simpleEscapeMap","State$1","generateError","state","throwError","throwWarning","directiveHandlers","args","major","minor","handle","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_pos","_tag","_anchor","terminator","isPair","isExplicitPair","isMapping","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","typeList","blockIndent","readDocument","documentStart","directiveName","directiveArgs","hasDirectives","loadDocuments","nullpos","loadAll$1","iterator","documents","load$1","loadAll_1","load_1","loader","_toString","_hasOwnProperty","CHAR_BOM","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","DEPRECATED_BASE60_SYNTAX","compileStyleMap","encodeHex","character","QUOTING_TYPE_SINGLE","QUOTING_TYPE_DOUBLE","State","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","isWhitespace","isPrintable","isNsCharOrWhitespace","isPlainSafe","prev","inblock","cIsNsCharOrWhitespace","cIsNsChar","isPlainSafeFirst","isPlainSafeLast","codePointAt","first","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","lineWidth","testAmbiguousType","quotingType","forceQuotes","char","prevChar","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","indent","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","lineRe","nextLF","foldLine","prevMoreIndented","moreIndented","breakRe","curr","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","detectType","block","isblockseq","tagStr","objectOrArray","duplicateIndex","duplicate","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dump$1","dump_1","dumper","renamed","from","to","load","loadAll","dump","safeLoad","safeLoadAll","safeDump","findMetaIndices","mem","emptyObject","getData","lines","metaIndices","getContent","frontmatter","filePhat","frontmatter_default","Converter","filePath","words","converter","error","src_default"],"mappings":"ukBAIA,SAASA,EAAgBC,EAAQ,CAC/B,aAEA,IAAIC,EAAiB,CACnB,wBAAyB,CACvB,aAAc,GACd,SAAU,wDACV,KAAM,SACR,EACA,WAAY,CACV,aAAc,GACd,SAAU,kCACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,GACd,SAAU,4JACV,KAAM,QACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,uKACV,KAAM,SACR,EACA,qBAAsB,CACpB,aAAc,GACd,SAAU,oIACV,KAAM,SACR,EACA,YAAa,CACX,aAAc,GACd,SAAU,0JACV,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,SAAU,gCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,sCACV,KAAM,SACR,EACA,mBAAoB,CAClB,aAAc,GACd,SAAU,iCACV,KAAM,SACR,EACA,mCAAoC,CAClC,aAAc,GACd,SAAU,sEACV,KAAM,SACR,EACA,0BAA2B,CACzB,aAAc,GACd,SAAU,mDACV,KAAM,SACR,EACA,wBAAyB,CACvB,aAAc,GACd,SAAU,+CACV,KAAM,SACR,EACA,cAAe,CACb,aAAc,GACd,SAAU,oCACV,KAAM,SACR,EACA,OAAQ,CACN,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,GACd,SAAU,6BACV,KAAM,SACR,EACA,aAAc,CACZ,aAAc,GACd,SAAU,6CACV,KAAM,SACR,EACA,UAAW,CACT,aAAc,GACd,SAAU,mCACV,KAAM,SACR,EACA,kBAAmB,CACjB,aAAc,GACd,SAAU,kEACV,KAAM,SACR,EACA,oBAAqB,CACnB,aAAc,GACd,SAAU,kDACV,KAAM,SACR,EACA,qCAAsC,CACpC,aAAc,GACd,SAAU,oEACV,KAAM,SACR,EACA,iBAAkB,CAChB,aAAc,GACd,SAAU,gDACV,KAAM,SACR,EACA,8BAA+B,CAC7B,aAAc,GACd,SAAU,6EACV,KAAM,SACR,EACA,WAAY,CACV,aAAc,GACd,SAAU,2BACV,KAAM,SACR,EACA,eAAgB,CACd,aAAc,yBACd,SAAU,yFACV,KAAM,QACR,E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","sourcesContent":["/**\n * Created by Tivie on 13-07-2015.\n */\n\nfunction getDefaultOpts (simple) {\n 'use strict';\n\n var defaultOptions = {\n omitExtraWLInCodeBlocks: {\n defaultValue: false,\n describe: 'Omit the default extra whiteline added to code blocks',\n type: 'boolean'\n },\n noHeaderId: {\n defaultValue: false,\n describe: 'Turn on/off generated header id',\n type: 'boolean'\n },\n prefixHeaderId: {\n defaultValue: false,\n describe: 'Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic \\'section-\\' prefix',\n type: 'string'\n },\n rawPrefixHeaderId: {\n defaultValue: false,\n describe: 'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the \" char is used in the prefix)',\n type: 'boolean'\n },\n ghCompatibleHeaderId: {\n defaultValue: false,\n describe: 'Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)',\n type: 'boolean'\n },\n rawHeaderId: {\n defaultValue: false,\n describe: 'Remove only spaces, \\' and \" from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids',\n type: 'boolean'\n },\n headerLevelStart: {\n defaultValue: false,\n describe: 'The header blocks level start',\n type: 'integer'\n },\n parseImgDimensions: {\n defaultValue: false,\n describe: 'Turn on/off image dimension parsing',\n type: 'boolean'\n },\n simplifiedAutoLink: {\n defaultValue: false,\n describe: 'Turn on/off GFM autolink style',\n type: 'boolean'\n },\n excludeTrailingPunctuationFromURLs: {\n defaultValue: false,\n describe: 'Excludes trailing punctuation from links generated with autoLinking',\n type: 'boolean'\n },\n literalMidWordUnderscores: {\n defaultValue: false,\n describe: 'Parse midword underscores as literal underscores',\n type: 'boolean'\n },\n literalMidWordAsterisks: {\n defaultValue: false,\n describe: 'Parse midword asterisks as literal asterisks',\n type: 'boolean'\n },\n strikethrough: {\n defaultValue: false,\n describe: 'Turn on/off strikethrough support',\n type: 'boolean'\n },\n tables: {\n defaultValue: false,\n describe: 'Turn on/off tables support',\n type: 'boolean'\n },\n tablesHeaderId: {\n defaultValue: false,\n describe: 'Add an id to table headers',\n type: 'boolean'\n },\n ghCodeBlocks: {\n defaultValue: true,\n describe: 'Turn on/off GFM fenced code blocks support',\n type: 'boolean'\n },\n tasklists: {\n defaultValue: false,\n describe: 'Turn on/off GFM tasklist support',\n type: 'boolean'\n },\n smoothLivePreview: {\n defaultValue: false,\n describe: 'Prevents weird effects in live previews due to incomplete input',\n type: 'boolean'\n },\n smartIndentationFix: {\n defaultValue: false,\n describe: 'Tries to smartly fix indentation in es6 strings',\n type: 'boolean'\n },\n disableForced4SpacesIndentedSublists: {\n defaultValue: false,\n describe: 'Disables the requirement of indenting nested sublists by 4 spaces',\n type: 'boolean'\n },\n simpleLineBreaks: {\n defaultValue: false,\n describe: 'Parses simple line breaks as <br> (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n describe: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n describe: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n describe: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n describe: 'Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities',\n type: 'boolean'\n },\n openLinksInNewWindow: {\n defaultValue: false,\n describe: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n describe: 'Support for HTML Tag escaping. ex: \\<div>foo\\</div>',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n describe: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n describe: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `<em>` and `<strong>`',\n type: 'boolean'\n },\n ellipsis: {\n defaultValue: true,\n describe: 'Replaces three dots with the ellipsis unicode character',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n describe: 'Outputs a complete html document, including `<html>`, `<head>` and `<body>` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n describe: 'Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).',\n type: 'boolean'\n },\n splitAdjacentBlockquotes: {\n defaultValue: false,\n describe: 'Split adjacent blockquote blocks',\n type: 'boolean'\n }\n };\n if (simple === false) {\n return JSON.parse(JSON.stringify(defaultOptions));\n }\n var ret = {};\n for (var opt in defaultOptions) {\n if (defaultOptions.hasOwnProperty(opt)) {\n ret[opt] = defaultOptions[opt].defaultValue;\n }\n }\n return ret;\n}\n\nfunction allOptionsOn () {\n 'use strict';\n var options = getDefaultOpts(true),\n ret = {};\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n ret[opt] = true;\n }\n }\n return ret;\n}\n","/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n parsers = {},\n extensions = {},\n globalOptions = getDefaultOpts(true),\n setFlavor = 'vanilla',\n flavor = {\n github: {\n omitExtraWLInCodeBlocks: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n disableForced4SpacesIndentedSublists: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghCompatibleHeaderId: true,\n ghMentions: true,\n backslashEscapesHTMLTags: true,\n emoji: true,\n splitAdjacentBlockquotes: true\n },\n original: {\n noHeaderId: true,\n ghCodeBlocks: false\n },\n ghost: {\n omitExtraWLInCodeBlocks: true,\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n excludeTrailingPunctuationFromURLs: true,\n literalMidWordUnderscores: true,\n strikethrough: true,\n tables: true,\n tablesHeaderId: true,\n ghCodeBlocks: true,\n tasklists: true,\n smoothLivePreview: true,\n simpleLineBreaks: true,\n requireSpaceBeforeHeadingText: true,\n ghMentions: false,\n encodeEmails: true\n },\n vanilla: getDefaultOpts(true),\n allOn: allOptionsOn()\n };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n 'use strict';\n globalOptions[key] = value;\n return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n 'use strict';\n return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n 'use strict';\n return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n 'use strict';\n globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n 'use strict';\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n showdown.resetOptions();\n var preset = flavor[name];\n setFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n globalOptions[option] = preset[option];\n }\n }\n};\n\n/**\n * Get the currently set flavor\n * @returns {string}\n */\nshowdown.getFlavor = function () {\n 'use strict';\n return setFlavor;\n};\n\n/**\n * Get the options of a specified flavor. Returns undefined if the flavor was not found\n * @param {string} name Name of the flavor\n * @returns {{}|undefined}\n */\nshowdown.getFlavorOptions = function (name) {\n 'use strict';\n if (flavor.hasOwnProperty(name)) {\n return flavor[name];\n }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n 'use strict';\n return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name) - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n 'use strict';\n if (showdown.helper.isString(name)) {\n if (typeof func !== 'undefined') {\n parsers[name] = func;\n } else {\n if (parsers.hasOwnProperty(name)) {\n return parsers[name];\n } else {\n throw Error('SubParser named ' + name + ' not registered!');\n }\n }\n }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|object[]|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n 'use strict';\n\n if (!showdown.helper.isString(name)) {\n throw Error('Extension \\'name\\' must be a string');\n }\n\n name = showdown.helper.stdExtName(name);\n\n // Getter\n if (showdown.helper.isUndefined(ext)) {\n if (!extensions.hasOwnProperty(name)) {\n throw Error('Extension named ' + name + ' is not registered!');\n }\n return extensions[name];\n\n // Setter\n } else {\n // Expand extension if it's wrapped in a function\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n // Ensure extension is an array\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExtension = validate(ext, name);\n\n if (validExtension.valid) {\n extensions[name] = ext;\n } else {\n throw Error(validExtension.error);\n }\n }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n 'use strict';\n return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n 'use strict';\n delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n 'use strict';\n extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate (extension, name) {\n 'use strict';\n\n var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n ret = {\n valid: true,\n error: ''\n };\n\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n\n for (var i = 0; i < extension.length; ++i) {\n var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n ext = extension[i];\n if (typeof ext !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n return ret;\n }\n\n if (!showdown.helper.isString(ext.type)) {\n ret.valid = false;\n ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n return ret;\n }\n\n var type = ext.type = ext.type.toLowerCase();\n\n // normalize extension type\n if (type === 'language') {\n type = ext.type = 'lang';\n }\n\n if (type === 'html') {\n type = ext.type = 'output';\n }\n\n if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n ret.valid = false;\n ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n return ret;\n }\n\n if (type === 'listener') {\n if (showdown.helper.isUndefined(ext.listeners)) {\n ret.valid = false;\n ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n return ret;\n }\n } else {\n if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n ret.valid = false;\n ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n return ret;\n }\n }\n\n if (ext.listeners) {\n if (typeof ext.listeners !== 'object') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n return ret;\n }\n for (var ln in ext.listeners) {\n if (ext.listeners.hasOwnProperty(ln)) {\n if (typeof ext.listeners[ln] !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n return ret;\n }\n }\n }\n }\n\n if (ext.filter) {\n if (typeof ext.filter !== 'function') {\n ret.valid = false;\n ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n return ret;\n }\n } else if (ext.regex) {\n if (showdown.helper.isString(ext.regex)) {\n ext.regex = new RegExp(ext.regex, 'g');\n }\n if (!(ext.regex instanceof RegExp)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n return ret;\n }\n if (showdown.helper.isUndefined(ext.replace)) {\n ret.valid = false;\n ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n return ret;\n }\n }\n }\n return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n 'use strict';\n\n var validateExtension = validate(ext, null);\n if (!validateExtension.valid) {\n console.warn(validateExtension.error);\n return false;\n }\n return true;\n};\n","/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function (a) {\n 'use strict';\n return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function (a) {\n 'use strict';\n var getType = {};\n return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function (a) {\n 'use strict';\n return Array.isArray(a);\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function (value) {\n 'use strict';\n return typeof value === 'undefined';\n};\n\n/**\n * ForEach helper function\n * Iterates over Arrays and Objects (own properties only)\n * @static\n * @param {*} obj\n * @param {function} callback Accepts 3 params: 1. value, 2. key, 3. the original array/object\n */\nshowdown.helper.forEach = function (obj, callback) {\n 'use strict';\n // check if obj is defined\n if (showdown.helper.isUndefined(obj)) {\n throw new Error('obj param is required');\n }\n\n if (showdown.helper.isUndefined(callback)) {\n throw new Error('callback param is required');\n }\n\n if (!showdown.helper.isFunction(callback)) {\n throw new Error('callback param must be a function/closure');\n }\n\n if (typeof obj.forEach === 'function') {\n obj.forEach(callback);\n } else if (showdown.helper.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n callback(obj[i], i, obj);\n }\n } else if (typeof (obj) === 'object') {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n callback(obj[prop], prop, obj);\n }\n }\n } else {\n throw new Error('obj does not seem to be an array or an iterable object');\n }\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n 'use strict';\n return s.replace(/[_?*+\\/\\\\.^-]/g, '').replace(/\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback (wholeMatch, m1) {\n 'use strict';\n var charCodeToEscape = m1.charCodeAt(0);\n return '¨E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function (text, charsToEscape, afterBackslash) {\n 'use strict';\n // First we have to escape the escape characters so that\n // we can build a character class out of them\n var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n if (afterBackslash) {\n regexString = '\\\\\\\\' + regexString;\n }\n\n var regex = new RegExp(regexString, 'g');\n text = text.replace(regex, escapeCharactersCallback);\n\n return text;\n};\n\n/**\n * Unescape HTML entities\n * @param txt\n * @returns {string}\n */\nshowdown.helper.unescapeHTMLEntities = function (txt) {\n 'use strict';\n\n return txt\n .replace(/"/g, '\"')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&');\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n 'use strict';\n var f = flags || '',\n g = f.indexOf('g') > -1,\n x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n l = new RegExp(left, f.replace(/g/g, '')),\n pos = [],\n t, s, m, start, end;\n\n do {\n t = 0;\n while ((m = x.exec(str))) {\n if (l.test(m[0])) {\n if (!(t++)) {\n s = x.lastIndex;\n start = s - m[0].length;\n }\n } else if (t) {\n if (!--t) {\n end = m.index + m[0].length;\n var obj = {\n left: {start: start, end: s},\n match: {start: s, end: m.index},\n right: {start: m.index, end: end},\n wholeMatch: {start: start, end: end}\n };\n pos.push(obj);\n if (!g) {\n return pos;\n }\n }\n }\n }\n } while (t && (x.lastIndex = s));\n\n return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n 'use strict';\n\n var matchPos = rgxFindMatchPos (str, left, right, flags),\n results = [];\n\n for (var i = 0; i < matchPos.length; ++i) {\n results.push([\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n ]);\n }\n return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n 'use strict';\n\n if (!showdown.helper.isFunction(replacement)) {\n var repStr = replacement;\n replacement = function () {\n return repStr;\n };\n }\n\n var matchPos = rgxFindMatchPos(str, left, right, flags),\n finalStr = str,\n lng = matchPos.length;\n\n if (lng > 0) {\n var bits = [];\n if (matchPos[0].wholeMatch.start !== 0) {\n bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n }\n for (var i = 0; i < lng; ++i) {\n bits.push(\n replacement(\n str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n str.slice(matchPos[i].match.start, matchPos[i].match.end),\n str.slice(matchPos[i].left.start, matchPos[i].left.end),\n str.slice(matchPos[i].right.start, matchPos[i].right.end)\n )\n );\n if (i < lng - 1) {\n bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n }\n }\n if (matchPos[lng - 1].wholeMatch.end < str.length) {\n bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n }\n finalStr = bits.join('');\n }\n return finalStr;\n};\n\n/**\n * Returns the index within the passed String object of the first occurrence of the specified regex,\n * starting the search at fromIndex. Returns -1 if the value is not found.\n *\n * @param {string} str string to search\n * @param {RegExp} regex Regular expression to search\n * @param {int} [fromIndex = 0] Index to start the search\n * @returns {Number}\n * @throws InvalidArgumentError\n */\nshowdown.helper.regexIndexOf = function (str, regex, fromIndex) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n if (regex instanceof RegExp === false) {\n throw 'InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp';\n }\n var indexOf = str.substring(fromIndex || 0).search(regex);\n return (indexOf >= 0) ? (indexOf + (fromIndex || 0)) : indexOf;\n};\n\n/**\n * Splits the passed string object at the defined index, and returns an array composed of the two substrings\n * @param {string} str string to split\n * @param {int} index index to split string at\n * @returns {[string,string]}\n * @throws InvalidArgumentError\n */\nshowdown.helper.splitAtIndex = function (str, index) {\n 'use strict';\n if (!showdown.helper.isString(str)) {\n throw 'InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string';\n }\n return [str.substring(0, index), str.substring(index)];\n};\n\n/**\n * Obfuscate an e-mail address through the use of Character Entities,\n * transforming ASCII characters into their equivalent decimal or hex entities.\n *\n * Since it has a random component, subsequent calls to this function produce different results\n *\n * @param {string} mail\n * @returns {string}\n */\nshowdown.helper.encodeEmailAddress = function (mail) {\n 'use strict';\n var encode = [\n function (ch) {\n return '&#' + ch.charCodeAt(0) + ';';\n },\n function (ch) {\n return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n },\n function (ch) {\n return ch;\n }\n ];\n\n mail = mail.replace(/./g, function (ch) {\n if (ch === '@') {\n // this *must* be encoded. I insist.\n ch = encode[Math.floor(Math.random() * 2)](ch);\n } else {\n var r = Math.random();\n // roughly 10% raw, 45% hex, 45% dec\n ch = (\n r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n );\n }\n return ch;\n });\n\n return mail;\n};\n\n/**\n *\n * @param str\n * @param targetLength\n * @param padString\n * @returns {string}\n */\nshowdown.helper.padEnd = function padEnd (str, targetLength, padString) {\n 'use strict';\n /*jshint bitwise: false*/\n // eslint-disable-next-line space-infix-ops\n targetLength = targetLength>>0; //floor if number or convert non-number to 0;\n /*jshint bitwise: true*/\n padString = String(padString || ' ');\n if (str.length > targetLength) {\n return String(str);\n } else {\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\n }\n return String(str) + padString.slice(0,targetLength);\n }\n};\n\n/**\n * POLYFILLS\n */\n// use this instead of builtin is undefined for IE8 compatibility\nif (typeof (console) === 'undefined') {\n console = {\n warn: function (msg) {\n 'use strict';\n alert(msg);\n },\n log: function (msg) {\n 'use strict';\n alert(msg);\n },\n error: function (msg) {\n 'use strict';\n throw msg;\n }\n };\n}\n\n/**\n * Common regexes.\n * We declare some common regexes to improve performance\n */\nshowdown.helper.regexes = {\n asteriskDashAndColon: /([*_:~])/g\n};\n\n/**\n * EMOJIS LIST\n */\nshowdown.helper.emojis = {\n '+1':'\\ud83d\\udc4d',\n '-1':'\\ud83d\\udc4e',\n '100':'\\ud83d\\udcaf',\n '1234':'\\ud83d\\udd22',\n '1st_place_medal':'\\ud83e\\udd47',\n '2nd_place_medal':'\\ud83e\\udd48',\n '3rd_place_medal':'\\ud83e\\udd49',\n '8ball':'\\ud83c\\udfb1',\n 'a':'\\ud83c\\udd70\\ufe0f',\n 'ab':'\\ud83c\\udd8e',\n 'abc':'\\ud83d\\udd24',\n 'abcd':'\\ud83d\\udd21',\n 'accept':'\\ud83c\\ude51',\n 'aerial_tramway':'\\ud83d\\udea1',\n 'airplane':'\\u2708\\ufe0f',\n 'alarm_clock':'\\u23f0',\n 'alembic':'\\u2697\\ufe0f',\n 'alien':'\\ud83d\\udc7d',\n 'ambulance':'\\ud83d\\ude91',\n 'amphora':'\\ud83c\\udffa',\n 'anchor':'\\u2693\\ufe0f',\n 'angel':'\\ud83d\\udc7c',\n 'anger':'\\ud83d\\udca2',\n 'angry':'\\ud83d\\ude20',\n 'anguished':'\\ud83d\\ude27',\n 'ant':'\\ud83d\\udc1c',\n 'apple':'\\ud83c\\udf4e',\n 'aquarius':'\\u2652\\ufe0f',\n 'aries':'\\u2648\\ufe0f',\n 'arrow_backward':'\\u25c0\\ufe0f',\n 'arrow_double_down':'\\u23ec',\n 'arrow_double_up':'\\u23eb',\n 'arrow_down':'\\u2b07\\ufe0f',\n 'arrow_down_small':'\\ud83d\\udd3d',\n 'arrow_forward':'\\u25b6\\ufe0f',\n 'arrow_heading_down':'\\u2935\\ufe0f',\n 'arrow_heading_up':'\\u2934\\ufe0f',\n 'arrow_left':'\\u2b05\\ufe0f',\n 'arrow_lower_left':'\\u2199\\ufe0f',\n 'arrow_lower_right':'\\u2198\\ufe0f',\n 'arrow_right':'\\u27a1\\ufe0f',\n 'arrow_right_hook':'\\u21aa\\ufe0f',\n 'arrow_up':'\\u2b06\\ufe0f',\n 'arrow_up_down':'\\u2195\\ufe0f',\n 'arrow_up_small':'\\ud83d\\udd3c',\n 'arrow_upper_left':'\\u2196\\ufe0f',\n 'arrow_upper_right':'\\u2197\\ufe0f',\n 'arrows_clockwise':'\\ud83d\\udd03',\n 'arrows_counterclockwise':'\\ud83d\\udd04',\n 'art':'\\ud83c\\udfa8',\n 'articulated_lorry':'\\ud83d\\ude9b',\n 'artificial_satellite':'\\ud83d\\udef0',\n 'astonished':'\\ud83d\\ude32',\n 'athletic_shoe':'\\ud83d\\udc5f',\n 'atm':'\\ud83c\\udfe7',\n 'atom_symbol':'\\u269b\\ufe0f',\n 'avocado':'\\ud83e\\udd51',\n 'b':'\\ud83c\\udd71\\ufe0f',\n 'baby':'\\ud83d\\udc76',\n 'baby_bottle':'\\ud83c\\udf7c',\n 'baby_chick':'\\ud83d\\udc24',\n 'baby_symbol':'\\ud83d\\udebc',\n 'back':'\\ud83d\\udd19',\n 'bacon':'\\ud83e\\udd53',\n 'badminton':'\\ud83c\\udff8',\n 'baggage_claim':'\\ud83d\\udec4',\n 'baguette_bread':'\\ud83e\\udd56',\n 'balance_scale':'\\u2696\\ufe0f',\n 'balloon':'\\ud83c\\udf88',\n 'ballot_box':'\\ud83d\\uddf3',\n 'ballot_box_with_check':'\\u2611\\ufe0f',\n 'bamboo':'\\ud83c\\udf8d',\n 'banana':'\\ud83c\\udf4c',\n 'bangbang':'\\u203c\\ufe0f',\n 'bank':'\\ud83c\\udfe6',\n 'bar_chart':'\\ud83d\\udcca',\n 'barber':'\\ud83d\\udc88',\n 'baseball':'\\u26be\\ufe0f',\n 'basketball':'\\ud83c\\udfc0',\n 'basketball_man':'\\u26f9\\ufe0f',\n 'basketball_woman':'\\u26f9\\ufe0f‍\\u2640\\ufe0f',\n 'bat':'\\ud83e\\udd87',\n 'bath':'\\ud83d\\udec0',\n 'bathtub':'\\ud83d\\udec1',\n 'battery':'\\ud83d\\udd0b',\n 'beach_umbrella':'\\ud83c\\udfd6',\n 'bear':'\\ud83d\\udc3b',\n 'bed':'\\ud83d\\udecf',\n 'bee':'\\ud83d\\udc1d',\n 'beer':'\\ud83c\\udf7a',\n 'beers':'\\ud83c\\udf7b',\n 'beetle':'\\ud83d\\udc1e',\n 'beginner':'\\ud83d\\udd30',\n 'bell':'\\ud83d\\udd14',\n 'bellhop_bell':'\\ud83d\\udece',\n 'bento':'\\ud83c\\udf71',\n 'biking_man':'\\ud83d\\udeb4',\n 'bike':'\\ud83d\\udeb2',\n 'biking_woman':'\\ud83d\\udeb4‍\\u2640\\ufe0f',\n 'bikini':'\\ud83d\\udc59',\n 'biohazard':'\\u2623\\ufe0f',\n 'bird':'\\ud83d\\udc26',\n 'birthday':'\\ud83c\\udf82',\n 'black_circle':'\\u26ab\\ufe0f',\n 'black_flag':'\\ud83c\\udff4',\n 'black_heart':'\\ud83d\\udda4',\n 'black_joker':'\\ud83c\\udccf',\n 'black_large_square':'\\u2b1b\\ufe0f',\n 'black_medium_small_square':'\\u25fe\\ufe0f',\n 'black_medium_square':'\\u25fc\\ufe0f',\n 'black_nib':'\\u2712\\ufe0f',\n 'black_small_square':'\\u25aa\\ufe0f',\n 'black_square_button':'\\ud83d\\udd32',\n 'blonde_man':'\\ud83d\\udc71',\n 'blonde_woman':'\\ud83d\\udc71‍\\u2640\\ufe0f',\n 'blossom':'\\ud83c\\udf3c',\n 'blowfish':'\\ud83d\\udc21',\n 'blue_book':'\\ud83d\\udcd8',\n 'blue_car':'\\ud83d\\ude99',\n 'blue_heart':'\\ud83d\\udc99',\n 'blush':'\\ud83d\\ude0a',\n 'boar':'\\ud83d\\udc17',\n 'boat':'\\u26f5\\ufe0f',\n 'bomb':'\\ud83d\\udca3',\n 'book':'\\ud83d\\udcd6',\n 'bookmark':'\\ud83d\\udd16',\n 'bookmark_tabs':'\\ud83d\\udcd1',\n 'books':'\\ud83d\\udcda',\n 'boom':'\\ud83d\\udca5',\n 'boot':'\\ud83d\\udc62',\n 'bouquet':'\\ud83d\\udc90',\n 'bowing_man':'\\ud83d\\ude47',\n 'bow_and_arrow':'\\ud83c\\udff9',\n 'bowing_woman':'\\ud83d\\ude47‍\\u2640\\ufe0f',\n 'bowling':'\\ud83c\\udfb3',\n 'boxing_glove':'\\ud83e\\udd4a',\n 'boy':'\\ud83d\\udc66',\n 'bread':'\\ud83c\\udf5e',\n 'bride_with_veil':'\\ud83d\\udc70',\n 'bridge_at_night':'\\ud83c\\udf09',\n 'briefcase':'\\ud83d\\udcbc',\n 'broken_heart':'\\ud83d\\udc94',\n 'bug':'\\ud83d\\udc1b',\n 'building_construction':'\\ud83c\\udfd7',\n 'bulb':'\\ud83d\\udca1',\n 'bullettrain_front':'\\ud83d\\ude85',\n 'bullettrain_side':'\\ud83d\\ude84',\n 'burrito':'\\ud83c\\udf2f',\n 'bus':'\\ud83d\\ude8c',\n 'business_suit_levitating':'\\ud83d\\udd74',\n 'busstop':'\\ud83d\\ude8f',\n 'bust_in_silhouette':'\\ud83d\\udc64',\n 'busts_in_silhouette':'\\ud83d\\udc65',\n 'butterfly':'\\ud83e\\udd8b',\n 'cactus':'\\ud83c\\udf35',\n 'cake':'\\ud83c\\udf70',\n 'calendar':'\\ud83d\\udcc6',\n 'call_me_hand':'\\ud83e\\udd19',\n 'calling':'\\ud83d\\udcf2',\n 'camel':'\\ud83d\\udc2b',\n 'camera':'\\ud83d\\udcf7',\n 'camera_flash':'\\ud83d\\udcf8',\n 'camping':'\\ud83c\\udfd5',\n 'cancer':'\\u264b\\ufe0f',\n 'candle':'\\ud83d\\udd6f',\n 'candy':'\\ud83c\\udf6c',\n 'canoe':'\\ud83d\\udef6',\n 'capital_abcd':'\\ud83d\\udd20',\n 'capricorn':'\\u2651\\ufe0f',\n 'car':'\\ud83d\\ude97',\n 'card_file_box':'\\ud83d\\uddc3',\n 'card_index':'\\ud83d\\udcc7',\n 'card_index_dividers':'\\ud83d\\uddc2',\n 'carousel_horse':'\\ud83c\\udfa0',\n 'carrot':'\\ud83e\\udd55',\n 'cat':'\\ud83d\\udc31',\n 'cat2':'\\ud83d\\udc08',\n 'cd':'\\ud83d\\udcbf',\n 'chains':'\\u26d3',\n 'champagne':'\\ud83c\\udf7e',\n 'chart':'\\ud83d\\udcb9',\n 'chart_with_downwards_trend':'\\ud83d\\udcc9',\n 'chart_with_upwards_trend':'\\ud83d\\udcc8',\n 'checkered_flag':'\\ud83c\\udfc1',\n 'cheese':'\\ud83e\\uddc0',\n 'cherries':'\\ud83c\\udf52',\n 'cherry_blossom':'\\ud83c\\udf38',\n 'chestnut':'\\ud83c\\udf30',\n 'chicken':'\\ud83d\\udc14',\n 'children_crossing':'\\ud83d\\udeb8',\n 'chipmunk':'\\ud83d\\udc3f',\n 'chocolate_bar':'\\ud83c\\udf6b',\n 'christmas_tree':'\\ud83c\\udf84',\n 'church':'\\u26ea\\ufe0f',\n 'cinema':'\\ud83c\\udfa6',\n 'circus_tent':'\\ud83c\\udfaa',\n 'city_sunrise':'\\ud83c\\udf07',\n 'city_sunset':'\\ud83c\\udf06',\n 'cityscape':'\\ud83c\\udfd9',\n 'cl':'\\ud83c\\udd91',\n 'clamp':'\\ud83d\\udddc',\n 'clap':'\\ud83d\\udc4f',\n 'clapper':'\\ud83c\\udfac',\n 'classical_building':'\\ud83c\\udfdb',\n 'clinking_glasses':'\\ud83e\\udd42',\n 'clipboard':'\\ud83d\\udccb',\n 'clock1':'\\ud83d\\udd50',\n 'clock10':'\\ud83d\\udd59',\n 'clock1030':'\\ud83d\\udd65',\n 'clock11':'\\ud83d\\udd5a',\n 'clock1130':'\\ud83d\\udd66',\n 'clock12':'\\ud83d\\udd5b',\n 'clock1230':'\\ud83d\\udd67',\n 'clock130':'\\ud83d\\udd5c',\n 'clock2':'\\ud83d\\udd51',\n 'clock230':'\\ud83d\\udd5d',\n 'clock3':'\\ud83d\\udd52',\n 'clock330':'\\ud83d\\udd5e',\n 'clock4':'\\ud83d\\udd53',\n 'clock430':'\\ud83d\\udd5f',\n 'clock5':'\\ud83d\\udd54',\n 'clock530':'\\ud83d\\udd60',\n 'clock6':'\\ud83d\\udd55',\n 'clock630':'\\ud83d\\udd61',\n 'clock7':'\\ud83d\\udd56',\n 'clock730':'\\ud83d\\udd62',\n 'clock8':'\\ud83d\\udd57',\n 'clock830':'\\ud83d\\udd63',\n 'clock9':'\\ud83d\\udd58',\n 'clock930':'\\ud83d\\udd64',\n 'closed_book':'\\ud83d\\udcd5',\n 'closed_lock_with_key':'\\ud83d\\udd10',\n 'closed_umbrella':'\\ud83c\\udf02',\n 'cloud':'\\u2601\\ufe0f',\n 'cloud_with_lightning':'\\ud83c\\udf29',\n 'cloud_with_lightning_and_rain':'\\u26c8',\n 'cloud_with_rain':'\\ud83c\\udf27',\n 'cloud_with_snow':'\\ud83c\\udf28',\n 'clown_face':'\\ud83e\\udd21',\n 'clubs':'\\u2663\\ufe0f',\n 'cocktail':'\\ud83c\\udf78',\n 'coffee':'\\u2615\\ufe0f',\n 'coffin':'\\u26b0\\ufe0f',\n 'cold_sweat':'\\ud83d\\ude30',\n 'comet':'\\u2604\\ufe0f',\n 'computer':'\\ud83d\\udcbb',\n 'computer_mouse':'\\ud83d\\uddb1',\n 'confetti_ball':'\\ud83c\\udf8a',\n 'confounded':'\\ud83d\\ude16',\n 'confused':'\\ud83d\\ude15',\n 'congratulations':'\\u3297\\ufe0f',\n 'construction':'\\ud83d\\udea7',\n 'construction_worker_man':'\\ud83d\\udc77',\n 'construction_worker_woman':'\\ud83d\\udc77‍\\u2640\\ufe0f',\n 'control_knobs':'\\ud83c\\udf9b',\n 'convenience_store':'\\ud83c\\udfea',\n 'cookie':'\\ud83c\\udf6a',\n 'cool':'\\ud83c\\udd92',\n 'policeman':'\\ud83d\\udc6e',\n 'copyright':'\\u00a9\\ufe0f',\n 'corn':'\\ud83c\\udf3d',\n 'couch_and_lamp':'\\ud83d\\udecb',\n 'couple':'\\ud83d\\udc6b',\n 'couple_with_heart_woman_man':'\\ud83d\\udc91',\n 'couple_with_heart_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc68',\n 'couple_with_heart_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc69',\n 'couplekiss_man_man':'\\ud83d\\udc68‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc68',\n 'couplekiss_man_woman':'\\ud83d\\udc8f',\n 'couplekiss_woman_woman':'\\ud83d\\udc69‍\\u2764\\ufe0f‍\\ud83d\\udc8b‍\\ud83d\\udc69',\n 'cow':'\\ud83d\\udc2e',\n 'cow2':'\\ud83d\\udc04',\n 'cowboy_hat_face':'\\ud83e\\udd20',\n 'crab':'\\ud83e\\udd80',\n 'crayon':'\\ud83d\\udd8d',\n 'credit_card':'\\ud83d\\udcb3',\n 'crescent_moon':'\\ud83c\\udf19',\n 'cricket':'\\ud83c\\udfcf',\n 'crocodile':'\\ud83d\\udc0a',\n 'croissant':'\\ud83e\\udd50',\n 'crossed_fingers':'\\ud83e\\udd1e',\n 'crossed_flags':'\\ud83c\\udf8c',\n 'crossed_swords':'\\u2694\\ufe0f',\n 'crown':'\\ud83d\\udc51',\n 'cry':'\\ud83d\\ude22',\n 'crying_cat_face':'\\ud83d\\ude3f',\n 'crystal_ball':'\\ud83d\\udd2e',\n 'cucumber':'\\ud83e\\udd52',\n 'cupid':'\\ud83d\\udc98',\n 'curly_loop':'\\u27b0',\n 'currency_exchange':'\\ud83d\\udcb1',\n 'curry':'\\ud83c\\udf5b',\n 'custard':'\\ud83c\\udf6e',\n 'customs':'\\ud83d\\udec3',\n 'cyclone':'\\ud83c\\udf00',\n 'dagger':'\\ud83d\\udde1',\n 'dancer':'\\ud83d\\udc83',\n 'dancing_women':'\\ud83d\\udc6f',\n 'dancing_men':'\\ud83d\\udc6f‍\\u2642\\ufe0f',\n 'dango':'\\ud83c\\udf61',\n 'dark_sunglasses':'\\ud83d\\udd76',\n 'dart':'\\ud83c\\udfaf',\n 'dash':'\\ud83d\\udca8',\n 'date':'\\ud83d\\udcc5',\n 'deciduous_tree':'\\ud83c\\udf33',\n 'deer':'\\ud83e\\udd8c',\n 'department_store':'\\ud83c\\udfec',\n 'derelict_house':'\\ud83c\\udfda',\n 'desert':'\\ud83c\\udfdc',\n 'desert_island':'\\ud83c\\udfdd',\n 'desktop_computer':'\\ud83d\\udda5',\n 'male_detective':'\\ud83d\\udd75\\ufe0f',\n 'diamond_shape_with_a_dot_inside':'\\ud83d\\udca0',\n 'diamonds':'\\u2666\\ufe0f',\n 'disappointed':'\\ud83d\\ude1e',\n 'disappointed_relieved':'\\ud83d\\ude25',\n 'dizzy':'\\ud83d\\udcab',\n 'dizzy_face':'\\ud83d\\ude35',\n 'do_not_litter':'\\ud83d\\udeaf',\n 'dog':'\\ud83d\\udc36',\n 'dog2':'\\ud83d\\udc15',\n 'dollar':'\\ud83d\\udcb5',\n 'dolls':'\\ud83c\\udf8e',\n 'dolphin':'\\ud83d\\udc2c',\n 'door':'\\ud83d\\udeaa',\n 'doughnut':'\\ud83c\\udf69',\n 'dove':'\\ud83d\\udd4a',\n 'dragon':'\\ud83d\\udc09',\n 'dragon_face':'\\ud83d\\udc32',\n 'dress':'\\ud83d\\udc57',\n 'dromedary_camel':'\\ud83d\\udc2a',\n 'drooling_face':'\\ud83e\\udd24',\n 'droplet':'\\ud83d\\udca7',\n 'drum':'\\ud83e\\udd41',\n 'duck':'\\ud83e\\udd86',\n 'dvd':'\\ud83d\\udcc0',\n 'e-mail':'\\ud83d\\udce7',\n 'eagle':'\\ud83e\\udd85',\n 'ear':'\\ud83d\\udc42',\n 'ear_of_rice':'\\ud83c\\udf3e',\n 'earth_africa':'\\ud83c\\udf0d',\n 'earth_americas':'\\ud83c\\udf0e',\n 'earth_asia':'\\ud83c\\udf0f',\n 'egg':'\\ud83e\\udd5a',\n 'eggplant':'\\ud83c\\udf46',\n 'eight_pointed_black_star':'\\u2734\\ufe0f',\n 'eight_spoked_asterisk':'\\u2733\\ufe0f',\n 'electric_plug':'\\ud83d\\udd0c',\n 'elephant':'\\ud83d\\udc18',\n 'email':'\\u2709\\ufe0f',\n 'end':'\\ud83d\\udd1a',\n 'envelope_with_arrow':'\\ud83d\\udce9',\n 'euro':'\\ud83d\\udcb6',\n 'european_castle':'\\ud83c\\udff0',\n 'european_post_office':'\\ud83c\\udfe4',\n 'evergreen_tree':'\\ud83c\\udf32',\n 'exclamation':'\\u2757\\ufe0f',\n 'expressionless':'\\ud83d\\ude11',\n 'eye':'\\ud83d\\udc41',\n 'eye_speech_bubble':'\\ud83d\\udc41‍\\ud83d\\udde8',\n 'eyeglasses':'\\ud83d\\udc53',\n 'eyes':'\\ud83d\\udc40',\n 'face_with_head_bandage':'\\ud83e\\udd15',\n 'face_with_thermometer':'\\ud83e\\udd12',\n 'fist_oncoming':'\\ud83d\\udc4a',\n 'factory':'\\ud83c\\udfed',\n 'fallen_leaf':'\\ud83c\\udf42',\n 'family_man_woman_boy':'\\ud83d\\udc6a',\n 'family_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_man_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66',\n 'family_man_man_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_man_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67',\n 'family_man_man_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_man_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc68‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_man_woman_boy_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_man_woman_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_man_woman_girl_boy':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_man_woman_girl_girl':'\\ud83d\\udc68‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'family_woman_woman_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66',\n 'family_woman_woman_boy_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc66‍\\ud83d\\udc66',\n 'family_woman_woman_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67',\n 'family_woman_woman_girl_boy':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc66',\n 'family_woman_woman_girl_girl':'\\ud83d\\udc69‍\\ud83d\\udc69‍\\ud83d\\udc67‍\\ud83d\\udc67',\n 'fast_forward':'\\u23e9',\n 'fax':'\\ud83d\\udce0',\n 'fearful':'\\ud83d\\ude28',\n 'feet':'\\ud83d\\udc3e',\n 'female_detective':'\\ud83d\\udd75\\ufe0f‍\\u2640\\ufe0f',\n 'ferris_wheel':'\\ud83c\\udfa1',\n 'ferry':'\\u26f4',\n 'field_hockey':'\\ud83c\\udfd1',\n 'file_cabinet':'\\ud83d\\uddc4',\n 'file_folder':'\\ud83d\\udcc1',\n 'film_projector':'\\ud83d\\udcfd',\n 'film_strip':'\\ud83c\\udf9e',\n 'fire':'\\ud83d\\udd25',\n 'fire_engine':'\\ud83d\\ude92',\n 'fireworks':'\\ud83c\\udf86',\n 'first_quarter_moon':'\\ud83c\\udf13',\n 'first_quarter_moon_with_face':'\\ud83c\\udf1b',\n 'fish':'\\ud83d\\udc1f',\n 'fish_cake':'\\ud83c\\udf65',\n 'fishing_pole_and_fish':'\\ud83c\\udfa3',\n 'fist_raised':'\\u270a',\n 'fist_left':'\\ud83e\\udd1b',\n 'fist_right':'\\ud83e\\udd1c',\n 'flags':'\\ud83c\\udf8f',\n 'flashlight':'\\ud83d\\udd26',\n 'fleur_de_lis':'\\u269c\\ufe0f',\n 'flight_arrival':'\\ud83d\\udeec',\n 'flight_departure':'\\ud83d\\udeeb',\n 'floppy_disk':'\\ud83d\\udcbe',\n 'flower_playing_cards':'\\ud83c\\udfb4',\n 'flushed':'\\ud83d\\ude33',\n 'fog':'\\ud83c\\udf2b',\n 'foggy':'\\ud83c\\udf01',\n 'football':'\\ud83c\\udfc8',\n 'footprints':'\\ud83d\\udc63',\n 'fork_and_knife':'\\ud83c\\udf74',\n 'fountain':'\\u26f2\\ufe0f',\n 'fountain_pen':'\\ud83d\\udd8b',\n 'four_leaf_clover':'\\ud83c\\udf40',\n 'fox_face':'\\ud83e\\udd8a',\n 'framed_picture':'\\ud83d\\uddbc',\n 'free':'\\ud83c\\udd93',\n 'fried_egg':'\\ud83c\\udf73',\n 'fried_shrimp':'\\ud83c\\udf64',\n 'fries':'\\ud83c\\udf5f',\n 'frog':'\\ud83d\\udc38',\n 'frowning':'\\ud83d\\ude26',\n 'frowning_face':'\\u2639\\ufe0f',\n 'frowning_man':'\\ud83d\\ude4d‍\\u2642\\ufe0f',\n 'frowning_woman':'\\ud83d\\ude4d',\n 'middle_finger':'\\ud83d\\udd95',\n 'fuelpump':'\\u26fd\\ufe0f',\n 'full_moon':'\\ud83c\\udf15',\n 'full_moon_with_face':'\\ud83c\\udf1d',\n 'funeral_urn':'\\u26b1\\ufe0f',\n 'game_die':'\\ud83c\\udfb2',\n 'gear':'\\u2699\\ufe0f',\n 'gem':'\\ud83d\\udc8e',\n 'gemini':'\\u264a\\ufe0f',\n 'ghost':'\\ud83d\\udc7b',\n 'gift':'\\ud83c\\udf81',\n 'gift_heart':'\\ud83d\\udc9d',\n 'girl':'\\ud83d\\udc67',\n 'globe_with_meridians':'\\ud83c\\udf10',\n 'goal_net':'\\ud83e\\udd45',\n 'goat':'\\ud83d\\udc10',\n 'golf':'\\u26f3\\ufe0f',\n 'golfing_man':'\\ud83c\\udfcc\\ufe0f',\n 'golfing_woman':'\\ud83c\\udfcc\\ufe0f‍\\u2640\\ufe0f',\n 'gorilla':'\\ud83e\\udd8d',\n 'grapes':'\\ud83c\\udf47',\n 'green_apple':'\\ud83c\\udf4f',\n 'green_book':'\\ud83d\\udcd7',\n 'green_heart':'\\ud83d\\udc9a',\n 'green_salad':'\\ud83e\\udd57',\n 'grey_exclamation':'\\u2755',\n 'grey_question':'\\u2754',\n 'grimacing':'\\ud83d\\ude2c',\n 'grin':'\\ud83d\\ude01',\n 'grinning':'\\ud83d\\ude00',\n 'guardsman':'\\ud83d\\udc82',\n 'guardswoman':'\\ud83d\\udc82‍\\u2640\\ufe0f',\n 'guitar':'\\ud83c\\udfb8',\n 'gun':'\\ud83d\\udd2b',\n 'haircut_woman':'\\ud83d\\udc87',\n 'haircut_man':'\\ud83d\\udc87‍\\u2642\\ufe0f',\n 'hamburger':'\\ud83c\\udf54',\n 'hammer':'\\ud83d\\udd28',\n 'hammer_and_pick':'\\u2692',\n 'hammer_and_wrench':'\\ud83d\\udee0',\n 'hamster':'\\ud83d\\udc39',\n 'hand':'\\u270b',\n 'handbag':'\\ud83d\\udc5c',\n 'handshake':'\\ud83e\\udd1d',\n 'hankey':'\\ud83d\\udca9',\n 'hatched_chick':'\\ud83d\\udc25',\n 'hatching_chick':'\\ud83d\\udc23',\n 'headphones':'\\ud83c\\udfa7',\n 'hear_no_evil':'\\ud83d\\ude49',\n 'heart':'\\u2764\\ufe0f',\n 'heart_decoration':'\\ud83d\\udc9f',\n 'heart_eyes':'\\ud83d\\ude0d',\n 'heart_eyes_cat':'\\ud83d\\ude3b',\n 'heartbeat':'\\ud83d\\udc93',\n 'heartpulse':'\\ud83d\\udc97',\n 'hearts':'\\u2665\\ufe0f',\n 'heavy_check_mark':'\\u2714\\ufe0f',\n 'heavy_division_sign':'\\u2797',\n 'heavy_dollar_sign':'\\ud83d\\udcb2',\n 'heavy_heart_exclamation':'\\u2763\\ufe0f',\n 'heavy_minus_sign':'\\u2796',\n 'heavy_multiplication_x':'\\u2716\\ufe0f',\n 'heavy_plus_sign':'\\u2795',\n 'helicopter':'\\ud83d\\ude81',\n 'herb':'\\ud83c\\udf3f',\n 'hibiscus':'\\ud83c\\udf3a',\n 'high_brightness':'\\ud83d\\udd06',\n 'high_heel':'\\ud83d\\udc60',\n 'hocho':'\\ud83d\\udd2a',\n 'hole':'\\ud83d\\udd73',\n 'honey_pot':'\\ud83c\\udf6f',\n 'horse':'\\ud83d\\udc34',\n 'horse_racing':'\\ud83c\\udfc7',\n 'hospital':'\\ud83c\\udfe5',\n 'hot_pepper':'\\ud83c\\udf36',\n 'hotdog':'\\ud83c\\udf2d',\n 'hotel':'\\ud83c\\udfe8',\n 'hotsprings':'\\u2668\\ufe0f',\n 'hourglass':'\\u231b\\ufe0f',\n 'hourglass_flowing_sand':'\\u23f3',\n 'house':'\\ud83c\\udfe0',\n 'house_with_garden':'\\ud83c\\udfe1',\n 'houses':'\\ud83c\\udfd8',\n 'hugs':'\\ud83e\\udd17',\n 'hushed':'\\ud83d\\ude2f',\n 'ice_cream':'\\ud83c\\udf68',\n 'ice_hockey':'\\ud83c\\udfd2',\n 'ice_skate':'\\u26f8',\n 'icecream':'\\ud83c\\udf66',\n 'id':'\\ud83c\\udd94',\n 'ideograph_advantage':'\\ud83c\\ude50',\n 'imp':'\\ud83d\\udc7f',\n 'inbox_tray':'\\ud83d\\udce5',\n 'incoming_envelope':'\\ud83d\\udce8',\n 'tipping_hand_woman':'\\ud83d\\udc81',\n 'information_source':'\\u2139\\ufe0f',\n 'innocent':'\\ud83d\\ude07',\n 'interrobang':'\\u2049\\ufe0f',\n 'iphone':'\\ud83d\\udcf1',\n 'izakaya_lantern':'\\ud83c\\udfee',\n 'jack_o_lantern':'\\ud83c\\udf83',\n 'japan':'\\ud83d\\uddfe',\n 'japanese_castle':'\\ud83c\\udfef',\n 'japanese_goblin':'\\ud83d\\udc7a',\n 'japanese_ogre':'\\ud83d\\udc79',\n 'jeans':'\\ud83d\\udc56',\n 'joy':'\\ud83d\\ude02',\n 'joy_cat':'\\ud83d\\ude39',\n 'joystick':'\\ud83d\\udd79',\n 'kaaba':'\\ud83d\\udd4b',\n 'key':'\\ud83d\\udd11',\n 'keyboard':'\\u2328\\ufe0f',\n 'keycap_ten':'\\ud83d\\udd1f',\n 'kick_scooter':'\\ud83d\\udef4',\n 'kimono':'\\ud83d\\udc58',\n 'kiss':'\\ud83d\\udc8b',\n 'kissing':'\\ud83d\\ude17',\n 'kissing_cat':'\\ud83d\\ude3d',\n 'kissing_closed_eyes':'\\ud83d\\ude1a',\n 'kissing_heart':'\\ud83d\\ude18',\n 'kissing_smiling_eyes':'\\ud83d\\ude19',\n 'kiwi_fruit':'\\ud83e\\udd5d',\n 'koala':'\\ud83d\\udc28',\n 'koko':'\\ud83c\\ude01',\n 'label':'\\ud83c\\udff7',\n 'large_blue_circle':'\\ud83d\\udd35',\n 'large_blue_diamond':'\\ud83d\\udd37',\n 'large_orange_diamond':'\\ud83d\\udd36',\n 'last_quarter_moon':'\\ud83c\\udf17',\n 'last_quarter_moon_with_face':'\\ud83c\\udf1c',\n 'latin_cross':'\\u271d\\ufe0f',\n 'laughing':'\\ud83d\\ude06',\n 'leaves':'\\ud83c\\udf43',\n 'ledger':'\\ud83d\\udcd2',\n 'left_luggage':'\\ud83d\\udec5',\n 'left_right_arrow':'\\u2194\\ufe0f',\n 'leftwards_arrow_with_hook':'\\u21a9\\ufe0f',\n 'lemon':'\\ud83c\\udf4b',\n 'leo':'\\u264c\\ufe0f',\n 'leopard':'\\ud83d\\udc06',\n 'level_slider':'\\ud83c\\udf9a',\n 'libra':'\\u264e\\ufe0f',\n 'light_rail':'\\ud83d\\ude88',\n 'link':'\\ud83d\\udd17',\n 'lion':'\\ud83e\\udd81',\n 'lips':'\\ud83d\\udc44',\n 'lipstick':'\\ud83d\\udc84',\n 'lizard':'\\ud83e\\udd8e',\n 'lock':'\\ud83d\\udd12',\n 'lock_with_ink_pen':'\\ud83d\\udd0f',\n 'lollipop':'\\ud83c\\udf6d',\n 'loop':'\\u27bf',\n 'loud_sound':'\\ud83d\\udd0a',\n 'loudspeaker':'\\ud83d\\udce2',\n 'love_hotel':'\\ud83c\\udfe9',\n 'love_letter':'\\ud83d\\udc8c',\n 'low_brightness':'\\ud83d\\udd05',\n 'lying_face':'\\ud83e\\udd25',\n 'm':'\\u24c2\\ufe0f',\n 'mag':'\\ud83d\\udd0d',\n 'mag_right':'\\ud83d\\udd0e',\n 'mahjong':'\\ud83c\\udc04\\ufe0f',\n 'mailbox':'\\ud83d\\udceb',\n 'mailbox_closed':'\\ud83d\\udcea',\n 'mailbox_with_mail':'\\ud83d\\udcec',\n 'mailbox_with_no_mail':'\\ud83d\\udced',\n 'man':'\\ud83d\\udc68',\n 'man_artist':'\\ud83d\\udc68‍\\ud83c\\udfa8',\n 'man_astronaut':'\\ud83d\\udc68‍\\ud83d\\ude80',\n 'man_cartwheeling':'\\ud83e\\udd38‍\\u2642\\ufe0f',\n 'man_cook':'\\ud83d\\udc68‍\\ud83c\\udf73',\n 'man_dancing':'\\ud83d\\udd7a',\n 'man_facepalming':'\\ud83e\\udd26‍\\u2642\\ufe0f',\n 'man_factory_worker':'\\ud83d\\udc68‍\\ud83c\\udfed',\n 'man_farmer':'\\ud83d\\udc68‍\\ud83c\\udf3e',\n 'man_firefighter':'\\ud83d\\udc68‍\\ud83d\\ude92',\n 'man_health_worker':'\\ud83d\\udc68‍\\u2695\\ufe0f',\n 'man_in_tuxedo':'\\ud83e\\udd35',\n 'man_judge':'\\ud83d\\udc68‍\\u2696\\ufe0f',\n 'man_juggling':'\\ud83e\\udd39‍\\u2642\\ufe0f',\n 'man_mechanic':'\\ud83d\\udc68‍\\ud83d\\udd27',\n 'man_office_worker':'\\ud83d\\udc68‍\\ud83d\\udcbc',\n 'man_pilot':'\\ud83d\\udc68‍\\u2708\\ufe0f',\n 'man_playing_handball':'\\ud83e\\udd3e‍\\u2642\\ufe0f',\n 'man_playing_water_polo':'\\ud83e\\udd3d‍\\u2642\\ufe0f',\n 'man_scientist':'\\ud83d\\udc68‍\\ud83d\\udd2c',\n 'man_shrugging':'\\ud83e\\udd37‍\\u2642\\ufe0f',\n 'man_singer':'\\ud83d\\udc68‍\\ud83c\\udfa4',\n 'man_student':'\\ud83d\\udc68‍\\ud83c\\udf93',\n 'man_teacher':'\\ud83d\\udc68‍\\ud83c\\udfeb',\n 'man_technologist':'\\ud83d\\udc68‍\\ud83d\\udcbb',\n 'man_with_gua_pi_mao':'\\ud83d\\udc72',\n 'man_with_turban':'\\ud83d\\udc73',\n 'tangerine':'\\ud83c\\udf4a',\n 'mans_shoe':'\\ud83d\\udc5e',\n 'mantelpiece_clock':'\\ud83d\\udd70',\n 'maple_leaf':'\\ud83c\\udf41',\n 'martial_arts_uniform':'\\ud83e\\udd4b',\n 'mask':'\\ud83d\\ude37',\n 'massage_woman':'\\ud83d\\udc86',\n 'massage_man':'\\ud83d\\udc86‍\\u2642\\ufe0f',\n 'meat_on_bone':'\\ud83c\\udf56',\n 'medal_military':'\\ud83c\\udf96',\n 'medal_sports':'\\ud83c\\udfc5',\n 'mega':'\\ud83d\\udce3',\n 'melon':'\\ud83c\\udf48',\n 'memo':'\\ud83d\\udcdd',\n 'men_wrestling':'\\ud83e\\udd3c‍\\u2642\\ufe0f',\n 'menorah':'\\ud83d\\udd4e',\n 'mens':'\\ud83d\\udeb9',\n 'metal':'\\ud83e\\udd18',\n 'metro':'\\ud83d\\ude87',\n 'microphone':'\\ud83c\\udfa4',\n 'microscope':'\\ud83d\\udd2c',\n 'milk_glass':'\\ud83e\\udd5b',\n 'milky_way':'\\ud83c\\udf0c',\n 'minibus':'\\ud83d\\ude90',\n 'minidisc':'\\ud83d\\udcbd',\n 'mobile_phone_off':'\\ud83d\\udcf4',\n 'money_mouth_face':'\\ud83e\\udd11',\n 'money_with_wings':'\\ud83d\\udcb8',\n 'moneybag':'\\ud83d\\udcb0',\n 'monkey':'\\ud83d\\udc12',\n 'monkey_face':'\\ud83d\\udc35',\n 'monorail':'\\ud83d\\ude9d',\n 'moon':'\\ud83c\\udf14',\n 'mortar_board':'\\ud83c\\udf93',\n 'mosque':'\\ud83d\\udd4c',\n 'motor_boat':'\\ud83d\\udee5',\n 'motor_scooter':'\\ud83d\\udef5',\n 'motorcycle':'\\ud83c\\udfcd',\n 'motorway':'\\ud83d\\udee3',\n 'mount_fuji':'\\ud83d\\uddfb',\n 'mountain':'\\u26f0',\n 'mountain_biking_man':'\\ud83d\\udeb5',\n 'mountain_biking_woman':'\\ud83d\\udeb5‍\\u2640\\ufe0f',\n 'mountain_cableway':'\\ud83d\\udea0',\n 'mountain_railway':'\\ud83d\\ude9e',\n 'mountain_snow':'\\ud83c\\udfd4',\n 'mouse':'\\ud83d\\udc2d',\n 'mouse2':'\\ud83d\\udc01',\n 'movie_camera':'\\ud83c\\udfa5',\n 'moyai':'\\ud83d\\uddff',\n 'mrs_claus':'\\ud83e\\udd36',\n 'muscle':'\\ud83d\\udcaa',\n 'mushroom':'\\ud83c\\udf44',\n 'musical_keyboard':'\\ud83c\\udfb9',\n 'musical_note':'\\ud83c\\udfb5',\n 'musical_score':'\\ud83c\\udfbc',\n 'mute':'\\ud83d\\udd07',\n 'nail_care':'\\ud83d\\udc85',\n 'name_badge':'\\ud83d\\udcdb',\n 'national_park':'\\ud83c\\udfde',\n 'nauseated_face':'\\ud83e\\udd22',\n 'necktie':'\\ud83d\\udc54',\n 'negative_squared_cross_mark':'\\u274e',\n 'nerd_face':'\\ud83e\\udd13',\n 'neutral_face':'\\ud83d\\ude10',\n 'new':'\\ud83c\\udd95',\n 'new_moon':'\\ud83c\\udf11',\n 'new_moon_with_face':'\\ud83c\\udf1a',\n 'newspaper':'\\ud83d\\udcf0',\n 'newspaper_roll':'\\ud83d\\uddde',\n 'next_track_button':'\\u23ed',\n 'ng':'\\ud83c\\udd96',\n 'no_good_man':'\\ud83d\\ude45‍\\u2642\\ufe0f',\n 'no_good_woman':'\\ud83d\\ude45',\n 'night_with_stars':'\\ud83c\\udf03',\n 'no_bell':'\\ud83d\\udd15',\n 'no_bicycles':'\\ud83d\\udeb3',\n 'no_entry':'\\u26d4\\ufe0f',\n 'no_entry_sign':'\\ud83d\\udeab',\n 'no_mobile_phones':'\\ud83d\\udcf5',\n 'no_mouth':'\\ud83d\\ude36',\n 'no_pedestrians':'\\ud83d\\udeb7',\n 'no_smoking':'\\ud83d\\udead',\n 'non-potable_water':'\\ud83d\\udeb1',\n 'nose':'\\ud83d\\udc43',\n 'notebook':'\\ud83d\\udcd3',\n 'notebook_with_decorative_cover':'\\ud83d\\udcd4',\n 'notes':'\\ud83c\\udfb6',\n 'nut_and_bolt':'\\ud83d\\udd29',\n 'o':'\\u2b55\\ufe0f',\n 'o2':'\\ud83c\\udd7e\\ufe0f',\n 'ocean':'\\ud83c\\udf0a',\n 'octopus':'\\ud83d\\udc19',\n 'oden':'\\ud83c\\udf62',\n 'office':'\\ud83c\\udfe2',\n 'oil_drum':'\\ud83d\\udee2',\n 'ok':'\\ud83c\\udd97',\n 'ok_hand':'\\ud83d\\udc4c',\n 'ok_man':'\\ud83d\\ude46‍\\u2642\\ufe0f',\n 'ok_woman':'\\ud83d\\ude46',\n 'old_key':'\\ud83d\\udddd',\n 'older_man':'\\ud83d\\udc74',\n 'older_woman':'\\ud83d\\udc75',\n 'om':'\\ud83d\\udd49',\n 'on':'\\ud83d\\udd1b',\n 'oncoming_automobile':'\\ud83d\\ude98',\n 'oncoming_bus':'\\ud83d\\ude8d',\n 'oncoming_police_car':'\\ud83d\\ude94',\n 'oncoming_taxi':'\\ud83d\\ude96',\n 'open_file_folder':'\\ud83d\\udcc2',\n 'open_hands':'\\ud83d\\udc50',\n 'open_mouth':'\\ud83d\\ude2e',\n 'open_umbrella':'\\u2602\\ufe0f',\n 'ophiuchus':'\\u26ce',\n 'orange_book':'\\ud83d\\udcd9',\n 'orthodox_cross':'\\u2626\\ufe0f',\n 'outbox_tray':'\\ud83d\\udce4',\n 'owl':'\\ud83e\\udd89',\n 'ox':'\\ud83d\\udc02',\n 'package':'\\ud83d\\udce6',\n 'page_facing_up':'\\ud83d\\udcc4',\n 'page_with_curl':'\\ud83d\\udcc3',\n 'pager':'\\ud83d\\udcdf',\n 'paintbrush':'\\ud83d\\udd8c',\n 'palm_tree':'\\ud83c\\udf34',\n 'pancakes':'\\ud83e\\udd5e',\n 'panda_face':'\\ud83d\\udc3c',\n 'paperclip':'\\ud83d\\udcce',\n 'paperclips':'\\ud83d\\udd87',\n 'parasol_on_ground':'\\u26f1',\n 'parking':'\\ud83c\\udd7f\\ufe0f',\n 'part_alternation_mark':'\\u303d\\ufe0f',\n 'partly_sunny':'\\u26c5\\ufe0f',\n 'passenger_ship':'\\ud83d\\udef3',\n 'passport_control':'\\ud83d\\udec2',\n 'pause_button':'\\u23f8',\n 'peace_symbol':'\\u262e\\ufe0f',\n 'peach':'\\ud83c\\udf51',\n 'peanuts':'\\ud83e\\udd5c',\n 'pear':'\\ud83c\\udf50',\n 'pen':'\\ud83d\\udd8a',\n 'pencil2':'\\u270f\\ufe0f',\n 'penguin':'\\ud83d\\udc27',\n 'pensive':'\\ud83d\\ude14',\n 'performing_arts':'\\ud83c\\udfad',\n 'persevere':'\\ud83d\\ude23',\n 'person_fencing':'\\ud83e\\udd3a',\n 'pouting_woman':'\\ud83d\\ude4e',\n 'phone':'\\u260e\\ufe0f',\n 'pick':'\\u26cf',\n 'pig':'\\ud83d\\udc37',\n 'pig2':'\\ud83d\\udc16',\n 'pig_nose':'\\ud83d\\udc3d',\n 'pill':'\\ud83d\\udc8a',\n 'pineapple':'\\ud83c\\udf4d',\n 'ping_pong':'\\ud83c\\udfd3',\n 'pisces':'\\u2653\\ufe0f',\n 'pizza':'\\ud83c\\udf55',\n 'place_of_worship':'\\ud83d\\uded0',\n 'plate_with_cutlery':'\\ud83c\\udf7d',\n 'play_or_pause_button':'\\u23ef',\n 'point_down':'\\ud83d\\udc47',\n 'point_left':'\\ud83d\\udc48',\n 'point_right':'\\ud83d\\udc49',\n 'point_up':'\\u261d\\ufe0f',\n 'point_up_2':'\\ud83d\\udc46',\n 'police_car':'\\ud83d\\ude93',\n 'policewoman':'\\ud83d\\udc6e‍\\u2640\\ufe0f',\n 'poodle':'\\ud83d\\udc29',\n 'popcorn':'\\ud83c\\udf7f',\n 'post_office':'\\ud83c\\udfe3',\n 'postal_horn':'\\ud83d\\udcef',\n 'postbox':'\\ud83d\\udcee',\n 'potable_water':'\\ud83d\\udeb0',\n 'potato':'\\ud83e\\udd54',\n 'pouch':'\\ud83d\\udc5d',\n 'poultry_leg':'\\ud83c\\udf57',\n 'pound':'\\ud83d\\udcb7',\n 'rage':'\\ud83d\\ude21',\n 'pouting_cat':'\\ud83d\\ude3e',\n 'pouting_man':'\\ud83d\\ude4e‍\\u2642\\ufe0f',\n 'pray':'\\ud83d\\ude4f',\n 'prayer_beads':'\\ud83d\\udcff',\n 'pregnant_woman':'\\ud83e\\udd30',\n 'previous_track_button':'\\u23ee',\n 'prince':'\\ud83e\\udd34',\n 'princess':'\\ud83d\\udc78',\n 'printer':'\\ud83d\\udda8',\n 'purple_heart':'\\ud83d\\udc9c',\n 'purse':'\\ud83d\\udc5b',\n 'pushpin':'\\ud83d\\udccc',\n 'put_litter_in_its_place':'\\ud83d\\udeae',\n 'question':'\\u2753',\n 'rabbit':'\\ud83d\\udc30',\n 'rabbit2':'\\ud83d\\udc07',\n 'racehorse':'\\ud83d\\udc0e',\n 'racing_car':'\\ud83c\\udfce',\n 'radio':'\\ud83d\\udcfb',\n 'radio_button':'\\ud83d\\udd18',\n 'radioactive':'\\u2622\\ufe0f',\n 'railway_car':'\\ud83d\\ude83',\n 'railway_track':'\\ud83d\\udee4',\n 'rainbow':'\\ud83c\\udf08',\n 'rainbow_flag':'\\ud83c\\udff3\\ufe0f‍\\ud83c\\udf08',\n 'raised_back_of_hand':'\\ud83e\\udd1a',\n 'raised_hand_with_fingers_splayed':'\\ud83d\\udd90',\n 'raised_hands':'\\ud83d\\ude4c',\n 'raising_hand_woman':'\\ud83d\\ude4b',\n 'raising_hand_man':'\\ud83d\\ude4b‍\\u2642\\ufe0f',\n 'ram':'\\ud83d\\udc0f',\n 'ramen':'\\ud83c\\udf5c',\n 'rat':'\\ud83d\\udc00',\n 'record_button':'\\u23fa',\n 'recycle':'\\u267b\\ufe0f',\n 'red_circle':'\\ud83d\\udd34',\n 'registered':'\\u00ae\\ufe0f',\n 'relaxed':'\\u263a\\ufe0f',\n 'relieved':'\\ud83d\\ude0c',\n 'reminder_ribbon':'\\ud83c\\udf97',\n 'repeat':'\\ud83d\\udd01',\n 'repeat_one':'\\ud83d\\udd02',\n 'rescue_worker_helmet':'\\u26d1',\n 'restroom':'\\ud83d\\udebb',\n 'revolving_hearts':'\\ud83d\\udc9e',\n 'rewind':'\\u23ea',\n 'rhinoceros':'\\ud83e\\udd8f',\n 'ribbon':'\\ud83c\\udf80',\n 'rice':'\\ud83c\\udf5a',\n 'rice_ball':'\\ud83c\\udf59',\n 'rice_cracker':'\\ud83c\\udf58',\n 'rice_scene':'\\ud83c\\udf91',\n 'right_anger_bubble':'\\ud83d\\uddef',\n 'ring':'\\ud83d\\udc8d',\n 'robot':'\\ud83e\\udd16',\n 'rocket':'\\ud83d\\ude80',\n 'rofl':'\\ud83e\\udd23',\n 'roll_eyes':'\\ud83d\\ude44',\n 'roller_coaster':'\\ud83c\\udfa2',\n 'rooster':'\\ud83d\\udc13',\n 'rose':'\\ud83c\\udf39',\n 'rosette':'\\ud83c\\udff5',\n 'rotating_light':'\\ud83d\\udea8',\n 'round_pushpin':'\\ud83d\\udccd',\n 'rowing_man':'\\ud83d\\udea3',\n 'rowing_woman':'\\ud83d\\udea3‍\\u2640\\ufe0f',\n 'rugby_football':'\\ud83c\\udfc9',\n 'running_man':'\\ud83c\\udfc3',\n 'running_shirt_with_sash':'\\ud83c\\udfbd',\n 'running_woman':'\\ud83c\\udfc3‍\\u2640\\ufe0f',\n 'sa':'\\ud83c\\ude02\\ufe0f',\n 'sagittarius':'\\u2650\\ufe0f',\n 'sake':'\\ud83c\\udf76',\n 'sandal':'\\ud83d\\udc61',\n 'santa':'\\ud83c\\udf85',\n 'satellite':'\\ud83d\\udce1',\n 'saxophone':'\\ud83c\\udfb7',\n 'school':'\\ud83c\\udfeb',\n 'school_satchel':'\\ud83c\\udf92',\n 'scissors':'\\u2702\\ufe0f',\n 'scorpion':'\\ud83e\\udd82',\n 'scorpius':'\\u264f\\ufe0f',\n 'scream':'\\ud83d\\ude31',\n 'scream_cat':'\\ud83d\\ude40',\n 'scroll':'\\ud83d\\udcdc',\n 'seat':'\\ud83d\\udcba',\n 'secret':'\\u3299\\ufe0f',\n 'see_no_evil':'\\ud83d\\ude48',\n 'seedling':'\\ud83c\\udf31',\n 'selfie':'\\ud83e\\udd33',\n 'shallow_pan_of_food':'\\ud83e\\udd58',\n 'shamrock':'\\u2618\\ufe0f',\n 'shark':'\\ud83e\\udd88',\n 'shaved_ice':'\\ud83c\\udf67',\n 'sheep':'\\ud83d\\udc11',\n 'shell':'\\ud83d\\udc1a',\n 'shield':'\\ud83d\\udee1',\n 'shinto_shrine':'\\u26e9',\n 'ship':'\\ud83d\\udea2',\n 'shirt':'\\ud83d\\udc55',\n 'shopping':'\\ud83d\\udecd',\n 'shopping_cart':'\\ud83d\\uded2',\n 'shower':'\\ud83d\\udebf',\n 'shrimp':'\\ud83e\\udd90',\n 'signal_strength':'\\ud83d\\udcf6',\n 'six_pointed_star':'\\ud83d\\udd2f',\n 'ski':'\\ud83c\\udfbf',\n 'skier':'\\u26f7',\n 'skull':'\\ud83d\\udc80',\n 'skull_and_crossbones':'\\u2620\\ufe0f',\n 'sleeping':'\\ud83d\\ude34',\n 'sleeping_bed':'\\ud83d\\udecc',\n 'sleepy':'\\ud83d\\ude2a',\n 'slightly_frowning_face':'\\ud83d\\ude41',\n 'slightly_smiling_face':'\\ud83d\\ude42',\n 'slot_machine':'\\ud83c\\udfb0',\n 'small_airplane':'\\ud83d\\udee9',\n 'small_blue_diamond':'\\ud83d\\udd39',\n 'small_orange_diamond':'\\ud83d\\udd38',\n 'small_red_triangle':'\\ud83d\\udd3a',\n 'small_red_triangle_down':'\\ud83d\\udd3b',\n 'smile':'\\ud83d\\ude04',\n 'smile_cat':'\\ud83d\\ude38',\n 'smiley':'\\ud83d\\ude03',\n 'smiley_cat':'\\ud83d\\ude3a',\n 'smiling_imp':'\\ud83d\\ude08',\n 'smirk':'\\ud83d\\ude0f',\n 'smirk_cat':'\\ud83d\\ude3c',\n 'smoking':'\\ud83d\\udeac',\n 'snail':'\\ud83d\\udc0c',\n 'snake':'\\ud83d\\udc0d',\n 'sneezing_face':'\\ud83e\\udd27',\n 'snowboarder':'\\ud83c\\udfc2',\n 'snowflake':'\\u2744\\ufe0f',\n 'snowman':'\\u26c4\\ufe0f',\n 'snowman_with_snow':'\\u2603\\ufe0f',\n 'sob':'\\ud83d\\ude2d',\n 'soccer':'\\u26bd\\ufe0f',\n 'soon':'\\ud83d\\udd1c',\n 'sos':'\\ud83c\\udd98',\n 'sound':'\\ud83d\\udd09',\n 'space_invader':'\\ud83d\\udc7e',\n 'spades':'\\u2660\\ufe0f',\n 'spaghetti':'\\ud83c\\udf5d',\n 'sparkle':'\\u2747\\ufe0f',\n 'sparkler':'\\ud83c\\udf87',\n 'sparkles':'\\u2728',\n 'sparkling_heart':'\\ud83d\\udc96',\n 'speak_no_evil':'\\ud83d\\ude4a',\n 'speaker':'\\ud83d\\udd08',\n 'speaking_head':'\\ud83d\\udde3',\n 'speech_balloon':'\\ud83d\\udcac',\n 'speedboat':'\\ud83d\\udea4',\n 'spider':'\\ud83d\\udd77',\n 'spider_web':'\\ud83d\\udd78',\n 'spiral_calendar':'\\ud83d\\uddd3',\n 'spiral_notepad':'\\ud83d\\uddd2',\n 'spoon':'\\ud83e\\udd44',\n 'squid':'\\ud83e\\udd91',\n 'stadium':'\\ud83c\\udfdf',\n 'star':'\\u2b50\\ufe0f',\n 'star2':'\\ud83c\\udf1f',\n 'star_and_crescent':'\\u262a\\ufe0f',\n 'star_of_david':'\\u2721\\ufe0f',\n 'stars':'\\ud83c\\udf20',\n 'station':'\\ud83d\\ude89',\n 'statue_of_liberty':'\\ud83d\\uddfd',\n 'steam_locomotive':'\\ud83d\\ude82',\n 'stew':'\\ud83c\\udf72',\n 'stop_button':'\\u23f9',\n 'stop_sign':'\\ud83d\\uded1',\n 'stopwatch':'\\u23f1',\n 'straight_ruler':'\\ud83d\\udccf',\n 'strawberry':'\\ud83c\\udf53',\n 'stuck_out_tongue':'\\ud83d\\ude1b',\n 'stuck_out_tongue_closed_eyes':'\\ud83d\\ude1d',\n 'stuck_out_tongue_winking_eye':'\\ud83d\\ude1c',\n 'studio_microphone':'\\ud83c\\udf99',\n 'stuffed_flatbread':'\\ud83e\\udd59',\n 'sun_behind_large_cloud':'\\ud83c\\udf25',\n 'sun_behind_rain_cloud':'\\ud83c\\udf26',\n 'sun_behind_small_cloud':'\\ud83c\\udf24',\n 'sun_with_face':'\\ud83c\\udf1e',\n 'sunflower':'\\ud83c\\udf3b',\n 'sunglasses':'\\ud83d\\ude0e',\n 'sunny':'\\u2600\\ufe0f',\n 'sunrise':'\\ud83c\\udf05',\n 'sunrise_over_mountains':'\\ud83c\\udf04',\n 'surfing_man':'\\ud83c\\udfc4',\n 'surfing_woman':'\\ud83c\\udfc4‍\\u2640\\ufe0f',\n 'sushi':'\\ud83c\\udf63',\n 'suspension_railway':'\\ud83d\\ude9f',\n 'sweat':'\\ud83d\\ude13',\n 'sweat_drops':'\\ud83d\\udca6',\n 'sweat_smile':'\\ud83d\\ude05',\n 'sweet_potato':'\\ud83c\\udf60',\n 'swimming_man':'\\ud83c\\udfca',\n 'swimming_woman':'\\ud83c\\udfca‍\\u2640\\ufe0f',\n 'symbols':'\\ud83d\\udd23',\n 'synagogue':'\\ud83d\\udd4d',\n 'syringe':'\\ud83d\\udc89',\n 'taco':'\\ud83c\\udf2e',\n 'tada':'\\ud83c\\udf89',\n 'tanabata_tree':'\\ud83c\\udf8b',\n 'taurus':'\\u2649\\ufe0f',\n 'taxi':'\\ud83d\\ude95',\n 'tea':'\\ud83c\\udf75',\n 'telephone_receiver':'\\ud83d\\udcde',\n 'telescope':'\\ud83d\\udd2d',\n 'tennis':'\\ud83c\\udfbe',\n 'tent':'\\u26fa\\ufe0f',\n 'thermometer':'\\ud83c\\udf21',\n 'thinking':'\\ud83e\\udd14',\n 'thought_balloon':'\\ud83d\\udcad',\n 'ticket':'\\ud83c\\udfab',\n 'tickets':'\\ud83c\\udf9f',\n 'tiger':'\\ud83d\\udc2f',\n 'tiger2':'\\ud83d\\udc05',\n 'timer_clock':'\\u23f2',\n 'tipping_hand_man':'\\ud83d\\udc81‍\\u2642\\ufe0f',\n 'tired_face':'\\ud83d\\ude2b',\n 'tm':'\\u2122\\ufe0f',\n 'toilet':'\\ud83d\\udebd',\n 'tokyo_tower':'\\ud83d\\uddfc',\n 'tomato':'\\ud83c\\udf45',\n 'tongue':'\\ud83d\\udc45',\n 'top':'\\ud83d\\udd1d',\n 'tophat':'\\ud83c\\udfa9',\n 'tornado':'\\ud83c\\udf2a',\n 'trackball':'\\ud83d\\uddb2',\n 'tractor':'\\ud83d\\ude9c',\n 'traffic_light':'\\ud83d\\udea5',\n 'train':'\\ud83d\\ude8b',\n 'train2':'\\ud83d\\ude86',\n 'tram':'\\ud83d\\ude8a',\n 'triangular_flag_on_post':'\\ud83d\\udea9',\n 'triangular_ruler':'\\ud83d\\udcd0',\n 'trident':'\\ud83d\\udd31',\n 'triumph':'\\ud83d\\ude24',\n 'trolleybus':'\\ud83d\\ude8e',\n 'trophy':'\\ud83c\\udfc6',\n 'tropical_drink':'\\ud83c\\udf79',\n 'tropical_fish':'\\ud83d\\udc20',\n 'truck':'\\ud83d\\ude9a',\n 'trumpet':'\\ud83c\\udfba',\n 'tulip':'\\ud83c\\udf37',\n 'tumbler_glass':'\\ud83e\\udd43',\n 'turkey':'\\ud83e\\udd83',\n 'turtle':'\\ud83d\\udc22',\n 'tv':'\\ud83d\\udcfa',\n 'twisted_rightwards_arrows':'\\ud83d\\udd00',\n 'two_hearts':'\\ud83d\\udc95',\n 'two_men_holding_hands':'\\ud83d\\udc6c',\n 'two_women_holding_hands':'\\ud83d\\udc6d',\n 'u5272':'\\ud83c\\ude39',\n 'u5408':'\\ud83c\\ude34',\n 'u55b6':'\\ud83c\\ude3a',\n 'u6307':'\\ud83c\\ude2f\\ufe0f',\n 'u6708':'\\ud83c\\ude37\\ufe0f',\n 'u6709':'\\ud83c\\ude36',\n 'u6e80':'\\ud83c\\ude35',\n 'u7121':'\\ud83c\\ude1a\\ufe0f',\n 'u7533':'\\ud83c\\ude38',\n 'u7981':'\\ud83c\\ude32',\n 'u7a7a':'\\ud83c\\ude33',\n 'umbrella':'\\u2614\\ufe0f',\n 'unamused':'\\ud83d\\ude12',\n 'underage':'\\ud83d\\udd1e',\n 'unicorn':'\\ud83e\\udd84',\n 'unlock':'\\ud83d\\udd13',\n 'up':'\\ud83c\\udd99',\n 'upside_down_face':'\\ud83d\\ude43',\n 'v':'\\u270c\\ufe0f',\n 'vertical_traffic_light':'\\ud83d\\udea6',\n 'vhs':'\\ud83d\\udcfc',\n 'vibration_mode':'\\ud83d\\udcf3',\n 'video_camera':'\\ud83d\\udcf9',\n 'video_game':'\\ud83c\\udfae',\n 'violin':'\\ud83c\\udfbb',\n 'virgo':'\\u264d\\ufe0f',\n 'volcano':'\\ud83c\\udf0b',\n 'volleyball':'\\ud83c\\udfd0',\n 'vs':'\\ud83c\\udd9a',\n 'vulcan_salute':'\\ud83d\\udd96',\n 'walking_man':'\\ud83d\\udeb6',\n 'walking_woman':'\\ud83d\\udeb6‍\\u2640\\ufe0f',\n 'waning_crescent_moon':'\\ud83c\\udf18',\n 'waning_gibbous_moon':'\\ud83c\\udf16',\n 'warning':'\\u26a0\\ufe0f',\n 'wastebasket':'\\ud83d\\uddd1',\n 'watch':'\\u231a\\ufe0f',\n 'water_buffalo':'\\ud83d\\udc03',\n 'watermelon':'\\ud83c\\udf49',\n 'wave':'\\ud83d\\udc4b',\n 'wavy_dash':'\\u3030\\ufe0f',\n 'waxing_crescent_moon':'\\ud83c\\udf12',\n 'wc':'\\ud83d\\udebe',\n 'weary':'\\ud83d\\ude29',\n 'wedding':'\\ud83d\\udc92',\n 'weight_lifting_man':'\\ud83c\\udfcb\\ufe0f',\n 'weight_lifting_woman':'\\ud83c\\udfcb\\ufe0f‍\\u2640\\ufe0f',\n 'whale':'\\ud83d\\udc33',\n 'whale2':'\\ud83d\\udc0b',\n 'wheel_of_dharma':'\\u2638\\ufe0f',\n 'wheelchair':'\\u267f\\ufe0f',\n 'white_check_mark':'\\u2705',\n 'white_circle':'\\u26aa\\ufe0f',\n 'white_flag':'\\ud83c\\udff3\\ufe0f',\n 'white_flower':'\\ud83d\\udcae',\n 'white_large_square':'\\u2b1c\\ufe0f',\n 'white_medium_small_square':'\\u25fd\\ufe0f',\n 'white_medium_square':'\\u25fb\\ufe0f',\n 'white_small_square':'\\u25ab\\ufe0f',\n 'white_square_button':'\\ud83d\\udd33',\n 'wilted_flower':'\\ud83e\\udd40',\n 'wind_chime':'\\ud83c\\udf90',\n 'wind_face':'\\ud83c\\udf2c',\n 'wine_glass':'\\ud83c\\udf77',\n 'wink':'\\ud83d\\ude09',\n 'wolf':'\\ud83d\\udc3a',\n 'woman':'\\ud83d\\udc69',\n 'woman_artist':'\\ud83d\\udc69‍\\ud83c\\udfa8',\n 'woman_astronaut':'\\ud83d\\udc69‍\\ud83d\\ude80',\n 'woman_cartwheeling':'\\ud83e\\udd38‍\\u2640\\ufe0f',\n 'woman_cook':'\\ud83d\\udc69‍\\ud83c\\udf73',\n 'woman_facepalming':'\\ud83e\\udd26‍\\u2640\\ufe0f',\n 'woman_factory_worker':'\\ud83d\\udc69‍\\ud83c\\udfed',\n 'woman_farmer':'\\ud83d\\udc69‍\\ud83c\\udf3e',\n 'woman_firefighter':'\\ud83d\\udc69‍\\ud83d\\ude92',\n 'woman_health_worker':'\\ud83d\\udc69‍\\u2695\\ufe0f',\n 'woman_judge':'\\ud83d\\udc69‍\\u2696\\ufe0f',\n 'woman_juggling':'\\ud83e\\udd39‍\\u2640\\ufe0f',\n 'woman_mechanic':'\\ud83d\\udc69‍\\ud83d\\udd27',\n 'woman_office_worker':'\\ud83d\\udc69‍\\ud83d\\udcbc',\n 'woman_pilot':'\\ud83d\\udc69‍\\u2708\\ufe0f',\n 'woman_playing_handball':'\\ud83e\\udd3e‍\\u2640\\ufe0f',\n 'woman_playing_water_polo':'\\ud83e\\udd3d‍\\u2640\\ufe0f',\n 'woman_scientist':'\\ud83d\\udc69‍\\ud83d\\udd2c',\n 'woman_shrugging':'\\ud83e\\udd37‍\\u2640\\ufe0f',\n 'woman_singer':'\\ud83d\\udc69‍\\ud83c\\udfa4',\n 'woman_student':'\\ud83d\\udc69‍\\ud83c\\udf93',\n 'woman_teacher':'\\ud83d\\udc69‍\\ud83c\\udfeb',\n 'woman_technologist':'\\ud83d\\udc69‍\\ud83d\\udcbb',\n 'woman_with_turban':'\\ud83d\\udc73‍\\u2640\\ufe0f',\n 'womans_clothes':'\\ud83d\\udc5a',\n 'womans_hat':'\\ud83d\\udc52',\n 'women_wrestling':'\\ud83e\\udd3c‍\\u2640\\ufe0f',\n 'womens':'\\ud83d\\udeba',\n 'world_map':'\\ud83d\\uddfa',\n 'worried':'\\ud83d\\ude1f',\n 'wrench':'\\ud83d\\udd27',\n 'writing_hand':'\\u270d\\ufe0f',\n 'x':'\\u274c',\n 'yellow_heart':'\\ud83d\\udc9b',\n 'yen':'\\ud83d\\udcb4',\n 'yin_yang':'\\u262f\\ufe0f',\n 'yum':'\\ud83d\\ude0b',\n 'zap':'\\u26a1\\ufe0f',\n 'zipper_mouth_face':'\\ud83e\\udd10',\n 'zzz':'\\ud83d\\udca4',\n\n /* special emojis :P */\n 'octocat': '<img alt=\":octocat:\" height=\"20\" width=\"20\" align=\"absmiddle\" src=\"https://assets-cdn.github.com/images/icons/emoji/octocat.png\">',\n 'showdown': '<span style=\"font-family: \\'Anonymous Pro\\', monospace; text-decoration: underline; text-decoration-style: dashed; text-decoration-color: #3e8b8a;text-underline-position: under;\">S</span>'\n};\n","/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n 'use strict';\n\n var\n /**\n * Options used by this converter\n * @private\n * @type {{}}\n */\n options = {},\n\n /**\n * Language extensions used by this converter\n * @private\n * @type {Array}\n */\n langExtensions = [],\n\n /**\n * Output modifiers extensions used by this converter\n * @private\n * @type {Array}\n */\n outputModifiers = [],\n\n /**\n * Event listeners\n * @private\n * @type {{}}\n */\n listeners = {},\n\n /**\n * The flavor set in this converter\n */\n setConvFlavor = setFlavor,\n\n /**\n * Metadata of the document\n * @type {{parsed: {}, raw: string, format: string}}\n */\n metadata = {\n parsed: {},\n raw: '',\n format: ''\n };\n\n _constructor();\n\n /**\n * Converter constructor\n * @private\n */\n function _constructor () {\n converterOptions = converterOptions || {};\n\n for (var gOpt in globalOptions) {\n if (globalOptions.hasOwnProperty(gOpt)) {\n options[gOpt] = globalOptions[gOpt];\n }\n }\n\n // Merge options\n if (typeof converterOptions === 'object') {\n for (var opt in converterOptions) {\n if (converterOptions.hasOwnProperty(opt)) {\n options[opt] = converterOptions[opt];\n }\n }\n } else {\n throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n ' was passed instead.');\n }\n\n if (options.extensions) {\n showdown.helper.forEach(options.extensions, _parseExtension);\n }\n }\n\n /**\n * Parse extension\n * @param {*} ext\n * @param {string} [name='']\n * @private\n */\n function _parseExtension (ext, name) {\n\n name = name || null;\n // If it's a string, the extension was previously loaded\n if (showdown.helper.isString(ext)) {\n ext = showdown.helper.stdExtName(ext);\n name = ext;\n\n // LEGACY_SUPPORT CODE\n if (showdown.extensions[ext]) {\n console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n 'Please inform the developer that the extension should be updated!');\n legacyExtensionLoading(showdown.extensions[ext], ext);\n return;\n // END LEGACY SUPPORT CODE\n\n } else if (!showdown.helper.isUndefined(extensions[ext])) {\n ext = extensions[ext];\n\n } else {\n throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n }\n }\n\n if (typeof ext === 'function') {\n ext = ext();\n }\n\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n\n var validExt = validate(ext, name);\n if (!validExt.valid) {\n throw Error(validExt.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n }\n if (ext[i].hasOwnProperty('listeners')) {\n for (var ln in ext[i].listeners) {\n if (ext[i].listeners.hasOwnProperty(ln)) {\n listen(ln, ext[i].listeners[ln]);\n }\n }\n }\n }\n\n }\n\n /**\n * LEGACY_SUPPORT\n * @param {*} ext\n * @param {string} name\n */\n function legacyExtensionLoading (ext, name) {\n if (typeof ext === 'function') {\n ext = ext(new showdown.Converter());\n }\n if (!showdown.helper.isArray(ext)) {\n ext = [ext];\n }\n var valid = validate(ext, name);\n\n if (!valid.valid) {\n throw Error(valid.error);\n }\n\n for (var i = 0; i < ext.length; ++i) {\n switch (ext[i].type) {\n case 'lang':\n langExtensions.push(ext[i]);\n break;\n case 'output':\n outputModifiers.push(ext[i]);\n break;\n default:// should never reach here\n throw Error('Extension loader error: Type unrecognized!!!');\n }\n }\n }\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n */\n function listen (name, callback) {\n if (!showdown.helper.isString(name)) {\n throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n }\n\n if (typeof callback !== 'function') {\n throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n }\n\n if (!listeners.hasOwnProperty(name)) {\n listeners[name] = [];\n }\n listeners[name].push(callback);\n }\n\n function rTrimInputText (text) {\n var rsp = text.match(/^\\s*/)[0].length,\n rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n return text.replace(rgx, '');\n }\n\n /**\n * Dispatch an event\n * @private\n * @param {string} evtName Event name\n * @param {string} text Text\n * @param {{}} options Converter Options\n * @param {{}} globals\n * @returns {string}\n */\n this._dispatch = function dispatch (evtName, text, options, globals) {\n if (listeners.hasOwnProperty(evtName)) {\n for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n if (nText && typeof nText !== 'undefined') {\n text = nText;\n }\n }\n }\n return text;\n };\n\n /**\n * Listen to an event\n * @param {string} name\n * @param {function} callback\n * @returns {showdown.Converter}\n */\n this.listen = function (name, callback) {\n listen(name, callback);\n return this;\n };\n\n /**\n * Converts a markdown string into HTML\n * @param {string} text\n * @returns {*}\n */\n this.makeHtml = function (text) {\n //check if text is not falsy\n if (!text) {\n return text;\n }\n\n var globals = {\n gHtmlBlocks: [],\n gHtmlMdBlocks: [],\n gHtmlSpans: [],\n gUrls: {},\n gTitles: {},\n gDimensions: {},\n gListLevel: 0,\n hashLinkCounts: {},\n langExtensions: langExtensions,\n outputModifiers: outputModifiers,\n converter: this,\n ghCodeBlocks: [],\n metadata: {\n parsed: {},\n raw: '',\n format: ''\n }\n };\n\n // This lets us use ¨ trema as an escape char to avoid md5 hashes\n // The choice of character is arbitrary; anything that isn't\n // magic in Markdown will work.\n text = text.replace(/¨/g, '¨T');\n\n // Replace $ with ¨D\n // RegExp interprets $ as a special character\n // when it's in a replacement string\n text = text.replace(/\\$/g, '¨D');\n\n // Standardize line endings\n text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n // Stardardize line spaces\n text = text.replace(/\\u00A0/g, ' ');\n\n if (options.smartIndentationFix) {\n text = rTrimInputText(text);\n }\n\n // Make sure text begins and ends with a couple of newlines:\n text = '\\n\\n' + text + '\\n\\n';\n\n // detab\n text = showdown.subParser('detab')(text, options, globals);\n\n /**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\n text = text.replace(/^[ \\t]+$/mg, '');\n\n //run languageExtensions\n showdown.helper.forEach(langExtensions, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // run the sub parsers\n text = showdown.subParser('metadata')(text, options, globals);\n text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('hashCodeTags')(text, options, globals);\n text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n text = showdown.subParser('blockGamut')(text, options, globals);\n text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n // attacklab: Restore dollar signs\n text = text.replace(/¨D/g, '$$');\n\n // attacklab: Restore tremas\n text = text.replace(/¨T/g, '¨');\n\n // render a complete html document instead of a partial if the option is enabled\n text = showdown.subParser('completeHTMLDocument')(text, options, globals);\n\n // Run output modifiers\n showdown.helper.forEach(outputModifiers, function (ext) {\n text = showdown.subParser('runExtension')(ext, text, options, globals);\n });\n\n // update metadata\n metadata = globals.metadata;\n return text;\n };\n\n /**\n * Converts an HTML string into a markdown string\n * @param src\n * @param [HTMLParser] A WHATWG DOM and HTML parser, such as JSDOM. If none is supplied, window.document will be used.\n * @returns {string}\n */\n this.makeMarkdown = this.makeMd = function (src, HTMLParser) {\n\n // replace \\r\\n with \\n\n src = src.replace(/\\r\\n/g, '\\n');\n src = src.replace(/\\r/g, '\\n'); // old macs\n\n // due to an edge case, we need to find this: > <\n // to prevent removing of non silent white spaces\n // ex: <em>this is</em> <strong>sparta</strong>\n src = src.replace(/>[ \\t]+</, '>¨NBSP;<');\n\n if (!HTMLParser) {\n if (window && window.document) {\n HTMLParser = window.document;\n } else {\n throw new Error('HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM');\n }\n }\n\n var doc = HTMLParser.createElement('div');\n doc.innerHTML = src;\n\n var globals = {\n preList: substitutePreCodeTags(doc)\n };\n\n // remove all newlines and collapse spaces\n clean(doc);\n\n // some stuff, like accidental reference links must now be escaped\n // TODO\n // doc.innerHTML = doc.innerHTML.replace(/\\[[\\S\\t ]]/);\n\n var nodes = doc.childNodes,\n mdDoc = '';\n\n for (var i = 0; i < nodes.length; i++) {\n mdDoc += showdown.subParser('makeMarkdown.node')(nodes[i], globals);\n }\n\n function clean (node) {\n for (var n = 0; n < node.childNodes.length; ++n) {\n var child = node.childNodes[n];\n if (child.nodeType === 3) {\n if (!/\\S/.test(child.nodeValue) && !/^[ ]+$/.test(child.nodeValue)) {\n node.removeChild(child);\n --n;\n } else {\n child.nodeValue = child.nodeValue.split('\\n').join(' ');\n child.nodeValue = child.nodeValue.replace(/(\\s)+/g, '$1');\n }\n } else if (child.nodeType === 1) {\n clean(child);\n }\n }\n }\n\n // find all pre tags and replace contents with placeholder\n // we need this so that we can remove all indentation from html\n // to ease up parsing\n function substitutePreCodeTags (doc) {\n\n var pres = doc.querySelectorAll('pre'),\n presPH = [];\n\n for (var i = 0; i < pres.length; ++i) {\n\n if (pres[i].childElementCount === 1 && pres[i].firstChild.tagName.toLowerCase() === 'code') {\n var content = pres[i].firstChild.innerHTML.trim(),\n language = pres[i].firstChild.getAttribute('data-language') || '';\n\n // if data-language attribute is not defined, then we look for class language-*\n if (language === '') {\n var classes = pres[i].firstChild.className.split(' ');\n for (var c = 0; c < classes.length; ++c) {\n var matches = classes[c].match(/^language-(.+)$/);\n if (matches !== null) {\n language = matches[1];\n break;\n }\n }\n }\n\n // unescape html entities in content\n content = showdown.helper.unescapeHTMLEntities(content);\n\n presPH.push(content);\n pres[i].outerHTML = '<precode language=\"' + language + '\" precodenum=\"' + i.toString() + '\"></precode>';\n } else {\n presPH.push(pres[i].innerHTML);\n pres[i].innerHTML = '';\n pres[i].setAttribute('prenum', i.toString());\n }\n }\n return presPH;\n }\n\n return mdDoc;\n };\n\n /**\n * Set an option of this Converter instance\n * @param {string} key\n * @param {*} value\n */\n this.setOption = function (key, value) {\n options[key] = value;\n };\n\n /**\n * Get the option of this Converter instance\n * @param {string} key\n * @returns {*}\n */\n this.getOption = function (key) {\n return options[key];\n };\n\n /**\n * Get the options of this Converter instance\n * @returns {{}}\n */\n this.getOptions = function () {\n return options;\n };\n\n /**\n * Add extension to THIS converter\n * @param {{}} extension\n * @param {string} [name=null]\n */\n this.addExtension = function (extension, name) {\n name = name || null;\n _parseExtension(extension, name);\n };\n\n /**\n * Use a global registered extension with THIS converter\n * @param {string} extensionName Name of the previously registered extension\n */\n this.useExtension = function (extensionName) {\n _parseExtension(extensionName);\n };\n\n /**\n * Set the flavor THIS converter should use\n * @param {string} name\n */\n this.setFlavor = function (name) {\n if (!flavor.hasOwnProperty(name)) {\n throw Error(name + ' flavor was not found');\n }\n var preset = flavor[name];\n setConvFlavor = name;\n for (var option in preset) {\n if (preset.hasOwnProperty(option)) {\n options[option] = preset[option];\n }\n }\n };\n\n /**\n * Get the currently set flavor of this converter\n * @returns {string}\n */\n this.getFlavor = function () {\n return setConvFlavor;\n };\n\n /**\n * Remove an extension from THIS converter.\n * Note: This is a costly operation. It's better to initialize a new converter\n * and specify the extensions you wish to use\n * @param {Array} extension\n */\n this.removeExtension = function (extension) {\n if (!showdown.helper.isArray(extension)) {\n extension = [extension];\n }\n for (var a = 0; a < extension.length; ++a) {\n var ext = extension[a];\n for (var i = 0; i < langExtensions.length; ++i) {\n if (langExtensions[i] === ext) {\n langExtensions.splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++ii) {\n if (outputModifiers[ii] === ext) {\n outputModifiers.splice(ii, 1);\n }\n }\n }\n };\n\n /**\n * Get all extension of THIS converter\n * @returns {{language: Array, output: Array}}\n */\n this.getAllExtensions = function () {\n return {\n language: langExtensions,\n output: outputModifiers\n };\n };\n\n /**\n * Get the metadata of the previously parsed document\n * @param raw\n * @returns {string|{}}\n */\n this.getMetadata = function (raw) {\n if (raw) {\n return metadata.raw;\n } else {\n return metadata.parsed;\n }\n };\n\n /**\n * Get the metadata format of the previously parsed document\n * @returns {string}\n */\n this.getMetadataFormat = function () {\n return metadata.format;\n };\n\n /**\n * Private: set a single key, value metadata pair\n * @param {string} key\n * @param {string} value\n */\n this._setMetadataPair = function (key, value) {\n metadata.parsed[key] = value;\n };\n\n /**\n * Private: set metadata format\n * @param {string} format\n */\n this._setMetadataFormat = function (format) {\n metadata.format = format;\n };\n\n /**\n * Private: set metadata raw text\n * @param {string} raw\n */\n this._setMetadataRaw = function (raw) {\n metadata.raw = raw;\n };\n};\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n var writeAnchorTag = function (wholeMatch, linkText, linkId, url, m5, m6, title) {\n if (showdown.helper.isUndefined(title)) {\n title = '';\n }\n linkId = linkId.toLowerCase();\n\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n } else if (!url) {\n if (!linkId) {\n // lower-case and turn embedded newlines into spaces\n linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n url = globals.gUrls[linkId];\n if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n title = globals.gTitles[linkId];\n }\n } else {\n return wholeMatch;\n }\n }\n\n //url = showdown.helper.escapeCharacters(url, '*_', false); // replaced line to improve performance\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n\n var result = '<a href=\"' + url + '\"';\n\n if (title !== '' && title !== null) {\n title = title.replace(/\"/g, '"');\n //title = showdown.helper.escapeCharacters(title, '*_', false); // replaced line to improve performance\n title = title.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n // optionLinksInNewWindow only applies\n // to external links. Hash links (#) open in same page\n if (options.openLinksInNewWindow && !/^#/.test(url)) {\n // escaped _\n result += ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n\n result += '>' + linkText + '</a>';\n\n return result;\n };\n\n // First, handle reference-style links: [link text] [id]\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g, writeAnchorTag);\n\n // Next, inline-style links: [link text](url \"optional title\")\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // normal cases\n text = text.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,\n writeAnchorTag);\n\n // handle reference-style shortcuts: [link text]\n // These must come last in case you've also got [link test][1]\n // or [link test](/foo)\n text = text.replace(/\\[([^\\[\\]]+)]()()()()()/g, writeAnchorTag);\n\n // Lastly handle GithubMentions if option is enabled\n if (options.ghMentions) {\n text = text.replace(/(^|\\s)(\\\\)?(@([a-z\\d]+(?:[a-z\\d.-]+?[a-z\\d]+)*))/gmi, function (wm, st, escape, mentions, username) {\n if (escape === '\\\\') {\n return st + mentions;\n }\n\n //check if options.ghMentionsLink is a string\n if (!showdown.helper.isString(options.ghMentionsLink)) {\n throw new Error('ghMentionsLink option must be a string');\n }\n var lnk = options.ghMentionsLink.replace(/\\{u}/g, username),\n target = '';\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return st + '<a href=\"' + lnk + '\"' + target + '>' + mentions + '</a>';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n","// url allowed chars [a-z\\d_.~:/?#[]@!$&'()*+,;=-]\n\nvar simpleURLRegex = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+?\\.[^'\">\\s]+?)()(\\1)?(?=\\s|$)(?![\"<>])/gi,\n simpleURLRegex2 = /([*~_]+|\\b)(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]])?(\\1)?(?=\\s|$)(?![\"<>])/gi,\n delimUrlRegex = /()<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>()/gi,\n simpleMailRegex = /(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gmi,\n delimMailRegex = /<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\n\n replaceLink = function (options) {\n 'use strict';\n return function (wm, leadingMagicChars, link, m2, m3, trailingPunctuation, trailingMagicChars) {\n link = link.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var lnkTxt = link,\n append = '',\n target = '',\n lmc = leadingMagicChars || '',\n tmc = trailingMagicChars || '';\n if (/^www\\./i.test(link)) {\n link = link.replace(/^www\\./i, 'http://www.');\n }\n if (options.excludeTrailingPunctuationFromURLs && trailingPunctuation) {\n append = trailingPunctuation;\n }\n if (options.openLinksInNewWindow) {\n target = ' rel=\"noopener noreferrer\" target=\"¨E95Eblank\"';\n }\n return lmc + '<a href=\"' + link + '\"' + target + '>' + lnkTxt + '</a>' + append + tmc;\n };\n },\n\n replaceMail = function (options, globals) {\n 'use strict';\n return function (wholeMatch, b, mail) {\n var href = 'mailto:';\n b = b || '';\n mail = showdown.subParser('unescapeSpecialChars')(mail, options, globals);\n if (options.encodeEmails) {\n href = showdown.helper.encodeEmailAddress(href + mail);\n mail = showdown.helper.encodeEmailAddress(mail);\n } else {\n href = href + mail;\n }\n return b + '<a href=\"' + href + '\">' + mail + '</a>';\n };\n };\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n text = text.replace(delimUrlRegex, replaceLink(options));\n text = text.replace(delimMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n return text;\n});\n\nshowdown.subParser('simplifiedAutoLinks', function (text, options, globals) {\n 'use strict';\n\n if (!options.simplifiedAutoLink) {\n return text;\n }\n\n text = globals.converter._dispatch('simplifiedAutoLinks.before', text, options, globals);\n\n if (options.excludeTrailingPunctuationFromURLs) {\n text = text.replace(simpleURLRegex2, replaceLink(options));\n } else {\n text = text.replace(simpleURLRegex, replaceLink(options));\n }\n text = text.replace(simpleMailRegex, replaceMail(options, globals));\n\n text = globals.converter._dispatch('simplifiedAutoLinks.after', text, options, globals);\n\n return text;\n});\n","/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n // we parse blockquotes first so that we can have headings and hrs\n // inside blockquotes\n text = showdown.subParser('blockQuotes')(text, options, globals);\n text = showdown.subParser('headers')(text, options, globals);\n\n // Do Horizontal Rules:\n text = showdown.subParser('horizontalRule')(text, options, globals);\n\n text = showdown.subParser('lists')(text, options, globals);\n text = showdown.subParser('codeBlocks')(text, options, globals);\n text = showdown.subParser('tables')(text, options, globals);\n\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n // was to escape raw HTML in the original Markdown source. This time,\n // we're escaping the markup we've just created, so that we don't wrap\n // <p> tags around block-level tags.\n text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n text = showdown.subParser('paragraphs')(text, options, globals);\n\n text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('blockQuotes', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n\n // add a couple extra lines after the text and endtext mark\n text = text + '\\n\\n';\n\n var rgx = /(^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+/gm;\n\n if (options.splitAdjacentBlockquotes) {\n rgx = /^ {0,3}>[\\s\\S]*?(?:\\n\\n)/gm;\n }\n\n text = text.replace(rgx, function (bq) {\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, ''); // trim one level of quoting\n\n // attacklab: clean up hack\n bq = bq.replace(/¨0/g, '');\n\n bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n bq = bq.replace(/(^|\\n)/g, '$1 ');\n // These leading spaces screw with <pre> content, so we need to fix that:\n bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n var pre = m1;\n // attacklab: hack around Konqueror 3.5.4 bug:\n pre = pre.replace(/^ /mg, '¨0');\n pre = pre.replace(/¨0/g, '');\n return pre;\n });\n\n return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n","/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n\n // sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=¨0))/g;\n text = text.replace(pattern, function (wholeMatch, m1, m2) {\n var codeblock = m1,\n nextChar = m2,\n end = '\\n';\n\n codeblock = showdown.subParser('outdent')(codeblock, options, globals);\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n if (options.omitExtraWLInCodeBlocks) {\n end = '';\n }\n\n codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n });\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n\n text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n return text;\n});\n","/**\n *\n * * Backtick quotes are used for <code></code> spans.\n *\n * * You can use multiple backticks as the delimiters if you want to\n * include literal backticks in the code span. So, this input:\n *\n * Just type ``foo `bar` baz`` at the prompt.\n *\n * Will translate to:\n *\n * <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n * There's no arbitrary limit to the number of backticks you\n * can use as delimters. If you need three consecutive backticks\n * in your code, use four for delimiters, etc.\n *\n * * You can use spaces to get literal backticks at the edges:\n *\n * ... type `` `bar` `` ...\n *\n * Turns to:\n *\n * ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n if (typeof (text) === 'undefined') {\n text = '';\n }\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n function (wholeMatch, m1, m2, m3) {\n var c = m3;\n c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n c = showdown.subParser('encodeCode')(c, options, globals);\n c = m1 + '<code>' + c + '</code>';\n c = showdown.subParser('hashHTMLSpans')(c, options, globals);\n return c;\n }\n );\n\n text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Create a full HTML document from the processed markdown\n */\nshowdown.subParser('completeHTMLDocument', function (text, options, globals) {\n 'use strict';\n\n if (!options.completeHTMLDocument) {\n return text;\n }\n\n text = globals.converter._dispatch('completeHTMLDocument.before', text, options, globals);\n\n var doctype = 'html',\n doctypeParsed = '<!DOCTYPE HTML>\\n',\n title = '',\n charset = '<meta charset=\"utf-8\">\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '<!DOCTYPE ' + globals.metadata.parsed.doctype + '>\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"utf-8\">';\n }\n }\n\n for (var meta in globals.metadata.parsed) {\n if (globals.metadata.parsed.hasOwnProperty(meta)) {\n switch (meta.toLowerCase()) {\n case 'doctype':\n break;\n\n case 'title':\n title = '<title>' + globals.metadata.parsed.title + '</title>\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '<meta charset=\"' + globals.metadata.parsed.charset + '\">\\n';\n } else {\n charset = '<meta name=\"charset\" content=\"' + globals.metadata.parsed.charset + '\">\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n break;\n\n default:\n metadata += '<meta name=\"' + meta + '\" content=\"' + globals.metadata.parsed[meta] + '\">\\n';\n }\n }\n }\n\n text = doctypeParsed + '<html' + lang + '>\\n<head>\\n' + title + charset + metadata + '</head>\\n<body>\\n' + text.trim() + '\\n</body>\\n</html>';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n","/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('detab.before', text, options, globals);\n\n // expand first n-1 tabs\n text = text.replace(/\\t(?=\\t)/g, ' '); // g_tab_width\n\n // replace the nth with two sentinels\n text = text.replace(/\\t/g, '¨A¨B');\n\n // use the sentinel to anchor our regex so it doesn't explode\n text = text.replace(/¨B(.+?)¨A/g, function (wholeMatch, m1) {\n var leadingText = m1,\n numSpaces = 4 - leadingText.length % 4; // g_tab_width\n\n // there *must* be a better way to do this:\n for (var i = 0; i < numSpaces; i++) {\n leadingText += ' ';\n }\n\n return leadingText;\n });\n\n // clean up sentinels\n text = text.replace(/¨A/g, ' '); // g_tab_width\n text = text.replace(/¨B/g, '');\n\n text = globals.converter._dispatch('detab.after', text, options, globals);\n return text;\n});\n","showdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\n\n if (!options.ellipsis) {\n return text;\n }\n\n text = globals.converter._dispatch('ellipsis.before', text, options, globals);\n\n text = text.replace(/\\.\\.\\./g, '…');\n\n text = globals.converter._dispatch('ellipsis.after', text, options, globals);\n\n return text;\n});\n","/**\n * Turn emoji codes into emojis\n *\n * List of supported emojis: https://github.com/showdownjs/showdown/wiki/Emojis\n */\nshowdown.subParser('emoji', function (text, options, globals) {\n 'use strict';\n\n if (!options.emoji) {\n return text;\n }\n\n text = globals.converter._dispatch('emoji.before', text, options, globals);\n\n var emojiRgx = /:([\\S]+?):/g;\n\n text = text.replace(emojiRgx, function (wm, emojiCode) {\n if (showdown.helper.emojis.hasOwnProperty(emojiCode)) {\n return showdown.helper.emojis[emojiCode];\n }\n return wm;\n });\n\n text = globals.converter._dispatch('emoji.after', text, options, globals);\n\n return text;\n});\n","/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeAmpsAndAngles.before', text, options, globals);\n\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n // http://bumppo.net/projects/amputator/\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&');\n\n // Encode naked <'s\n text = text.replace(/<(?![a-z\\/?$!])/gi, '<');\n\n // Encode <\n text = text.replace(/</g, '<');\n\n // Encode >\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n","/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n * text = escapeCharacters(text,\"\\\\\",true);\n * text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox. This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('encodeBackslashEscapes.before', text, options, globals);\n\n text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|:-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeBackslashEscapes.after', text, options, globals);\n return text;\n});\n","/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('encodeCode.before', text, options, globals);\n\n // Encode all ampersands; HTML entities are not\n // entities within a Markdown code span.\n text = text\n .replace(/&/g, '&')\n // Do the angle bracket song and dance:\n .replace(/</g, '<')\n .replace(/>/g, '>')\n // Now, escape characters that are magic in Markdown:\n .replace(/([*_{}\\[\\]\\\\=~-])/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('encodeCode.after', text, options, globals);\n return text;\n});\n","/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _ ~ =] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.before', text, options, globals);\n\n // Build a regex to find HTML tags.\n var tags = /<\\/?[a-z\\d_:-]+(?:[\\s]+[\\s\\S]+?)?>/gi,\n comments = /<!(--(?:(?:[^>-]|-[^>])(?:[^-]|-[^-])*)--)>/gi;\n\n text = text.replace(tags, function (wholeMatch) {\n return wholeMatch\n .replace(/(.)<\\/?code>(?=.)/g, '$1`')\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = text.replace(comments, function (wholeMatch) {\n return wholeMatch\n .replace(/([\\\\`*_~=|])/g, showdown.helper.escapeCharactersCallback);\n });\n\n text = globals.converter._dispatch('escapeSpecialCharsWithinTagAttributes.after', text, options, globals);\n return text;\n});\n","/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n * def hello_world(x)\n * puts \"Hello, #{x}\"\n * end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n 'use strict';\n\n // early exit if option is not enabled\n if (!options.ghCodeBlocks) {\n return text;\n }\n\n text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n text += '¨0';\n\n text = text.replace(/(?:^|\\n)(?: {0,3})(```+|~~~+)(?: *)([^\\s`~]*)\\n([\\s\\S]*?)\\n(?: {0,3})\\1/g, function (wholeMatch, delim, language, codeblock) {\n var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n // First parse the github code block\n codeblock = showdown.subParser('encodeCode')(codeblock, options, globals);\n codeblock = showdown.subParser('detab')(codeblock, options, globals);\n codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n // Since GHCodeblocks can be false positives, we need to\n // store the primitive text and the parsed text in a global var,\n // and then return a token\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n });\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n","showdown.subParser('hashBlock', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashBlock.before', text, options, globals);\n text = text.replace(/(^\\n+|\\n+$)/g, '');\n text = '\\n\\n¨K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n text = globals.converter._dispatch('hashBlock.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '¨C' + (globals.gHtmlSpans.push(codeblock) - 1) + 'C';\n };\n\n // Hash naked <code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '<code\\\\b[^>]*>', '</code>', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('hashElement', function (text, options, globals) {\n 'use strict';\n\n return function (wholeMatch, m1) {\n var blockText = m1;\n\n // Undo double lines\n blockText = blockText.replace(/\\n\\n/g, '\\n');\n blockText = blockText.replace(/^\\n/, '');\n\n // strip trailing blank lines\n blockText = blockText.replace(/\\n+$/g, '');\n\n // Replace the element text with a marker (\"¨KxK\" where x is its key)\n blockText = '\\n\\n¨K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n return blockText;\n };\n});\n","showdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLBlocks.before', text, options, globals);\n\n var blockTags = [\n 'pre',\n 'div',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'blockquote',\n 'table',\n 'dl',\n 'ol',\n 'ul',\n 'script',\n 'noscript',\n 'form',\n 'fieldset',\n 'iframe',\n 'math',\n 'style',\n 'section',\n 'header',\n 'footer',\n 'nav',\n 'article',\n 'aside',\n 'address',\n 'audio',\n 'canvas',\n 'figure',\n 'hgroup',\n 'output',\n 'video',\n 'p'\n ],\n repFunc = function (wholeMatch, match, left, right) {\n var txt = wholeMatch;\n // check if this html element is marked as markdown\n // if so, it's contents should be parsed as markdown\n if (left.search(/\\bmarkdown\\b/) !== -1) {\n txt = left + globals.converter.makeHtml(match) + right;\n }\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n };\n\n if (options.backslashEscapesHTMLTags) {\n // encode backslash escaped HTML tags\n text = text.replace(/\\\\<(\\/?[^>]+?)>/g, function (wm, inside) {\n return '<' + inside + '>';\n });\n }\n\n // hash HTML Blocks\n for (var i = 0; i < blockTags.length; ++i) {\n\n var opTagPos,\n rgx1 = new RegExp('^ {0,3}(<' + blockTags[i] + '\\\\b[^>]*>)', 'im'),\n patLeft = '<' + blockTags[i] + '\\\\b[^>]*>',\n patRight = '</' + blockTags[i] + '>';\n // 1. Look for the first position of the first opening HTML tag in the text\n while ((opTagPos = showdown.helper.regexIndexOf(text, rgx1)) !== -1) {\n\n // if the HTML tag is \\ escaped, we need to escape it and break\n\n\n //2. Split the text in that position\n var subTexts = showdown.helper.splitAtIndex(text, opTagPos),\n //3. Match recursively\n newSubText1 = showdown.helper.replaceRecursiveRegExp(subTexts[1], repFunc, patLeft, patRight, 'im');\n\n // prevent an infinite loop\n if (newSubText1 === subTexts[1]) {\n break;\n }\n text = subTexts[0].concat(newSubText1);\n }\n }\n // HR SPECIAL CASE\n text = text.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n // Special case for standalone HTML comments\n text = showdown.helper.replaceRecursiveRegExp(text, function (txt) {\n return '\\n\\n¨K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n }, '^ {0,3}<!--', '-->', 'gm');\n\n // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n text = text.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n showdown.subParser('hashElement')(text, options, globals));\n\n text = globals.converter._dispatch('hashHTMLBlocks.after', text, options, globals);\n return text;\n});\n","/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashHTMLSpans.before', text, options, globals);\n\n function hashHTMLSpan (html) {\n return '¨C' + (globals.gHtmlSpans.push(html) - 1) + 'C';\n }\n\n // Hash Self Closing tags\n text = text.replace(/<[^>]+?\\/>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags without properties\n text = text.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash tags with properties\n text = text.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n // Hash self closing tags without />\n text = text.replace(/<[^>]+?>/gi, function (wm) {\n return hashHTMLSpan(wm);\n });\n\n /*showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');*/\n\n text = globals.converter._dispatch('hashHTMLSpans.after', text, options, globals);\n return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals);\n\n for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n var repText = globals.gHtmlSpans[i],\n // limiter to prevent infinite loop (assume 10 as limit for recurse)\n limit = 0;\n\n while (/¨C(\\d+)C/.test(repText)) {\n var num = RegExp.$1;\n repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]);\n if (limit === 10) {\n console.error('maximum nesting of 10 spans reached!!!');\n break;\n }\n ++limit;\n }\n text = text.replace('¨C' + i + 'C', repText);\n }\n\n text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals);\n return text;\n});\n","/**\n * Hash and escape <pre><code> elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('hashPreCodeTags.before', text, options, globals);\n\n var repFunc = function (wholeMatch, match, left, right) {\n // encode html entities\n var codeblock = left + showdown.subParser('encodeCode')(match, options, globals) + right;\n return '\\n\\n¨G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n };\n\n // Hash <pre><code>\n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^ {0,3}</code>\\\\s*</pre>', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n","showdown.subParser('headers', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('headers.before', text, options, globals);\n\n var headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n // Set text-style headers:\n //\tHeader 1\n //\t========\n //\n //\tHeader 2\n //\t--------\n //\n setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n text = text.replace(setextRegexH2, function (matchFound, m1) {\n var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n hLevel = headerLevelStart + 1,\n hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n return showdown.subParser('hashBlock')(hashBlock, options, globals);\n });\n\n // atx-style headers:\n // # Header 1\n // ## Header 2\n // ## Header 2 with closing hashes ##\n // ...\n // ###### Header 6\n //\n var atxStyle = (options.requireSpaceBeforeHeadingText) ? /^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm : /^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;\n\n text = text.replace(atxStyle, function (wholeMatch, m1, m2) {\n var hText = m2;\n if (options.customizedHeaderId) {\n hText = m2.replace(/\\s?\\{([^{]+?)}\\s*$/, '');\n }\n\n var span = showdown.subParser('spanGamut')(hText, options, globals),\n hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n hLevel = headerLevelStart - 1 + m1.length,\n header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n return showdown.subParser('hashBlock')(header, options, globals);\n });\n\n function headerId (m) {\n var title,\n prefix;\n\n // It is separate from other options to allow combining prefix and customized\n if (options.customizedHeaderId) {\n var match = m.match(/\\{([^{]+?)}\\s*$/);\n if (match && match[1]) {\n m = match[1];\n }\n }\n\n title = m;\n\n // Prefix id to prevent causing inadvertent pre-existing style matches.\n if (showdown.helper.isString(options.prefixHeaderId)) {\n prefix = options.prefixHeaderId;\n } else if (options.prefixHeaderId === true) {\n prefix = 'section-';\n } else {\n prefix = '';\n }\n\n if (!options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (options.ghCompatibleHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '')\n .replace(/¨T/g, '')\n .replace(/¨D/g, '')\n // replace rest of the chars (&~$ are repeated as they might have been escaped)\n // borrowed from github's redcarpet (some they should produce similar results)\n .replace(/[&+$,\\/:;=?@\"#{}|^¨~\\[\\]`\\\\*)(%.!'<>]/g, '')\n .toLowerCase();\n } else if (options.rawHeaderId) {\n title = title\n .replace(/ /g, '-')\n // replace previously escaped chars (&, ¨ and $)\n .replace(/&/g, '&')\n .replace(/¨T/g, '¨')\n .replace(/¨D/g, '$')\n // replace \" and '\n .replace(/[\"']/g, '-')\n .toLowerCase();\n } else {\n title = title\n .replace(/[^\\w]/g, '')\n .toLowerCase();\n }\n\n if (options.rawPrefixHeaderId) {\n title = prefix + title;\n }\n\n if (globals.hashLinkCounts[title]) {\n title = title + '-' + (globals.hashLinkCounts[title]++);\n } else {\n globals.hashLinkCounts[title] = 1;\n }\n return title;\n }\n\n text = globals.converter._dispatch('headers.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('horizontalRule', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('horizontalRule.before', text, options, globals);\n\n var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n text = text.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm, key);\n text = text.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm, key);\n\n text = globals.converter._dispatch('horizontalRule.after', text, options, globals);\n return text;\n});\n","/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('images.before', text, options, globals);\n\n var inlineRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n crazyRegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,\n base64RegExp = /!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,\n referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[([\\s\\S]*?)]()()()()()/g,\n refShortcutRegExp = /!\\[([^\\[\\]]+)]()()()()()/g;\n\n function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {\n url = url.replace(/\\s/g, '');\n return writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title);\n }\n\n function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n var gUrls = globals.gUrls,\n gTitles = globals.gTitles,\n gDims = globals.gDimensions;\n\n linkId = linkId.toLowerCase();\n\n if (!title) {\n title = '';\n }\n // Special case for explicit empty url\n if (wholeMatch.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m) > -1) {\n url = '';\n\n } else if (url === '' || url === null) {\n if (linkId === '' || linkId === null) {\n // lower-case and turn embedded newlines into spaces\n linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n }\n url = '#' + linkId;\n\n if (!showdown.helper.isUndefined(gUrls[linkId])) {\n url = gUrls[linkId];\n if (!showdown.helper.isUndefined(gTitles[linkId])) {\n title = gTitles[linkId];\n }\n if (!showdown.helper.isUndefined(gDims[linkId])) {\n width = gDims[linkId].width;\n height = gDims[linkId].height;\n }\n } else {\n return wholeMatch;\n }\n }\n\n altText = altText\n .replace(/\"/g, '"')\n //altText = showdown.helper.escapeCharacters(altText, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n //url = showdown.helper.escapeCharacters(url, '*_', false);\n url = url.replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n if (title && showdown.helper.isString(title)) {\n title = title\n .replace(/\"/g, '"')\n //title = showdown.helper.escapeCharacters(title, '*_', false);\n .replace(showdown.helper.regexes.asteriskDashAndColon, showdown.helper.escapeCharactersCallback);\n result += ' title=\"' + title + '\"';\n }\n\n if (width && height) {\n width = (width === '*') ? 'auto' : width;\n height = (height === '*') ? 'auto' : height;\n\n result += ' width=\"' + width + '\"';\n result += ' height=\"' + height + '\"';\n }\n\n result += ' />';\n\n return result;\n }\n\n // First, handle reference-style labeled images: ![alt text][id]\n text = text.replace(referenceRegExp, writeImageTag);\n\n // Next, handle inline images: ![alt text](url =<width>x<height> \"optional title\")\n\n // base64 encoded images\n text = text.replace(base64RegExp, writeImageTagBase64);\n\n // cases with crazy urls like ./image/cat1).png\n text = text.replace(crazyRegExp, writeImageTag);\n\n // normal cases\n text = text.replace(inlineRegExp, writeImageTag);\n\n // handle reference-style shortcuts: ![img text]\n text = text.replace(refShortcutRegExp, writeImageTag);\n\n text = globals.converter._dispatch('images.after', text, options, globals);\n return text;\n});\n","showdown.subParser('italicsAndBold', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n // it's faster to have 3 separate regexes for each case than have just one\n // because of backtracing, in some cases, it could lead to an exponential effect\n // called \"catastrophic backtrace\". Ominous!\n\n function parseInside (txt, left, right) {\n /*\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n */\n return left + txt + right;\n }\n\n // Parse underscores\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong><em>', '</em></strong>');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '<strong>', '</strong>');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '<em>', '</em>');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/_([^\\s_][\\s\\S]*?)_/g, function (wm, m) {\n // !/^_[^_]/.test(m) - test if it doesn't start with __ (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n // Now parse asterisks\n if (options.literalMidWordAsterisks) {\n text = text.replace(/([^*]|^)\\B\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong><em>', '</em></strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<strong>', '</strong>');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '<em>', '</em>');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong><em>', '</em></strong>') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '<strong>', '</strong>') : wm;\n });\n text = text.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g, function (wm, m) {\n // !/^\\*[^*]/.test(m) - test if it doesn't start with ** (since it seems redundant, we removed it)\n return (/\\S$/.test(m)) ? parseInside (m, '<em>', '</em>') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n","/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n 'use strict';\n\n /**\n * Process the contents of a single ordered or unordered list, splitting it\n * into individual list items.\n * @param {string} listStr\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function processListItems (listStr, trimTrailing) {\n // The $g_list_level global keeps track of when we're inside a list.\n // Each time we enter a list, we increment it; when we leave a list,\n // we decrement. If it's zero, we're not in a list anymore.\n //\n // We do this because when we're not inside a list, we want to treat\n // something like this:\n //\n // I recommend upgrading to version\n // 8. Oops, now this line is treated\n // as a sub-list.\n //\n // As a single paragraph, despite the fact that the second line starts\n // with a digit-period-space sequence.\n //\n // Whereas when we're inside a list (or sub-list), that line will be\n // treated as the start of a sub-list. What a kludge, huh? This is\n // an aspect of Markdown's syntax that's hard to parse perfectly\n // without resorting to mind-reading. Perhaps the solution is to\n // change the syntax rules such that sub-lists must start with a\n // starting cardinal number; e.g. \"1.\" or \"a.\".\n globals.gListLevel++;\n\n // trim trailing blank lines:\n listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n // attacklab: add sentinel to emulate \\z\n listStr += '¨0';\n\n var rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,\n isParagraphed = (/\\n[ \\t]*\\n(?!¨0)/.test(listStr));\n\n // Since version 1.5, nesting sublists requires 4 spaces (or 1 tab) indentation,\n // which is a syntax breaking change\n // activating this option reverts to old behavior\n if (options.disableForced4SpacesIndentedSublists) {\n rgx = /(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(¨0|\\2([*+-]|\\d+[.])[ \\t]+))/gm;\n }\n\n listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n checked = (checked && checked.trim() !== '');\n\n var item = showdown.subParser('outdent')(m4, options, globals),\n bulletStyle = '';\n\n // Support for github tasklists\n if (taskbtn && options.tasklists) {\n bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n if (checked) {\n otp += ' checked';\n }\n otp += '>';\n return otp;\n });\n }\n\n // ISSUE #312\n // This input: - - - a\n // causes trouble to the parser, since it interprets it as:\n // <ul><li><li><li>a</li></li></li></ul>\n // instead of:\n // <ul><li>- - a</li></ul>\n // So, to prevent it, we will put a marker (¨A)in the beginning of the line\n // Kind of hackish/monkey patching, but seems more effective than overcomplicating the list parser\n item = item.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g, function (wm2) {\n return '¨A' + wm2;\n });\n\n // m1 - Leading line or\n // Has a double return (multi paragraph) or\n // Has sublist\n if (m1 || (item.search(/\\n{2,}/) > -1)) {\n item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n item = showdown.subParser('blockGamut')(item, options, globals);\n } else {\n // Recursion for sub-lists:\n item = showdown.subParser('lists')(item, options, globals);\n item = item.replace(/\\n$/, ''); // chomp(item)\n item = showdown.subParser('hashHTMLBlocks')(item, options, globals);\n\n // Colapse double linebreaks\n item = item.replace(/\\n\\n+/g, '\\n\\n');\n if (isParagraphed) {\n item = showdown.subParser('paragraphs')(item, options, globals);\n } else {\n item = showdown.subParser('spanGamut')(item, options, globals);\n }\n }\n\n // now we need to remove the marker (¨A)\n item = item.replace('¨A', '');\n // we can finally wrap the line in list item tags\n item = '<li' + bulletStyle + '>' + item + '</li>\\n';\n\n return item;\n });\n\n // attacklab: strip sentinel\n listStr = listStr.replace(/¨0/g, '');\n\n globals.gListLevel--;\n\n if (trimTrailing) {\n listStr = listStr.replace(/\\s+$/, '');\n }\n\n return listStr;\n }\n\n function styleStartNumber (list, listType) {\n // check if ol and starts by a number different than 1\n if (listType === 'ol') {\n var res = list.match(/^ *(\\d+)\\./);\n if (res && res[1] !== '1') {\n return ' start=\"' + res[1] + '\"';\n }\n }\n return '';\n }\n\n /**\n * Check and parse consecutive lists (better fix for issue #142)\n * @param {string} list\n * @param {string} listType\n * @param {boolean} trimTrailing\n * @returns {string}\n */\n function parseConsecutiveLists (list, listType, trimTrailing) {\n // check if we caught 2 or more consecutive lists by mistake\n // we use the counterRgx, meaning if listType is UL we look for OL and vice versa\n var olRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?\\d+\\.[ \\t]/gm : /^ {0,3}\\d+\\.[ \\t]/gm,\n ulRgx = (options.disableForced4SpacesIndentedSublists) ? /^ ?[*+-][ \\t]/gm : /^ {0,3}[*+-][ \\t]/gm,\n counterRxg = (listType === 'ul') ? olRgx : ulRgx,\n result = '';\n\n if (list.search(counterRxg) !== -1) {\n (function parseCL (txt) {\n var pos = txt.search(counterRxg),\n style = styleStartNumber(list, listType);\n if (pos !== -1) {\n // slice\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n';\n\n // invert counterType and listType\n listType = (listType === 'ul') ? 'ol' : 'ul';\n counterRxg = (listType === 'ul') ? olRgx : ulRgx;\n\n //recurse\n parseCL(txt.slice(pos));\n } else {\n result += '\\n\\n<' + listType + style + '>\\n' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n';\n }\n\n return result;\n }\n\n /** Start of list parsing **/\n text = globals.converter._dispatch('lists.before', text, options, globals);\n // add sentinel to hack around khtml/safari bug:\n // http://bugs.webkit.org/show_bug.cgi?id=11231\n text += '¨0';\n\n if (globals.gListLevel) {\n text = text.replace(/^(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, list, m2) {\n var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, true);\n }\n );\n } else {\n text = text.replace(/(\\n\\n|^\\n?)(( {0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(¨0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm,\n function (wholeMatch, m1, list, m3) {\n var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n return parseConsecutiveLists(list, listType, false);\n }\n );\n }\n\n // strip sentinel\n text = text.replace(/¨0/, '');\n text = globals.converter._dispatch('lists.after', text, options, globals);\n return text;\n});\n","/**\n * Parse metadata at the top of the document\n */\nshowdown.subParser('metadata', function (text, options, globals) {\n 'use strict';\n\n if (!options.metadata) {\n return text;\n }\n\n text = globals.converter._dispatch('metadata.before', text, options, globals);\n\n function parseMetadataContents (content) {\n // raw is raw so it's not changed in any way\n globals.metadata.raw = content;\n\n // escape chars forbidden in html attributes\n // double quotes\n content = content\n // ampersand first\n .replace(/&/g, '&')\n // double quotes\n .replace(/\"/g, '"');\n\n content = content.replace(/\\n {4}/g, ' ');\n content.replace(/^([\\S ]+): +([\\s\\S]+?)$/gm, function (wm, key, value) {\n globals.metadata.parsed[key] = value;\n return '';\n });\n }\n\n text = text.replace(/^\\s*«««+(\\S*?)\\n([\\s\\S]+?)\\n»»»+\\n/, function (wholematch, format, content) {\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/^\\s*---+(\\S*?)\\n([\\s\\S]+?)\\n---+\\n/, function (wholematch, format, content) {\n if (format) {\n globals.metadata.format = format;\n }\n parseMetadataContents(content);\n return '¨M';\n });\n\n text = text.replace(/¨M/g, '');\n\n text = globals.converter._dispatch('metadata.after', text, options, globals);\n return text;\n});\n","/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('outdent.before', text, options, globals);\n\n // attacklab: hack around Konqueror 3.5.4 bug:\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n text = text.replace(/^(\\t|[ ]{1,4})/gm, '¨0'); // attacklab: g_tab_width\n\n // attacklab: clean up hack\n text = text.replace(/¨0/g, '');\n\n text = globals.converter._dispatch('outdent.after', text, options, globals);\n return text;\n});\n","/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n\n var grafs = text.split(/\\n{2,}/g),\n grafsOut = [],\n end = grafs.length; // Wrap <p> tags\n\n for (var i = 0; i < end; i++) {\n var str = grafs[i];\n // if this is an HTML marker, copy it\n if (str.search(/¨(K|G)(\\d+)\\1/g) >= 0) {\n grafsOut.push(str);\n\n // test for presence of characters to prevent empty lines being parsed\n // as paragraphs (resulting in undesired extra empty paragraphs)\n } else if (str.search(/\\S/) >= 0) {\n str = showdown.subParser('spanGamut')(str, options, globals);\n str = str.replace(/^([ \\t]*)/g, '<p>');\n str += '</p>';\n grafsOut.push(str);\n }\n }\n\n /** Unhashify HTML blocks */\n end = grafsOut.length;\n for (i = 0; i < end; i++) {\n var blockText = '',\n grafsOutIt = grafsOut[i],\n codeFlag = false;\n // if this is a marker for an html block...\n // use RegExp.test instead of string.search because of QML bug\n while (/¨(K|G)(\\d+)\\1/.test(grafsOutIt)) {\n var delim = RegExp.$1,\n num = RegExp.$2;\n\n if (delim === 'K') {\n blockText = globals.gHtmlBlocks[num];\n } else {\n // we need to check if ghBlock is a false positive\n if (codeFlag) {\n // use encoded version of all text\n blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text, options, globals);\n } else {\n blockText = globals.ghCodeBlocks[num].codeblock;\n }\n }\n blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n grafsOutIt = grafsOutIt.replace(/(\\n\\n)?¨(K|G)\\d+\\2(\\n\\n)?/, blockText);\n // Check if grafsOutIt is a pre->code\n if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n codeFlag = true;\n }\n }\n grafsOut[i] = grafsOutIt;\n }\n text = grafsOut.join('\\n');\n // Strip leading and trailing lines:\n text = text.replace(/^\\n+/g, '');\n text = text.replace(/\\n+$/g, '');\n return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n","/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n 'use strict';\n\n if (ext.filter) {\n text = ext.filter(text, globals.converter, options);\n\n } else if (ext.regex) {\n // TODO remove this when old extension loading mechanism is deprecated\n var re = ext.regex;\n if (!(re instanceof RegExp)) {\n re = new RegExp(re, 'g');\n }\n text = text.replace(re, ext.replace);\n }\n\n return text;\n});\n","/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n 'use strict';\n\n text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n text = showdown.subParser('codeSpans')(text, options, globals);\n text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n // Process anchor and image tags. Images must come first,\n // because ![foo][f] looks like an anchor.\n text = showdown.subParser('images')(text, options, globals);\n text = showdown.subParser('anchors')(text, options, globals);\n\n // Make links out of things like `<http://example.com/>`\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this](<url>).\n text = showdown.subParser('autoLinks')(text, options, globals);\n text = showdown.subParser('simplifiedAutoLinks')(text, options, globals);\n text = showdown.subParser('emoji')(text, options, globals);\n text = showdown.subParser('underline')(text, options, globals);\n text = showdown.subParser('italicsAndBold')(text, options, globals);\n text = showdown.subParser('strikethrough')(text, options, globals);\n text = showdown.subParser('ellipsis')(text, options, globals);\n\n // we need to hash HTML tags inside spans\n text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n\n // now we encode amps and angles\n text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n\n // Do hard breaks\n if (options.simpleLineBreaks) {\n // GFM style hard breaks\n // only add line breaks if the text does not contain a block (special case for lists)\n if (!/\\n\\n¨K/.test(text)) {\n text = text.replace(/\\n+/g, '<br />\\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '<br />\\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n","showdown.subParser('strikethrough', function (text, options, globals) {\n 'use strict';\n\n function parseInside (txt) {\n if (options.simplifiedAutoLink) {\n txt = showdown.subParser('simplifiedAutoLinks')(txt, options, globals);\n }\n return '<del>' + txt + '</del>';\n }\n\n if (options.strikethrough) {\n text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n text = text.replace(/(?:~){2}([\\s\\S]+?)(?:~){2}/g, function (wm, txt) { return parseInside(txt); });\n text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n }\n\n return text;\n});\n","/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n 'use strict';\n\n var regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?([^>\\s]+)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=¨0))/gm,\n base64Regex = /^ {0,3}\\[([^\\]]+)]:[ \\t]*\\n?[ \\t]*<?(data:.+?\\/.+?;base64,[A-Za-z0-9+/=\\n]+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n\\n|(?=¨0)|(?=\\n\\[))/gm;\n\n // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n text += '¨0';\n\n var replaceFunc = function (wholeMatch, linkId, url, width, height, blankLines, title) {\n\n // if there aren't two instances of linkId it must not be a reference link so back out\n linkId = linkId.toLowerCase();\n if (text.toLowerCase().split(linkId).length - 1 < 2) {\n return wholeMatch;\n }\n if (url.match(/^data:.+?\\/.+?;base64,/)) {\n // remove newlines\n globals.gUrls[linkId] = url.replace(/\\s/g, '');\n } else {\n globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url, options, globals); // Link IDs are case-insensitive\n }\n\n if (blankLines) {\n // Oops, found blank lines, so it's not a title.\n // Put back the parenthetical statement we stole.\n return blankLines + title;\n\n } else {\n if (title) {\n globals.gTitles[linkId] = title.replace(/\"|'/g, '"');\n }\n if (options.parseImgDimensions && width && height) {\n globals.gDimensions[linkId] = {\n width: width,\n height: height\n };\n }\n }\n // Completely remove the definition from the text\n return '';\n };\n\n // first we try to find base64 link references\n text = text.replace(base64Regex, replaceFunc);\n\n text = text.replace(regex, replaceFunc);\n\n // attacklab: strip sentinel\n text = text.replace(/¨0/, '');\n\n return text;\n});\n","showdown.subParser('tables', function (text, options, globals) {\n 'use strict';\n\n if (!options.tables) {\n return text;\n }\n\n var tableRgx = /^ {0,3}\\|?.+\\|.+\\n {0,3}\\|?[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[\\s\\S]+?(?:\\n\\n|¨0)/gm,\n //singeColTblRgx = /^ {0,3}\\|.+\\|\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n(?: {0,3}\\|.+\\|\\n)+(?:\\n\\n|¨0)/gm;\n singeColTblRgx = /^ {0,3}\\|.+\\|[ \\t]*\\n {0,3}\\|[ \\t]*:?[ \\t]*(?:[-=]){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*\\n( {0,3}\\|.+\\|[ \\t]*\\n)*(?:\\n|¨0)/gm;\n\n function parseStyles (sLine) {\n if (/^:[ \\t]*--*$/.test(sLine)) {\n return ' style=\"text-align:left;\"';\n } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n return ' style=\"text-align:right;\"';\n } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n return ' style=\"text-align:center;\"';\n } else {\n return '';\n }\n }\n\n function parseHeaders (header, style) {\n var id = '';\n header = header.trim();\n // support both tablesHeaderId and tableHeaderId due to error in documentation so we don't break backwards compatibility\n if (options.tablesHeaderId || options.tableHeaderId) {\n id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n }\n header = showdown.subParser('spanGamut')(header, options, globals);\n\n return '<th' + id + style + '>' + header + '</th>\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '<td' + style + '>' + subText + '</td>\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '<table>\\n<thead>\\n<tr>\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '<tr>\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '</tr>\\n';\n }\n tb += '</tbody>\\n</table>\\n';\n return tb;\n }\n\n function parseTable (rawTable) {\n var i, tableLines = rawTable.split('\\n');\n\n for (i = 0; i < tableLines.length; ++i) {\n // strip wrong first and last column if wrapped tables are used\n if (/^ {0,3}\\|/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/^ {0,3}\\|/, '');\n }\n if (/\\|[ \\t]*$/.test(tableLines[i])) {\n tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n }\n // parse code spans first, but we only support one line code spans\n tableLines[i] = showdown.subParser('codeSpans')(tableLines[i], options, globals);\n }\n\n var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n rawCells = [],\n headers = [],\n styles = [],\n cells = [];\n\n tableLines.shift();\n tableLines.shift();\n\n for (i = 0; i < tableLines.length; ++i) {\n if (tableLines[i].trim() === '') {\n continue;\n }\n rawCells.push(\n tableLines[i]\n .split('|')\n .map(function (s) {\n return s.trim();\n })\n );\n }\n\n if (rawHeaders.length < rawStyles.length) {\n return rawTable;\n }\n\n for (i = 0; i < rawStyles.length; ++i) {\n styles.push(parseStyles(rawStyles[i]));\n }\n\n for (i = 0; i < rawHeaders.length; ++i) {\n if (showdown.helper.isUndefined(styles[i])) {\n styles[i] = '';\n }\n headers.push(parseHeaders(rawHeaders[i], styles[i]));\n }\n\n for (i = 0; i < rawCells.length; ++i) {\n var row = [];\n for (var ii = 0; ii < headers.length; ++ii) {\n if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n }\n row.push(parseCells(rawCells[i][ii], styles[ii]));\n }\n cells.push(row);\n }\n\n return buildTable(headers, cells);\n }\n\n text = globals.converter._dispatch('tables.before', text, options, globals);\n\n // find escaped pipe characters\n text = text.replace(/\\\\(\\|)/g, showdown.helper.escapeCharactersCallback);\n\n // parse multi column tables\n text = text.replace(tableRgx, parseTable);\n\n // parse one column tables\n text = text.replace(singeColTblRgx, parseTable);\n\n text = globals.converter._dispatch('tables.after', text, options, globals);\n\n return text;\n});\n","showdown.subParser('underline', function (text, options, globals) {\n 'use strict';\n\n if (!options.underline) {\n return text;\n }\n\n text = globals.converter._dispatch('underline.before', text, options, globals);\n\n if (options.literalMidWordUnderscores) {\n text = text.replace(/\\b___(\\S[\\s\\S]*?)___\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '<u>' + txt + '</u>';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '<u>' + m + '</u>' : wm;\n });\n }\n\n // escape remaining underscores to prevent them being parsed by italic and bold\n text = text.replace(/(_)/g, showdown.helper.escapeCharactersCallback);\n\n text = globals.converter._dispatch('underline.after', text, options, globals);\n\n return text;\n});\n","/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text, options, globals) {\n 'use strict';\n text = globals.converter._dispatch('unescapeSpecialChars.before', text, options, globals);\n\n text = text.replace(/¨E(\\d+)E/g, function (wholeMatch, m1) {\n var charCodeToReplace = parseInt(m1);\n return String.fromCharCode(charCodeToReplace);\n });\n\n text = globals.converter._dispatch('unescapeSpecialChars.after', text, options, globals);\n return text;\n});\n","showdown.subParser('makeMarkdown.blockquote', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n var innerTxt = showdown.subParser('makeMarkdown.node')(children[i], globals);\n\n if (innerTxt === '') {\n continue;\n }\n txt += innerTxt;\n }\n }\n // cleanup\n txt = txt.trim();\n txt = '> ' + txt.split('\\n').join('\\n> ');\n return txt;\n});\n","showdown.subParser('makeMarkdown.codeBlock', function (node, globals) {\n 'use strict';\n\n var lang = node.getAttribute('language'),\n num = node.getAttribute('precodenum');\n return '```' + lang + '\\n' + globals.preList[num] + '\\n```';\n});\n","showdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n","showdown.subParser('makeMarkdown.emphasis', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '*';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '*';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.header', function (node, globals, headerLevel) {\n 'use strict';\n\n var headerMark = new Array(headerLevel + 1).join('#'),\n txt = '';\n\n if (node.hasChildNodes()) {\n txt = headerMark + ' ';\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n","showdown.subParser('makeMarkdown.image', function (node) {\n 'use strict';\n\n var txt = '';\n if (node.hasAttribute('src')) {\n txt += '![' + node.getAttribute('alt') + '](';\n txt += '<' + node.getAttribute('src') + '>';\n if (node.hasAttribute('width') && node.hasAttribute('height')) {\n txt += ' =' + node.getAttribute('width') + 'x' + node.getAttribute('height');\n }\n\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.links', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes() && node.hasAttribute('href')) {\n var children = node.childNodes,\n childrenLength = children.length;\n txt = '[';\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '](';\n txt += '<' + node.getAttribute('href') + '>';\n if (node.hasAttribute('title')) {\n txt += ' \"' + node.getAttribute('title') + '\"';\n }\n txt += ')';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.list', function (node, globals, type) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var listItems = node.childNodes,\n listItemsLenght = listItems.length,\n listNum = node.getAttribute('start') || 1;\n\n for (var i = 0; i < listItemsLenght; ++i) {\n if (typeof listItems[i].tagName === 'undefined' || listItems[i].tagName.toLowerCase() !== 'li') {\n continue;\n }\n\n // define the bullet to use in list\n var bullet = '';\n if (type === 'ol') {\n bullet = listNum.toString() + '. ';\n } else {\n bullet = '- ';\n }\n\n // parse list item\n txt += bullet + showdown.subParser('makeMarkdown.listItem')(listItems[i], globals);\n ++listNum;\n }\n\n // add comment at the end to prevent consecutive lists to be parsed as one\n txt += '\\n<!-- -->\\n';\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.listItem', function (node, globals) {\n 'use strict';\n\n var listItemTxt = '';\n\n var children = node.childNodes,\n childrenLenght = children.length;\n\n for (var i = 0; i < childrenLenght; ++i) {\n listItemTxt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n // if it's only one liner, we need to add a newline at the end\n if (!/\\n$/.test(listItemTxt)) {\n listItemTxt += '\\n';\n } else {\n // it's multiparagraph, so we need to indent\n listItemTxt = listItemTxt\n .split('\\n')\n .join('\\n ')\n .replace(/^ {4}$/gm, '')\n .replace(/\\n\\n+/g, '\\n\\n');\n }\n\n return listItemTxt;\n});\n","\n\nshowdown.subParser('makeMarkdown.node', function (node, globals, spansOnly) {\n 'use strict';\n\n spansOnly = spansOnly || false;\n\n var txt = '';\n\n // edge case of text without wrapper paragraph\n if (node.nodeType === 3) {\n return showdown.subParser('makeMarkdown.txt')(node, globals);\n }\n\n // HTML comment\n if (node.nodeType === 8) {\n return '<!--' + node.data + '-->\\n\\n';\n }\n\n // process only node elements\n if (node.nodeType !== 1) {\n return '';\n }\n\n var tagName = node.tagName.toLowerCase();\n\n switch (tagName) {\n\n //\n // BLOCKS\n //\n case 'h1':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 1) + '\\n\\n'; }\n break;\n case 'h2':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 2) + '\\n\\n'; }\n break;\n case 'h3':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 3) + '\\n\\n'; }\n break;\n case 'h4':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 4) + '\\n\\n'; }\n break;\n case 'h5':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 5) + '\\n\\n'; }\n break;\n case 'h6':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.header')(node, globals, 6) + '\\n\\n'; }\n break;\n\n case 'p':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.paragraph')(node, globals) + '\\n\\n'; }\n break;\n\n case 'blockquote':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.blockquote')(node, globals) + '\\n\\n'; }\n break;\n\n case 'hr':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.hr')(node, globals) + '\\n\\n'; }\n break;\n\n case 'ol':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ol') + '\\n\\n'; }\n break;\n\n case 'ul':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.list')(node, globals, 'ul') + '\\n\\n'; }\n break;\n\n case 'precode':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.codeBlock')(node, globals) + '\\n\\n'; }\n break;\n\n case 'pre':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.pre')(node, globals) + '\\n\\n'; }\n break;\n\n case 'table':\n if (!spansOnly) { txt = showdown.subParser('makeMarkdown.table')(node, globals) + '\\n\\n'; }\n break;\n\n //\n // SPANS\n //\n case 'code':\n txt = showdown.subParser('makeMarkdown.codeSpan')(node, globals);\n break;\n\n case 'em':\n case 'i':\n txt = showdown.subParser('makeMarkdown.emphasis')(node, globals);\n break;\n\n case 'strong':\n case 'b':\n txt = showdown.subParser('makeMarkdown.strong')(node, globals);\n break;\n\n case 'del':\n txt = showdown.subParser('makeMarkdown.strikethrough')(node, globals);\n break;\n\n case 'a':\n txt = showdown.subParser('makeMarkdown.links')(node, globals);\n break;\n\n case 'img':\n txt = showdown.subParser('makeMarkdown.image')(node, globals);\n break;\n\n default:\n txt = node.outerHTML + '\\n\\n';\n }\n\n // common normalization\n // TODO eventually\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.paragraph', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n }\n\n // some text normalization\n txt = txt.trim();\n\n return txt;\n});\n","showdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '<pre>' + globals.preList[num] + '</pre>';\n});\n","showdown.subParser('makeMarkdown.strikethrough', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '~~';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '~~';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.strong', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (node.hasChildNodes()) {\n txt += '**';\n var children = node.childNodes,\n childrenLength = children.length;\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals);\n }\n txt += '**';\n }\n return txt;\n});\n","showdown.subParser('makeMarkdown.table', function (node, globals) {\n 'use strict';\n\n var txt = '',\n tableArray = [[], []],\n headings = node.querySelectorAll('thead>tr>th'),\n rows = node.querySelectorAll('tbody>tr'),\n i, ii;\n for (i = 0; i < headings.length; ++i) {\n var headContent = showdown.subParser('makeMarkdown.tableCell')(headings[i], globals),\n allign = '---';\n\n if (headings[i].hasAttribute('style')) {\n var style = headings[i].getAttribute('style').toLowerCase().replace(/\\s/g, '');\n switch (style) {\n case 'text-align:left;':\n allign = ':---';\n break;\n case 'text-align:right;':\n allign = '---:';\n break;\n case 'text-align:center;':\n allign = ':---:';\n break;\n }\n }\n tableArray[0][i] = headContent.trim();\n tableArray[1][i] = allign;\n }\n\n for (i = 0; i < rows.length; ++i) {\n var r = tableArray.push([]) - 1,\n cols = rows[i].getElementsByTagName('td');\n\n for (ii = 0; ii < headings.length; ++ii) {\n var cellContent = ' ';\n if (typeof cols[ii] !== 'undefined') {\n cellContent = showdown.subParser('makeMarkdown.tableCell')(cols[ii], globals);\n }\n tableArray[r].push(cellContent);\n }\n }\n\n var cellSpacesCount = 3;\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n var strLen = tableArray[i][ii].length;\n if (strLen > cellSpacesCount) {\n cellSpacesCount = strLen;\n }\n }\n }\n\n for (i = 0; i < tableArray.length; ++i) {\n for (ii = 0; ii < tableArray[i].length; ++ii) {\n if (i === 1) {\n if (tableArray[i][ii].slice(-1) === ':') {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii].slice(-1), cellSpacesCount - 1, '-') + ':';\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount, '-');\n }\n } else {\n tableArray[i][ii] = showdown.helper.padEnd(tableArray[i][ii], cellSpacesCount);\n }\n }\n txt += '| ' + tableArray[i].join(' | ') + ' |\\n';\n }\n\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.tableCell', function (node, globals) {\n 'use strict';\n\n var txt = '';\n if (!node.hasChildNodes()) {\n return '';\n }\n var children = node.childNodes,\n childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; ++i) {\n txt += showdown.subParser('makeMarkdown.node')(children[i], globals, true);\n }\n return txt.trim();\n});\n","showdown.subParser('makeMarkdown.txt', function (node) {\n 'use strict';\n\n var txt = node.nodeValue;\n\n // multiple spaces are collapsed\n txt = txt.replace(/ +/g, ' ');\n\n // replace the custom ¨NBSP; with a space\n txt = txt.replace(/¨NBSP;/g, ' ');\n\n // \", <, > and & should replace escaped html entities\n txt = showdown.helper.unescapeHTMLEntities(txt);\n\n // escape markdown magic characters\n // emphasis, strong and strikethrough - can appear everywhere\n // we also escape pipe (|) because of tables\n // and escape ` because of code blocks and spans\n txt = txt.replace(/([*_~|`])/g, '\\\\$1');\n\n // escape > because of blockquotes\n txt = txt.replace(/^(\\s*)>/g, '\\\\$1>');\n\n // hash character, only troublesome at the beginning of a line because of headers\n txt = txt.replace(/^#/gm, '\\\\#');\n\n // horizontal rules\n txt = txt.replace(/^(\\s*)([-=]{3,})(\\s*)$/, '$1\\\\$2$3');\n\n // dot, because of ordered lists, only troublesome at the beginning of a line when preceded by an integer\n txt = txt.replace(/^( {0,3}\\d+)\\./gm, '$1\\\\.');\n\n // +, * and -, at the beginning of a line becomes a list, so we need to escape them also (asterisk was already escaped)\n txt = txt.replace(/^( {0,3})([+-])/gm, '$1\\\\$2');\n\n // images and links, ] followed by ( is problematic, so we escape it\n txt = txt.replace(/]([\\s]*)\\(/g, '\\\\]$1\\\\(');\n\n // reference URIs must also be escaped\n txt = txt.replace(/^ {0,3}\\[([\\S \\t]*?)]:/gm, '\\\\[$1]:');\n\n return txt;\n});\n","var root = this;\n\n// AMD Loader\nif (typeof define === 'function' && define.amd) {\n define(function () {\n 'use strict';\n return showdown;\n });\n\n// CommonJS/nodeJS Loader\n} else if (typeof module !== 'undefined' && module.exports) {\n module.exports = showdown;\n\n// Regular Browser loader\n} else {\n root.showdown = showdown;\n}\n","import showdown from \"showdown\";\nimport fs from \"node:fs\";\nimport htmlTemplate from \"./postTemp.js\";\nimport ShowdownMathjax from \"showdown-mathjax\";\nimport showdownPrism from \"showdown-prism\";\nimport frontmatter from \"./frontmatter.js\";\n/**\n * Convert markdown file to HTML content.\n * ----------\n *\n * ***Base on Showndown JS and TeX, LaTeX, MathMl, Prism JS are support.***\n *\n * @example\n * const converter = new Converter(_PATH_TO_MARKDOWN_FILE);\n *\n *\n *\n * @return\n * - json : {data: *frontmatter*, content: markdown content(before convert)}\n * - data : frontmatter , default date and title\n * - content : markdown content(before convert)\n * - postTitle : Title of post from data(frontmatter)\n * - postDate : Posted date from data(frontmatter)\n * - lastUpdatedDate : Last updated date of content\n * - readingTime : Reading time of content\n * - convertedContent : Converted content.\n * - postHtml : HTML with convertedContent , postTitle ,\n * postDate , lastUpdatedDate , readingTime\n * (for blog post)\n * - pageHtml : HTML with only convertedContent for page\n *\n */\nclass Converter {\n filePath: string;\n /**\n * Creates an instance of the Converter class.\n *\n * @param {string} filePath - The path of the file to be converted.\n */\n constructor(filePath: string) {\n this.filePath = filePath;\n }\n /**\n * Formats a given date string into a specific format.\n * @param date - The date string to be formatted.\n * @returns The formatted date string in the format \"Weekday, Day Month Year\". For example, \"Sat, 01 Jan 2022\".\n */\n formatDate(date: string): string {\n return new Date(date).toLocaleString(\"en-US\", {\n weekday: \"short\",\n day: \"numeric\",\n month: \"short\",\n year: \"numeric\",\n });\n }\n\n /**\n * Calculates the estimated reading time of a given text.\n *\n * @param {string} text - The text to calculate the reading time for.\n * @return {number} The estimated reading time in minutes.\n */\n readTime(text: string): number {\n const wpm = 225;\n const words = text.trim().split(/\\s+/).length;\n return Math.ceil(words / wpm);\n }\n\n /**\n * Retrieves the last update time of a file.\n *\n * @return {string} The last modified time of the file in ISO string format.\n */\n lastUpdate(): string {\n const stats = fs.statSync(this.filePath);\n const lastModifiedTime = stats.mtime.toISOString();\n return lastModifiedTime;\n }\n\n /**\n * Initializes and configures a showdown.Converter object with specific options and flavor.\n * @returns {showdown.Converter} The initialized converter object.\n */\n convert(): showdown.Converter {\n const converter = new showdown.Converter({\n parseImgDimensions: true,\n simplifiedAutoLink: true,\n strikethrough: true,\n tables: true,\n tasklists: true,\n openLinksInNewWindow: true,\n emoji: true,\n moreStyling: true,\n extensions: [ShowdownMathjax, showdownPrism],\n });\n\n converter.setFlavor(\"github\");\n return converter;\n }\n\n /**\n * Retrieves the content of the file using frontmatter.\n *\n * @return {any} The frontmatter content of the file.\n */\n filecontent(): any {\n try {\n return frontmatter(this.filePath);\n } catch (error) {\n console.error(\"Error reading or parsing file:\", error);\n return null; // Or handle error as appropriate\n }\n }\n\n /**\n * Retrieves the data from the frontmatter of the file at the specified file path.\n *\n * @return {any} The data retrieved from the frontmatter of the file.\n */\n get data(): any {\n return frontmatter(this.filePath).data;\n }\n /**\n * Retrieves the content from the frontmatter of the file at the specified file path.\n *\n * @return {any} The content retrieved from the frontmatter of the file.\n */\n get content(): any {\n return frontmatter(this.filePath).content;\n }\n /**\n * Retrieves the post title from the data object.\n *\n * @return {any} The post title.\n */\n get postTitle(): any {\n return this.data.title;\n }\n /**\n * Retrieves the post date from the data object.\n *\n * @return {any} The post date.\n */\n get postDate(): any {\n return this.formatDate(this.data.date);\n }\n /**\n * Retrieves the last updated date of the content.\n *\n * @return {string} The formatted last updated date string.\n */\n get lastUpdatedDate(): string {\n const a = this.formatDate(this.lastUpdate());\n return `<small>Last Update : ${a}</small>`;\n }\n /**\n * Calculates the estimated reading time of the content and returns it as a formatted string.\n *\n * @return {string} The formatted string representing the reading time.\n */\n get readingTime(): string {\n const a = this.readTime(this.content);\n return `<small>Reading Time : ${a} minutes</small>`;\n }\n /**\n * Returns a JSON string representation of the file content.\n *\n * @return {string} The JSON string representation of the file content.\n */\n get json(): string {\n return JSON.stringify(this.filecontent());\n }\n /**\n * Returns the converted content of the object as a string.\n *\n * @return {string} The converted content as a string.\n */\n get convertedContent(): string {\n return this.convert().makeHtml(this.content);\n }\n\n /**\n * Retrieves the post HTML content with converted content, title, date, reading time, and last update.\n *\n * @return {string} The post HTML content.\n */\n get postHtml(): string {\n return htmlTemplate({\n postContent: this.convertedContent,\n postTitle: this.postTitle,\n postDate: this.postDate,\n readingTime: this.readingTime,\n lastUpdate: this.lastUpdatedDate,\n });\n }\n\n /**\n * Retrieves the page HTML content with converted content, title, date, reading time, and last update.\n *\n * @return {string} The page HTML content.\n */\n get pageHtml(): string {\n return htmlTemplate({\n postContent: this.convertedContent,\n postTitle: \"\",\n postDate: \"\",\n readingTime: \"\",\n lastUpdate: \"\",\n });\n }\n}\n\nexport default Converter;\n","export type Temprops = {\n postContent: string;\n postTitle: string;\n postDate: string;\n readingTime: string;\n lastUpdate: string;\n};\n/**\n * Generates an HTML template with the provided post content, title, date, reading time, and last update.\n *\n * @param {Temprops} props - An object containing the post content, title, date, reading time, and last update.\n * @param {string} props.postContent - The content of the post.\n * @param {string} props.postTitle - The title of the post.\n * @param {string} props.postDate - The date of the post.\n * @param {string} props.readingTime - The reading time of the post.\n * @param {string} props.lastUpdate - The last update date of the post.\n * @return {string} The generated HTML template.\n */\nconst htmlTemplate = ({\n postContent,\n postTitle,\n postDate,\n readingTime,\n lastUpdate,\n}: Temprops): string => {\n const pc = postContent === undefined ? console.error(\"Error\") : postContent;\n const tt = postTitle === undefined ? \"\" : postTitle;\n const dat = postDate === undefined ? \"\" : postDate;\n const rt = readingTime === undefined ? \"\" : readingTime;\n const lud = lastUpdate === undefined ? \"\" : lastUpdate;\n const html = /* html */ `\n <div id=\"mm-mark\">\n <h2>${tt}</h2>\n <small>${dat}</small>\n ${rt}\n <div>${pc}</div>\n ${lud}\n </div>\n \n `;\n return html;\n};\n\nexport default htmlTemplate;\n","\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\n\nvar common = {\n\tisNothing: isNothing_1,\n\tisObject: isObject_1,\n\ttoArray: toArray_1,\n\trepeat: repeat_1,\n\tisNegativeZero: isNegativeZero_1,\n\textend: extend_1\n};\n\n// YAML error class. http://stackoverflow.com/questions/8458984\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException$1(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\n\n\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nvar exception = YAMLException$1;\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nvar snippet = makeSnippet;\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type$1(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nvar type = Type$1;\n\n/*eslint-disable max-len*/\n\n\n\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\n\n\nSchema$1.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new exception('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type$1.loadKind && type$1.loadKind !== 'scalar') {\n throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type$1.multi) {\n throw new exception('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema$1.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nvar schema = Schema$1;\n\nvar str = new type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n\nvar seq = new type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n\nvar map = new type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nvar _null = new type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nvar bool = new type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nvar int = new type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nvar float = new type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\n\nvar core = json;\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nvar timestamp = new type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nvar merge = new type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n\n/*eslint-disable no-bitwise*/\n\n\n\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nvar binary = new type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString$2.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nvar omap = new type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n\nvar _toString$1 = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString$1.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nvar pairs = new type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nvar set = new type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\n\n/*eslint-disable max-len,no-use-before-define*/\n\n\n\n\n\n\n\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State$1(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || _default;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = snippet(mark);\n\n return new exception(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty$1.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty$1.call(overridableKeys, keyNode) &&\n _hasOwnProperty$1.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n // used for this specific key only because Object.defineProperty is slow\n if (keyNode === '__proto__') {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty$1.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty$1.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty$1.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State$1(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception('expected a single document in the stream, but found more');\n}\n\n\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\n\nvar loader = {\n\tloadAll: loadAll_1,\n\tload: load_1\n};\n\n/*eslint-disable no-use-before-define*/\n\n\n\n\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new exception('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || _default;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string) + '\"';\n default:\n throw new exception('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new exception('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new exception('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new exception('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump$1(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nvar dump_1 = dump$1;\n\nvar dumper = {\n\tdump: dump_1\n};\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nvar Type = type;\nvar Schema = schema;\nvar FAILSAFE_SCHEMA = failsafe;\nvar JSON_SCHEMA = json;\nvar CORE_SCHEMA = core;\nvar DEFAULT_SCHEMA = _default;\nvar load = loader.load;\nvar loadAll = loader.loadAll;\nvar dump = dumper.dump;\nvar YAMLException = exception;\n\n// Re-export all types in case user wants to create custom schema\nvar types = {\n binary: binary,\n float: float,\n map: map,\n null: _null,\n pairs: pairs,\n set: set,\n timestamp: timestamp,\n bool: bool,\n int: int,\n merge: merge,\n omap: omap,\n seq: seq,\n str: str\n};\n\n// Removed functions from JS-YAML 3.0.x\nvar safeLoad = renamed('safeLoad', 'load');\nvar safeLoadAll = renamed('safeLoadAll', 'loadAll');\nvar safeDump = renamed('safeDump', 'dump');\n\nvar jsYaml = {\n\tType: Type,\n\tSchema: Schema,\n\tFAILSAFE_SCHEMA: FAILSAFE_SCHEMA,\n\tJSON_SCHEMA: JSON_SCHEMA,\n\tCORE_SCHEMA: CORE_SCHEMA,\n\tDEFAULT_SCHEMA: DEFAULT_SCHEMA,\n\tload: load,\n\tloadAll: loadAll,\n\tdump: dump,\n\tYAMLException: YAMLException,\n\ttypes: types,\n\tsafeLoad: safeLoad,\n\tsafeLoadAll: safeLoadAll,\n\tsafeDump: safeDump\n};\n\nexport default jsYaml;\nexport { CORE_SCHEMA, DEFAULT_SCHEMA, FAILSAFE_SCHEMA, JSON_SCHEMA, Schema, Type, YAMLException, dump, load, loadAll, safeDump, safeLoad, safeLoadAll, types };\n","import { load } from 'js-yaml';\nimport fs from 'fs';\n/**\n * Finds the indices of the metadata in an array of items.\n *\n * @param {any[]} mem - The array to store the indices of the metadata.\n * @param {any} item - The current item being processed.\n * @param {number} i - The index of the current item.\n * @return {any[]} The array of indices of the metadata.\n */\nconst findMetaIndices = (mem: any, item: any, i: any): any => {\n if (/^---/.test(item)) {\n mem.push(i)\n }\n \n return mem\n}\n\nconst emptyObject = {}\nexport type DataPros = {\n lines: any;\n metaIndices: any;\n}\n/**\n * Retrieves data based on the meta indices from the lines.\n *\n * @param {DataPros} lines - The lines containing the data.\n * @param {DataPros} metaIndices - The indices indicating the metadata.\n * @return {any} The retrieved data or an empty object.\n */\nconst getData = ({ lines, metaIndices }: DataPros) : any=> {\n if (metaIndices.length > 0) {\n const data = lines.slice(metaIndices[0] + 1, metaIndices[1])\n return load(data.join('\\n'))\n }\n\n return emptyObject\n}\n/**\n * Returns the content of the file after removing the metadata.\n *\n * @param {DataPros} lines - The lines of the file.\n * @param {DataPros} metaIndices - The indices of the metadata in the file.\n * @return {any} The content of the file after removing the metadata.\n */\nconst getContent = ({ lines, metaIndices }: DataPros): any => {\n if (metaIndices.length > 0) {\n lines = lines.slice(metaIndices[1] + 1, lines.length)\n }\n \n return lines.join('\\n')\n}\n\n/**\n * Reads the contents of a file and extracts the frontmatter data and content.\n *\n * @param {string} filePhat - The path to the file.\n * @return {Object} An object containing the frontmatter data and content.\n */\nconst frontmatter = (filePhat: string): any => {\n const contents = fs.readFileSync(filePhat, 'utf8');\n const lines = contents.split('\\n');\n const metaIndices = lines.reduce(findMetaIndices, []);\n const data = getData({ lines, metaIndices });\n const content = getContent({ lines, metaIndices });\n \n return { data, content }\n }\n \n export default frontmatter"]}
|