var noteID="",submitFormOkay=!1,OriginalLength=0; function CookieHandler(){this.setCookie=function(a,c,b){var d="";"undefined"!=typeof b&&(d=new Date,d.setTime(d.getTime()+1E3*b),d="; expires="+d.toGMTString());document.cookie=a+"="+c+d+"; path=/"};this.getCookie=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0;b<c.length;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0===d.indexOf(a))return d.substring(a.length,d.length)}return null};this.deleteCookie=function(a){this.setCookie(a,"",-1)}} var Cookies=new CookieHandler,unTouched=!0,curkey="",notetext="";function switchFont(){NewFont="courier";font_cookie="monospace";OldFont=document.getElementById("textbox").style.fontFamily;"courier"==OldFont&&(NewFont="arial, helvetica, sans-serif",font_cookie="proportional");document.getElementById("textbox").style.fontFamily=NewFont;Cookies.setCookie("font",font_cookie,31536E3)}function AreYouSure(a){if(!unTouched&&!submitFormOkay)a.returnValue="There are unsaved changes in this note."} function advance(a){"no"==a?(document.getElementById("adv_top").style.display="none",document.getElementById("adv_bot").style.display="none",document.getElementById("simple").innerHTML='<input type="button" tabindex="4" value="more options" onclick="advance(\'yes\');">',Cookies.setCookie("advanced","no",31536E3)):(document.getElementById("adv_top").style.display="inline",document.getElementById("adv_bot").style.display="inline",document.getElementById("simple").innerHTML='<input type="button" tabindex="4" value="less options" onclick="advance(\'no\');">', Cookies.setCookie("advanced","yes",31536E3))} function enterKey(a){if(0===curkey.length&&(a=prompt("Enter a password to unlock this note (it will automatically be used to lock the text when saving)",a))&&0<a.length){curkey=a;document.getElementById("set").innerHTML=' (notes will be locked) <input type="button" value="unlock" onclick="clearKey();">';document.getElementsByTagName("body")[0].style.backgroundColor="#fae5c3";try{document.getElementsByName("intro")[0].style.backgroundColor="#fcf7e5"}catch(c){}document.getElementById("encryption").innerHTML=""; document.getElementById("decryption").innerHTML=""}document.note.text.focus()}function unlock(){enterKey("");4E3<document.note.text.value.length&&alert("Unlocking will take a while. Click OK to do it!");Decrypt_text();document.note.text.focus()} function NotesToHTML(a){for(var a=a.split("\n"),c=0,b="",d="",e="",f=0,g=!1;f<a.length;){d=a[f].replace(/</g,"&lt;").replace(/>/g,"&gt;");if(0===d.length)!0===g?(e+="</ul>",g=!1):e+="<p></p>";else{c=d.search(/\*/);0===c?(d=d.substr(1,d.length-1),d="<li>"+d+" </li>",!1===g&&(d="<ul>"+d),g=!0):!0===g&&(d="</ul>"+d,g=!1);for(e+="<p>\n";0<d.length;)if(c=d.search(/https*:\/\//),-1!=c){0!==c&&(e+=d.substring(0,c),d=d.substring(c,d.length));c=d.search(/\s/);if(-1==c)c=d.length;for(;-1!=d.substring(c-1,c).search(/\W/);)c-= 1;b=d.substring(0,c);e=e+'<a href="'+b+'">'+b+"</a>";d=d.substring(c,d.length);if(1>d.length){e+="</p>\n";break}}else{e=e+d+"</p>\n";break}}f++}return e} function showLinks(){notetext=document.note.text.value;document.note.style.display="none";document.getElementById("content").innerHTML="<p>shrib.com - <b>"+noteID+'</b> (<a href="javascript:hideLinks()">continue editing</a>)</p><div style="border:1px solid #000000; color:#000000; background-color:#ffffff; padding:4px; margin:0px;">'+NotesToHTML(notetext)+"</div>";document.note.text.focus()} function hideLinks(){document.note.style.display="inline";notetext=document.getElementById("content").innerHTML="";document.note.text.focus()} function nowLoaded(a,c,b,d){noteID=a;ce();mouseMotionEntropy(60);document.getElementById("encryption").innerHTML='<input type="button" value="lock these notes" onclick="enterKey(Generate_key());">';document.getElementById("decryption").innerHTML=' notes garbled? <input type="button" value="unlock" onclick="unlock();">';unTouched?document.getElementById("submitter").innerHTML='<input type="button" value="save notes" disabled="disabled">':document.getElementById("submitter").innerHTML='<input type="button" tabindex="3" value="save notes" onclick="submitter();">'; document.getElementById("showLinks").innerHTML=' <input title="printer-friendly view with clickable links" alt="printer-friendly view with clickable links" type="button" value="nice view" onclick="showLinks();">';"monospace"==b&&switchFont();advance(d);document.note.text.focus();c&&unlock();-1!=window.location.search.search(/niceview/)&&showLinks();OriginalLength=document.note.text.value.length} function clearKey(){curkey="";document.getElementsByTagName("body")[0].style.backgroundColor="#c3e5fa";try{document.getElementsByName("intro")[0].style.backgroundColor="#e8f6ff"}catch(a){}document.getElementById("set").innerHTML="";document.getElementById("encryption").innerHTML='<input type="button" value="lock these notes" onclick="enterKey(Generate_key());">';document.note.text.focus();document.note.locked.value="no"} function submitter(){submitFormOkay=!0;document.getElementById("submitter").innerHTML='saving notes: <a href="http://shrib.com/'+noteID+'">cancel</a>';if(0<curkey.length){document.getElementById("submitter").innerHTML='locking and saving notes: <a href="http://shrib.com/'+noteID+'">cancel</a>';if(4E3<document.note.text.value.length&&(Check=confirm("Locking your note will take a while. Is it OK to proceed?"),!1===Check)){alert("Notes not saved!");unTouched?document.getElementById("submitter").innerHTML= "":document.getElementById("submitter").innerHTML='<input type="button" tabindex="3" value="save notes" onclick="submitter();">';document.getElementById("submitter").innerHTML='<input type="button" tabindex="3" value="save notes" onclick="submitter();">';return}Encrypt_text();clearKey();document.note.locked.value="yes"}0<notetext.length&&hideLinks();document.note.submit()} function hideLinks(){document.note.style.display="inline";notetext=document.getElementById("content").innerHTML="";document.note.text.focus()}function isTouched(){if(unTouched&&OriginalLength!=document.note.text.value.length)unTouched=!1,document.getElementById("submitter").innerHTML='<input type="button" tabindex="3" value="save notes" onclick="submitter();">';ce()}var loadTime=(new Date).getTime(),key,prng; function setKey(){var a=encode_utf8(curkey),c,b;1==a.length&&(a+=a);md5_init();for(c=0;c<a.length;c+=2)md5_update(a.charCodeAt(c));md5_finish();b=byteArrayToHex(digestBits);md5_init();for(c=1;c<a.length;c+=2)md5_update(a.charCodeAt(c));md5_finish();a=byteArrayToHex(digestBits);key=hexToByteArray(b+a);byteArrayToHex(key)} function Generate_key(){var a,c,b="";addEntropyTime();a=keyFromEntropy();var d=new AESprng(a);for(a=0;12>a;a++){0<a&&(b+="-");for(c=0;5>c;c++)b+=String.fromCharCode(65+d.nextInt(25))}delete d;return b} function Encrypt_text(){var a;if(0===curkey.length)alert("There is no password. Please try again.");else if(0===document.note.text.value.length)alert("There is no text to decrypt");else{setKey();addEntropyTime();prng=new AESprng(keyFromEntropy());var c=encode_utf8(document.note.text.value);md5_init();for(a=0;a<c.length;a++)md5_update(c.charCodeAt(a));md5_finish();var b="";for(a=0;a<digestBits.length;a++)b+=String.fromCharCode(digestBits[a]);a=c.length;b+=String.fromCharCode(a>>>24);b+=String.fromCharCode(a>>> 16);b+=String.fromCharCode(a>>>8);b+=String.fromCharCode(a&255);a=rijndaelEncrypt(b+c,key,"CBC");a=armour_base64(a);document.note.text.value=a;delete prng}}function determineArmourType(a){var c,b,d;c=a.indexOf(codegroupSentinel);b=a.indexOf(hexSentinel);d=a.indexOf(base64sent);if(-1==c)c=a.length;if(-1==b)b=a.length;if(-1==d)d=a.length;d=Math.min(c,Math.min(b,d));return d<a.length?d==c?0:d==b?1:2:2} function Decrypt_text(){if(0===curkey.length)alert("There is no password. Please try again.");else if(0===document.note.text.value.length)alert("There is no text to decrypt");else{setKey();var a=[],a=disarm_base64(document.note.text.value),a=rijndaelDecrypt(a,key,"CBC"),c=a.slice(0,20),a=a.slice(20),b=c[16]<<24|c[17]<<16|c[18]<<8|c[19];if(0>b||b>a.length)b=a.length;var d,e="";md5_init();for(d=0;d<b;d++)e+=String.fromCharCode(a[d]),md5_update(a[d]);md5_finish();for(d=0;d<digestBits.length;d++)if(digestBits[d]!= c[d]){alert("Wrong password. Please try again.");e="";document.getElementById("decryption").innerHTML='| notes garbled? <input type="button" value="unlock" onclick="unlock();">';clearKey();break}if(0<e.length)document.note.text.value=decode_utf8(e)}} function unicode_to_utf8(a){for(var c="",b=0;b<a.length;b++){var d=a.charCodeAt(b);127>=d?c+=String.fromCharCode(d):(128<=d&&2047>=d?c+=String.fromCharCode(d>>6|192):(c+=String.fromCharCode(d>>12|224),c+=String.fromCharCode(d>>6&63|128)),c+=String.fromCharCode(d&63|128))}return c} function utf8_to_unicode(a){for(var c="",b=0,d,e;b<a.length;)d=a.charCodeAt(b),128>d?(c+=String.fromCharCode(d),b++):192<=d&&224>d?(e=a.charCodeAt(b+1),c+=String.fromCharCode((d&31)<<6|e&63),b+=2):(e=a.charCodeAt(b+1),b3=a.charCodeAt(b+2),c+=String.fromCharCode((d&15)<<12|(e&63)<<6|b3&63),b+=3);return c}function encode_utf8(a){var c,b=!1;for(c=0;c<a.length;c++)if(157===a.charCodeAt(c)||255<a.charCodeAt(c)){b=!0;break}return!b?a:String.fromCharCode(157)+unicode_to_utf8(a)} function decode_utf8(a){return 0<a.length&&157===a.charCodeAt(0)?utf8_to_unicode(a.substring(1)):a}function array(a){for(i=0;i<a;i++)this[i]=0;this.length=a}function integer(a){return a%4294967296}function shr(a,c){a=integer(a);c=integer(c);return a=0<=a-2147483648?(a%2147483648>>c)+(1073741824>>c-1):a>>c}function shl1(a){a%=2147483648;return a=a&1?2*(a-1073741824)+2147483648:2*a}function shl(a,c){for(var a=integer(a),c=integer(c),b=0;b<c;b++)a=shl1(a);return a} function and(a,c){var a=integer(a),c=integer(c),b=a-2147483648,d=c-2147483648;return 0<=b?0<=d?(b&d)+2147483648:b&c:0<=d?a&d:a&c}function or(a,c){var a=integer(a),c=integer(c),b=a-2147483648,d=c-2147483648;return 0<=b?0<=d?(b|d)+2147483648:(b|c)+2147483648:0<=d?(a|d)+2147483648:a|c}function xor(a,c){var a=integer(a),c=integer(c),b=a-2147483648,d=c-2147483648;return 0<=b?0<=d?b^d:(b^c)+2147483648:0<=d?(a^d)+2147483648:a^c}function not(a){a=integer(a);return 4294967295-a} var state=new array(4),count=new array(2);count[0]=0;count[1]=0;var buffer=new array(64),transformBuffer=new array(16),digestBits=new array(16),S11=7,S12=12,S13=17,S14=22,S21=5,S22=9,S23=14,S24=20,S31=4,S32=11,S33=16,S34=23,S41=6,S42=10,S43=15,S44=21;function F(a,c,b){return or(and(a,c),and(not(a),b))}function G(a,c,b){return or(and(a,b),and(c,not(b)))}function H(a,c,b){return xor(xor(a,c),b)}function I(a,c,b){return xor(c,or(a,not(b)))}function rotateLeft(a,c){return or(shl(a,c),shr(a,32-c))} function FF(a,c,b,d,e,f,g){a=a+F(c,b,d)+e+g;a=rotateLeft(a,f);return a+c}function GG(a,c,b,d,e,f,g){a=a+G(c,b,d)+e+g;a=rotateLeft(a,f);return a+c}function HH(a,c,b,d,e,f,g){a=a+H(c,b,d)+e+g;a=rotateLeft(a,f);return a+c}function II(a,c,b,d,e,f,g){a=a+I(c,b,d)+e+g;a=rotateLeft(a,f);return a+c} function transform(a,c){var b=0,d=0,e=0,f=0,g=transformBuffer,b=state[0],d=state[1],e=state[2],f=state[3];for(i=0;16>i;i++){g[i]=and(a[4*i+c],255);for(j=1;4>j;j++)g[i]+=shl(and(a[4*i+j+c],255),8*j)}b=FF(b,d,e,f,g[0],S11,3614090360);f=FF(f,b,d,e,g[1],S12,3905402710);e=FF(e,f,b,d,g[2],S13,606105819);d=FF(d,e,f,b,g[3],S14,3250441966);b=FF(b,d,e,f,g[4],S11,4118548399);f=FF(f,b,d,e,g[5],S12,1200080426);e=FF(e,f,b,d,g[6],S13,2821735955);d=FF(d,e,f,b,g[7],S14,4249261313);b=FF(b,d,e,f,g[8],S11,1770035416); f=FF(f,b,d,e,g[9],S12,2336552879);e=FF(e,f,b,d,g[10],S13,4294925233);d=FF(d,e,f,b,g[11],S14,2304563134);b=FF(b,d,e,f,g[12],S11,1804603682);f=FF(f,b,d,e,g[13],S12,4254626195);e=FF(e,f,b,d,g[14],S13,2792965006);d=FF(d,e,f,b,g[15],S14,1236535329);b=GG(b,d,e,f,g[1],S21,4129170786);f=GG(f,b,d,e,g[6],S22,3225465664);e=GG(e,f,b,d,g[11],S23,643717713);d=GG(d,e,f,b,g[0],S24,3921069994);b=GG(b,d,e,f,g[5],S21,3593408605);f=GG(f,b,d,e,g[10],S22,38016083);e=GG(e,f,b,d,g[15],S23,3634488961);d=GG(d,e,f,b,g[4],S24, 3889429448);b=GG(b,d,e,f,g[9],S21,568446438);f=GG(f,b,d,e,g[14],S22,3275163606);e=GG(e,f,b,d,g[3],S23,4107603335);d=GG(d,e,f,b,g[8],S24,1163531501);b=GG(b,d,e,f,g[13],S21,2850285829);f=GG(f,b,d,e,g[2],S22,4243563512);e=GG(e,f,b,d,g[7],S23,1735328473);d=GG(d,e,f,b,g[12],S24,2368359562);b=HH(b,d,e,f,g[5],S31,4294588738);f=HH(f,b,d,e,g[8],S32,2272392833);e=HH(e,f,b,d,g[11],S33,1839030562);d=HH(d,e,f,b,g[14],S34,4259657740);b=HH(b,d,e,f,g[1],S31,2763975236);f=HH(f,b,d,e,g[4],S32,1272893353);e=HH(e,f, b,d,g[7],S33,4139469664);d=HH(d,e,f,b,g[10],S34,3200236656);b=HH(b,d,e,f,g[13],S31,681279174);f=HH(f,b,d,e,g[0],S32,3936430074);e=HH(e,f,b,d,g[3],S33,3572445317);d=HH(d,e,f,b,g[6],S34,76029189);b=HH(b,d,e,f,g[9],S31,3654602809);f=HH(f,b,d,e,g[12],S32,3873151461);e=HH(e,f,b,d,g[15],S33,530742520);d=HH(d,e,f,b,g[2],S34,3299628645);b=II(b,d,e,f,g[0],S41,4096336452);f=II(f,b,d,e,g[7],S42,1126891415);e=II(e,f,b,d,g[14],S43,2878612391);d=II(d,e,f,b,g[5],S44,4237533241);b=II(b,d,e,f,g[12],S41,1700485571); f=II(f,b,d,e,g[3],S42,2399980690);e=II(e,f,b,d,g[10],S43,4293915773);d=II(d,e,f,b,g[1],S44,2240044497);b=II(b,d,e,f,g[8],S41,1873313359);f=II(f,b,d,e,g[15],S42,4264355552);e=II(e,f,b,d,g[6],S43,2734768916);d=II(d,e,f,b,g[13],S44,1309151649);b=II(b,d,e,f,g[4],S41,4149444226);f=II(f,b,d,e,g[11],S42,3174756917);e=II(e,f,b,d,g[2],S43,718787259);d=II(d,e,f,b,g[9],S44,3951481745);state[0]+=b;state[1]+=d;state[2]+=e;state[3]+=f} function md5_init(){count[0]=count[1]=0;state[0]=1732584193;state[1]=4023233417;state[2]=2562383102;state[3]=271733878;for(i=0;i<digestBits.length;i++)digestBits[i]=0}function md5_update(a){var c;c=and(shr(count[0],3),63);4294967288>count[0]||(count[1]++,count[0]-=4294967296);count[0]+=8;buffer[c]=and(a,255);63<=c&&transform(buffer,0)} function md5_finish(){for(var a=new array(8),c,b=0,d=c=0,b=0;4>b;b++)a[b]=and(shr(count[0],8*b),255);for(b=0;4>b;b++)a[b+4]=and(shr(count[1],8*b),255);c=and(shr(count[0],3),63);d=56>c?56-c:120-c;c=new array(64);c[0]=128;for(b=0;b<d;b++)md5_update(c[b]);for(b=0;8>b;b++)md5_update(a[b]);for(b=0;4>b;b++)for(j=0;4>j;j++)digestBits[4*b+j]=and(shr(state[b],8*j),255)}function uGen(a,c,b,d,e){var f;f=Math.floor(a/b);f=c*(a-f*b)-f*d;return Math.round(0>f?f+e:f)} function LEnext(){var a;this.gen1=uGen(this.gen1,40014,53668,12211,2147483563);this.gen2=uGen(this.gen2,40692,52774,3791,2147483399);a=Math.floor(this.state/67108862);this.state=Math.round((this.shuffle[a]+this.gen2)%2147483563);this.shuffle[a]=this.gen1;return this.state}function LEnint(a){for(var c=1;a>=c;)c<<=1;for(c--;;){var b=this.next()&c;if(b<=a)return b}} function LEcuyer(a){this.shuffle=Array(32);this.gen1=this.gen2=a&2147483647;for(a=0;19>a;a++)this.gen1=uGen(this.gen1,40014,53668,12211,2147483563);for(a=0;32>a;a++)this.gen1=uGen(this.gen1,40014,53668,12211,2147483563),this.shuffle[31-a]=this.gen1;this.state=this.shuffle[0];this.next=LEnext;this.nextInt=LEnint}var entropyData=[],edlen=0;addEntropyTime();ce();function addEntropyByte(a){entropyData[edlen++]=a}function ce(){addEntropyByte(Math.floor(255*(new Date).getMilliseconds()/999))} function addEntropy32(a){var c;for(c=0;4>c;c++)addEntropyByte(a&255),a>>=8}function addEntropyTime(){addEntropy32((new Date).getTime())}var mouseMotionCollect=0,oldMoveHandler; function mouseMotionEntropy(a){if(0>=mouseMotionCollect)mouseMotionCollect=a,document.implementation.hasFeature("Events","2.0")&&document.addEventListener?document.addEventListener("mousemove",mouseMoveEntropy,!1):document.attachEvent?document.attachEvent("onmousemove",mouseMoveEntropy):(oldMoveHandler=document.onmousemove,document.onmousemove=mouseMoveEntropy)}var mouseEntropyTime=0; function mouseMoveEntropy(a){if(!a)a=window.event;if(0<mouseMotionCollect&&(0>=mouseEntropyTime--&&(addEntropyByte(a.screenX&255),addEntropyByte(a.screenY&255),ce(),mouseMotionCollect--,mouseEntropyTime=(entropyData[edlen-3]^entropyData[edlen-2]^entropyData[edlen-1])%19),0>=mouseMotionCollect))document.removeEventListener?document.removeEventListener("mousemove",mouseMoveEntropy,!1):document.detachEvent?document.detachEvent("onmousemove",mouseMoveEntropy):document.onmousemove=oldMoveHandler} function keyFromEntropy(){var a,c=Array(32);0===edlen&&alert("Blooie! Entropy vector void at call to keyFromEntropy.");md5_init();for(a=0;a<edlen;a+=2)md5_update(entropyData[a]);md5_finish();for(a=0;16>a;a++)c[a]=digestBits[a];md5_init();for(a=1;a<edlen;a+=2)md5_update(entropyData[a]);md5_finish();for(a=0;16>a;a++)c[a+16]=digestBits[a];return c}var maxLineLength=64,hexSentinel="?HX?",hexEndSentinel="?H"; function armour_hex(a){for(var a=hexSentinel+byteArrayToHex(a)+hexEndSentinel,c="";a.length>maxLineLength;)c+=a.substring(0,maxLineLength)+"\n",a=a.substring(maxLineLength,a.length);return c+(a+"\n")}function disarm_hex(a){var c="",b;if(0<=(b=a.indexOf(hexSentinel)))a=a.substring(b+hexSentinel.length,a.length);if(0<=(b=a.indexOf(hexEndSentinel)))a=a.substring(0,b);for(b=0;b<a.length;b++){var d=a.charAt(b);0<="0123456789abcdefABCDEF".indexOf(d)&&(c+=d)}return hexToByteArray(c)}var acgcl,acgt,acgg; function armour_cg_outgroup(){acgcl.length>maxLineLength&&(acgt+=acgcl+"\n",acgcl="");0<acgcl.length&&(acgcl+=" ");acgcl+=acgg;acgg=""}function armour_cg_outletter(a){5<=acgg.length&&armour_cg_outgroup();acgg+=a}var codegroupSentinel="ZZZZZ"; function armour_codegroup(a){acgcl=codegroupSentinel;acgg=acgt="";var c=new LEcuyer(195948557);for(i=0;i<a.length;i++){var b=c.nextInt(23);armour_cg_outletter(String.fromCharCode(65+((a[i]>>4&15)+b)%24));b=c.nextInt(23);armour_cg_outletter(String.fromCharCode(65+((a[i]&15)+b)%24))}for(delete c;5>acgg.length;)armour_cg_outletter("Z");armour_cg_outgroup();acgg="YYYYY";armour_cg_outgroup();return acgt+=acgcl+"\n"}var dcgs,dcgi; function disarm_cg_insig(){for(;dcgi<dcgs.length;){var a=dcgs.charAt(dcgi++).toUpperCase();if("A"<=a&&"Z">=a)return a}return""} function disarm_codegroup(a){var c=[],b=0,d,e=0,f;dcgs=a;for(dcgi=0;5>b;)if(f=disarm_cg_insig(),"Z"==f)b++;else if(""==f){b=0;break}else b=0;if(0===b)return alert("No codegroup starting symbol found in message."),"";a=new LEcuyer(195948557);for(b=0;2>b&&!(f=disarm_cg_insig(),"Y"==f||""==f);)if("Z"!=f){var g=a.nextInt(23),h=f.charCodeAt(0)-65,h=(h+(24-g))%24;0===b?(d=h<<4,b++):(d|=h,c[e++]=d,b=0)}delete a;if(0!=b)alert("Codegroup data truncated. Attempting decoding with data received.");else if("Y"== f){for(b=1;5>b;){f=disarm_cg_insig();if("Y"!=f)break;b++}5!=b&&alert("Codegroup end group incomplete. Attempting decoding with data received.")}else alert("Codegroup end group missing. Attempting decoding with data received.");return c}var base64code="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",base64sent="?b64",base64esent="?64b",base64addsent=!1; function armour_base64(a){var c="",b=base64addsent?base64sent:"",d;for(d=0;d<=a.length-3;d+=3)b.length+4>maxLineLength&&(c+=b+"\n",b=""),b+=base64code.charAt(a[d]>>2),b+=base64code.charAt((a[d]&3)<<4|a[d+1]>>4),b+=base64code.charAt((a[d+1]&15)<<2|a[d+2]>>6),b+=base64code.charAt(a[d+2]&63);1==a.length-d?(b+=base64code.charAt(a[d]>>2),b+=base64code.charAt((a[d]&3)<<4),b+="=="):2==a.length-d&&(b+=base64code.charAt(a[d]>>2),b+=base64code.charAt((a[d]&3)<<4|a[d+1]>>4),b+=base64code.charAt((a[d+1]&15)<< 2),b+="=");b.length+4>maxLineLength&&(c+=b+"\n",b="");base64addsent&&(b+=base64esent);return c+(b+"\n")} function disarm_base64(a){var c=[],b=0,d,e,f=0,g=0,h=[];if(0<=(d=a.indexOf(base64sent)))a=a.substring(d+base64sent.length,a.length);if(0<=(d=a.indexOf(base64esent)))a=a.substring(0,d);for(;b<a.length&&!(-1!=base64code.indexOf(a.charAt(b)));)b++;for(;b<a.length;){for(d=0;4>d;){if(b>=a.length){if(0<d)return alert("Base64 cipher text truncated."),c;break}e=base64code.indexOf(a.charAt(b));if(0<=e)h[d++]=e;else if("="==a.charAt(b))h[d++]=0,f++;else if(a.substring(b,b+base64esent.length)==base64esent){b= a.length;continue}b++}4==d&&(c[g++]=(h[0]<<2|h[1]>>4)&255,2>f&&(c[g++]=(h[1]<<4|h[2]>>2)&255,1>f&&(c[g++]=(h[2]<<6|h[3])&255)))}return c} function AESprng(a){this.key=[];this.key=a;this.itext=hexToByteArray("9F489613248148F9C27945C6AE62EECA3E3367BB14064E4E6DC67A9F28AB3BD1");this.nbytes=0;this.next=AESprng_next;this.nextbits=AESprng_nextbits;this.nextInt=AESprng_nextInt;this.round=AESprng_round;bsb=blockSizeInBits;blockSizeInBits=256;for(a=0;3>a;a++)this.key=rijndaelEncrypt(this.itext,this.key,"ECB");for(var c=1+(this.key[3]&2)+(this.key[9]&1),a=0;a<c;a++)this.key=rijndaelEncrypt(this.itext,this.key,"ECB");blockSizeInBits=bsb} function AESprng_round(){bsb=blockSizeInBits;blockSizeInBits=256;this.key=rijndaelEncrypt(this.itext,this.key,"ECB");this.nbytes=32;blockSizeInBits=bsb}function AESprng_next(){0>=this.nbytes&&this.round();return this.key[--this.nbytes]}function AESprng_nextbits(a){var c,b=0,d=Math.floor((a+7)/8);for(c=0;c<d;c++)b=b<<8|this.next();return b&(1<<a)-1}function AESprng_nextInt(a){for(var c=1,b=0;a>=c;)c<<=1,b++;for(c--;;){var d=this.nextbits(b)&c;if(d<=a)return d}} var keySizeInBits=256,blockSizeInBits=128,roundsArray=[,,,,[,,,,10,,12,,14],,[,,,,12,,12,,14],,[,,,,14,,14,,14]],shiftOffsets=[,,,,[,1,2,3],,[,1,2,3],,[,1,3,4]],Rcon=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],SBox=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39, 178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31, 75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],SBoxInverse=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72, 80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239, 160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125];function cyclicShiftLeft(a,c){var b=a.slice(0,c);return a=a.slice(c).concat(b)}var Nk=keySizeInBits/32,Nb=blockSizeInBits/32,Nr=roundsArray[Nk][Nb];function xtime(a){a<<=1;return a&256?a^283:a}function mult_GF256(a,c){var b,d=0;for(b=1;256>b;b*=2,c=xtime(c))a&b&&(d^=c);return d} function byteSub(a,c){var b;b="encrypt"==c?SBox:SBoxInverse;for(var d=0;4>d;d++)for(var e=0;e<Nb;e++)a[d][e]=b[a[d][e]]}function shiftRow(a,c){for(var b=1;4>b;b++)a[b]="encrypt"==c?cyclicShiftLeft(a[b],shiftOffsets[Nb][b]):cyclicShiftLeft(a[b],Nb-shiftOffsets[Nb][b])} function mixColumn(a,c){for(var b=[],d=0;d<Nb;d++){for(var e=0;4>e;e++)b[e]="encrypt"==c?mult_GF256(a[e][d],2)^mult_GF256(a[(e+1)%4][d],3)^a[(e+2)%4][d]^a[(e+3)%4][d]:mult_GF256(a[e][d],14)^mult_GF256(a[(e+1)%4][d],11)^mult_GF256(a[(e+2)%4][d],13)^mult_GF256(a[(e+3)%4][d],9);for(e=0;4>e;e++)a[e][d]=b[e]}}function addRoundKey(a,c){for(var b=0;b<Nb;b++)a[0][b]^=c[b]&255,a[1][b]^=c[b]>>8&255,a[2][b]^=c[b]>>16&255,a[3][b]^=c[b]>>24&255} function keyExpansion(a){var c=[];Nk=keySizeInBits/32;Nb=blockSizeInBits/32;Nr=roundsArray[Nk][Nb];for(var b=0;b<Nk;b++)c[b]=a[4*b]|a[4*b+1]<<8|a[4*b+2]<<16|a[4*b+3]<<24;for(b=Nk;b<Nb*(Nr+1);b++)a=c[b-1],0===b%Nk?a=(SBox[a>>8&255]|SBox[a>>16&255]<<8|SBox[a>>24&255]<<16|SBox[a&255]<<24)^Rcon[Math.floor(b/Nk)-1]:6<Nk&&4==b%Nk&&(a=SBox[a>>24&255]<<24|SBox[a>>16&255]<<16|SBox[a>>8&255]<<8|SBox[a&255]),c[b]=c[b-Nk]^a;return c} function Round(a,c){byteSub(a,"encrypt");shiftRow(a,"encrypt");mixColumn(a,"encrypt");addRoundKey(a,c)}function InverseRound(a,c){addRoundKey(a,c);mixColumn(a,"decrypt");shiftRow(a,"decrypt");byteSub(a,"decrypt")}function FinalRound(a,c){byteSub(a,"encrypt");shiftRow(a,"encrypt");addRoundKey(a,c)}function InverseFinalRound(a,c){addRoundKey(a,c);shiftRow(a,"decrypt");byteSub(a,"decrypt")} function encrypt(a,c){var b;if(a&&8*a.length==blockSizeInBits&&c){a=packBytes(a);addRoundKey(a,c);for(b=1;b<Nr;b++)Round(a,c.slice(Nb*b,Nb*(b+1)));FinalRound(a,c.slice(Nb*Nr));return unpackBytes(a)}}function decrypt(a,c){var b;if(a&&8*a.length==blockSizeInBits&&c){a=packBytes(a);InverseFinalRound(a,c.slice(Nb*Nr));for(b=Nr-1;0<b;b--)InverseRound(a,c.slice(Nb*b,Nb*(b+1)));addRoundKey(a,c);return unpackBytes(a)}} function byteArrayToHex(a){var c="";if(a){for(var b=0;b<a.length;b++)c+=(16>a[b]?"0":"")+a[b].toString(16);return c}}function hexToByteArray(a){var c=[];if(!(a.length%2)){if(0===a.indexOf("0x")||0===a.indexOf("0X"))a=a.substring(2);for(var b=0;b<a.length;b+=2)c[Math.floor(b/2)]=parseInt(a.slice(b,b+2),16);return c}} function packBytes(a){var c=[];if(a&&!(a.length%4)){c[0]=[];c[1]=[];c[2]=[];c[3]=[];for(var b=0;b<a.length;b+=4)c[0][b/4]=a[b],c[1][b/4]=a[b+1],c[2][b/4]=a[b+2],c[3][b/4]=a[b+3];return c}}function unpackBytes(a){for(var c=[],b=0;b<a[0].length;b++)c[c.length]=a[0][b],c[c.length]=a[1][b],c[c.length]=a[2][b],c[c.length]=a[3][b];return c} function formatPlaintext(a){var c=blockSizeInBits/8,b;if(!("object"==typeof a&&"number"==typeof a[0])&&("string"==typeof a||a.indexOf)){a=a.split("");for(b=0;b<a.length;b++)a[b]=a[b].charCodeAt(0)&255}b=a.length%c;0<b&&(a=a.concat(getRandomBytes(c-b)));return a}function getRandomBytes(a){var c,b=[];for(c=0;c<a;c++)b[c]=prng.nextInt(255);return b} function rijndaelEncrypt(a,c,b){var d,e,f=blockSizeInBits/8,g;if(a&&c&&8*c.length==keySizeInBits){"CBC"==b?g=getRandomBytes(f):(b="ECB",g=[]);for(var a=formatPlaintext(a),c=keyExpansion(c),h=0;h<a.length/f;h++){e=a.slice(h*f,(h+1)*f);if("CBC"==b)for(d=0;d<f;d++)e[d]^=g[h*f+d];g=g.concat(encrypt(e,c))}return g}} function rijndaelDecrypt(a,c,b){var d=blockSizeInBits/8,e=[],f,g;if(a&&c&&"string"!=typeof a&&8*c.length==keySizeInBits){b||(b="ECB");c=keyExpansion(c);for(g=a.length/d-1;0<g;g--)if(f=decrypt(a.slice(g*d,(g+1)*d),c),"CBC"==b)for(var h=0;h<d;h++)e[(g-1)*d+h]=f[h]^a[(g-1)*d+h];else e=f.concat(e);"ECB"==b&&(e=decrypt(a.slice(0,d),c).concat(e));return e}};

