{"version":3,"sources":["webpack://elevations-credit-union/./node_modules/@reach/descendants/dist/reach-descendants.esm.js","webpack://elevations-credit-union/./node_modules/@reach/utils/context/dist/reach-utils-context.esm.js","webpack://elevations-credit-union/./node_modules/linkify-it/index.js","webpack://elevations-credit-union/./node_modules/linkify-it/lib/re.js","webpack://elevations-credit-union/./node_modules/markdown-it/index.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/common/entities.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/common/html_blocks.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/common/html_re.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/common/utils.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/helpers/index.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/helpers/parse_link_destination.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/helpers/parse_link_label.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/helpers/parse_link_title.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/index.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/parser_block.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/parser_core.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/parser_inline.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/presets/commonmark.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/presets/default.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/presets/zero.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/renderer.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/ruler.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/code.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/fence.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/heading.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/hr.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/html_block.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/lheading.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/list.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/paragraph.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/reference.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/state_block.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_block/table.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/block.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/inline.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/linkify.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/normalize.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/replacements.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/smartquotes.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/state_core.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_core/text_join.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/autolink.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/backticks.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/emphasis.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/entity.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/escape.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/fragments_join.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/html_inline.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/image.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/link.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/linkify.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/newline.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/state_inline.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/strikethrough.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/rules_inline/text.js","webpack://elevations-credit-union/./node_modules/markdown-it/lib/token.js","webpack://elevations-credit-union/./node_modules/mdurl/decode.js","webpack://elevations-credit-union/./node_modules/mdurl/encode.js","webpack://elevations-credit-union/./node_modules/mdurl/format.js","webpack://elevations-credit-union/./node_modules/mdurl/index.js","webpack://elevations-credit-union/./node_modules/mdurl/parse.js","webpack://elevations-credit-union/./node_modules/prismjs/prism.js","webpack://elevations-credit-union/./node_modules/punycode/punycode.es6.js","webpack://elevations-credit-union/./node_modules/react-input-mask/index.js","webpack://elevations-credit-union/./node_modules/react-input-mask/lib/react-input-mask.production.min.js","webpack://elevations-credit-union/./node_modules/uc.micro/categories/Cc/regex.js","webpack://elevations-credit-union/./node_modules/uc.micro/categories/Cf/regex.js","webpack://elevations-credit-union/./node_modules/uc.micro/categories/P/regex.js","webpack://elevations-credit-union/./node_modules/uc.micro/categories/Z/regex.js","webpack://elevations-credit-union/./node_modules/uc.micro/index.js","webpack://elevations-credit-union/./node_modules/uc.micro/properties/Any/regex.js","webpack://elevations-credit-union/./src/components/modules/TitleModule/TitleModule.module.scss","webpack://elevations-credit-union/./src/components/modules/TitleModule/TitleModule.js","webpack://elevations-credit-union/./src/components/modules/ImageCopy/ImageCopyModule.module.scss","webpack://elevations-credit-union/./src/components/modules/ImageCopy/ImageCopyModule.js","webpack://elevations-credit-union/./src/components/modules/StackedHeroWithImage/StackedHeroWithImage.module.scss","webpack://elevations-credit-union/./src/components/modules/StackedHeroWithImage/StackedHeroWithImage.js","webpack://elevations-credit-union/./src/components/modules/LocationSection/utils.js","webpack://elevations-credit-union/./src/components/modules/LocationSection/LocationSection.js","webpack://elevations-credit-union/./node_modules/date-fns/esm/parseISO/index.js","webpack://elevations-credit-union/./src/components/modules/UpcomingEventModule/hooks.js","webpack://elevations-credit-union/./src/components/modules/UpcomingEventModule/UpcomingEventModule.js","webpack://elevations-credit-union/./src/components/modules/ImageCopy25/ImageCopy25Module.module.scss","webpack://elevations-credit-union/./src/components/modules/ImageCopy25/ImageCopy25Module.js","webpack://elevations-credit-union/./node_modules/react-hotkeys-hook/dist/react-hotkeys-hook.esm.js","webpack://elevations-credit-union/./node_modules/@reach/accordion/dist/reach-accordion.esm.js","webpack://elevations-credit-union/./src/components/accordion/Accordion.js","webpack://elevations-credit-union/./src/components/accordion/Accordion.module.scss","webpack://elevations-credit-union/./src/components/modules/AccordionFaq/AccordionFaq.js","webpack://elevations-credit-union/./src/components/modules/AccordionFaq/AccordionFaq.module.scss","webpack://elevations-credit-union/./src/components/modules/CardModule/CardModule.module.scss","webpack://elevations-credit-union/./src/components/live-engage-button/LiveEngageButton.js","webpack://elevations-credit-union/./src/components/modules/CardModule/components/Card.module.scss","webpack://elevations-credit-union/./src/components/modules/CardModule/components/Card.js","webpack://elevations-credit-union/./src/components/modules/CardModule/CardModule.js","webpack://elevations-credit-union/./src/components/modules/ProductTile/ProductTile.module.scss","webpack://elevations-credit-union/./src/components/modules/ProductTile/ProductTile.js","webpack://elevations-credit-union/./src/components/modules/CopyBlock/CopyBlockModule.js","webpack://elevations-credit-union/./src/components/modules/CopyBlock/CopyBlockModule.module.scss","webpack://elevations-credit-union/./src/components/modules/TeamMemberModule/components/TeamMemberCard.module.scss","webpack://elevations-credit-union/./src/components/team-member-modal/TeamMemberModal.module.scss","webpack://elevations-credit-union/./src/components/team-member-modal/TeamMemberModal.js","webpack://elevations-credit-union/./src/components/modules/TeamMemberModule/components/TeamMemberCard.js","webpack://elevations-credit-union/./src/components/modules/TeamMemberModule/TeamMemberCardModule.js","webpack://elevations-credit-union/./src/components/modules/TeamMemberModule/TeamMemberCardModule.module.scss","webpack://elevations-credit-union/./src/components/modules/Disclaimer/DisclaimerModule.module.scss","webpack://elevations-credit-union/./src/components/modules/Disclaimer/DisclaimerModule.js","webpack://elevations-credit-union/./src/components/modules/HomepageHero/components/HomepageHeroCard.js","webpack://elevations-credit-union/./src/components/modules/HomepageHero/components/HomepageHeroCard.module.scss","webpack://elevations-credit-union/./src/components/modules/HomepageHero/HomepageHeroModule.module.scss","webpack://elevations-credit-union/./src/components/modules/HomepageHero/HomepageHeroModule.js","webpack://elevations-credit-union/./src/components/modules/Events/EventsModule.module.scss","webpack://elevations-credit-union/./src/components/modules/Events/EventsModule.js","webpack://elevations-credit-union/./src/components/modules/VideoCopy/VideoCopyModule.module.scss","webpack://elevations-credit-union/./src/components/modules/VideoCopy/VideoCopyModule.js","webpack://elevations-credit-union/./src/components/modules/HeaderBio/HeaderBioModule.module.scss","webpack://elevations-credit-union/./src/components/modules/HeaderBio/HeaderBioModule.js","webpack://elevations-credit-union/./node_modules/react-iframe/dist/es/iframe.js","webpack://elevations-credit-union/./src/components/modules/DonationForm/DonationFormModule.js","webpack://elevations-credit-union/./src/components/modules/DonationForm/DonationFormModule.module.scss","webpack://elevations-credit-union/./src/components/modules/InvestmentLogin/InvestmentLogin.js","webpack://elevations-credit-union/./src/components/modules/InvestmentLogin/InvestmentLogin.module.scss","webpack://elevations-credit-union/./src/components/modules/LocalChangeEnrollment/LocalChangeEnrollmentForm.module.scss","webpack://elevations-credit-union/./src/utilities/FormConstants.js","webpack://elevations-credit-union/./src/components/modules/LocalChangeEnrollment/LocalChangeEnrollmentForm.js","webpack://elevations-credit-union/./src/components/modules/EquipmentLoanForm/EquipmentLoanForm.module.scss","webpack://elevations-credit-union/./src/components/modules/EquipmentLoanForm/EquipmentLoanForm.js","webpack://elevations-credit-union/./src/components/modules/AdapterModule/AdapterModule.js","webpack://elevations-credit-union/./src/components/modules/CodeEmbed/CodeEmbedModule.js","webpack://elevations-credit-union/./src/components/modules/CodeEmbed/CodeEmbedModule.module.scss","webpack://elevations-credit-union/./src/templates/sectionMapping.js","webpack://elevations-credit-union/./src/templates/pageTemplate.js","webpack://elevations-credit-union/./node_modules/lodash/_baseIntersection.js","webpack://elevations-credit-union/./node_modules/lodash/_baseInvoke.js","webpack://elevations-credit-union/./node_modules/lodash/_castArrayLikeObject.js","webpack://elevations-credit-union/./node_modules/lodash/_parent.js","webpack://elevations-credit-union/./node_modules/lodash/chunk.js","webpack://elevations-credit-union/./node_modules/lodash/intersection.js","webpack://elevations-credit-union/./node_modules/lodash/invokeMap.js","webpack://elevations-credit-union/./node_modules/warning/warning.js"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","createDescendantContext","name","initialValue","descendants","registerDescendant","unregisterDescendant","useDescendant","descendant","context","indexProp","forceUpdate","_React$useContext","useContext","index","findIndex","item","element","previousDescendants","someDescendantsHaveChanged","some","_previousDescendants$","concat","values","useDescendantsInit","useState","useDescendants","ctx","DescendantProvider","_ref","Ctx","children","items","set","useCallback","_ref2","explicitIndex","rest","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","newItems","find","Boolean","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","newItem","slice","map","filter","createElement","Provider","value","useMemo","useDescendantKeyDown","options","callback","currentIndex","_options$key","_options$orientation","orientation","_options$rotate","rotate","_options$rtl","rtl","event","includes","selectableDescendants","preventDefault","next","getNextOption","prev","getPreviousOption","nextOrPrev","prevOrNext","prevOrFirst","ctrlKey","getFirstOption","first","nextOrLast","getLastOption","last","createNamedContext","defaultValue","createContext","obj","sources","Array","forEach","_class","toString","isFunction","escapeRE","str","replace","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","validate","text","pos","self","tail","re","http","RegExp","src_auth","src_host_port_strict","src_path","test","match","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_default","split","compile","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","push","src_xn","join","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","aliases","schemaError","val","Error","__compiled__","__schemas__","compiled","link","isRegExp","createValidator","normalize","isString","alias","slist","schema_test","src_ZPCc","schema_search","schema_at_start","pretest","__index__","__text_cache__","resetScanCache","Match","shift","start","end","__last_index__","schema","__schema__","toLowerCase","lastIndex","raw","url","createMatch","LinkifyIt","schemas","reduce","acc","k","add","definition","m","ml","me","len","tld_pos","exec","testSchemaAt","search","result","matchAtStart","list","keepOld","isArray","sort","el","idx","arr","reverse","module","exports","opts","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","_hasOwnProperty","has","object","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","String","fromCharCode","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","entities","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","ch","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","lib","mdurl","ucmicro","TypeError","unescapeMd","unescapeAll","escaped","entity","code","charCodeAt","parseInt","replaceEntityPattern","escapeHtml","arrayReplaceAt","src","newElements","isSpace","isWhiteSpace","isMdAsciiPunct","isPunctChar","normalizeReference","trim","toUpperCase","parseLinkLabel","parseLinkDestination","parseLinkTitle","max","level","ok","lines","state","disableNested","found","marker","prevPos","labelEnd","posMax","oldPos","md","inline","skipToken","utils","helpers","Renderer","ParserCore","ParserBlock","ParserInline","punycode","config","default","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","validateLink","RECODE_HOSTNAME_FOR","normalizeLink","parsed","parse","hostname","protocol","toASCII","er","encode","format","normalizeLinkText","toUnicode","decode","defaultChars","MarkdownIt","presetName","block","core","renderer","linkify","configure","presets","components","rules","ruler","enableOnly","rules2","ruler2","enable","ignoreInvalid","chain","missed","disable","use","plugin","args","env","State","process","tokens","render","parseInline","inlineMode","renderInline","Ruler","_rules","alt","tokenize","startLine","endLine","getRules","line","hasEmptyLines","maxNesting","skipEmptyLines","sCount","blkIndent","tight","isEmpty","outTokens","lineMax","Core","l","_rules2","cache","pending","pushPending","html","xhtmlOut","breaks","langPrefix","typographer","quotes","highlight","default_rules","code_inline","slf","token","renderAttrs","content","code_block","fence","highlighted","tmpAttrs","tmpToken","info","langName","langAttrs","attrIndex","attrs","image","renderInlineAsText","renderToken","hardbreak","softbreak","html_block","html_inline","nextToken","needLf","hidden","nesting","tag","type","__rules__","__cache__","__find__","__compile__","chains","rule","enabled","altName","fn","at","opt","before","beforeName","ruleName","splice","after","afterName","chainName","silent","adjustTab","initial","lastLineEmpty","nextLine","offset","oldBMarks","oldBSCount","oldIndent","oldParentType","oldSCount","oldTShift","spaceAfterMarker","terminate","terminatorRules","isOutdented","oldLineMax","bMarks","tShift","eMarks","bsCount","parentType","markup","getLines","params","mem","haveEndMarker","skipChars","skipSpaces","tmp","skipSpacesBack","skipCharsBack","cnt","block_names","HTML_SEQUENCES","lineText","skipBulletListMarker","skipOrderedListMarker","contentStart","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","listIndent","Number","Math","min","markTightParagraphs","_endLine","destEndPos","destEndLineNo","href","label","res","title","references","Token","StateBlock","s","indent_found","ddIndent","from","begin","keepLastLF","lineIndent","queue","lineStart","getLine","escapedSplit","isEscaped","lastPos","current","substring","columns","columnCount","aligns","t","tableLines","tbodyLines","firstCh","secondCh","pop","tok","isLinkClose","j","currentToken","nodes","ln","htmlLinkLevel","fullUrl","urlText","links","blockTokens","NEWLINES_RE","NULL_RE","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","r","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","blkIdx","QUOTE_TEST_RE","QUOTE_RE","replaceAt","process_inlines","thisLevel","lastChar","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","stack","openQuote","closeQuote","OUTER","single","StateCore","curr","EMAIL_RE","AUTOLINK_RE","matchStart","matchEnd","openerLength","closerLength","backticksScanned","backticks","processDelimiters","delimiters","closerIdx","openerIdx","closer","opener","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","headerIdx","lastTokenIdx","jumps","close","open","tokens_meta","postProcess","startDelim","endDelim","isStrong","scanned","scanDelims","can_open","can_close","DIGITAL_RE","NAMED_RE","ESCAPED","ch1","ch2","origStr","escapedStr","lc","isLetter","linkLevel","labelStart","ref","parseReference","SCHEME_RE","proto","pmax","ws","StateInline","pendingLevel","_prev_delimiters","token_meta","canSplitWord","count","left_flanking","right_flanking","loneMarkers","isTerminatorChar","meta","attrPush","attrData","attrSet","attrGet","attrJoin","decodeCache","string","exclude","getDecodeCache","seq","b1","b2","b3","b4","chr","componentChars","encodeCache","keepEscaped","nextCode","getEncodeCache","encodeURIComponent","slashes","auth","port","pathname","hash","Url","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","slashesDenoteHost","lowerProto","hec","simplePath","substr","atSign","hostEnd","lastIndexOf","host","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","unshift","qm","u","Prism","_self","lang","uniqueId","plainTextGrammar","_","manual","disableWorkerMessageHandler","util","o","objId","defineProperty","clone","deepClone","visited","id","v","getLanguage","className","parentElement","setLanguage","language","classList","currentScript","document","err","scripts","getElementsByTagName","isActive","defaultActivation","no","contains","languages","plain","plaintext","txt","extend","redef","insertBefore","inside","insert","root","grammar","ret","newToken","old","DFS","property","propertyType","plugins","highlightAll","async","highlightAllUnder","container","selector","hooks","run","elements","querySelectorAll","highlightElement","parent","nodeName","textContent","insertHighlightedCode","highlightedCode","innerHTML","hasAttribute","setAttribute","Worker","worker","filename","onmessage","evt","data","postMessage","JSON","stringify","immediateClose","tokenList","LinkedList","addAfter","head","matchGrammar","array","node","toArray","all","callbacks","matchedStr","matchPattern","pattern","lookbehind","lookbehindLength","startNode","startPos","rematch","patterns","cause","patternObj","greedy","global","flags","currentNode","reach","removeCount","to","p","matchStr","removeFrom","removeRange","nestedRematch","newNode","e","classes","attributes","addEventListener","message","script","highlightAutomaticallyCallback","readyState","defer","window","requestAnimationFrame","setTimeout","WorkerGlobalScope","g","tagName","includedCdataInside","def","attrName","mathml","svg","xml","ssml","atom","rss","css","addInlined","addAttribute","clike","javascript","regex","js","Element","matches","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","pre","appendChild","getAttribute","extension","autoloader","loadLanguages","success","error","xhr","XMLHttpRequest","onreadystatechange","status","responseText","statusText","send","loadFile","range","comma","undefined","parseRange","fileHighlight","logged","console","warn","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","minLen","_arrayLikeToArray","n","constructor","_unsupportedIterableToArray","F","done","_e","f","normalCompletion","didErr","step","_e2","return","arr2","maxInt","base","regexPunycode","regexNonASCII","regexSeparators","errors","floor","stringFromCharCode","RangeError","mapDomain","parts","encoded","ucs2decode","output","counter","extra","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","input","codePoint","inputLength","bias","basic","oldi","w","baseMinusT","out","_step","_iterator","_currentValue2","basicLength","handledCPCount","_step2","_iterator2","currentValue","handledCPCountPlusOne","_step3","_iterator3","_currentValue","q","qMinusT","a","cancelAnimationFrame","ownerDocument","hasFocus","activeElement","defaultView","HTMLElement","h","querySelector","useRef","selectionStart","selectionEnd","d","setSelectionRange","useEffect","P","useLayoutEffect","removeEventListener","getSelection","getLastSelection","setSelection","getValue","getLastValue","setValue","inputRef","getInputState","selection","getLastInputState","setInputState","9","isCharacterAllowedAtPosition","maskOptions","maskPlaceholder","isCharacterFillingPosition","mask","isPositionEditable","permanents","isValueEmpty","every","isValueFilled","getFilledLength","lastEditablePosition","getDefaultSelectionForValue","getRightEditablePosition","getStringFillingLengthAtPosition","insertCharacterAtPosition","getLeftEditablePosition","formatValue","insertStringAtPosition","clearRange","processChange","prefix","enteredString","create","getOwnPropertyNames","getOwnPropertyDescriptor","configurable","props","cloneElement","Component","b","forwardRef","alwaysShowMask","beforeMaskedStateChange","E","S","C","y","O","disabled","readOnly","V","L","A","R","M","x","D","I","nextState","N","B","currentState","T","onFocus","onChange","onBlur","previousState","onMouseDown","clientX","clientY","Date","getTime","abs","findDOMNode","displayName","defaultProps","Any","Cc","Cf","Z","Business","Personal","heading","body","tagline","linkText","ctaContainer","white","lightBlue","iceBlue","black","TitleModule","selectedFontColor","richHeadline","richSubHeadline","richTagline","backgroundColor","backgroundImage","buttonUrl","buttonCta","buttonAlt","linkTextCta","linkTextUrl","linkTextAlt","fontColor","customBackgroundColor","taglineClasses","classNames","styles","headingClasses","bodyClasses","linkTextClasses","style","topStyle","data-qa","overrides","paragraph","Eyebrow","Heading","size","variant","aria-label","contentContainer","contentContainerInner","taglineLight","headingLight","copy","copyLight","buttonRow","caption","ButtonElement","buttonColor","isModal","modalUrlIsMember","modalUrlNonMember","isApply","applyHref","buttonTarget","ImageCopyModule","isLightText","imageCaption","richBody","imagePosition","buttonCtaOne","buttonUrlOne","buttonColorOne","buttonOneIsModal","buttonTargetOne","buttonAltOne","buttonCtaTwo","buttonUrlTwo","buttonTwoIsModal","buttonColorTwo","buttonTargetTwo","buttonAltTwo","imageBackgroundColor","disclaimer","theme","bgImageLeftColor","left","height","position","top","width","zIndex","bgImageRightColor","right","wrapperColor","innerContentLeft","innerContentRight","imgSrcSetsHalf","media","xs","lg","contentType","description","srcSets","aria-hidden","textAlign","StackedHeroWithImageTopWrapper","linkOneCta","StackedHeroWithImage","buttonUrlLong","buttonIsModal","linkCta","linkUrlLong","linkTarget","linkAlt","richBodyBottom","bottomDisclaimer","address","richBottomCol1","richBottomCol2","targetRef","setHeight","customStyle","textP","newTextP","reservedP","offsetHeight","handleResize","Fragment","xmlns","viewBox","Link","light","listType","role","day","convertedHours","maxHeight","convert24HourTo12Hour","time","timeElements","hour","hourBase12","LocationSection","menu","pageUrl","scheduleAppointmentUrl","city","offerings","zip","officeType","imageOne","imageTwo","richTagline2","richHeadline2","getDirectionsUrl","useTranslation","DAYS_OF_WEEK","monday","tuesday","wednesday","thursday","friday","saturday","sunday","nodeType","marks","tableData","dayOfWeek","openTime","closeTime","tmpObj","imageCopyRichBody","richAddress","uri","subnav","urlPath","linkUrl","MILLISECONDS_IN_HOUR","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseISO","argument","dirtyOptions","requiredArgs","additionalDigits","toInteger","NaN","date","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","year","isNaN","timestamp","parseTime","dirtyDate","setFullYear","getUTCFullYear","getUTCMonth","getUTCDate","setHours","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","parseTimezone","dateString","timeString","captures","century","isWeekDate","dayOfYear","parseDateUnit","month","week","_year","validateWeekDate","isoWeekYear","setUTCFullYear","fourthOfJanuaryDay","getUTCDay","diff","setUTCDate","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","hours","parseTimeUnit","minutes","seconds","validateTime","parseFloat","timezoneString","sign","_hours","validateTimezone","normalizeTags","tags","invokeMap","UpcomingEventModule","fallbackTagline","fallbackHeadline","fallbackImage","fallbackRichBody","i18n","imageCopyOptions","requiredTags","upcomingEvent","setUpcomingEvent","setUpcomingEventStatus","axios","method","matchingEvents","results","intersection","fetchData","useTaggedEvent","locale","eventStart","local","dateStart","timeBegin","timeEnd","summary","venue","localized_address_display","imageContainer","ImageCopy25Module","imgSrcSets","xl","bind","reservedModifierKeywords","mappedKeys","esc","ShiftLeft","ShiftRight","AltLeft","AltRight","MetaLeft","MetaRight","OSLeft","OSRight","ControlLeft","ControlRight","mapKey","parseKeysHookInput","splitKey","parseHotkey","hotkey","combinationKey","toLocaleLowerCase","ctrl","mod","pushToCurrentlyPressedKeys","removeFromCurrentlyPressedKeys","currentlyPressedKeys","clear","Set","isReadonlyArray","hotkeyArray","isHotkeyModifier","isHotkeyEnabledOnTag","enabledOnTags","targetTagName","isHotkeyMatchingKeyboardEvent","ignoreModifiers","pressedKeyUppercase","metaKey","shiftKey","altKey","keyCode","pressedKey","BoundHotkeysProxyProvider","deepEqual","isEqual","HotkeysContext","hotkeys","enabledScopes","toggleScope","enableScope","disableScope","stopPropagation","stopImmediatePropagation","useSafeLayoutEffect","useHotkeys","dependencies","hasTriggeredRef","_options","_keys","_deps","memoisedCB","cbRef","memoisedOptions","useDeepEqualMemo","proxy","activeScopes","scopes","scope","listener","isKeyUp","_e$target","enableOnFormTags","ignoreEventWhen","isContentEditable","enableOnContentEditable","_hotkey$keys","maybePreventDefault","isHotkeyEnabled","handleKeyDown","keydown","keyup","handleKeyUp","domNode","addHotkey","removeHotkey","AccordionStates","AccordionDescendantContext","AccordionContext","AccordionItemContext","forwardedRef","_ref$as","as","Comp","defaultIndex","controlledIndex","_ref$readOnly","_ref$collapsible","collapsible","_ref$multiple","multiple","wasControlled","isControlled","_useDescendantsInit","setDescendants","_React$useState","_defaultIndex$","openPanels","setOpenPanels","onSelectPanel","prevOpenPanels","accordionId","_ref2$as","_ref2$disabled","buttonRef","itemId","panelId","buttonId","Open","Collapsed","getDataState","AccordionButton","_ref3","_ref3$as","onClick","onKeyDown","onPointerDown","tabIndex","_React$useContext3","ownRef","focus","button","_ref4","_ref4$as","_React$useContext4","Accordion","Item","Panel","Header","_React$useContext6","icon","isExpanded","faMinus","faPlus","AccordionFaq","faqs","bigger","indices","setIndices","headerClass","location","useLocation","openItemsArr","firstItemId","getElementById","scrollTo","offsetTop","behavior","indexes","history","replaceState","toggledIndex","newIndices","faq","question","answer","sectionContainer","LiveEngageButton","memo","noMarginBottom","boxShadow","twoCol","threeCol","darkSkyBlue","darkLimeGreen","ceruleanTwo","LiveChatContainer","LegacyLiveChatContainer","Card","borderColor","columnWidth","centered","eyebrowElement","taglineElement","showBoxShadow","isButtonModal","borderClass","moduleClasses","breakpoints","hasLink","hasButton","headlineStyle","taglineStyle","bodyStyle","hasChatLink","dataQA","Image","distribution","CardModule","cardModules","headerLevel","blueHeader","moduleRows","chunk","headlineClasses","headlineColWidth","moduleHeadlineLevel","cardHeadlineLevel","sectionClasses","rows","card","ProductImage","ProductTile","image2","callouts","button2Url","button2Alt","button2Target","button2Cta","button2IsModal","modal2UrlIsMember","modal2UrlNonMember","file","feature","richDetailName","richValue","detailName","CopyBlockModule","readMoreButton","HeadingStyle","Section","SectionTitle","TeamMemberModal","onDismiss","servicesRichBody","licensesRichBody","valueStatementRichBody","teamMembers","firstName","lastName","email","phoneNumber","teamMemberTitle","nmlsNumber","cta1text","cta1Alt","cta1href","cta2text","cta2Alt","cta2href","isOpen","CloseImage","childMarkdownRemark","dangerouslySetInnerHTML","__html","json","teamMember","TeamMemberCard","isLink","learnMoreLink","headingElement","showDialog","setShowDialog","excerpt","UnstyledLink","TeamMemberCardModule","headline","ctaHref","ctaTitle","ctaAlt","teamMemberCardModules","moduleHeadlineNextLevel","DisclaimerModule","footnotes","footnote","contentful_id","cardId","cardUrl","cardOnly","data-card","HomepageHero","HomepageHeroCardsWrapper","HomepageHeroCards","HomepageHeroCardsInner","HomepageHeroModule","cards","cardsOnly","bannerHeadline","bannerCta","bannerUrl","bannerAlt","backgroundImageStyle","emptyCta","EventsModule","events","setEvents","eventsLoading","setEventsLoading","setError","oneDesiredTag","filteredEvents","_logo","mapLink","rel","innerIFrameContainer","iFrame","partialBackground","VideoCopyModule","video","videoPosition","buttonOneColor","buttonTwoColor","allow","allowFullScreen","phoneIcon","HeaderBioModule","services","licenses","valueStatement","lmbNumber","cta1Text","cta1AltText","cta1Url","cta2Text","cta2AlternativeText","cta2Url","faPhoneAlt","faEnvelope","__assign","_a","display","overflow","onLoad","onMouseOver","onMouseOut","scrolling","frameBorder","ariaHidden","sandbox","ariaLabel","ariaLabelledby","loading","importance","referrerpolicy","allowpaymentrequest","_i","_b","prop","_c","_d","currentAllow","border","DonationFormModule","InvestmentLogin","Trans","i18nKey","acceptCharset","action","autoFocus","fieldsContainer","fieldWrapper","EMAIL_REGEX","PHONE_REGEX","CAP_REGEX","LocalChangeEnrollmentForm","capOptions","validationSchema","required","maxLength","formConstants","monthlyCapAmount","optionID","useForm","mode","register","reset","watch","handleSubmit","alert","showAlert","dismissAlert","selectedOption","hasSelectedCap","inProgress","setInProgress","handleSubmitValid","formData","payload","form_id","first_name","last_name","phone_number","monthly_cap_amount","monthly_cap","response","cleanedUrl","navigate","noValidate","onSubmit","formatError","autoComplete","option","Fieldset","withMargin","Legend","Submit","ShortMessage","TimesIcon","CheckIcon","Notice","fieldRow","fieldCol","EquipmentLoanForm","pageContext","businessName","methodOfContact","memberStatus","elevationsMember","sm","multiline","alignment","faTimes","faCheck","AdapterModule","moduleName","padding","CodeEmbedModule","mloCode","buyer","scriptLoading","setScriptLoading","__hb_namespace","parentNode","GetSectionItem","moduleType","ElevatedTitleCentered","Table","GetSections","sections","section","col","propTypes","PropTypes","navMenus","pageData","showSubnav","showSubnavOnScroll","keywords","seoKeywords","seoDescription","ogImage","robots","robotsMetaTag","canonicalUrlOverride","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","nativeMin","arrays","iteratee","comparator","othLength","othIndex","caches","Infinity","seen","outer","computed","castPath","toKey","path","func","isArrayLikeObject","baseGet","baseSlice","isIterateeCall","nativeCeil","ceil","nativeMax","guard","resIndex","baseIntersection","baseRest","castArrayLikeObject","mapped","baseEach","baseInvoke","isArrayLike","collection","isFunc","warning"],"mappings":"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","file":"component---src-templates-page-template-js-1451105d77ee23716ef7.js","sourcesContent":["import { useContext, useState, useCallback, createElement, useMemo } from 'react';\nimport { useForceUpdate } from '@reach/utils/use-force-update';\nimport { useIsomorphicLayoutEffect } from '@reach/utils/use-isomorphic-layout-effect';\nimport { usePrevious } from '@reach/utils/use-previous';\nimport { createNamedContext } from '@reach/utils/context';\nimport { noop } from '@reach/utils/noop';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction createDescendantContext(name, initialValue) {\n if (initialValue === void 0) {\n initialValue = {};\n }\n\n var descendants = [];\n return createNamedContext(name, _extends({\n descendants: descendants,\n registerDescendant: noop,\n unregisterDescendant: noop\n }, initialValue));\n}\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node and (optionally) a key. The key is useful\n * if multiple descendants have identical text values and we need to\n * differentiate siblings for some reason.\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation. However, in the few cases where\n * this is not the case, we can require an explicit index from the app.\n */\n\n\nfunction useDescendant(descendant, context, indexProp) {\n var forceUpdate = useForceUpdate();\n\n var _React$useContext = useContext(context),\n registerDescendant = _React$useContext.registerDescendant,\n unregisterDescendant = _React$useContext.unregisterDescendant,\n descendants = _React$useContext.descendants; // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n\n\n var index = indexProp != null ? indexProp : descendants.findIndex(function (item) {\n return item.element === descendant.element;\n });\n var previousDescendants = usePrevious(descendants); // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n\n var someDescendantsHaveChanged = descendants.some(function (descendant, index) {\n var _previousDescendants$;\n\n return descendant.element !== (previousDescendants == null ? void 0 : (_previousDescendants$ = previousDescendants[index]) == null ? void 0 : _previousDescendants$.element);\n }); // Prevent any flashing\n\n useIsomorphicLayoutEffect(function () {\n if (!descendant.element) forceUpdate();\n registerDescendant(_extends({}, descendant, {\n index: index\n }));\n return function () {\n return unregisterDescendant(descendant.element);\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [forceUpdate, index, registerDescendant, someDescendantsHaveChanged, unregisterDescendant].concat(Object.values(descendant)));\n return index;\n}\n\nfunction useDescendantsInit() {\n return useState([]);\n}\n\nfunction useDescendants(ctx) {\n return useContext(ctx).descendants;\n}\n\nfunction DescendantProvider(_ref) {\n var Ctx = _ref.context,\n children = _ref.children,\n items = _ref.items,\n set = _ref.set;\n var registerDescendant = useCallback(function (_ref2) {\n var element = _ref2.element,\n explicitIndex = _ref2.index,\n rest = _objectWithoutPropertiesLoose(_ref2, [\"element\", \"index\"]);\n\n if (!element) {\n return;\n }\n\n set(function (items) {\n var newItems;\n\n if (explicitIndex != null) {\n newItems = [].concat(items, [_extends({}, rest, {\n element: element,\n index: explicitIndex\n })]);\n } else if (items.length === 0) {\n // If there are no items, register at index 0 and bail.\n newItems = [].concat(items, [_extends({}, rest, {\n element: element,\n index: 0\n })]);\n } else if (items.find(function (item) {\n return item.element === element;\n })) {\n // If the element is already registered, just use the same array\n newItems = items;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n var index = items.findIndex(function (item) {\n if (!item.element || !element) {\n return false;\n } // Does this element's DOM node appear before another item in the\n // array in our DOM tree? If so, return true to grab the index at\n // this point in the array so we know where to insert the new\n // element.\n\n\n return Boolean(item.element.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING);\n });\n\n var newItem = _extends({}, rest, {\n element: element,\n index: index\n }); // If an index is not found we will push the element to the end.\n\n\n if (index === -1) {\n newItems = [].concat(items, [newItem]);\n } else {\n newItems = [].concat(items.slice(0, index), [newItem], items.slice(index));\n }\n }\n\n return newItems.map(function (item, index) {\n return _extends({}, item, {\n index: index\n });\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n var unregisterDescendant = useCallback(function (element) {\n if (!element) {\n return;\n }\n\n set(function (items) {\n return items.filter(function (item) {\n return element !== item.element;\n });\n });\n }, // set is a state setter initialized by the useDescendantsInit hook.\n // We can safely ignore the lint warning here because it will not change\n // between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n return /*#__PURE__*/createElement(Ctx.Provider, {\n value: useMemo(function () {\n return {\n descendants: items,\n registerDescendant: registerDescendant,\n unregisterDescendant: unregisterDescendant\n };\n }, [items, registerDescendant, unregisterDescendant])\n }, children);\n}\n/**\n * Testing this as an abstraction for compound components that use keyboard\n * navigation. Hoping this will help us prevent bugs and mismatched behavior\n * across various components, but it may also prove to be too messy of an\n * abstraction in the end.\n *\n * Currently used in:\n * - Tabs\n * - Accordion\n *\n * @param context\n * @param options\n */\n\n\nfunction useDescendantKeyDown(context, options) {\n var _React$useContext2 = useContext(context),\n descendants = _React$useContext2.descendants;\n\n var callback = options.callback,\n currentIndex = options.currentIndex,\n filter = options.filter,\n _options$key = options.key,\n key = _options$key === void 0 ? \"index\" : _options$key,\n _options$orientation = options.orientation,\n orientation = _options$orientation === void 0 ? \"vertical\" : _options$orientation,\n _options$rotate = options.rotate,\n rotate = _options$rotate === void 0 ? true : _options$rotate,\n _options$rtl = options.rtl,\n rtl = _options$rtl === void 0 ? false : _options$rtl;\n return function handleKeyDown(event) {\n if (![\"ArrowDown\", \"ArrowUp\", \"ArrowLeft\", \"ArrowRight\", \"PageUp\", \"PageDown\", \"Home\", \"End\"].includes(event.key)) {\n return;\n }\n\n var index = currentIndex != null ? currentIndex : -1; // If we use a filter function, we need to re-index our descendants array\n // so that filtered descendent elements aren't selected.\n\n var selectableDescendants = filter ? descendants.filter(filter) : descendants; // Current index should map to the updated array vs. the original\n // descendants array.\n\n if (filter) {\n index = selectableDescendants.findIndex(function (descendant) {\n return descendant.index === currentIndex;\n });\n } // We need some options for any of this to work!\n\n\n if (!selectableDescendants.length) {\n return;\n }\n\n function getNextOption() {\n var atBottom = index === selectableDescendants.length - 1;\n return atBottom ? rotate ? getFirstOption() : selectableDescendants[index] : selectableDescendants[(index + 1) % selectableDescendants.length];\n }\n\n function getPreviousOption() {\n var atTop = index === 0;\n return atTop ? rotate ? getLastOption() : selectableDescendants[index] : selectableDescendants[(index - 1 + selectableDescendants.length) % selectableDescendants.length];\n }\n\n function getFirstOption() {\n return selectableDescendants[0];\n }\n\n function getLastOption() {\n return selectableDescendants[selectableDescendants.length - 1];\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var next = getNextOption();\n callback(key === \"option\" ? next : next[key]);\n }\n\n break;\n\n case \"ArrowUp\":\n if (orientation === \"vertical\" || orientation === \"both\") {\n event.preventDefault();\n var prev = getPreviousOption();\n callback(key === \"option\" ? prev : prev[key]);\n }\n\n break;\n\n case \"ArrowLeft\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var nextOrPrev = (rtl ? getNextOption : getPreviousOption)();\n callback(key === \"option\" ? nextOrPrev : nextOrPrev[key]);\n }\n\n break;\n\n case \"ArrowRight\":\n if (orientation === \"horizontal\" || orientation === \"both\") {\n event.preventDefault();\n var prevOrNext = (rtl ? getPreviousOption : getNextOption)();\n callback(key === \"option\" ? prevOrNext : prevOrNext[key]);\n }\n\n break;\n\n case \"PageUp\":\n event.preventDefault();\n var prevOrFirst = (event.ctrlKey ? getPreviousOption : getFirstOption)();\n callback(key === \"option\" ? prevOrFirst : prevOrFirst[key]);\n break;\n\n case \"Home\":\n event.preventDefault();\n var first = getFirstOption();\n callback(key === \"option\" ? first : first[key]);\n break;\n\n case \"PageDown\":\n event.preventDefault();\n var nextOrLast = (event.ctrlKey ? getNextOption : getLastOption)();\n callback(key === \"option\" ? nextOrLast : nextOrLast[key]);\n break;\n\n case \"End\":\n event.preventDefault();\n var last = getLastOption();\n callback(key === \"option\" ? last : last[key]);\n break;\n }\n };\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nexport { DescendantProvider, createDescendantContext, useDescendant, useDescendantKeyDown, useDescendants, useDescendantsInit };","import { createContext } from 'react';\n\nfunction createNamedContext(name, defaultValue) {\n var Ctx = /*#__PURE__*/createContext(defaultValue);\n\n if (process.env.NODE_ENV !== \"production\") {\n Ctx.displayName = name;\n }\n\n return Ctx;\n}\n\nexport { createNamedContext };","'use strict'; ////////////////////////////////////////////////////////////////////////////////\n// Helpers\n// Merge objects\n//\n\nfunction assign(obj\n/*from1, from2, from3, ...*/\n) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n}\n\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n return _class(obj) === '[object String]';\n}\n\nfunction isObject(obj) {\n return _class(obj) === '[object Object]';\n}\n\nfunction isRegExp(obj) {\n return _class(obj) === '[object RegExp]';\n}\n\nfunction isFunction(obj) {\n return _class(obj) === '[object Function]';\n}\n\nfunction escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\n\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\n\nvar defaultSchemas = {\n 'http:': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp('^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i');\n }\n\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp('^' + self.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' + self.re.src_port + self.re.src_host_terminator + self.re.src_path, 'i');\n }\n\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') {\n return 0;\n }\n\n if (pos >= 3 && text[pos - 3] === '/') {\n return 0;\n }\n\n return tail.match(self.re.no_http)[0].length;\n }\n\n return 0;\n }\n },\n 'mailto:': {\n validate: function validate(text, pos, self) {\n var tail = text.slice(pos);\n\n if (!self.re.mailto) {\n self.re.mailto = new RegExp('^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i');\n }\n\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n\n return 0;\n }\n }\n};\n/*eslint-disable max-len*/\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\n\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'; // DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\n\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n/*eslint-enable max-len*/\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\n\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n\n return 0;\n };\n}\n\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n} // Schemas compiler. Build regexps.\n//\n\n\nfunction compile(self) {\n // Load & clone RE patterns.\n var re = self.re = require('./lib/re')(self.__opts__); // Define dynamic patterns\n\n\n var tlds = self.__tlds__.slice();\n\n self.onCompile();\n\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n\n tlds.push(re.src_xn);\n re.src_tlds = tlds.join('|');\n\n function untpl(tpl) {\n return tpl.replace('%TLDS%', re.src_tlds);\n }\n\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i'); //\n // Compile each schema\n //\n\n var aliases = [];\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name]; // skip disabled methods\n\n if (val === null) {\n return;\n }\n\n var compiled = {\n validate: null,\n link: null\n };\n self.__compiled__[name] = compiled;\n\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n\n return;\n }\n\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n\n schemaError(name, val);\n }); //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n\n self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n }); //\n // Fake record for guessed links\n //\n\n self.__compiled__[''] = {\n validate: null,\n normalize: createNormalizer()\n }; //\n // Build schema condition\n //\n\n var slist = Object.keys(self.__compiled__).filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n }).map(escapeRE).join('|'); // (?!_) cause 1.5x slowdown\n\n self.re.schema_test = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp(\"(^|(?!_)(?:[><\\uFF5C]|\" + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.schema_at_start = RegExp('^' + self.re.schema_search.source, 'i');\n self.re.pretest = RegExp('(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', 'i'); //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\n\n\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n\n\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n\n this.url = text;\n}\n\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n\n self.__compiled__[match.schema].normalize(match, self);\n\n return match;\n}\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\n\n\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n\n this.__opts__ = assign({}, defaultOptions, options); // Cache last tested result. Used to skip repeating steps on next `match` call.\n\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n\n this.__schema__ = '';\n this.__text_cache__ = '';\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n}\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\n\n\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\n\n\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\n\n\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n\n if (!text.length) {\n return false;\n }\n\n var m, ml, me, len, shift, next, re, tld_pos, at_pos; // try to scan for link with schema - that's the most simple rule\n\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n\n return this.__index__ >= 0;\n};\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\n\n\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\n\n\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\n\n\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0,\n result = []; // Try to take previous element from cache, if .test() called before\n\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n } // Cut head if cache was used\n\n\n var tail = shift ? text.slice(shift) : text; // Scan string until end reached\n\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n\n if (result.length) {\n return result;\n }\n\n return null;\n};\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\n\n\nLinkifyIt.prototype.matchAtStart = function matchAtStart(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n if (!text.length) return null;\n var m = this.re.schema_at_start.exec(text);\n if (!m) return null;\n var len = this.testSchemaAt(text, m[2], m[0].length);\n if (!len) return null;\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n return createMatch(this, 0);\n};\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\n\n\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n\n this.__tlds__ = this.__tlds__.concat(list).sort().filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n};\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\n\n\nLinkifyIt.prototype.normalize = function normalize(match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n if (!match.schema) {\n match.url = 'http://' + match.url;\n }\n\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\n\n\nLinkifyIt.prototype.onCompile = function onCompile() {};\n\nmodule.exports = LinkifyIt;","'use strict';\n\nmodule.exports = function (opts) {\n var re = {};\n opts = opts || {}; // Use direct extract instead of `regenerate` to reduse browserified size\n\n re.src_Any = require('uc.micro/properties/Any/regex').source;\n re.src_Cc = require('uc.micro/categories/Cc/regex').source;\n re.src_Z = require('uc.micro/categories/Z/regex').source;\n re.src_P = require('uc.micro/categories/P/regex').source; // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n\n re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|'); // \\p{\\Z\\Cc} (white spaces + control)\n\n re.src_ZCc = [re.src_Z, re.src_Cc].join('|'); // Experimental. List of chars, completely prohibited in links\n // because can separate it from other part of text\n\n var text_separators = \"[><\\uFF5C]\"; // All possible word characters (everything without punctuation, spaces & controls)\n // Defined via punctuation & spaces to save space\n // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n\n re.src_pseudo_letter = '(?:(?!' + text_separators + '|' + re.src_ZPCc + ')' + re.src_Any + ')'; // The same as abothe but without [0-9]\n // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n ////////////////////////////////////////////////////////////////////////////////\n\n re.src_ip4 = '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n\n re.src_auth = '(?:(?:(?!' + re.src_ZCc + '|[@/\\\\[\\\\]()]).)+@)?';\n re.src_port = '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?';\n re.src_host_terminator = '(?=$|' + text_separators + '|' + re.src_ZPCc + ')' + '(?!' + (opts['---'] ? '-(?!--)|' : '-|') + '_|:\\\\d|\\\\.-|\\\\.(?!$|' + re.src_ZPCc + '))';\n re.src_path = '(?:' + '[/?#]' + '(?:' + '(?!' + re.src_ZCc + '|' + text_separators + '|[()[\\\\]{}.,\"\\'?!\\\\-;]).|' + '\\\\[(?:(?!' + re.src_ZCc + '|\\\\]).)*\\\\]|' + '\\\\((?:(?!' + re.src_ZCc + '|[)]).)*\\\\)|' + '\\\\{(?:(?!' + re.src_ZCc + '|[}]).)*\\\\}|' + '\\\\\"(?:(?!' + re.src_ZCc + '|[\"]).)+\\\\\"|' + \"\\\\'(?:(?!\" + re.src_ZCc + \"|[']).)+\\\\'|\" + \"\\\\'(?=\" + re.src_pseudo_letter + '|[-])|' + // allow `I'm_king` if no pair found\n '\\\\.{2,}[a-zA-Z0-9%/&]|' + // google has many dots in \"google search\" links (#66, #81).\n // github has ... in commit range links,\n // Restrict to\n // - english\n // - percent-encoded\n // - parts of file path\n // - params separator\n // until more examples found.\n '\\\\.(?!' + re.src_ZCc + '|[.]|$)|' + (opts['---'] ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n : '\\\\-+|') + ',(?!' + re.src_ZCc + '|$)|' + // allow `,,,` in paths\n ';(?!' + re.src_ZCc + '|$)|' + // allow `;` if not followed by space-like char\n '\\\\!+(?!' + re.src_ZCc + '|[!]|$)|' + // allow `!!!` in paths, but not at the end\n '\\\\?(?!' + re.src_ZCc + '|[?]|$)' + ')+' + '|\\\\/' + ')?'; // Allow anything in markdown spec, forbid quote (\") at the first position\n // because emails enclosed in quotes are far more common\n\n re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n re.src_xn = 'xn--[a-z0-9\\\\-]{1,59}'; // More to read about domain names\n // http://serverfault.com/questions/638260/\n\n re.src_domain_root = // Allow letters & digits (http://test1)\n '(?:' + re.src_xn + '|' + re.src_pseudo_letter + '{1,63}' + ')';\n re.src_domain = '(?:' + re.src_xn + '|' + '(?:' + re.src_pseudo_letter + ')' + '|' + '(?:' + re.src_pseudo_letter + '(?:-|' + re.src_pseudo_letter + '){0,61}' + re.src_pseudo_letter + ')' + ')';\n re.src_host = '(?:' + // Don't need IP check, because digits are already allowed in normal domain names\n // src_ip4 +\n // '|' +\n '(?:(?:(?:' + re.src_domain + ')\\\\.)*' + re.src_domain\n /*_root*/\n + ')' + ')';\n re.tpl_host_fuzzy = '(?:' + re.src_ip4 + '|' + '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))' + ')';\n re.tpl_host_no_ip_fuzzy = '(?:(?:(?:' + re.src_domain + ')\\\\.)+(?:%TLDS%))';\n re.src_host_strict = re.src_host + re.src_host_terminator;\n re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator; ////////////////////////////////////////////////////////////////////////////////\n // Main rules\n // Rude test fuzzy links by host, for quick deny\n\n re.tpl_host_fuzzy_test = 'localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:' + re.src_ZPCc + '|>|$))';\n re.tpl_email_fuzzy = '(^|' + text_separators + '|\"|\\\\(|' + re.src_ZCc + ')' + '(' + re.src_email_name + '@' + re.tpl_host_fuzzy_strict + ')';\n re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re.src_ZPCc + '))' + \"((?![$+<=>^`|\\uFF5C])\" + re.tpl_host_port_fuzzy_strict + re.src_path + ')';\n re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n // but can start with > (markdown blockquote)\n \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uFF5C]|\" + re.src_ZPCc + '))' + \"((?![$+<=>^`|\\uFF5C])\" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + ')';\n return re;\n};","'use strict';\n\nmodule.exports = require('./lib/');","// HTML5 entities map: { name -> utf16string }\n//\n'use strict';\n/*eslint quotes:0*/\n\nmodule.exports = require('entities/lib/maps/entities.json');","// List of valid html blocks names, accorting to commonmark spec\n// http://jgm.github.io/CommonMark/spec.html#html-blocks\n'use strict';\n\nmodule.exports = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'section', 'source', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];","// Regexps to match html elements\n'use strict';\n\nvar attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+';\nvar single_quoted = \"'[^']*'\";\nvar double_quoted = '\"[^\"]*\"';\nvar attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')';\nvar attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)';\nvar open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '|';\nvar processing = '<[?][\\\\s\\\\S]*?[?]>';\nvar declaration = ']*>';\nvar cdata = '';\nvar HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');\nvar HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')');\nmodule.exports.HTML_TAG_RE = HTML_TAG_RE;\nmodule.exports.HTML_OPEN_CLOSE_TAG_RE = HTML_OPEN_CLOSE_TAG_RE;","// Utilities\n//\n'use strict';\n\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\n\nfunction isString(obj) {\n return _class(obj) === '[object String]';\n}\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction has(object, key) {\n return _hasOwnProperty.call(object, key);\n} // Merge objects\n//\n\n\nfunction assign(obj\n/*from1, from2, from3, ...*/\n) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object');\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n} // Remove element from array and put another array at those position.\n// Useful for some operations with tokens\n\n\nfunction arrayReplaceAt(src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction isValidEntityCode(c) {\n /*eslint no-bitwise:0*/\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) {\n return false;\n } // never used\n\n\n if (c >= 0xFDD0 && c <= 0xFDEF) {\n return false;\n }\n\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) {\n return false;\n } // control codes\n\n\n if (c >= 0x00 && c <= 0x08) {\n return false;\n }\n\n if (c === 0x0B) {\n return false;\n }\n\n if (c >= 0x0E && c <= 0x1F) {\n return false;\n }\n\n if (c >= 0x7F && c <= 0x9F) {\n return false;\n } // out of range\n\n\n if (c > 0x10FFFF) {\n return false;\n }\n\n return true;\n}\n\nfunction fromCodePoint(c) {\n /*eslint no-bitwise:0*/\n if (c > 0xffff) {\n c -= 0x10000;\n var surrogate1 = 0xd800 + (c >> 10),\n surrogate2 = 0xdc00 + (c & 0x3ff);\n return String.fromCharCode(surrogate1, surrogate2);\n }\n\n return String.fromCharCode(c);\n}\n\nvar UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g;\nvar ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nvar UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi');\nvar DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;\n\nvar entities = require('./entities');\n\nfunction replaceEntityPattern(match, name) {\n var code = 0;\n\n if (has(entities, name)) {\n return entities[name];\n }\n\n if (name.charCodeAt(0) === 0x23\n /* # */\n && DIGITAL_ENTITY_TEST_RE.test(name)) {\n code = name[1].toLowerCase() === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code);\n }\n }\n\n return match;\n}\n/*function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n}*/\n\n\nfunction unescapeMd(str) {\n if (str.indexOf('\\\\') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_MD_RE, '$1');\n}\n\nfunction unescapeAll(str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) {\n return str;\n }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) {\n return escaped;\n }\n\n return replaceEntityPattern(match, entity);\n });\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nvar HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nvar HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n};\n\nfunction replaceUnsafeChar(ch) {\n return HTML_REPLACEMENTS[ch];\n}\n\nfunction escapeHtml(str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n }\n\n return str;\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\n\nfunction escapeRE(str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&');\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nfunction isSpace(code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true;\n }\n\n return false;\n} // Zs (unicode class) || [\\t\\f\\v\\r\\n]\n\n\nfunction isWhiteSpace(code) {\n if (code >= 0x2000 && code <= 0x200A) {\n return true;\n }\n\n switch (code) {\n case 0x09: // \\t\n\n case 0x0A: // \\n\n\n case 0x0B: // \\v\n\n case 0x0C: // \\f\n\n case 0x0D: // \\r\n\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true;\n }\n\n return false;\n} ////////////////////////////////////////////////////////////////////////////////\n\n/*eslint-disable max-len*/\n\n\nvar UNICODE_PUNCT_RE = require('uc.micro/categories/P/regex'); // Currently without astral characters support.\n\n\nfunction isPunctChar(ch) {\n return UNICODE_PUNCT_RE.test(ch);\n} // Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\n\n\nfunction isMdAsciiPunct(ch) {\n switch (ch) {\n case 0x21\n /* ! */\n :\n case 0x22\n /* \" */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x27\n /* ' */\n :\n case 0x28\n /* ( */\n :\n case 0x29\n /* ) */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2C\n /* , */\n :\n case 0x2D\n /* - */\n :\n case 0x2E\n /* . */\n :\n case 0x2F\n /* / */\n :\n case 0x3A\n /* : */\n :\n case 0x3B\n /* ; */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x3F\n /* ? */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7C\n /* | */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n} // Hepler to unify [reference labels].\n//\n\n\nfunction normalizeReference(str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' '); // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß');\n } // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n\n\n return str.toLowerCase().toUpperCase();\n} ////////////////////////////////////////////////////////////////////////////////\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\n\n\nexports.lib = {};\nexports.lib.mdurl = require('mdurl');\nexports.lib.ucmicro = require('uc.micro');\nexports.assign = assign;\nexports.isString = isString;\nexports.has = has;\nexports.unescapeMd = unescapeMd;\nexports.unescapeAll = unescapeAll;\nexports.isValidEntityCode = isValidEntityCode;\nexports.fromCodePoint = fromCodePoint; // exports.replaceEntities = replaceEntities;\n\nexports.escapeHtml = escapeHtml;\nexports.arrayReplaceAt = arrayReplaceAt;\nexports.isSpace = isSpace;\nexports.isWhiteSpace = isWhiteSpace;\nexports.isMdAsciiPunct = isMdAsciiPunct;\nexports.isPunctChar = isPunctChar;\nexports.escapeRE = escapeRE;\nexports.normalizeReference = normalizeReference;","// Just a shortcut for bulk export\n'use strict';\n\nexports.parseLinkLabel = require('./parse_link_label');\nexports.parseLinkDestination = require('./parse_link_destination');\nexports.parseLinkTitle = require('./parse_link_title');","// Parse link destination\n//\n'use strict';\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\nmodule.exports = function parseLinkDestination(str, pos, max) {\n var code,\n level,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (str.charCodeAt(pos) === 0x3C\n /* < */\n ) {\n pos++;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x0A\n /* \\n */\n ) {\n return result;\n }\n\n if (code === 0x3C\n /* < */\n ) {\n return result;\n }\n\n if (code === 0x3E\n /* > */\n ) {\n result.pos = pos + 1;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos += 2;\n continue;\n }\n\n pos++;\n } // no closing '>'\n\n\n return result;\n } // this should be ... } else { ... branch\n\n\n level = 0;\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === 0x20) {\n break;\n } // ascii control characters\n\n\n if (code < 0x20 || code === 0x7F) {\n break;\n }\n\n if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) {\n break;\n }\n\n pos += 2;\n continue;\n }\n\n if (code === 0x28\n /* ( */\n ) {\n level++;\n\n if (level > 32) {\n return result;\n }\n }\n\n if (code === 0x29\n /* ) */\n ) {\n if (level === 0) {\n break;\n }\n\n level--;\n }\n\n pos++;\n }\n\n if (start === pos) {\n return result;\n }\n\n if (level !== 0) {\n return result;\n }\n\n result.str = unescapeAll(str.slice(start, pos));\n result.lines = lines;\n result.pos = pos;\n result.ok = true;\n return result;\n};","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n'use strict';\n\nmodule.exports = function parseLinkLabel(state, start, disableNested) {\n var level,\n found,\n marker,\n prevPos,\n labelEnd = -1,\n max = state.posMax,\n oldPos = state.pos;\n state.pos = start + 1;\n level = 1;\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos);\n\n if (marker === 0x5D\n /* ] */\n ) {\n level--;\n\n if (level === 0) {\n found = true;\n break;\n }\n }\n\n prevPos = state.pos;\n state.md.inline.skipToken(state);\n\n if (marker === 0x5B\n /* [ */\n ) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++;\n } else if (disableNested) {\n state.pos = oldPos;\n return -1;\n }\n }\n }\n\n if (found) {\n labelEnd = state.pos;\n } // restore old state\n\n\n state.pos = oldPos;\n return labelEnd;\n};","// Parse link title\n//\n'use strict';\n\nvar unescapeAll = require('../common/utils').unescapeAll;\n\nmodule.exports = function parseLinkTitle(str, pos, max) {\n var code,\n marker,\n lines = 0,\n start = pos,\n result = {\n ok: false,\n pos: 0,\n lines: 0,\n str: ''\n };\n\n if (pos >= max) {\n return result;\n }\n\n marker = str.charCodeAt(pos);\n\n if (marker !== 0x22\n /* \" */\n && marker !== 0x27\n /* ' */\n && marker !== 0x28\n /* ( */\n ) {\n return result;\n }\n\n pos++; // if opening marker is \"(\", switch it to closing marker \")\"\n\n if (marker === 0x28) {\n marker = 0x29;\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos);\n\n if (code === marker) {\n result.pos = pos + 1;\n result.lines = lines;\n result.str = unescapeAll(str.slice(start + 1, pos));\n result.ok = true;\n return result;\n } else if (code === 0x28\n /* ( */\n && marker === 0x29\n /* ) */\n ) {\n return result;\n } else if (code === 0x0A) {\n lines++;\n } else if (code === 0x5C\n /* \\ */\n && pos + 1 < max) {\n pos++;\n\n if (str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n\n pos++;\n }\n\n return result;\n};","// Main parser class\n'use strict';\n\nvar utils = require('./common/utils');\n\nvar helpers = require('./helpers');\n\nvar Renderer = require('./renderer');\n\nvar ParserCore = require('./parser_core');\n\nvar ParserBlock = require('./parser_block');\n\nvar ParserInline = require('./parser_inline');\n\nvar LinkifyIt = require('linkify-it');\n\nvar mdurl = require('mdurl');\n\nvar punycode = require('punycode');\n\nvar config = {\n default: require('./presets/default'),\n zero: require('./presets/zero'),\n commonmark: require('./presets/commonmark')\n}; ////////////////////////////////////////////////////////////////////////////////\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nvar BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nvar GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\n\nfunction validateLink(url) {\n // url should be normalized at this point, and existing entities are decoded\n var str = url.trim().toLowerCase();\n return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) ? true : false : true;\n} ////////////////////////////////////////////////////////////////////////////////\n\n\nvar RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:'];\n\nfunction normalizeLink(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toASCII(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n }\n\n return mdurl.encode(mdurl.format(parsed));\n}\n\nfunction normalizeLinkText(url) {\n var parsed = mdurl.parse(url, true);\n\n if (parsed.hostname) {\n // Encode hostnames in urls like:\n // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n //\n // We don't encode unknown schemas, because it's likely that we encode\n // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n //\n if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n try {\n parsed.hostname = punycode.toUnicode(parsed.hostname);\n } catch (er) {\n /**/\n }\n }\n } // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n\n\n return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%');\n}\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n * md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.js) -\n * configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) -\n * similar to GFM, used when no preset name given. Enables all available rules,\n * but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.js) -\n * all rules disabled. Useful to quickly setup your config via `.enable()`.\n * For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n * That's not safe! You may need external sanitizer to protect output from XSS.\n * It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n * (`
`). This is needed only for full CommonMark compatibility. In real\n * world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `
`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n * Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__ - `false`. Set `true` to enable [some language-neutral\n * replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) +\n * quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n * pairs, when typographer enabled and smartquotes on. For example, you can\n * use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n * `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n * Highlighter `function (str, lang)` should return escaped HTML. It can also\n * return empty string if the source was not changed and should be escaped\n * externaly. If result starts with `):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n * highlight: function (str, lang) {\n * if (lang && hljs.getLanguage(lang)) {\n * try {\n * return '
' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '
';\n * } catch (__) {}\n * }\n *\n * return '
' + md.utils.escapeHtml(str) + '
';\n * }\n * });\n * ```\n *\n **/\n\n\nfunction MarkdownIt(presetName, options) {\n if (!(this instanceof MarkdownIt)) {\n return new MarkdownIt(presetName, options);\n }\n\n if (!options) {\n if (!utils.isString(presetName)) {\n options = presetName || {};\n presetName = 'default';\n }\n }\n /**\n * MarkdownIt#inline -> ParserInline\n *\n * Instance of [[ParserInline]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n\n this.inline = new ParserInline();\n /**\n * MarkdownIt#block -> ParserBlock\n *\n * Instance of [[ParserBlock]]. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.block = new ParserBlock();\n /**\n * MarkdownIt#core -> Core\n *\n * Instance of [[Core]] chain executor. You may need it to add new rules when\n * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n * [[MarkdownIt.enable]].\n **/\n\n this.core = new ParserCore();\n /**\n * MarkdownIt#renderer -> Renderer\n *\n * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n * rules for new token types, generated by plugins.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * function myToken(tokens, idx, options, env, self) {\n * //...\n * return result;\n * };\n *\n * md.renderer.rules['my_token'] = myToken\n * ```\n *\n * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js).\n **/\n\n this.renderer = new Renderer();\n /**\n * MarkdownIt#linkify -> LinkifyIt\n *\n * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js)\n * rule.\n **/\n\n this.linkify = new LinkifyIt();\n /**\n * MarkdownIt#validateLink(url) -> Boolean\n *\n * Link validation function. CommonMark allows too much in links. By default\n * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n * except some embedded image types.\n *\n * You can change this behaviour:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * // enable everything\n * md.validateLink = function () { return true; }\n * ```\n **/\n\n this.validateLink = validateLink;\n /**\n * MarkdownIt#normalizeLink(url) -> String\n *\n * Function used to encode link url to a machine-readable format,\n * which includes url-encoding, punycode, etc.\n **/\n\n this.normalizeLink = normalizeLink;\n /**\n * MarkdownIt#normalizeLinkText(url) -> String\n *\n * Function used to decode link url to a human-readable format`\n **/\n\n this.normalizeLinkText = normalizeLinkText; // Expose utils & helpers for easy acces from plugins\n\n /**\n * MarkdownIt#utils -> utils\n *\n * Assorted utility functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.js).\n **/\n\n this.utils = utils;\n /**\n * MarkdownIt#helpers -> helpers\n *\n * Link components parser functions, useful to write plugins. See details\n * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n **/\n\n this.helpers = utils.assign({}, helpers);\n this.options = {};\n this.configure(presetName);\n\n if (options) {\n this.set(options);\n }\n}\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .set({ html: true, breaks: true })\n * .set({ typographer, true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\n\n\nMarkdownIt.prototype.set = function (options) {\n utils.assign(this.options, options);\n return this;\n};\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\n\n\nMarkdownIt.prototype.configure = function (presets) {\n var self = this,\n presetName;\n\n if (utils.isString(presets)) {\n presetName = presets;\n presets = config[presetName];\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n }\n }\n\n if (!presets) {\n throw new Error('Wrong `markdown-it` preset, can\\'t be empty');\n }\n\n if (presets.options) {\n self.set(presets.options);\n }\n\n if (presets.components) {\n Object.keys(presets.components).forEach(function (name) {\n if (presets.components[name].rules) {\n self[name].ruler.enableOnly(presets.components[name].rules);\n }\n\n if (presets.components[name].rules2) {\n self[name].ruler2.enableOnly(presets.components[name].rules2);\n }\n });\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n * .enable(['sub', 'sup'])\n * .disable('smartquotes');\n * ```\n **/\n\n\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.enable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.enable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\n\n\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n var result = [];\n\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n ['core', 'block', 'inline'].forEach(function (chain) {\n result = result.concat(this[chain].ruler.disable(list, true));\n }, this);\n result = result.concat(this.inline.ruler2.disable(list, true));\n var missed = list.filter(function (name) {\n return result.indexOf(name) < 0;\n });\n\n if (missed.length && !ignoreInvalid) {\n throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed);\n }\n\n return this;\n};\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n * });\n * ```\n **/\n\n\nMarkdownIt.prototype.use = function (plugin\n/*, params, ... */\n) {\n var args = [this].concat(Array.prototype.slice.call(arguments, 1));\n plugin.apply(plugin, args);\n return this;\n};\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\n\n\nMarkdownIt.prototype.parse = function (src, env) {\n if (typeof src !== 'string') {\n throw new Error('Input data should be a String');\n }\n\n var state = new this.core.State(src, this, env);\n this.core.process(state);\n return state.tokens;\n};\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\n\n\nMarkdownIt.prototype.render = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parse(src, env), this.options, env);\n};\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\n\n\nMarkdownIt.prototype.parseInline = function (src, env) {\n var state = new this.core.State(src, this, env);\n state.inlineMode = true;\n this.core.process(state);\n return state.tokens;\n};\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `

` tags.\n **/\n\n\nMarkdownIt.prototype.renderInline = function (src, env) {\n env = env || {};\n return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\n\nmodule.exports = MarkdownIt;","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n'use strict';\n\nvar Ruler = require('./ruler');\n\nvar _rules = [// First 2 params - rule name & source. Secondary array - list of rules,\n// which can be terminated by this one.\n['table', require('./rules_block/table'), ['paragraph', 'reference']], ['code', require('./rules_block/code')], ['fence', require('./rules_block/fence'), ['paragraph', 'reference', 'blockquote', 'list']], ['blockquote', require('./rules_block/blockquote'), ['paragraph', 'reference', 'blockquote', 'list']], ['hr', require('./rules_block/hr'), ['paragraph', 'reference', 'blockquote', 'list']], ['list', require('./rules_block/list'), ['paragraph', 'reference', 'blockquote']], ['reference', require('./rules_block/reference')], ['html_block', require('./rules_block/html_block'), ['paragraph', 'reference', 'blockquote']], ['heading', require('./rules_block/heading'), ['paragraph', 'reference', 'blockquote']], ['lheading', require('./rules_block/lheading')], ['paragraph', require('./rules_block/paragraph')]];\n/**\n * new ParserBlock()\n **/\n\nfunction ParserBlock() {\n /**\n * ParserBlock#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of block rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1], {\n alt: (_rules[i][2] || []).slice()\n });\n }\n} // Generate tokens for input range\n//\n\n\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n line = startLine,\n hasEmptyLines = false,\n maxNesting = state.md.options.maxNesting;\n\n while (line < endLine) {\n state.line = line = state.skipEmptyLines(line);\n\n if (line >= endLine) {\n break;\n } // Termination condition for nested calls.\n // Nested calls currently used for blockquotes & lists\n\n\n if (state.sCount[line] < state.blkIndent) {\n break;\n } // If nesting level exceeded - skip tail to the end. That's not ordinary\n // situation and we should not care about content.\n\n\n if (state.level >= maxNesting) {\n state.line = endLine;\n break;\n } // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.line`\n // - update `state.tokens`\n // - return true\n\n\n for (i = 0; i < len; i++) {\n ok = rules[i](state, line, endLine, false);\n\n if (ok) {\n break;\n }\n } // set state.tight if we had an empty line before current tag\n // i.e. latest empty line should not count\n\n\n state.tight = !hasEmptyLines; // paragraph might \"eat\" one newline after it in nested lists\n\n if (state.isEmpty(state.line - 1)) {\n hasEmptyLines = true;\n }\n\n line = state.line;\n\n if (line < endLine && state.isEmpty(line)) {\n hasEmptyLines = true;\n line++;\n state.line = line;\n }\n }\n};\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\n\n\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n var state;\n\n if (!src) {\n return;\n }\n\n state = new this.State(src, md, env, outTokens);\n this.tokenize(state, state.line, state.lineMax);\n};\n\nParserBlock.prototype.State = require('./rules_block/state_block');\nmodule.exports = ParserBlock;","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n'use strict';\n\nvar Ruler = require('./ruler');\n\nvar _rules = [['normalize', require('./rules_core/normalize')], ['block', require('./rules_core/block')], ['inline', require('./rules_core/inline')], ['linkify', require('./rules_core/linkify')], ['replacements', require('./rules_core/replacements')], ['smartquotes', require('./rules_core/smartquotes')], // `text_join` finds `text_special` tokens (for escape sequences)\n// and joins them with the rest of the text\n['text_join', require('./rules_core/text_join')]];\n/**\n * new Core()\n **/\n\nfunction Core() {\n /**\n * Core#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of core rules.\n **/\n this.ruler = new Ruler();\n\n for (var i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n}\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\n\n\nCore.prototype.process = function (state) {\n var i, l, rules;\n rules = this.ruler.getRules('');\n\n for (i = 0, l = rules.length; i < l; i++) {\n rules[i](state);\n }\n};\n\nCore.prototype.State = require('./rules_core/state_core');\nmodule.exports = Core;","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n'use strict';\n\nvar Ruler = require('./ruler'); ////////////////////////////////////////////////////////////////////////////////\n// Parser rules\n\n\nvar _rules = [['text', require('./rules_inline/text')], ['linkify', require('./rules_inline/linkify')], ['newline', require('./rules_inline/newline')], ['escape', require('./rules_inline/escape')], ['backticks', require('./rules_inline/backticks')], ['strikethrough', require('./rules_inline/strikethrough').tokenize], ['emphasis', require('./rules_inline/emphasis').tokenize], ['link', require('./rules_inline/link')], ['image', require('./rules_inline/image')], ['autolink', require('./rules_inline/autolink')], ['html_inline', require('./rules_inline/html_inline')], ['entity', require('./rules_inline/entity')]]; // `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\n\nvar _rules2 = [['balance_pairs', require('./rules_inline/balance_pairs')], ['strikethrough', require('./rules_inline/strikethrough').postProcess], ['emphasis', require('./rules_inline/emphasis').postProcess], // rules for pairs separate '**' into its own text tokens, which may be left unused,\n// rule below merges unused segments back with the rest of the text\n['fragments_join', require('./rules_inline/fragments_join')]];\n/**\n * new ParserInline()\n **/\n\nfunction ParserInline() {\n var i;\n /**\n * ParserInline#ruler -> Ruler\n *\n * [[Ruler]] instance. Keep configuration of inline rules.\n **/\n\n this.ruler = new Ruler();\n\n for (i = 0; i < _rules.length; i++) {\n this.ruler.push(_rules[i][0], _rules[i][1]);\n }\n /**\n * ParserInline#ruler2 -> Ruler\n *\n * [[Ruler]] instance. Second ruler used for post-processing\n * (e.g. in emphasis-like rules).\n **/\n\n\n this.ruler2 = new Ruler();\n\n for (i = 0; i < _rules2.length; i++) {\n this.ruler2.push(_rules2[i][0], _rules2[i][1]);\n }\n} // Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\n\n\nParserInline.prototype.skipToken = function (state) {\n var ok,\n i,\n pos = state.pos,\n rules = this.ruler.getRules(''),\n len = rules.length,\n maxNesting = state.md.options.maxNesting,\n cache = state.cache;\n\n if (typeof cache[pos] !== 'undefined') {\n state.pos = cache[pos];\n return;\n }\n\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n // Increment state.level and decrement it later to limit recursion.\n // It's harmless to do here, because no tokens are created. But ideally,\n // we'd need a separate private state variable for this purpose.\n //\n state.level++;\n ok = rules[i](state, true);\n state.level--;\n\n if (ok) {\n break;\n }\n }\n } else {\n // Too much nesting, just skip until the end of the paragraph.\n //\n // NOTE: this will cause links to behave incorrectly in the following case,\n // when an amount of `[` is exactly equal to `maxNesting + 1`:\n //\n // [[[[[[[[[[[[[[[[[[[[[foo]()\n //\n // TODO: remove this workaround when CM standard will allow nested links\n // (we can replace it by preventing links from being parsed in\n // validation mode)\n //\n state.pos = state.posMax;\n }\n\n if (!ok) {\n state.pos++;\n }\n\n cache[pos] = state.pos;\n}; // Generate tokens for input range\n//\n\n\nParserInline.prototype.tokenize = function (state) {\n var ok,\n i,\n rules = this.ruler.getRules(''),\n len = rules.length,\n end = state.posMax,\n maxNesting = state.md.options.maxNesting;\n\n while (state.pos < end) {\n // Try all possible rules.\n // On success, rule should:\n //\n // - update `state.pos`\n // - update `state.tokens`\n // - return true\n if (state.level < maxNesting) {\n for (i = 0; i < len; i++) {\n ok = rules[i](state, false);\n\n if (ok) {\n break;\n }\n }\n }\n\n if (ok) {\n if (state.pos >= end) {\n break;\n }\n\n continue;\n }\n\n state.pending += state.src[state.pos++];\n }\n\n if (state.pending) {\n state.pushPending();\n }\n};\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\n\n\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n var i, rules, len;\n var state = new this.State(str, md, env, outTokens);\n this.tokenize(state);\n rules = this.ruler2.getRules('');\n len = rules.length;\n\n for (i = 0; i < len; i++) {\n rules[i](state);\n }\n};\n\nParserInline.prototype.State = require('./rules_inline/state_inline');\nmodule.exports = ParserInline;","// Commonmark default options\n'use strict';\n\nmodule.exports = {\n options: {\n html: true,\n // Enable HTML tags in source\n xhtmlOut: true,\n // Use '/' to close single tags (
)\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with )\n breaks: false,\n // Convert '\\n' in paragraphs into
\n langPrefix: 'language-',\n // CSS language prefix for fenced blocks\n linkify: false,\n // autoconvert URL-like texts to links\n // Enable some language-neutral replacements + quotes beautification\n typographer: false,\n // Double + single quotes replacement pairs, when typographer enabled,\n // and smartquotes on. Could be either a String or an Array.\n //\n // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n quotes: \"\\u201C\\u201D\\u2018\\u2019\",\n\n /* “”‘’ */\n // Highlighter function. Should return escaped HTML,\n // or '' if the source string is not changed and should be escaped externaly.\n // If result starts with ' + escapeHtml(tokens[idx].content) + '';\n};\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n var token = tokens[idx];\n return '' + escapeHtml(tokens[idx].content) + '\\n';\n};\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n var token = tokens[idx],\n info = token.info ? unescapeAll(token.info).trim() : '',\n langName = '',\n langAttrs = '',\n highlighted,\n i,\n arr,\n tmpAttrs,\n tmpToken;\n\n if (info) {\n arr = info.split(/(\\s+)/g);\n langName = arr[0];\n langAttrs = arr.slice(2).join('');\n }\n\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n } else {\n highlighted = escapeHtml(token.content);\n }\n\n if (highlighted.indexOf('' + highlighted + '\\n';\n }\n\n return '

' + highlighted + '
\\n';\n};\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n var token = tokens[idx]; // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n // should be placed on proper position for tests.\n //\n // Replace content with actual value\n\n token.attrs[token.attrIndex('alt')][1] = slf.renderInlineAsText(token.children, options, env);\n return slf.renderToken(tokens, idx, options);\n};\n\ndefault_rules.hardbreak = function (tokens, idx, options\n/*, env */\n) {\n return options.xhtmlOut ? '
\\n' : '
\\n';\n};\n\ndefault_rules.softbreak = function (tokens, idx, options\n/*, env */\n) {\n return options.breaks ? options.xhtmlOut ? '
\\n' : '
\\n' : '\\n';\n};\n\ndefault_rules.text = function (tokens, idx\n/*, options, env */\n) {\n return escapeHtml(tokens[idx].content);\n};\n\ndefault_rules.html_block = function (tokens, idx\n/*, options, env */\n) {\n return tokens[idx].content;\n};\n\ndefault_rules.html_inline = function (tokens, idx\n/*, options, env */\n) {\n return tokens[idx].content;\n};\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\n\n\nfunction Renderer() {\n /**\n * Renderer#rules -> Object\n *\n * Contains render rules for tokens. Can be updated and extended.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.renderer.rules.strong_open = function () { return ''; };\n * md.renderer.rules.strong_close = function () { return ''; };\n *\n * var result = md.renderInline(...);\n * ```\n *\n * Each rule is called as independent static function with fixed signature:\n *\n * ```javascript\n * function my_token_render(tokens, idx, options, env, renderer) {\n * // ...\n * return renderedHTML;\n * }\n * ```\n *\n * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js)\n * for more details and examples.\n **/\n this.rules = assign({}, default_rules);\n}\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\n\n\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n var i, l, result;\n\n if (!token.attrs) {\n return '';\n }\n\n result = '';\n\n for (i = 0, l = token.attrs.length; i < l; i++) {\n result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"';\n }\n\n return result;\n};\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\n\n\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n var nextToken,\n result = '',\n needLf = false,\n token = tokens[idx]; // Tight list paragraphs\n\n if (token.hidden) {\n return '';\n } // Insert a newline between hidden paragraph and subsequent opening\n // block-level tag.\n //\n // For example, here we should insert a newline before blockquote:\n // - a\n // >\n //\n\n\n if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n result += '\\n';\n } // Add token name, e.g. ``.\n //\n needLf = false;\n }\n }\n }\n }\n\n result += needLf ? '>\\n' : '>';\n return result;\n};\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\n\n\nRenderer.prototype.renderInline = function (tokens, options, env) {\n var type,\n result = '',\n rules = this.rules;\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (typeof rules[type] !== 'undefined') {\n result += rules[type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options);\n }\n }\n\n return result;\n};\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\n\n\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n var result = '';\n\n for (var i = 0, len = tokens.length; i < len; i++) {\n if (tokens[i].type === 'text') {\n result += tokens[i].content;\n } else if (tokens[i].type === 'image') {\n result += this.renderInlineAsText(tokens[i].children, options, env);\n } else if (tokens[i].type === 'softbreak') {\n result += '\\n';\n }\n }\n\n return result;\n};\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\n\n\nRenderer.prototype.render = function (tokens, options, env) {\n var i,\n len,\n type,\n result = '',\n rules = this.rules;\n\n for (i = 0, len = tokens.length; i < len; i++) {\n type = tokens[i].type;\n\n if (type === 'inline') {\n result += this.renderInline(tokens[i].children, options, env);\n } else if (typeof rules[type] !== 'undefined') {\n result += rules[tokens[i].type](tokens, i, options, env, this);\n } else {\n result += this.renderToken(tokens, i, options, env);\n }\n }\n\n return result;\n};\n\nmodule.exports = Renderer;","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n'use strict';\n/**\n * new Ruler()\n **/\n\nfunction Ruler() {\n // List of added rules. Each element is:\n //\n // {\n // name: XXX,\n // enabled: Boolean,\n // fn: Function(),\n // alt: [ name2, name3 ]\n // }\n //\n this.__rules__ = []; // Cached rule chains.\n //\n // First level - chain name, '' for default.\n // Second level - diginal anchor for fast filtering by charcodes.\n //\n\n this.__cache__ = null;\n} ////////////////////////////////////////////////////////////////////////////////\n// Helper methods, should not be used directly\n// Find rule index by name\n//\n\n\nRuler.prototype.__find__ = function (name) {\n for (var i = 0; i < this.__rules__.length; i++) {\n if (this.__rules__[i].name === name) {\n return i;\n }\n }\n\n return -1;\n}; // Build rules lookup cache\n//\n\n\nRuler.prototype.__compile__ = function () {\n var self = this;\n var chains = ['']; // collect unique names\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n rule.alt.forEach(function (altName) {\n if (chains.indexOf(altName) < 0) {\n chains.push(altName);\n }\n });\n });\n\n self.__cache__ = {};\n chains.forEach(function (chain) {\n self.__cache__[chain] = [];\n\n self.__rules__.forEach(function (rule) {\n if (!rule.enabled) {\n return;\n }\n\n if (chain && rule.alt.indexOf(chain) < 0) {\n return;\n }\n\n self.__cache__[chain].push(rule.fn);\n });\n });\n};\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\nRuler.prototype.at = function (name, fn, options) {\n var index = this.__find__(name);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + name);\n }\n\n this.__rules__[index].fn = fn;\n this.__rules__[index].alt = opt.alt || [];\n this.__cache__ = null;\n};\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n var index = this.__find__(beforeName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + beforeName);\n }\n\n this.__rules__.splice(index, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n var index = this.__find__(afterName);\n\n var opt = options || {};\n\n if (index === -1) {\n throw new Error('Parser rule not found: ' + afterName);\n }\n\n this.__rules__.splice(index + 1, 0, {\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n * //...\n * });\n * ```\n **/\n\n\nRuler.prototype.push = function (ruleName, fn, options) {\n var opt = options || {};\n\n this.__rules__.push({\n name: ruleName,\n enabled: true,\n fn: fn,\n alt: opt.alt || []\n });\n\n this.__cache__ = null;\n};\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\n\n\nRuler.prototype.enable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and enable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = true;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n};\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\n\n\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n this.__rules__.forEach(function (rule) {\n rule.enabled = false;\n });\n\n this.enable(list, ignoreInvalid);\n};\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\n\n\nRuler.prototype.disable = function (list, ignoreInvalid) {\n if (!Array.isArray(list)) {\n list = [list];\n }\n\n var result = []; // Search by name and disable\n\n list.forEach(function (name) {\n var idx = this.__find__(name);\n\n if (idx < 0) {\n if (ignoreInvalid) {\n return;\n }\n\n throw new Error('Rules manager: invalid rule name ' + name);\n }\n\n this.__rules__[idx].enabled = false;\n result.push(name);\n }, this);\n this.__cache__ = null;\n return result;\n};\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\n\n\nRuler.prototype.getRules = function (chainName) {\n if (this.__cache__ === null) {\n this.__compile__();\n } // Chain can be empty, if rules disabled. But we still have to return Array.\n\n\n return this.__cache__[chainName] || [];\n};\n\nmodule.exports = Ruler;","// Block quotes\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function blockquote(state, startLine, endLine, silent) {\n var adjustTab,\n ch,\n i,\n initial,\n l,\n lastLineEmpty,\n lines,\n nextLine,\n offset,\n oldBMarks,\n oldBSCount,\n oldIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n spaceAfterMarker,\n terminate,\n terminatorRules,\n token,\n isOutdented,\n oldLineMax = state.lineMax,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // check the block quote marker\n\n\n if (state.src.charCodeAt(pos++) !== 0x3E\n /* > */\n ) {\n return false;\n } // we know that it's going to be a valid blockquote,\n // so no point trying to find the end of it in silent mode\n\n\n if (silent) {\n return true;\n } // set offset past spaces and \">\"\n\n\n initial = offset = state.sCount[startLine] + 1; // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[startLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks = [state.bMarks[startLine]];\n state.bMarks[startLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[startLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n oldBSCount = [state.bsCount[startLine]];\n state.bsCount[startLine] = state.sCount[startLine] + 1 + (spaceAfterMarker ? 1 : 0);\n lastLineEmpty = pos >= max;\n oldSCount = [state.sCount[startLine]];\n state.sCount[startLine] = offset - initial;\n oldTShift = [state.tShift[startLine]];\n state.tShift[startLine] = pos - state.bMarks[startLine];\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n oldParentType = state.parentType;\n state.parentType = 'blockquote'; // Search the end of the block\n //\n // Block ends with either:\n // 1. an empty line outside:\n // ```\n // > test\n //\n // ```\n // 2. an empty line inside:\n // ```\n // >\n // test\n // ```\n // 3. another tag:\n // ```\n // > test\n // - - -\n // ```\n\n for (nextLine = startLine + 1; nextLine < endLine; nextLine++) {\n // check if it's outdented, i.e. it's inside list item and indented\n // less than said list item:\n //\n // ```\n // 1. anything\n // > current blockquote\n // 2. checking this line\n // ```\n isOutdented = state.sCount[nextLine] < state.blkIndent;\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos >= max) {\n // Case 1: line is not inside the blockquote, and this line is empty.\n break;\n }\n\n if (state.src.charCodeAt(pos++) === 0x3E\n /* > */\n && !isOutdented) {\n // This line is inside the blockquote.\n // set offset past spaces and \">\"\n initial = offset = state.sCount[nextLine] + 1; // skip one optional space after '>'\n\n if (state.src.charCodeAt(pos) === 0x20\n /* space */\n ) {\n // ' > test '\n // ^ -- position start of line here:\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n spaceAfterMarker = true;\n } else if (state.src.charCodeAt(pos) === 0x09\n /* tab */\n ) {\n spaceAfterMarker = true;\n\n if ((state.bsCount[nextLine] + offset) % 4 === 3) {\n // ' >\\t test '\n // ^ -- position start of line here (tab has width===1)\n pos++;\n initial++;\n offset++;\n adjustTab = false;\n } else {\n // ' >\\t test '\n // ^ -- position start of line here + shift bsCount slightly\n // to make extra space appear\n adjustTab = true;\n }\n } else {\n spaceAfterMarker = false;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n state.bMarks[nextLine] = pos;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n } else {\n offset++;\n }\n } else {\n break;\n }\n\n pos++;\n }\n\n lastLineEmpty = pos >= max;\n oldBSCount.push(state.bsCount[nextLine]);\n state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] = offset - initial;\n oldTShift.push(state.tShift[nextLine]);\n state.tShift[nextLine] = pos - state.bMarks[nextLine];\n continue;\n } // Case 2: line is not inside the blockquote, and the last line was empty.\n\n\n if (lastLineEmpty) {\n break;\n } // Case 3: another tag found.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n // Quirk to enforce \"hard termination mode\" for paragraphs;\n // normally if you call `tokenize(state, startLine, nextLine)`,\n // paragraphs will look below nextLine for paragraph continuation,\n // but if blockquote is terminated by another tag, they shouldn't\n state.lineMax = nextLine;\n\n if (state.blkIndent !== 0) {\n // state.blkIndent was non-zero, we now set it to zero,\n // so we need to re-calculate all offsets to appear as\n // if indent wasn't changed\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]);\n state.sCount[nextLine] -= state.blkIndent;\n }\n\n break;\n }\n\n oldBMarks.push(state.bMarks[nextLine]);\n oldBSCount.push(state.bsCount[nextLine]);\n oldTShift.push(state.tShift[nextLine]);\n oldSCount.push(state.sCount[nextLine]); // A negative indentation means that this is a paragraph continuation\n //\n\n state.sCount[nextLine] = -1;\n }\n\n oldIndent = state.blkIndent;\n state.blkIndent = 0;\n token = state.push('blockquote_open', 'blockquote', 1);\n token.markup = '>';\n token.map = lines = [startLine, 0];\n state.md.block.tokenize(state, startLine, nextLine);\n token = state.push('blockquote_close', 'blockquote', -1);\n token.markup = '>';\n state.lineMax = oldLineMax;\n state.parentType = oldParentType;\n lines[1] = state.line; // Restore original tShift; this might not be necessary since the parser\n // has already been here, but just to make sure we can do that.\n\n for (i = 0; i < oldTShift.length; i++) {\n state.bMarks[i + startLine] = oldBMarks[i];\n state.tShift[i + startLine] = oldTShift[i];\n state.sCount[i + startLine] = oldSCount[i];\n state.bsCount[i + startLine] = oldBSCount[i];\n }\n\n state.blkIndent = oldIndent;\n return true;\n};","// Code block (4 spaces padded)\n'use strict';\n\nmodule.exports = function code(state, startLine, endLine\n/*, silent*/\n) {\n var nextLine, last, token;\n\n if (state.sCount[startLine] - state.blkIndent < 4) {\n return false;\n }\n\n last = nextLine = startLine + 1;\n\n while (nextLine < endLine) {\n if (state.isEmpty(nextLine)) {\n nextLine++;\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n nextLine++;\n last = nextLine;\n continue;\n }\n\n break;\n }\n\n state.line = last;\n token = state.push('code_block', 'code', 0);\n token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n';\n token.map = [startLine, state.line];\n return true;\n};","// fences (``` lang, ~~~ lang)\n'use strict';\n\nmodule.exports = function fence(state, startLine, endLine, silent) {\n var marker,\n len,\n params,\n nextLine,\n mem,\n token,\n markup,\n haveEndMarker = false,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (pos + 3 > max) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos);\n\n if (marker !== 0x7E\n /* ~ */\n && marker !== 0x60\n /* ` */\n ) {\n return false;\n } // scan marker length\n\n\n mem = pos;\n pos = state.skipChars(pos, marker);\n len = pos - mem;\n\n if (len < 3) {\n return false;\n }\n\n markup = state.src.slice(mem, pos);\n params = state.src.slice(pos, max);\n\n if (marker === 0x60\n /* ` */\n ) {\n if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n return false;\n }\n } // Since start is found, we can report success here in validation mode\n\n\n if (silent) {\n return true;\n } // search end of block\n\n\n nextLine = startLine;\n\n for (;;) {\n nextLine++;\n\n if (nextLine >= endLine) {\n // unclosed block should be autoclosed by end of document.\n // also block seems to be autoclosed by end of parent\n break;\n }\n\n pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n // non-empty line with negative indent should stop the list:\n // - ```\n // test\n break;\n }\n\n if (state.src.charCodeAt(pos) !== marker) {\n continue;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n // closing fence should be indented less than 4 spaces\n continue;\n }\n\n pos = state.skipChars(pos, marker); // closing code fence must be at least as long as the opening one\n\n if (pos - mem < len) {\n continue;\n } // make sure tail has spaces only\n\n\n pos = state.skipSpaces(pos);\n\n if (pos < max) {\n continue;\n }\n\n haveEndMarker = true; // found!\n\n break;\n } // If a fence has heading spaces, they should be removed from its inner block\n\n\n len = state.sCount[startLine];\n state.line = nextLine + (haveEndMarker ? 1 : 0);\n token = state.push('fence', 'code', 0);\n token.info = params;\n token.content = state.getLines(startLine + 1, nextLine, len, true);\n token.markup = markup;\n token.map = [startLine, state.line];\n return true;\n};","// heading (#, ##, ...)\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function heading(state, startLine, endLine, silent) {\n var ch,\n level,\n tmp,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x23\n /* # */\n || pos >= max) {\n return false;\n } // count heading level\n\n\n level = 1;\n ch = state.src.charCodeAt(++pos);\n\n while (ch === 0x23\n /* # */\n && pos < max && level <= 6) {\n level++;\n ch = state.src.charCodeAt(++pos);\n }\n\n if (level > 6 || pos < max && !isSpace(ch)) {\n return false;\n }\n\n if (silent) {\n return true;\n } // Let's cut tails like ' ### ' from the end of string\n\n\n max = state.skipSpacesBack(max, pos);\n tmp = state.skipCharsBack(max, 0x23, pos); // #\n\n if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n max = tmp;\n }\n\n state.line = startLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = '########'.slice(0, level);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = state.src.slice(pos, max).trim();\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = '########'.slice(0, level);\n return true;\n};","// Horizontal rule\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker,\n cnt,\n ch,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n marker = state.src.charCodeAt(pos++); // Check hr marker\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x5F\n /* _ */\n ) {\n return false;\n } // markers can be mixed with spaces, but there should be at least 3 of them\n\n\n cnt = 1;\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n\n if (ch !== marker && !isSpace(ch)) {\n return false;\n }\n\n if (ch === marker) {\n cnt++;\n }\n }\n\n if (cnt < 3) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n state.line = startLine + 1;\n token = state.push('hr', 'hr', 0);\n token.map = [startLine, state.line];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n return true;\n};","// HTML block\n'use strict';\n\nvar block_names = require('../common/html_blocks');\n\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE; // An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\n\n\nvar HTML_SEQUENCES = [[/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true], [/^/, true], [/^<\\?/, /\\?>/, true], [/^/, true], [/^/, true], [new RegExp('^|$))', 'i'), /^$/, true], [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]];\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i,\n nextLine,\n token,\n lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine]; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (!state.md.options.html) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) {\n break;\n }\n }\n\n if (i === HTML_SEQUENCES.length) {\n return false;\n }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1; // If we are here - we detected HTML block.\n // Let's roll down till block end.\n\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) {\n nextLine++;\n }\n\n break;\n }\n }\n }\n\n state.line = nextLine;\n token = state.push('html_block', '', 0);\n token.map = [startLine, nextLine];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n return true;\n};","// lheading (---, ===)\n'use strict';\n\nmodule.exports = function lheading(state, startLine, endLine\n/*, silent*/\n) {\n var content,\n terminate,\n i,\n l,\n token,\n pos,\n max,\n level,\n marker,\n nextLine = startLine + 1,\n oldParentType,\n terminatorRules = state.md.block.ruler.getRules('paragraph'); // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // use paragraph to match terminatorRules\n // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } //\n // Check for underline in setext header\n //\n\n\n if (state.sCount[nextLine] >= state.blkIndent) {\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n\n if (pos < max) {\n marker = state.src.charCodeAt(pos);\n\n if (marker === 0x2D\n /* - */\n || marker === 0x3D\n /* = */\n ) {\n pos = state.skipChars(pos, marker);\n pos = state.skipSpaces(pos);\n\n if (pos >= max) {\n level = marker === 0x3D\n /* = */\n ? 1 : 2;\n break;\n }\n }\n }\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n if (!level) {\n // Didn't find valid underline\n return false;\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine + 1;\n token = state.push('heading_open', 'h' + String(level), 1);\n token.markup = String.fromCharCode(marker);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line - 1];\n token.children = [];\n token = state.push('heading_close', 'h' + String(level), -1);\n token.markup = String.fromCharCode(marker);\n state.parentType = oldParentType;\n return true;\n};","// Lists\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace; // Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\n\n\nfunction skipBulletListMarker(state, startLine) {\n var marker, pos, max, ch;\n pos = state.bMarks[startLine] + state.tShift[startLine];\n max = state.eMarks[startLine];\n marker = state.src.charCodeAt(pos++); // Check bullet\n\n if (marker !== 0x2A\n /* * */\n && marker !== 0x2D\n /* - */\n && marker !== 0x2B\n /* + */\n ) {\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" -test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n} // Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\n\n\nfunction skipOrderedListMarker(state, startLine) {\n var ch,\n start = state.bMarks[startLine] + state.tShift[startLine],\n pos = start,\n max = state.eMarks[startLine]; // List marker should have at least 2 chars (digit + dot)\n\n if (pos + 1 >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch < 0x30\n /* 0 */\n || ch > 0x39\n /* 9 */\n ) {\n return -1;\n }\n\n for (;;) {\n // EOL -> fail\n if (pos >= max) {\n return -1;\n }\n\n ch = state.src.charCodeAt(pos++);\n\n if (ch >= 0x30\n /* 0 */\n && ch <= 0x39\n /* 9 */\n ) {\n // List marker should have no more than 9 digits\n // (prevents integer overflow in browsers)\n if (pos - start >= 10) {\n return -1;\n }\n\n continue;\n } // found valid marker\n\n\n if (ch === 0x29\n /* ) */\n || ch === 0x2e\n /* . */\n ) {\n break;\n }\n\n return -1;\n }\n\n if (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n // \" 1.test \" - is not a list item\n return -1;\n }\n }\n\n return pos;\n}\n\nfunction markTightParagraphs(state, idx) {\n var i,\n l,\n level = state.level + 2;\n\n for (i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n state.tokens[i + 2].hidden = true;\n state.tokens[i].hidden = true;\n i += 2;\n }\n }\n}\n\nmodule.exports = function list(state, startLine, endLine, silent) {\n var ch,\n contentStart,\n i,\n indent,\n indentAfterMarker,\n initial,\n isOrdered,\n itemLines,\n l,\n listLines,\n listTokIdx,\n markerCharCode,\n markerValue,\n max,\n nextLine,\n offset,\n oldListIndent,\n oldParentType,\n oldSCount,\n oldTShift,\n oldTight,\n pos,\n posAfterMarker,\n prevEmptyEnd,\n start,\n terminate,\n terminatorRules,\n token,\n isTerminatingParagraph = false,\n tight = true; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n } // Special case:\n // - item 1\n // - item 2\n // - item 3\n // - item 4\n // - this one is a paragraph continuation\n\n\n if (state.listIndent >= 0 && state.sCount[startLine] - state.listIndent >= 4 && state.sCount[startLine] < state.blkIndent) {\n return false;\n } // limit conditions when list can interrupt\n // a paragraph (validation mode only)\n\n\n if (silent && state.parentType === 'paragraph') {\n // Next list item should still terminate previous list item;\n //\n // This code can fail if plugins use blkIndent as well as lists,\n // but I hope the spec gets fixed long before that happens.\n //\n if (state.sCount[startLine] >= state.blkIndent) {\n isTerminatingParagraph = true;\n }\n } // Detect list type and position after marker\n\n\n if ((posAfterMarker = skipOrderedListMarker(state, startLine)) >= 0) {\n isOrdered = true;\n start = state.bMarks[startLine] + state.tShift[startLine];\n markerValue = Number(state.src.slice(start, posAfterMarker - 1)); // If we're starting a new ordered list right after\n // a paragraph, it should start with 1.\n\n if (isTerminatingParagraph && markerValue !== 1) return false;\n } else if ((posAfterMarker = skipBulletListMarker(state, startLine)) >= 0) {\n isOrdered = false;\n } else {\n return false;\n } // If we're starting a new unordered list right after\n // a paragraph, first line should not be empty.\n\n\n if (isTerminatingParagraph) {\n if (state.skipSpaces(posAfterMarker) >= state.eMarks[startLine]) return false;\n } // We should terminate list on style change. Remember first one to compare.\n\n\n markerCharCode = state.src.charCodeAt(posAfterMarker - 1); // For validation mode we can terminate immediately\n\n if (silent) {\n return true;\n } // Start list\n\n\n listTokIdx = state.tokens.length;\n\n if (isOrdered) {\n token = state.push('ordered_list_open', 'ol', 1);\n\n if (markerValue !== 1) {\n token.attrs = [['start', markerValue]];\n }\n } else {\n token = state.push('bullet_list_open', 'ul', 1);\n }\n\n token.map = listLines = [startLine, 0];\n token.markup = String.fromCharCode(markerCharCode); //\n // Iterate list items\n //\n\n nextLine = startLine;\n prevEmptyEnd = false;\n terminatorRules = state.md.block.ruler.getRules('list');\n oldParentType = state.parentType;\n state.parentType = 'list';\n\n while (nextLine < endLine) {\n pos = posAfterMarker;\n max = state.eMarks[nextLine];\n initial = offset = state.sCount[nextLine] + posAfterMarker - (state.bMarks[startLine] + state.tShift[startLine]);\n\n while (pos < max) {\n ch = state.src.charCodeAt(pos);\n\n if (ch === 0x09) {\n offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n } else if (ch === 0x20) {\n offset++;\n } else {\n break;\n }\n\n pos++;\n }\n\n contentStart = pos;\n\n if (contentStart >= max) {\n // trimming space in \"- \\n 3\" case, indent is 1 here\n indentAfterMarker = 1;\n } else {\n indentAfterMarker = offset - initial;\n } // If we have more than 4 spaces, the indent is 1\n // (the rest is just indented code block)\n\n\n if (indentAfterMarker > 4) {\n indentAfterMarker = 1;\n } // \" - test\"\n // ^^^^^ - calculating total length of this thing\n\n\n indent = initial + indentAfterMarker; // Run subparser & write tokens\n\n token = state.push('list_item_open', 'li', 1);\n token.markup = String.fromCharCode(markerCharCode);\n token.map = itemLines = [startLine, 0];\n\n if (isOrdered) {\n token.info = state.src.slice(start, posAfterMarker - 1);\n } // change current state, then restore it after parser subcall\n\n\n oldTight = state.tight;\n oldTShift = state.tShift[startLine];\n oldSCount = state.sCount[startLine]; // - example list\n // ^ listIndent position will be here\n // ^ blkIndent position will be here\n //\n\n oldListIndent = state.listIndent;\n state.listIndent = state.blkIndent;\n state.blkIndent = indent;\n state.tight = true;\n state.tShift[startLine] = contentStart - state.bMarks[startLine];\n state.sCount[startLine] = offset;\n\n if (contentStart >= max && state.isEmpty(startLine + 1)) {\n // workaround for this case\n // (list item is empty, list terminates before \"foo\"):\n // ~~~~~~~~\n // -\n //\n // foo\n // ~~~~~~~~\n state.line = Math.min(state.line + 2, endLine);\n } else {\n state.md.block.tokenize(state, startLine, endLine, true);\n } // If any of list item is tight, mark list as tight\n\n\n if (!state.tight || prevEmptyEnd) {\n tight = false;\n } // Item become loose if finish with empty line,\n // but we should filter last element, because it means list finish\n\n\n prevEmptyEnd = state.line - startLine > 1 && state.isEmpty(state.line - 1);\n state.blkIndent = state.listIndent;\n state.listIndent = oldListIndent;\n state.tShift[startLine] = oldTShift;\n state.sCount[startLine] = oldSCount;\n state.tight = oldTight;\n token = state.push('list_item_close', 'li', -1);\n token.markup = String.fromCharCode(markerCharCode);\n nextLine = startLine = state.line;\n itemLines[1] = nextLine;\n contentStart = state.bMarks[startLine];\n\n if (nextLine >= endLine) {\n break;\n } //\n // Try to check if list is terminated or continued.\n //\n\n\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n break;\n } // fail if terminating block found\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n } // fail if list has another type\n\n\n if (isOrdered) {\n posAfterMarker = skipOrderedListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n\n start = state.bMarks[nextLine] + state.tShift[nextLine];\n } else {\n posAfterMarker = skipBulletListMarker(state, nextLine);\n\n if (posAfterMarker < 0) {\n break;\n }\n }\n\n if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n break;\n }\n } // Finalize list\n\n\n if (isOrdered) {\n token = state.push('ordered_list_close', 'ol', -1);\n } else {\n token = state.push('bullet_list_close', 'ul', -1);\n }\n\n token.markup = String.fromCharCode(markerCharCode);\n listLines[1] = nextLine;\n state.line = nextLine;\n state.parentType = oldParentType; // mark paragraphs tight if needed\n\n if (tight) {\n markTightParagraphs(state, listTokIdx);\n }\n\n return true;\n};","// Paragraph\n'use strict';\n\nmodule.exports = function paragraph(state, startLine\n/*, endLine*/\n) {\n var content,\n terminate,\n i,\n l,\n token,\n oldParentType,\n nextLine = startLine + 1,\n terminatorRules = state.md.block.ruler.getRules('paragraph'),\n endLine = state.lineMax;\n oldParentType = state.parentType;\n state.parentType = 'paragraph'; // jump line-by-line until empty one or EOF\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n state.line = nextLine;\n token = state.push('paragraph_open', 'p', 1);\n token.map = [startLine, state.line];\n token = state.push('inline', '', 0);\n token.content = content;\n token.map = [startLine, state.line];\n token.children = [];\n token = state.push('paragraph_close', 'p', -1);\n state.parentType = oldParentType;\n return true;\n};","'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function reference(state, startLine, _endLine, silent) {\n var ch,\n destEndPos,\n destEndLineNo,\n endLine,\n href,\n i,\n l,\n label,\n labelEnd,\n oldParentType,\n res,\n start,\n str,\n terminate,\n terminatorRules,\n title,\n lines = 0,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine],\n nextLine = startLine + 1; // if it's indented more than 3 spaces, it should be a code block\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n if (state.src.charCodeAt(pos) !== 0x5B\n /* [ */\n ) {\n return false;\n } // Simple check to quickly interrupt scan on [link](url) at the start of line.\n // Can be useful on practice: https://github.com/markdown-it/markdown-it/issues/54\n\n\n while (++pos < max) {\n if (state.src.charCodeAt(pos) === 0x5D\n /* ] */\n && state.src.charCodeAt(pos - 1) !== 0x5C\n /* \\ */\n ) {\n if (pos + 1 === max) {\n return false;\n }\n\n if (state.src.charCodeAt(pos + 1) !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n break;\n }\n }\n\n endLine = state.lineMax; // jump line-by-line until empty one or EOF\n\n terminatorRules = state.md.block.ruler.getRules('reference');\n oldParentType = state.parentType;\n state.parentType = 'reference';\n\n for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n // this would be a code block normally, but after paragraph\n // it's considered a lazy continuation regardless of what's there\n if (state.sCount[nextLine] - state.blkIndent > 3) {\n continue;\n } // quirk for blockquotes, this line should already be checked by that rule\n\n\n if (state.sCount[nextLine] < 0) {\n continue;\n } // Some tags can terminate paragraph without empty line.\n\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n }\n\n str = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n max = str.length;\n\n for (pos = 1; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x5B\n /* [ */\n ) {\n return false;\n } else if (ch === 0x5D\n /* ] */\n ) {\n labelEnd = pos;\n break;\n } else if (ch === 0x0A\n /* \\n */\n ) {\n lines++;\n } else if (ch === 0x5C\n /* \\ */\n ) {\n pos++;\n\n if (pos < max && str.charCodeAt(pos) === 0x0A) {\n lines++;\n }\n }\n }\n\n if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A\n /* : */\n ) {\n return false;\n } // [label]: destination 'title'\n // ^^^ skip optional whitespace here\n\n\n for (pos = labelEnd + 2; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkDestination(str, pos, max);\n\n if (!res.ok) {\n return false;\n }\n\n href = state.md.normalizeLink(res.str);\n\n if (!state.md.validateLink(href)) {\n return false;\n }\n\n pos = res.pos;\n lines += res.lines; // save cursor state, we could require to rollback later\n\n destEndPos = pos;\n destEndLineNo = lines; // [label]: destination 'title'\n // ^^^ skipping those spaces\n\n start = pos;\n\n for (; pos < max; pos++) {\n ch = str.charCodeAt(pos);\n\n if (ch === 0x0A) {\n lines++;\n } else if (isSpace(ch)) {\n /*eslint no-empty:0*/\n } else {\n break;\n }\n } // [label]: destination 'title'\n // ^^^^^^^ parse this\n\n\n res = state.md.helpers.parseLinkTitle(str, pos, max);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos;\n lines += res.lines;\n } else {\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n } // skip trailing spaces until the rest of the line\n\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n if (title) {\n // garbage at the end of the line after title,\n // but it could still be a valid reference if we roll back\n title = '';\n pos = destEndPos;\n lines = destEndLineNo;\n\n while (pos < max) {\n ch = str.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n\n pos++;\n }\n }\n }\n\n if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n // garbage at the end of the line\n return false;\n }\n\n label = normalizeReference(str.slice(1, labelEnd));\n\n if (!label) {\n // CommonMark 0.20 disallows empty labels\n return false;\n } // Reference can not terminate anything. This check is for safety only.\n\n /*istanbul ignore if*/\n\n\n if (silent) {\n return true;\n }\n\n if (typeof state.env.references === 'undefined') {\n state.env.references = {};\n }\n\n if (typeof state.env.references[label] === 'undefined') {\n state.env.references[label] = {\n title: title,\n href: href\n };\n }\n\n state.parentType = oldParentType;\n state.line = startLine + lines + 1;\n return true;\n};","// Parser state class\n'use strict';\n\nvar Token = require('../token');\n\nvar isSpace = require('../common/utils').isSpace;\n\nfunction StateBlock(src, md, env, tokens) {\n var ch, s, start, pos, len, indent, offset, indent_found;\n this.src = src; // link to parser instance\n\n this.md = md;\n this.env = env; //\n // Internal state vartiables\n //\n\n this.tokens = tokens;\n this.bMarks = []; // line begin offsets for fast jumps\n\n this.eMarks = []; // line end offsets for fast jumps\n\n this.tShift = []; // offsets of the first non-space characters (tabs not expanded)\n\n this.sCount = []; // indents for each line (tabs expanded)\n // An amount of virtual spaces (tabs expanded) between beginning\n // of each line (bMarks) and real beginning of that line.\n //\n // It exists only as a hack because blockquotes override bMarks\n // losing information in the process.\n //\n // It's used only when expanding tabs, you can think about it as\n // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n // means first tab should be expanded to 4-21%4 === 3 spaces.\n //\n\n this.bsCount = []; // block parser variables\n\n this.blkIndent = 0; // required block content indent (for example, if we are\n // inside a list, it would be positioned after list marker)\n\n this.line = 0; // line index in src\n\n this.lineMax = 0; // lines count\n\n this.tight = false; // loose/tight mode for lists\n\n this.ddIndent = -1; // indent of the current dd block (-1 if there isn't any)\n\n this.listIndent = -1; // indent of the current list block (-1 if there isn't any)\n // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n // used in lists to determine if they interrupt a paragraph\n\n this.parentType = 'root';\n this.level = 0; // renderer\n\n this.result = ''; // Create caches\n // Generate markers.\n\n s = this.src;\n indent_found = false;\n\n for (start = pos = indent = offset = 0, len = s.length; pos < len; pos++) {\n ch = s.charCodeAt(pos);\n\n if (!indent_found) {\n if (isSpace(ch)) {\n indent++;\n\n if (ch === 0x09) {\n offset += 4 - offset % 4;\n } else {\n offset++;\n }\n\n continue;\n } else {\n indent_found = true;\n }\n }\n\n if (ch === 0x0A || pos === len - 1) {\n if (ch !== 0x0A) {\n pos++;\n }\n\n this.bMarks.push(start);\n this.eMarks.push(pos);\n this.tShift.push(indent);\n this.sCount.push(offset);\n this.bsCount.push(0);\n indent_found = false;\n indent = 0;\n offset = 0;\n start = pos + 1;\n }\n } // Push fake entry to simplify cache bounds checks\n\n\n this.bMarks.push(s.length);\n this.eMarks.push(s.length);\n this.tShift.push(0);\n this.sCount.push(0);\n this.bsCount.push(0);\n this.lineMax = this.bMarks.length - 1; // don't count last fake line\n} // Push new token to \"stream\".\n//\n\n\nStateBlock.prototype.push = function (type, tag, nesting) {\n var token = new Token(type, tag, nesting);\n token.block = true;\n if (nesting < 0) this.level--; // closing tag\n\n token.level = this.level;\n if (nesting > 0) this.level++; // opening tag\n\n this.tokens.push(token);\n return token;\n};\n\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n for (var max = this.lineMax; from < max; from++) {\n if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n break;\n }\n }\n\n return from;\n}; // Skip spaces from given position.\n\n\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n var ch;\n\n for (var max = this.src.length; pos < max; pos++) {\n ch = this.src.charCodeAt(pos);\n\n if (!isSpace(ch)) {\n break;\n }\n }\n\n return pos;\n}; // Skip spaces from given position in reverse.\n\n\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (!isSpace(this.src.charCodeAt(--pos))) {\n return pos + 1;\n }\n }\n\n return pos;\n}; // Skip char codes from given position\n\n\nStateBlock.prototype.skipChars = function skipChars(pos, code) {\n for (var max = this.src.length; pos < max; pos++) {\n if (this.src.charCodeAt(pos) !== code) {\n break;\n }\n }\n\n return pos;\n}; // Skip char codes reverse from given position - 1\n\n\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code, min) {\n if (pos <= min) {\n return pos;\n }\n\n while (pos > min) {\n if (code !== this.src.charCodeAt(--pos)) {\n return pos + 1;\n }\n }\n\n return pos;\n}; // cut lines range from source.\n\n\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n var i,\n lineIndent,\n ch,\n first,\n last,\n queue,\n lineStart,\n line = begin;\n\n if (begin >= end) {\n return '';\n }\n\n queue = new Array(end - begin);\n\n for (i = 0; line < end; line++, i++) {\n lineIndent = 0;\n lineStart = first = this.bMarks[line];\n\n if (line + 1 < end || keepLastLF) {\n // No need for bounds check because we have fake entry on tail.\n last = this.eMarks[line] + 1;\n } else {\n last = this.eMarks[line];\n }\n\n while (first < last && lineIndent < indent) {\n ch = this.src.charCodeAt(first);\n\n if (isSpace(ch)) {\n if (ch === 0x09) {\n lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n } else {\n lineIndent++;\n }\n } else if (first - lineStart < this.tShift[line]) {\n // patched tShift masked characters to look like spaces (blockquotes, list markers)\n lineIndent++;\n } else {\n break;\n }\n\n first++;\n }\n\n if (lineIndent > indent) {\n // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n // with indent=2 becomes ' \\tfoobar'\n queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last);\n } else {\n queue[i] = this.src.slice(first, last);\n }\n }\n\n return queue.join('');\n}; // re-export Token class to use in block rules\n\n\nStateBlock.prototype.Token = Token;\nmodule.exports = StateBlock;","// GFM table, https://github.github.com/gfm/#tables-extension-\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nfunction getLine(state, line) {\n var pos = state.bMarks[line] + state.tShift[line],\n max = state.eMarks[line];\n return state.src.slice(pos, max);\n}\n\nfunction escapedSplit(str) {\n var result = [],\n pos = 0,\n max = str.length,\n ch,\n isEscaped = false,\n lastPos = 0,\n current = '';\n ch = str.charCodeAt(pos);\n\n while (pos < max) {\n if (ch === 0x7c\n /* | */\n ) {\n if (!isEscaped) {\n // pipe separating cells, '|'\n result.push(current + str.substring(lastPos, pos));\n current = '';\n lastPos = pos + 1;\n } else {\n // escaped pipe, '\\|'\n current += str.substring(lastPos, pos - 1);\n lastPos = pos;\n }\n }\n\n isEscaped = ch === 0x5c\n /* \\ */\n ;\n pos++;\n ch = str.charCodeAt(pos);\n }\n\n result.push(current + str.substring(lastPos));\n return result;\n}\n\nmodule.exports = function table(state, startLine, endLine, silent) {\n var ch, lineText, pos, i, l, nextLine, columns, columnCount, token, aligns, t, tableLines, tbodyLines, oldParentType, terminate, terminatorRules, firstCh, secondCh; // should have at least two lines\n\n if (startLine + 2 > endLine) {\n return false;\n }\n\n nextLine = startLine + 1;\n\n if (state.sCount[nextLine] < state.blkIndent) {\n return false;\n } // if it's indented more than 3 spaces, it should be a code block\n\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n return false;\n } // first character of the second line should be '|', '-', ':',\n // and no other characters are allowed but spaces;\n // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n firstCh = state.src.charCodeAt(pos++);\n\n if (firstCh !== 0x7C\n /* | */\n && firstCh !== 0x2D\n /* - */\n && firstCh !== 0x3A\n /* : */\n ) {\n return false;\n }\n\n if (pos >= state.eMarks[nextLine]) {\n return false;\n }\n\n secondCh = state.src.charCodeAt(pos++);\n\n if (secondCh !== 0x7C\n /* | */\n && secondCh !== 0x2D\n /* - */\n && secondCh !== 0x3A\n /* : */\n && !isSpace(secondCh)) {\n return false;\n } // if first character is '-', then second character must not be a space\n // (due to parsing ambiguity with list)\n\n\n if (firstCh === 0x2D\n /* - */\n && isSpace(secondCh)) {\n return false;\n }\n\n while (pos < state.eMarks[nextLine]) {\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x7C\n /* | */\n && ch !== 0x2D\n /* - */\n && ch !== 0x3A\n /* : */\n && !isSpace(ch)) {\n return false;\n }\n\n pos++;\n }\n\n lineText = getLine(state, startLine + 1);\n columns = lineText.split('|');\n aligns = [];\n\n for (i = 0; i < columns.length; i++) {\n t = columns[i].trim();\n\n if (!t) {\n // allow empty columns before and after table, but not in between columns;\n // e.g. allow ` |---| `, disallow ` ---||--- `\n if (i === 0 || i === columns.length - 1) {\n continue;\n } else {\n return false;\n }\n }\n\n if (!/^:?-+:?$/.test(t)) {\n return false;\n }\n\n if (t.charCodeAt(t.length - 1) === 0x3A\n /* : */\n ) {\n aligns.push(t.charCodeAt(0) === 0x3A\n /* : */\n ? 'center' : 'right');\n } else if (t.charCodeAt(0) === 0x3A\n /* : */\n ) {\n aligns.push('left');\n } else {\n aligns.push('');\n }\n }\n\n lineText = getLine(state, startLine).trim();\n\n if (lineText.indexOf('|') === -1) {\n return false;\n }\n\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop(); // header row will define an amount of columns in the entire table,\n // and align row should be exactly the same (the rest of the rows can differ)\n\n columnCount = columns.length;\n\n if (columnCount === 0 || columnCount !== aligns.length) {\n return false;\n }\n\n if (silent) {\n return true;\n }\n\n oldParentType = state.parentType;\n state.parentType = 'table'; // use 'blockquote' lists for termination because it's\n // the most similar to tables\n\n terminatorRules = state.md.block.ruler.getRules('blockquote');\n token = state.push('table_open', 'table', 1);\n token.map = tableLines = [startLine, 0];\n token = state.push('thead_open', 'thead', 1);\n token.map = [startLine, startLine + 1];\n token = state.push('tr_open', 'tr', 1);\n token.map = [startLine, startLine + 1];\n\n for (i = 0; i < columns.length; i++) {\n token = state.push('th_open', 'th', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i].trim();\n token.children = [];\n token = state.push('th_close', 'th', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n token = state.push('thead_close', 'thead', -1);\n\n for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) {\n break;\n }\n\n terminate = false;\n\n for (i = 0, l = terminatorRules.length; i < l; i++) {\n if (terminatorRules[i](state, nextLine, endLine, true)) {\n terminate = true;\n break;\n }\n }\n\n if (terminate) {\n break;\n }\n\n lineText = getLine(state, nextLine).trim();\n\n if (!lineText) {\n break;\n }\n\n if (state.sCount[nextLine] - state.blkIndent >= 4) {\n break;\n }\n\n columns = escapedSplit(lineText);\n if (columns.length && columns[0] === '') columns.shift();\n if (columns.length && columns[columns.length - 1] === '') columns.pop();\n\n if (nextLine === startLine + 2) {\n token = state.push('tbody_open', 'tbody', 1);\n token.map = tbodyLines = [startLine + 2, 0];\n }\n\n token = state.push('tr_open', 'tr', 1);\n token.map = [nextLine, nextLine + 1];\n\n for (i = 0; i < columnCount; i++) {\n token = state.push('td_open', 'td', 1);\n\n if (aligns[i]) {\n token.attrs = [['style', 'text-align:' + aligns[i]]];\n }\n\n token = state.push('inline', '', 0);\n token.content = columns[i] ? columns[i].trim() : '';\n token.children = [];\n token = state.push('td_close', 'td', -1);\n }\n\n token = state.push('tr_close', 'tr', -1);\n }\n\n if (tbodyLines) {\n token = state.push('tbody_close', 'tbody', -1);\n tbodyLines[1] = nextLine;\n }\n\n token = state.push('table_close', 'table', -1);\n tableLines[1] = nextLine;\n state.parentType = oldParentType;\n state.line = nextLine;\n return true;\n};","'use strict';\n\nmodule.exports = function block(state) {\n var token;\n\n if (state.inlineMode) {\n token = new state.Token('inline', '', 0);\n token.content = state.src;\n token.map = [0, 1];\n token.children = [];\n state.tokens.push(token);\n } else {\n state.md.block.parse(state.src, state.md, state.env, state.tokens);\n }\n};","'use strict';\n\nmodule.exports = function inline(state) {\n var tokens = state.tokens,\n tok,\n i,\n l; // Parse inlines\n\n for (i = 0, l = tokens.length; i < l; i++) {\n tok = tokens[i];\n\n if (tok.type === 'inline') {\n state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n }\n }\n};","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n'use strict';\n\nvar arrayReplaceAt = require('../common/utils').arrayReplaceAt;\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\n\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\nmodule.exports = function linkify(state) {\n var i,\n j,\n l,\n tokens,\n token,\n currentToken,\n nodes,\n ln,\n text,\n pos,\n lastPos,\n level,\n htmlLinkLevel,\n url,\n fullUrl,\n urlText,\n blockTokens = state.tokens,\n links;\n\n if (!state.md.options.linkify) {\n return;\n }\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline' || !state.md.linkify.pretest(blockTokens[j].content)) {\n continue;\n }\n\n tokens = blockTokens[j].children;\n htmlLinkLevel = 0; // We scan from the end, to keep position when new tags added.\n // Use reversed logic in links start/end match\n\n for (i = tokens.length - 1; i >= 0; i--) {\n currentToken = tokens[i]; // Skip content of markdown links\n\n if (currentToken.type === 'link_close') {\n i--;\n\n while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n i--;\n }\n\n continue;\n } // Skip content of html tag links\n\n\n if (currentToken.type === 'html_inline') {\n if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n htmlLinkLevel--;\n }\n\n if (isLinkClose(currentToken.content)) {\n htmlLinkLevel++;\n }\n }\n\n if (htmlLinkLevel > 0) {\n continue;\n }\n\n if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n text = currentToken.content;\n links = state.md.linkify.match(text); // Now split string to nodes\n\n nodes = [];\n level = currentToken.level;\n lastPos = 0; // forbid escape sequence at the start of the string,\n // this avoids http\\://example.com/ from being linkified as\n // http://example.com/\n\n if (links.length > 0 && links[0].index === 0 && i > 0 && tokens[i - 1].type === 'text_special') {\n links = links.slice(1);\n }\n\n for (ln = 0; ln < links.length; ln++) {\n url = links[ln].url;\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n continue;\n }\n\n urlText = links[ln].text; // Linkifier might send raw hostnames like \"example.com\", where url\n // starts with domain name. So we prepend http:// in those cases,\n // and remove it afterwards.\n //\n\n if (!links[ln].schema) {\n urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '');\n } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '');\n } else {\n urlText = state.md.normalizeLinkText(urlText);\n }\n\n pos = links[ln].index;\n\n if (pos > lastPos) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos, pos);\n token.level = level;\n nodes.push(token);\n }\n\n token = new state.Token('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.level = level++;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n token = new state.Token('text', '', 0);\n token.content = urlText;\n token.level = level;\n nodes.push(token);\n token = new state.Token('link_close', 'a', -1);\n token.level = --level;\n token.markup = 'linkify';\n token.info = 'auto';\n nodes.push(token);\n lastPos = links[ln].lastIndex;\n }\n\n if (lastPos < text.length) {\n token = new state.Token('text', '', 0);\n token.content = text.slice(lastPos);\n token.level = level;\n nodes.push(token);\n } // replace current node\n\n\n blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes);\n }\n }\n }\n};","// Normalize input string\n'use strict'; // https://spec.commonmark.org/0.29/#line-ending\n\nvar NEWLINES_RE = /\\r\\n?|\\n/g;\nvar NULL_RE = /\\0/g;\n\nmodule.exports = function normalize(state) {\n var str; // Normalize newlines\n\n str = state.src.replace(NEWLINES_RE, '\\n'); // Replace NULL characters\n\n str = str.replace(NULL_RE, \"\\uFFFD\");\n state.src = str;\n};","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// (p) (P) -> §\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → –, --- → —\n//\n'use strict'; // TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nvar RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/; // Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\n\nvar SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\nvar SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nvar SCOPED_ABBR = {\n c: '©',\n r: '®',\n tm: '™'\n};\n\nfunction replaceFn(match, name) {\n return SCOPED_ABBR[name.toLowerCase()];\n}\n\nfunction replace_scoped(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nfunction replace_rare(inlineTokens) {\n var i,\n token,\n inside_autolink = 0;\n\n for (i = inlineTokens.length - 1; i >= 0; i--) {\n token = inlineTokens[i];\n\n if (token.type === 'text' && !inside_autolink) {\n if (RARE_RE.test(token.content)) {\n token.content = token.content.replace(/\\+-/g, '±') // .., ..., ....... -> …\n // but ?..... & !..... -> ?.. & !..\n .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..').replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',') // em-dash\n .replace(/(^|[^-])---(?=[^-]|$)/mg, \"$1\\u2014\") // en-dash\n .replace(/(^|\\s)--(?=\\s|$)/mg, \"$1\\u2013\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, \"$1\\u2013\");\n }\n }\n\n if (token.type === 'link_open' && token.info === 'auto') {\n inside_autolink--;\n }\n\n if (token.type === 'link_close' && token.info === 'auto') {\n inside_autolink++;\n }\n }\n}\n\nmodule.exports = function replace(state) {\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline') {\n continue;\n }\n\n if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n replace_scoped(state.tokens[blkIdx].children);\n }\n\n if (RARE_RE.test(state.tokens[blkIdx].content)) {\n replace_rare(state.tokens[blkIdx].children);\n }\n }\n};","// Convert straight quotation marks to typographic ones\n//\n'use strict';\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\n\nvar isPunctChar = require('../common/utils').isPunctChar;\n\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nvar QUOTE_TEST_RE = /['\"]/;\nvar QUOTE_RE = /['\"]/g;\nvar APOSTROPHE = \"\\u2019\";\n/* ’ */\n\nfunction replaceAt(str, index, ch) {\n return str.slice(0, index) + ch + str.slice(index + 1);\n}\n\nfunction process_inlines(tokens, state) {\n var i, token, text, t, pos, max, thisLevel, item, lastChar, nextChar, isLastPunctChar, isNextPunctChar, isLastWhiteSpace, isNextWhiteSpace, canOpen, canClose, j, isSingle, stack, openQuote, closeQuote;\n stack = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n thisLevel = tokens[i].level;\n\n for (j = stack.length - 1; j >= 0; j--) {\n if (stack[j].level <= thisLevel) {\n break;\n }\n }\n\n stack.length = j + 1;\n\n if (token.type !== 'text') {\n continue;\n }\n\n text = token.content;\n pos = 0;\n max = text.length;\n /*eslint no-labels:0,block-scoped-var:0*/\n\n OUTER: while (pos < max) {\n QUOTE_RE.lastIndex = pos;\n t = QUOTE_RE.exec(text);\n\n if (!t) {\n break;\n }\n\n canOpen = canClose = true;\n pos = t.index + 1;\n isSingle = t[0] === \"'\"; // Find previous character,\n // default to space if it's the beginning of the line\n //\n\n lastChar = 0x20;\n\n if (t.index - 1 >= 0) {\n lastChar = text.charCodeAt(t.index - 1);\n } else {\n for (j = i - 1; j >= 0; j--) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // lastChar defaults to 0x20\n\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1);\n break;\n }\n } // Find next character,\n // default to space if it's the end of the line\n //\n\n\n nextChar = 0x20;\n\n if (pos < max) {\n nextChar = text.charCodeAt(pos);\n } else {\n for (j = i + 1; j < tokens.length; j++) {\n if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break; // nextChar defaults to 0x20\n\n if (!tokens[j].content) continue; // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n nextChar = tokens[j].content.charCodeAt(0);\n break;\n }\n }\n\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n canOpen = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n canOpen = false;\n }\n }\n\n if (isLastWhiteSpace) {\n canClose = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n canClose = false;\n }\n }\n\n if (nextChar === 0x22\n /* \" */\n && t[0] === '\"') {\n if (lastChar >= 0x30\n /* 0 */\n && lastChar <= 0x39\n /* 9 */\n ) {\n // special case: 1\"\" - count first quote as an inch\n canClose = canOpen = false;\n }\n }\n\n if (canOpen && canClose) {\n // Replace quotes in the middle of punctuation sequence, but not\n // in the middle of the words, i.e.:\n //\n // 1. foo \" bar \" baz - not replaced\n // 2. foo-\"-bar-\"-baz - replaced\n // 3. foo\"bar\"baz - not replaced\n //\n canOpen = isLastPunctChar;\n canClose = isNextPunctChar;\n }\n\n if (!canOpen && !canClose) {\n // middle of word\n if (isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n\n continue;\n }\n\n if (canClose) {\n // this could be a closing quote, rewind the stack to get a match\n for (j = stack.length - 1; j >= 0; j--) {\n item = stack[j];\n\n if (stack[j].level < thisLevel) {\n break;\n }\n\n if (item.single === isSingle && stack[j].level === thisLevel) {\n item = stack[j];\n\n if (isSingle) {\n openQuote = state.md.options.quotes[2];\n closeQuote = state.md.options.quotes[3];\n } else {\n openQuote = state.md.options.quotes[0];\n closeQuote = state.md.options.quotes[1];\n } // replace token.content *before* tokens[item.token].content,\n // because, if they are pointing at the same token, replaceAt\n // could mess up indices when quote length != 1\n\n\n token.content = replaceAt(token.content, t.index, closeQuote);\n tokens[item.token].content = replaceAt(tokens[item.token].content, item.pos, openQuote);\n pos += closeQuote.length - 1;\n\n if (item.token === i) {\n pos += openQuote.length - 1;\n }\n\n text = token.content;\n max = text.length;\n stack.length = j;\n continue OUTER;\n }\n }\n }\n\n if (canOpen) {\n stack.push({\n token: i,\n pos: t.index,\n single: isSingle,\n level: thisLevel\n });\n } else if (canClose && isSingle) {\n token.content = replaceAt(token.content, t.index, APOSTROPHE);\n }\n }\n }\n}\n\nmodule.exports = function smartquotes(state) {\n /*eslint max-depth:0*/\n var blkIdx;\n\n if (!state.md.options.typographer) {\n return;\n }\n\n for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n if (state.tokens[blkIdx].type !== 'inline' || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n continue;\n }\n\n process_inlines(state.tokens[blkIdx].children, state);\n }\n};","// Core state object\n//\n'use strict';\n\nvar Token = require('../token');\n\nfunction StateCore(src, md, env) {\n this.src = src;\n this.env = env;\n this.tokens = [];\n this.inlineMode = false;\n this.md = md; // link to parser instance\n} // re-export Token class to use in core rules\n\n\nStateCore.prototype.Token = Token;\nmodule.exports = StateCore;","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n'use strict';\n\nmodule.exports = function text_join(state) {\n var j,\n l,\n tokens,\n curr,\n max,\n last,\n blockTokens = state.tokens;\n\n for (j = 0, l = blockTokens.length; j < l; j++) {\n if (blockTokens[j].type !== 'inline') continue;\n tokens = blockTokens[j].children;\n max = tokens.length;\n\n for (curr = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text_special') {\n tokens[curr].type = 'text';\n }\n }\n\n for (curr = last = 0; curr < max; curr++) {\n if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n }\n};","// Process autolinks ''\n'use strict';\n/*eslint max-len:0*/\n\nvar EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\nvar AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;\n\nmodule.exports = function autolink(state, silent) {\n var url,\n fullUrl,\n token,\n ch,\n start,\n max,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n ) {\n return false;\n }\n\n start = state.pos;\n max = state.posMax;\n\n for (;;) {\n if (++pos >= max) return false;\n ch = state.src.charCodeAt(pos);\n if (ch === 0x3C\n /* < */\n ) return false;\n if (ch === 0x3E\n /* > */\n ) break;\n }\n\n url = state.src.slice(start + 1, pos);\n\n if (AUTOLINK_RE.test(url)) {\n fullUrl = state.md.normalizeLink(url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n if (EMAIL_RE.test(url)) {\n fullUrl = state.md.normalizeLink('mailto:' + url);\n\n if (!state.md.validateLink(fullUrl)) {\n return false;\n }\n\n if (!silent) {\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'autolink';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'autolink';\n token.info = 'auto';\n }\n\n state.pos += url.length + 2;\n return true;\n }\n\n return false;\n};","// Parse backticks\n'use strict';\n\nmodule.exports = function backtick(state, silent) {\n var start,\n max,\n marker,\n token,\n matchStart,\n matchEnd,\n openerLength,\n closerLength,\n pos = state.pos,\n ch = state.src.charCodeAt(pos);\n\n if (ch !== 0x60\n /* ` */\n ) {\n return false;\n }\n\n start = pos;\n pos++;\n max = state.posMax; // scan marker length\n\n while (pos < max && state.src.charCodeAt(pos) === 0x60\n /* ` */\n ) {\n pos++;\n }\n\n marker = state.src.slice(start, pos);\n openerLength = marker.length;\n\n if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n }\n\n matchStart = matchEnd = pos; // Nothing found in the cache, scan until the end of the line (or until marker is found)\n\n while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n matchEnd = matchStart + 1; // scan marker length\n\n while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60\n /* ` */\n ) {\n matchEnd++;\n }\n\n closerLength = matchEnd - matchStart;\n\n if (closerLength === openerLength) {\n // Found matching closer length.\n if (!silent) {\n token = state.push('code_inline', 'code', 0);\n token.markup = marker;\n token.content = state.src.slice(pos, matchStart).replace(/\\n/g, ' ').replace(/^ (.+) $/, '$1');\n }\n\n state.pos = matchEnd;\n return true;\n } // Some different length found, put it in cache as upper limit of where closer can be found\n\n\n state.backticks[closerLength] = matchStart;\n } // Scanned through the end, didn't find anything\n\n\n state.backticksScanned = true;\n if (!silent) state.pending += marker;\n state.pos += openerLength;\n return true;\n};","// For each opening emphasis-like marker find a matching closing one\n//\n'use strict';\n\nfunction processDelimiters(state, delimiters) {\n var closerIdx,\n openerIdx,\n closer,\n opener,\n minOpenerIdx,\n newMinOpenerIdx,\n isOddMatch,\n lastJump,\n openersBottom = {},\n max = delimiters.length;\n if (!max) return; // headerIdx is the first delimiter of the current (where closer is) delimiter run\n\n var headerIdx = 0;\n var lastTokenIdx = -2; // needs any value lower than -1\n\n var jumps = [];\n\n for (closerIdx = 0; closerIdx < max; closerIdx++) {\n closer = delimiters[closerIdx];\n jumps.push(0); // markers belong to same delimiter run if:\n // - they have adjacent tokens\n // - AND markers are the same\n //\n\n if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n headerIdx = closerIdx;\n }\n\n lastTokenIdx = closer.token; // Length is only used for emphasis-specific \"rule of 3\",\n // if it's not defined (in strikethrough or 3rd party plugins),\n // we can default it to 0 to disable those checks.\n //\n\n closer.length = closer.length || 0;\n if (!closer.close) continue; // Previously calculated lower bounds (previous fails)\n // for each marker, each delimiter length modulo 3,\n // and for whether this closer can be an opener;\n // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n\n if (!openersBottom.hasOwnProperty(closer.marker)) {\n openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];\n }\n\n minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n openerIdx = headerIdx - jumps[headerIdx] - 1;\n newMinOpenerIdx = openerIdx;\n\n for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n opener = delimiters[openerIdx];\n if (opener.marker !== closer.marker) continue;\n\n if (opener.open && opener.end < 0) {\n isOddMatch = false; // from spec:\n //\n // If one of the delimiters can both open and close emphasis, then the\n // sum of the lengths of the delimiter runs containing the opening and\n // closing delimiters must not be a multiple of 3 unless both lengths\n // are multiples of 3.\n //\n\n if (opener.close || closer.open) {\n if ((opener.length + closer.length) % 3 === 0) {\n if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n isOddMatch = true;\n }\n }\n }\n\n if (!isOddMatch) {\n // If previous delimiter cannot be an opener, we can safely skip\n // the entire sequence in future checks. This is required to make\n // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n //\n lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;\n jumps[closerIdx] = closerIdx - openerIdx + lastJump;\n jumps[openerIdx] = lastJump;\n closer.open = false;\n opener.end = closerIdx;\n opener.close = false;\n newMinOpenerIdx = -1; // treat next token as start of run,\n // it optimizes skips in **<...>**a**<...>** pathological case\n\n lastTokenIdx = -2;\n break;\n }\n }\n }\n\n if (newMinOpenerIdx !== -1) {\n // If match for this delimiter run failed, we want to set lower bound for\n // future lookups. This is required to make sure algorithm has linear\n // complexity.\n //\n // See details here:\n // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n //\n openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n }\n }\n}\n\nmodule.exports = function link_pairs(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n processDelimiters(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n processDelimiters(state, tokens_meta[curr].delimiters);\n }\n }\n};","// Process *this* and _that_\n//\n'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n//\n\nmodule.exports.tokenize = function emphasis(state, silent) {\n var i,\n scanned,\n token,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x5F\n /* _ */\n && marker !== 0x2A\n /* * */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, marker === 0x2A);\n\n for (i = 0; i < scanned.length; i++) {\n token = state.push('text', '', 0);\n token.content = String.fromCharCode(marker);\n state.delimiters.push({\n // Char code of the starting marker (number).\n //\n marker: marker,\n // Total length of these series of delimiters.\n //\n length: scanned.length,\n // A position of the token this delimiter corresponds to.\n //\n token: state.tokens.length - 1,\n // If this delimiter is matched as a valid opener, `end` will be\n // equal to its position, otherwise it's `-1`.\n //\n end: -1,\n // Boolean flags that determine if this delimiter could open or close\n // an emphasis.\n //\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n};\n\nfunction postProcess(state, delimiters) {\n var i,\n startDelim,\n endDelim,\n token,\n ch,\n isStrong,\n max = delimiters.length;\n\n for (i = max - 1; i >= 0; i--) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x5F\n /* _ */\n && startDelim.marker !== 0x2A\n /* * */\n ) {\n continue;\n } // Process only opening markers\n\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end]; // If the previous delimiter has the same marker and is adjacent to this one,\n // merge those into one strong delimiter.\n //\n // `whatever` -> `whatever`\n //\n\n isStrong = i > 0 && delimiters[i - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent\n delimiters[i - 1].marker === startDelim.marker && delimiters[i - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)\n delimiters[startDelim.end + 1].token === endDelim.token + 1;\n ch = String.fromCharCode(startDelim.marker);\n token = state.tokens[startDelim.token];\n token.type = isStrong ? 'strong_open' : 'em_open';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = 1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = isStrong ? 'strong_close' : 'em_close';\n token.tag = isStrong ? 'strong' : 'em';\n token.nesting = -1;\n token.markup = isStrong ? ch + ch : ch;\n token.content = '';\n\n if (isStrong) {\n state.tokens[delimiters[i - 1].token].content = '';\n state.tokens[delimiters[startDelim.end + 1].token].content = '';\n i--;\n }\n }\n} // Walk through delimiter list and replace text tokens with tags\n//\n\n\nmodule.exports.postProcess = function emphasis(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};","// Process html entity - {, ¯, ", ...\n'use strict';\n\nvar entities = require('../common/entities');\n\nvar has = require('../common/utils').has;\n\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\n\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\nvar DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\nmodule.exports = function entity(state, silent) {\n var ch,\n code,\n match,\n token,\n pos = state.pos,\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x26\n /* & */\n ) return false;\n if (pos + 1 >= max) return false;\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23\n /* # */\n ) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n token = state.push('text_special', '', 0);\n token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n token.markup = match[0];\n token.info = 'entity';\n }\n\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) {\n token = state.push('text_special', '', 0);\n token.content = entities[match[1]];\n token.markup = match[0];\n token.info = 'entity';\n }\n\n state.pos += match[0].length;\n return true;\n }\n }\n }\n\n return false;\n};","// Process escaped chars and hardbreaks\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nvar ESCAPED = [];\n\nfor (var i = 0; i < 256; i++) {\n ESCAPED.push(0);\n}\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'.split('').forEach(function (ch) {\n ESCAPED[ch.charCodeAt(0)] = 1;\n});\n\nmodule.exports = function escape(state, silent) {\n var ch1,\n ch2,\n origStr,\n escapedStr,\n token,\n pos = state.pos,\n max = state.posMax;\n if (state.src.charCodeAt(pos) !== 0x5C\n /* \\ */\n ) return false;\n pos++; // '\\' at the end of the inline block\n\n if (pos >= max) return false;\n ch1 = state.src.charCodeAt(pos);\n\n if (ch1 === 0x0A) {\n if (!silent) {\n state.push('hardbreak', 'br', 0);\n }\n\n pos++; // skip leading whitespaces from next line\n\n while (pos < max) {\n ch1 = state.src.charCodeAt(pos);\n if (!isSpace(ch1)) break;\n pos++;\n }\n\n state.pos = pos;\n return true;\n }\n\n escapedStr = state.src[pos];\n\n if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n ch2 = state.src.charCodeAt(pos + 1);\n\n if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n escapedStr += state.src[pos + 1];\n pos++;\n }\n }\n\n origStr = '\\\\' + escapedStr;\n\n if (!silent) {\n token = state.push('text_special', '', 0);\n\n if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n token.content = escapedStr;\n } else {\n token.content = origStr;\n }\n\n token.markup = origStr;\n token.info = 'escape';\n }\n\n state.pos = pos + 1;\n return true;\n};","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n'use strict';\n\nmodule.exports = function fragments_join(state) {\n var curr,\n last,\n level = 0,\n tokens = state.tokens,\n max = state.tokens.length;\n\n for (curr = last = 0; curr < max; curr++) {\n // re-calculate levels after emphasis/strikethrough turns some text nodes\n // into opening/closing tags\n if (tokens[curr].nesting < 0) level--; // closing tag\n\n tokens[curr].level = level;\n if (tokens[curr].nesting > 0) level++; // opening tag\n\n if (tokens[curr].type === 'text' && curr + 1 < max && tokens[curr + 1].type === 'text') {\n // collapse two adjacent text nodes\n tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n } else {\n if (curr !== last) {\n tokens[last] = tokens[curr];\n }\n\n last++;\n }\n }\n\n if (curr !== last) {\n tokens.length = last;\n }\n};","// Process html tags\n'use strict';\n\nvar HTML_TAG_RE = require('../common/html_re').HTML_TAG_RE;\n\nfunction isLinkOpen(str) {\n return /^\\s]/i.test(str);\n}\n\nfunction isLinkClose(str) {\n return /^<\\/a\\s*>/i.test(str);\n}\n\nfunction isLetter(ch) {\n /*eslint no-bitwise:0*/\n var lc = ch | 0x20; // to lower case\n\n return lc >= 0x61\n /* a */\n && lc <= 0x7a\n /* z */\n ;\n}\n\nmodule.exports = function html_inline(state, silent) {\n var ch,\n match,\n max,\n token,\n pos = state.pos;\n\n if (!state.md.options.html) {\n return false;\n } // Check start\n\n\n max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x3C\n /* < */\n || pos + 2 >= max) {\n return false;\n } // Quick fail on second char\n\n\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch !== 0x21\n /* ! */\n && ch !== 0x3F\n /* ? */\n && ch !== 0x2F\n /* / */\n && !isLetter(ch)) {\n return false;\n }\n\n match = state.src.slice(pos).match(HTML_TAG_RE);\n\n if (!match) {\n return false;\n }\n\n if (!silent) {\n token = state.push('html_inline', '', 0);\n token.content = state.src.slice(pos, pos + match[0].length);\n if (isLinkOpen(token.content)) state.linkLevel++;\n if (isLinkClose(token.content)) state.linkLevel--;\n }\n\n state.pos += match[0].length;\n return true;\n};","// Process ![image]( \"title\")\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function image(state, silent) {\n var attrs,\n code,\n content,\n label,\n labelEnd,\n labelStart,\n pos,\n ref,\n res,\n title,\n token,\n tokens,\n start,\n href = '',\n oldPos = state.pos,\n max = state.posMax;\n\n if (state.src.charCodeAt(state.pos) !== 0x21\n /* ! */\n ) {\n return false;\n }\n\n if (state.src.charCodeAt(state.pos + 1) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 2;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // [link]( \"title\" )\n // ^^ skipping these spaces\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n }\n } // [link]( \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n } else {\n title = '';\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n state.pos = oldPos;\n return false;\n }\n\n pos++;\n } else {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n content = state.src.slice(labelStart, labelEnd);\n state.md.inline.parse(content, state.md, state.env, tokens = []);\n token = state.push('image', 'img', 0);\n token.attrs = attrs = [['src', href], ['alt', '']];\n token.children = tokens;\n token.content = content;\n\n if (title) {\n attrs.push(['title', title]);\n }\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};","// Process [link]( \"stuff\")\n'use strict';\n\nvar normalizeReference = require('../common/utils').normalizeReference;\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function link(state, silent) {\n var attrs,\n code,\n label,\n labelEnd,\n labelStart,\n pos,\n res,\n ref,\n token,\n href = '',\n title = '',\n oldPos = state.pos,\n max = state.posMax,\n start = state.pos,\n parseReference = true;\n\n if (state.src.charCodeAt(state.pos) !== 0x5B\n /* [ */\n ) {\n return false;\n }\n\n labelStart = state.pos + 1;\n labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true); // parser failed to find ']', so it's not a valid link\n\n if (labelEnd < 0) {\n return false;\n }\n\n pos = labelEnd + 1;\n\n if (pos < max && state.src.charCodeAt(pos) === 0x28\n /* ( */\n ) {\n //\n // Inline link\n //\n // might have found a valid shortcut link, disable reference parsing\n parseReference = false; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n pos++;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n\n if (pos >= max) {\n return false;\n } // [link]( \"title\" )\n // ^^^^^^ parsing link destination\n\n\n start = pos;\n res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n\n if (res.ok) {\n href = state.md.normalizeLink(res.str);\n\n if (state.md.validateLink(href)) {\n pos = res.pos;\n } else {\n href = '';\n } // [link]( \"title\" )\n // ^^ skipping these spaces\n\n\n start = pos;\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n } // [link]( \"title\" )\n // ^^^^^^^ parsing link title\n\n\n res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n\n if (pos < max && start !== pos && res.ok) {\n title = res.str;\n pos = res.pos; // [link]( \"title\" )\n // ^^ skipping these spaces\n\n for (; pos < max; pos++) {\n code = state.src.charCodeAt(pos);\n\n if (!isSpace(code) && code !== 0x0A) {\n break;\n }\n }\n }\n }\n\n if (pos >= max || state.src.charCodeAt(pos) !== 0x29\n /* ) */\n ) {\n // parsing a valid shortcut link failed, fallback to reference\n parseReference = true;\n }\n\n pos++;\n }\n\n if (parseReference) {\n //\n // Link reference\n //\n if (typeof state.env.references === 'undefined') {\n return false;\n }\n\n if (pos < max && state.src.charCodeAt(pos) === 0x5B\n /* [ */\n ) {\n start = pos + 1;\n pos = state.md.helpers.parseLinkLabel(state, pos);\n\n if (pos >= 0) {\n label = state.src.slice(start, pos++);\n } else {\n pos = labelEnd + 1;\n }\n } else {\n pos = labelEnd + 1;\n } // covers label === '' and label === undefined\n // (collapsed reference link and shortcut reference link respectively)\n\n\n if (!label) {\n label = state.src.slice(labelStart, labelEnd);\n }\n\n ref = state.env.references[normalizeReference(label)];\n\n if (!ref) {\n state.pos = oldPos;\n return false;\n }\n\n href = ref.href;\n title = ref.title;\n } //\n // We found the end of the link, and know for a fact it's a valid link;\n // so all that's left to do is to call tokenizer.\n //\n\n\n if (!silent) {\n state.pos = labelStart;\n state.posMax = labelEnd;\n token = state.push('link_open', 'a', 1);\n token.attrs = attrs = [['href', href]];\n\n if (title) {\n attrs.push(['title', title]);\n }\n\n state.linkLevel++;\n state.md.inline.tokenize(state);\n state.linkLevel--;\n token = state.push('link_close', 'a', -1);\n }\n\n state.pos = pos;\n state.posMax = max;\n return true;\n};","// Process links like https://example.org/\n'use strict'; // RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n\nvar SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\n\nmodule.exports = function linkify(state, silent) {\n var pos, max, match, proto, link, url, fullUrl, token;\n if (!state.md.options.linkify) return false;\n if (state.linkLevel > 0) return false;\n pos = state.pos;\n max = state.posMax;\n if (pos + 3 > max) return false;\n if (state.src.charCodeAt(pos) !== 0x3A\n /* : */\n ) return false;\n if (state.src.charCodeAt(pos + 1) !== 0x2F\n /* / */\n ) return false;\n if (state.src.charCodeAt(pos + 2) !== 0x2F\n /* / */\n ) return false;\n match = state.pending.match(SCHEME_RE);\n if (!match) return false;\n proto = match[1];\n link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n if (!link) return false;\n url = link.url; // disallow '*' at the end of the link (conflicts with emphasis)\n\n url = url.replace(/\\*+$/, '');\n fullUrl = state.md.normalizeLink(url);\n if (!state.md.validateLink(fullUrl)) return false;\n\n if (!silent) {\n state.pending = state.pending.slice(0, -proto.length);\n token = state.push('link_open', 'a', 1);\n token.attrs = [['href', fullUrl]];\n token.markup = 'linkify';\n token.info = 'auto';\n token = state.push('text', '', 0);\n token.content = state.md.normalizeLinkText(url);\n token = state.push('link_close', 'a', -1);\n token.markup = 'linkify';\n token.info = 'auto';\n }\n\n state.pos += url.length - proto.length;\n return true;\n};","// Proceess '\\n'\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\n\nmodule.exports = function newline(state, silent) {\n var pmax,\n max,\n ws,\n pos = state.pos;\n\n if (state.src.charCodeAt(pos) !== 0x0A\n /* \\n */\n ) {\n return false;\n }\n\n pmax = state.pending.length - 1;\n max = state.posMax; // ' \\n' -> hardbreak\n // Lookup in pending chars is bad practice! Don't copy to other rules!\n // Pending string is stored in concat mode, indexed lookups will cause\n // convertion to flat mode.\n\n if (!silent) {\n if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n // Find whitespaces tail of pending chars.\n ws = pmax - 1;\n\n while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) {\n ws--;\n }\n\n state.pending = state.pending.slice(0, ws);\n state.push('hardbreak', 'br', 0);\n } else {\n state.pending = state.pending.slice(0, -1);\n state.push('softbreak', 'br', 0);\n }\n } else {\n state.push('softbreak', 'br', 0);\n }\n }\n\n pos++; // skip heading spaces for next line\n\n while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n state.pos = pos;\n return true;\n};","// Inline parser state\n'use strict';\n\nvar Token = require('../token');\n\nvar isWhiteSpace = require('../common/utils').isWhiteSpace;\n\nvar isPunctChar = require('../common/utils').isPunctChar;\n\nvar isMdAsciiPunct = require('../common/utils').isMdAsciiPunct;\n\nfunction StateInline(src, md, env, outTokens) {\n this.src = src;\n this.env = env;\n this.md = md;\n this.tokens = outTokens;\n this.tokens_meta = Array(outTokens.length);\n this.pos = 0;\n this.posMax = this.src.length;\n this.level = 0;\n this.pending = '';\n this.pendingLevel = 0; // Stores { start: end } pairs. Useful for backtrack\n // optimization of pairs parse (emphasis, strikes).\n\n this.cache = {}; // List of emphasis-like delimiters for current tag\n\n this.delimiters = []; // Stack of delimiter lists for upper level tags\n\n this._prev_delimiters = []; // backtick length => last seen position\n\n this.backticks = {};\n this.backticksScanned = false; // Counter used to disable inline linkify-it execution\n // inside and markdown links\n\n this.linkLevel = 0;\n} // Flush pending text\n//\n\n\nStateInline.prototype.pushPending = function () {\n var token = new Token('text', '', 0);\n token.content = this.pending;\n token.level = this.pendingLevel;\n this.tokens.push(token);\n this.pending = '';\n return token;\n}; // Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\n\n\nStateInline.prototype.push = function (type, tag, nesting) {\n if (this.pending) {\n this.pushPending();\n }\n\n var token = new Token(type, tag, nesting);\n var token_meta = null;\n\n if (nesting < 0) {\n // closing tag\n this.level--;\n this.delimiters = this._prev_delimiters.pop();\n }\n\n token.level = this.level;\n\n if (nesting > 0) {\n // opening tag\n this.level++;\n\n this._prev_delimiters.push(this.delimiters);\n\n this.delimiters = [];\n token_meta = {\n delimiters: this.delimiters\n };\n }\n\n this.pendingLevel = this.level;\n this.tokens.push(token);\n this.tokens_meta.push(token_meta);\n return token;\n}; // Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n// - start - position to scan from (it should point at a valid marker);\n// - canSplitWord - determine if these markers can be found inside a word\n//\n\n\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n var pos = start,\n lastChar,\n nextChar,\n count,\n can_open,\n can_close,\n isLastWhiteSpace,\n isLastPunctChar,\n isNextWhiteSpace,\n isNextPunctChar,\n left_flanking = true,\n right_flanking = true,\n max = this.posMax,\n marker = this.src.charCodeAt(start); // treat beginning of the line as a whitespace\n\n lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 0x20;\n\n while (pos < max && this.src.charCodeAt(pos) === marker) {\n pos++;\n }\n\n count = pos - start; // treat end of the line as a whitespace\n\n nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20;\n isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n isLastWhiteSpace = isWhiteSpace(lastChar);\n isNextWhiteSpace = isWhiteSpace(nextChar);\n\n if (isNextWhiteSpace) {\n left_flanking = false;\n } else if (isNextPunctChar) {\n if (!(isLastWhiteSpace || isLastPunctChar)) {\n left_flanking = false;\n }\n }\n\n if (isLastWhiteSpace) {\n right_flanking = false;\n } else if (isLastPunctChar) {\n if (!(isNextWhiteSpace || isNextPunctChar)) {\n right_flanking = false;\n }\n }\n\n if (!canSplitWord) {\n can_open = left_flanking && (!right_flanking || isLastPunctChar);\n can_close = right_flanking && (!left_flanking || isNextPunctChar);\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n\n return {\n can_open: can_open,\n can_close: can_close,\n length: count\n };\n}; // re-export Token class to use in block rules\n\n\nStateInline.prototype.Token = Token;\nmodule.exports = StateInline;","// ~~strike through~~\n//\n'use strict'; // Insert each marker as a separate text token, and add it to delimiter list\n//\n\nmodule.exports.tokenize = function strikethrough(state, silent) {\n var i,\n scanned,\n token,\n len,\n ch,\n start = state.pos,\n marker = state.src.charCodeAt(start);\n\n if (silent) {\n return false;\n }\n\n if (marker !== 0x7E\n /* ~ */\n ) {\n return false;\n }\n\n scanned = state.scanDelims(state.pos, true);\n len = scanned.length;\n ch = String.fromCharCode(marker);\n\n if (len < 2) {\n return false;\n }\n\n if (len % 2) {\n token = state.push('text', '', 0);\n token.content = ch;\n len--;\n }\n\n for (i = 0; i < len; i += 2) {\n token = state.push('text', '', 0);\n token.content = ch + ch;\n state.delimiters.push({\n marker: marker,\n length: 0,\n // disable \"rule of 3\" length checks meant for emphasis\n token: state.tokens.length - 1,\n end: -1,\n open: scanned.can_open,\n close: scanned.can_close\n });\n }\n\n state.pos += scanned.length;\n return true;\n};\n\nfunction postProcess(state, delimiters) {\n var i,\n j,\n startDelim,\n endDelim,\n token,\n loneMarkers = [],\n max = delimiters.length;\n\n for (i = 0; i < max; i++) {\n startDelim = delimiters[i];\n\n if (startDelim.marker !== 0x7E\n /* ~ */\n ) {\n continue;\n }\n\n if (startDelim.end === -1) {\n continue;\n }\n\n endDelim = delimiters[startDelim.end];\n token = state.tokens[startDelim.token];\n token.type = 's_open';\n token.tag = 's';\n token.nesting = 1;\n token.markup = '~~';\n token.content = '';\n token = state.tokens[endDelim.token];\n token.type = 's_close';\n token.tag = 's';\n token.nesting = -1;\n token.markup = '~~';\n token.content = '';\n\n if (state.tokens[endDelim.token - 1].type === 'text' && state.tokens[endDelim.token - 1].content === '~') {\n loneMarkers.push(endDelim.token - 1);\n }\n } // If a marker sequence has an odd number of characters, it's splitted\n // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n // start of the sequence.\n //\n // So, we have to move all those markers after subsequent s_close tags.\n //\n\n\n while (loneMarkers.length) {\n i = loneMarkers.pop();\n j = i + 1;\n\n while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n j++;\n }\n\n j--;\n\n if (i !== j) {\n token = state.tokens[j];\n state.tokens[j] = state.tokens[i];\n state.tokens[i] = token;\n }\n }\n} // Walk through delimiter list and replace text tokens with tags\n//\n\n\nmodule.exports.postProcess = function strikethrough(state) {\n var curr,\n tokens_meta = state.tokens_meta,\n max = state.tokens_meta.length;\n postProcess(state, state.delimiters);\n\n for (curr = 0; curr < max; curr++) {\n if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n postProcess(state, tokens_meta[curr].delimiters);\n }\n }\n};","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n'use strict'; // Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n\nfunction isTerminatorChar(ch) {\n switch (ch) {\n case 0x0A\n /* \\n */\n :\n case 0x21\n /* ! */\n :\n case 0x23\n /* # */\n :\n case 0x24\n /* $ */\n :\n case 0x25\n /* % */\n :\n case 0x26\n /* & */\n :\n case 0x2A\n /* * */\n :\n case 0x2B\n /* + */\n :\n case 0x2D\n /* - */\n :\n case 0x3A\n /* : */\n :\n case 0x3C\n /* < */\n :\n case 0x3D\n /* = */\n :\n case 0x3E\n /* > */\n :\n case 0x40\n /* @ */\n :\n case 0x5B\n /* [ */\n :\n case 0x5C\n /* \\ */\n :\n case 0x5D\n /* ] */\n :\n case 0x5E\n /* ^ */\n :\n case 0x5F\n /* _ */\n :\n case 0x60\n /* ` */\n :\n case 0x7B\n /* { */\n :\n case 0x7D\n /* } */\n :\n case 0x7E\n /* ~ */\n :\n return true;\n\n default:\n return false;\n }\n}\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos;\n\n while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n pos++;\n }\n\n if (pos === state.pos) {\n return false;\n }\n\n if (!silent) {\n state.pending += state.src.slice(state.pos, pos);\n }\n\n state.pos = pos;\n return true;\n}; // Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParcerInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n var pos = state.pos,\n idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n // first char is terminator -> empty text\n if (idx === 0) { return false; }\n\n // no terminator -> text till end of string\n if (idx < 0) {\n if (!silent) { state.pending += state.src.slice(pos); }\n state.pos = state.src.length;\n return true;\n }\n\n if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n state.pos += idx;\n\n return true;\n};*/","// Token class\n'use strict';\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\n\nfunction Token(type, tag, nesting) {\n /**\n * Token#type -> String\n *\n * Type of the token (string, e.g. \"paragraph_open\")\n **/\n this.type = type;\n /**\n * Token#tag -> String\n *\n * html tag name, e.g. \"p\"\n **/\n\n this.tag = tag;\n /**\n * Token#attrs -> Array\n *\n * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n **/\n\n this.attrs = null;\n /**\n * Token#map -> Array\n *\n * Source map info. Format: `[ line_begin, line_end ]`\n **/\n\n this.map = null;\n /**\n * Token#nesting -> Number\n *\n * Level change (number in {-1, 0, 1} set), where:\n *\n * - `1` means the tag is opening\n * - `0` means the tag is self-closing\n * - `-1` means the tag is closing\n **/\n\n this.nesting = nesting;\n /**\n * Token#level -> Number\n *\n * nesting level, the same as `state.level`\n **/\n\n this.level = 0;\n /**\n * Token#children -> Array\n *\n * An array of child nodes (inline and img tokens)\n **/\n\n this.children = null;\n /**\n * Token#content -> String\n *\n * In a case of self-closing tag (code, html, fence, etc.),\n * it has contents of this tag.\n **/\n\n this.content = '';\n /**\n * Token#markup -> String\n *\n * '*' or '_' for emphasis, fence string for fence, etc.\n **/\n\n this.markup = '';\n /**\n * Token#info -> String\n *\n * Additional information:\n *\n * - Info string for \"fence\" tokens\n * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n **/\n\n this.info = '';\n /**\n * Token#meta -> Object\n *\n * A place for plugins to store an arbitrary data\n **/\n\n this.meta = null;\n /**\n * Token#block -> Boolean\n *\n * True for block-level tokens, false for inline tokens.\n * Used in renderer to calculate line breaks\n **/\n\n this.block = false;\n /**\n * Token#hidden -> Boolean\n *\n * If it's true, ignore this element when rendering. Used for tight lists\n * to hide paragraphs.\n **/\n\n this.hidden = false;\n}\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\n\n\nToken.prototype.attrIndex = function attrIndex(name) {\n var attrs, i, len;\n\n if (!this.attrs) {\n return -1;\n }\n\n attrs = this.attrs;\n\n for (i = 0, len = attrs.length; i < len; i++) {\n if (attrs[i][0] === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\n\n\nToken.prototype.attrPush = function attrPush(attrData) {\n if (this.attrs) {\n this.attrs.push(attrData);\n } else {\n this.attrs = [attrData];\n }\n};\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\n\n\nToken.prototype.attrSet = function attrSet(name, value) {\n var idx = this.attrIndex(name),\n attrData = [name, value];\n\n if (idx < 0) {\n this.attrPush(attrData);\n } else {\n this.attrs[idx] = attrData;\n }\n};\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\n\n\nToken.prototype.attrGet = function attrGet(name) {\n var idx = this.attrIndex(name),\n value = null;\n\n if (idx >= 0) {\n value = this.attrs[idx][1];\n }\n\n return value;\n};\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\n\n\nToken.prototype.attrJoin = function attrJoin(name, value) {\n var idx = this.attrIndex(name);\n\n if (idx < 0) {\n this.attrPush([name, value]);\n } else {\n this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value;\n }\n};\n\nmodule.exports = Token;","'use strict';\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i,\n ch,\n cache = decodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n} // Decode percent-encoded string.\n//\n\n\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n var i,\n l,\n b1,\n b2,\n b3,\n b4,\n chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && i + 3 < l) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = b1 << 6 & 0x7C0 | b2 & 0x3F;\n\n if (chr < 0x80) {\n result += \"\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && i + 6 < l) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = b1 << 12 & 0xF000 | b2 << 6 & 0xFC0 | b3 & 0x3F;\n\n if (chr < 0x800 || chr >= 0xD800 && chr <= 0xDFFF) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && i + 9 < l) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = b1 << 18 & 0x1C0000 | b2 << 12 & 0x3F000 | b3 << 6 & 0xFC0 | b4 & 0x3F;\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += \"\\uFFFD\\uFFFD\\uFFFD\\uFFFD\";\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += \"\\uFFFD\";\n }\n\n return result;\n });\n}\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\nmodule.exports = decode;","'use strict';\n\nvar encodeCache = {}; // Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\n\nfunction getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n\n if (cache) {\n return cache;\n }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n} // Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\n\n\nfunction encode(string, exclude, keepEscaped) {\n var i,\n l,\n code,\n nextCode,\n cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25\n /* % */\n && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\nmodule.exports = encode;","'use strict';\n\nmodule.exports = function format(url) {\n var result = '';\n result += url.protocol || '';\n result += url.slashes ? '//' : '';\n result += url.auth ? url.auth + '@' : '';\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']';\n } else {\n result += url.hostname || '';\n }\n\n result += url.port ? ':' + url.port : '';\n result += url.pathname || '';\n result += url.search || '';\n result += url.hash || '';\n return result;\n};","'use strict';\n\nmodule.exports.encode = require('./encode');\nmodule.exports.decode = require('./decode');\nmodule.exports.format = require('./format');\nmodule.exports.parse = require('./parse');","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'; //\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.pathname = null;\n} // Reference: RFC 3986, RFC 1808, RFC 2396\n// define these here so at least they only have to be\n// compiled once on the first module load.\n\n\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n // Special case for a simple path URL\nsimplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n // RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\ndelims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n // RFC 2396: characters not allowed for various reasons.\nunwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\nautoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nnonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n\n/* eslint-disable no-script-url */\n// protocols that never have a hostname.\nhostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n},\n // protocols that always contain a // bit.\nslashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n};\n/* eslint-enable no-script-url */\n\nfunction urlParse(url, slashesDenoteHost) {\n if (url && url instanceof Url) {\n return url;\n }\n\n var u = new Url();\n u.parse(url, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n var i,\n l,\n lowerProto,\n hec,\n slashes,\n rest = url; // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n\n if (simplePath) {\n this.pathname = simplePath[1];\n\n if (simplePath[2]) {\n this.search = simplePath[2];\n }\n\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n\n if (proto) {\n proto = proto[0];\n lowerProto = proto.toLowerCase();\n this.protocol = proto;\n rest = rest.substr(proto.length);\n } // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n\n\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//';\n\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n\n for (i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n\n\n var auth, atSign;\n\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n } // Now we have a portion which is definitely the auth.\n // Pull that off.\n\n\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = auth;\n } // the host is the remaining to the left of the first non-host char\n\n\n hostEnd = -1;\n\n for (i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i]);\n\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec;\n }\n } // if we still have not hit it, then the entire thing is a host.\n\n\n if (hostEnd === -1) {\n hostEnd = rest.length;\n }\n\n if (rest[hostEnd - 1] === ':') {\n hostEnd--;\n }\n\n var host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd); // pull out port.\n\n this.parseHost(host); // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n\n this.hostname = this.hostname || ''; // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']'; // validate a little.\n\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n\n for (i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n\n if (!part) {\n continue;\n }\n\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n } // we test again with ASCII char only\n\n\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n\n if (notHost.length) {\n rest = notHost.join('.') + rest;\n }\n\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } // strip [ and ] from the hostname\n // the host field still retains them, though\n\n\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n }\n } // chop off from the tail first.\n\n\n var hash = rest.indexOf('#');\n\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n\n var qm = rest.indexOf('?');\n\n if (qm !== -1) {\n this.search = rest.substr(qm);\n rest = rest.slice(0, qm);\n }\n\n if (rest) {\n this.pathname = rest;\n }\n\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '';\n }\n\n return this;\n};\n\nUrl.prototype.parseHost = function (host) {\n var port = portPattern.exec(host);\n\n if (port) {\n port = port[0];\n\n if (port !== ':') {\n this.port = port.substr(1);\n }\n\n host = host.substr(0, host.length - port.length);\n }\n\n if (host) {\n this.hostname = host;\n }\n};\n\nmodule.exports = urlParse;","/* **********************************************\n Begin prism-core.js\n********************************************** */\n/// \nvar _self = typeof window !== 'undefined' ? window // if in browser\n: typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self // if in worker\n: {} // if in node js\n;\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\n\n\nvar Prism = function (_self) {\n // Private helper vars\n var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n var uniqueId = 0; // The grammar object for plaintext\n\n var plainTextGrammar = {};\n var _ = {\n /**\n * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n * additional languages or plugins yourself.\n *\n * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n *\n * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n * empty Prism object into the global scope before loading the Prism script like this:\n *\n * ```js\n * window.Prism = window.Prism || {};\n * Prism.manual = true;\n * // add a new