﻿json_parse=function(){var f,ch,escapee={'"':'"','\\':'\\','/':'/',b:'\b',f:'\f',n:'\n',r:'\r',t:'\t'},text,error=function(m){throw{name:'SyntaxError',message:m,at:f,text:text}},next=function(c){if(c&&c!==ch){error("Expected '"+c+"' instead of '"+ch+"'")}ch=text.charAt(f);f+=1;return ch},number=function(){var a,string='';if(ch==='-'){string='-';next('-')}while(ch>='0'&&ch<='9'){string+=ch;next()}if(ch==='.'){string+='.';while(next()&&ch>='0'&&ch<='9'){string+=ch}}if(ch==='e'||ch==='E'){string+=ch;next();if(ch==='-'||ch==='+'){string+=ch;next()}while(ch>='0'&&ch<='9'){string+=ch;next()}}a=+string;if(isNaN(a)){error("Bad number")}else{return a}},string=function(){var a,i,string='',uffff;if(ch==='"'){while(next()){if(ch==='"'){next();return string}else if(ch==='\\'){next();if(ch==='u'){uffff=0;for(i=0;i<4;i+=1){a=parseInt(next(),16);if(!isFinite(a)){break}uffff=uffff*16+a}string+=String.fromCharCode(uffff)}else if(typeof escapee[ch]==='string'){string+=escapee[ch]}else{break}}else{string+=ch}}}error("Bad string")},white=function(){while(ch&&ch<=' '){next()}},word=function(){switch(ch){case't':next('t');next('r');next('u');next('e');return true;case'f':next('f');next('a');next('l');next('s');next('e');return false;case'n':next('n');next('u');next('l');next('l');return null}error("Unexpected '"+ch+"'")},value,array=function(){var a=[];if(ch==='['){next('[');white();if(ch===']'){next(']');return a}while(ch){a.push(value());white();if(ch===']'){next(']');return a}next(',');white()}}error("Bad array")},object=function(){var a,object={};if(ch==='{'){next('{');white();if(ch==='}'){next('}');return object}while(ch){a=string();white();next(':');if(Object.hasOwnProperty.call(object,a)){error('Duplicate key "'+a+'"')}object[a]=value();white();if(ch==='}'){next('}');return object}next(',');white()}}error("Bad object")};value=function(){white();switch(ch){case'{':return object();case'[':return array();case'"':return string();case'-':return number();default:return ch>='0'&&ch<='9'?number():word()}};return function(c,d){var e;text=c;f=0;ch=' ';e=value();white();if(ch){error("Syntax error")}return typeof d==='function'?function walk(a,b){var k,v,value=a[b];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return d.call(a,b,value)}({'':e},''):e}}();