if(!dojo._hasResource["dojox.encoding.base64"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dojox.encoding.base64"] = true; dojo.provide("dojox.encoding.base64"); (function(){ var p="="; var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var dxe=dojox.encoding; dxe.base64.encode=function(/* byte[] */ba){ // summary // Encode an array of bytes as a base64-encoded string var s=[], l=ba.length; var rm=l%3; var x=l-rm; for (var i=0; i>>18)&0x3f)); s.push(tab.charAt((t>>>12)&0x3f)); s.push(tab.charAt((t>>>6)&0x3f)); s.push(tab.charAt(t&0x3f)); } // deal with trailers, based on patch from Peter Wood. switch(rm){ case 2:{ var t=ba[i++]<<16|ba[i++]<<8; s.push(tab.charAt((t>>>18)&0x3f)); s.push(tab.charAt((t>>>12)&0x3f)); s.push(tab.charAt((t>>>6)&0x3f)); s.push(p); break; } case 1:{ var t=ba[i++]<<16; s.push(tab.charAt((t>>>18)&0x3f)); s.push(tab.charAt((t>>>12)&0x3f)); s.push(p); s.push(p); break; } } return s.join(""); // string }; dxe.base64.decode=function(/* string */str){ // summary // Convert a base64-encoded string to an array of bytes var s=str.split(""), out=[]; var l=s.length; while(s[--l]==p){ } // strip off trailing padding for (var i=0; i>>16)&0xff); out.push((t>>>8)&0xff); out.push(t&0xff); } // strip off any null bytes while(out[out.length-1]==0){ out.pop(); } return out; // byte[] }; })(); }