diff --git a/sbr/sbr.js b/sbr/sbr.js new file mode 100644 index 0000000..8b1cb1f --- /dev/null +++ b/sbr/sbr.js @@ -0,0 +1,509 @@ +/* +苏泊尔 app +cron 10 7 * * * sbr.js + +7.13 完成 签到, 偷大米, 浏览菜谱 任务 +10.11 更新抽奖 + +------------------------ 青龙--配置文件-贴心复制区域 ---------------------- +# 苏泊尔 +export sbr=" token & cookie @ token & cookie " + +抓 api/login/auto-login 中的参数 token 跟cookie +多账号用 换行 或 @ 分割 + +报错的自己下载 utils.js 放在脚本同级目录下 +报错的自己下载 utils.js 放在脚本同级目录下 +报错的自己下载 utils.js 放在脚本同级目录下 + +tg频道: https://t.me/yml2213_tg + +*/ +const utils = require("./utils"); +const $ = new Env("苏泊尔"); +const alias_name = "sbr"; +// const request = require('request'); +const notify = $.isNode() ? require("./sendNotify") : ""; +const Notify = 1; //0为关闭通知,1为打开通知,默认为1 +//--------------------------------------------------------------------------------------------------------- +let ckStr = process.env[alias_name]; +let msg, ck; +let ck_status = 1; +//--------------------------------------------------------------------------------------------------------- +let VersionCheck = "0.2"; +let Change = "\n报错的自己下载 utils.js 放在脚本同级目录下\n报错的自己下载 utils.js 放在脚本同级目录下\n报错的自己下载 utils.js 放在脚本同级目录下"; +let thank = `\n感谢 心雨大佬脚本\n`; +//--------------------------------------------------------------------------------------------------------- + +async function tips(ckArr) { + // let Version_latest = await Version_Check(alias_name, '1'); + let Version = `\n📌 本地脚本: V ${VersionCheck}`; + DoubleLog(`${Version}\n📌 🆙 更新内容: ${Change}`); + // DoubleLog(`${thank}`); + await utils.yiyan() + DoubleLog(`\n========== 共找到 ${ckArr.length} 个账号 ==========`); +} + +async function start() { + await init("初始化"); + await login("登录刷新"); + await user_info("用户信息"); + if (ck_status) { + await sign_info("签到查询"); + await task_list("任务列表"); + await prize_Info("抽奖信息"); + await get_index_info("获取可收取大米信息") + await rice_num("查询大米数量") + } +} +// 初始化 +async function init(name) { + if (!name) { + name = /function\s*(\w*)/i.exec(arguments.callee.toString())[1]; + } + DoubleLog(`\n开始 ${name}`); + host = "growrice.supor.com"; + hostname = "https://" + host; + + token = ck[0] + Cookie = ck[1] + + sbr_hd = { + "Content-Type": "application/x-www-form-urlencoded", + 'Host': host, + 'Cookie': Cookie, + } +} + +// 登录 post +async function login(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/login/auto-login?token=${token}`, + headers: sbr_hd, + }; + let result = await network_request(name, options); +} + +// 用户信息 httpGet +async function user_info(name) { + + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/users/get-user-info`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + if (result.code == 1) { + DoubleLog(`${name}: ${result.msg} , 欢迎 ${result.data.nickname}`); + await utils.wait(2); + } else if (result.code == 0) { + DoubleLog(`${name}: ${result.msg}`); + ck_status = 0 + } else { + DoubleLog(`${name}: 失败 ❌ 了呢,原因未知!`); + console.log(result); + ck_status = 0 + } +} + +// 签到信息 get +async function sign_info(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/signIn/sign-list`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + if (result.data.is_sign == 'false') { + DoubleLog(`${name}: 未签到 ,去签到喽!`); + await do_sign("签到") + } else if (result.data.is_sign == true) { + DoubleLog(`${name}: 已签到, 明天再来吧!`); + } else { + DoubleLog(`${name}: 失败 ❌ 了呢,原因未知!`); + console.log(result); + } +} + + + +// 签到 post +async function do_sign(name) { + let options = { + method: "post", + url: `${hostname}/rice/backend/public/index.php/api/signIn/sign`, + headers: sbr_hd, + body: `https://growrice.supor.com/rice/backend/public/index.php/api/signIn/sign`, + }; + let result = await network_request(name, options); + + if (result.code == 1) { + DoubleLog(`${name}:${result.msg} ,获得 ${result.data.get_rice_num} 大米`); + await utils.wait(3); + + } else if (result.code == 0) { + DoubleLog(`${name}:${result.msg}`); + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + + +// 任务列表 get +async function task_list(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/task/index`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + + // console.log(result); + if (result.code == 1) { + DoubleLog(`${name}:${result.msg}`); + let tasks = result.data + for (let index = 0; index < tasks.length; index++) { + [_id, name, is_finish] = [tasks[index].id, tasks[index].name, tasks[index].is_finish] + if (_id == 6 && is_finish == false) { + await get_rice("偷大米") + } else if (_id == 6 && is_finish == true) { + DoubleLog(`今天无法偷大米了, 明天再来吧!`) + } + if (_id == 8 && tasks[index].list[0].is_finish == false) { + await browse_recipes("浏览菜谱") + } else if (_id == 8 && tasks[index].list[0].is_finish == true) { + DoubleLog(`今天完成 浏览菜谱 了, 明天再来吧!`) + } + + + } + } else if (result.code == 0) { + DoubleLog(`${name}:${result.msg}`); + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 偷好友大米 +async function get_rice(name) { + await get_id("获取好友大米id") + for (let index = 0; index < _id_list.length; index++) { + let _id = _id_list[index] + let options = { + method: "post", + url: `${hostname}/rice/backend/public/index.php/api/users/get-rice`, + headers: sbr_hd, + body: `&friend_id=${_id}`, + }; + let result = await network_request(name, options); + + if (result.code == 1) { + DoubleLog(`${name}:${result.msg} , 当前已有 ${result.data.sign_rice_num} 大米`); + await utils.wait(5); + } else if (result.code == 0) { + DoubleLog(`${name}:${result.msg}`); + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } + + } + +} + + +// 获取好友大米id +async function get_id(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/users/same-city-list`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + _list = result.data + // console.log(_list); + + let arr1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + let out = []; + for (let i = 0; i < 3; i++) { + var index = parseInt(Math.random() * arr1.length); + out = out.concat(arr1.splice(index, 1)); + } + console.log(out); + _id_list = [] + for (let index = 0; index < out.length; index++) { + let _id = _list[out[index]].id + _id_list.push(_id) + } + console.log(_id_list); + + return _id_list; + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 浏览菜谱 https://growrice.supor.com/rice/backend/public/index.php/api/task/link-task +async function browse_recipes(name) { + let options = { + method: "post", + url: `${hostname}/rice/backend/public/index.php/api/task/link-task`, + headers: sbr_hd, + body: `&id=8&other_id=3`, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + DoubleLog(`${name}:${result.msg}`); + await utils.wait(3) + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 获取可收取大米信息 get +async function get_index_info(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/index/index`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + // console.log(result); + let rice_list = result.data.rice_list + if (result.code == 1 && rice_list.length > 0) { + for (let index = 0; index < rice_list.length; index++) { + [_id, num, collect_name] = [rice_list[index].id, rice_list[index].num, rice_list[index].name] + await collect_rice("收大米", _id, num, collect_name) + } + } else if (result.code == 1 && rice_list.length == 0) { + DoubleLog(`${name}, 没有可以收获的大米`) + + } else if (result.code == 2) { + DoubleLog(`${result['msg']}, 请自己先打开一次小程序,种大米后在执行脚本!`) + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 收大米 +async function collect_rice(name, _id, num, collect_name) { + let options = { + method: "post", + url: `${hostname}/rice/backend/public/index.php/api/index/collect-rice`, + headers: sbr_hd, + body: `&id=${_id}`, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + DoubleLog(`${name}: 收取 ${collect_name} ${num} 大米, ${result.msg}`); + await utils.wait(5) + } else if (result.code == 0) { + DoubleLog(`${name}: ${result.msg}`); + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 抽奖信息 get +async function prize_Info(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/prize/index`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + DoubleLog(`${name}, 抽奖券${result.data.draw_num_1}张, 高级抽奖券${result.data.draw_num_2}张`) + if (result.data.draw_num_1 > 0) { + await prize('普通抽奖', '1') + } + if (result.data.draw_num_2 > 0) { + await prize('高级抽奖', '2') + } + if (result.data.draw_num_1 == 0 && result.data.draw_num_2 == 0) { + DoubleLog(`${name}:暂时无抽奖次数!`) + } + + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + +// 抽奖 https://growrice.supor.com/rice/backend/public/index.php/api/prize/draw +async function prize(name, type) { + let options = { + method: "post", + url: `${hostname}/rice/backend/public/index.php/api/prize/draw`, + headers: sbr_hd, + body: `cate=${type}`, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + let prize_info = result.data.prize_info + DoubleLog(`${name}: 获得 ${prize_info.prize_name} , 奖品id: ${prize_info.prize_id}, 奖品类型: ${prize_info.prize_type}, 奖品数量: ${prize_info.prize_value}`); + await utils.wait(5) + await prize_Info('抽奖信息') + } else if (result.code == 0) { + DoubleLog(`${name}: ${result.msg}`); + await prize_Info('抽奖信息') + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + + +// 查询大米数量 get https://growrice.supor.com/rice/backend/public/index.php/api/index/granary?&page=1&pagesize=10 +async function rice_num(name) { + let options = { + method: "get", + url: `${hostname}/rice/backend/public/index.php/api/index/granary?&page=1&pagesize=10`, + headers: sbr_hd, + }; + let result = await network_request(name, options); + + // console.log(result); + if (result.code == 1) { + DoubleLog(`${name}, 现在有${result.data.rice_num} 大米 , 累计获取 ${result.data.total_num} 大米`) + if (result.data.draw_num_1 > 0) { + await prize('普通抽奖', '1') + } + if (result.data.draw_num_2 > 0) { + await prize('高级抽奖', '2') + } + if (result.data.draw_num_1 == 0 && result.data.draw_num_2 == 0) { + DoubleLog(`${name}:暂时无抽奖次数!`) + } + + } else { + DoubleLog(`${name}: 失败❌了呢`); + console.log(result); + } +} + + + + + + + + + +// #region ******************************************************** 固定代码 ******************************************************** + +/** + * 账号处理 + */ +!(async () => { + let ckArr = await utils.checkEnv(ckStr, alias_name); + await tips(ckArr); + for (let index = 0; index < ckArr.length; index++) { + let num = index + 1; + DoubleLog(`\n-------- 开始【第 ${num} 个账号】--------`); + ck = ckArr[index].split("&"); + await start(); + } + await SendMsg(msg); +})() + .catch((e) => console.log(e)) + .finally(() => $.done()); + +/** + * 发送消息 + */ +async function SendMsg(message) { + if (!message) return; + if (Notify > 0) { + if ($.isNode()) { + var notify = require("./sendNotify"); + await notify.sendNotify($.name, message); + } else { + console.log($.name, "", message); + } + } else { + console.log(message); + } +} + +/** + * 双平台log输出 + */ +function DoubleLog(data) { + console.log(` ${data}`); + msg += `\n ${data}`; +} + +// 网络请求 network_request +async function network_request(name, options) { + if (!name) { + name = /function\s*(\w*)/i.exec(arguments.callee.toString())[1]; + } + DoubleLog(`\n开始 ${name}`); + try { + let result = await utils.httpRequest(name, options); + if (result) { + return result + } { + DoubleLog(`未知错误(1`) + } + } catch (error) { + console.log(error); + } +} + + +// 精简 Env +function Env(name, e) { + class s { + constructor(name) { + this.env = name; + } + } + return new (class { + constructor(name) { + (this.name = name), + (this.logs = []), + (this.startTime = new Date().getTime()), + this.log(`\n🔔${this.name}, 开始!`); + } + isNode() { + return "undefined" != typeof module && !!module.exports; + } + + log(...name) { + name.length > 0 && (this.logs = [...this.logs, ...name]), + console.log(name.join(this.logSeparator)); + } + + done() { + const e = new Date().getTime(), + s = (e - this.startTime) / 1e3; + this.log(`\n🔔${this.name}, 结束! 🕛 ${s} 秒`) + } + })(name, e); +} + +//#endregion diff --git a/utils.js b/utils.js index f80ee17..c5e3823 100644 --- a/utils.js +++ b/utils.js @@ -322,212 +322,4 @@ function local_day_two() { /** * md5 加密 */ -function MD5Encrypt(a) { - function b(a, b) { - return (a << b) | (a >>> (32 - b)); - } - function c(a, b) { - var c, d, e, f, g; - return ( - (e = 2147483648 & a), - (f = 2147483648 & b), - (c = 1073741824 & a), - (d = 1073741824 & b), - (g = (1073741823 & a) + (1073741823 & b)), - c & d - ? 2147483648 ^ g ^ e ^ f - : c | d - ? 1073741824 & g - ? 3221225472 ^ g ^ e ^ f - : 1073741824 ^ g ^ e ^ f - : g ^ e ^ f - ); - } - function d(a, b, c) { - return (a & b) | (~a & c); - } - function e(a, b, c) { - return (a & c) | (b & ~c); - } - function f(a, b, c) { - return a ^ b ^ c; - } - function g(a, b, c) { - return b ^ (a | ~c); - } - function h(a, e, f, g, h, i, j) { - return (a = c(a, c(c(d(e, f, g), h), j))), c(b(a, i), e); - } - function i(a, d, f, g, h, i, j) { - return (a = c(a, c(c(e(d, f, g), h), j))), c(b(a, i), d); - } - function j(a, d, e, g, h, i, j) { - return (a = c(a, c(c(f(d, e, g), h), j))), c(b(a, i), d); - } - function k(a, d, e, f, h, i, j) { - return (a = c(a, c(c(g(d, e, f), h), j))), c(b(a, i), d); - } - function l(a) { - for ( - var b, - c = a.length, - d = c + 8, - e = (d - (d % 64)) / 64, - f = 16 * (e + 1), - g = new Array(f - 1), - h = 0, - i = 0; - c > i; - - ) - (b = (i - (i % 4)) / 4), - (h = (i % 4) * 8), - (g[b] = g[b] | (a.charCodeAt(i) << h)), - i++; - return ( - (b = (i - (i % 4)) / 4), - (h = (i % 4) * 8), - (g[b] = g[b] | (128 << h)), - (g[f - 2] = c << 3), - (g[f - 1] = c >>> 29), - g - ); - } - function m(a) { - var b, - c, - d = "", - e = ""; - for (c = 0; 3 >= c; c++) - (b = (a >>> (8 * c)) & 255), - (e = "0" + b.toString(16)), - (d += e.substr(e.length - 2, 2)); - return d; - } - function n(a) { - a = a.replace(/\r\n/g, "\n"); - for (var b = "", c = 0; c < a.length; c++) { - var d = a.charCodeAt(c); - 128 > d - ? (b += String.fromCharCode(d)) - : d > 127 && 2048 > d - ? ((b += String.fromCharCode((d >> 6) | 192)), - (b += String.fromCharCode((63 & d) | 128))) - : ((b += String.fromCharCode((d >> 12) | 224)), - (b += String.fromCharCode(((d >> 6) & 63) | 128)), - (b += String.fromCharCode((63 & d) | 128))); - } - return b; - } - var o, - p, - q, - r, - s, - t, - u, - v, - w, - x = [], - y = 7, - z = 12, - A = 17, - B = 22, - C = 5, - D = 9, - E = 14, - F = 20, - G = 4, - H = 11, - I = 16, - J = 23, - K = 6, - L = 10, - M = 15, - N = 21; - for ( - a = n(a), - x = l(a), - t = 1732584193, - u = 4023233417, - v = 2562383102, - w = 271733878, - o = 0; - o < x.length; - o += 16 - ) - (p = t), - (q = u), - (r = v), - (s = w), - (t = h(t, u, v, w, x[o + 0], y, 3614090360)), - (w = h(w, t, u, v, x[o + 1], z, 3905402710)), - (v = h(v, w, t, u, x[o + 2], A, 606105819)), - (u = h(u, v, w, t, x[o + 3], B, 3250441966)), - (t = h(t, u, v, w, x[o + 4], y, 4118548399)), - (w = h(w, t, u, v, x[o + 5], z, 1200080426)), - (v = h(v, w, t, u, x[o + 6], A, 2821735955)), - (u = h(u, v, w, t, x[o + 7], B, 4249261313)), - (t = h(t, u, v, w, x[o + 8], y, 1770035416)), - (w = h(w, t, u, v, x[o + 9], z, 2336552879)), - (v = h(v, w, t, u, x[o + 10], A, 4294925233)), - (u = h(u, v, w, t, x[o + 11], B, 2304563134)), - (t = h(t, u, v, w, x[o + 12], y, 1804603682)), - (w = h(w, t, u, v, x[o + 13], z, 4254626195)), - (v = h(v, w, t, u, x[o + 14], A, 2792965006)), - (u = h(u, v, w, t, x[o + 15], B, 1236535329)), - (t = i(t, u, v, w, x[o + 1], C, 4129170786)), - (w = i(w, t, u, v, x[o + 6], D, 3225465664)), - (v = i(v, w, t, u, x[o + 11], E, 643717713)), - (u = i(u, v, w, t, x[o + 0], F, 3921069994)), - (t = i(t, u, v, w, x[o + 5], C, 3593408605)), - (w = i(w, t, u, v, x[o + 10], D, 38016083)), - (v = i(v, w, t, u, x[o + 15], E, 3634488961)), - (u = i(u, v, w, t, x[o + 4], F, 3889429448)), - (t = i(t, u, v, w, x[o + 9], C, 568446438)), - (w = i(w, t, u, v, x[o + 14], D, 3275163606)), - (v = i(v, w, t, u, x[o + 3], E, 4107603335)), - (u = i(u, v, w, t, x[o + 8], F, 1163531501)), - (t = i(t, u, v, w, x[o + 13], C, 2850285829)), - (w = i(w, t, u, v, x[o + 2], D, 4243563512)), - (v = i(v, w, t, u, x[o + 7], E, 1735328473)), - (u = i(u, v, w, t, x[o + 12], F, 2368359562)), - (t = j(t, u, v, w, x[o + 5], G, 4294588738)), - (w = j(w, t, u, v, x[o + 8], H, 2272392833)), - (v = j(v, w, t, u, x[o + 11], I, 1839030562)), - (u = j(u, v, w, t, x[o + 14], J, 4259657740)), - (t = j(t, u, v, w, x[o + 1], G, 2763975236)), - (w = j(w, t, u, v, x[o + 4], H, 1272893353)), - (v = j(v, w, t, u, x[o + 7], I, 4139469664)), - (u = j(u, v, w, t, x[o + 10], J, 3200236656)), - (t = j(t, u, v, w, x[o + 13], G, 681279174)), - (w = j(w, t, u, v, x[o + 0], H, 3936430074)), - (v = j(v, w, t, u, x[o + 3], I, 3572445317)), - (u = j(u, v, w, t, x[o + 6], J, 76029189)), - (t = j(t, u, v, w, x[o + 9], G, 3654602809)), - (w = j(w, t, u, v, x[o + 12], H, 3873151461)), - (v = j(v, w, t, u, x[o + 15], I, 530742520)), - (u = j(u, v, w, t, x[o + 2], J, 3299628645)), - (t = k(t, u, v, w, x[o + 0], K, 4096336452)), - (w = k(w, t, u, v, x[o + 7], L, 1126891415)), - (v = k(v, w, t, u, x[o + 14], M, 2878612391)), - (u = k(u, v, w, t, x[o + 5], N, 4237533241)), - (t = k(t, u, v, w, x[o + 12], K, 1700485571)), - (w = k(w, t, u, v, x[o + 3], L, 2399980690)), - (v = k(v, w, t, u, x[o + 10], M, 4293915773)), - (u = k(u, v, w, t, x[o + 1], N, 2240044497)), - (t = k(t, u, v, w, x[o + 8], K, 1873313359)), - (w = k(w, t, u, v, x[o + 15], L, 4264355552)), - (v = k(v, w, t, u, x[o + 6], M, 2734768916)), - (u = k(u, v, w, t, x[o + 13], N, 1309151649)), - (t = k(t, u, v, w, x[o + 4], K, 4149444226)), - (w = k(w, t, u, v, x[o + 11], L, 3174756917)), - (v = k(v, w, t, u, x[o + 2], M, 718787259)), - (u = k(u, v, w, t, x[o + 9], N, 3951481745)), - (t = c(t, p)), - (u = c(u, q)), - (v = c(v, r)), - (w = c(w, s)); - var O = m(t) + m(u) + m(v) + m(w); - return O.toLowerCase(); -} +function MD5Encrypt(a) { function b(a, b) { return (a << b) | (a >>> (32 - b)); } function c(a, b) { var c, d, e, f, g; return ( (e = 2147483648 & a), (f = 2147483648 & b), (c = 1073741824 & a), (d = 1073741824 & b), (g = (1073741823 & a) + (1073741823 & b)), c & d ? 2147483648 ^ g ^ e ^ f : c | d ? 1073741824 & g ? 3221225472 ^ g ^ e ^ f : 1073741824 ^ g ^ e ^ f : g ^ e ^ f ); } function d(a, b, c) { return (a & b) | (~a & c); } function e(a, b, c) { return (a & c) | (b & ~c); } function f(a, b, c) { return a ^ b ^ c; } function g(a, b, c) { return b ^ (a | ~c); } function h(a, e, f, g, h, i, j) { return (a = c(a, c(c(d(e, f, g), h), j))), c(b(a, i), e); } function i(a, d, f, g, h, i, j) { return (a = c(a, c(c(e(d, f, g), h), j))), c(b(a, i), d); } function j(a, d, e, g, h, i, j) { return (a = c(a, c(c(f(d, e, g), h), j))), c(b(a, i), d); } function k(a, d, e, f, h, i, j) { return (a = c(a, c(c(g(d, e, f), h), j))), c(b(a, i), d); } function l(a) { for ( var b, c = a.length, d = c + 8, e = (d - (d % 64)) / 64, f = 16 * (e + 1), g = new Array(f - 1), h = 0, i = 0; c > i; ) (b = (i - (i % 4)) / 4), (h = (i % 4) * 8), (g[b] = g[b] | (a.charCodeAt(i) << h)), i++; return ( (b = (i - (i % 4)) / 4), (h = (i % 4) * 8), (g[b] = g[b] | (128 << h)), (g[f - 2] = c << 3), (g[f - 1] = c >>> 29), g ); } function m(a) { var b, c, d = "", e = ""; for (c = 0; 3 >= c; c++) (b = (a >>> (8 * c)) & 255), (e = "0" + b.toString(16)), (d += e.substr(e.length - 2, 2)); return d; } function n(a) { a = a.replace(/\r\n/g, "\n"); for (var b = "", c = 0; c < a.length; c++) { var d = a.charCodeAt(c); 128 > d ? (b += String.fromCharCode(d)) : d > 127 && 2048 > d ? ((b += String.fromCharCode((d >> 6) | 192)), (b += String.fromCharCode((63 & d) | 128))) : ((b += String.fromCharCode((d >> 12) | 224)), (b += String.fromCharCode(((d >> 6) & 63) | 128)), (b += String.fromCharCode((63 & d) | 128))); } return b; } var o, p, q, r, s, t, u, v, w, x = [], y = 7, z = 12, A = 17, B = 22, C = 5, D = 9, E = 14, F = 20, G = 4, H = 11, I = 16, J = 23, K = 6, L = 10, M = 15, N = 21; for ( a = n(a), x = l(a), t = 1732584193, u = 4023233417, v = 2562383102, w = 271733878, o = 0; o < x.length; o += 16 ) (p = t), (q = u), (r = v), (s = w), (t = h(t, u, v, w, x[o + 0], y, 3614090360)), (w = h(w, t, u, v, x[o + 1], z, 3905402710)), (v = h(v, w, t, u, x[o + 2], A, 606105819)), (u = h(u, v, w, t, x[o + 3], B, 3250441966)), (t = h(t, u, v, w, x[o + 4], y, 4118548399)), (w = h(w, t, u, v, x[o + 5], z, 1200080426)), (v = h(v, w, t, u, x[o + 6], A, 2821735955)), (u = h(u, v, w, t, x[o + 7], B, 4249261313)), (t = h(t, u, v, w, x[o + 8], y, 1770035416)), (w = h(w, t, u, v, x[o + 9], z, 2336552879)), (v = h(v, w, t, u, x[o + 10], A, 4294925233)), (u = h(u, v, w, t, x[o + 11], B, 2304563134)), (t = h(t, u, v, w, x[o + 12], y, 1804603682)), (w = h(w, t, u, v, x[o + 13], z, 4254626195)), (v = h(v, w, t, u, x[o + 14], A, 2792965006)), (u = h(u, v, w, t, x[o + 15], B, 1236535329)), (t = i(t, u, v, w, x[o + 1], C, 4129170786)), (w = i(w, t, u, v, x[o + 6], D, 3225465664)), (v = i(v, w, t, u, x[o + 11], E, 643717713)), (u = i(u, v, w, t, x[o + 0], F, 3921069994)), (t = i(t, u, v, w, x[o + 5], C, 3593408605)), (w = i(w, t, u, v, x[o + 10], D, 38016083)), (v = i(v, w, t, u, x[o + 15], E, 3634488961)), (u = i(u, v, w, t, x[o + 4], F, 3889429448)), (t = i(t, u, v, w, x[o + 9], C, 568446438)), (w = i(w, t, u, v, x[o + 14], D, 3275163606)), (v = i(v, w, t, u, x[o + 3], E, 4107603335)), (u = i(u, v, w, t, x[o + 8], F, 1163531501)), (t = i(t, u, v, w, x[o + 13], C, 2850285829)), (w = i(w, t, u, v, x[o + 2], D, 4243563512)), (v = i(v, w, t, u, x[o + 7], E, 1735328473)), (u = i(u, v, w, t, x[o + 12], F, 2368359562)), (t = j(t, u, v, w, x[o + 5], G, 4294588738)), (w = j(w, t, u, v, x[o + 8], H, 2272392833)), (v = j(v, w, t, u, x[o + 11], I, 1839030562)), (u = j(u, v, w, t, x[o + 14], J, 4259657740)), (t = j(t, u, v, w, x[o + 1], G, 2763975236)), (w = j(w, t, u, v, x[o + 4], H, 1272893353)), (v = j(v, w, t, u, x[o + 7], I, 4139469664)), (u = j(u, v, w, t, x[o + 10], J, 3200236656)), (t = j(t, u, v, w, x[o + 13], G, 681279174)), (w = j(w, t, u, v, x[o + 0], H, 3936430074)), (v = j(v, w, t, u, x[o + 3], I, 3572445317)), (u = j(u, v, w, t, x[o + 6], J, 76029189)), (t = j(t, u, v, w, x[o + 9], G, 3654602809)), (w = j(w, t, u, v, x[o + 12], H, 3873151461)), (v = j(v, w, t, u, x[o + 15], I, 530742520)), (u = j(u, v, w, t, x[o + 2], J, 3299628645)), (t = k(t, u, v, w, x[o + 0], K, 4096336452)), (w = k(w, t, u, v, x[o + 7], L, 1126891415)), (v = k(v, w, t, u, x[o + 14], M, 2878612391)), (u = k(u, v, w, t, x[o + 5], N, 4237533241)), (t = k(t, u, v, w, x[o + 12], K, 1700485571)), (w = k(w, t, u, v, x[o + 3], L, 2399980690)), (v = k(v, w, t, u, x[o + 10], M, 4293915773)), (u = k(u, v, w, t, x[o + 1], N, 2240044497)), (t = k(t, u, v, w, x[o + 8], K, 1873313359)), (w = k(w, t, u, v, x[o + 15], L, 4264355552)), (v = k(v, w, t, u, x[o + 6], M, 2734768916)), (u = k(u, v, w, t, x[o + 13], N, 1309151649)), (t = k(t, u, v, w, x[o + 4], K, 4149444226)), (w = k(w, t, u, v, x[o + 11], L, 3174756917)), (v = k(v, w, t, u, x[o + 2], M, 718787259)), (u = k(u, v, w, t, x[o + 9], N, 3951481745)), (t = c(t, p)), (u = c(u, q)), (v = c(v, r)), (w = c(w, s)); var O = m(t) + m(u) + m(v) + m(w); return O.toLowerCase(); } \ No newline at end of file