text: define("ace/mode/folding/coffee", ["require", "exports", "module", "ace/lib/oop", "ace/mode/folding/fold_mode", "ace/range"], function (e, t, n) {
      "use strict";
      var r = e("../../lib/oop"), i = e("./fold_mode").FoldMode, s = e("../../range").Range, o = t.FoldMode = function () {
      };
      r.inherits(o, i), function () {
          this.getFoldWidgetRange = function (e, t, n) {
              var r = this.indentationBlock(e, n);
              if (r)return r;
              var i = /\S/, o = e.getLine(n), u = o.search(i);
              if (u == -1 || o[u] != "#")return;
              var a = o.length, f = e.getLength(), l = n, c = n;
              while (++n < f) {
                  o = e.getLine(n);
                  var h = o.search(i);
                  if (h == -1)continue;
                  if (o[h] != "#")break;
                  c = n
              }
              if (c > l) {
                  var p = e.getLine(c).length;
                  return new s(l, a, c, p)
              }
          }, this.getFoldWidget = function (e, t, n) {
              var r = e.getLine(n), i = r.search(/\S/), s = e.getLine(n + 1), o = e.getLine(n - 1), u = o.search(/\S/), a = s.search(/\S/);
              if (i == -1)return e.foldWidgets[n - 1] = u != -1 && u < a ? "start" : "", "";
              if (u == -1) {
                  if (i == a && r[i] == "#" && s[i] == "#")return e.foldWidgets[n - 1] = "", e.foldWidgets[n + 1] = "", "start"
              } else if (u == i && r[i] == "#" && o[i] == "#" && e.getLine(n - 2).search(/\S/) == -1)return e.foldWidgets[n - 1] = "start", e.foldWidgets[n + 1] = "", "";
              return u != -1 && u < i ? e.foldWidgets[n - 1] = "start" : e.foldWidgets[n - 1] = "", i < a ? "start" : ""
          }
      }.call(o.prototype)
  }), define("ace/mode/snippets", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/text_highlight_rules", "ace/mode/folding/coffee"], function (e, t, n) {
      "use strict";
      var r = e("../lib/oop"), i = e("./text").Mode, s = e("./text_highlight_rules").TextHighlightRules, o = function () {
          var e = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";
          this.$rules = {
              start: [{token: "constant.language.escape", regex: /\\[\$}`\\]/}, {
                  token: "keyword",
                  regex: "\\$(?:TM_)?(?:" + e + ")\\b"
              }, {token: "variable", regex: "\\$\\w+"}, {
                  onMatch: function (e, t, n) {
                      return n[1] ? n[1]++ : n.unshift(t, 1), this.tokenName
                  }, tokenName: "markup.list", regex: "\\${", next: "varDecl"
              }, {
                  onMatch: function (e, t, n) {
                      return n[1] ? (n[1]--, n[1] || n.splice(0, 2), this.tokenName) : "text"
                  }, tokenName: "markup.list", regex: "}"
              }, {token: "doc.comment", regex: /^\${2}-{5,}$/}],
              varDecl: [{regex: /\d+\b/, token: "constant.numeric"}, {
                  token: "keyword",
                  regex: "(?:TM_)?(?:" + e + ")\\b"
              }, {token: "variable", regex: "\\w+"}, {
                  regex: /:/,
                  token: "punctuation.operator",
                  next: "start"
              }, {regex: /\//, token: "string.regex", next: "regexp"}, {regex: "", next: "start"}],
              regexp: [{regex: /\\./, token: "escape"}, {
                  regex: /\[/,
                  token: "regex.start",
                  next: "charClass"
              }, {regex: "/", token: "string.regex", next: "format"}, {token: "string.regex", regex: "."}],
              charClass: [{regex: "\\.", token: "escape"}, {
                  regex: "\\]",
                  token: "regex.end",
                  next: "regexp"
              }, {token: "string.regex", regex: "."}],
              format: [{regex: /\\[ulULE]/, token: "keyword"}, {regex: /\$\d+/, token: "variable"}, {
                  regex: "/[gim]*:?",
                  token: "string.regex",
                  next: "start"
              }, {token: "string", regex: "."}]
          }
      };
      r.inherits(o, s), t.SnippetHighlightRules = o;
      var u = function () {
          this.$rules = {
              start: [{token: "text", regex: "^\\t", next: "sn-start"}, {
                  token: "invalid",
                  regex: /^ \s*/
              }, {token: "comment", regex: /^#.*/}, {
                  token: "constant.language.escape",
                  regex: "^regex ",
                  next: "regex"
              }, {
                  token: "constant.language.escape",
                  regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"
              }],
              regex: [{token: "text", regex: "\\."}, {token: "keyword", regex: "/"}, {
                  token: "empty",
                  regex: "$",
                  next: "start"
              }]
          }, this.embedRules(o, "sn-", [{token: "text", regex: "^\\t", next: "sn-start"}, {
              onMatch: function (e, t, n) {
                  return n.splice(n.length), this.tokenName
              }, tokenName: "text", regex: "^(?!	)", next: "start"
          }])
      };
      r.inherits(u, s), t.SnippetGroupHighlightRules = u;
      var a = e("./folding/coffee").FoldMode, f = function () {
          this.HighlightRules = u, this.foldingRules = new a
      };
      r.inherits(f, i), function () {
          this.$indentWithTabs = !0, this.lineCommentStart = "#", this.$id = "ace/mode/snippets"
      }.call(f.prototype), t.Mode = f
  })