{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/xml.js"],"names":["module","exports","hljs","XML_ENTITIES","className","begin","XML_META_KEYWORDS","contains","illegal","XML_META_PAR_KEYWORDS","inherit","end","APOS_META_STRING_MODE","APOS_STRING_MODE","QUOTE_META_STRING_MODE","QUOTE_STRING_MODE","TAG_INTERNALS","endsWithParent","relevance","endsParent","variants","name","aliases","case_insensitive","COMMENT","keywords","starts","returnEnd","subLanguage"],"mappings":"8EAsIAA,EAAOC,QAjIP,SAAaC,GACX,IACIC,EAAe,CACjBC,UAAW,SACXC,MAAO,oCAELC,EAAoB,CACtBD,MAAO,MACPE,SAAU,CAAC,CACTH,UAAW,eACXC,MAAO,sBACPG,QAAS,SAGTC,EAAwBP,EAAKQ,QAAQJ,EAAmB,CAC1DD,MAAO,MACPM,IAAK,QAEHC,EAAwBV,EAAKQ,QAAQR,EAAKW,iBAAkB,CAC9DT,UAAW,gBAETU,EAAyBZ,EAAKQ,QAAQR,EAAKa,kBAAmB,CAChEX,UAAW,gBAETY,EAAgB,CAClBC,gBAAgB,EAChBT,QAAS,IACTU,UAAW,EACXX,SAAU,CAAC,CACTH,UAAW,OACXC,MA7Be,qBA8Bfa,UAAW,GACV,CACDb,MAAO,OACPa,UAAW,EACXX,SAAU,CAAC,CACTH,UAAW,SACXe,YAAY,EACZC,SAAU,CAAC,CACTf,MAAO,IACPM,IAAK,IACLJ,SAAU,CAACJ,IACV,CACDE,MAAO,IACPM,IAAK,IACLJ,SAAU,CAACJ,IACV,CACDE,MAAO,sBAKf,MAAO,CACLgB,KAAM,YACNC,QAAS,CAAC,OAAQ,QAAS,MAAO,OAAQ,MAAO,MAAO,MAAO,QAAS,MAAO,OAC/EC,kBAAkB,EAClBhB,SAAU,CAAC,CACTH,UAAW,OACXC,MAAO,UACPM,IAAK,IACLO,UAAW,GACXX,SAAU,CAACD,EAAmBQ,EAAwBF,EAAuBH,EAAuB,CAClGJ,MAAO,MACPM,IAAK,MACLJ,SAAU,CAAC,CACTH,UAAW,OACXC,MAAO,UACPM,IAAK,IACLJ,SAAU,CAACD,EAAmBG,EAAuBK,EAAwBF,QAGhFV,EAAKsB,QAAQ,UAAQ,SAAO,CAC7BN,UAAW,KACT,CACFb,MAAO,kBACPM,IAAK,UACLO,UAAW,IACVf,EAAc,CACfC,UAAW,OACXC,MAAO,SACPM,IAAK,MACLO,UAAW,IACV,CACDd,UAAW,MAQXC,MAAO,kBACPM,IAAK,IACLc,SAAU,CACRJ,KAAM,SAERd,SAAU,CAACS,GACXU,OAAQ,CACNf,IAAK,WACLgB,WAAW,EACXC,YAAa,CAAC,MAAO,SAEtB,CACDxB,UAAW,MAEXC,MAAO,mBACPM,IAAK,IACLc,SAAU,CACRJ,KAAM,UAERd,SAAU,CAACS,GACXU,OAAQ,CACNf,IAAK,aACLgB,WAAW,EACXC,YAAa,CAAC,aAAc,aAAc,SAE3C,CACDxB,UAAW,MACXC,MAAO,MACPM,IAAK,MACLJ,SAAU,CAAC,CACTH,UAAW,OACXC,MAAO,aACPa,UAAW,GACVF","file":"react-syntax-highlighter_languages_highlight_xml-0eafe6cf960a8c6ff830.js","sourcesContent":["/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common\n*/\nfunction xml(hljs) {\n  var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n  var XML_ENTITIES = {\n    className: 'symbol',\n    begin: '&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;'\n  };\n  var XML_META_KEYWORDS = {\n    begin: '\\\\s',\n    contains: [{\n      className: 'meta-keyword',\n      begin: '#?[a-z_][a-z1-9_-]+',\n      illegal: '\\\\n'\n    }]\n  };\n  var XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n    begin: '\\\\(',\n    end: '\\\\)'\n  });\n  var APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {\n    className: 'meta-string'\n  });\n  var QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n    className: 'meta-string'\n  });\n  var TAG_INTERNALS = {\n    endsWithParent: true,\n    illegal: /</,\n    relevance: 0,\n    contains: [{\n      className: 'attr',\n      begin: XML_IDENT_RE,\n      relevance: 0\n    }, {\n      begin: /=\\s*/,\n      relevance: 0,\n      contains: [{\n        className: 'string',\n        endsParent: true,\n        variants: [{\n          begin: /\"/,\n          end: /\"/,\n          contains: [XML_ENTITIES]\n        }, {\n          begin: /'/,\n          end: /'/,\n          contains: [XML_ENTITIES]\n        }, {\n          begin: /[^\\s\"'=<>`]+/\n        }]\n      }]\n    }]\n  };\n  return {\n    name: 'HTML, XML',\n    aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'],\n    case_insensitive: true,\n    contains: [{\n      className: 'meta',\n      begin: '<![a-z]',\n      end: '>',\n      relevance: 10,\n      contains: [XML_META_KEYWORDS, QUOTE_META_STRING_MODE, APOS_META_STRING_MODE, XML_META_PAR_KEYWORDS, {\n        begin: '\\\\[',\n        end: '\\\\]',\n        contains: [{\n          className: 'meta',\n          begin: '<![a-z]',\n          end: '>',\n          contains: [XML_META_KEYWORDS, XML_META_PAR_KEYWORDS, QUOTE_META_STRING_MODE, APOS_META_STRING_MODE]\n        }]\n      }]\n    }, hljs.COMMENT('<!--', '-->', {\n      relevance: 10\n    }), {\n      begin: '<\\\\!\\\\[CDATA\\\\[',\n      end: '\\\\]\\\\]>',\n      relevance: 10\n    }, XML_ENTITIES, {\n      className: 'meta',\n      begin: /<\\?xml/,\n      end: /\\?>/,\n      relevance: 10\n    }, {\n      className: 'tag',\n\n      /*\n      The lookahead pattern (?=...) ensures that 'begin' only matches\n      '<style' as a single word, followed by a whitespace or an\n      ending braket. The '$' is needed for the lexeme to be recognized\n      by hljs.subMode() that tests lexemes outside the stream.\n      */\n      begin: '<style(?=\\\\s|>)',\n      end: '>',\n      keywords: {\n        name: 'style'\n      },\n      contains: [TAG_INTERNALS],\n      starts: {\n        end: '</style>',\n        returnEnd: true,\n        subLanguage: ['css', 'xml']\n      }\n    }, {\n      className: 'tag',\n      // See the comment in the <style tag about the lookahead pattern\n      begin: '<script(?=\\\\s|>)',\n      end: '>',\n      keywords: {\n        name: 'script'\n      },\n      contains: [TAG_INTERNALS],\n      starts: {\n        end: '\\<\\/script\\>',\n        returnEnd: true,\n        subLanguage: ['javascript', 'handlebars', 'xml']\n      }\n    }, {\n      className: 'tag',\n      begin: '</?',\n      end: '/?>',\n      contains: [{\n        className: 'name',\n        begin: /[^\\/><\\s]+/,\n        relevance: 0\n      }, TAG_INTERNALS]\n    }]\n  };\n}\n\nmodule.exports = xml;"],"sourceRoot":""}