	var EE = -1;
var bch = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);
var reversebch = new Array();
for (var i=0; i < bch.length; i++){
    reversebch[bch[i]] = i;
}
var b_Str;
var b_Count;
function setb_Str(str){
    b_Str = str;
    b_Count = 0;
}

function readb_(){    
    if (!b_Str) return EE;
    if (b_Count >= b_Str.length) return EE;
    var c = b_Str.charCodeAt(b_Count) & 0xff;
    b_Count++;
    return c;
}

function encodeb_(str){
    setb_Str(str);
    var r = '';
    var ib = new Array(3);
    var lc = 0;
    var done = false;
    while (!done && (ib[0] = readb_()) != EE){
        ib[1] = readb_();
        ib[2] = readb_();
        r += (bch[ ib[0] >> 2 ]);
        if (ib[1] != EE){
            r += (bch [(( ib[0] << 4 ) & 0x30) | (ib[1] >> 4) ]);
            if (ib[2] != EE){
                r += (bch [((ib[1] << 2) & 0x3c) | (ib[2] >> 6) ]);
                r += (bch [ib[2] & 0x3F]);
            } else {
                r += (bch [((ib[1] << 2) & 0x3c)]);
                r += ('=');
                done = true;
            }
        } else {
            r += (bch [(( ib[0] << 4 ) & 0x30)]);
            r += ('=');
            r += ('=');
            done = true;
        }
        lc += 4;
        if (lc >= 76){
            r += ('\n');
            lc = 0;
        }
    }
    return r;
}
function readReverseb_(){   
    if (!b_Str) return EE;
    while (true){      
        if (b_Count >= b_Str.length) return EE;
        var nextCharacter = b_Str.charAt(b_Count);
        b_Count++;
        if (reversebch[nextCharacter]){
            return reversebch[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    } 
    return null;
}

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}

function decodeb_(str){
    setb_Str(str);
    var r = "";
    var ib = new Array(4);
    var done = false;
    while (!done && (ib[0] = readReverseb_()) != EE
        && (ib[1] = readReverseb_()) != EE){
        ib[2] = readReverseb_();
        ib[3] = readReverseb_();
        r += ntos((((ib[0] << 2) & 0xff)| ib[1] >> 4));
        if (ib[2] != EE){
            r +=  ntos((((ib[1] << 4) & 0xff)| ib[2] >> 2));
            if (ib[3] != EE){
                r +=  ntos((((ib[2] << 6)  & 0xff) | ib[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return r;
}

var da = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
function toHex(n){
    var r = ''
    var start = true;
    for (var i=32; i>0;){
        i-=4;
        var digit = (n>>i) & 0xf;
        if (!start || digit != 0){
            start = false;
            r += da[digit];
        }
    }
    return (r==''?'0':r);
}

function pad(str, len, pad){
    var r = str;
    for (var i=str.length; i<len; i++){
        r = pad + r;
    }
    return r;
}


function d0w__(st, d) {
	document.getElementById('bbgvw').innerHTML=decodeb_(st);
}
function d0w__2(st, d) {
	document.write(decodeb_(st));
}
function d0w_2_(st) {
	//document.write(st);
	document.getElementById('bgw0').innerHTML=st;
	window.onunload=function (){ d0w_2() }
}

function d0w_2(st, d) {
	document.getElementById('bgw0').innerHTML='';
}
function d0w_3(st, d) {
	document.getElementById('bbgw1').innerHTML=st;
}
