//Copyright 2008 wolai.com
//All rights reserved.
function qM(iU){if(iU.match(/^[\x00-\x7f]*$/)!=null){return iU;}var out,i,j,len,c,c2;out = [];len = iU.length;for (i = 0,j = 0; i < len; i++,j++) {c = iU.charCodeAt(i);if (c <= 0x7f) {out[j] = iU.charAt(i);}else if (c <= 0x7ff) {out[j] = String.fromCharCode(0xc0 | (c >>> 6),0x80 | (c & 0x3f));}else if (c < 0xd800 || c > 0xdfff) {out[j] = String.fromCharCode(0xe0 | (c >>> 12),0x80 | ((c >>> 6) & 0x3f),0x80 | (c & 0x3f));}else {if (++i < len) {c2 = iU.charCodeAt(i);if (c <= 0xdbff && 0xdc00 <= c2 && c2 <= 0xdfff) {c = ((c & 0x03ff) << 10 | (c2 & 0x03ff)) + 0x010000;if (0x010000 <= c && c <= 0x10ffff) {out[j] = String.fromCharCode(0xf0 | ((c >>> 18) & 0x3f),0x80 | ((c >>> 12) & 0x3f),0x80 | ((c >>> 6) & 0x3f),0x80 | (c & 0x3f));}else {out[j] = '?';}}else {i--;out[j] = '?';}}else {i--;out[j] = '?';}}}return out.join('');}
function eC(Vc){return Df(zA(qM(Vc),edK));}
function cD(aF){return lK(hK(Ru(aF),edK));}
function lK(vC){if ((vC.match(/^[\x00-\x7f]*$/) != null)||(vC.match(/^[\x00-\xff]*$/) == null)) {return vC;} var out,i,j,len,c,c2,c3,c4,s;out = [];len = vC.length;i = j = 0;while (i < len) {c = vC.charCodeAt(i++);switch (c >> 4) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:out[j++] = vC.charAt(i - 1);break;case 12: case 13:c2 = vC.charCodeAt(i++);out[j++] = String.fromCharCode(((c  & 0x1f) << 6) |(c2 & 0x3f));break;case 14:c2 = vC.charCodeAt(i++);c3 = vC.charCodeAt(i++);out[j++] = String.fromCharCode(((c  & 0x0f) << 12) |((c2 & 0x3f) <<  6) |(c3 & 0x3f));break;case 15:switch (c & 0xf) {case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:c2 = vC.charCodeAt(i++);c3 = vC.charCodeAt(i++);c4 = vC.charCodeAt(i++);s = ((c  & 0x07) << 18) |((c2 & 0x3f) << 12) |((c3 & 0x3f) <<  6) |(c4 & 0x3f) - 0x10000;if (0 <= s && s <= 0xfffff) {out[j] = String.fromCharCode(((s >>> 10) & 0x03ff) | 0xd800,(s & 0x03ff) | 0xdc00);}else {out[j] = '?';}break;case 8: case 9: case 10: case 11:i+=4;out[j] = '?';break;case 12: case 13:i+=5;out[j] = '?';break;}}j++;}return out.join('');} var jG=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);
var Pi="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var edK='' + String.fromCharCode(55) + String.fromCharCode(100) + String.fromCharCode(50) + String.fromCharCode(49) + String.fromCharCode(102) + String.fromCharCode(101) + String.fromCharCode(52) + String.fromCharCode(98) + String.fromCharCode(53) + String.fromCharCode(98) + String.fromCharCode(52) + String.fromCharCode(54) + String.fromCharCode(51) + String.fromCharCode(97) + String.fromCharCode(57) + String.fromCharCode(99);
function Df(Im){var out,i,len;var c1,c2,c3;len = Im.length;i = 0;out = "";while(i < len) {c1 = Im.charCodeAt(i++) & 0xff;if(i == len){out += Pi.charAt(c1 >> 2);out += Pi.charAt((c1 & 0x3) << 4);out += "==";break;}c2 = Im.charCodeAt(i++);if(i == len){out += Pi.charAt(c1 >> 2);out += Pi.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));out += Pi.charAt((c2 & 0xF) << 2);out += "=";break;}c3 = Im.charCodeAt(i++);out += Pi.charAt(c1 >> 2);out += Pi.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));out += Pi.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));out += Pi.charAt(c3 & 0x3F);}return out;}
function Ru(pC){var c1,c2,c3,c4;var i,len,out;len = pC.length;i = 0;out = "";while(i < len) {do {c1 = jG[pC.charCodeAt(i++) & 0xff];} while(i < len && c1 == -1);if(c1 == -1)break;do {c2 = jG[pC.charCodeAt(i++) & 0xff];} while(i < len && c2 == -1);if(c2 == -1)break;out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));do {c3 = pC.charCodeAt(i++) & 0xff;if(c3 == 61)return out;c3 = jG[c3];} while(i < len && c3 == -1);if(c3 == -1)break;out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); do {c4 = pC.charCodeAt(i++) & 0xff;if(c4 == 61)return out;c4 = jG[c4];} while(i < len && c4 == -1);if(c4 == -1)break;out += String.fromCharCode(((c3 & 0x03) << 6) | c4);}return out;}
function sJ(v,w){var vl = v.length;var n = (vl - 1) << 2;if (w) {var m = v[vl - 1];if ((m < n - 3) || (m > n)) return null;n = m;}for (var i = 0; i < vl; i++) {v[i] = String.fromCharCode(v[i] & 0xff,v[i] >>> 8 & 0xff,v[i] >>> 16 & 0xff,v[i] >>> 24 & 0xff);}if (w) {return v.join('').substring(0,n);}else {return v.join('');}}
function nP(s,w){var len = s.length;var v = [];for (var i = 0; i < len; i += 4) {v[i >> 2] = s.charCodeAt(i)| s.charCodeAt(i + 1) << 8| s.charCodeAt(i + 2) << 16| s.charCodeAt(i + 3) << 24;}if (w) {v[v.length] = len;}return v;}
function zA(q,j){if (q == "") {return "";}var v = nP(q,true);var k = nP(j,false);if (k.length < 4) {k.length = 4;}var n = v.length - 1;var z = v[n],y = v[0],delta = 0x9E3779B9;var mx,e,p,q = Math.floor(6 + 52 / (n + 1)),sum = 0;while (0 < q--) {sum = sum + delta & 0xffffffff;e = sum >>> 2 & 3;for (p = 0; p < n; p++) {y = v[p + 1];mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);z = v[p] = v[p] + mx & 0xffffffff;}y = v[0];mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);z = v[n] = v[n] + mx & 0xffffffff;}return sJ(v,false);}
function hK(Oo,fG){if (Oo == "") {return "";}var v = nP(Oo,false);var k = nP(fG,false);if (k.length < 4) {k.length = 4;}var n = v.length - 1;var z = v[n - 1],y = v[0],delta = 0x9E3779B9;var mx,e,p,q = Math.floor(6 + 52 / (n + 1)),sum = q * delta & 0xffffffff;while (sum != 0) {e = sum >>> 2 & 3;for (p = n; p > 0; p--) {z = v[p - 1];mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);y = v[p] = v[p] - mx & 0xffffffff;}z = v[n];mx = (z >>> 5 ^ y << 2) + (y >>> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z);y = v[0] = v[0] - mx & 0xffffffff;sum = sum - delta & 0xffffffff;}return sJ(v,true);}
