var base64DecodeChars=new Array(64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,62,64,64,64,63,52,53,54,55,56,57,58,59,60,61,64,64,64,64,64,64,64,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,64,64,64,64,64,64,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64);function base64encode(e){var r,a,t,o,c,d;for(t=e.length,a=0,r="";a>2),r+=base64EncodeChars.charAt((3&o)<<4),r+="==";break}if(c=e.charCodeAt(a++),a==t){r+=base64EncodeChars.charAt(o>>2),r+=base64EncodeChars.charAt((3&o)<<4|(240&c)>>4),r+=base64EncodeChars.charAt((15&c)<<2),r+="=";break}d=e.charCodeAt(a++),r+=base64EncodeChars.charAt(o>>2),r+=base64EncodeChars.charAt((3&o)<<4|(240&c)>>4),r+=base64EncodeChars.charAt((15&c)<<2|(192&d)>>6),r+=base64EncodeChars.charAt(63&d)}return r}function base64decode(e){var r,a,t,o,c,d,n;for(d=e.length,c=0,n="";c>4);do{if(61==(t=255&e.charCodeAt(c++)))return n;t=base64DecodeChars[t]}while(c>2);do{if(61==(o=255&e.charCodeAt(c++)))return n;o=base64DecodeChars[o]}while(c>12&15),r+=String.fromCharCode(128|o>>6&63)):r+=String.fromCharCode(192|o>>6&31),r+=String.fromCharCode(128|o>>0&63));return r}function utf8to16(e){var r,a,t,o,c,d;for(r="",t=e.length,a=0;a>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r+=e.charAt(a-1);break;case 12:case 13:c=e.charCodeAt(a++),r+=String.fromCharCode((31&o)<<6|63&c);break;case 14:c=e.charCodeAt(a++),d=e.charCodeAt(a++),r+=String.fromCharCode((15&o)<<12|(63&c)<<6|(63&d)<<0)}return r}function CharToHex(e){var r,a,t,o;for(r="",t=e.length,a=0;a