MD5=new(function(){var hexcase=0;var b64pad="";this.hex_md5=function(s){return rstr2hex(rstr_md5(str2rstr_utf8(s)));} b64_md5=function(s){return rstr2b64(rstr_md5(str2rstr_utf8(s)));} any_md5=function(s,e){return rstr2any(rstr_md5(str2rstr_utf8(s)),e);} hex_hmac_md5=function(k,d){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)));} b64_hmac_md5=function(k,d){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)));} any_hmac_md5=function(k,d,e){return rstr2any(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)),e);} function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72";} function rstr_md5(s){return binl2rstr(binl_md5(rstr2binl(s),s.length*8));} function rstr_hmac_md5(key,data){var bkey=rstr2binl(key);if(bkey.length>16) bkey=binl_md5(bkey,key.length*8);var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^0x36363636;opad[i]=bkey[i]^0x5C5C5C5C;} var hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128));} function rstr2hex(input){try{hexcase} catch(e){hexcase=0;} var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var output="";var x;for(var i=0;i>>4)&0x0F)+ hex_tab.charAt(x&0x0F);} return output;} function rstr2b64(input){try{b64pad} catch(e){b64pad='';} var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var output="";var len=input.length;for(var i=0;iinput.length*8) output+=b64pad;else output+=tab.charAt((triplet>>>6*(3-j))&0x3F);}} return output;} function rstr2any(input,encoding){var divisor=encoding.length;var i,j,q,x,quotient;var dividend=Array(Math.ceil(input.length/2));for(i=0;i0||q>0) quotient[quotient.length]=q;} remainders[j]=x;dividend=quotient;} var output="";for(i=remainders.length-1;i>=0;i--) output+=encoding.charAt(remainders[i]);return output;} function str2rstr_utf8(input){var output="";var i=-1;var x,y;while(++i>>6)&0x1F),0x80|(x&0x3F));else if(x<=0xFFFF) output+=String.fromCharCode(0xE0|((x>>>12)&0x0F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F));else if(x<=0x1FFFFF) output+=String.fromCharCode(0xF0|((x>>>18)&0x07),0x80|((x>>>12)&0x3F),0x80|((x>>>6)&0x3F),0x80|(x&0x3F));} return output;} function str2rstr_utf16le(input){var output="";for(var i=0;i>>8)&0xFF);return output;} function str2rstr_utf16be(input){var output="";for(var i=0;i>>8)&0xFF,input.charCodeAt(i)&0xFF);return output;} function rstr2binl(input){var output=Array(input.length>>2);for(var i=0;i>5]|=(input.charCodeAt(i/8)&0xFF)<<(i%32);return output;} function binl2rstr(input){var output="";for(var i=0;i>5]>>>(i%32))&0xFF);return output;} function binl_md5(x,len){x[len>>5]|=0x80<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&0xFFFF);} function bit_rol(num,cnt){return(num<>>(32-cnt));}})();