var hexcase=0;
var b64pad="=";
function hex_sha1(s){return rstr2hex(rstr_sha1(str2rstr_utf8(s)))
}function b64_sha1(s){return rstr2b64(rstr_sha1(str2rstr_utf8(s)))
}function any_sha1(s,e){return rstr2any(rstr_sha1(str2rstr_utf8(s)),e)
}function hex_hmac_sha1(k,d){return rstr2hex(rstr_hmac_sha1(str2rstr_utf8(k),str2rstr_utf8(d)))
}function b64_hmac_sha1(k,d){return rstr2b64(rstr_hmac_sha1(str2rstr_utf8(k),str2rstr_utf8(d)))
}function any_hmac_sha1(k,d,e){return rstr2any(rstr_hmac_sha1(str2rstr_utf8(k),str2rstr_utf8(d)),e)
}function sha1_vm_test(){return hex_sha1("abc")=="a9993e364706816aba3e25717850c26c9cd0d89d"
}function rstr_sha1(s){return binb2rstr(binb_sha1(rstr2binb(s),s.length*8))
}function rstr_hmac_sha1(key,data){var bkey=rstr2binb(key);
if(bkey.length>16){bkey=binb_sha1(bkey,key.length*8)
}var ipad=Array(16),opad=Array(16);
for(var i=0;
i<16;
i++){ipad[i]=bkey[i]^909522486;
opad[i]=bkey[i]^1549556828
}var hash=binb_sha1(ipad.concat(rstr2binb(data)),512+data.length*8);
return binb2rstr(binb_sha1(opad.concat(hash),512+160))
}function rstr2hex(input){var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";
var output="";
var x;
for(var i=0;
i<input.length;
i++){x=input.charCodeAt(i);
output+=hex_tab.charAt((x>>>4)&15)+hex_tab.charAt(x&15)
}return output
}function rstr2b64(input){var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var output="";
var len=input.length;
for(var i=0;
i<len;
i+=3){var triplet=(input.charCodeAt(i)<<16)|(i+1<len?input.charCodeAt(i+1)<<8:0)|(i+2<len?input.charCodeAt(i+2):0);
for(var j=0;
j<4;
j++){if(i*8+j*6>input.length*8){output+=b64pad
}else{output+=tab.charAt((triplet>>>6*(3-j))&63)
}}}return output
}function rstr2any(input,encoding){var divisor=encoding.length;
var remainders=Array();
var i,q,x,quotient;
var dividend=Array(Math.ceil(input.length/2));
for(i=0;
i<dividend.length;
i++){dividend[i]=(input.charCodeAt(i*2)<<8)|input.charCodeAt(i*2+1)
}while(dividend.length>0){quotient=Array();
x=0;
for(i=0;
i<dividend.length;
i++){x=(x<<16)+dividend[i];
q=Math.floor(x/divisor);
x-=q*divisor;
if(quotient.length>0||q>0){quotient[quotient.length]=q
}}remainders[remainders.length]=x;
dividend=quotient
}var output="";
for(i=remainders.length-1;
i>=0;
i--){output+=encoding.charAt(remainders[i])
}var full_length=Math.ceil(input.length*8/(Math.log(encoding.length)/Math.log(2)));
for(i=output.length;
i<full_length;
i++){output=encoding[0]+output
}return output
}function str2rstr_utf8(input){var output="";
var i=-1;
var x,y;
while(++i<input.length){x=input.charCodeAt(i);
y=i+1<input.length?input.charCodeAt(i+1):0;
if(55296<=x&&x<=56319&&56320<=y&&y<=57343){x=65536+((x&1023)<<10)+(y&1023);
i++
}if(x<=127){output+=String.fromCharCode(x)
}else{if(x<=2047){output+=String.fromCharCode(192|((x>>>6)&31),128|(x&63))
}else{if(x<=65535){output+=String.fromCharCode(224|((x>>>12)&15),128|((x>>>6)&63),128|(x&63))
}else{if(x<=2097151){output+=String.fromCharCode(240|((x>>>18)&7),128|((x>>>12)&63),128|((x>>>6)&63),128|(x&63))
}}}}}return output
}function str2rstr_utf16le(input){var output="";
for(var i=0;
i<input.length;
i++){output+=String.fromCharCode(input.charCodeAt(i)&255,(input.charCodeAt(i)>>>8)&255)
}return output
}function str2rstr_utf16be(input){var output="";
for(var i=0;
i<input.length;
i++){output+=String.fromCharCode((input.charCodeAt(i)>>>8)&255,input.charCodeAt(i)&255)
}return output
}function rstr2binb(input){var output=Array(input.length>>2);
for(var i=0;
i<output.length;
i++){output[i]=0
}for(var i=0;
i<input.length*8;
i+=8){output[i>>5]|=(input.charCodeAt(i/8)&255)<<(24-i%32)
}return output
}function binb2rstr(input){var output="";
for(var i=0;
i<input.length*32;
i+=8){output+=String.fromCharCode((input[i>>5]>>>(24-i%32))&255)
}return output
}function binb_sha1(x,len){x[len>>5]|=128<<(24-len%32);
x[((len+64>>9)<<4)+15]=len;
var w=Array(80);
var a=1732584193;
var b=-271733879;
var c=-1732584194;
var d=271733878;
var e=-1009589776;
for(var i=0;
i<x.length;
i+=16){var olda=a;
var oldb=b;
var oldc=c;
var oldd=d;
var olde=e;
for(var j=0;
j<80;
j++){if(j<16){w[j]=x[i+j]
}else{w[j]=bit_rol(w[j-3]^w[j-8]^w[j-14]^w[j-16],1)
}var t=safe_add(safe_add(bit_rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));
e=d;
d=c;
c=bit_rol(b,30);
b=a;
a=t
}a=safe_add(a,olda);
b=safe_add(b,oldb);
c=safe_add(c,oldc);
d=safe_add(d,oldd);
e=safe_add(e,olde)
}return Array(a,b,c,d,e)
}function sha1_ft(t,b,c,d){if(t<20){return(b&c)|((~b)&d)
}if(t<40){return b^c^d
}if(t<60){return(b&c)|(b&d)|(c&d)
}return b^c^d
}function sha1_kt(t){return(t<20)?1518500249:(t<40)?1859775393:(t<60)?-1894007588:-899497514
}function safe_add(x,y){var lsw=(x&65535)+(y&65535);
var msw=(x>>16)+(y>>16)+(lsw>>16);
return(msw<<16)|(lsw&65535)
}function bit_rol(num,cnt){return(num<<cnt)|(num>>>(32-cnt))
};
