function serialize(o){var p=0,sb=[],ht=[],hv=1;function classname(o){if(typeof(o)=="undefined"||typeof(o.constructor)=="undefined")return '';var c=o.constructor.toString();c=utf16to8(c.substr(0,c.indexOf('(')).replace(/(^\s*function\s*)|(\s*$)/ig,''));return((c=='')?'Object':c);} function is_int(n){var s=n.toString(),l=s.length;if(l>11)return false;for(var i=(s.charAt(0)=='-')?1:0;i2147483647);} function in_ht(o){for(k in ht)if(ht[k]===o)return k;return false;} function ser_null(){sb[p++]='N;';} function ser_boolean(b){sb[p++]=(b?'b:1;':'b:0;');} function ser_integer(i){sb[p++]='i:'+i+';';} function ser_double(d){if(d==Number.POSITIVE_INFINITY)d='INF';else if(d==Number.NEGATIVE_INFINITY)d='-INF';sb[p++]='d:'+d+';';} function ser_string(s){var utf8=utf16to8(s);sb[p++]='s:'+utf8.length+':"';sb[p++]=utf8;sb[p++]='";';} function ser_array(a){sb[p++]='a:';var lp=p;sb[p++]=0;sb[p++]=':{';for(var k in a){if(typeof(a[k])!='function'){is_int(k)?ser_integer(k):ser_string(k);__serialize(a[k]);sb[lp]++;}} sb[p++]='}';} function ser_object(o){var cn=classname(o);if(cn=='')ser_null();else if(typeof(o.serialize)!='function'){sb[p++]='O:'+cn.length+':"';sb[p++]=cn;sb[p++]='":';var lp=p;sb[p++]=0;sb[p++]=':{';if(typeof(o.__sleep)=='function'){var a=o.__sleep();for(var kk in a){ser_string(a[kk]);__serialize(o[a[kk]]);sb[lp]++;}} else{for(var k in o){if(typeof(o[k])!='function'){ser_string(k);__serialize(o[k]);sb[lp]++;}}} sb[p++]='}';} else{var cs=o.serialize();sb[p++]='C:'+cn.length+':"';sb[p++]=cn;sb[p++]='":'+cs.length+':{';sb[p++]=cs;sb[p++]="}";}} function ser_pointref(R){sb[p++]="R:"+R+";";} function ser_ref(r){sb[p++]="r:"+r+";";} function __serialize(o){if(o==null||o.constructor==Function){hv++;ser_null();} else switch(o.constructor){case Boolean:{hv++;ser_boolean(o);break;} case Number:{hv++;is_int(o)?ser_integer(o):ser_double(o);break;} case String:{hv++;ser_string(o);break;} case Array:{var r=in_ht(o);if(r){ser_pointref(r);} else{ht[hv++]=o;ser_array(o);} break;} default:{var r=in_ht(o);if(r){hv++;ser_ref(r);} else{ht[hv++]=o;ser_object(o);} break;}}} __serialize(o);return sb.join('');} function unserialize(ss){var p=0,ht=[],hv=1;r=null;function unser_null(){p++;return null;} function unser_boolean(){p++;var b=(ss.charAt(p++)=='1');p++;return b;} function unser_integer(){p++;var i=parseInt(ss.substring(p,p=ss.indexOf(';',p)));p++;return i;} function unser_double(){p++;var d=ss.substring(p,p=ss.indexOf(';',p));switch(d){case 'INF':d=Number.POSITIVE_INFINITY;break;case '-INF':d=Number.NEGATIVE_INFINITY;break;default:d=parseFloat(d);} p++;return d;} function unser_string(){p++;var l=parseInt(ss.substring(p,p=ss.indexOf(':',p)));p+=2;var s=utf8to16(ss.substring(p,p+=l));p+=2;return s;} function unser_array(){p++;var n=parseInt(ss.substring(p,p=ss.indexOf(':',p)));p+=2;var a=[];ht[hv++]=a;for(var i=0;i