{"version":3,"sources":["webpack:///node_modules/hammerjs/hammer.min.js","webpack:///node_modules/showdown/dist/showdown.js"],"names":["a","b","c","d","e","setTimeout","j","f","Array","isArray","g","forEach","length","call","hasOwnProperty","h","Error","stack","replace","console","warn","log","apply","this","arguments","i","prototype","Object","create","constructor","_super","la","k","oa","l","m","q","addEventListener","n","removeEventListener","o","parentNode","p","indexOf","trim","split","r","s","slice","t","push","sort","u","toUpperCase","ma","w","ownerDocument","defaultView","parentWindow","x","manager","callback","element","target","options","inputTarget","domHandler","enable","handler","init","z","pointers","changedPointers","Ea","Ga","Ha","isFirst","isFinal","session","eventType","firstInput","D","firstMultiple","center","E","timeStamp","ra","deltaTime","angle","I","distance","H","offsetDelta","prevDelta","prevInput","deltaX","y","deltaY","B","offsetDirection","G","F","overallVelocityX","overallVelocityY","overallVelocity","qa","scale","Ra","K","rotation","J","maxPointers","C","srcEvent","A","emit","recognize","lastInterval","Da","velocity","velocityX","velocityY","direction","clientX","pa","clientY","Ia","Ja","Ka","La","Ma","Qa","Math","sqrt","atan2","PI","L","evEl","Ta","evWin","Ua","pressed","M","Xa","Ya","store","pointerEvents","N","evTarget","$a","_a","started","O","touches","changedTouches","concat","P","bb","targetIds","Q","Fa","identifier","filter","R","touch","mouse","primaryTouch","lastTouches","S","T","splice","cb","U","abs","db","V","set","Y","defaults","id","ua","state","nb","simultaneous","requireFail","Z","sb","qb","pb","ob","$","_","get","aa","ba","pX","pY","ca","da","_timer","_input","ea","fa","ga","pTime","pCenter","count","ha","recognizers","preset","ia","handlers","oldCssProps","input","inputClass","xa","ya","wa","touchAction","ja","add","recognizeWith","requireFailure","style","cssProps","ka","createEvent","initEvent","gesture","dispatchEvent","na","createElement","round","Date","now","assign","TypeError","sa","keys","ta","test","navigator","userAgent","za","Ba","Na","Oa","Pa","destroy","Sa","mousedown","mousemove","mouseup","type","button","which","pointerType","Va","pointerdown","pointermove","pointerup","pointercancel","pointerout","Wa","2","3","4","5","MSPointerEvent","PointerEvent","toLowerCase","pointerId","Za","touchstart","touchmove","touchend","touchcancel","ab","sourceCapabilities","firesTouchEvents","eb","fb","gb","ib","jb","kb","lb","mb","CSS","supports","X","compute","actions","update","getTouchAction","W","join","preventDefaults","prevented","preventSrc","preventDefault","rb","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","process","reset","attrTest","threshold","directionTest","time","clearTimeout","taps","interval","posThreshold","failTimeout","tapCount","VERSION","domEvents","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","stop","stopped","curRecognizer","remove","on","off","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","Manager","Input","TouchAction","TouchInput","MouseInput","PointerEventInput","TouchMouseInput","SingleTouchInput","Recognizer","AttrRecognizer","Tap","Pan","Swipe","Pinch","Rotate","Press","each","merge","extend","inherit","bindFn","prefixed","self","Hammer","define","amd","module","exports","window","document","getDefaultOpts","simple","defaultOptions","omitExtraWLInCodeBlocks","defaultValue","describe","noHeaderId","prefixHeaderId","rawPrefixHeaderId","ghCompatibleHeaderId","rawHeaderId","headerLevelStart","parseImgDimensions","simplifiedAutoLink","excludeTrailingPunctuationFromURLs","literalMidWordUnderscores","literalMidWordAsterisks","strikethrough","tables","tablesHeaderId","ghCodeBlocks","tasklists","smoothLivePreview","smartIndentationFix","description","disableForced4SpacesIndentedSublists","simpleLineBreaks","requireSpaceBeforeHeadingText","ghMentions","ghMentionsLink","encodeEmails","openLinksInNewWindow","backslashEscapesHTMLTags","emoji","underline","completeHTMLDocument","metadata","splitAdjacentBlockquotes","JSON","parse","stringify","ret","opt","showdown","parsers","extensions","globalOptions","setFlavor","flavor","github","original","ghost","vanilla","allOn","allOptionsOn","validate","extension","name","errMsg","valid","error","helper","baseMsg","ext","isString","isUndefined","listeners","regex","ln","RegExp","escapeCharactersCallback","wholeMatch","m1","charCodeAt","setOption","key","value","getOption","getOptions","resetOptions","option","getFlavor","getFlavorOptions","getDefaultOptions","subParser","func","stdExtName","validExtension","getAllExtensions","removeExtension","resetExtensions","validateExtension","String","isFunction","toString","obj","prop","escapeCharacters","text","charsToEscape","afterBackslash","regexString","unescapeHTMLEntities","txt","rgxFindMatchPos","str","left","right","flags","start","end","pos","exec","lastIndex","match","index","matchRecursiveRegExp","matchPos","results","replaceRecursiveRegExp","replacement","repStr","finalStr","lng","bits","regexIndexOf","fromIndex","substring","search","splitAtIndex","encodeEmailAddress","mail","encode","ch","floor","random","padEnd","targetLength","padString","repeat","msg","alert","regexes","asteriskDashAndColon","emojis","Converter","converterOptions","langExtensions","outputModifiers","setConvFlavor","parsed","raw","format","_parseExtension","legacyExtensionLoading","validExt","listen","gOpt","_constructor","_dispatch","evtName","globals","ei","nText","makeHtml","gHtmlBlocks","gHtmlMdBlocks","gHtmlSpans","gUrls","gTitles","gDimensions","gListLevel","hashLinkCounts","converter","rsp","rgx","rTrimInputText","makeMarkdown","makeMd","src","HTMLParser","doc","innerHTML","preList","pres","querySelectorAll","presPH","childElementCount","firstChild","tagName","content","language","getAttribute","classes","className","matches","outerHTML","setAttribute","substitutePreCodeTags","clean","node","childNodes","child","nodeType","nodeValue","removeChild","nodes","mdDoc","addExtension","useExtension","extensionName","output","getMetadata","getMetadataFormat","_setMetadataPair","_setMetadataFormat","_setMetadataRaw","writeAnchorTag","linkText","linkId","url","m5","m6","title","result","wm","st","escape","mentions","username","lnk","simpleURLRegex","simpleURLRegex2","delimUrlRegex","simpleMailRegex","delimMailRegex","replaceLink","leadingMagicChars","link","m2","m3","trailingPunctuation","trailingMagicChars","lnkTxt","append","lmc","tmc","replaceMail","href","bq","codeblock","nextChar","doctype","doctypeParsed","charset","lang","meta","leadingText","numSpaces","emojiCode","delim","blockText","blockTags","repFunc","inside","opTagPos","rgx1","patLeft","patRight","subTexts","newSubText1","hashHTMLSpan","html","repText","limit","num","$1","isNaN","parseInt","setextRegexH2","headerId","prefix","customizedHeaderId","spanGamut","hID","hashBlock","matchFound","hLevel","hText","span","header","writeImageTag","altText","width","height","gDims","parseInside","lead","processListItems","listStr","trimTrailing","isParagraphed","m4","taskbtn","checked","item","bulletStyle","otp","wm2","styleStartNumber","list","listType","res","parseConsecutiveLists","olRgx","ulRgx","counterRxg","parseCL","parseMetadataContents","wholematch","grafs","grafsOut","grafsOutIt","codeFlag","$2","re","replaceFunc","blankLines","parseCells","cell","parseTable","rawTable","tableLines","sLine","rawHeaders","map","rawStyles","rawCells","headers","styles","cells","shift","tableHeaderId","row","ii","tb","tblLgn","buildTable","charCodeToReplace","fromCharCode","hasChildNodes","children","childrenLength","innerTxt","headerLevel","headerMark","hasAttribute","listItems","listItemsLenght","listNum","listItemTxt","childrenLenght","spansOnly","data","tableArray","headings","rows","headContent","allign","cols","getElementsByTagName","cellContent","cellSpacesCount","strLen"],"mappings":"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","file":"scripts.ac7b57843eb4fe6c9e2c.js","sourcesContent":["/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n!function(a,b,c,d){\"use strict\";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&la(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==oa?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=ra(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=qa(j.x)>qa(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};b.eventType!==Ea&&f.eventType!==Ga||(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ha&&(i>Da||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=qa(l.x)>qa(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:pa(c/b),y:pa(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ia:qa(a)>=qa(b)?0>a?Ja:Ka:0>b?La:Ma}function H(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Qa);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Ra)+I(a[1],a[0],Ra)}function K(a,b){return H(b[0],b[1],Ra)/H(a[0],a[1],Ra)}function L(){this.evEl=Ta,this.evWin=Ua,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Xa,this.evWin=Ya,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=$a,this.evWin=_a,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ga|Ha)&&(c=t(c.concat(d),\"identifier\",!0)),[c,d]}function P(){this.evTarget=bb,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Ea|Fa)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Ea)for(e=0;e-1&&d.splice(a,1)};setTimeout(e,cb)}}function U(a){for(var b=a.srcEvent.clientX,c=a.srcEvent.clientY,d=0;d=f&&db>=g)return!0}return!1}function V(a,b){this.manager=a,this.set(b)}function W(a){if(p(a,jb))return jb;var b=p(a,kb),c=p(a,lb);return b&&c?jb:b||c?b?kb:lb:p(a,ib)?ib:hb}function X(){if(!fb)return!1;var b={},c=a.CSS&&a.CSS.supports;return[\"auto\",\"manipulation\",\"pan-y\",\"pan-x\",\"pan-x pan-y\",\"none\"].forEach(function(d){b[d]=c?a.CSS.supports(\"touch-action\",d):!0}),b}function Y(a){this.options=la({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=nb,this.simultaneous={},this.requireFail=[]}function Z(a){return a&sb?\"cancel\":a&qb?\"end\":a&pb?\"move\":a&ob?\"start\":\"\"}function $(a){return a==Ma?\"down\":a==La?\"up\":a==Ja?\"left\":a==Ka?\"right\":\"\"}function _(a,b){var c=b.manager;return c?c.get(a):a}function aa(){Y.apply(this,arguments)}function ba(){aa.apply(this,arguments),this.pX=null,this.pY=null}function ca(){aa.apply(this,arguments)}function da(){Y.apply(this,arguments),this._timer=null,this._input=null}function ea(){aa.apply(this,arguments)}function fa(){aa.apply(this,arguments)}function ga(){Y.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ha(a,b){return b=b||{},b.recognizers=l(b.recognizers,ha.defaults.preset),new ia(a,b)}function ia(a,b){this.options=la({},ha.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=a,this.input=y(this),this.touchAction=new V(this,this.options.touchAction),ja(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ja(a,b){var c=a.element;if(c.style){var d;g(a.options.cssProps,function(e,f){d=u(c.style,f),b?(a.oldCssProps[d]=c.style[d],c.style[d]=e):c.style[d]=a.oldCssProps[d]||\"\"}),b||(a.oldCssProps={})}}function ka(a,c){var d=b.createEvent(\"Event\");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var la,ma=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],na=b.createElement(\"div\"),oa=\"function\",pa=Math.round,qa=Math.abs,ra=Date.now;la=\"function\"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError(\"Cannot convert undefined or null to object\");for(var b=Object(a),c=1;ch&&(b.push(a),h=b.length-1):e&(Ga|Ha)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Za={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},$a=\"touchstart\",_a=\"touchstart touchmove touchend touchcancel\";i(N,x,{handler:function(a){var b=Za[a.type];if(b===Ea&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ga|Ha)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}}});var ab={touchstart:Ea,touchmove:Fa,touchend:Ga,touchcancel:Ha},bb=\"touchstart touchmove touchend touchcancel\";i(P,x,{handler:function(a){var b=ab[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:za,srcEvent:a})}});var cb=2500,db=25;i(R,x,{handler:function(a,b,c){var d=c.pointerType==za,e=c.pointerType==Ba;if(!(e&&c.sourceCapabilities&&c.sourceCapabilities.firesTouchEvents)){if(d)S.call(this,b,c);else if(e&&U.call(this,c))return;this.callback(a,b,c)}},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var eb=u(na.style,\"touchAction\"),fb=eb!==d,gb=\"compute\",hb=\"auto\",ib=\"manipulation\",jb=\"none\",kb=\"pan-x\",lb=\"pan-y\",mb=X();V.prototype={set:function(a){a==gb&&(a=this.compute()),fb&&this.manager.element.style&&mb[a]&&(this.manager.element.style[eb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),W(a.join(\" \"))},preventDefaults:function(a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,jb)&&!mb[jb],f=p(d,lb)&&!mb[lb],g=p(d,kb)&&!mb[kb];if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}return g&&f?void 0:e||f&&c&Na||g&&c&Oa?this.preventSrc(b):void 0},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var nb=1,ob=2,pb=4,qb=8,rb=qb,sb=16,tb=32;Y.prototype={defaults:{},set:function(a){return la(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,\"recognizeWith\",this))return this;var b=this.simultaneous;return a=_(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,\"dropRecognizeWith\",this)?this:(a=_(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,\"requireFailure\",this))return this;var b=this.requireFail;return a=_(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,\"dropRequireFailure\",this))return this;a=_(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;qb>d&&b(c.options.event+Z(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=qb&&b(c.options.event+Z(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=tb)},canEmit:function(){for(var a=0;af?Ja:Ka,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ia:0>g?La:Ma,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return aa.prototype.attrTest.call(this,a)&&(this.state&ob||!(this.state&ob)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i(ca,aa,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&ob)},emit:function(a){if(1!==a.scale){var b=a.scale<1?\"in\":\"out\";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(da,Y,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[hb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ga|Ha)&&!f)this.reset();else if(a.eventType&Ea)this.reset(),this._timer=e(function(){this.state=rb,this.tryEmit()},b.time,this);else if(a.eventType&Ga)return rb;return tb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===rb&&(a&&a.eventType&Ga?this.manager.emit(this.options.event+\"up\",a):(this._input.timeStamp=ra(),this.manager.emit(this.options.event,this._input)))}}),i(ea,aa,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[jb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&ob)}}),i(fa,aa,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:Na|Oa,pointers:1},getTouchAction:function(){return ba.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Na|Oa)?b=a.overallVelocity:c&Na?b=a.overallVelocityX:c&Oa&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&qa(b)>this.options.velocity&&a.eventType&Ga},emit:function(a){var b=$(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ga,Y,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ib]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance (GFM Style)',\n type: 'boolean'\n },\n requireSpaceBeforeHeadingText: {\n defaultValue: false,\n description: 'Makes adding a space between `#` and the header text mandatory (GFM Style)',\n type: 'boolean'\n },\n ghMentions: {\n defaultValue: false,\n description: 'Enables github @mentions',\n type: 'boolean'\n },\n ghMentionsLink: {\n defaultValue: 'https://github.com/{u}',\n description: 'Changes the link generated by @mentions. Only applies if ghMentions option is enabled.',\n type: 'string'\n },\n encodeEmails: {\n defaultValue: true,\n description: '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 description: 'Open all links in new windows',\n type: 'boolean'\n },\n backslashEscapesHTMLTags: {\n defaultValue: false,\n description: 'Support for HTML Tag escaping. ex: \\
foo\\
',\n type: 'boolean'\n },\n emoji: {\n defaultValue: false,\n description: 'Enable emoji support. Ex: `this is a :smile: emoji`',\n type: 'boolean'\n },\n underline: {\n defaultValue: false,\n description: 'Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``',\n type: 'boolean'\n },\n completeHTMLDocument: {\n defaultValue: false,\n description: 'Outputs a complete html document, including ``, `` and `` tags',\n type: 'boolean'\n },\n metadata: {\n defaultValue: false,\n description: '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 description: '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\r\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|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\r\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 \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. \"<\" and \">\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\">>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<>\", \"\"]\n * matchRecursiveRegExp(\"
test
\", \"]*>\", \"\", \"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': '\":octocat:\"',\n 'showdown': 'S'\n};\n\r\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: this is sparta\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)) {\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 = '';\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[i].splice(i, 1);\n }\n }\n for (var ii = 0; ii < outputModifiers.length; ++i) {\n if (outputModifiers[ii] === ext) {\n outputModifiers[ii].splice(i, 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\r\n/**\n * Turn Markdown link shortcuts into XHTML 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(/\\(? ?(['\"].*['\"])?\\)$/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 = '';\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]??(?:[ \\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 = ' target=\"¨E95Eblank\"';\n }\n return st + '' + mentions + '';\n });\n }\n\n text = globals.converter._dispatch('anchors.after', text, options, globals);\n return text;\n});\n\r\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 = ' target=\"¨E95Eblank\"';\n }\n return lmc + '' + lnkTxt + '' + 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 + '' + mail + '';\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\r\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 //

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\r\nshowdown.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

 content, so we need to fix that:\n    bq = bq.replace(/(\\s*
[^\\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')('
\\n' + bq + '\\n
', options, globals);\n });\n\n text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n return text;\n});\n\r\n/**\n * Process Markdown `
` 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 = '
' + codeblock + end + '
';\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\r\n/**\n *\n * * Backtick quotes are used for 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 *

Just type foo `bar` baz at the prompt.

\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 `bar` ...\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 + '' + c + '';\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\r\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 = '\\n',\n title = '',\n charset = '\\n',\n lang = '',\n metadata = '';\n\n if (typeof globals.metadata.parsed.doctype !== 'undefined') {\n doctypeParsed = '\\n';\n doctype = globals.metadata.parsed.doctype.toString().toLowerCase();\n if (doctype === 'html' || doctype === 'html5') {\n charset = '';\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 = '' + globals.metadata.parsed.title + '\\n';\n break;\n\n case 'charset':\n if (doctype === 'html' || doctype === 'html5') {\n charset = '\\n';\n } else {\n charset = '\\n';\n }\n break;\n\n case 'language':\n case 'lang':\n lang = ' lang=\"' + globals.metadata.parsed[meta] + '\"';\n metadata += '\\n';\n break;\n\n default:\n metadata += '\\n';\n }\n }\n }\n\n text = doctypeParsed + '\\n\\n' + title + charset + metadata + '\\n\\n' + text.trim() + '\\n\\n';\n\n text = globals.converter._dispatch('completeHTMLDocument.after', text, options, globals);\n return text;\n});\n\r\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\r\nshowdown.subParser('ellipsis', function (text, options, globals) {\n 'use strict';\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\r\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\r\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(/\n text = text.replace(/>/g, '>');\n\n text = globals.converter._dispatch('encodeAmpsAndAngles.after', text, options, globals);\n return text;\n});\n\r\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\r\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 // 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\r\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\r\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 = '
' + codeblock + end + '
';\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\r\nshowdown.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\r\n/**\n * Hash and escape 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 \n text = showdown.helper.replaceRecursiveRegExp(text, repFunc, ']*>', '', 'gim');\n\n text = globals.converter._dispatch('hashCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.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\r\nshowdown.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 = '';\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\r\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, ']*>', '', '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\r\n/**\n * Hash and escape
 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 
\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^ {0,3}]*>\\\\s*]*>', '^ {0,3}\\\\s*
', 'gim');\n\n text = globals.converter._dispatch('hashPreCodeTags.after', text, options, globals);\n return text;\n});\n\r\nshowdown.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 = '' + spanGamut + '';\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 = '' + spanGamut + '';\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 = '' + span + '';\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\r\n/**\n * Turn Markdown link shortcuts into XHTML 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')('
', 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\r\n/**\n * Turn Markdown image shortcuts into 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]??(?: =([*\\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]??(?: =([*\\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(/\\(? ?(['\"].*['\"])?\\)$/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 = '\"'x \"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\r\nshowdown.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, '', '');\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n text = text.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g, function (wm, txt) {\n return parseInside (txt, '', '');\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : 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, '', '') : 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 + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*\\*(\\S[\\s\\S]*?)\\*\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n text = text.replace(/([^*]|^)\\B\\*(\\S[\\s\\S]*?)\\*\\B(?!\\*)/g, function (wm, lead, txt) {\n return parseInside (txt, lead + '', '');\n });\n } else {\n text = text.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : wm;\n });\n text = text.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g, function (wm, m) {\n return (/\\S$/.test(m)) ? parseInside (m, '', '') : 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, '', '') : wm;\n });\n }\n\n\n text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n return text;\n});\n\r\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 = '
  • a
  • \n // instead of:\n //
    • - - a
    \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 = '' + item + '\\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) + '\\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) + '\\n';\n }\n })(list);\n } else {\n var style = styleStartNumber(list, listType);\n result = '\\n\\n<' + listType + style + '>\\n' + processListItems(list, !!trimTrailing) + '\\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\r\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\r\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\r\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

    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, '

    ');\n str += '

    ';\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 (/^]*>\\s*]*>/.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\r\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\r\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 ``\n // Must come after anchors, because you can use < and >\n // delimiters in inline links like [this]().\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, '
    \\n');\n }\n } else {\n // Vanilla hard breaks\n text = text.replace(/ +\\n/g, '
    \\n');\n }\n\n text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n return text;\n});\n\r\nshowdown.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 '' + txt + '';\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\r\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]*?(?: =([*\\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 linkId = linkId.toLowerCase();\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\r\nshowdown.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 '' + header + '\\n';\n }\n\n function parseCells (cell, style) {\n var subText = showdown.subParser('spanGamut')(cell, options, globals);\n return '' + subText + '\\n';\n }\n\n function buildTable (headers, cells) {\n var tb = '\\n\\n\\n',\n tblLgn = headers.length;\n\n for (var i = 0; i < tblLgn; ++i) {\n tb += headers[i];\n }\n tb += '\\n\\n\\n';\n\n for (i = 0; i < cells.length; ++i) {\n tb += '\\n';\n for (var ii = 0; ii < tblLgn; ++ii) {\n tb += cells[i][ii];\n }\n tb += '\\n';\n }\n tb += '\\n
    \\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\r\nshowdown.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 '' + txt + '';\n });\n text = text.replace(/\\b__(\\S[\\s\\S]*?)__\\b/g, function (wm, txt) {\n return '' + txt + '';\n });\n } else {\n text = text.replace(/___(\\S[\\s\\S]*?)___/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : wm;\n });\n text = text.replace(/__(\\S[\\s\\S]*?)__/g, function (wm, m) {\n return (/\\S$/.test(m)) ? '' + m + '' : 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\r\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\r\nshowdown.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\r\nshowdown.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\r\nshowdown.subParser('makeMarkdown.codeSpan', function (node) {\n 'use strict';\n\n return '`' + node.innerHTML + '`';\n});\n\r\nshowdown.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\r\nshowdown.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\r\nshowdown.subParser('makeMarkdown.hr', function () {\n 'use strict';\n\n return '---';\n});\n\r\nshowdown.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\r\nshowdown.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\r\nshowdown.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\r\nshowdown.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\r\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 '\\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\r\nshowdown.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\r\nshowdown.subParser('makeMarkdown.pre', function (node, globals) {\n 'use strict';\n\n var num = node.getAttribute('prenum');\n return '
    ' + globals.preList[num] + '
    ';\n});\n\r\nshowdown.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\r\nshowdown.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\r\nshowdown.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\r\nshowdown.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\r\nshowdown.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\r\nvar 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}).call(this);\r\n\n//# sourceMappingURL=showdown.js.map\r\n"],"sourceRoot":""}