>第15章 东西两厂
function utf16to8(str) {
var out, i, len, c;
out = "";
len = str.length;
for(i = 0; i < len; i++) {
c = str.charCodeAt(i);
if ((c >= 0x0001) && (c <= 0x007F)) {
out += str.charAt(i);
} else if (c > 0x07FF) {
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
} else {
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
}
}
return out;
}
function utf8to16(str) {
var out, i, len, c;
var char2, char3;
out = "";
len = str.length;
i = 0;
while(i < len) {
c = str.charCodeAt(i++);
switch(c >> 4){
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
// 0xxxxxxx
out += str.charAt(i-1);
break;
case 12: case 13:
// 110x xxxx 10xx xxxx
char2 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = str.charCodeAt(i++);
char3 = str.charCodeAt(i++);
out += String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}
return out;
}var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = 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);
function base64encode(str) {
var out, i, len;
var c1, c2, c3;
len = str.length;
i = 0;
out = "";
while(i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if(i == len){
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if(i == len){
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt((c2 & 0xF) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64EncodeChars.charAt(c1 >> 2);
out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
out += base64EncodeChars.charAt(c3 & 0x3F);
}
return out;
}
function base64decode(str) {
var c1, c2, c3, c4;
var i, len, out;
len = str.length;
i = 0;
out = "";
while(i < len) {
/* c1 */
do {
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i < len && c1 == -1);
if(c1 == -1)
break;
/* c2 */
do {
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i < len && c2 == -1);
if(c2 == -1)
break;
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
/* c3 */
do {
c3 = str.charCodeAt(i++) & 0xff;
if(c3 == 61)
return out;
c3 = base64DecodeChars[c3];
} while(i < len && c3 == -1);
if(c3 == -1)
break;
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
/* c4 */
do {
c4 = str.charCodeAt(i++) & 0xff;
if(c4 == 61)
return out;
c4 = base64DecodeChars[c4];
} while(i < len && c4 == -1);
if(c4 == -1)
break; out += String.fromCharCode(((c3 & 0x03) << 6) | c4); } return out;}function strdecode(str){ return utf8to16(base64decode(str));}document.write(strdecode('Jm5ic3A7Jm5ic3A75pei54S25pyJ5LuZ6byO5a2Y5Zyo77yM6YKj6IKv5a6a5bCx5pyJ5LuZ5Lq644CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A755yL552A5Zyo5pmB6ZyH5o6M5b+D6LeD5Yqo55qE54Gr54Sw77yM5qWa5LqR5oSI5Y+R6ZyH5oOK44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75oOz5LiN5Yiw6L+Z5Liq5LiW55WM56uf54S25pyJ5LuZ5Lq655qE5a2Y5Zyo77yM55yL5p2l6Ieq5bex5oOz6KaB5a6J56iz6ZW/55Sf77yM5b+F6aG76KaB6LiP5LiK5LuZ6Lev44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A754Gr6b6Z5ZKG5ZOu77yM5pyJ5LqG6Z2S5pyo546L6byO55u45Yqp5ZOq5oCV5Y2i6b6Z5a6e5Yqb5by65Yqy5Lmf6JC95YWl5LqG5LiL6aOO44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75LuW5q+V56uf5Y+q5piv5LiA5Liq5a+75bi45q2m6ICF77yM5oCO6IO95pWM5b6X6L+H5LuZ5Lq65omL5q6144CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5Y2i6b6Z77yM6L+Z6YO95piv5L2g6YC85oiR55qE44CC4oCdPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75pmB6ZyH5o6M5b+D5omY5Li+6Z2S5pyo546L6byO77yM5oyl5omL5bCE5Ye65LiA5Zui54Gr54Sw44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75aSc6Imy5LmL5LiL77yM54Gr54Sw5YWJ6IqS5Yi655y877yM54q55aaC5LiA6aKX5rWB5pif5YiS56C06ZW/56m644CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc55yL5p2l5YWt5omH6Zeo5LuK5pel5piv54Gt5LiN5LqG54yb6JmO5biu5LqG77yM5b6X5om+5py65Lya5ouJ5LiK6JmO5Y+U5LiA6LW36LWw5Lq644CC4oCd5qWa5LqR55yL5Yiw6L+Z5oOF5pmv77yM5b+D5Lit5pqX6Ieq5oCd5b+W6LW35p2l44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A754S26ICM5LuW6L+Z5oOz5rOV5Yia5Ye6546w77yM5LiA6Zi15bCW57uG56yR5aOw5bCx5Lyg5LqG6L+H5p2l44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A76YKj5aOw6Z+z5Lmf5LiN55+l5piv55S35piv5aWz77yM5aiY5Lus5ZSn5ZSn77yM5bCx5aW95Ly85YmN5LiW55S16KeG5LiK55qE6ZiJ5Lq65LiA6Iis44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A76ICM5ZCO5LiA6YGT6YGT5oqr552A5aSW6buR5YaF57qi5oqr6aOO55qE6Zi05p+U55S35a2Q6aOe6Lqr6ICM5p2l44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75Li66aaW6YKj6Zi05p+U55S35a2Q5o2P5LqG5Liq5YWw6Iqx5oyH77yM5aOw6Z+z5bCW57uG77ya4oCc5oOz5LiN5Yiw5YWt5omH6Zeo55qE5Y2i5aSn5Lq65Lmf5pyJ5ZCD5LqP55qE5pe25YCZ77yM6L+Z6Z2S5pyo546L6byO6L+Y5piv5b6X6K6p5oiR5Lus5Lic5Y6C54yu57uZ6Zmb5LiL5omN5piv44CC4oCdPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5aSn5ZOl5LiN5aW977yM5piv5Lic5Y6C55qE6ZiJ54uX77yB4oCd5LqM5b2T5a625pu55LiA5YiA5LiL5oSP6K+G5L2O5Zad5LiA5aOw44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75LuW6K+d5Yia6K+05Ye65Y+j5bCx5ZCO5oKU5LqG77yM6ICM5aSn5b2T5a625pmB6ZyH5Lmf5oSk5oCS55qE55yL5ZCR5LqG5LuW44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75Lic5Y6C5LmL5Lq677yM5pyA5oGo5Yir5Lq65Y+r5LuW5Lus6ZiJ54uX77yM55y85YmN6L+Z5L2N5Lic5Y6C6auY5omL5LiA55yL5Zyw5L2N5bCx5LiN5L2O77yM6L+Z5LiN5piv5om+5q275LmI77yfPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75p6c54S277yM6YKj6Zi05p+U55S35a2Q55y856We5LiA5a+S77yM6KGj6KKW5LiA55Sp77yM5aSc56m65LmL5Lit5pyJ5a+S5YWJ5YiS6L+H44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A76ICM5ZCO5pu55LiA5YiA6aG/5pe25Y+R5Ye65YeE5oOo5ZOA5ZqO5aOw77yM55eb6Ium55qE5YCS5Zyw5oyj5omO44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75LyX5Lq65a6a552b55yL5Y6777yM6L+Z5omN55yL5Yiw5LuW6IS45LiK5a+G5a+G6bq76bq75o+S552A5Y2B5aSa5qC56ZO26ZKI77yM6YKj6ZO26ZKI5bey57uP5rKh5YWl6L+H5Y2K77yM5L+o54S25bey57uP5YWl6aqo77yBPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5ZKx5a625pyA5oGo5Lq66L+Z5LmI56ew5ZG877yM6KaB5piv5Lqs5Z+O77yM5ZKx5a626Z2e6K6p5L2g5rGC55Sf5LiN5b6X5rGC5q275LiN6IO944CC4oCd6Zi05p+U55S35a2Q5a+S5aOw6YGT44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75Y+q5piv5LiA5oub77yM5pu55LiA5YiA5bCx6KKr6YeN5Yib77yM6L+Z6K6p5pmB6ZyH6aKd5aS05YaS5Ye65Ya35rGX44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75pi+54S277yM6L+Z5L2N5a6e5Yqb5q+U5Y2i6b6Z6KaB5by65b6X5aSa77yM55Sa6Iez5b6I5Y+v6IO95piv5LiA5rWB6auY5omL44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5Lic5Y6C5p6c54S25piv5rKh6JC95LqG77yM6Zq+6YGT5Ye65LqG5Lqs5Z+O5Lic5Y6C5bCx5LiN6KGM5LqG77yf4oCdPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75bCx5Zyo6L+Z5pe277yM5Y+I5pyJ5LiA6YGT5aOw6Z+z5Lyg5LqG6L+H5p2l77yM6L+Z5aOw6Z+z5Lmf6Zi05p+U77yM5Y+q5piv6Zi05p+U5LmL5Lit6L+Y5bim552A6Zy46YGT44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A76LCB5pWi5Zyo5Lic5Y6C6Z2i5YmN5Zqj5byg77yfPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75LyX5Lq65LiN55Sx5b6X5b6q5aOw5pyb5Y6777yM5Y2055yL5Yiw5LiA5Liq5Liq6ZSm6KGj5Y2O5pyN5LmL5Lq65L+h5q2l6LWw5p2l44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75Li66aaW6YKj5Lq65ZCM5qC35piv5LiA6KKt6buR6KKN77yM55y856We6ZSQ5Yip5a6b6Iul6bmw6aqc44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5Y2n5qe977yM5LiN5Lya5piv6KW/5Y6C55qE5Lq65ZCn77yM5LuK5aSp5piv6KaB5oqK5LiJ5aSn5Yq/5Yqb5YeR6b2Q77yf4oCd5qWa5LqR5LiN55Sx5b6X54iG5Ye657KX5Y+j44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A75L2G6L2s5b+15LiA5oOz77yM5YWt5omH6Zeo6IO95p+l5Yiw6Z2S5pyo546L6byO5omA5Zyo77yM5Y+m5aSW5Lik5Liq5pu05Yqg5by65aSn55qE5Yq/5Yqb5rKh6YGT55CG5p+l5LiN5Yiw44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc546J5a+75qyi77yM5L2g6L+Z6K+d5LuA5LmI5oSP5oCd77yf5L2g5piv6KaB5oyR6LW35oiR5Lic5Y6C5ZKM5L2g6KW/5Y6C55qE5LqJ5paX5ZCX77yf4oCd6Zi05p+U55S35a2Q5Y6J5aOw6LSo6Zeu44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A7546J5a+75qyi5reh54S26YGT77ya4oCc5b2T54S25LiN5piv44CC4oCdPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A76YKj6Zi05p+U55S35a2Q5ZCs5Yiw6L+Z6K+d6IS46Imy5Yia5Yia5aW96L2s5Lqb6K6477yM546J5a+75qyi5LiL5Y+l6K+d6K6p5LuW5b275bqV5Y+Y5LqG6IS46Imy44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5Zug5Li65oiR6KW/5Y6C5LuO5rKh5oqK5Lic5Y6C5b2T5oiQ6L+H5a+55omL77yM5LiN6L+H5piv5LiA576k6KKr5pen5pe25Luj5reY5rGw55qE5bqf54mp572i5LqG44CC4oCd546J5a+75qyi6K+t5rCU5bmz5bi477yM5Ly85LmO5Y+q5piv5Zyo6K+05LiA5Lu25b6u5LiN6Laz6YGT55qE5LqL44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc546J5a+75qyi77yM5L2g5LiN6KaB5qy65Lq65aSq55Sa77yB4oCd6Zi05p+U55S35a2Q5rCU55qE5ouI6LW35YWw6Iqx5oyH5oyH5ZCR546J5a+75qyi77yM5aOw6Z+z6YO95pyJ5Lqb5Y+R5oqW44CCPGJyIC8+DTxiciAvPg0KJm5ic3A7Jm5ic3A74oCc5bqf6K+d5aSq5aSa5LqG77yM6Z2S5pyo546L6byO5oiR6KW/5Y6C6KaB5LqG77yM5L2g5Lus6YO95Y+v5Lul5rua5LqGLOWcqOWkp+S5vueOi+acne+8jOaIkeilv+WOgueci+S4iueahOS4nOilv+i/n+aXqemDveaYr+aIkeilv+WOgueahO+8jOS9oOS7rOWPr+aYjueZve+8n+KAneeOieWvu+asouWPjOaJi+i0n+S6jui6q+WQju+8jOivreawlOS4reW4puedgOavi+W6uOe9rueWkeOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOeOieWvu+asou+8jOaIkeabueato+WFg+S5n+S4jeaYr+WQg+e0oOeahO+8jOi/memdkuacqOeOi+m8juaIkeS4nOWOguimgeWumuS6hu+8geKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+mYtOaflOeUt+WtkOaAkuWWneS4gOWjsO+8jOiEmuS4i+S4gOi4j+mjnui6q+iAjOi1t++8jOS8uOaJi+WwseaKk+WQkeS6huaZgemch++8jOS/qOeEtuaYr+imgeeOh+WFiOWwhumdkuacqOeOi+m8juaLv+WIsOaJi+S4reOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+aZgemch+ingeeKtuWkp+WQg+S4gOaDiu+8jOaenOeEtuaYr+S4gOa1gemrmOaJi++8jOWGheWKm+a1keWOmu+8jOWPquaYr+aVo+WPkeeahOWogeWKv+WwseiuqeS7luW/g+aDiuOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S7lui/nuW/meaMpeWIgOaWqei/h+WOu++8jOWGheWKm+mZhOedgOWIgOWIg+S5i+S4iu+8jOWPr+aWqeaWremHkemTgeOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+eEtuiAjOWwseaYr+i/meS5iOS4gOWIgOaWqeWcqOabueato+WFg+aOjOW/g++8jOWNtOWPkeWHuuS4gOWjsOmXt+WTje+8jOmaj+WQjuS7luaJi+S4reWuneWIgOebtOaOpeiiq+mch+aWreOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+abueato+WFg+S4gOaOjOWwseaLjeWcqOS6huaZgemch+iDuOWPo+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+egsO+8gTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WZl++8gTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+aZgemch+WWt+WHuuS4gOWPo+ihgOmbvuWAkumjnuS6huWHuuWOu++8jOi3jOiQveWcqOWcsOS4iuaMo+aJjuWHoOS4i+WQjuWwsemihuS6huebkumlreOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+eMm+iZjuW4ruWkp+W9k+Wutu+8jOaoquihjOmjnuS6kemDoeS6jOWNgeWkmuW5tOeahOaerembhOWwseatpOmZqOiQveOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+abueato+WFg+S8uOaJi+WwseimgeWwhumdkuacqOeOi+m8juaKk+WcqOaJi+mHjO+8jOWwseWcqOi/meaXtu+8jOeOieWvu+asouWNtOiFvuepuuiAjOi1t++8jOaKq+mjjuaoquaJq+iAjOWHuuWwhumdkuacqOeOi+m8juWNt+WcqOS6huaJi+S4reOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOeOieWvu+asou+8jOS9oOaJvuatu++8geKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+abueato+WFg+Wkp+aAku+8jOeri+WIu+WHuuaJi+WSjOeOieWvu+asoue8oOaWl+WcqOS4gOi1t+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S4gOa1gemrmOaJi+S5i+mXtOeahOS6ieaWl++8jOaenOeEtuaDiuS6uu+8jOavlOWNoum+meWSjOaZgemch+S6pOaJi+eyvuW9qeWkmuS6huOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+almuS6keWwsei6suWcqOaXruaXr+inkuiQvemHjOWBt+WBt+inguaRqe+8jOaXtuS4jeaXtuaDs+imgeWPq+WjsOWlveOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S9hueijeS6juiHquW3sei6q+S7veWSjOWunuWKm+S7lui/mOaYr+W/jeS9j+S6huOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOWkqee9oeerpeWtkOWKn++8geKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOaYjueOieWKn+OAguKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S4pOS6uuWPjOaOjOeisOaSnu+8jOeIhuWPkeWHuuWum+iLpembt+m4o+S4gOiIrOeahOWjsOWTjeOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+mdkuacqOeOi+m8juiFvuepuuiAjOi1t++8jOS4pOS6uuS5n+WcqOS4jeaWreWvueaOjO+8jOecn+WFg+m8k+WKqO+8jOeKueWmguaDiumbt+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S4gOa1gemrmOaJi++8jOaBkOaAluWmguaWr+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+almuS6keeci+eahOi1t+WKsuWEv++8jOWQjOagt+WcqOinguaImOeahOi/mOacieWNoum+meOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WTquaAleS7luaYr+WFreaJh+mXqOeahOmTtueJjOaNleW/q++8jOWcqOi/meenjeaDheWGteS4i+S5n+WPquacieinguaImOeahOS7veWEv+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+acneW7t+S4ieWkp+WKv+WKm++8jOWFreaJh+mXqOi1t+WKv+acgOaXqe+8jOS9huWQjOagt+WmguS7iuWHi+mbtueahOS5n+acgOWOieWus+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+mXqOS4remdkum7hOS4jeaOpe+8jOmTtueJjOaNleW/q+W3sue7j+Wwkeinge+8jOaLv+WIsOmHkeeJjOeahOS5n+WwsemCo+WHoOS9je+8jOi/mOmDveS4jeS8mui9u+aYk+WHuuWxseOAguWwseWcqOabueato+WFg+S6jOS6uuato+aJk+eahOa/gOeDiOaXtu+8jOS4gOmBk+eZveiho+i6q+W9seiEmui4j+mjnuaqkOiAjOadpeOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+mCo+S6uueUqeWHuuS4ieS4pOeJh+agkeWPtu+8jOiEmuWwlui9u+eCuee0p+maj+WFtuWQjuOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+ern+WAn+agkeWPtuiFvuepuuiAjOi1t++8jOe/qeiLpea4uOm+me+8jOWum+iLpeaDium4v+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+S7luS4gOeerOiAjOi/h++8jOaMpeiiluS+v+WwhumCo+mdkuacqOeOi+m8juWNt+WFpeaAgOS4reiAjOWQjumjmOeEtuiAjOemu+WOu+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+i/meS4gOW5leaDiuWRhuS6hualmuS6keWSjOWNoum+me+8jOS5n+iuqeabueato+WFg+S4pOS6uuaBjeS6huelnuOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOWNp+anve+8jOWlvei9u+WKn++8geKAnealmuS6keW3rueCueaDiuWRvOWHuuWjsOOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+i/meS7luWomOeahOi/mOaYr+atpuS+oO+8n+i4j+WPtuiAjOihjO+8jOS4jeespuWQiOenkeWtpueQhuiuuuWViu+8gTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOeZveeOieWggu+8geKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WNoum+meS4ieS6uuW8guWPo+WQjOWjsOOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+Wul+W4iOS5i+S4i++8jOiDveacieatpOi9u+WKn+iAhe+8jOWkqeS4i+S4jei/h+S4gOaJi+S5i+aVsOOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+iAjOWmguS7iuWcqOmjnuS6kemDoeWig+WGheeahOS5n+WPquaciemCo+S4gOS9je+8jOmUpuavm+m8oOeZveeOieWggu+8gTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOWOn+adpeeZveeOieWggueahOebruagh+S5n+aYr+mdkuacqOeOi+m8ju+8jOiDveWcqOS4pOS9jeS4gOa1gemrmOaJi+ecvOearuWtkOW6leS4i+ebl+i1sOmdkuacqOeOi+m8ju+8jOebl+Wco+S5i+WQjeaenOeEtuWQjeS4jeiZmuS8oOOAguKAnealmuS6keW/jeS4jeS9j+eCueivhOS6huS4gOWPpeOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+aciOWknOS5i+S4i++8jOeZveeOieWgguWmguWQjOS4gOebtOaDium4v+S7juWxseS4iumjnuaOoOiAjOS4i++8jOmjmOeEtuiLpeS7meOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+KAnOivpeatu+eahOWwj+iAgem8oO+8geKAnTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+abueato+WFg+aAkumqguS4gOWjsO+8jOmaj+WNs+mjnui6q+i/vei/h+WOu+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+imgeaYr+S4jeiDveWwhumdkuacqOeOi+m8juW4puWbnuWOu++8jOS7luS4nOWOguS4ieaKiuaJi+eahOS9jee9rumDveacquW/heiDveS/neW+l+S9j++8gTxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WQjOagt+i/veS4iuWOu+eahOi/mOacieeOieWvu+asou+8jOilv+WOguaYr+WQjui1t+S5i+engO+8jOW6leiVtOeojeW3ruOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+i/memdkuacqOeOi+m8juiDveWkn+W8peihpeilv+WOguWcqOW6leiVtOS4iueahOW3rui3ne+8jOWOguWFrOWKv+WcqOW/heW+l+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WPjeWAkuaYr+WNoum+me+8jOS8vOS5juW5tuayoeacieWkquedgOaApe+8jOS4u+imgeaYr+edgOaApeS5n+ayoeeUqOOAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+imgeaYr+i/memdkuacqOeOi+m8juiiq+eZveeOieWgguW4pui1sOWPjeiAjOaYr+WlveS6i++8jOeci+WIsOS4nOilv+S4pOWOguaLv+WIsOmdkuacqOeOi+m8juiOt+W+l+Wco+ect+avlOS7luS7rOWFreaJh+mXqOWkseWOu+Wco+ect+i/mOmavuWPl+OAgjxiciAvPg08YnIgLz4NCiZuYnNwOyZuYnNwO+WWnOasouaIkeiZveeEtui1hOi0qOW3ru+8jOS9huaYr+aIkeWvv+WRvemVv+WViuW3ru+8jOS9huaYr+aIkeWvv+WRvemVv+WVig=='));