var hljs = new function() {
  function l(a) {
    return a.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;")
  }
  function z(a, d) {
    if(!a) {
      return false
    }
    for(var c = 0;c < a.length;c++) {
      if(a[c] == d) {
        return true
      }
    }
    return false
  }
  function x(a, d, c) {
    return RegExp(d, "m" + (a.cI ? "i" : "") + (c ? "g" : ""))
  }
  function E(a) {
    for(var d = "", c = 0;c < a.childNodes.length;c++) {
      d += a.childNodes[c].nodeType == 3 ? a.childNodes[c].nodeValue : a.childNodes[c].nodeName == "BR" ? "\n" : E(a.childNodes[c])
    }
    return d
  }
  function J(a) {
    var d = a.className.split(/\s+/);
    d = d.concat(a.parentNode.className.split(/\s+/));
    for(a = 0;a < d.length;a++) {
      var c = d[a].replace(/^language-/, "");
      if(c == "no-highlight") throw"No highlight";
      if(r[c])return c;
    }
  }
  function F(a) {
    var d = [];
    (function(c, f) {
      for(var k = 0;k < c.childNodes.length;k++) {
        if(c.childNodes[k].nodeType == 3) {
          f += c.childNodes[k].nodeValue.length
        }else {
          if(c.childNodes[k].nodeName == "BR") {
            f += 1
          }else {
            d.push({event:"start", offset:f, node:c.childNodes[k]});
            f = arguments.callee(c.childNodes[k], f);
            d.push({event:"stop", offset:f, node:c.childNodes[k]})
          }
        }
      }
      return f
    })(a, 0);
    return d
  }
  function K(a, d, c) {
    function f(t) {
      var u = "<" + t.nodeName.toLowerCase();
      if(t.attributes) {
        for(var s = 0;s < t.attributes.length;s++) {
          var v = t.attributes[s];
          u += " " + v.nodeName.toLowerCase();
          if(v.nodeValue != undefined) {
            u += '="' + l(v.nodeValue) + '"'
          }
        }
      }
      return u + ">"
    }
    for(var k = 0, m = "", p = [];a.length || d.length;) {
      var o = (a.length && d.length ? a[0].offset != d[0].offset ? a[0].offset < d[0].offset ? a : d : a[0].event == "start" && d[0].event == "stop" ? d : a : a && a.length ? a : d).splice(0, 1)[0];
      m += l(c.substr(k, o.offset - k));
      k = o.offset;
      if(o.event == "start") {
        m += f(o.node);
        p.push(o.node)
      }else {
        if(o.event == "stop") {
          var n = p.length;
          do {
            n--;
            var j = p[n];
            m += "</" + j.nodeName.toLowerCase() + ">"
          }while(j != o.node);
          for(p.splice(n, 1);n < p.length;) {
            m += f(p[n]);
            n++
          }
        }
      }
    }
    m += c.substr(k);
    return m
  }
  function D(a, d) {
    function c(g, i) {
      if(j[g].e && j[g].eR.test(i)) {
        return 1
      }
      if(j[g].eW) {
        var b = c(g - 1, i);
        return b ? b + 1 : 0
      }
      return 0
    }
    function f(g, i) {
      function b(w) {
        z(e, w) || (e[e.length] = w)
      }
      var e = [];
      if(g.c) {
        for(var h = 0;h < i.m.length;h++) {
          z(g.c, i.m[h].cN) && b(i.m[h].b)
        }
      }
      h = j.length - 1;
      do {
        j[h].e && b(j[h].e);
        h--
      }while(j[h + 1].eW);
      g.i && b(g.i);
      var q = "(" + e[0];
      for(h = 0;h < e.length;h++) {
        q += "|" + e[h]
      }
      q += ")";
      return x(i, q)
    }
    function k(g, i) {
      var b = j[j.length - 1];
      if(!b.t) {
        b.t = f(b, n)
      }
      g = g.substr(i);
      b = b.t.exec(g);
      if(!b) {
        return[g, "", true]
      }
      return b.index == 0 ? ["", b[0], false] : [g.substr(0, b.index), b[0], false]
    }
    function m(g, i) {
      if(i.subLanguage && A[i.subLanguage]) {
        var b = D(i.subLanguage, g);
        u += b.keyword_count;
        t += b.r;
        return b.value
      }else {
        if(!i.k || !i.l) {
          b = l(g)
        }else {
          if(!i.lR) {
            b = "(" + i.l[0];
            for(var e = 1;e < i.l.length;e++) {
              b += "|" + i.l[e]
            }
            b += ")";
            i.lR = x(n, b, true)
          }
          b = "";
          var h = 0;
          i.lR.lastIndex = 0;
          for(e = i.lR.exec(g);e;) {
            b += l(g.substr(h, e.index - h));
            b: {
              h = i;
              var q = e;
              q = n.cI ? q[0].toLowerCase() : q[0];
              var w = void 0;
              for(w in h.keywordGroups) {
                if(h.keywordGroups.hasOwnProperty(w)) {
                  var G = h.keywordGroups[w].hasOwnProperty(q);
                  if(G) {
                    h = [w, G];
                    break b
                  }
                }
              }
              h = false
            }
            if(h) {
              u += h[1];
              b += '<span class="' + h[0] + '">' + l(e[0]) + "</span>"
            }else {
              b += l(e[0])
            }
            h = i.lR.lastIndex;
            e = i.lR.exec(g)
          }
          b += l(g.substr(h, g.length - h));
          b = b
        }
        return b
      }
    }
    function p(g, i) {
      var b = g.nM ? "" : '<span class="' + g.displayClassName + '">';
      if(g.rB) {
        s += b;
        g.buffer = ""
      }else {
        if(g.eB) {
          s += l(i) + b;
          g.buffer = ""
        }else {
          s += b;
          g.buffer = i
        }
      }
      j[j.length] = g
    }
    function o(g, i, b) {
      var e = j[j.length - 1];
      if(b) {
        s += m(e.buffer + g, e);
        return false
      }
      a: {
        if(e.c) {
          if(!e.sm) {
            b = n;
            e.sm = [];
            for(var h = 0;h < e.c.length;h++) {
              for(var q = 0;q < b.m.length;q++) {
                if(b.m[q].cN == e.c[h]) {
                  e.sm[e.sm.length] = b.m[q]
                }
              }
            }
          }
          for(b = 0;b < e.sm.length;b++) {
            if(e.sm[b].bR.test(i)) {
              b = e.sm[b];
              break a
            }
          }
        }
        b = null
      }
      if(b) {
        s += m(e.buffer + g, e);
        p(b, i);
        t += b.r;
        return b.rB
      }
      if(b = c(j.length - 1, i)) {
        h = e.nM ? "" : "</span>";
        for(s += e.rE ? m(e.buffer + g, e) + h : e.eE ? m(e.buffer + g, e) + h + l(i) : m(e.buffer + g + i, e) + h;b > 1;) {
          h = j[j.length - 2].nM ? "" : "</span>";
          s += h;
          b--;
          j.length--
        }
        j.length--;
        j[j.length - 1].buffer = "";
        if(e.starts) {
          for(g = 0;g < n.m.length;g++) {
            if(n.m[g].cN == e.starts) {
              p(n.m[g], "");
              break
            }
          }
        }
        return e.rE
      }
      if(e.iR && e.iR.test(i)) {
        throw"Illegal";
      }
    }
    var n = r[a], j = [n.dM], t = 0, u = 0, s = "";
    try {
      var v = 0;
      n.dM.buffer = "";
      do {
        var y = k(d, v), L = o(y[0], y[1], y[2]);
        v += y[0].length;
        L || (v += y[1].length)
      }while(!y[2]);
      if(j.length > 1) {
        throw"Illegal";
      }
      return{r:t, keyword_count:u, value:s}
    }catch(H) {
      if(H == "Illegal") {
        return{r:0, keyword_count:0, value:l(d)}
      }else {
        throw H;
      }
    }
  }
  function M() {
    function a(k) {
      if(!k.keywordGroups) {
        for(var m in k.k) {
          if(k.k.hasOwnProperty(m)) {
            k.keywordGroups = k.k[m] instanceof Object ? k.k : {keyword:k.k};
            break
          }
        }
      }
    }
    for(var d in r) {
      if(r.hasOwnProperty(d)) {
        var c = r[d];
        a(c.dM);
        for(var f = 0;f < c.m.length;f++) {
          a(c.m[f])
        }
      }
    }
  }
  function B() {
    if(!B.called) {
      B.called = true;
      for(var a in r) {
        if(r.hasOwnProperty(a)) {
          for(var d = r[a], c = 0;c < d.m.length;c++) {
            var f = d.m[c];
            if(f.b) {
              f.bR = x(d, "^" + f.b)
            }
            if(f.e) {
              f.eR = x(d, "^" + f.e)
            }
            if(f.i) {
              f.iR = x(d, "^(?:" + f.i + ")")
            }
            d.dM.iR = x(d, "^(?:" + d.dM.i + ")");
            if(f.r == undefined) {
              f.r = 1
            }
            if(!f.displayClassName) {
              f.displayClassName = f.cN
            }
          }
        }
      }
      M();
      A = r
    }
  }
  function I(a, d) {
    B();
    try {
      var c = E(a), f = J(a)
    }catch(k) {
      if(k == "No highlight") {
        return
      }
    }
    if(f) {
      var m = D(f, c).value
    }else {
      var p = 0, o;
      for(o in A) {
        if(A.hasOwnProperty(o)) {
          var n = D(o, c), j = n.keyword_count + n.r;
          if(j > p) {
            p = j;
            m = n.value;
            f = o
          }
        }
      }
    }
    if(m) {
      p = a.className;
      p.match(f) || (p += " " + f);
      f = F(a);
      if(f.length) {
        o = document.createElement("pre");
        o.innerHTML = m;
        m = K(f, F(o), c)
      }
      if(d) {
        m = m.replace(/^((<[^>]+>|\t)+)/gm, function(t, u) {
          return u.replace(/\t/g, d)
        })
      }
      c = document.createElement("div");
      c.innerHTML = '<pre parsed="1"><code class="' + p + '">' + m + "</code></pre>";
      a.parentNode.parentNode.replaceChild(c.firstChild, a.parentNode)
    }
  }
  function Rhl(){
    var d = document.getElementsByTagName("pre");
    for(a = 0;a < d.length;a++) {
      if(d[a].getAttribute('parsed'))continue;
      var c;
      a: {
        c = d[a];
        for(var f = 0;f < c.childNodes.length;f++) {
          node = c.childNodes[f];
          if(node.nodeName == "CODE") {
            c = node;
            break a
          }
          if(!(node.nodeType == 3 && node.nodeValue.match(/\s+/))) {
            c = null;
            break a
          }
        }
        c = void 0
      }
      if(c)I(c, hljs.tabReplace);
    }
  }
  function C() {
    if(!C.called) {
      C.called = true;
      B();
      if(arguments.length) {
        for(var a = 0;a < arguments.length;a++) {
          if(r[arguments[a]]) {
            A[arguments[a]] = r[arguments[a]]
          }
        }
      }
      Rhl();
    }
  }
  var r = {}, A = {};
  this.LANGUAGES = r;
  this.initHighlightingOnLoad = function() {
    var a = arguments, d = function() {
      C.apply(null, a)
    };
    if(window.addEventListener) {
      window.addEventListener("DOMContentLoaded", d, false);
      window.addEventListener("load", d, false)
    }else {
      if(window.attachEvent) {
        window.attachEvent("onload", d)
      }else {
        window.onload = d
      }
    }
  };
  this.highlightBlock = I;
  this.initHighlighting = C;
  this.reHighlight = Rhl;
  this.IR = "[a-zA-Z][a-zA-Z0-9_]*";
  this.UIR = "[a-zA-Z_][a-zA-Z0-9_]*";
  this.NR = "\\b\\d+(\\.\\d+)?";
  this.CNR = "\\b(0x[A-Za-z0-9]+|\\d+(\\.\\d+)?)";
  this.RSR = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";
  this.ASM = {cN:"string", b:"'", e:"'", i:"\\n", c:["escape"], r:0};
  this.QSM = {cN:"string", b:'"', e:'"', i:"\\n", c:["escape"], r:0};
  this.BE = {cN:"escape", b:"\\\\.", e:"^", nM:true, r:0};
  this.CLCM = {cN:"comment", b:"//", e:"$", r:0};
  this.CBLCLM = {cN:"comment", b:"/\\*", e:"\\*/"};
  this.HCM = {cN:"comment", b:"#", e:"$"};
  this.CNM = {cN:"number", b:this.CNR, e:"^", r:0}
}, initHighlightingOnLoad = hljs.initHighlightingOnLoad;
hljs.LANGUAGES.bash = function() {
  var l = {"true":1, "false":1};
  return{dM:{l:[hljs.IR], c:["string", "shebang", "comment", "number", "test_condition", "string", "variable"], k:{keyword:{"if":1, then:1, "else":1, fi:1, "for":1, "break":1, "continue":1, "while":1, "in":1, "do":1, done:1, echo:1, exit:1, "return":1, set:1, declare:1}, literal:l}}, cI:false, m:[{cN:"shebang", b:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)", e:"^", r:10}, hljs.HCM, {cN:"test_condition", b:"\\[ ", e:" \\]", c:["string", "variable", "number"], l:[hljs.IR], k:{literal:l}, r:0}, {cN:"test_condition", 
  b:"\\[\\[ ", e:" \\]\\]", c:["string", "variable", "number"], l:[hljs.IR], k:{literal:l}}, {cN:"variable", b:"\\$([a-zA-Z0-9_]+)\\b", e:"^"}, {cN:"variable", b:"\\$\\{(([^}])|(\\\\}))+\\}", e:"^", c:["number"]}, {cN:"string", b:'"', e:'"', i:"\\n", c:["escape", "variable"], r:0}, {cN:"string", b:'"', e:'"', i:"\\n", c:["escape", "variable"], r:0}, hljs.BE, hljs.CNM, {cN:"comment", b:"\\/\\/", e:"$", i:"."}]}
}();
hljs.LANGUAGES.cs = {dM:{l:[hljs.UIR], c:["comment", "string", "number"], k:{"abstract":1, as:1, base:1, bool:1, "break":1, "byte":1, "case":1, "catch":1, "char":1, checked:1, "class":1, "const":1, "continue":1, decimal:1, "default":1, delegate:1, "do":1, "do":1, "double":1, "else":1, "enum":1, event:1, explicit:1, extern:1, "false":1, "finally":1, fixed:1, "float":1, "for":1, foreach:1, "goto":1, "if":1, implicit:1, "in":1, "int":1, "interface":1, internal:1, is:1, lock:1, "long":1, namespace:1, 
"new":1, "null":1, object:1, operator:1, out:1, override:1, params:1, "private":1, "protected":1, "public":1, readonly:1, ref:1, "return":1, sbyte:1, sealed:1, "short":1, sizeof:1, stackalloc:1, "static":1, string:1, struct:1, "switch":1, "this":1, "throw":1, "true":1, "try":1, "typeof":1, uint:1, ulong:1, unchecked:1, unsafe:1, ushort:1, using:1, virtual:1, "volatile":1, "void":1, "while":1, ascending:1, descending:1, from:1, get:1, group:1, into:1, join:1, let:1, orderby:1, partial:1, select:1, 
set:1, value:1, "var":1, where:1, yield:1}}, m:[{cN:"comment", b:"///", e:"$", rB:true, c:["xmlDocTag"]}, {cN:"xmlDocTag", b:"///|<!--|--\>", e:"^"}, {cN:"xmlDocTag", b:"</?", e:">"}, {cN:"string", b:'@"', e:'"', c:["quoteQuote"]}, {cN:"quoteQuote", b:'""', e:"^"}, hljs.CLCM, hljs.CBLCLM, hljs.ASM, hljs.QSM, hljs.BE, hljs.CNM]};
hljs.XML_COMMENT = {cN:"comment", b:"<!--", e:"--\>"};
hljs.XML_ATTR = {cN:"attribute", b:"\\s[A-Za-z0-9\\._:-]+=", e:"^", c:["value"]};
hljs.XML_VALUE_QUOT = {cN:"value", b:'"', e:'"'};
hljs.XML_VALUE_APOS = {cN:"value", b:"'", e:"'"};
hljs.LANGUAGES.xml = {dM:{c:["pi", "comment", "cdata", "tag"]}, cI:true, m:[{cN:"pi", b:"<\\?", e:"\\?>", r:10}, hljs.XML_COMMENT, {cN:"cdata", b:"<\\!\\[CDATA\\[", e:"\\]\\]>"}, {cN:"tag", b:"</?", e:">", c:["title", "tag_internal"], r:1.5}, {cN:"title", b:"[A-Za-z0-9\\._:-]+", e:"^", r:0}, {cN:"tag_internal", b:"^", eW:true, nM:true, c:["attribute"], r:0, i:"[\\+\\.]"}, hljs.XML_ATTR, hljs.XML_VALUE_QUOT, hljs.XML_VALUE_APOS]};
hljs.HTML_TAGS = {code:1, kbd:1, font:1, noscript:1, style:1, img:1, title:1, menu:1, tt:1, tr:1, param:1, li:1, tfoot:1, th:1, input:1, td:1, dl:1, blockquote:1, fieldset:1, big:1, dd:1, abbr:1, optgroup:1, dt:1, button:1, isindex:1, p:1, small:1, div:1, dir:1, em:1, frame:1, meta:1, sub:1, bdo:1, label:1, acronym:1, sup:1, body:1, xml:1, basefont:1, base:1, br:1, address:1, strong:1, legend:1, ol:1, script:1, caption:1, s:1, col:1, h2:1, h3:1, h1:1, h6:1, h4:1, h5:1, table:1, select:1, noframes:1, 
span:1, area:1, dfn:1, strike:1, cite:1, thead:1, head:1, option:1, form:1, hr:1, "var":1, link:1, b:1, colgroup:1, ul:1, applet:1, del:1, iframe:1, pre:1, frameset:1, ins:1, tbody:1, html:1, samp:1, map:1, object:1, a:1, xmlns:1, center:1, textarea:1, i:1, q:1, u:1};
hljs.HTML_DOCTYPE = {cN:"doctype", b:"<!DOCTYPE", e:">", r:10};
hljs.HTML_ATTR = {cN:"attribute", b:"\\s[a-zA-Z\\:_-]+=", e:"^", c:["value"]};
hljs.HTML_SHORT_ATTR = {cN:"attribute", b:" [a-zA-Z]+", e:"^"};
hljs.HTML_VALUE = {cN:"value", b:"[a-zA-Z0-9]+", e:"^"};
hljs.LANGUAGES.html = {dM:{c:["tag", "comment", "doctype", "vbscript"]}, cI:true, m:[hljs.XML_COMMENT, hljs.HTML_DOCTYPE, {cN:"tag", l:[hljs.IR], k:hljs.HTML_TAGS, b:"<style", e:">", c:["attribute"], i:"[\\+\\.]", starts:"css"}, {cN:"tag", l:[hljs.IR], k:hljs.HTML_TAGS, b:"<script", e:">", c:["attribute"], i:"[\\+\\.]", starts:"javascript"}, {cN:"tag", l:[hljs.IR], k:hljs.HTML_TAGS, b:"<[A-Za-z/]", e:">", c:["attribute"], i:"[\\+\\.]"}, {cN:"css", e:"</style>", rE:true, subLanguage:"css"}, {cN:"javascript", 
e:"<\/script>", rE:true, subLanguage:"javascript"}, hljs.HTML_ATTR, hljs.HTML_SHORT_ATTR, hljs.XML_VALUE_QUOT, hljs.XML_VALUE_APOS, hljs.HTML_VALUE, {cN:"vbscript", b:"<%", e:"%>", subLanguage:"vbscript"}]};
hljs.LANGUAGES.javascript = {dM:{l:[hljs.UIR], c:["string", "comment", "number", "regexp_container", "function"], k:{keyword:{"in":1, "if":1, "for":1, "while":1, "finally":1, "var":1, "new":1, "function":1, "do":1, "return":1, "void":1, "else":1, "break":1, "catch":1, "instanceof":1, "with":1, "throw":1, "case":1, "default":1, "try":1, "this":1, "switch":1, "continue":1, "typeof":1, "delete":1}, literal:{"true":1, "false":1, "null":1}}}, m:[hljs.CLCM, hljs.CBLCLM, hljs.CNM, hljs.ASM, hljs.QSM, hljs.BE, 
{cN:"regexp_container", b:"(" + hljs.RSR + "|case|return|throw)\\s*", e:"^", nM:true, l:[hljs.IR], k:{"return":1, "throw":1, "case":1}, c:["comment", "regexp"], r:0}, {cN:"regexp", b:"/.*?[^\\\\/]/[gim]*", e:"^"}, {cN:"function", b:"\\bfunction\\b", e:"{", l:[hljs.UIR], k:{"function":1}, c:["title", "params"]}, {cN:"title", b:"[A-Za-z$_][0-9A-Za-z$_]*", e:"^"}, {cN:"params", b:"\\(", e:"\\)", c:["string", "comment"]}]};
hljs.LANGUAGES.css = {dM:{c:["at_rule", "id", "class", "attr_selector", "pseudo", "rules", "comment"], k:hljs.HTML_TAGS, l:[hljs.IR], i:"="}, cI:true, m:[{cN:"at_rule", b:"@", e:"[{;]", eE:true, l:[hljs.IR], k:{"import":1, page:1, media:1, charset:1, "font-face":1}, c:["function", "string", "number", "pseudo"]}, {cN:"id", b:"\\#[A-Za-z0-9_-]+", e:"^"}, {cN:"class", b:"\\.[A-Za-z0-9_-]+", e:"^", r:0}, {cN:"attr_selector", b:"\\[", e:"\\]", i:"$"}, {cN:"pseudo", b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+", 
e:"^"}, {cN:"rules", b:"{", e:"}", c:["rule", "comment"], i:"[^\\s]"}, {cN:"rule", b:"[A-Z\\_\\.\\-]+\\s*:", e:";", eW:true, l:["[A-Za-z-]+"], k:{"play-during":1, "counter-reset":1, "counter-increment":1, "min-height":1, quotes:1, "border-top":1, pitch:1, font:1, pause:1, "list-style-image":1, "border-width":1, cue:1, "outline-width":1, "border-left":1, elevation:1, richness:1, "speech-rate":1, "border-bottom":1, "border-spacing":1, background:1, "list-style-type":1, "text-align":1, "page-break-inside":1, 
orphans:1, "page-break-before":1, "text-transform":1, "line-height":1, "padding-left":1, "font-size":1, right:1, "word-spacing":1, "padding-top":1, "outline-style":1, bottom:1, content:1, "border-right-style":1, "padding-right":1, "border-left-style":1, "voice-family":1, "background-color":1, "border-bottom-color":1, "outline-color":1, "unicode-bidi":1, "max-width":1, "font-family":1, "caption-side":1, "border-right-width":1, "pause-before":1, "border-top-style":1, color:1, "border-collapse":1, "border-bottom-width":1, 
"float":1, height:1, "max-height":1, "margin-right":1, "border-top-width":1, speak:1, "speak-header":1, top:1, "cue-before":1, "min-width":1, width:1, "font-variant":1, "border-top-color":1, "background-position":1, "empty-cells":1, direction:1, "border-right":1, visibility:1, padding:1, "border-style":1, "background-attachment":1, overflow:1, "border-bottom-style":1, cursor:1, margin:1, display:1, "border-left-width":1, "letter-spacing":1, "vertical-align":1, clip:1, "border-color":1, "list-style":1, 
"padding-bottom":1, "pause-after":1, "speak-numeral":1, "margin-left":1, widows:1, border:1, "font-style":1, "border-left-color":1, "pitch-range":1, "background-repeat":1, "table-layout":1, "margin-bottom":1, "speak-punctuation":1, "font-weight":1, "border-right-color":1, "page-break-after":1, position:1, "white-space":1, "text-indent":1, "background-image":1, volume:1, stress:1, outline:1, clear:1, "z-index":1, "text-decoration":1, "margin-top":1, azimuth:1, "cue-after":1, left:1, "list-style-position":1}, 
c:["value"]}, hljs.CBLCLM, {cN:"value", b:"^", eW:true, eE:true, c:["function", "number", "hexcolor", "string", "important", "comment"]}, {cN:"number", b:hljs.NR, e:"^"}, {cN:"hexcolor", b:"\\#[0-9A-F]+", e:"^"}, {cN:"function", b:hljs.IR + "\\(", e:"\\)", c:["params"]}, {cN:"params", b:"^", eW:true, eE:true, c:["number", "string"]}, {cN:"important", b:"!important", e:"^"}, hljs.ASM, hljs.QSM]};
hljs.LANGUAGES.java = {dM:{l:[hljs.UIR], c:["javadoc", "comment", "string", "class", "number", "annotation"], k:{"false":1, "synchronized":1, "int":1, "abstract":1, "float":1, "private":1, "char":1, "interface":1, "boolean":1, "static":1, "null":1, "if":1, "const":1, "for":1, "true":1, "while":1, "long":1, "throw":1, strictfp:1, "finally":1, "protected":1, "extends":1, "import":1, "native":1, "final":1, "implements":1, "return":1, "void":1, "enum":1, "else":1, "break":1, "transient":1, "new":1, "catch":1, 
"instanceof":1, "byte":1, "super":1, "class":1, "volatile":1, "case":1, assert:1, "short":1, "package":1, "default":1, "double":1, "public":1, "try":1, "this":1, "switch":1, "continue":1, "throws":1}}, m:[{cN:"class", l:[hljs.UIR], b:"(class |interface )", e:"{", i:":", k:{"class":1, "interface":1}, c:["inheritance", "title"]}, {cN:"inheritance", b:"(implements|extends)", e:"^", nM:true, l:[hljs.IR], k:{"extends":1, "implements":1}, r:10}, {cN:"title", b:hljs.UIR, e:"^"}, {cN:"params", b:"\\(", e:"\\)", 
c:["string", "annotation"]}, hljs.CNM, hljs.ASM, hljs.QSM, hljs.BE, hljs.CLCM, {cN:"javadoc", b:"/\\*\\*", e:"\\*/", c:["javadoctag"], r:10}, {cN:"javadoctag", b:"@[A-Za-z]+", e:"^"}, hljs.CBLCLM, {cN:"annotation", b:"@[A-Za-z]+", e:"^"}]};
hljs.LANGUAGES.php = {dM:{l:[hljs.IR], c:["comment", "number", "string", "variable", "preprocessor"], k:{and:1, include_once:1, list:1, "abstract":1, global:1, "private":1, echo:1, "interface":1, as:1, "static":1, endswitch:1, array:1, "null":1, "if":1, endwhile:1, or:1, "const":1, "for":1, endforeach:1, self:1, "var":1, "while":1, isset:1, "public":1, "protected":1, exit:1, foreach:1, "throw":1, elseif:1, "extends":1, include:1, __FILE__:1, empty:1, require_once:1, "function":1, "do":1, xor:1, "return":1, 
"implements":1, parent:1, clone:1, use:1, __CLASS__:1, __LINE__:1, "else":1, "break":1, print:1, eval:1, "new":1, "catch":1, __METHOD__:1, "class":1, "case":1, exception:1, php_user_filter:1, "default":1, die:1, require:1, __FUNCTION__:1, enddeclare:1, "final":1, "try":1, "this":1, "switch":1, "continue":1, endfor:1, endif:1, declare:1, unset:1}}, cI:true, m:[hljs.CLCM, hljs.HCM, {cN:"comment", b:"/\\*", e:"\\*/", c:["phpdoc"]}, {cN:"phpdoc", b:"\\s@[A-Za-z]+", e:"^", r:10}, hljs.CNM, {cN:"string", 
b:"'", e:"'", c:["escape"], r:0}, {cN:"string", b:'"', e:'"', c:["escape"], r:0}, hljs.BE, {cN:"variable", b:"\\$[a-zA-Z_-\u00ff][a-zA-Z0-9_-\u00ff]*", e:"^"}, {cN:"preprocessor", b:"<\\?php", e:"^", r:10}, {cN:"preprocessor", b:"\\?>", e:"^"}]};
hljs.LANGUAGES.python = {dM:{l:[hljs.UIR], i:"(</|->|\\?)", c:["comment", "string", "function", "class", "number", "decorator"], k:{keyword:{and:1, elif:1, is:1, global:1, as:1, "in":1, "if":1, from:1, raise:1, "for":1, except:1, "finally":1, print:1, "import":1, pass:1, "return":1, exec:1, "else":1, "break":1, not:1, "with":1, "class":1, assert:1, yield:1, "try":1, "while":1, "continue":1, del:1, or:1, def:1, lambda:1, nonlocal:10}, built_in:{None:1, True:1, False:1, Ellipsis:1, NotImplemented:1}}}, 
m:[{cN:"function", l:[hljs.UIR], b:"\\bdef ", e:":", i:"$", k:{def:1}, c:["title", "params"], r:10}, {cN:"class", l:[hljs.UIR], b:"\\bclass ", e:":", i:"[${]", k:{"class":1}, c:["title", "params"], r:10}, {cN:"title", b:hljs.UIR, e:"^"}, {cN:"params", b:"\\(", e:"\\)", c:["string"]}, hljs.HCM, hljs.CNM, {cN:"string", b:"u?r?'''", e:"'''", r:10}, {cN:"string", b:'u?r?"""', e:'"""', r:10}, hljs.ASM, hljs.QSM, hljs.BE, {cN:"string", b:"(u|r|ur)'", e:"'", c:["escape"], r:10}, {cN:"string", b:'(u|r|ur)"', 
e:'"', c:["escape"], r:10}, {cN:"decorator", b:"@", e:"$"}]};
hljs.LANGUAGES.sql = {cI:true, dM:{c:["operator", "comment"], i:"[^\\s]"}, m:[{cN:"operator", b:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma)\\b", e:";|$", c:["string", "number", "newline"], l:["[a-zA-Z][a-zA-Z0-9_\\.]*"], k:{keyword:{all:1, partial:1, global:1, month:1, current_timestamp:1, using:1, go:1, revoke:1, smallint:1, indicator:1, "end-exec":1, disconnect:1, zone:1, "with":1, character:1, 
assertion:1, to:1, add:1, current_user:1, usage:1, input:1, local:1, alter:1, match:1, collate:1, real:1, then:1, rollback:1, get:1, read:1, timestamp:1, session_user:1, not:1, integer:1, bit:1, unique:1, day:1, minute:1, desc:1, insert:1, execute:1, like:1, ilike:2, level:1, decimal:1, drop:1, "continue":1, isolation:1, found:1, where:1, constraints:1, domain:1, right:1, national:1, some:1, module:1, transaction:1, relative:1, second:1, connect:1, escape:1, close:1, system_user:1, "for":1, deferred:1, 
section:1, cast:1, current:1, sqlstate:1, allocate:1, intersect:1, deallocate:1, numeric:1, "public":1, preserve:1, full:1, "goto":1, initially:1, asc:1, no:1, key:1, output:1, collation:1, group:1, by:1, union:1, session:1, both:1, last:1, language:1, constraint:1, column:1, of:1, space:1, foreign:1, deferrable:1, prior:1, connection:1, unknown:1, action:1, commit:1, view:1, or:1, first:1, into:1, "float":1, year:1, primary:1, cascaded:1, except:1, restrict:1, set:1, references:1, names:1, table:1, 
outer:1, open:1, select:1, size:1, are:1, rows:1, from:1, prepare:1, distinct:1, leading:1, create:1, only:1, next:1, inner:1, authorization:1, schema:1, corresponding:1, option:1, declare:1, precision:1, immediate:1, "else":1, timezone_minute:1, external:1, varying:1, translation:1, "true":1, "case":1, exception:1, join:1, hour:1, "default":1, "double":1, scroll:1, value:1, cursor:1, descriptor:1, values:1, dec:1, fetch:1, procedure:1, "delete":1, and:1, "false":1, "int":1, is:1, describe:1, "char":1, 
as:1, at:1, "in":1, varchar:1, "null":1, trailing:1, any:1, absolute:1, current_time:1, end:1, grant:1, privileges:1, when:1, cross:1, check:1, write:1, current_date:1, pad:1, begin:1, temporary:1, exec:1, time:1, update:1, catalog:1, user:1, sql:1, date:1, on:1, identity:1, timezone_hour:1, natural:1, whenever:1, interval:1, work:1, order:1, cascade:1, diagnostics:1, nchar:1, having:1, left:1, call:1, "do":1, handler:1, load:1, replace:1, truncate:1, start:1, lock:1, show:1, pragma:1}, aggregate:{count:1, 
sum:1, min:1, max:1, avg:1}}}, {cN:"newline", b:"\\n", e:"^", nM:true}, hljs.CNM, hljs.CBLCLM, {cN:"comment", b:"--", e:"$"}, {cN:"string", b:"'", e:"'", c:["escape", "squote"], r:0}, {cN:"squote", b:"''", e:"^", nM:true}, {cN:"string", b:'"', e:'"', c:["escape", "dquote"], r:0}, {cN:"dquote", b:'""', e:"^", nM:true}, {cN:"string", b:"`", e:"`", c:["escape"]}, hljs.BE]};
hljs.LANGUAGES.perl = function() {
  var l = ["comment", "string", "number", "regexp", "sub", "variable", "operator", "pod"], z = {getpwent:1, getservent:1, quotemeta:1, msgrcv:1, scalar:1, kill:1, dbmclose:1, undef:1, lc:1, ma:1, syswrite:1, tr:1, send:1, umask:1, sysopen:1, shmwrite:1, vec:1, qx:1, utime:1, local:1, oct:1, semctl:1, localtime:1, readpipe:1, "do":1, "return":1, format:1, read:1, sprintf:1, dbmopen:1, pop:1, getpgrp:1, not:1, getpwnam:1, rewinddir:1, qq:1, fileno:1, qw:1, endprotoent:1, wait:1, sethostent:1, bless:1, 
  s:1, opendir:1, "continue":1, each:1, sleep:1, endgrent:1, shutdown:1, dump:1, chomp:1, connect:1, getsockname:1, die:1, socketpair:1, close:1, flock:1, exists:1, index:1, shmget:1, sub:1, "for":1, endpwent:1, redo:1, lstat:1, msgctl:1, setpgrp:1, abs:1, exit:1, select:1, print:1, ref:1, gethostbyaddr:1, unshift:1, fcntl:1, syscall:1, "goto":1, getnetbyaddr:1, join:1, gmtime:1, symlink:1, semget:1, splice:1, x:1, getpeername:1, recv:1, log:1, setsockopt:1, cos:1, last:1, reverse:1, gethostbyname:1, 
  getgrnam:1, study:1, formline:1, endhostent:1, times:1, chop:1, length:1, gethostent:1, getnetent:1, pack:1, getprotoent:1, getservbyname:1, rand:1, mkdir:1, pos:1, chmod:1, y:1, substr:1, endnetent:1, printf:1, next:1, open:1, msgsnd:1, readdir:1, use:1, unlink:1, getsockopt:1, getpriority:1, rindex:1, wantarray:1, hex:1, system:1, getservbyport:1, endservent:1, "int":1, chr:1, untie:1, rmdir:1, prototype:1, tell:1, listen:1, fork:1, shmread:1, ucfirst:1, setprotoent:1, "else":1, sysseek:1, link:1, 
  getgrgid:1, shmctl:1, waitpid:1, unpack:1, getnetbyname:1, reset:1, chdir:1, grep:1, split:1, require:1, caller:1, lcfirst:1, until:1, warn:1, "while":1, values:1, shift:1, telldir:1, getpwuid:1, my:1, getprotobynumber:1, "delete":1, and:1, sort:1, uc:1, defined:1, srand:1, accept:1, "package":1, seekdir:1, getprotobyname:1, semop:1, our:1, rename:1, seek:1, "if":1, q:1, chroot:1, sysread:1, setpwent:1, no:1, crypt:1, getc:1, chown:1, sqrt:1, write:1, setnetent:1, setpriority:1, foreach:1, tie:1, 
  sin:1, msgget:1, map:1, stat:1, getlogin:1, unless:1, elsif:1, truncate:1, exec:1, keys:1, glob:1, tied:1, closedir:1, ioctl:1, socket:1, readlink:1, eval:1, xor:1, readline:1, binmode:1, setservent:1, eof:1, ord:1, bind:1, alarm:1, pipe:1, atan2:1, getgrent:1, exp:1, time:1, push:1, setgrent:1, gt:1, lt:1, or:1, ne:1, m:1};
  return{dM:{l:[hljs.IR], c:l, k:z}, m:[{cN:"variable", b:"\\$\\d", e:"^"}, {cN:"variable", b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)", e:"^"}, {cN:"subst", b:"[$@]\\{", e:"}", l:[hljs.IR], k:z, c:l, r:10}, {cN:"number", b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b", e:"^", r:0}, {cN:"string", b:"q[qwxr]?\\s*\\(", e:"\\)", c:["escape", "subst", "variable"], r:5}, {cN:"string", b:"q[qwxr]?\\s*\\[", e:"\\]", c:["escape", "subst", 
  "variable"], r:5}, {cN:"string", b:"q[qwxr]?\\s*\\{", e:"\\}", c:["escape", "subst", "variable"], r:5}, {cN:"string", b:"q[qwxr]?\\s*\\|", e:"\\|", c:["escape", "subst", "variable"], r:5}, {cN:"string", b:"q[qwxr]?\\s*\\<", e:"\\>", c:["escape", "subst", "variable"], r:5}, {cN:"string", b:"qw\\s+q", e:"q", c:["escape", "subst", "variable"], r:5}, {cN:"string", b:"'", e:"'", c:["escape"], r:0}, {cN:"string", b:'"', e:'"', c:["escape", "subst", "variable"], r:0}, hljs.BE, {cN:"string", b:"`", e:"`", 
  c:["escape"]}, {cN:"regexp", b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*", e:"^", r:10}, {cN:"regexp", b:"(m|qr)?/", e:"/[a-z]*", c:["escape"], r:0}, {cN:"string", b:"{\\w+}", e:"^", r:0}, {cN:"string", b:"-?\\w+\\s*\\=\\>", e:"^", r:0}, {cN:"sub", b:"\\bsub\\b", e:"(\\s*\\(.*?\\))?[;{]", l:[hljs.IR], k:{sub:1}, r:5}, {cN:"operator", b:"-\\w\\b", e:"^", r:0}, hljs.HCM, {cN:"comment", b:"^(__END__|__DATA__)", e:"\\n$", r:5}, {cN:"pod", b:"\\=\\w", e:"\\=cut"}]}
}();
hljs.LANGUAGES.delphi = function() {
  var l = {xor:1, and:1, safecall:1, cdecl:1, then:1, string:1, exports:1, library:1, not:1, pascal:1, set:1, virtual:1, file:1, "in":1, array:1, label:1, packed:1, "end.":1, index:1, "while":1, "const":1, raise:1, "for":1, to:1, implementation:1, "with":1, except:1, overload:1, destructor:1, downto:1, "finally":1, program:1, exit:1, unit:1, inherited:1, override:1, "if":1, type:1, until:1, "function":1, "do":1, begin:1, repeat:1, "goto":1, nil:1, far:1, initialization:1, object:1, "else":1, "var":1, uses:1, 
  external:1, resourcestring:1, "interface":1, end:1, finalization:1, "class":1, asm:1, mod:1, "case":1, on:1, shr:1, shl:1, of:1, register:1, xorwrite:1, threadvar:1, "try":1, record:1, near:1, stored:1, constructor:1, stdcall:1, inline:1, div:1, out:1, or:1, procedure:1};
  return{dM:{l:[hljs.IR], i:'("|\\$[G-Zg-z]|\\/\\*|</)', c:["comment", "string", "number", "function", "class"], k:l}, cI:true, m:[{cN:"comment", b:"{", e:"}", r:0}, {cN:"comment", b:"\\(\\*", e:"\\*\\)", r:10}, hljs.CLCM, {cN:"number", b:hljs.NR, e:"^", r:0}, {cN:"string", b:"'", e:"'", c:["quote"], r:0}, {cN:"string", b:"(#\\d+)+", e:"^"}, {cN:"quote", b:"''", e:"^", nM:true}, {cN:"function", b:"function\\b", e:"[:;]", l:[hljs.IR], k:{"function":1}, c:["title", "params", "comment"], r:0}, {cN:"function", 
  b:"(procedure|constructor|destructor)\\b", e:";", l:[hljs.IR], k:{constructor:1, destructor:1, procedure:1}, c:["title", "params", "comment"], r:10}, {cN:"title", b:hljs.IR, e:"^"}, {cN:"params", b:"\\(", e:"\\)", l:[hljs.IR], k:l, c:["string"]}, {cN:"class", b:"=\\bclass\\b", e:"end;", l:[hljs.IR], k:{safecall:1, stdcall:1, pascal:1, stored:1, "const":1, implementation:1, finalization:1, except:1, to:1, "finally":1, program:1, inherited:1, override:1, then:1, exports:1, string:1, read:1, not:1, 
  mod:1, shr:1, "try":1, div:1, shl:1, set:1, library:1, message:1, packed:1, index:1, "for":1, near:1, overload:1, label:1, downto:1, exit:1, "public":1, "goto":1, "interface":1, asm:1, on:1, of:1, constructor:1, or:1, "private":1, array:1, unit:1, raise:1, destructor:1, "var":1, type:1, until:1, "function":1, "else":1, external:1, "with":1, "case":1, "default":1, record:1, "while":1, "protected":1, property:1, procedure:1, published:1, and:1, cdecl:1, "do":1, threadvar:1, file:1, "in":1, "if":1, 
  end:1, virtual:1, write:1, far:1, out:1, begin:1, repeat:1, nil:1, initialization:1, object:1, uses:1, resourcestring:1, "class":1, register:1, xorwrite:1, inline:1, "static":1}, c:["string", "comment", "function"]}]}
}();
hljs.LANGUAGES.cpp = function() {
  var l = {keyword:{"false":1, "int":1, "float":1, "while":1, "private":1, "char":1, "catch":1, "export":1, virtual:1, operator:2, sizeof:2, dynamic_cast:2, typedef:2, const_cast:2, "const":1, struct:1, "for":1, static_cast:2, union:1, namespace:1, unsigned:1, "long":1, "throw":1, "volatile":2, "static":1, "protected":1, bool:1, template:1, mutable:1, "if":1, "public":1, friend:2, "do":1, "return":1, "goto":1, auto:1, "void":2, "enum":1, "else":1, "break":1, "new":1, extern:1, using:1, "true":1, 
  "class":1, asm:1, "case":1, typeid:1, "short":1, reinterpret_cast:2, "default":1, "double":1, register:1, explicit:1, signed:1, typename:1, "try":1, "this":1, "switch":1, "continue":1, wchar_t:1, inline:1, "delete":1}, built_in:{std:1, string:1, cin:1, cout:1, cerr:1, clog:1, stringstream:1, istringstream:1, ostringstream:1, auto_ptr:1, deque:1, list:1, queue:1, stack:1, vector:1, map:1, set:1, bitset:1, multiset:1, multimap:1}};
  return{dM:{l:[hljs.UIR], i:"</", c:["comment", "string", "number", "preprocessor", "stl_container"], k:l}, m:[hljs.CLCM, hljs.CBLCLM, hljs.CNM, hljs.QSM, hljs.BE, {cN:"string", b:"'", e:"[^\\\\]'", i:"[^\\\\][^']"}, {cN:"preprocessor", b:"#", e:"$"}, {cN:"stl_container", b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap)\\s*<", e:">", c:["stl_container"], l:[hljs.UIR], k:l, r:10}]}
}();

