text: define(function (require, exports, module) {
      var k = window.JSON || {};
      if (!window.JSON) {
          var l = function (a) {
              return a < 10 ? "0" + a : a
          };
          if (typeof Date.prototype.toJSON !== "function") {
              Date.prototype.toJSON = function () {
                  return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + l(this.getUTCMonth() + 1) + "-" + l(this.getUTCDate()) + "T" + l(this.getUTCHours()) + ":" + l(this.getUTCMinutes()) + ":" + l(this.getUTCSeconds()) + "Z" : null
              };
              String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function () {
                  return this.valueOf()
              }
          }
          var o =
              /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
              p = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
              f,
              m,
              r = {
                  "": "\\b",
                  "\t": "\\t",
                  "\n": "\\n",
                  "": "\\f",
                  "\r": "\\r",
                  '"': '\\"',
                  "\\": "\\\\"
              },
              i,
              q = function (a) {
                  p.lastIndex = 0;
                  return p.test(a) ? '"' + a.replace(p,
                      function (c) {
                          var d = r[c];
                          return typeof d === "string" ? d : "\\u" + ("0000" + c.charCodeAt(0).toString(16)).slice(-4)
                      }) + '"' : '"' + a + '"'
              },
              n = function (a, c) {
                  var d,
                      g,
                      j = f,
                      e,
                      b = c[a];
                  if (b && typeof b === "object" && typeof b.toJSON === "function") b = b.toJSON(a);
                  if (typeof i === "function") b = i.call(c, a, b);
                  switch (typeof b) {
                  case "string":
                      return q(b);
                  case "number":
                      return isFinite(b) ? String(b) : "null";
                  case "boolean":
                  case "null":
                      return String(b);
                  case "object":
                      if (!b) return "null";
                      f += m;
                      e = [];
                      if (Object.prototype.toString.apply(b) === "[object Array]") {
                          g = b.length;
                          for (a = 0; a < g; a += 1) e[a] = n(a, b) || "null";
                          c = e.length === 0 ? "[]" : f ? "[\n" + f + e.join(",\n" + f) + "\n" + j + "]" : "[" + e.join(",") +
                              "]";
                          f = j;
                          return c
                      }
                      if (i && typeof i === "object") {
                          g = i.length;
                          for (a = 0; a < g; a += 1) {
                              d = i[a];
                              if (typeof d === "string")
                                  if (c = n(d, b)) e.push(q(d) + (f ? ": " : ":") + c)
                          }
                      } else
                          for (d in b)
                              if (Object.hasOwnProperty.call(b, d))
                                  if (c = n(d, b)) e.push(q(d) + (f ? ": " : ":") + c);
                      c = e.length === 0 ? "{}" : f ? "{\n" + f + e.join(",\n" + f) + "\n" + j + "}" : "{" + e.join(",") + "}";
                      f = j;
                      return c
                  }
              };
          if (typeof k.stringify !== "function") k.stringify = function (a, c, d) {
              var g;
              m = f = "";
              if (typeof d === "number")
                  for (g = 0; g < d; g += 1) m += " ";
              else if (typeof d === "string") m = d;
              if ((i = c) && typeof c !==
                  "function" && (typeof c !== "object" || typeof c.length !== "number")) throw new Error("JSON.stringify");
              return n("", {
                  "": a
              })
          };
          if (typeof k.parse !== "function") k.parse = function (a, c) {
              function d(g, j) {
                  var e,
                      b,
                      h = g[j];
                  if (h && typeof h === "object")
                      for (e in h)
                          if (Object.hasOwnProperty.call(h, e)) {
                              b = d(h, e);
                              if (b !== undefined) h[e] = b;
                              else delete h[e]
                          }
                  return c.call(g, j, h)
              }
              a = String(a);
              o.lastIndex = 0;
              if (o.test(a)) a = a.replace(o,
                  function (g) {
                      return "\\u" + ("0000" + g.charCodeAt(0).toString(16)).slice(-4)
                  });
              if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
                  "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {
                  a = eval("(" + a + ")");
                  return typeof c === "function" ? d({
                          "": a
                      },
                      "") : a
              }
              throw new SyntaxError("JSON.parse");
          }
      }
      return k
  });