
var FORK=FORK||{};FORK.Json={};(function(){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},s={array:function(x){var a=['['],b,f,i,l=x.length,v;for(i=0;i<l;i+=1){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a[a.length]=v;b=true;}}}
a[a.length]=']';return a.join('');},'boolean':function(x){return String(x);},'null':function(x){return"null";},number:function(x){return isFinite(x)?String(x):'null';},object:function(x){if(x){if(x instanceof Array){return s.array(x);}
if(x instanceof Date){return s.date(x);}
var a=['{'],b,f,i,v;for(i in x){v=x[i];f=s[typeof v];if(f){v=f(v);if(typeof v=='string'){if(b){a[a.length]=',';}
a.push(s.string(i),':',v);b=true;}}}
a[a.length]='}';return a.join('');}
return'null';},date:function(x){function f(n){return n<10?'0'+n:n;}
return'"'+x.getFullYear()+'-'+
f(x.getMonth()+1)+'-'+
f(x.getDate())+'T'+
f(x.getHours())+':'+
f(x.getMinutes())+':'+
f(x.getSeconds())+'.'+
f(x.getMilliseconds())+'"';},string:function(x){if(/["\\\x00-\x1f]/.test(x)){x=x.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;}
c=b.charCodeAt();return'\\u00'+
Math.floor(c/16).toString(16)+
(c%16).toString(16);});}
return'"'+x+'"';}};FORK.Json.dump=function(entity){if(entity instanceof Array){return s.array(entity);}
return s.object(entity);};})();FORK.Json.load=function(str,hook){try{if(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(str)){var j=eval('('+str+')');if(typeof hook==='function'){function walk(k,v){if(v&&typeof v==='object'){for(var i in v){if(v.hasOwnProperty(i)){v[i]=walk(i,v[i]);}}}
return hook(k,v);}
return walk('',j);}
return j;}}catch(e){}
return null;};FORK.Json.isSupported=(function(){var en=false;if(typeof[].push==="function"&&typeof"".replace==="function"&&typeof/a/.test==="function"&&typeof{}.hasOwnProperty==="function"&&/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test('{"a":3}')){en=true;}
return function(){return en;};})();