ace.define("ace/mode/rst_highlight_rules", ["require", "exports", "module", "ace/lib/oop", "ace/lib/lang", "ace/mode/text_highlight_rules"], function (require, exports, module) {
  "use strict";

  var oop = require("../lib/oop");

  var lang = require("../lib/lang");

  var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;

  var RSTHighlightRules = function RSTHighlightRules() {
    var tokens = {
      title: "markup.heading",
      list: "markup.heading",
      table: "constant",
      directive: "keyword.operator",
      entity: "string",
      link: "markup.underline.list",
      bold: "markup.bold",
      italic: "markup.italic",
      literal: "support.function",
      comment: "comment"
    };
    var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])";
    var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))";
    this.$rules = {
      "start": [{
        token: tokens.title,
        regex: "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)"
      }, {
        token: ["text", tokens.directive, tokens.literal],
        regex: "(^\\s*\\.\\. )([^: ]+::)(.*$)",
        next: "codeblock"
      }, {
        token: tokens.directive,
        regex: "::$",
        next: "codeblock"
      }, {
        token: [tokens.entity, tokens.link],
        regex: "(^\\.\\. _[^:]+:)(.*$)"
      }, {
        token: [tokens.entity, tokens.link],
        regex: "(^__ )(https?://.*$)"
      }, {
        token: tokens.entity,
        regex: "^\\.\\. \\[[^\\]]+\\] "
      }, {
        token: tokens.comment,
        regex: "^\\.\\. .*$",
        next: "comment"
      }, {
        token: tokens.list,
        regex: "^\\s*[\\*\\+-] "
      }, {
        token: tokens.list,
        regex: "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. "
      }, {
        token: tokens.list,
        regex: "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) "
      }, {
        token: tokens.table,
        regex: "^={2,}(?: +={2,})+$"
      }, {
        token: tokens.table,
        regex: "^\\+-{2,}(?:\\+-{2,})+\\+$"
      }, {
        token: tokens.table,
        regex: "^\\+={2,}(?:\\+={2,})+\\+$"
      }, {
        token: ["text", tokens.literal],
        regex: startStringPrefix + "(``)(?=\\S)",
        next: "code"
      }, {
        token: ["text", tokens.bold],
        regex: startStringPrefix + "(\\*\\*)(?=\\S)",
        next: "bold"
      }, {
        token: ["text", tokens.italic],
        regex: startStringPrefix + "(\\*)(?=\\S)",
        next: "italic"
      }, {
        token: tokens.entity,
        regex: "\\|[\\w\\-]+?\\|"
      }, {
        token: tokens.entity,
        regex: ":[\\w-:]+:`\\S",
        next: "entity"
      }, {
        token: ["text", tokens.entity],
        regex: startStringPrefix + "(_`)(?=\\S)",
        next: "entity"
      }, {
        token: tokens.entity,
        regex: "_[A-Za-z0-9\\-]+?"
      }, {
        token: ["text", tokens.link],
        regex: startStringPrefix + "(`)(?=\\S)",
        next: "link"
      }, {
        token: tokens.link,
        regex: "[A-Za-z0-9\\-]+?__?"
      }, {
        token: tokens.link,
        regex: "\\[[^\\]]+?\\]_"
      }, {
        token: tokens.link,
        regex: "https?://\\S+"
      }, {
        token: tokens.table,
        regex: "\\|"
      }],
      "codeblock": [{
        token: tokens.literal,
        regex: "^ +.+$",
        next: "codeblock"
      }, {
        token: tokens.literal,
        regex: '^$',
        next: "codeblock"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }],
      "code": [{
        token: tokens.literal,
        regex: "\\S``" + endStringSuffix,
        next: "start"
      }, {
        defaultToken: tokens.literal
      }],
      "bold": [{
        token: tokens.bold,
        regex: "\\S\\*\\*" + endStringSuffix,
        next: "start"
      }, {
        defaultToken: tokens.bold
      }],
      "italic": [{
        token: tokens.italic,
        regex: "\\S\\*" + endStringSuffix,
        next: "start"
      }, {
        defaultToken: tokens.italic
      }],
      "entity": [{
        token: tokens.entity,
        regex: "\\S`" + endStringSuffix,
        next: "start"
      }, {
        defaultToken: tokens.entity
      }],
      "link": [{
        token: tokens.link,
        regex: "\\S`__?" + endStringSuffix,
        next: "start"
      }, {
        defaultToken: tokens.link
      }],
      "comment": [{
        token: tokens.comment,
        regex: "^ +.+$",
        next: "comment"
      }, {
        token: tokens.comment,
        regex: '^$',
        next: "comment"
      }, {
        token: "empty",
        regex: "",
        next: "start"
      }]
    };
  };

  oop.inherits(RSTHighlightRules, TextHighlightRules);
  exports.RSTHighlightRules = RSTHighlightRules;
});
ace.define("ace/mode/rst", ["require", "exports", "module", "ace/lib/oop", "ace/mode/text", "ace/mode/rst_highlight_rules"], function (require, exports, module) {
  "use strict";

  var oop = require("../lib/oop");

  var TextMode = require("./text").Mode;

  var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules;

  var Mode = function Mode() {
    this.HighlightRules = RSTHighlightRules;
  };

  oop.inherits(Mode, TextMode);
  (function () {
    this.type = "text";
    this.$id = "ace/mode/rst";
    this.snippetFileId = "ace/snippets/rst";
  }).call(Mode.prototype);
  exports.Mode = Mode;
});

(function () {
  ace.require(["ace/mode/rst"], function (m) {
    if (typeof module == "object" && typeof exports == "object" && module) {
      module.exports = m;
    }
  });
})();