this.JSON||(JSON=function(){function l(c){return c<10?"0"+c:c}function m(c){return p.test(c)?'"'+c.replace(p,function(e){var b=q[e];if(typeof b==="string")return b;b=e.charCodeAt();return"\\u00"+Math.floor(b/16).toString(16)+(b%16).toString(16)})+'"':'"'+c+'"'}function n(c,e){var b,d,g,j,i=h,f,a=e[c];if(a&&typeof a==="object"&&typeof a.toJSON==="function")a=a.toJSON(c);if(typeof k==="function")a=k.call(e,c,a);switch(typeof a){case "string":return m(a);case "number":return isFinite(a)?String(a):"null";
case "boolean":case "null":return String(a);case "object":if(!a)return"null";h+=o;f=[];if(typeof a.length==="number"&&!a.propertyIsEnumerable("length")){j=a.length;for(b=0;b<j;b+=1)f[b]=n(b,a)||"null";g=f.length===0?"[]":h?"[\n"+h+f.join(",\n"+h)+"\n"+i+"]":"["+f.join(",")+"]";h=i;return g}if(typeof k==="object"){j=k.length;for(b=0;b<j;b+=1){d=k[b];if(typeof d==="string")if(g=n(d,a,k))f.push(m(d)+(h?": ":":")+g)}}else for(d in a)if(g=n(d,a,k))f.push(m(d)+(h?": ":":")+g);g=f.length===0?"{}":h?"{\n"+
h+f.join(",\n"+h)+"\n"+i+"}":"{"+f.join(",")+"}";h=i;return g}}Date.prototype.toJSON=function(){return this.getUTCFullYear()+"-"+l(this.getUTCMonth()+1)+"-"+l(this.getUTCDate())+"T"+l(this.getUTCHours())+":"+l(this.getUTCMinutes())+":"+l(this.getUTCSeconds())+"Z"};var p=/["\\\x00-\x1f\x7f-\x9f]/g,h,o,q={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;return{stringify:function(c,e,b){var d;o=h="";if(b)if(typeof b==="number")for(d=0;d<b;d+=1)o+=" ";else if(typeof b===
"string")o=b;if(e)if(typeof e==="function"||typeof e==="object"&&typeof e.length==="number")k=e;else throw Error("JSON.stringify");else k=function(g,j){if(Object.hasOwnProperty.call(this,g))return j};return n("",{"":c})},parse:function(c,e){function b(g,j){var i,f,a=g[j];if(a&&typeof a==="object")for(i in a)if(Object.hasOwnProperty.call(a,i)){f=b(a,i);if(f!==undefined)a[i]=f;else delete a[i]}return e.call(g,j,a)}var d;if(/^[\],:{}\s]*$/.test(c.replace(/\\["\\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){d=eval("("+c+")");return typeof e==="function"?b({"":d},""):d}throw new SyntaxError("JSON.parse");},quote:m}}());

