<progress id="yueoz"><code id="yueoz"><xmp id="yueoz">

      1. 吾愛破解 - LCG - LSG |安卓破解|病毒分析|www.13ee.cn

         找回密碼
         注冊[Register]

        QQ登錄

        只需一步,快速開始

        搜索
        查看: 15765|回復: 405
        上一主題 下一主題

        [Python] 某網站Web端爬蟲攻防大賽題目交流

            [復制鏈接]
        跳轉到指定樓層
        樓主
        漁滒 發表于 2020-10-21 23:28 回帖獎勵
        本帖最后由 漁滒 于 2020-11-15 14:59 編輯

        比賽網站的鏈接http://match.yuanrenxue.com/list,比賽目前已經結束
        題目序號 題目內容 是否完成
        第一題 js 混淆 - 源碼亂碼 已完成
        第二題 js 混淆 - 動態cookie 1 已完成
        第三題 訪問邏輯 - 推心置腹 已完成
        第四題 雪碧圖、樣式干擾 已完成
        第五題 js 混淆 - 亂碼增強 已完成
        第六題 js 混淆 - 回溯已完成
        第七題 動態字體,隨風漂移 已完成
        第八題 驗證碼 - 圖文點選 已完成
        第九題 js 混淆 - 動態cookie 2已完成
        第十題 js 混淆 - 重放攻擊對抗僅答案
        第十一題app抓取 - so文件協議破解 已完成
        第十二題入門級js 已完成
        第十三題入門級cookie_某樂V1.0版 已完成

        第一題【接口-查詢參數-值加密】
        開打題目后按f12,會出現setInterval函數,直接禁用斷點,然后就可以繼續執行了,f5刷新一下

        在NetWork窗口可以查看到需要的數據來源于【http://match.yuanrenxue.com/api/match/1】接口,而請求中有一個m參數是加密的,也就是說需要找到這個m參數的生成方法,那么在全局中搜索【api/match/1】

        可以搜索到這個內容,復制這一段內的script代碼進行格式化

        其主要內容大概是這些
        [JavaScript] 純文本查看 復制代碼
        window.url = '/api/match/1';
        request = function() {
                var timestamp = Date.parse(new Date());
                var m = oo0O0(timestamp.toString()) + window.f;
                var list = {
                        "page": window.page,
                        "m": m + '丨' + timestamp / 1000
                };
                $.ajax({
                        url: window.url,
                        dataType: "json",
                        async: false,
                        data: list,
                        type: "GET",
                        beforeSend: function(request) {},
                })
        };

        這里可以清楚的看到m參數是由oo0O0函數的結果加上window.f得到的,繼續查找一下oo0O0函數

        也是在當前的頁面,只是在不同的script標簽下,將這個script標簽下的代碼進行格式化可以得到下面
        [JavaScript] 純文本查看 復制代碼
        function oo0O0(mw) {
                window.b = '';
                for (var i = 0, len = window.a.length; i < len; i++) {
                        console.log(window.a[i]);
                        window.b += String[document.e + document.g](window.a[i][document.f + document.h]() - i - window.c)
                }
                var U = ['W5r5W6VdIHZcT8kU', 'WQ8CWRaxWQirAW=='];
                var J = function(o, E) {
                                o = o - 0x0;
                                var N = U[o];
                                if (J['bSSGte'] === undefined) {
                                        var Y = function(w) {
                                                        var m = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',
                                                                T = String(w)['replace'](/=+$/, '');
                                                        var A = '';
                                                        for (var C = 0x0, b, W, l = 0x0; W = T['charAt'](l++);~W && (b = C % 0x4 ? b * 0x40 + W : W, C++ % 0x4) ? A += String['fromCharCode'](0xff & b >> (-0x2 * C & 0x6)) : 0x0) {
                                                                W = m['indexOf'](W)
                                                        }
                                                        return A
                                                };
                                        var t = function(w, m) {
                                                        var T = [],
                                                                A = 0x0,
                                                                C, b = '',
                                                                W = '';
                                                        w = Y(w);
                                                        for (var R = 0x0, v = w['length']; R < v; R++) {
                                                                W += '%' + ('00' + w['charCodeAt'](R)['toString'](0x10))['slice'](-0x2)
                                                        }
                                                        w = decodeURIComponent(W);
                                                        var l;
                                                        for (l = 0x0; l < 0x100; l++) {
                                                                T[l] = l
                                                        }
                                                        for (l = 0x0; l < 0x100; l++) {
                                                                A = (A + T[l] + m['charCodeAt'](l % m['length'])) % 0x100, C = T[l], T[l] = T[A], T[A] = C
                                                        }
                                                        l = 0x0, A = 0x0;
                                                        for (var L = 0x0; L < w['length']; L++) {
                                                                l = (l + 0x1) % 0x100, A = (A + T[l]) % 0x100, C = T[l], T[l] = T[A], T[A] = C, b += String['fromCharCode'](w['charCodeAt'](L) ^ T[(T[l] + T[A]) % 0x100])
                                                        }
                                                        return b
                                                };
                                        J['luAabU'] = t, J['qlVPZg'] = {}, J['bSSGte'] = !! []
                                }
                                var H = J['qlVPZg'][o];
                                return H === undefined ? (J['TUDBIJ'] === undefined && (J['TUDBIJ'] = !! []), N = J['luAabU'](N, E), J['qlVPZg'][o] = N) : N = H, N
                        };
                eval(atob(window['b'])[J('0x0', ']dQW')](J('0x1', 'GTu!'), '\x27' + mw + '\x27'));
                return ''
        }

        這里有一點是這個oo0O0函數的返回值是一個空值,也就是說m的值完全由window.f決定。
        嘗試在控制臺輸出一下window.f

        但是當我們執行一次oo0O0函數后,再輸出window.f,這時候window.f被修改了

        同時會輸出一大堆亂碼,那就說明oo0O0函數會修改window.f的值,下面詳細看看oo0O0函數,其內部并沒有出現window.f這個變量,但是在返回值前有一句比較特殊的代碼
        [JavaScript] 純文本查看 復制代碼
        eval(atob(window['b'])[J('0x0', ']dQW')](J('0x1', 'GTu!'), '\x27' + mw + '\x27'));

        這里將window['b']的值進行base64解碼后還進行了一些函數的傳參運算,那么在控制臺輸出一下【atob(window['b'])】,看看是什么內容
        輸出后可以看到是一段script代碼,將其進行格式化
        [JavaScript] 純文本查看 復制代碼
        var hexcase = 0;
        var b64pad = "";
        var chrsz = 16;
        
        function hex_md5(a) {
                return binl2hex(core_md5(str2binl(a), a.length * chrsz))
        }
        function b64_md5(a) {
                return binl2b64(core_md5(str2binl(a), a.length * chrsz))
        }
        function str_md5(a) {
                return binl2str(core_md5(str2binl(a), a.length * chrsz))
        }
        function hex_hmac_md5(a, b) {
                return binl2hex(core_hmac_md5(a, b))
        }
        function b64_hmac_md5(a, b) {
                return binl2b64(core_hmac_md5(a, b))
        }
        function str_hmac_md5(a, b) {
                return binl2str(core_hmac_md5(a, b))
        }
        function md5_vm_test() {
                return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"
        }
        function core_md5(p, k) {
                p[k >> 5] |= 128 << ((k) % 32);
                p[(((k + 64) >>> 9) << 4) + 14] = k;
                var o = 1732584193;
                var n = -271733879;
                var m = -1732584194;
                var l = 271733878;
                for (var g = 0; g < p.length; g += 16) {
                        var j = o;
                        var h = n;
                        var f = m;
                        var e = l;
                        o = md5_ff(o, n, m, l, p[g + 0], 7, -680976936);
                        l = md5_ff(l, o, n, m, p[g + 1], 12, -389564586);
                        m = md5_ff(m, l, o, n, p[g + 2], 17, 606105819);
                        n = md5_ff(n, m, l, o, p[g + 3], 22, -1044525330);
                        o = md5_ff(o, n, m, l, p[g + 4], 7, -176418897);
                        l = md5_ff(l, o, n, m, p[g + 5], 12, 1200080426);
                        m = md5_ff(m, l, o, n, p[g + 6], 17, -1473231341);
                        n = md5_ff(n, m, l, o, p[g + 7], 22, -45705983);
                        o = md5_ff(o, n, m, l, p[g + 8], 7, 1770035416);
                        l = md5_ff(l, o, n, m, p[g + 9], 12, -1958414417);
                        m = md5_ff(m, l, o, n, p[g + 10], 17, -42063);
                        n = md5_ff(n, m, l, o, p[g + 11], 22, -1990404162);
                        o = md5_ff(o, n, m, l, p[g + 12], 7, 1804660682);
                        l = md5_ff(l, o, n, m, p[g + 13], 12, -40341101);
                        m = md5_ff(m, l, o, n, p[g + 14], 17, -1502002290);
                        n = md5_ff(n, m, l, o, p[g + 15], 22, 1236535329);
                        o = md5_gg(o, n, m, l, p[g + 1], 5, -165796510);
                        l = md5_gg(l, o, n, m, p[g + 6], 9, -1069501632);
                        m = md5_gg(m, l, o, n, p[g + 11], 14, 643717713);
                        n = md5_gg(n, m, l, o, p[g + 0], 20, -373897302);
                        o = md5_gg(o, n, m, l, p[g + 5], 5, -701558691);
                        l = md5_gg(l, o, n, m, p[g + 10], 9, 38016083);
                        m = md5_gg(m, l, o, n, p[g + 15], 14, -660478335);
                        n = md5_gg(n, m, l, o, p[g + 4], 20, -405537848);
                        o = md5_gg(o, n, m, l, p[g + 9], 5, 568446438);
                        l = md5_gg(l, o, n, m, p[g + 14], 9, -1019803690);
                        m = md5_gg(m, l, o, n, p[g + 3], 14, -187363961);
                        n = md5_gg(n, m, l, o, p[g + 8], 20, 1163531501);
                        o = md5_gg(o, n, m, l, p[g + 13], 5, -1444681467);
                        l = md5_gg(l, o, n, m, p[g + 2], 9, -51403784);
                        m = md5_gg(m, l, o, n, p[g + 7], 14, 1735328473);
                        n = md5_gg(n, m, l, o, p[g + 12], 20, -1921207734);
                        o = md5_hh(o, n, m, l, p[g + 5], 4, -378558);
                        l = md5_hh(l, o, n, m, p[g + 8], 11, -2022574463);
                        m = md5_hh(m, l, o, n, p[g + 11], 16, 1839030562);
                        n = md5_hh(n, m, l, o, p[g + 14], 23, -35309556);
                        o = md5_hh(o, n, m, l, p[g + 1], 4, -1530992060);
                        l = md5_hh(l, o, n, m, p[g + 4], 11, 1272893353);
                        m = md5_hh(m, l, o, n, p[g + 7], 16, -155497632);
                        n = md5_hh(n, m, l, o, p[g + 10], 23, -1094730640);
                        o = md5_hh(o, n, m, l, p[g + 13], 4, 681279174);
                        l = md5_hh(l, o, n, m, p[g + 0], 11, -358537222);
                        m = md5_hh(m, l, o, n, p[g + 3], 16, -722881979);
                        n = md5_hh(n, m, l, o, p[g + 6], 23, 76029189);
                        o = md5_hh(o, n, m, l, p[g + 9], 4, -640364487);
                        l = md5_hh(l, o, n, m, p[g + 12], 11, -421815835);
                        m = md5_hh(m, l, o, n, p[g + 15], 16, 530742520);
                        n = md5_hh(n, m, l, o, p[g + 2], 23, -995338651);
                        o = md5_ii(o, n, m, l, p[g + 0], 6, -198630844);
                        l = md5_ii(l, o, n, m, p[g + 7], 10, 11261161415);
                        m = md5_ii(m, l, o, n, p[g + 14], 15, -1416354905);
                        n = md5_ii(n, m, l, o, p[g + 5], 21, -57434055);
                        o = md5_ii(o, n, m, l, p[g + 12], 6, 1700485571);
                        l = md5_ii(l, o, n, m, p[g + 3], 10, -1894446606);
                        m = md5_ii(m, l, o, n, p[g + 10], 15, -1051523);
                        n = md5_ii(n, m, l, o, p[g + 1], 21, -2054922799);
                        o = md5_ii(o, n, m, l, p[g + 8], 6, 1873313359);
                        l = md5_ii(l, o, n, m, p[g + 15], 10, -30611744);
                        m = md5_ii(m, l, o, n, p[g + 6], 15, -1560198380);
                        n = md5_ii(n, m, l, o, p[g + 13], 21, 1309151649);
                        o = md5_ii(o, n, m, l, p[g + 4], 6, -145523070);
                        l = md5_ii(l, o, n, m, p[g + 11], 10, -1120210379);
                        m = md5_ii(m, l, o, n, p[g + 2], 15, 718787259);
                        n = md5_ii(n, m, l, o, p[g + 9], 21, -343485551);
                        o = safe_add(o, j);
                        n = safe_add(n, h);
                        m = safe_add(m, f);
                        l = safe_add(l, e)
                }
                return Array(o, n, m, l)
        }
        function md5_cmn(h, e, d, c, g, f) {
                return safe_add(bit_rol(safe_add(safe_add(e, h), safe_add(c, f)), g), d)
        }
        function md5_ff(g, f, k, j, e, i, h) {
                return md5_cmn((f & k) | ((~f) & j), g, f, e, i, h)
        }
        function md5_gg(g, f, k, j, e, i, h) {
                return md5_cmn((f & j) | (k & (~j)), g, f, e, i, h)
        }
        function md5_hh(g, f, k, j, e, i, h) {
                return md5_cmn(f ^ k ^ j, g, f, e, i, h)
        }
        function md5_ii(g, f, k, j, e, i, h) {
                return md5_cmn(k ^ (f | (~j)), g, f, e, i, h)
        }
        function core_hmac_md5(c, f) {
                var e = str2binl(c);
                if (e.length > 16) {
                        e = core_md5(e, c.length * chrsz)
                }
                var a = Array(16),
                        d = Array(16);
                for (var b = 0; b < 16; b++) {
                        a[b] = e[b] ^ 909522486;
                        d[b] = e[b] ^ 1549556828
                }
                var g = core_md5(a.concat(str2binl(f)), 512 + f.length * chrsz);
                return core_md5(d.concat(g), 512 + 128)
        }
        function safe_add(a, d) {
                var c = (a & 65535) + (d & 65535);
                var b = (a >> 16) + (d >> 16) + (c >> 16);
                return (b << 16) | (c & 65535)
        }
        function bit_rol(a, b) {
                return (a << b) | (a >>> (32 - b))
        }
        function str2binl(d) {
                var c = Array();
                var a = (1 << chrsz) - 1;
                for (var b = 0; b < d.length * chrsz; b += chrsz) {
                        c[b >> 5] |= (d.charCodeAt(b / chrsz) & a) << (b % 32)
                }
                return c
        }
        function binl2str(c) {
                var d = "";
                var a = (1 << chrsz) - 1;
                for (var b = 0; b < c.length * 32; b += chrsz) {
                        d += String.fromCharCode((c[b >> 5] >>> (b % 32)) & a)
                }
                return d
        }
        function binl2hex(c) {
                var b = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
                var d = "";
                for (var a = 0; a < c.length * 4; a++) {
                        d += b.charAt((c[a >> 2] >> ((a % 4) * 8 + 4)) & 15) + b.charAt((c[a >> 2] >> ((a % 4) * 8)) & 15)
                }
                return d
        }
        function binl2b64(d) {
                var c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                var f = "";
                for (var b = 0; b < d.length * 4; b += 3) {
                        var e = (((d[b >> 2] >> 8 * (b % 4)) & 255) << 16) | (((d[b + 1 >> 2] >> 8 * ((b + 1) % 4)) & 255) << 8) | ((d[b + 2 >> 2] >> 8 * ((b + 2) % 4)) & 255);
                        for (var a = 0; a < 4; a++) {
                                if (b * 8 + a * 6 > d.length * 32) {
                                        f += b64pad
                                } else {
                                        f += c.charAt((e >> 6 * (3 - a)) & 63)
                                }
                        }
                }
                return f
        };
        window.f = hex_md5(mwqqppz)

        在函數的最后可以看到window.f是通過hex_md5函數運算得到的
        但是這里的【mwqqppz】變量并沒有出現的地方,此時就往前看看上一段代碼傳入的是什么參數
        可以看到這里有一些小混淆,此時將上面函數中出現的下方代碼輸入到控制臺,并跟著輸入【J('0x0', ']dQW')】和【J('0x1', 'GTu!')】
        [JavaScript] 純文本查看 復制代碼
                var U = ['W5r5W6VdIHZcT8kU', 'WQ8CWRaxWQirAW=='];
                var J = function(o, E) {
                                o = o - 0x0;
                                var N = U[o];
                                if (J['bSSGte'] === undefined) {
                                        var Y = function(w) {
                                                        var m = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',
                                                                T = String(w)['replace'](/=+$/, '');
                                                        var A = '';
                                                        for (var C = 0x0, b, W, l = 0x0; W = T['charAt'](l++);~W && (b = C % 0x4 ? b * 0x40 + W : W, C++ % 0x4) ? A += String['fromCharCode'](0xff & b >> (-0x2 * C & 0x6)) : 0x0) {
                                                                W = m['indexOf'](W)
                                                        }
                                                        return A
                                                };
                                        var t = function(w, m) {
                                                        var T = [],
                                                                A = 0x0,
                                                                C, b = '',
                                                                W = '';
                                                        w = Y(w);
                                                        for (var R = 0x0, v = w['length']; R < v; R++) {
                                                                W += '%' + ('00' + w['charCodeAt'](R)['toString'](0x10))['slice'](-0x2)
                                                        }
                                                        w = decodeURIComponent(W);
                                                        var l;
                                                        for (l = 0x0; l < 0x100; l++) {
                                                                T[l] = l
                                                        }
                                                        for (l = 0x0; l < 0x100; l++) {
                                                                A = (A + T[l] + m['charCodeAt'](l % m['length'])) % 0x100, C = T[l], T[l] = T[A], T[A] = C
                                                        }
                                                        l = 0x0, A = 0x0;
                                                        for (var L = 0x0; L < w['length']; L++) {
                                                                l = (l + 0x1) % 0x100, A = (A + T[l]) % 0x100, C = T[l], T[l] = T[A], T[A] = C, b += String['fromCharCode'](w['charCodeAt'](L) ^ T[(T[l] + T[A]) % 0x100])
                                                        }
                                                        return b
                                                };
                                        J['luAabU'] = t, J['qlVPZg'] = {}, J['bSSGte'] = !! []
                                }
                                var H = J['qlVPZg'][o];
                                return H === undefined ? (J['TUDBIJ'] === undefined && (J['TUDBIJ'] = !! []), N = J['luAabU'](N, E), J['qlVPZg'][o] = N) : N = H, N
                        };


        可以得到其解混淆后的兩個值
        還原一下就變成了
        [JavaScript] 純文本查看 復制代碼
        eval(atob(window['b'])["replace"]("mwqqppz", '\x27' + mw + '\x27'));

        這是就清楚了。將mwqqppz替換為我們傳入的變量進行計算
        此時只要將最后一句的
        window.f = hex_md5(mwqqppz)
        修改為
        var mwqqppz = process.argv[2];
        console.log(hex_md5(mwqqppz));
        就可以給我們進行調用,修改好后另存為01.js
        接下來就是簡單的寫一下接口調用的代碼,其中的m值通過用nodejs調用js文件進行計算,需要先安裝nodejs
        [Python] 純文本查看 復制代碼
        import requests
        import time
        import os
        
        def main():
            money = 0
            number = 0
            ts = str(int(time.time()))
            nodejs = os.popen('node 01 '+ts+'000')
            m = nodejs.read().replace('\n', '') + '丨' + ts
            nodejs.close()
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/api/match/1?page='+str(page)+'&m='+m
                response = requests.get(url).json()
                for each in response['data']:
                    money += each['value']
                    number += 1
            print(money)
            print(number)
            print(money // number)
            # 總價:235000
            # 總數:50
            # 均值:4700
        
        if __name__ == '__main__':
            main()


        第二題【接口-請求頭-值加密】
        因為第二題是動態cookie,為了避免其他cookie的影響,所以使用瀏覽器的無痕模式進行調試,按f12并選中【Preserve log】

        此時可以看到接口中的cookie有一個m參數是加密的

        繼續往前找到第二條數據出現過這個相同的值

        但是當去到第一條數據的時候,就沒有這個值了

        而且這個點開【Preview】并沒有任何內容,而且在響應頭也沒有set-cookie,那就說明這個頁面里面有script代碼設置了【document.cookie】的屬性
        此時關閉f12,使用Fiddler.exe進行抓包,此時可以看到第一次返回的是一段script代碼

        使用網頁提供的ob混淆專解測試版V0.1,進行反混淆,因為代碼比較長,只貼出核心代碼
        [JavaScript] 純文本查看 復制代碼
          function _0x165f49(_0x3601cd, _0x44836c) {
            document["cookie"] = "m" + _0x53b25d() + "=" + _0xb4d4cd(_0x3601cd) + "|" + _0x3601cd + "; path=/";
            location["reload"]();
          }
        
          function _0x19c5c1(_0x5d05a8, _0x3f4653) {
            return Date["parse"](new Date());
          }
          
          _0x165f49(_0x19c5c1());

        這里可以看到執行了_0x165f49函數,這里設置了document.cookie的值,并對頁面重新加載
        其中計算m參數的函數就是_0xb4d4cd函數,將這個函數復制出來,并復制出其調用到的函數,重新封裝另存為02.js
        [JavaScript] 純文本查看 復制代碼
          qz = [10, 99, 111, 110, 115, 111, 108, 101, 32, 61, 32, 110, 101, 119, 32, 79, 98, 106, 101, 99, 116, 40, 41, 10, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 40, 115, 41, 32, 123, 10, 32, 32, 32, 32, 119, 104, 105, 108, 101, 32, 40, 49, 41, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 40, 105, 61, 48, 59, 105, 60, 49, 49, 48, 48, 48, 48, 48, 59, 105, 43, 43, 41, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 104, 105, 115, 116, 111, 114, 121, 46, 112, 117, 115, 104, 83, 116, 97, 116, 101, 40, 48, 44, 48, 44, 105, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 125, 10, 99, 111, 110, 115, 111, 108, 101, 46, 116, 111, 83, 116, 114, 105, 110, 103, 32, 61, 32, 39, 91, 111, 98, 106, 101, 99, 116, 32, 79, 98, 106, 101, 99, 116, 93, 39, 10, 99, 111, 110, 115, 111, 108, 101, 46, 108, 111, 103, 46, 116, 111, 83, 116, 114, 105, 110, 103, 32, 61, 32, 39, 402, 32, 116, 111, 83, 116, 114, 105, 110, 103, 40, 41, 32, 123, 32, 91, 110, 97, 116, 105, 118, 101, 32, 99, 111, 100, 101, 93, 32, 125, 39, 10];
        
          function _0x38927c(_0x31c213, _0x15819d) {
              var _0x1ebfad = (65535 & _0x31c213) + (65535 & _0x15819d);
        
              return (_0x31c213 >> 16) + (_0x15819d >> 16) + (_0x1ebfad >> 16) << 16 | 65535 & _0x1ebfad;
          }
        
          function _0x42ea6b(_0x4311af, _0x1d26cb) {
              return _0x4311af << _0x1d26cb | _0x4311af >>> 32 - _0x1d26cb;
          }
        
          function _0x17df27(_0x149b94, _0x40ae03, _0x4c4c51, _0x896443, _0x2066e1, _0x339641) {
              return _0x38927c(_0x42ea6b(_0x38927c(_0x38927c(_0x40ae03, _0x149b94), _0x38927c(_0x896443, _0x339641)), _0x2066e1), _0x4c4c51);
          }
        
          function _0x4eb065(_0x4701be, _0x41f76b, _0x58a63e, _0x333b01, _0x1fac47, _0x37993e, _0xd21e0d) {
              return _0x17df27(_0x41f76b & _0x58a63e | ~_0x41f76b & _0x333b01, _0x4701be, _0x41f76b, _0x1fac47, _0x37993e, _0xd21e0d);
          }
        
          function _0x1f13e1(_0x29d2ad, _0x3bd4bc, _0xff4102, _0x3979c2, _0xd8d449, _0x78fa9b, _0xe01ea7) {
              return _0x17df27(_0x3bd4bc & _0x3979c2 | _0xff4102 & ~_0x3979c2, _0x29d2ad, _0x3bd4bc, _0xd8d449, _0x78fa9b, _0xe01ea7);
          }
        
        
          function _0x3e3606(_0x2ef909, _0x3bd8d3, _0x892bc5, _0x13c904, _0x2342a0, _0x35f109, _0x19c0e1) {
              return _0x17df27(_0x3bd8d3 ^ _0x892bc5 ^ _0x13c904, _0x2ef909, _0x3bd8d3, _0x2342a0, _0x35f109, _0x19c0e1);
          }
        
          function _0x3d2668(_0x4cd0a8, _0xe871c7, _0x5f0915, _0x10cf3a, _0x929107, _0x39dc73, _0x10c64e) {
              return _0x17df27(_0x5f0915 ^ (_0xe871c7 | ~_0x10cf3a), _0x4cd0a8, _0xe871c7, _0x929107, _0x39dc73, _0x10c64e);
          }
        
          function _0x2f0e92(_0x492976, _0x1ca955) {
              _0x492976[_0x1ca955 >> 5] |= 128 << _0x1ca955 % 32, _0x492976[14 + (_0x1ca955 + 64 >>> 9 << 4)] = _0x1ca955;
        
              if (qz) {
                  var _0x2856ca,
                      _0x56938f,
                      _0x2632f2,
                      _0x1fc011,
                      _0x1b5b0b,
                      _0x27964a = 1732584193,
                      _0x5b3ae5 = -271733879,
                      _0x529d7c = -1732584194,
                      _0x4813f1 = 271733878;
              } else {
                  var _0x2856ca,
                      _0x56938f,
                      _0x2632f2,
                      _0x1fc011,
                      _0x1b5b0b,
                      _0x27964a = 0,
                      _0x5b3ae5 = -0,
                      _0x529d7c = -0,
                      _0x4813f1 = 0;
              }
        
              for (_0x2856ca = 0; _0x2856ca < _0x492976["length"]; _0x2856ca += 16) _0x56938f = _0x27964a, _0x2632f2 = _0x5b3ae5, _0x1fc011 = _0x529d7c, _0x1b5b0b = _0x4813f1, _0x27964a = _0x4eb065(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca], 7, -680876936), _0x4813f1 = _0x4eb065(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 1], 12, -389564586), _0x529d7c = _0x4eb065(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 2], 17, 606105819), _0x5b3ae5 = _0x4eb065(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 3], 22, -1044525330), _0x27964a = _0x4eb065(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 4], 7, -176418897), _0x4813f1 = _0x4eb065(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 5], 12, 1200080426), _0x529d7c = _0x4eb065(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 6], 17, -1473231341), _0x5b3ae5 = _0x4eb065(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 7], 22, -45705983), _0x27964a = _0x4eb065(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 8], 7, 1770035416), _0x4813f1 = _0x4eb065(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 9], 12, -1958414417), _0x529d7c = _0x4eb065(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 10], 17, -42063), _0x5b3ae5 = _0x4eb065(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 11], 22, -1990404162), _0x27964a = _0x4eb065(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 12], 7, 1804603682), _0x4813f1 = _0x4eb065(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 13], 12, -40341101), _0x529d7c = _0x4eb065(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 14], 17, -1502882290), _0x5b3ae5 = _0x4eb065(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 15], 22, 1236535329), _0x27964a = _0x1f13e1(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 1], 5, -165796510), _0x4813f1 = _0x1f13e1(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 6], 9, -1069501632), _0x529d7c = _0x1f13e1(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 11], 14, 643717713), _0x5b3ae5 = _0x1f13e1(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca], 20, -373897302), _0x27964a = _0x1f13e1(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 5], 5, -701558691), _0x4813f1 = _0x1f13e1(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 10], 9, 38016083), _0x529d7c = _0x1f13e1(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 15], 14, -660478335), _0x5b3ae5 = _0x1f13e1(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 4], 20, -405537848), _0x27964a = _0x1f13e1(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 9], 5, 568446438), _0x4813f1 = _0x1f13e1(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 14], 9, -1019803690), _0x529d7c = _0x1f13e1(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 3], 14, -187363961), _0x5b3ae5 = _0x1f13e1(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 8], 20, 1163531501), _0x27964a = _0x1f13e1(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 13], 5, -1444681467), _0x4813f1 = _0x1f13e1(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 2], 9, -51403784), _0x529d7c = _0x1f13e1(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 7], 14, 1735328473), _0x5b3ae5 = _0x1f13e1(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 12], 20, -1926607734), _0x27964a = _0x3e3606(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 5], 4, -378558), _0x4813f1 = _0x3e3606(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 8], 11, -2022574463), _0x529d7c = _0x3e3606(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 11], 16, 1839030562), _0x5b3ae5 = _0x3e3606(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 14], 23, -35309556), _0x27964a = _0x3e3606(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 1], 4, -1530992060), _0x4813f1 = _0x3e3606(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 4], 11, 1272893353), _0x529d7c = _0x3e3606(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 7], 16, -155497632), _0x5b3ae5 = _0x3e3606(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 10], 23, -1094730640), _0x27964a = _0x3e3606(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 13], 4, 681279174), _0x4813f1 = _0x3e3606(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca], 11, -358537222), _0x529d7c = _0x3e3606(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 3], 16, -722521979), _0x5b3ae5 = _0x3e3606(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 6], 23, 76029189), _0x27964a = _0x3e3606(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 9], 4, -640364487), _0x4813f1 = _0x3e3606(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 12], 11, -421815835), _0x529d7c = _0x3e3606(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 15], 16, 530742520), _0x5b3ae5 = _0x3e3606(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 2], 23, -995338651), _0x27964a = _0x3d2668(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca], 6, -198630844), _0x4813f1 = _0x3d2668(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 7], 10, 1126891415), _0x529d7c = _0x3d2668(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 14], 15, -1416354905), _0x5b3ae5 = _0x3d2668(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 5], 21, -57434055), _0x27964a = _0x3d2668(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 12], 6, 1700485571), _0x4813f1 = _0x3d2668(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 3], 10, -1894986606), _0x529d7c = _0x3d2668(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 10], 15, -1051523), _0x5b3ae5 = _0x3d2668(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 1], 21, -2054922799), _0x27964a = _0x3d2668(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 8], 6, 1873313359), _0x4813f1 = _0x3d2668(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 15], 10, -30611744), _0x529d7c = _0x3d2668(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 6], 15, -1560198380), _0x5b3ae5 = _0x3d2668(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 13], 21, 1309151649), _0x27964a = _0x3d2668(_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1, _0x492976[_0x2856ca + 4], 6, -145523070), _0x4813f1 = _0x3d2668(_0x4813f1, _0x27964a, _0x5b3ae5, _0x529d7c, _0x492976[_0x2856ca + 11], 10, -1120210379), _0x529d7c = _0x3d2668(_0x529d7c, _0x4813f1, _0x27964a, _0x5b3ae5, _0x492976[_0x2856ca + 2], 15, 718787259), _0x5b3ae5 = _0x3d2668(_0x5b3ae5, _0x529d7c, _0x4813f1, _0x27964a, _0x492976[_0x2856ca + 9], 21, -343485441), _0x27964a = _0x38927c(_0x27964a, _0x56938f), _0x5b3ae5 = _0x38927c(_0x5b3ae5, _0x2632f2), _0x529d7c = _0x38927c(_0x529d7c, _0x1fc011), _0x4813f1 = _0x38927c(_0x4813f1, _0x1b5b0b);
        
              return [_0x27964a, _0x5b3ae5, _0x529d7c, _0x4813f1];
          }
        
          function _0x5c0cba(_0x4b9003) {
              var _0x7b6654,
                  _0x81a5a1 = [];
        
              for (_0x81a5a1[(_0x4b9003["length"] >> 2) - 1] = undefined, _0x7b6654 = 0; _0x7b6654 < _0x81a5a1["length"]; _0x7b6654 += 1) _0x81a5a1[_0x7b6654] = 0;
        
              var _0x4a7c5e = 8 * _0x4b9003["length"];
        
              for (_0x7b6654 = 0; _0x7b6654 < _0x4a7c5e; _0x7b6654 += 8) _0x81a5a1[_0x7b6654 >> 5] |= (255 & _0x4b9003["charCodeAt"](_0x7b6654 / 8)) << _0x7b6654 % 32;
        
              return _0x81a5a1;
          }
        
          function _0x2498e1(_0xab1134) {
              var _0x5b6833,
                  _0x2717db,
                  _0x55f85f = "0123456789abcdef",
                  _0xf7fa75 = "";
        
              for (_0x2717db = 0; _0x2717db < _0xab1134["length"]; _0x2717db += 1) _0x5b6833 = _0xab1134["charCodeAt"](_0x2717db), _0xf7fa75 += _0x55f85f["charAt"](_0x5b6833 >>> 4 & 15) + _0x55f85f["charAt"](15 & _0x5b6833);
        
              return _0xf7fa75;
          }
        
          function _0x43808a(_0xcb333) {
              var _0x49e4a7,
                  _0x530dde = "",
                  _0x568ad8 = 32 * _0xcb333["length"];
        
              for (_0x49e4a7 = 0; _0x49e4a7 < _0x568ad8; _0x49e4a7 += 8) _0x530dde += String["fromCharCode"](_0xcb333[_0x49e4a7 >> 5] >>> _0x49e4a7 % 32 & 255);
        
              return _0x530dde;
          }
        
          function _0x4094fc(_0x2be7d6) {
              return _0x1faf49(_0x102c73(_0x2be7d6));
          }
        
        
          function _0x102c73(_0x4c0c42) {
              return unescape(encodeURIComponent(_0x4c0c42));
          }
        
          function _0x1faf49(_0x5cf3e8) {
              return _0x43808a(_0x2f0e92(_0x5c0cba(_0x5cf3e8), 8 * _0x5cf3e8["length"]));
          }
        
          function _0x554c2e(_0x1bfaf7) {
              return _0x2498e1(_0x4094fc(_0x1bfaf7));
          }
        
        
        
          function _0xb4d4cd(_0x3ed615) {
              return _0x554c2e(_0x3ed615);
          }
        
          var mwqqppz = process.argv[2];
          console.log(_0x115b90(mwqqppz));

        此時就可以給我們使用nodejs進行調用計算了
        接下來編寫請求的代碼
        [Python] 純文本查看 復制代碼
        import requests
        import time
        import os
        
        def main():
            sums = 0
            ts = str(int(time.time()))+'000'
            nodejs = os.popen('node 02 '+ts)
            m = nodejs.read().replace('\n', '') + '|' + ts
            nodejs.close()
            headers = {
                'cookie': 'm='+m,
            }
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/api/match/2?page='+str(page)
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    sums += each['value']
            print(sums)
            # 總和:248974
        
        if __name__ == '__main__':
            main()


        第三題【接口-請求頭】
        第三題相對于前面兩題就簡單很多了,服務器檢驗的請求頭的三個參數【Accept-Language】【Cookie】【Referer】自行多次測試可以發現
        其中【Accept-Language】和Referer】都是固定值,就沒有什么好說的了
        主要是Cookie】里面的【sessionid
        因為有cookie的影響,依然是使用瀏覽器的無痕模式打開,并先選中【Preserve log】

        這里可以看到sessionid的值,在全局中搜索sessionid的值

        這里可以看到在http://match.yuanrenxue.com/logo中首次出現這個值,那么整個邏輯就清楚了
        首先訪問http://match.yuanrenxue.com/logo,在響應頭中取得sessionid的值,然后帶進接口請求
        下面的python請求的代碼,其中題目要求的是求出出現頻率最高的數字
        [Python] 純文本查看 復制代碼
        import requests
        import re
        from collections import Counter
        
        def main():
            Registration = []
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/logo'
                headers = {
                    'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,ko;q=0.6',
                    'Referer': 'http://match.yuanrenxue.com/match/3',
                }
                response = requests.post(url, headers=headers)
                sessionid = re.findall('(?<=sessionid=).+?(?=;)', response.headers['Set-Cookie'])[0]
                headers = {
                    'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,ko;q=0.6',
                    'Cookie': 'sessionid='+sessionid,
                    'Referer': 'http://match.yuanrenxue.com/match/3',
                }
                url = 'http://match.yuanrenxue.com/api/match/3?page='+str(page)
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    Registration.append(each['value'])
            print(Counter(Registration))
            print(Counter(Registration).most_common(1)[0][0])
            # {8717: 7, 2838: 1, 7609: 1, 6923: 1, 5325: 1, 4118: 1, 8884: 1, 2680: 1, 3721: 1, 8490: 1, 3148: 1, 6025: 1, 8526: 1, 8529: 1, 6481: 1, 9489: 1, 6599: 1, 5500: 1, 185: 1, 8498: 1, 6102: 1, 9222: 1, 2008: 1, 9827: 1, 8224: 1, 2929: 1, 3762: 1, 567: 1, 672: 1, 9524: 1, 7159: 1, 986: 1, 505: 1, 6535: 1, 9491: 1, 3612: 1, 9095: 1, 7357: 1, 9307: 1, 5650: 1, 2109: 1, 23: 1, 2110: 1, 2792: 1}
            # 最高 8717
        
        if __name__ == '__main__':
            main()


        第四題【響應-字體反爬-CSS反爬】
        第四題接口沒有設置任何反爬,直接獲取數據即可

        可以看到返回的是一個json,其中的info字段是一段html文本,格式化一下html代碼,因為比較長,只復制小部分
        [JavaScript] 純文本查看 復制代碼
        <td>
          <img
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAACy0lEQVQ4EZ1UTWgTQRSeJNtsNyXbxmZF3BWkgpocRC9NDyYn8RD04A9YKKRUiCAV8VAPimg9VEE8KaV6Cg1YgxRyEAoePGgvaS+tCLYg7Sk5yBooW9Nk003i7My83c2mFnVZeN977/vem3m7M54jR4+j/324DqHcGrtVHTn3SxF13kx6kc6rmz3zs8KzvIvsaessD9dy98sK33SxiOtXP/ePprk1O+e1oZzaWXisOpS8ruPXB4y6lPiRyxoy+Oai2CMbLyfKInMCK2/l5ImDJ0/h9/DwVLio00RTjG09T4HEEo893TpDtoiQUJjqvzzptZa3lBXij8Iqk1SHRmsxhmlnuX41VqURfbVvImvVBpAXZpYE5iiVm5coJGI5rUdZJlDIcSWQOG0m1wPNd6JJOlEivn66wnia8Mn9PaDCgn9DY1ga2CVjM8WNqLzLwiUuA+QO6/tW6mJBsXHeREQswZRVtfOnsYtsaJAVDbJNLE42QIu0n2QbNr8NzZX84NeVYQwxOdxi3wgJqvV9gPVHa9bZr1OHcI2DkdEUFkcMa9kd9P0D/9TZXQqL3YtxU2xfsUdLgm2ddSliM/dAwRYEfdo6hli87oUxNHmYO5Da7IWwAb5PW6biZUuMRDsNNIeNiiDWuBUzbi67q1hkFFE24LixiMM0ozI71vqmf85MmGJPoWQdt9rIoIPvhIP1YxL1uza+0P+UDCyTD8Bx2x5K73mBoSvpikK1evD9E4qIGOWFQpEiJCW0F3FnR4LjtTuJHYK86pLwiuWZxHN7NgQz3744vfU61bIuuliqujhdZm210Mwk0+D92lfvWLb8MEbLk8r46jStwfMN1knvnR8X7y4yDyFfb18/c1bxziOtswN1dmq5Bme+8GNooTcPgvc+WkoMHGLsfV3ozm/2KIeQFGryHJ2cX1ODKx8O3LjW/e67U4mxY9muzF+4vwHPdM7J2FS8qwAAAABJRU5ErkJggg=="
            class="img_number 6c7ac088bd56d619f1bbcc2aee9facea"
            style="left: 11px;"
          /><img
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAdCAIAAADKJrCsAAADAklEQVQ4EaWVX0hTURzHz7brzt30bqLcfNgN0kFtPZR7mgQqhASlPkx6MB98iBZICWL0IESISKZoSCBRSeKg7CHsQfNB7KF82faQ9aK9GBR3D3XFP9fadrY2u3fn/nZv2wyhy4V7fr/f9/M7v3POb2em4ydOov94mH+xXYPxy42J0zzBOJPTWYlsXY9yz+4xizEKmkrP7w3Gn/TuCDhbOv2XmtqL1lyo1PxdU7t3W/axjjKEWFQLpzGiGQ8gWMQ3jcg6TCrC887Jp+aIVi3yBtJ91/cuAI1QQf2BRPT+Fp8LE5Ef6mZfAKkjCHk9aOMzdZiN/oPHN7cpjOTq0UNgBQBYGRr5YLxZoMtj117aZ0rNbJwtNzbww62wZyI3OlGkLO3I866Uz5umKTejbKS0utib5zvTbi1q33xdrDvMA+fX5iHagcs4HFXVbbcSPYFfbj6R85sRYcUN+8KsbWzJmAt4H5/S3LJl2ZV9OL3VXkcMwizCcaE+3lOP2wNVnUEGNhfq5zm6eIRSB33TEsBWQrDyGhIRoen7Uui3S3NpfIZ3gMa1316XQqQ8POe6dKrGc+aY8taeF4beOGVNknX4d8e7qQHzA600eRIT56sbVVcGzRt5b8w00+/onXfCkhINHalcCcU8Mosr3O3VPKoP3g9wyyIA3mSfGgFTVyEuPGEymMahafRTOdgpQV2CxlskWBySmXXYXJDq39hHKwgJ79V5JO2X6aojjegvBepfjsEhOTLCkXibpG4v8JEIhsKSvuChCfx+AgdtkdUrAHgUYtckiiV9rfRsirNke87+1LwSu6C2eZ5H5kdRTot5d2ZH8jecnqVtaq9Zu17KNlfZRTWi8yjSz4VlaqfcHVsrDzJ+6FLkyQ6HtsdbYHKxcmiAnnHB/ddIVqZ+uGErEVL6X9VhDI2nGHLl837ujtZgFmdltVqH9nxj3n61NZxL8pjWn2EY9YWwmYhVE9cqxj6Ao/D+BX/XSPxqY1xQ/nnohU9sUsz+bs42GTL93VwF9QN/5O8fGRn4ilT2qk0AAAAASUVORK5CYII="
            class="img_number 6c7ac088bd56d619f1bbcc2aee9facea"
            style="left: -11px;"
          /><img
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAADUElEQVQ4EZ1UX0hTURi/u7vbmV29ztwiuwvSQOYegj2kIqXlg5DkgxQlaInCVIiepKQgMss9ZEFQUlkPIZgz+gfiopDA5cMUApMYvejTBuVVi93m3dH96d57zrl3ExVpG7vf953f7/u+c7/fOYaDh0qp//0wWxBPd0vt9WsuOwQgqSxDEBXYoD+n7z4dyYIbsis7Ey8GV2scMAuDHRqGC0Z699z+oi0a862FxOETo69+HbMniM9AaEomGeWrhNIMJ7lPmKJ+05yIIDRBUtSNwZVKLqX6ZiFQ1FRb5DyyT/nVOvom83Az3ErP4DqPSVrleulei8gqUTo8ub+qyxjB6SlKNMz5LfO8ob4Myi0wdto+a/mg7F6rfHzDjvJB6/glAzIz/wPXcoMCCsRcjcgg5DZ+HUMjzN1Mkm7TAu4FbU1eIOSQaMQwc7pCJ+xsEfLMDIgipCPeXL4Vh193laA4G8bTImRqOCcYRo5YdwtWb6anB57/dqHgIvvYjyyNTBk6e20L6kBAydLQdGzAky5TMdUe+HZ66WyJ+lJg/msvmMGpsxXGN8V911ccQHslGIUfMO+T19rp04LanNWI+J0JJZiaKkkduAZCBjv1wHpz2KCNn6IyK/Opp8PLdbqwaQqaIJUEQBOsLO/CvouWl/h8aHuWhT32kzBzFiYONNXyxYo8i4pleU5Y1VmkgEPoH1trw/okbbcNrjaXklfSVXDhGZ0lz49gfNFSczK2V9YnK7md7Pg7WsQiKY+3V0jqzswhH3dFP3T6tiN+0OqzouPBVfztUbSgtl3RKjkQDOZOeXXCJivizQnhwyVWeuSJqOQ6HseobYWN8jAL5CqxO+S3qJI5sLGpyC7cNCYLUYDRtmTbTrykw4aXYVQ+SGrlkUULjnGxBs/2bE/czaFVWogQcuSRJYQpcXeHNsbsLM7EaMcf0mFe0CdfGGjOojFclmpE0gdSTaPhMDTPf9OVeKZ7bah/2cUizdNCoPDcE5msyzN95/1yc1k8o5wZQvU+ApAUlBdpuGjrOAUCCo4oTE7z2ccKJfTR0jiBJhn50sX3LsppCQdsLefNX5GXURkHKGfq6mWpoTxm5zYAhfoEMGoKzeaOPDS9+UFgylNvOzO6S/sfNQgekSrMrRAAAAAASUVORK5CYII="
            class="img_number 6c7ac088bd56d619f1bbcc2aee9facea"
            style="left: 0px;"
          /><img
            src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAcCAIAAAABemMJAAAAyElEQVQ4EWOUVVBjoAAw4dWr8Xfm3lf3b75ZHodLGQsuCYaovs/l3h/4QPKcOBUxYOqX/p+Y8y3J+6MM+1/c2uAySPrNA38nRXyxMPjGx/APLk+IAdcf921W9VuwayFamF8/4eST+cJOwACs4fdJYHO9lNlC9p8ENAOl4faDlDL/fM13cD1XUy/TUyAPZ5iDlMIAXP9eztwbXIdOwcSJpeH6nzIeAllKKsDqfxIMGdVPQmBhUToaflgChQSh0fAjIbCwKB3o8AMADiotC5QUM1oAAAAASUVORK5CYII="
            class="img_number 6c7ac088bd56d619f1bbcc2aee9facea"
            style="left: 0px;"
          />
        </td>

        可以看到主要有三個值,一個【src】是圖片的base64編碼文本,一個【class】是圖片對應的類,一個【style】是圖片對應的樣式
        每一個src對應唯一的一個數字圖片,那么可以根據這個base64編碼的文本判斷是什么數字
        那么類和樣式有什么用呢?現在還不知道,那么在頁面對著數字審查一下元素,看看頁面的組成結構

        此時可以看到,并不是多少位數,頁面就有多少張數字圖片。其中有一些多余的,其樣式會被設置為【display: none;】,可以理解為不顯示出來的意思
        除去這個樣式的,剩下數字的數量就可以與現實數字的數量一樣了,那么怎么知道哪些是隱藏,哪些是不隱藏呢?
        通過對比發現,返回的class數值中,【mg_number】后面的數字有兩種,其中一種是全部隱藏,另外一種就是顯示的圖片,接下來就是要找怎么判斷兩種數字了
        因為要添加【display: none;】屬性,所以在全局中搜索【'display', 'none'】(備注:這里涉及一些html的知識)

        可以看到搜索到兩處都在同一個頁面,那么格式化一下這個頁面繼續查找,在下面的圖片中就可以找到我們需要的函數

        這里使用的是ajax進行異步請求,主要看其中的success回調函數
        [JavaScript] 純文本查看 復制代碼
        success: function(data) {
                                datas = data.info;
                                $('.number').text('').append(datas);
                                var j_key = '.' + hex_md5(btoa(data.key + data.value).replace(/=/g, ''));
                                $(j_key).css('display', 'none');
                                $('.img_number').removeClass().addClass('img_number')
                            }

        這里可以看到取響應體中【key】和【value】兩個字段進行base64編碼后去除等號計算md5
        如果數值相等,那么這個圖片就是一個不需要的圖片,此時數量的問題就解決了
        解決了數量問題,還有一個順序問題。請求返回的圖片順序和顯示的圖片順序并不相同,因為我們還遺漏了圖片的【style】
        可以看到其中的【style】有正數和負數,說明對排版進行了一些小小的操作
        此時根據【style】的數值,對圖片進行重新排序即可(備注:這里涉及一些html的知識)
        到這里的時候,已經把數量和順序的問題都解決了,下面編寫代碼請求,并還原數值
        [Python] 純文本查看 復制代碼
        import requests
        import hashlib
        import base64
        import re
        
        def main():
            numbers = {
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAACy0lEQVQ4EZ1UTWgTQRSeJNtsNyXbxmZF3BWkgpocRC9NDyYn8RD04A9YKKRUiCAV8VAPimg9VEE8KaV6Cg1YgxRyEAoePGgvaS+tCLYg7Sk5yBooW9Nk003i7My83c2mFnVZeN977/vem3m7M54jR4+j/324DqHcGrtVHTn3SxF13kx6kc6rmz3zs8KzvIvsaessD9dy98sK33SxiOtXP/ePprk1O+e1oZzaWXisOpS8ruPXB4y6lPiRyxoy+Oai2CMbLyfKInMCK2/l5ImDJ0/h9/DwVLio00RTjG09T4HEEo893TpDtoiQUJjqvzzptZa3lBXij8Iqk1SHRmsxhmlnuX41VqURfbVvImvVBpAXZpYE5iiVm5coJGI5rUdZJlDIcSWQOG0m1wPNd6JJOlEivn66wnia8Mn9PaDCgn9DY1ga2CVjM8WNqLzLwiUuA+QO6/tW6mJBsXHeREQswZRVtfOnsYtsaJAVDbJNLE42QIu0n2QbNr8NzZX84NeVYQwxOdxi3wgJqvV9gPVHa9bZr1OHcI2DkdEUFkcMa9kd9P0D/9TZXQqL3YtxU2xfsUdLgm2ddSliM/dAwRYEfdo6hli87oUxNHmYO5Da7IWwAb5PW6biZUuMRDsNNIeNiiDWuBUzbi67q1hkFFE24LixiMM0ozI71vqmf85MmGJPoWQdt9rIoIPvhIP1YxL1uza+0P+UDCyTD8Bx2x5K73mBoSvpikK1evD9E4qIGOWFQpEiJCW0F3FnR4LjtTuJHYK86pLwiuWZxHN7NgQz3744vfU61bIuuliqujhdZm210Mwk0+D92lfvWLb8MEbLk8r46jStwfMN1knvnR8X7y4yDyFfb18/c1bxziOtswN1dmq5Bme+8GNooTcPgvc+WkoMHGLsfV3ozm/2KIeQFGryHJ2cX1ODKx8O3LjW/e67U4mxY9muzF+4vwHPdM7J2FS8qwAAAABJRU5ErkJggg==': '0',
                'iVBORw0KGgoAAAANSUhEUgAAABUAAAAcCAIAAAABemMJAAAAyElEQVQ4EWOUVVBjoAAw4dWr8Xfm3lf3b75ZHodLGQsuCYaovs/l3h/4QPKcOBUxYOqX/p+Y8y3J+6MM+1/c2uAySPrNA38nRXyxMPjGx/APLk+IAdcf921W9VuwayFamF8/4eST+cJOwACs4fdJYHO9lNlC9p8ENAOl4faDlDL/fM13cD1XUy/TUyAPZ5iDlMIAXP9eztwbXIdOwcSJpeH6nzIeAllKKsDqfxIMGdVPQmBhUToaflgChQSh0fAjIbCwKB3o8AMADiotC5QUM1oAAAAASUVORK5CYII=': '1',
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAACO0lEQVQ4EWOUVVBjIBewoGqU/p+Y8z3a9puM6E92hn9gObafn9iuXeBe08u27AaqYgZGhM12Vd9aI97LsEP0oKkDcjnubhWOL2J6ipCBaU6c+q7c5Ss7QoL9508g5z87+y+EGAPTp5PiXnEsMP1MUCktJYhO5k/3RKZXyCqqi2noAZG4opNM01aBT1BV//jM308uhpsG0wwS+MS/uV5K35Ozaz1cmoHhKeP8Il6vVmGY/h+GLj+lofIwzT+fCDcF8OWtQNKGxHy6iGv6BQ6ogNKvJDTNNalc82FeQdKFYM64CNPM8EfGDCIOsxmhChfrCTPM5X/5lEjVrPmHD2ou2xOo74i2OUMJFHUg8InlGoTBQKRm6V++mj+gWp6yzCdJc8vU91rQBMR5Yh0bVC8xNicuehOtCU1nP6/zlSyC6WVAyxhwcQhD+l/L1LfRcAd/Eu7MZkOKUNyapb1+T656bSj6F2rga+GmcLS0gEOzT8OX1sj3sLhhAqW/OI5lSJaCTcTUjOZULDkR7jc0zba/17UjO1VoXht38za4ajQGsmbbX1v7XmvxQQoD5tcXREvCWQ+hqUfhwjVL/1mO0Ml1fqFQUBsjikosHJjmxPYPFlA7OU+0CkciIhOLJpgQJHma/Ugy/w4WYn2ylUidQOVgzebx32Ugpv3k3VxE0LUwiyGa3aRhOeY180G4FGEG2M+ivL+hKmVer7hJWBMDA/8adb5SsM1/RWFJiRh9SGogAYYkQAoTVuiTogeuFgCpiqrSY0PgFgAAAABJRU5ErkJggg==': '2',
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAACpElEQVQ4EWOUVVBjIBewoGiUNvtbkPPNXvM7H99PdojMT/ZPr7lPbONs6mV6iqIWyGGE2/y/dtGHaPMvUD3o6ph+PhGckM014wayBDO/gDCY3/55oetnmDvYfv5k+fuX5S/LfxaG/2Dp/yx83228WT9tY73wGa6fCc4CMz4J7Jol7aUurqEnBkLq0hGtonc/MUMV8b0t7/uDpAGhmfH1SUkvU970XqbrSPInF3G4BIid/wkVYjf4XouQhTv7Bvu2RUz3EBJIrM9MX43+esn/Bgsx/vzEtfYiRBZu81MGjMBE6N9ygx1mN0KQgQGuGVkQk/2akXzN0ga/+KAmsj1ZBDebKJv/1+l/heq4zjEBrpcYZ2cseusm8w+shWdXLxtS0MCSBcI4GMvc+a+990832w/KfH/BYlwnegTTD8OkQTSq5u7tj0OUkKUhbJZP9wQ7CzmWoaRNoBRhPzP9fM355DUjOyzEkMxG1fzzJzsSgqTKf+yin7XMX9UtfnZx+88oaSS9SLkKWRTGlv4fHPEjKfCzligsml8LN4VzzYcGGiJLwjRgoxNnvyu3+wrOrUyvD0mapUIcjOpsbBpBYvNTBQ8+gSj9J2r+vQyqjjjNwEKj6SI3VAv7d8MICJNYzQxPfyIpZSNRszQ7JJEBtTH9fIOsWZoBJQogUijk/3J48v7JfmIbsuacz+tX/vbBbYBP32dY8mb4dIFjBtRcqEf+ixq8mLz9/br2P3YaKDZqBv6euf3NZO+PsJJYaGklrEhDSdvsXwyDviwMYmL4yQpNE+y/2RngXmVg+Mm/Jpu7C5GtIDafYkcUkUDV7D/ZIQihk/nTPdHqML5SlFyFlMKCi3+EuHzTkv7Nx/4L5nT2n59Y717nWjOFff4pmBiCRtKMECSWBQDfGNuYxLjW9gAAAABJRU5ErkJggg==': '3',
                'iVBORw0KGgoAAAANSUhEUgAAABUAAAAbCAIAAAAcf1OxAAABhElEQVQ4EWOUVVBjIAhqN7xM0vwFVsZ5olUkchFcBxOchZsR+M0XqhlTDWH9/7vTPoliaoSKENIvXfzNV+k3Tu0MBPT/7Yn4wI5bNwN+/XZTP1nw/QNq//ma+xN2U/DYb/uz1eULWBfPwW0c2LXjtv9/d9UHGZAmpteH+NOf4NCOS795+2dfJXCEfxKc3oDHkVilzH61en8EBxvH+RVc85/ishzkOky5/92N75XBun9e58/txVSALIKh3w7u8p/8m9vY8NkNMgdNv+2P1iCIy9nubuUtPYVsFVY2sn7pP8v73oLDnOHndcH4SkasOlAFkfQntn+ApBaGT8Kd2QRdDjEHpt+u/VO5+XewGOeJyfjDHNkFYP3Scd8mQ73N+mSrMFL2RlaKlQ3Ub/tzYclbPrDsz3uC1UXEeBthlmzjCc7//xnIQpzHW2D+RxhIGouF4edP5p8/8eZxkIl/2dn/gE1mYvjJ+hNqB/PPX4xElZ8Mcd8uVkPCiIzyE2obVopS/w91/QDSPZdPKmG8AQAAAABJRU5ErkJggg==': '4',
                'iVBORw0KGgoAAAANSUhEUgAAABUAAAAcCAIAAAABemMJAAAB+ElEQVQ4EWOUVVBjoACwIOv9uefmK2VkAWzsTyel9OOYYTJMMAaQ9vrHh8QjjomsX+Q/O3GakFShuB8m/km4yZRrPoyHl0a2X/MPZe6HW/SJeRecTYCBZH+U9C+o4l8MTwlog0sj6UcE3k9GuDwhBpJ+UfZ/ENWfPsGjl5B2BmT9fD8JKsdQgKQfLvfpDfH2I+L/r4wI1AQZ76f3vaF+YWBg//mJ9e51rjVT2OefglsBZ2Czn4EBrhmo7ic73xct81d1i59d3P4zShquE8JA6P/LB009LD9/soMQmkqGv3xKr1o3fEtEMYKRQP61S/2VFPTJXuk73LSf98TjPdlOQvnM/ALCcCksjIfnmDcs5dr1k9XN+Ds3OLBYBP+LPuXacAOiGOF+LJrhQtdnc+Vu5YdxvxkG/oWxidMPVH2ykus8LEj4RP+QrJ+BgeXJa5guBE20/QwMWEsXEvT/lpGB2vsTkUGI1m/X900Lqh2YHOHJljj90nHfe1w+w2zn3dwAZTIg8p/Gfx9buCiCIW32t3vl+73Vb0ShxQPbtRXcMxDy8PTX/ul+0EeQOErK/cPODo9qoBzb3a2i8UVMSKUT3CNwI9l/IgoiuCDIXJ6DkwUTZiMLAdlw/ac4Tmj+1VL6zc6AbCfzz59sn55yndjDMb2X6TqaXhAXAA8XiW6ahRdHAAAAAElFTkSuQmCC': '5',
                'iVBORw0KGgoAAAANSUhEUgAAABUAAAAdCAIAAADKJrCsAAADAklEQVQ4EaWVX0hTURzHz7brzt30bqLcfNgN0kFtPZR7mgQqhASlPkx6MB98iBZICWL0IESISKZoSCBRSeKg7CHsQfNB7KF82faQ9aK9GBR3D3XFP9fadrY2u3fn/nZv2wyhy4V7fr/f9/M7v3POb2em4ydOov94mH+xXYPxy42J0zzBOJPTWYlsXY9yz+4xizEKmkrP7w3Gn/TuCDhbOv2XmtqL1lyo1PxdU7t3W/axjjKEWFQLpzGiGQ8gWMQ3jcg6TCrC887Jp+aIVi3yBtJ91/cuAI1QQf2BRPT+Fp8LE5Ef6mZfAKkjCHk9aOMzdZiN/oPHN7cpjOTq0UNgBQBYGRr5YLxZoMtj117aZ0rNbJwtNzbww62wZyI3OlGkLO3I866Uz5umKTejbKS0utib5zvTbi1q33xdrDvMA+fX5iHagcs4HFXVbbcSPYFfbj6R85sRYcUN+8KsbWzJmAt4H5/S3LJl2ZV9OL3VXkcMwizCcaE+3lOP2wNVnUEGNhfq5zm6eIRSB33TEsBWQrDyGhIRoen7Uui3S3NpfIZ3gMa1316XQqQ8POe6dKrGc+aY8taeF4beOGVNknX4d8e7qQHzA600eRIT56sbVVcGzRt5b8w00+/onXfCkhINHalcCcU8Mosr3O3VPKoP3g9wyyIA3mSfGgFTVyEuPGEymMahafRTOdgpQV2CxlskWBySmXXYXJDq39hHKwgJ79V5JO2X6aojjegvBepfjsEhOTLCkXibpG4v8JEIhsKSvuChCfx+AgdtkdUrAHgUYtckiiV9rfRsirNke87+1LwSu6C2eZ5H5kdRTot5d2ZH8jecnqVtaq9Zu17KNlfZRTWi8yjSz4VlaqfcHVsrDzJ+6FLkyQ6HtsdbYHKxcmiAnnHB/ddIVqZ+uGErEVL6X9VhDI2nGHLl837ujtZgFmdltVqH9nxj3n61NZxL8pjWn2EY9YWwmYhVE9cqxj6Ao/D+BX/XSPxqY1xQ/nnohU9sUsz+bs42GTL93VwF9QN/5O8fGRn4ilT2qk0AAAAASUVORK5CYII=': '6',
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAIAAACjcKk8AAABuklEQVQ4EWOUVVBjIBcwkasRpI8FrDnu28Xqt3ykmcO/Rp0im8nWfI99DQMjKQEW+P1UxxtRkO+4D1YIJawnweb/3WkfwToZfl7gq14PNIJozdLF33yVfoPDlH9zL8tTEItYzf/rvD6wg7W+PsRTegrMIlKzdNUXe5l/YB0CuxrgFsIZELOwk/9aEdZy14BdDFZIhGbphq/2kIBiQLYWqJ2w5n+tLh8gDnp9CNlaIjRLV321gFrLe2I2mlVoXIgVCPJ/ufMnSCD/vMCTBw1kuDR+zXHfYYHMdWIFJA/BdQIZeDW3BH2CZrUn3NNBSQoN4NFs9sNeE5KkWK8d5jiJphHExa3ZPOKHDFQD9/nZWLTi0fwv0+wzRMfPC5xICQPZFFw2B/7QgsYQ+7VTmEEFMQKH5sTAb1C9P7lP9CLbhszGrvmvm+Z3iKqf19m7kNWjsLFq9vqlDI0i1rsXcbkZaAw2zebeP6BuZuC4uxDFLlQONs0hSt+gil6z70JkQFSNIB4WzX+UpSH5nuHnU9YtmFoQIpiavX7LQLICA8PrN8wIlVhYmJoN/sA8zP76HiMWLQghkspthDYICwBClnHZDNYAMQAAAABJRU5ErkJggg==': '7',
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAIAAAAl5NuSAAADUElEQVQ4EZ1UX0hTURi/u7vbmV29ztwiuwvSQOYegj2kIqXlg5DkgxQlaInCVIiepKQgMss9ZEFQUlkPIZgz+gfiopDA5cMUApMYvejTBuVVi93m3dH96d57zrl3ExVpG7vf953f7/u+c7/fOYaDh0qp//0wWxBPd0vt9WsuOwQgqSxDEBXYoD+n7z4dyYIbsis7Ey8GV2scMAuDHRqGC0Z699z+oi0a862FxOETo69+HbMniM9AaEomGeWrhNIMJ7lPmKJ+05yIIDRBUtSNwZVKLqX6ZiFQ1FRb5DyyT/nVOvom83Az3ErP4DqPSVrleulei8gqUTo8ub+qyxjB6SlKNMz5LfO8ob4Myi0wdto+a/mg7F6rfHzDjvJB6/glAzIz/wPXcoMCCsRcjcgg5DZ+HUMjzN1Mkm7TAu4FbU1eIOSQaMQwc7pCJ+xsEfLMDIgipCPeXL4Vh193laA4G8bTImRqOCcYRo5YdwtWb6anB57/dqHgIvvYjyyNTBk6e20L6kBAydLQdGzAky5TMdUe+HZ66WyJ+lJg/msvmMGpsxXGN8V911ccQHslGIUfMO+T19rp04LanNWI+J0JJZiaKkkduAZCBjv1wHpz2KCNn6IyK/Opp8PLdbqwaQqaIJUEQBOsLO/CvouWl/h8aHuWhT32kzBzFiYONNXyxYo8i4pleU5Y1VmkgEPoH1trw/okbbcNrjaXklfSVXDhGZ0lz49gfNFSczK2V9YnK7md7Pg7WsQiKY+3V0jqzswhH3dFP3T6tiN+0OqzouPBVfztUbSgtl3RKjkQDOZOeXXCJivizQnhwyVWeuSJqOQ6HseobYWN8jAL5CqxO+S3qJI5sLGpyC7cNCYLUYDRtmTbTrykw4aXYVQ+SGrlkUULjnGxBs/2bE/czaFVWogQcuSRJYQpcXeHNsbsLM7EaMcf0mFe0CdfGGjOojFclmpE0gdSTaPhMDTPf9OVeKZ7bah/2cUizdNCoPDcE5msyzN95/1yc1k8o5wZQvU+ApAUlBdpuGjrOAUCCo4oTE7z2ccKJfTR0jiBJhn50sX3LsppCQdsLefNX5GXURkHKGfq6mWpoTxm5zYAhfoEMGoKzeaOPDS9+UFgylNvOzO6S/sfNQgekSrMrRAAAAAASUVORK5CYII=': '8',
                'iVBORw0KGgoAAAANSUhEUgAAABQAAAAcCAIAAADuuAg3AAAC9klEQVQ4EZVUTUwTQRSeblvG1rYW6KKwJVZMEDgYPFB6kaMHwEQSDyZGkChejAlKRY1eROJBrDFBYjAEYhNCPGCIP3DQi3CBJoYQEspBenE5yJ9hwZah7dbZnZl1t9QE2snOe99837w3f89U6isHWb/KpmT7pe1A5a4L7qpDFiQdWog4B59aPi3ruSajWJC7+zYuVyb0lH82cnx7nn81rAHmI+5C5gipkXe/6o+TaBjkAMpDaYvyJxTLrq8uGZDso3PE55gSZHoG1gN8WvU5KcZ3XRFOnC6qwO1UaXCkYJUSE4Fb8VaBOFrabX8WgxtQBVH0WNMFa5SyaSc0x8cfrrsUj1udLPa34bAscnfDFlEC5B6+ma3EiuWw/eWMTZ1J5qt3WtVZVBekqsqSxEJR2xPDlhJY+Q69cojEc8XPNWOLRPaneBoXiDG6O4Rm+EasokSAhLc2w8QVsroYAzOXYxbXKMx78NayNWtUyFLQkJwGdGnisJmdBOCFVE62Cqa9HjbolBtZZKvI1LA63uNnDGMvdOyc0ZYHMzwTc68jTsbcPP8YNdJrwDDcn0VvW+hFYChb80zIMS1RB5at9I5t9Xek6yoUmuCXO/u25gZWTirbYaVKZMK54ofB2rWiHzsgk/l/2yz8MG2jhKUiXzmLrMw3BVvuH12QzHTurE7KH75jn9VAZMo+quXxvIaakuAbz2zssIQgUpsk5k+/L6mvcTyaAlU8fa2SEiPXdRoN2XDTYugM7ais4iIW69PWsXKb/qSXHhUUv2LKQcS1LQkvmVW0DUYOJk63+7dVLSfOwRnF2nfk1vDvAMkZuT+G8FYbxcLeW6VS8KfxhXSvluxz3tJn+zP64HWR2wdWImOJziamUHtchvsn1nobNsljQzF31wMSFg9rNQyAnomfF8uIEp+wasAkBDKB8ApRzBO8DnWlO9c5A4D2vGooThbcaLMYq6Kubn/57oS8tdgjQ8gKNYBIss1PFYRuu+4OcayKsFT0aWvYvo2/Mt8Dn3GoSZ0AAAAASUVORK5CYII=': '9'
            }
            sums = 0
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/api/match/4?page='+str(page)
                response = requests.get(url)
                response = response.json()
                j_key = hashlib.md5(base64.b64encode((response['key']+response['value']).encode()).replace(b'=', b'')).hexdigest()
                tds = re.findall('(?<=<td>).+?(?=</td>)', response['info'])
                for td in tds:
                    imgs = re.findall('(?<=<img).+?(?=>)', td)
                    outnumber = ['', '', '', '', '']
                    i = 0
                    for img in imgs:
                        number = re.findall('(?<=data:image/png;base64,).+?(?=")', img)[0]
                        imgclass = re.findall('(?<=img_number ).+?(?=")', img)[0]
                        imgstyle = int(int(re.findall('(?<=style="left:).+?(?=px")', img)[0]) / 11)
                        if imgclass != j_key:
                            outnumber[i + imgstyle] = numbers[number]
                            i += 1
                    outnumber = int(''.join(list(filter(lambda n: n, outnumber))))
                    sums += outnumber
            print(sums)
            # 總數:243701
        
        if __name__ == '__main__':
            main()


        第五題【接口-查詢參數-值加密】【接口-請求頭-值加密】
        這題還是和cookie有關,那么依舊使用瀏覽器的無痕模式打開,并先選中【Preserve log】
        查看其接口的請求內容

        可以看到cookie有m參數和RM4hZBv0dDon443M參數兩個加密參數,已經查詢參數m和f,看起來有點像兩個時間戳
        首先從識別度比較高的RM4hZBv0dDon443M參數開始,在全局中搜索RM4hZBv0dDon443M參數,這里就不貼圖了,因為發現啥也么有
        那么此時比較值得分析的就是主頁,格式化一下代碼

        這里可以發現有一段混淆的代碼,復制出來使用之前用過的ob混淆專解測試版V0.1進行反混淆
        [JavaScript] 純文本查看 復制代碼
        function _$KS() {
          V();
        
          if (eval["toString"]() === "function eval() { [native code] }") {
            if ($_zw["length"] === 25) {
              $_ow = "";
        
              for (var h = 0; h < window["$$$"]["length"]; h++) {
                $_ow += String["fromCharCode"](window["$$$"][h]["charCodeAt"]() - ($_zw["length"] + 1) * 3 - parseInt(h["toString"]()["slice"](0, 1)) * 2);
              }
        
              eval($_ow);
            } else {
              $_ow = "";
        
              for (var h = 0; h < window["$$$"]["length"]; h++) {
                $_ow += String["fromCharCode"](window["$$$"][h]["charCodeAt"]() - 78 - parseInt(h["toString"]()["slice"](0, 1)) * 2);
              }
        
              eval($_ow);
            }
          } else {
            $_ow = "";
        
            for (var h = 0; h < window["$$$"]["length"]; h++) {
              $_ow += String["fromCharCode"](window["$$$"][h]["charCodeAt"]() - 2331 - parseInt(h["toString"]()["slice"](0, 1)) * 2);
            }
        
            eval($_ow);
          }
        }
        
        _$KS();

        這里就和第一題有點像,代碼是在eval函數里面的,此時我們就要拿到解密后的代碼,在三個eval前面都點一下,飯后刷新頁面

        此時成功斷下,如果不行的話就重新開一個無痕模式重復上面步驟
        然后在控制臺分別輸入【eval["toString"]()】和【$_zw["length"]】


        可以得出函數最后運行的是這段代碼,然后在控制臺輸入
        [JavaScript] 純文本查看 復制代碼
              $_ow = "";
        
              for (var h = 0; h < window["$$$"]["length"]; h++) {
                $_ow += String["fromCharCode"](window["$$$"][h]["charCodeAt"]() - 78 - parseInt(h["toString"]()["slice"](0, 1)) * 2);
              }


        此時可以得到解密后的js代碼,復制出來格式化一下

        此時就可以搜索到我們需要的RM4hZBv0dDon443M變量
        這里網站給我們留下了一條路,我們發現在控制臺會不斷的打印【世上無難事,只要肯放棄】
        而在我們解密后的js中也可以搜索到這段字符串,也就是說這段字符串是在我們解密后的代碼里面執行打印的,此時只要點擊右邊的鏈接就可以進入到代碼塊了


        找到我們需要的RM4hZBv0dDon443M變量,然后設置斷點,并刷新,就可以成功斷下

        此時我們看到【_$8K['_$ss']】還是【undefined】,那么就繼續執行,直到不為【undefined】的時候,此時RM4hZBv0dDon443M的值已經加密完成
        此時我們在代碼中搜索【_$ss】的話,又是啥也沒有搜索到,那就轉為搜索【_$8K[】,發現有61個結果,還行,不算很多,都過一遍,查找可能與【_$ss】有關的,跳過賦值的操作,只看被賦值的操作

        可以找到1207行就是【_$8K['_$ss']】被賦值的操作,繼續下斷點,然后刷新

        再次斷下后可以看到【_$8K['_$ss']】是前面加密的結果,加密的算法使用的是AES/ECB/Pkcs7,,然后在控制臺輸入【_$8K[_$pe('0x6', 'OCbs')].toString()】來獲取加解密的key

        將16進制轉換為2進制可以發現是一段字符串,并且像是base64編碼的,那么再將它進行base64解碼

        可以看到最終得到的是一個類似與時間截的東西,經過對比發現其實這就是查詢參數中的m參數去掉最后一位
        因為AES是對稱加密,所以可以用得到的key來看看加密前的內容是什么
        [Python] 純文本查看 復制代碼
        from Crypto.Cipher import AES
        from Crypto.Util.Padding import unpad
        _ss = 'X+B1D1B6iiwDOZVNuWwP3wjJ3DfyVTh1+mvR8dZicNoQ4+tfI4QQ2Qpbe2IU4xXfYQMzGBT5qP4uR6lEUtY8kbmCITQJ7CkIum8vf5VxuEWy6nujLSXDlI/scpSr/J3/TrmXvzYFnqAziOoUBq7hGLXC6RLJhLi1MNyVV3HDKlUkwbFQ/iFusspgWs/tTdZkg1qkg95k5BW+/mgfiZSPNLms5aekP+IdTpdJM3Y2948='
        cryptor = AES.new(key='MTYwMzI5MTg1NTU4'.encode(), mode=AES.MODE_ECB)
        print(unpad(cryptor.decrypt(base64.b64decode(_ss.encode())), AES.block_size).decode())
        # 6e6c4989f57580aa4a1ba51fe6901ed2,788d57895ac6376da4ea4cf54875e6ce,90aa7ce116c6c55311eccc1ddf868adb,90aa7ce116c6c55311eccc1ddf868adb,be4d9d6c4119c22212430ea3ba4947de

        可以看到是由5段字符串用逗號拼接后組成的,接著搜索【'_$pr'】,看看這些字符串是什么時候被加入進去的

        因為【_$8K['_$pr']】是一個數組,那么主要看它的【push】方法,在這個方法的地方都下一個端點,其中可以發現都是調用的b函數
        經過對比發現,第一次調用b函數的參數就是查詢參數中的f參數,其他三個都是比第一個大的數即可,第五次調用b函數的參數就是查詢參數中的m參數

        那么就下來就只能下b函數的問題了,重新刷新頁面,再次斷下的時候,進入b函數看一下,然后將b函數以及它調用到的函數都復制出來

        后面發現前面四次和最后一次里面的參數有少許的變化,需要分別修改,分別保存為0501.js和0502.js
        [JavaScript] 純文本查看 復制代碼
        var _$8K = {};
        
        var _$ev = [], _$Uy = String.fromCharCode;
        function _$HY(_$5X) {
                var _$HY = _$Uy(96);
                _$ev = _$Ch(_$5X).split(_$HY)
        }
        function _$Ch(_$5X) {
                var _$HY = _$5X.length;
                var _$o4, _$_Z = new Array(_$HY - 1), _$KJ = _$5X.charCodeAt(0) - 97;
                for (var _$Q_ = 0, _$TO = 1; _$TO < _$HY; ++_$TO) {
                        _$o4 = _$5X.charCodeAt(_$TO);
                        if (_$o4 >= 40 && _$o4 < 92) {
                                _$o4 += _$KJ;
                                if (_$o4 >= 92)
                                        _$o4 = _$o4 - 52
                        } else if (_$o4 >= 97 && _$o4 < 127) {
                                _$o4 += _$KJ;
                                if (_$o4 >= 127)
                                        _$o4 = _$o4 - 30
                        }
                        _$_Z[_$Q_++] = _$o4
                }
                return _$Uy.apply(null, _$_Z)
        }
                
        _$HY('o~q}u`euf3ffdyrgfu`fkbu`xduv`wuf3ffdyrgfu`qsfya~`sq||`efdy~w`bdafafkbu`e|ysu`$_vb~W`eb|ysu`qbb|k`3sfyhuJArzusf`dueg|f`sxqd5atu3f`rgffa~`eu~t`vad}`ratk`}ageu}ahu`xqeAi~Bdabudfk`xaef~q}u`|asqfya~`abu~`eb|yf`euf;~fudhq|`xffbe,`s|ys{`sa~sqf`}ufxat`faEfdy~w`~atuFkbu`adywy~`v|aad`badf`$_~t`:F?>9u~udys7|u}u~f`fqw@q}u`saa{yu`$_<C~x`exai?atq|6yq|aw`du}ahu5xy|t`{uk5atu`bqdu~f@atu`wufFy}u`duqtkEfqfu`ujus`bqfx~q}u`euqdsx`fuef`yvdq}u`eufFy}uagf`:F?>8ad}7|u}u~f`hyeyry|yfk`qbbu~t5xy|t`qtt7hu~f>yefu~ud`y~tujut64`esdybf`a~duqtkefqfusxq~wu`uhq|`y~~ud:F?>`hq|gu`7{sB`|asq|Efadqwu`a~egr}yf`arzusf`bdafasa|`sa~fu~f`s|a~u@atu`y~tujAv`qeeyw~`idyfu`tasg}u~f`du}ahu7hu~f>yefu~ud`dag~t`efk|u`$_hh5;`dub|qsu`vg~sfya~`?ysda?ueeu~wud`geud3wu~f`ixy|u`a~s|ys{`y~bgf`suy|`?qfx`xyttu~`fqdwuf`|aqt`}rezmkexsv`~g}rud`sduqfu7|u}u~f`wuf7|u}u~fe4kFqw@q}u`wuf7|u}u~f4k;t`qffqsx7hu~f`$_vxV`s|yu~f6qfq`egr}yf`fy}uEfq}b`va~fe`A~|k a~u hqdyqr|u tus|qdqfya~ q||aiut y~ vadTTy~ |aab`fdq~eyu~f`qdyfk`tyeqr|ut`fkbuav`sxqdeuf`egbud`|u~wfx`#v*X`?ej}|XTJ?>:FFBTYTV`fa6qfqGD>`asd_dtkfigDsddqqmujgnh`qbb|ysqfya~5qsxu`}g|fybqdfUvad}Stqfq`hqd wuf3ffdyrgfu/vg~sfya~N~q}uOmdufgd~ sgd_u|uTwuf3ffdyrgfuN~q}uO-o-`qffdyrgfue`Marzusf 3ddqk]`bgex@afyvysqfya~`hayt`F=_EFD;@9`VVVV`qffdHudfuj`bgr|ys`efabBdabqwqfya~`l_,zcze~ld_VQR_+zxfiyzi9_jzcze~ld9xvcc,zcze~ld`$_vV`xqex`su||g|qd`8EE44`qssu|udqfya~`fdq~evud5xq~~u|`~7hdo5od|hu`fdgu`sduqfuArzusfEfadu`?ej}|XTJ?>:FFBT[TV`du}ahu3ffdyrgfu`b|gwy~e`o__vf{jwf_wjs~ishw6__kwtvf{jwf_wjs~ishw6__gw~wb{ia_wjs~ishw6__xlvf{jwf_wjs~ishw6__vf{jwf_ibkfsddwv6__kwtvf{jwf_ibkfsddwv6__gw~wb{ia_ibkfsddwv6__xlvf{jwf_ibkfsddwv6__kwtvf{jwf_guf{dh_xibu6__kwtvf{jwf_guf{dh_xb`fdkmdufgd~ Niy~tai y~efq~suav Iy~taiO-osqfsxNuOmo`?ej}|XTEudhudJ?>:FFB`sa|ad6ubfx`fWY/ebisbqf~|N3f}bq|k ,|~efkb 4kfNVllig|wwN5boa|k|N[bisbqf~| -brb +3 /ol FH 3efkNq|elj|N+Z 2j|oq_[ qbpq 1bdri|oNW(-/ol@ifdeqN[bisbqf~| +3 GF +fdeq XuqbkabaN[bisb,_(kaf|N2XV1l}lql+fdeq UliaN.1 ,le|kqv 4kf~lab 1bdri|oNWolfa 2|kp 3e|fN*|kk|a| 2|kd|j ,-NWWV 4~ebkN~il~hECDI_sDADN2|jprkd*|kk|a|1bdri|oN,( +T-3(-Z UliaN2|jprkd2|kp-rjF+ +fdeqNsboa|k|N[bisbqf~|-brb3efkN2XVY|ii}|~hN2|jprkdXjlgfN3birdr 2|kd|j ,-NV|oolfp Zlqef~ 2VNYivjb +fdeq 1l}lql +fdeqN2l,T@Wfdfq +fdeqN2l,V 2|kp 1bdri|oN[87f8r|k)NppqNp|jprkd@p|kp@krjG3Ndj_jbkdjbkdN+lefq *|kk|a|Nqfjbp kbt olj|kNp|jprkd@p|kp@krjG+Npbofc@jlklpm|~bN2|jprkd2|kp-rj@F3 3efkNVlilo.24(@73efkNWolfa -|phe 2efcq TiqN2|jprkd3birdr1bdri|oNUbkd|if .32N,( +|k3fkd_ZU .rqpfab 82NY9,f|l6r_ZUDKCFCNebisb@kbrb@obdri|oN223 ,bafrjNVlrofbo -btN*ejbo ,lkarihfof UliaN[bisbqf~| +3 EF 4iqo| +fdeq XuqbkabaN[bisbqf~| +3 EH 4iqo| +fdeqN1l}lql ,bafrjNWolfa 2|kp UliaNdlravNp|kp@pbofc@~lkabkpba@ifdeqN2YfkaboNklql@p|kp@~gh@jbafrjNjfrfN,1l~hv /1V UliaNTkaolfaVil~h 1bdri|oN2|jprkd2|kp-rj@G+ +fdeqNp|kp@pbofc@qefkNT|/|kd8|boN~|pr|iNU- ,le|kqv.3 UliaNu@ppqN-lql2|kp,v|kj|o9|tdvfN[bisbqf~| +3 FF 3efk XuqbkabaNTpeibv2~ofmq,3 TiqN-lql 2|kp Wbs|k|d|of 4(N1l}lql Vlkabkpba UliaN1l}lql ,bafrj (q|if~NjfrfbuN-lql 2|kp Zrojrhef 4(N223 5fbqk|jbpb +fdeqN+Z_.ofv|Nev~lccbbNu@ppq@riqo|ifdeqNWY[[url=mailto:bfT6J@TNY9967U3.3_4kf]bfT6J@TNY9967U3.3_4kf[/url]~labNWbs|k|d|of 2|kd|j ,- UliaNp|kp@pbofc@jlklpm|~bN/|a|rh Ullh UliaN+Z@Y98fkdUf*|f2er@2DH@5EAEN+Z@Y98fkdUf*|f2er@2DH@5EAFN[bisbqf~|-brb+3 /ol FH 3eN,f~olplcq [fj|i|v|N2|jprkd2|kpY|ii}|~hN223 ,bafrj (q|if~NTkaolfaXjlgfN2|jprkd2|kp-rj@F1N(3V 2qlkb 2bofcNp|kp@pbofc@pj|ii~|mpNu@ppq@jbafrjN+Z_2fke|ibpbN1l}lql 3efk (q|if~N~bkqrov@dlqef~NVil~hlmf|N+rjfklrp_2|kpNYilofaf|k 2~ofmq TiqN-lql 2|kp Zrojrhef UliaN+3[829* UliaNZ2_3e|fN2|jprkd-bl-rj_F3_ENTo|}f~Ne|kp@p|kp@kloj|iN+lefq 3birdrN[80f[bf@HC2 +fdeqN+fkapbv clo 2|jprkdNT1 Vovpq|iebf WUN2|jprkd 2|kp ,bafrjNp|jprkd@p|kp@krjGHNe|kp@p|kp@}liaN+rjfklrp_2~ofmqN223 VlkabkpbaN2|jprkdWbs|k|d|of1bdri|oNTkg|i ,|i|v|i|j ,-N2|jprkd3e|f;qbpq<NY9+|k3fkd[bf@,@ZUDKCFCN[b}obt .32NZ2GH_To|};Tkaolfa.2<N2|jprkd 2|kp +fdeqNVel~l ~llhvNebisb@kbrb@qefkN/- ,le|kqv.3 ,bafrjN+Z@Y9*|3lkd@,DL@5EAGNWolfa 2bofcN2|jprkd2fke|i|1bdri|oNebisbqf~|N+Z@Y9*|3lkd@,DL@5EAEN-lql 2|kp Wbs|k|d|of 4( UliaN223 +fdeqNWY/XjlgfNtb|qeboclkqkbt 1bdri|oN1l}lql-rjF1NW(-/ol@jbafrjN2|jprkd 2|kp -rjHHN223 [b|sv (q|if~N+Zil~hG 1bdri|o_CKCHNZblodf|Nklql@p|kp@~ghN3birdr 2|kd|j ,- UliaN,(4( X7 -loj|iN[80f[bf@JH2 UliaN-lql2|kp,v|kj|o9|tdvf UliaNvrklpmol@}i|~hNebisb@kbrb@kloj|iN+rjfklrp_2bofcN3, ,le|kqv.3 -loj|iN2|jprkd2|kp-rj@F+s +fdeqN2|jprkd 2|kp -rjGHN2j|oqZlqef~ ,bafrjNdblodf|N~|pr|i@clkq@qvmbN2|jprkd 2|kp UliaNpj|ii@~|mfq|ipN,Yfk|k~b /1V UliaNY9+|k3fkd[bf_ZUDKCFCN2|jprkdTojbkf|kN1l}lql UliaN~bkqrov@dlqef~@}liaNu@ppq@eb|svN223 +fdeq (q|if~N3e|o+lkNu@ppq@ifdeqNWfk}li 1bdri|oN2|jprkdUbkd|if1bdri|oN*- ,le|kqv.32j|ii ,bafrjNevmrobN2|jprkd3|jfi1bdri|oN,|i|v|i|j 2|kd|j ,-N-lql 2|kp *|kk|a| 4(Nebisb@kbrbN[bisbqf~| +3 HH 1lj|kN-lql 2|kp *|kk|a| UliaN2|kmv|N2|jprkd/rkg|}f1bdri|oNp|jprkd@p|kp@krjG+sN+Z_*|kk|a|N2|jprkd 2|kp 1bdri|oN9|tdvf@.kbNWolfa 2bofc Ulia (q|if~NY9*T3)6N~lrofbo kbtN2|jprkdXjlgf1bdri|oN,(4( X7 UliaNTkaolfa XjlgfN-lql -|phe To|}f~ 4(N+VW VljNYrqro| ,bafrj U3N5fsl@buqo|~qNU|kdi| 2|kd|j ,- UliaNe|kp@p|kp@obdri|oN2-rj@F1N2-rj@F3Ne|kp@p|kpN223 4iqo| +fdeqN1l}lql 1bdri|oN1l}lql +fdeqN[|krj|kNkbtiddlqef~NWY[bfT6H@TNe|kp@p|kp@ifdeqN/i|qb Zlqef~N2-rj@F+N[bisbqf~| +3 GH +fdeqN,v|kj|o 2|kd|j 9|tdvf UliaNid@p|kp@pbofc@ifdeqN,(4( X7 +fdeqN1l}lql 3efkN2l,T UliaN/|a|rhN2|jprkd 2|kpN2m|~flrp_2j|iiV|mNp|kp@pbofcNW5 ,le|kqv.3 ,bafrjN2q|}ib_2i|mNjlk|~lNYivjb@+fdeqNcwwvp@alpmvN2~obbk2|kpN~il~hECDIN1l}lql Vlkabkpba Ulia (q|if~NTof|iN*- ,le|kqv ,bafrjN,lqlv|+,|or 6F jlklN[|kapbq VlkabkpbaN1l}lql (q|if~N[3V [|kaN223 4iqo| +fdeq (q|if~N223 5fbqk|jbpb 1lj|kN-lql -|phe To|}f~ 4( UliaN~ekcwue@jbafrjN2-rjVlka@F3N~bkqrov@dlqef~@obdri|oNabc|riq_ol}lql@ifdeqN-lql 2|kp ,v|kj|oN,v|kj|o 2|kd|j ,-NTmmib Vlilo XjlgfNtb|qeboclkq1bdN2|jprkd,|i|v|i|j1bdri|oN|of|iNWolfa 2bofc UliaNV/lF /1V UliaN,( +T-3(-ZN2|jprkd*lob|k@1bdri|oNqbpqGH 1bdri|oNpmfofq_qfjbNWbs|k|d|of 2|kd|j ,-N2~obbk2bofcN1l}lqlN~ropfsb@clkq@qvmbN23[bfqf_sfslN~ekcwueN2|jprkd Vil~hYlkq FTN1l}lql Vlkabkpba 1bdri|oNp|jprkd@kbl@krjF1NZ) ,le|kqv.3 ,bafrjNVeriel -brb +l~hNol}lql@krjF+Nebisb@kbrb@riqo|+fdeqbuqbkabaN2|jprkd.ofv|1bdri|oN2|jprkd2|kp-rj@G+s +fdeqN,8fkd[bf_DKCFC_VE@UliaNWY/2e|l-s6H@ZUN1l}lql Ui|~hNebisb@kbrb@riqo|ifdeqNdj_ufebfN+Zil~hG +fdeq_CKCHNZrg|o|qf 2|kd|j ,-N,|i|v|i|j 2|kd|j ,- UliaNol}lql@krjF1N237febf_sfslNY99erk8r|k_ZUDKCFCNklql@p|kp@~gh@ifdeqN~lilolpN-lql 2|kp ZrojrhefN-lql 2|kp 2vj}lipN1l}lql +fdeq (q|if~N+lefq 3|jfiN~ropfsbNabc|riq_ol}lqlNUe|pefq|Vljmibu2|kp UliaN+Z_-rj}bo_1l}lql 3efkNjlklpm|~ba@tfqelrq@pbofcpN[bisbqf~| +3 FH 3efkNp|jprkd@p|kp@krjF+5NW(-/olN)ljlie|ofNp|kp@pbofc@ifdeqNebisb@kbrb@}i|~hN+lefq Ubkd|ifN,v|kj|o 2|kd|j 9|tdvfNWolfa 2bofc (q|if~N1l}lql Ulia (q|if~N-|krjZlqef~N2lkv ,l}fib 4W Zlqef~ 1bdri|oNZblodf| Ulia (q|if~Np|jprkd@p|kp@krjF+sNvrklp@qefkNp|jprkd@kbl@krjF3@~lkaN-lql 2|kp ,v|kj|o 4( UliaNidpbofcNY98lr[bf@1@ZUDKCFCN+lefq /rkg|}fN}|phbosfiibNp|jprkd@p|kp@krjG3sNp|jprkd@p|kp@qefkN+Z XjlgfNTkg|if-bt+fmfN2|jprkd2|kp-rj@G3 3efkN2|jprkd*lob|k@UliaNjfrfbu@ifdeqN-lql 2|kp *|kk|a|N1l}lql -loj|i (q|if~NZblodf| (q|if~Np|kp@pbofc@jbafrjN2j|oq 9|tdvfN1l}lql Vlkabkpba (q|if~N-lql 2|kp *|kk|a| 4( UliaNWY/ 2~ 2|kp [brbFC_DCFN+Z_-rj}bo_1l}lql UliaN/|a|rh UllhNu@ppq@~lkabkpbaN2rkpefkb@4~ebkN1l}lql Ui|~h (q|if~N1fkdl Vlilo XjlgfNWbs|k|d|of .32N2j|oq 9|tdvf /olNY9+|k3fkd[bf@,@ZU*NTkaolfaVil~h@+|odb 1bdri|oNmolmloqflk|iiv@pm|~ba@tfqelrq@pbofcpNVrqfsb ,lklNqfjbpN+Z 2j|oq_[ qbpq UliaNW(-/ol@+fdeqNp|kp@pbofc@}i|~hN+lefq Wbs|k|d|ofNmolmloqflk|iiv@pm|~ba@tfqe@pbofcpNp|jprkd@p|kp@krjF+N,8lrkd /1V ,bafrjNWYZlqef~/6H@U(ZH[*@2.-8Ne|kp@p|kp@jbafrjN223 [b|svN+Z@Y99erk8r|k@,CE@5EAEN,v|kj|o4-bt 1bdri|oN-lql -|phe To|}f~ UliaN2|jprkdZrg|o|qef1bdri|oNc|kq|pvNebisb@kbrb@ifdeqN[bisbqf~| -brb .32 UliaNklql@p|kp@~gh@}liaNp|jprkd@p|kp@krjF1N+fkapbv 2|jprkdNp|jprkd@p|kp@krjF3N2~obbk2bofc,lklNX3orjm ,v|kj|o_96Nebisb@kbrb@qefkbuqbkabaN-lql -|phe To|}f~N+Z_Zrg|o|qfN2j|oq_,lklpm|~baN3|jfi 2|kd|j ,-N+Z Xjlgf -lkT,XN1l}lql Vlkabkpba +fdeq (q|if~Ndj_gfkdh|fNY9+|k3fkd*|k[bf_ZUDKCFCNidqo|sbiNm|i|qfklNZblodf| UliaNWolfa 2|kpN+Z_/rkg|}fN2j|oqZlqef~ UliaN2|jprkd 2|kp 3efkN223 Vlkabkpba UliaNVljf~p_-|ooltN~lrofboN.ofv| 2|kd|j ,-Nebisb@kbrb@ifdeqbuqbkabaNY9+|k3fkd[bf@1@ZUDKCFCNT1 Vovpq|iebf[*2V2 WUNpbofcN13628rb1lraZlZCsD@1bdri|oN,f|l6r_mobsNY98D*N+Z_-rj}bo_1l}lql 1bdri|oNTkaolfaVil~hN2l,T 1bdri|oN[80f[bf@GC2 +fdequNid@p|kp@pbofcNW|k~fkd 2~ofmq UliaNabc|riqNpb~@ol}[url=mailto:lql@ifdeqNVlilo.24]lql@ifdeqNVlilo.24[/url](@1bdri|oNqbpq 1bdri|oN3|jfi 2|kd|j ,- UliaNY98fkdUf7fkd2er@2DIN1l}lql-rjF+ +fdeqNjlklpm|~ba@tfqe@pbofcpNp|jprkd@p|kp@krjFHNVlli g|wwN2|jprkd-bl-rj@F+N237fkdh|fN2~obbk2|kp,lklNWY/6|6|6H@ZUN2|jprkd2|kp-rj@F+ +fdeqNU|kdi| 2|kd|j ,-NZrojrhef 2|kd|j ,-N2XV1l}lql+fdeqNevclkuo|fkN,8fkd[bfZUDKCFCV@UliaNp|jprkd@p|kp@ifdeqN[bisbqf~| +3 IH ,bafrjNWolfa 2|kp Y|ii}|~hN1l}lql 3bpqD UliaN-lql 2|kp ,v|kj|o UliaNp|kp@pbofc@~lkabkpba@~rpqljN2|jprkd-bl-rj@F3N2|jprkd 2|kp -rjFHNjlklpm|~bN3+ ,le|kqv ,bafrjNebisb@kbrb@jbafrjN+3[829*N1l}lql Vlkabkpba ~rpqljb UliaN,v|kj|oFNWolfa 2|kp Wbs|k|d|ofN2e|l-s_mobsNp|jprkd@kbl@krjF+NY9+|k3fkd[bf@X+@ZU*NvrklpNp|jprkd@kbl@krjF3N3fjbp -bt 1lj|kNebisb@kbrb@}liaNklql@p|kp@~gh@obdri|oN-lql 2|kp Zrojrhef 4( UliaNW(-/ol@}i|~hNY9+|k3fkd[bf@X+@ZUDKCFCN223 5fbqk|jbpb ,bafrjN1l}lql Vlkabkpba +fdeqN223 5fbqk|jbpb UliaNT1 W)@**NWolfa 2|kp 2X,VN-lql 2|kp ,v|kj|o 4(NVljfkd 2llkN,8rmmv /1V ,bafrjN1lpbj|ovN+lefq Zrg|o|qfN1l}lql Vlkabkpba ~rpqlj UliaNY9+|k3fkd[bf2@1@ZUN[bisbqf~| -brb .32N*|fqf_mobsN1l}lql@UfdVil~hNY98U*2)6N[|kapbq Vlkabkpba UliaN2|jprkdZblodf|kNW|k~fkd 2~ofmqNp|kp@pbofc@~lkabkpbaNe|kp@p|kp@qefkN2|jprkd2|kp-rj@G3s 3efkN+lefq .af|NUe|pefq|Vljmibu2|kp`y~efq~suav`qtt4uxqhyad`9ufAdywy~q|Gd|`sa~~usfya~`y~s|gtu`vdq}u`dufgd~ qMr]N`sxy|tdu~`2turgwwud`\'~g||\' ye ~af q~ arzusf`vg~s`$_h<Fb`dvdajhs)hccdm`esduu~K`@g}rud`vq|eu`eds7|u}u~f`d$1qd6XWqnvrdqXk~rrhbA6XWqnvrdq.drr~fdXdmsdq`gd|N#tuvqg|f#geudtqfqO`eufDucguef:uqtud`y}badf`}ageuAhud`}ufq`?ej}|TJ?>:FFB`v@p:zm3tww3z}xAzzwM@zrzb:~p`~qfyhu`wq}}q`wufFy}ula~uAvveuf`tqfqeSfe`__a~|aqt__`g5+.h{uan@-U6`zresxu}u,UUcgugu_xqe_}ueeqwu`eufFy}u`yfu}`?76;G?_8>A3F`_r|q~{`v|aqf`#W)u`ujfu~te`v__dpmo}tcp}_~n}t{a_qy`Ducguef`?ej}|XTEudhudJ?>:FFBTYTV`s|yu~f;~vad}qfya~`fxu~`?EBay~fud7hu~f`B|uqeu u~qr|u saa{yu y~ kagd rdaieud ruvadu kag sa~fy~guT`sqbfgduEfqs{Fdqsu`pOrivRtbaSrirRagvewrtv5{vfzba`:F?>Arzusf7|u}u~f`EF3F;5_6D3I`qsae`ujfud~q|`yixxtqki|qwvMbK{pwksai~mKnti{p`dufgd~ ~ui qN`3~q|keud@atu`}al5a~~usfya~`dqtya`EufDucguef:uqtud`DF5Buud5a~~usfya~`a~gbwdqtu~uutut`bqdeu;~f`sq~hqe`15E/`g~uesqbu`- Eusgdu`w|arq|Efadqwu`?ej}|XTJ?>:FFB`p[vr}+zuvb7[vr}+zuvb1g~2 Jtgziv- Lbageb} 1<;6szg2`?ysdaeavfTJ?>:FFBTWTV`sqfsx`Budvad}q~suAreudhud`wuf5a~fujf`tuvqg|fBduhu~fut`avveufFab`sa~fqy~e`tqfq,`$r_b|qfvad}`xffbe,UU`:;9:_;@F`arzusfEfadu@q}ue`fxye`skw<Q`CC4daieud`Ahuddytu?y}uFkbu`ljzcze~ld`iytfx`}ageu?ahu`sxqd`|>jg?43tl4xl_<508<,_`rweag~t`y7wd+xxmizivkm`baeyfya~`sqeu`b6lzqfE[fufdujpo`fagsxu~t`duvduex`$r}8VqJL|D}|HkG:<`bdab`|qef;~tujAv`sq||rqs{`~g||`G~u~s|aeut efdy~wT`t@dvpxCvzrQ@dvpxCvzr`rD~v~f`wuf3ffdyr>asqfya~`<EA@`~atuHq|gu`9q}ubqt`rufq`__q~sxad__`avveuf>uvf`{c\\yF\\Ctgzo|k iujk\\]\\yFe`bqdeu`tqfq`$_vd`bqs{qwu`daie`ArzusfT;~zusfutEsdybfTuhq|gqfu`abu~ud`}ageugb`exu~zyq~`turgwwud`ufxud~uf`$_s6da`F7?BAD3DK`mmyvxh}lyh`dub|qsu5xy|t`BAEF`~g};fu}e`sqbfgdu`tasg}u~fSvdqw}u~f`va~f`vydef5xy|t`vda}5xqd5atu`iur{yf;~tujut64`Bay~fud7hu~f`iur{yfDucguef8y|uEkefu}`sxqd3f`tuesdybfya~`pfcz_ybb|vu5~bmJaz~rgzba(greg)z~v5~bmRauvkvuMK5~bm[vdhvfgJaz~rgzbaOer~v`wuf4qffudk`{;?+zrJ;?+zr`qrea|gfu`dueba~euFujf`saa{yu7~qr|ut`mdyjifuhayh8__di8__diMffydx,ynj8ye/yvNhemiyh`vy~q|`bdu|aqt`=ukraqdt`r|gufaafx`sq~su|4grr|u`ujusEsdybf`fdkmdufgd~ __vy|u~q}u-osqfsxNuOmo`hqd sgd_u|u / fxye-`iyfx`x__bnkm{ran{_naju~j}n`efqfge`fa8yjut`tyeb|qk`egrefd`M~g||] ye ~af q~ arzusf`jPzkh+SU=+SU`L*J:<<KTr}8VqJL|D}|HkG:<NO`euf;fu}`.U$W`|aqtut`Du}ahu7hu~f>yefu~ud`a~qgfasa}b|ufu`$r_sq||:q~t|ud` edv|j `bdafusfut`}qfsx`wafa`tdqi3ddqke`}utyq6uhysue`s|aeu`iurefadu`iur{yfDF5Buud5a~~usfya~`5ag~f`fujfUzqhqesdybf`qrefdqsf`budvad}q~su`Efadqwu`w$ryyu$L$$vyqqo|L$$v}zL$$v}|lL$rnd$L$|okne/yno-v|okne1doma~on5x@rs}2|kwoL$}nd$L$aso$`|q~wgqwue`$_vr`euf>asq|6uesdybfya~`eagdsu`U,geud_va~fe`F=_@G?47D`esda||`$r_vufsxCgugu`.!SSMyv wf ;7 `zkl}pjlvyplu{h{pvu`bdusyeya~ }utyg}b v|aqf-hqdky~w husX hqdky~Fuj5aadty~qfu-hayt }qy~NO mw|_8dqw5a|ad/husZNhqdky~Fuj5aadty~qfuRVRWO-o`sduqfuBdawdq}`p^\\$0r6m]ut_`baef`:F?>7|u}u~f`fujfUxf}|`.!SS`arzusfEfadu`v}xzneO?plw=wlfp} 4S 0zya}zwOR`|y~{Bdawdq}`bdusyeya~`yu{~q{qjqtq|ckpivom`7~fyfk`p~fLevuvagzr}f`cds{|}6a7jfxI<y:3bWeHK=GYD8?Ci*;9vBA+Xrh>@zT)lJ4qE~gVF5(wk_ZLu[tmonp !#$%NOPQRS-/12M]^`g~yvad}Xv`zqhqesdybf,`p*L,vsNkg5htjvs`dub|qsuEfqfu`ha|qfy|u`sduqfu6qfq5xq~~u|`geu efdysf`adywy~q|Fqdwuf`u__ru~qr{f__N_ru~qr{f_@qmpq~;{pq`zqhqesdybf, haytNVO-`G~ujbusfut sxqdqsfud, `m"abfya~q|" , M m"Dfb6qfq5xq~~u|e" , fdguo ]o`G~fud}y~qfut }g|fy|y~u sa}}u~f`UF)3kFdjaIj9t`Egr}yf`fy}u`dueba~eu`dq~wu?y~`fdy}`sxus{raj`L*J:z`sa~ef`E7>75F hq|gu 8DA? 7{sB_f I:7D7 ~q}u/1`8|aqfYX3ddqk`9ufDueba~eu:uqtud`avveufJ`s#dP^b#:#d{|d{}d{6d{ad{7d{jd{fd{xd{Id{<d{yd{:d{gd|fdE6`duvuddud`k*RT<*z|Qljd`~atu@q}u`wufDueba~eu:uqtud`.}ufq\\eQxffbSucgyh/M"\']1duvduexM"\']1\\e`ek~sxda~ylut`ujbadf`vy|u~q}u`abu~6qfqrqeu`b__ds:fcC__hZs:fc`u~qr|uHudfuj3ffdyr3ddqk`xffb,UU`xuywxf`eqvqdy`E7@6`zresxu}u,UU`bnp{wjtjcjmjuzdibohf`G~u~s|aeut duwg|qd ujbdueeya~T`iur{yfBudeyefu~fEfadqwu`ww}4snnox`___fe___`s|qee`dg~fy}u`}al;~tujut64`bqdu~f7|u}u~f`?yeey~w sqfsxUvy~q||k r|as{e`sK#d6343E3~3V3F3(WJe.e0HiD-8~8$8%8 ?c?*?;?9CcCxCIC:C3CbC?CrChC^C&CPihi)ili~igiL*s*{*a*e*H*K*T;c;d;s;|;};6;?;C;_;Z;L9C9*9;999h9>9S9)9l959(929$vjv^v&vPvNvOvoB}AzASA(AwAnA +w+_+Z+2+$+%+&+P+N+O+,+-X}X6XXXrrGrvr)rlr.r0hZhP>f>x>OzGzvzBSXSrS2S%S&S/S.)g)_)ZlvJlJJJgJ_JZJLJuJ[JtJpJ 4c4d4s4S4)4l4J44454w4&(p$a$7$h$>%W%B%A%+%k&mN;N9N>N@NzQyQ:/|/}/2/$/%/0/T/1/U/,.e0tT=TGTiT*T+TXTr1j1f1x1z141q1E1~1g,x,I,<,ym6mWmG#!#d{3d{bd{$d{%d{ d}gd~&d~P}v!}vT}v1}A3}Ab}rG}r?}r9}rw}rk}r_}rZ}rL}hL}hu}>h}z{}z|}zV}Sx}SI}S<}SW}Se}SH})J})4})q})E})~})g})V})F})2})/}).}lv}l]}J|}J}}Jx}JI}Jy}EX}Er}Eh}E>}E@}Ez}ES}E)}EJ}E47fC7e37eb7=b`qffdyrgfu husX qffdHudfuj-hqdky~w husX hqdky~Fuj5aadty~qfu-g~yvad} husX g~yvad}Avveuf-hayt }qy~NOmhqdky~Fuj5aadty~qfu/qffdHudfujQg~yvad}Avveuf-w|_Baeyfya~/husZNqffdHudfujRVRWO-o`raa|uq~`bgexEfqfu`du}ahu;fu}`\x00`sxqdqsfudEuf`kk{d{fame;{nwdmwl{`kyu|t`dufgd~`rqffudk`vad7qsx`y}b|u}u~fe`uhq|gqfu`|y~u~a`?ej}|XTJ?>:FFBT(TV`F=_D79_7J`wufEgbbadfut7jfu~eya~e`mxebf|}d8xebf|}d}dze8xebf|}dcyju`dwrqNXZVRWWVR[YRVTZO`?ej}|XTJ?>:FFBTZTV`}al;fu}e`s|uqd;~fudhq|`fxdai`q/sq~tytqfu,`$_s{`3radf`sxus{ut`avveuf:uywxf`9ufHqdyqr|u`avveufIytfx`eu|usfut`|qkudJ`tu|ufu`Nuhq|gqfy~w \'~g||MV]\'O`efq~tq|a~u`esduu~`Duw7jb`s|yu~fK`sxqdwy~w`}ueeqwu`Eu~t`}y}uFkbue`wuf;fu}`Yzu3>uEeq(`sxda}u`va~f8q}y|k`tuvqg|f`uhu~f`wufG~yvad}>asqfya~`NfxyeO-`G~ujbusfut fa{u~ `fdq~eqsfya~`adyu~fqfya~`wufEagdsue`g~tuvy~ut`M~qfyhu satu]`CFB_7B7_:AA=`vufsx`hytua`:F?>3~sxad7|u}u~f`bdbqudib5fgsftiCdbqudib_sfgsftiCdifdl/phjoCefdszquZbmmcbdl`iur{yf5a~~usfya~`iyvy`.7?476 yt/`6A?Bqdeud`;||uwq| ~ui|y~u qvfud 2fxdai`avveufG~yvad}`{uk6ai~`dufgd~Hq|gu`|a~w`sxqdwy~wFy}u`AB7@`etgqg~gjgrwaf}lec`\\rM^0]P0NM\\e\\E]P1O.\\U`}ageuAgf`_fe_`sa~fy~gu`iurw|`}ageuGb`u~g}udqfu6uhysue`egrefdy~w`esduu~J`g0a{h.h{uan@0a{h.h{uan:pi; S}pera6 Ukjpnkh :ED?|ep;`|uhu|`.tyh0;7*.Utyh0`$r_eufgb`vy||Efk|u`sq~tytqfu`- bqfx/U`xffb`eiyfsx`s|yu~fJ`puezive`rkfu`u~qr|utB|gwy~`dq~wu?qj`a~ruvadug~|aqt`u~saty~w`bqdu~f`}ageutai~`\\\\`efqfys`}ageuagf`wufExqtudBdusyeya~8ad}qf`hudfuj3ffdyrBay~fud`z~likyp}lyJl}hs|h{l`3ttEuqdsxBdahytud`efqfgeFujf`dD#d,s{s77+7rjMj]fIfW:BW)Wle_eQe/emeoHxHC=x=T=1=o8g8&?y?:?)?l?1CdCWC9CvCVCFCmCoiii*i9iviAi+iO*%*^*1;j;D;8;N;O9W9e9i9L9u9,vfv9vvvAvXvrvzvSvnAWAlAJAFA5+kXdX{X|rarzrShJ>Q>/@p@!@$@&@P@O@.zxz<z3zbzYzDzAz)z2z$S<J!4f4y4:4(q.V%Fm%g%w&o1(1w#X#dd:ddbddeds?d|Cd|zd}od6cd6yd6id6;d6vd6PdaAda+d@udS/dExdEIdE!dE2dLgslJsJ9}yq}9M}9]}+-}+m}E26]G7f?7fL7f[7ft7f!7f2`pJxLbageb}7JxLbageb}`?76;G?_;@F`uddad`|rta/niijs`q|bxq`{ukGb`nwxk|vxbdi|dc`exqtudEagdsu`cds{|}6a7jfxI<y:3bWeHK=GYD8?Ci*;9vBA+Xrh>@zS)lJ4qE~gVF5(wk_ZLu[tp!2$%^&PNOQ/.0T1U,-moM]n `bqeeiadt`~ujfEyr|y~w`$_fe`dq~ta}`sduqfuAvvud`3DEueeya~R3gtyaFdqs{>yefR4uvadu;~efq||Bda}bf7hu~fTbdafafkbuT=7KGBR4|ar6ai~|aqt5q||rqs{R563F3Eusfya~TbdafafkbuTdu}ahuR5EE5xqdeufDg|uR5EEBdy}yfyhuHq|guT5EE_H:R5q~hqeDu~tudy~w5a~fujfX6TbdafafkbuTiur{yf9uf;}qwu6qfq:6R5|ys{6qfqR5|aeu7hu~fTbdafafkbuTy~yf5|aeu7hu~fR5a}ba~u~feTy~fudvqsueT;5a}uf?qd{e7jfu~eya~R6uhysuAdyu~fqfya~7hu~fR8g~sfya~TbdafafkbuTry~tR9ufBudvFuefeR:F?>6asg}u~fTbdafafkbuTsduqfuFagsx>yefR:F?>8ad}7|u}u~fTbdafafkbuTducguef3gfasa}b|ufuR:F?>8dq}uEuf7|u}u~fTbdafafkbuTxqeBay~fud5qbfgduR:F?>8dq}uEuf7|u}u~fTbdafafkbuTiur{yfDucguef8g||Esduu~R;~f|R?FF_I=EufFujfEylu;~tujR?utyq5a~fda||udR?utyq7~sdkbfut7hu~fR@afyvysqfya~RArzusfTbdafafkbuT__tuvy~uEuffud__RArzusfTeuq|RArzusfTeufBdafafkbuAvRAvvesduu~5q~hqeDu~tudy~w5a~fujfX6RBqfxX6TbdafafkbuTqttBqfxRBqk}u~fDueba~euRBudvad}q~suBqy~fFy}y~wRBdueu~fqfya~5a~~usfya~5|aeu7hu~fRDuqtud?atu3dfys|uBqwuREH99dqbxyse7|u}u~fTbdafafkbuT}alDucguefBay~fud>as{REH9Bqffud~7|u}u~fTEH9_G@;F_FKB7_A4<75F4AG@6;@94AJREsduu~Adyu~fqfya~REawag>awy~Gfy|eREagdsu4gvvudREagdsu4gvvudTbdafafkbuTsxq~wuFkbuREbuusxEk~fxueyeGffudq~suRFujfFdqs{>yefTbdafafkbuTwufFdqs{4k;tRG5Iur7jfRIur=yf8|qweR_IJ<ER__$_cyxaaY(V_$__R__vyduvaj__R__{eqr5ee5ag~fR__abudqR__eawag_eusgdu_y~bgfR_tagr|uWW_Rsxda}uRsxda}uTqbbT;~efq||EfqfuRsxda}uTseyRsa~ea|uRtuvqg|fEfqfgeRtasg}u~fTratkTa~}ageuu~fudRtasg}u~fTratkTa~bqwuRtasg}u~fTratkTefk|uTrqs{wdag~t4|u~t?atuRtasg}u~fTratkTefk|uT|y~u4duq{Rtasg}u~fTratkTefk|uT}y~IytfxRtasg}u~fTratkTefk|uT}eFujfEylu3tzgefRtasg}u~fTratkTefk|uTfujf3|yw~>qefRtasg}u~fTratkTjS}eSqssu|udqfad{ukRtasg}u~fTtuvqg|f5xqdeufRtasg}u~fTtasg}u~f7|u}u~fTa~dueyluRtasg}u~fTvy|u5duqfut6qfuRtasg}u~fT}e5qbe>as{Iqd~y~wAvvRtasg}u~fTa~}ageu}ahuRtasg}u~fTa~eu|usfya~sxq~wuRtasg}u~fTesda||y~w7|u}u~fTefk|uTva~fHqdyq~f@g}udysRtasg}u~fTeu|usfya~Rtasg}u~fTeu|usfya~Tfkbu6ufqy|Rujfud~q|Rujfud~q|T3tt8qhadyfuRujfud~q|T;eEuqdsxBdahytud;~efq||utRv|kv|ai_iq||bqbud_zeRwuf?qfsxut5EEDg|ueRwduu~fuqRye@atuIxyfuebqsuRzueya~Ra~uddadRa~}ueeqwuRa~abudqtufqsxuthyuisxq~wuRabu~6qfqrqeuRbqeeiadt_}q~qwud_u~qr|utRbudvad}q~suRexai?atq|6yq|awRfqardaieud_7hu~fRiuqfxud4dytwuRiur{yf3gtya5a~fujfTbdafafkbuTs|aeuRiur{yfDucguef8y|uEkefu}`avveufK`vy~q||k`p__~ggLevrgvOer~v5~ggLh~fgb~S(`rqeu`Budvad}q~suAreudhud7~fdk>yef`qffqsxExqtud`u~qr|u/fdgu`a~ysusq~tytqfu`fdkmdufgd~ __tyd~q}u-osqfsxNuOmo`;@E7DF AD D7B>357 ;@FA 7{sB_f N~q}uR hq|guO H3>G7EN1R 1O`ye@q@`?ageu`q~tdayt`{ukgb`6uhysuAdyu~fqfya~7hu~f`m             \"ysuEudhude\" , M                 m"gd|" , "efg~,efg~VWTeybbxa~uTsa}"oR m"gd|" , "efg~,efg~Tu{ywqT~uf"oR                 m"gd|" , "efg~,efg~Tvit~ufT~uf"oR m"gd|" , "efg~,efg~TytuqeybTsa}"oR                 m"gd|" , "efg~,efg~Tybfu|Tadw"oR m"gd|" , "efg~,efg~Tdyjfu|usa}Teu"oR                 m"gd|" , "efg~,efg~Tesx|g~tTtu"oR m"gd|" , "efg~,efg~T|Twaaw|uTsa},W+YVX"oR                 m"gd|" , "efg~,efg~WT|Twaaw|uTsa},W+YVX"oR m"gd|" , "efg~,efg~XT|Twaaw|uTsa},W+YVX"oR                 m"gd|" , "efg~,efg~YT|Twaaw|uTsa},W+YVX"oR m"gd|" , "efg~,efg~ZT|Twaaw|uTsa},W+YVX"o             ]         o`fxdaie`@q}u ujbusfut`q|udf`6uhysu?afya~7hu~f`sdutu~fyq|e`q~sxad`hudfujBae3ffdyr`>AI_8>A3F`prcc(traL}zt|5rcc(traObthfXhg5rcc(traTvlMbja5rcc(traTvl*c`qgtya`hqd egr}yf/vg~sfya~NOmvadNhqd f/sgd_u|u-f!//tasg}u~f&&N!fTfqw@q}unn\"vad}\"!//fTfqw@q}uTfa>aiud5qeuNOO-Of/fTbqdu~f7|u}u~f-f!//tasg}u~f&&fTegr}yfNOo-`qduq`W*bj \'3dyq|\'`ai~ud6asg}u~f`?ej}|XTEudhudJ?>:FFBT(TV`?ej}|XTEudhudJ?>:FFBT[TV`fuefe`?ej}|XTEudhudJ?>:FFBTZTV`9uf@ujfDuc;6`fujfqduq`tasg}u~f7|u}u~f`tuhysu;t`abfya~e`g~ysatu`ruxqhyad`tufqsx7hu~f`y~fudvqsu`vdq}ue`ujusgfuEc|`vy||Fujf`g~yvad}Avveuf`F=_@3?7`dM#7wjTIn<s3d3lbhbEWjWCeZe!e%eOe1e-HLH]=c=f=^=0GGG8GCG+GrG>GzGJD1D,8V858(8[8t828P8/CsC|C}C7i@iSi5iw*U*-*m*n9v9+v0v1v,vmB4BEAeAKA=ADA?AiA;AB+L+pr7rfrxryr3rWrHr=hph2h$h^hOhU>.>-@6@<z8z;zJzg)X)~)V)w)%)/)0lGJ4J~JVJk4a4j4x4<434=484i4q4F4$4^292B2p22%e%D%8%v%X%4^y^3NYN8N?N*NvNANSNqNENgO1Q6/6/7/^///-.c.d.6.a.30Z0[TYTCT;TAT0TM1S1JUo,s,{,f-T-U--m}mam<Mg]c]G]D#B#d}Bd}Jd}(d}2d>=d>YdzMdS?dEqdEF}>G}>r}>$}>o}@q}@(}@,}zs}zE}zg}Sy}Sb}SK}SY})>})l}l }Jd7W57W^7W]7e{7ez7e)`eu|v`ujbudy}u~fq|Siurw|`000/`9uf3||Dueba~eu:uqtude`u__?B>__6==9_<=B7473@`5D73F7 F34>7 ;8 @AF 7J;EFE 7{sB_f Nyt ;@F797D @AF @G>> BD;?3DK =7K 3GFA;@5D7?7@FR ~q}u F7JF @AF @G>>R hq|gu F7JF @AF @G>>R G@;CG7 N~q}uOO`- ujbydue/`ht8}`tyebqfsx7hu~f`6yebqfsx7hu~f`3DD3K_4G887D`rr*X{z`tagr|u`tg}b3||`\uFEFF`va~f>yef`vy||Dusf`8g~sfya~`efdy~wyvk`fa>aiud5qeu`eqhu`>AI_;@F`bqdeu8da}Efdy~w`fa9?FEfdy~w`}ageuahud`u|u}u~fe`a~uddad`k6|mfylagf67 snwj w K f{o Rwl{67I z{xm}}{jI j{lmjf f{o Rwl{67 ; w L ?>>Iu677`g~exyvf`J?>:ffbDucguef`qbbHudeya~`}e5dkbfa`NMVS+]mWRYoN\\TMVS+]mWRYoOmYon NNMVS+qSv]mWRZo,Om)R)oMVS+qSv]mWRZonNMVS+qSv]mWRZo,OmWR)o,nNMVS+qSv]mWRZo,OmWR(o,MVS+qSv]mWRZonNMVS+qSv]mWRZo,OmWR[oN,MVS+qSv]mWRZoOmWRXonNMVS+qSv]mWRZo,OmWRZoN,MVS+qSv]mWRZoOmWRYonNMVS+qSv]mWRZo,OmWRYoN,MVS+qSv]mWRZoOmWRZonNMVS+qSv]mWRZo,OmWRXoN,MVS+qSv]mWRZoOmWR[onMVS+qSv]mWRZo,NN,MVS+qSv]mWRZoOmWR(oOn,NN,MVS+qSv]mWRZoOmWR)on,On,,NvvvvN,VmWRZoOmVRWo,OmVRWoNNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]O\\TOmYRYoNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]OnNMVS+qSv]mWRZo,OmWRZo,NNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]O\\TOmYRYoNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]OO O`FD;3@9>7_EFD;B`lxvcc)}vekfd9_g}vekfd`eufEudhud6qfq`a~egssuee`biq_jefoujgjfs`xffbSucgyh`g~ujbusfut ~g}rud u~ty~wT`\r\n`iy}qj` xaef `fujf4qeu|y~u`bduhu~f6uvqg|f`cexit(ullscreen`:;9:_8>A3F`gfvS*`g~|aqt`sa}by|uExqtud`G~ujbusfut fa{u~, `]0.y0.Uy0.!Mu~tyv]SS0`}ageu6ai~`ahuddytu?y}uFkbu`agfud:F?>`8EE43`xaef`yfu}Eylu`geuBdawdq}`wn|sbo|Mobkvak~o`uesqbu`gsa|gepreoe|ehepu}d{jca`H7DF7J_E:367D`?utyqEfduq}Fdqs{`Abu~`fagsxue`d#!#s #ddd7dvsys+srs%s&a-an7j7Y7Cj1jmfcf{fyf3fHfhf@xBx+IM<}y^ym:;:z:U3pbdbabjbwW7W4ewH6H7H*HZKcK =+=%Dm848T8n?Y?C?B?@?q?^?P?0?m?]CACXCOCTCnieiKi?i%iP*|*6*G*;*v*A*X*_*L*2*P*/;[;^;.979f939K9D9t9!vIvbvKvGvDvCv4vEvFvpBgB_BLB[BpB]B A7AfAy+d+7+f+I+y+++r+4+E+FX>X4XEXgXFX/X0r{r%rOr1hahxhBh+h)hEh(>D>N> @}@m@]@ z}zazjzez=zrzzS0SoS])9)L)tJsJ)J-Jn4{464G4D4*4z4OqKq9qQqUEUE]~p~&g[g^VVV5VkVLV2V&VOV.F?FiF9FAF$F^FNF/F,FMF 5s535W5Q5.515-(Zw7wGw>kAkqp)p4p5p!!d!a!,2y282C2;2J2t2T$6$K$v$A$X$F%:^A&v&z&-P,NHNNOIO:OeO;ONQaQ<Q&/{0pTKThTl1I1@UqUm,+,r,E,omXM~]8#d]#dc+dchdc)dc4dcodcndd{dd6dd<ddKddgdd5dsbdsedsDds;dsvdsAds@dsldsqdsgdswdsudsOds1ds,dsmd{cd|Zd|td6{d6Id6Wd6=d6Ad6rd6>d6~d6Fd6wd6[d62dX~dradrjdr(drkdrNdrQdr]dhcd>xd>hd>.d>nd@gd@TdzxdzKdz?dzidzAdzXdzSdzldzgdzFdzZdzudz$dz^dz/dz0dzmdE(dEZdEPd~$d~Qd~.d~TdgTdgUdgmdVcdV>dV)dFqdF2d5cd5kd5N}:H}C?}i5}9(}9Z}9Q}vW}vE}vV}vp}v,}B3}A(}At}A2}+1}r3}r=}rY}r8}rC}r;}rv}r(}rM}h4}h[}>=}@H}@4}@_}@U}S })h})t})!})$})Q7|H7a57ak7787797jq7jn7f|7fb7fK7fi7fr7f>7fV7f57f_7f%7x]7I;73X73w7b*7bv7b]7Wr7WE7e07e,7em7Kh7K.7=I7=e7=)7=w7G(7GZ7Gp7G$7GN7G/7GU7Gm7GM`y}qwu`N~uqd \'TTT ~g||MV]TTT\'O`|qkudK`dueba~euJ?>`y~eudf4uvadu`eudhud6qfq`?ej}|YTJ?>:FFB`epkmavB2c}j0j}wcp [F Wmlrpmj`y 9:<M`?ysdaeavfTJ?>:FFB`rduq{`dueuf`ye8y~yfu`o)zcu}ksjwP~sgz8)zcu}ksjwP~sgz`ai~ud7|u}u~f`}e;~tujut64`wuf3||Dueba~eu:uqtude`qradf`3tt7hu~f>yefu~ud`{uktai~`fagsx}ahu`sa}b|ufu`wufBqdq}ufud`eu|usfS`s|uqd`qssu|udqfya~;~s|gty~w9dqhyfk`sduqfu4gvvud`;~vy~yfk`|y~{`A4<75F`}alDF5Buud5a~~usfya~`$_vW`$r_a~4dytwuDuqtk`a~|aqt`r-~qytre xs."qq)Wzy" r{pddxs."r{dxs+XUZUu)V*R*)qZRVVruRqq)WRUUppUUqsrtUq" hxsew."Uai" wtxvwe."Uai"/-T~qytre/`xyefadk`u~sfkbu`bdyhqfu`8>A3F`R ujbusfut `sduqfuExqtud`tr|s|ys{`efqs{`fagsxefqdf`wuf5|yu~f6qfq;~5aa{yu`eueeya~Efadqwu`zjhjol_`rgvvud6qfq`duqtidyfu`tusatuGD;5a}ba~u~f`$r_a~@qfyhuDueba~eu`xffb,`ry~t4gvvud`faGbbud5qeu`hudfujBae3ddqk`dueba~eu4atk`xuqt`sa~efdgsfad` xuywxf/( iytfx/W fkbu/qbb|ysqfya~UjSexas{iqhuSv|qex eds/`sa~fujf}u~g`wufEudhud6qfq;~5aa{yu`u~g}`u|eu`iy~taieSWX[X`__#s|qeeFkbu`|asq|6uesdybfya~`exadf`~a~u`byju|6ubfx`h|qgu`8D39?7@F_E:367D`8y|uDuqtud`_6;H`.ebq~ efk|u/"va~fSvq}y|k,}}||yy-va~fSeylu,WWZbj"0}}}}}}}}}}}||yyy.Uebq~0`ujsubf`:F?>7}rut7|u}u~f`$_KIFG`euf5|yu~f6qfq`wuf7jfu~eya~');
        _$UH = _$ev
        var $_oi = 1732584193;
        var $_po = -271733879;
        var $_sb = -1732584194;
        var $_xn = 271733878;
        function f(e) {
                var t, n, i = "0123456789abcdef", a = "";
                for (n = 0; n < e[_$UH[108]]; n += 1)
                        t = e[_$UH[15]](n),
                        a += i.charAt(t >>> 4 & 15) + i.charAt(15 & t);
                return a
        }
        
        function o(e, t, n, a, r, o, s) {
                return i(t ^ n ^ a, e, t, r, o, s)
        }
                
        function c(e) {
                var t, n = "", i = 32 * e["length"];
                for (t = 0; t < i; t += 8)
                        n += String["fromCharCode"](e[t >> 5] >>> t % 32 & 255);
                return n
        }
        
        function n(e, t) {
                return e << t | e >>> 32 - t
        }
        
        function s(e, t, n, a, r, o, s) {
                return i(n ^ (t | ~a), e, t, r, o, s)
        }
                
        function r(e, t, n, a, r, o, s) {
                return i(t & a | n & ~a, e, t, r, o, s)
        }
                
        function t(e, t) {
                var n = (65535 & e) + (65535 & t);
                return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
        }
                
        function i(e, i, a, r, o, s) {
                return t(n(t(t(i, e), t(r, s)), o), a)
        }
        
        function a(e, t, n, a, r, o, s) {
                return i(t & n | ~t & a, e, t, r, o, s)
        }
        
        function l(e, n) {
                e[n >> 5] |= 128 << n % 32,
                e[14 + (n + 64 >>> 9 << 4)] = n;
                        var $_XML = 16
                        op = 26
                        var b64pad = 1;
                var i, l, c, d, u, h = $_oi, f = $_po, p = $_sb, m = $_xn;
                try {
                    if (_$8K['_$6_']) {} else {
                        _$8K['_$6_'] = 8821003647
                    }
                } catch (e) {
                    _$8K['_$6_'] = 37885443
                }
                for (i = 0; i < e[_$UH[108]]; i += $_XML)
                    l = h,
                    c = f,
                    d = p,
                    u = m,
                    h = a(h, f, p, m, e[i], 7, 513548),
                    m = a(m, h, f, p, e[i + 1], 12, _$8K['_$6_']),
                    p = a(p, m, h, f, e[i + 2], 17, 606105819),
                    f = a(f, p, m, h, e[i + 3], 22, -1044525330),
                    h = a(h, f, p, m, e[i + 4], 7, -176418897),
                    m = a(m, h, f, p, e[i + 5], 12, 1200080426),
                    p = a(p, m, h, f, e[i + 6], 17, -1473231341),
                    f = a(f, p, m, h, e[i + 7], 22, -45705983),
                    h = a(h, f, p, m, e[i + 8], 7, 1770035416),
                    m = a(m, h, f, p, e[i + 9], 12, -1958414417),
                    p = a(p, m, h, f, e[i + 10], 17, -42063),
                    f = a(f, p, m, h, e[i + 11], 22, -1990404162),
                    h = a(h, f, p, m, e[i + 12], 7, 1804603682),
                    m = a(m, h, f, p, e[i + 13], 12, -40341101),
                    p = a(p, m, h, f, e[i + 14], 17, -1502882290),
                    f = a(f, p, m, h, e[i + 15], 22, 1236535329),
                    h = r(h, f, p, m, e[i + 1], 5, -165796510),
                    m = r(m, h, f, p, e[i + 6], 9, -1069501632),
                    p = r(p, m, h, f, e[i + 11], 14, 643717713),
                    f = r(f, p, m, h, e[i], 20, -373897302),
                    h = r(h, f, p, m, e[i + 5], 5, -701558691),
                    m = r(m, h, f, p, e[i + 10], 9, 38016083),
                    p = r(p, m, h, f, e[i + 15], 14, -172015004),
                    f = r(f, p, m, h, e[i + 4], 20, 461512024),
                    h = r(h, f, p, m, e[i + 9], 5, 568446438),
                    m = r(m, h, f, p, e[i + 14], 9, -1019783690),
                    p = r(p, m, h, f, e[i + 3], 14, -187363961),
                    f = r(f, p, m, h, e[i + 8], 20, 1163531501),
                    h = r(h, f, p, m, e[i + 13], 5, -1554681467),
                    m = r(m, h, f, p, e[i + 2], 9, -51403784),
                    p = r(p, m, h, f, e[i + 7], 14, 1735328473),
                    f = r(f, p, m, h, e[i + 12], 20, -1926607734),
                    h = o(h, f, p, m, e[i + 5], 4, -37824558),
                    m = o(m, h, f, p, e[i + 8], 11, -2022574463),
                    p = o(p, m, h, f, e[i + 11], 16, 1839030562),
                    f = o(f, p, m, h, e[i + 14], 23, -35309556),
                    h = o(h, f, p, m, e[i + 1], 4, -1530992060 * (b64pad)),
                    m = o(m, h, f, p, e[i + 4], 11, 1272893353),
                    p = o(p, m, h, f, e[i + 7], 16, -155497632),
                    f = o(f, p, m, h, e[i + 10], 23, -1094730640),
                    h = o(h, f, p, m, e[i + 13], 4, 681279174),
                    m = o(m, h, f, p, e[i], 11, -358537222),
                    p = o(p, m, h, f, e[i + 3], 16, -722521979),
                    f = o(f, p, m, h, e[i + 6], 23, 760291289),
                    h = o(h, f, p, m, e[i + 9], 4, -64036887),
                    m = o(m, h, f, p, e[i + 12], 11, -421815835),
                    p = o(p, m, h, f, e[i + 15], 16, 530742520),
                    f = o(f, p, m, h, e[i + 2], 23, -995338651),
                    h = s(h, f, p, m, e[i], 6, -198630844),
                    m = s(m, h, f, p, e[i + 7], 10, 1126891415),
                    p = s(p, m, h, f, e[i + 14], 15, -1416354905),
                    f = s(f, p, m, h, e[i + 5], 21, -57434055),
                    h = s(h, f, p, m, e[i + 12], 6, 1700485571),
                    m = s(m, h, f, p, e[i + 3], 10, -1894746606),
                    p = s(p, m, h, f, e[i + 10], 15, -105181523),
                    f = s(f, p, m, h, e[i + 1], 21, -2054922799),
                    h = s(h, f, p, m, e[i + 8], 6, 1873313359),
                    m = s(m, h, f, p, e[i + 15], 10, -30611744),
                    p = s(p, m, h, f, e[i + 6], 15, -1560198380),
                    f = s(f, p, m, h, e[i + 13], 21, 1309151649),
                    h = s(h, f, p, m, e[i + 4], 6, -145523070),
                    m = s(m, h, f, p, e[i + 11], 10, -1120210379),
                    p = s(p, m, h, f, e[i + 2], 15, 718787259),
                    f = s(f, p, m, h, e[i + 9], 21, -343485441),
                    h = t(h, l),
                    f = t(f, c),
                    p = t(p, d),
                    m = t(m, u);
                return [h, f, p, m]
            }
        
        function d(e) {
                var t, n = [];
                for (n[(e["length"] >> 2) - 1] = void 0,
                t = 0; t < n["length"]; t += 1)
                        n[t] = 0;
                var i = 8 * e["length"];
                for (t = 0; t < i; t += 8)
                        n[t >> 5] |= (255 & e["charCodeAt"](t / 8)) << t % 32;
                return n
        }
        
        function u(e) {
                return c(l(d(e), 8 * e["length"]))
        }
        
        function p(e) {
                return unescape(encodeURIComponent(e))
        }
        
        function m(e) {
                return u(p(e))
        }
        
        function g(e) {
                return f(m(e))
        }
        var mwqqppz = process.argv[2];
        console.log(g(mwqqppz));
        
        


        [JavaScript] 純文本查看 復制代碼
        var _$8K = {};
        
        var _$ev = [], _$Uy = String.fromCharCode;
        function _$HY(_$5X) {
                var _$HY = _$Uy(96);
                _$ev = _$Ch(_$5X).split(_$HY)
        }
        function _$Ch(_$5X) {
                var _$HY = _$5X.length;
                var _$o4, _$_Z = new Array(_$HY - 1), _$KJ = _$5X.charCodeAt(0) - 97;
                for (var _$Q_ = 0, _$TO = 1; _$TO < _$HY; ++_$TO) {
                        _$o4 = _$5X.charCodeAt(_$TO);
                        if (_$o4 >= 40 && _$o4 < 92) {
                                _$o4 += _$KJ;
                                if (_$o4 >= 92)
                                        _$o4 = _$o4 - 52
                        } else if (_$o4 >= 97 && _$o4 < 127) {
                                _$o4 += _$KJ;
                                if (_$o4 >= 127)
                                        _$o4 = _$o4 - 30
                        }
                        _$_Z[_$Q_++] = _$o4
                }
                return _$Uy.apply(null, _$_Z)
        }
                
        _$HY('o~q}u`euf3ffdyrgfu`fkbu`xduv`wuf3ffdyrgfu`qsfya~`sq||`efdy~w`bdafafkbu`e|ysu`$_vb~W`eb|ysu`qbb|k`3sfyhuJArzusf`dueg|f`sxqd5atu3f`rgffa~`eu~t`vad}`ratk`}ageu}ahu`xqeAi~Bdabudfk`xaef~q}u`|asqfya~`abu~`eb|yf`euf;~fudhq|`xffbe,`s|ys{`sa~sqf`}ufxat`faEfdy~w`~atuFkbu`adywy~`v|aad`badf`$_~t`:F?>9u~udys7|u}u~f`fqw@q}u`saa{yu`$_<C~x`exai?atq|6yq|aw`du}ahu5xy|t`{uk5atu`bqdu~f@atu`wufFy}u`duqtkEfqfu`ujus`bqfx~q}u`euqdsx`fuef`yvdq}u`eufFy}uagf`:F?>8ad}7|u}u~f`hyeyry|yfk`qbbu~t5xy|t`qtt7hu~f>yefu~ud`y~tujut64`esdybf`a~duqtkefqfusxq~wu`uhq|`y~~ud:F?>`hq|gu`7{sB`|asq|Efadqwu`a~egr}yf`arzusf`bdafasa|`sa~fu~f`s|a~u@atu`y~tujAv`qeeyw~`idyfu`tasg}u~f`du}ahu7hu~f>yefu~ud`dag~t`efk|u`$_hh5;`dub|qsu`vg~sfya~`?ysda?ueeu~wud`geud3wu~f`ixy|u`a~s|ys{`y~bgf`suy|`?qfx`xyttu~`fqdwuf`|aqt`}rezmkexsv`~g}rud`sduqfu7|u}u~f`wuf7|u}u~fe4kFqw@q}u`wuf7|u}u~f4k;t`qffqsx7hu~f`$_vxV`s|yu~f6qfq`egr}yf`fy}uEfq}b`va~fe`A~|k a~u hqdyqr|u tus|qdqfya~ q||aiut y~ vadTTy~ |aab`fdq~eyu~f`qdyfk`tyeqr|ut`fkbuav`sxqdeuf`egbud`|u~wfx`#v*X`?ej}|XTJ?>:FFBTYTV`fa6qfqGD>`asd_dtkfigDsddqqmujgnh`qbb|ysqfya~5qsxu`}g|fybqdfUvad}Stqfq`hqd wuf3ffdyrgfu/vg~sfya~N~q}uOmdufgd~ sgd_u|uTwuf3ffdyrgfuN~q}uO-o-`qffdyrgfue`Marzusf 3ddqk]`bgex@afyvysqfya~`hayt`F=_EFD;@9`VVVV`qffdHudfuj`bgr|ys`efabBdabqwqfya~`l_,zcze~ld_VQR_+zxfiyzi9_jzcze~ld9xvcc,zcze~ld`$_vV`xqex`su||g|qd`8EE44`qssu|udqfya~`fdq~evud5xq~~u|`~7hdo5od|hu`fdgu`sduqfuArzusfEfadu`?ej}|XTJ?>:FFBT[TV`du}ahu3ffdyrgfu`b|gwy~e`o__vf{jwf_wjs~ishw6__kwtvf{jwf_wjs~ishw6__gw~wb{ia_wjs~ishw6__xlvf{jwf_wjs~ishw6__vf{jwf_ibkfsddwv6__kwtvf{jwf_ibkfsddwv6__gw~wb{ia_ibkfsddwv6__xlvf{jwf_ibkfsddwv6__kwtvf{jwf_guf{dh_xibu6__kwtvf{jwf_guf{dh_xb`fdkmdufgd~ Niy~tai y~efq~suav Iy~taiO-osqfsxNuOmo`?ej}|XTEudhudJ?>:FFB`sa|ad6ubfx`fWY/ebisbqf~|N3f}bq|k ,|~efkb 4kfNVllig|wwN5boa|k|N[bisbqf~| -brb +3 /ol FH 3efkNq|elj|N+Z 2j|oq_[ qbpq 1bdri|oNW(-/ol@ifdeqN[bisbqf~| +3 GF +fdeq XuqbkabaN[bisb,_(kaf|N2XV1l}lql+fdeq UliaN.1 ,le|kqv 4kf~lab 1bdri|oNWolfa 2|kp 3e|fN*|kk|a| 2|kd|j ,-NWWV 4~ebkN~il~hECDI_sDADN2|jprkd*|kk|a|1bdri|oN,( +T-3(-Z UliaN2|jprkd2|kp-rjF+ +fdeqNsboa|k|N[bisbqf~|-brb3efkN2XVY|ii}|~hN2|jprkdXjlgfN3birdr 2|kd|j ,-NV|oolfp Zlqef~ 2VNYivjb +fdeq 1l}lql +fdeqN2l,T@Wfdfq +fdeqN2l,V 2|kp 1bdri|oN[87f8r|k)NppqNp|jprkd@p|kp@krjG3Ndj_jbkdjbkdN+lefq *|kk|a|Nqfjbp kbt olj|kNp|jprkd@p|kp@krjG+Npbofc@jlklpm|~bN2|jprkd2|kp-rj@F3 3efkNVlilo.24(@73efkNWolfa -|phe 2efcq TiqN2|jprkd3birdr1bdri|oNUbkd|if .32N,( +|k3fkd_ZU .rqpfab 82NY9,f|l6r_ZUDKCFCNebisb@kbrb@obdri|oN223 ,bafrjNVlrofbo -btN*ejbo ,lkarihfof UliaN[bisbqf~| +3 EF 4iqo| +fdeq XuqbkabaN[bisbqf~| +3 EH 4iqo| +fdeqN1l}lql ,bafrjNWolfa 2|kp UliaNdlravNp|kp@pbofc@~lkabkpba@ifdeqN2YfkaboNklql@p|kp@~gh@jbafrjNjfrfN,1l~hv /1V UliaNTkaolfaVil~h 1bdri|oN2|jprkd2|kp-rj@G+ +fdeqNp|kp@pbofc@qefkNT|/|kd8|boN~|pr|iNU- ,le|kqv.3 UliaNu@ppqN-lql2|kp,v|kj|o9|tdvfN[bisbqf~| +3 FF 3efk XuqbkabaNTpeibv2~ofmq,3 TiqN-lql 2|kp Wbs|k|d|of 4(N1l}lql Vlkabkpba UliaN1l}lql ,bafrj (q|if~NjfrfbuN-lql 2|kp Zrojrhef 4(N223 5fbqk|jbpb +fdeqN+Z_.ofv|Nev~lccbbNu@ppq@riqo|ifdeqNWY[[url=mailto:bfT6J@TNY9967U3.3_4kf]bfT6J@TNY9967U3.3_4kf[/url]~labNWbs|k|d|of 2|kd|j ,- UliaNp|kp@pbofc@jlklpm|~bN/|a|rh Ullh UliaN+Z@Y98fkdUf*|f2er@2DH@5EAEN+Z@Y98fkdUf*|f2er@2DH@5EAFN[bisbqf~|-brb+3 /ol FH 3eN,f~olplcq [fj|i|v|N2|jprkd2|kpY|ii}|~hN223 ,bafrj (q|if~NTkaolfaXjlgfN2|jprkd2|kp-rj@F1N(3V 2qlkb 2bofcNp|kp@pbofc@pj|ii~|mpNu@ppq@jbafrjN+Z_2fke|ibpbN1l}lql 3efk (q|if~N~bkqrov@dlqef~NVil~hlmf|N+rjfklrp_2|kpNYilofaf|k 2~ofmq TiqN-lql 2|kp Zrojrhef UliaN+3[829* UliaNZ2_3e|fN2|jprkd-bl-rj_F3_ENTo|}f~Ne|kp@p|kp@kloj|iN+lefq 3birdrN[80f[bf@HC2 +fdeqN+fkapbv clo 2|jprkdNT1 Vovpq|iebf WUN2|jprkd 2|kp ,bafrjNp|jprkd@p|kp@krjGHNe|kp@p|kp@}liaN+rjfklrp_2~ofmqN223 VlkabkpbaN2|jprkdWbs|k|d|of1bdri|oNTkg|i ,|i|v|i|j ,-N2|jprkd3e|f;qbpq<NY9+|k3fkd[bf@,@ZUDKCFCN[b}obt .32NZ2GH_To|};Tkaolfa.2<N2|jprkd 2|kp +fdeqNVel~l ~llhvNebisb@kbrb@qefkN/- ,le|kqv.3 ,bafrjN+Z@Y9*|3lkd@,DL@5EAGNWolfa 2bofcN2|jprkd2fke|i|1bdri|oNebisbqf~|N+Z@Y9*|3lkd@,DL@5EAEN-lql 2|kp Wbs|k|d|of 4( UliaN223 +fdeqNWY/XjlgfNtb|qeboclkqkbt 1bdri|oN1l}lql-rjF1NW(-/ol@jbafrjN2|jprkd 2|kp -rjHHN223 [b|sv (q|if~N+Zil~hG 1bdri|o_CKCHNZblodf|Nklql@p|kp@~ghN3birdr 2|kd|j ,- UliaN,(4( X7 -loj|iN[80f[bf@JH2 UliaN-lql2|kp,v|kj|o9|tdvf UliaNvrklpmol@}i|~hNebisb@kbrb@kloj|iN+rjfklrp_2bofcN3, ,le|kqv.3 -loj|iN2|jprkd2|kp-rj@F+s +fdeqN2|jprkd 2|kp -rjGHN2j|oqZlqef~ ,bafrjNdblodf|N~|pr|i@clkq@qvmbN2|jprkd 2|kp UliaNpj|ii@~|mfq|ipN,Yfk|k~b /1V UliaNY9+|k3fkd[bf_ZUDKCFCN2|jprkdTojbkf|kN1l}lql UliaN~bkqrov@dlqef~@}liaNu@ppq@eb|svN223 +fdeq (q|if~N3e|o+lkNu@ppq@ifdeqNWfk}li 1bdri|oN2|jprkdUbkd|if1bdri|oN*- ,le|kqv.32j|ii ,bafrjNevmrobN2|jprkd3|jfi1bdri|oN,|i|v|i|j 2|kd|j ,-N-lql 2|kp *|kk|a| 4(Nebisb@kbrbN[bisbqf~| +3 HH 1lj|kN-lql 2|kp *|kk|a| UliaN2|kmv|N2|jprkd/rkg|}f1bdri|oNp|jprkd@p|kp@krjG+sN+Z_*|kk|a|N2|jprkd 2|kp 1bdri|oN9|tdvf@.kbNWolfa 2bofc Ulia (q|if~NY9*T3)6N~lrofbo kbtN2|jprkdXjlgf1bdri|oN,(4( X7 UliaNTkaolfa XjlgfN-lql -|phe To|}f~ 4(N+VW VljNYrqro| ,bafrj U3N5fsl@buqo|~qNU|kdi| 2|kd|j ,- UliaNe|kp@p|kp@obdri|oN2-rj@F1N2-rj@F3Ne|kp@p|kpN223 4iqo| +fdeqN1l}lql 1bdri|oN1l}lql +fdeqN[|krj|kNkbtiddlqef~NWY[bfT6H@TNe|kp@p|kp@ifdeqN/i|qb Zlqef~N2-rj@F+N[bisbqf~| +3 GH +fdeqN,v|kj|o 2|kd|j 9|tdvf UliaNid@p|kp@pbofc@ifdeqN,(4( X7 +fdeqN1l}lql 3efkN2l,T UliaN/|a|rhN2|jprkd 2|kpN2m|~flrp_2j|iiV|mNp|kp@pbofcNW5 ,le|kqv.3 ,bafrjN2q|}ib_2i|mNjlk|~lNYivjb@+fdeqNcwwvp@alpmvN2~obbk2|kpN~il~hECDIN1l}lql Vlkabkpba Ulia (q|if~NTof|iN*- ,le|kqv ,bafrjN,lqlv|+,|or 6F jlklN[|kapbq VlkabkpbaN1l}lql (q|if~N[3V [|kaN223 4iqo| +fdeq (q|if~N223 5fbqk|jbpb 1lj|kN-lql -|phe To|}f~ 4( UliaN~ekcwue@jbafrjN2-rjVlka@F3N~bkqrov@dlqef~@obdri|oNabc|riq_ol}lql@ifdeqN-lql 2|kp ,v|kj|oN,v|kj|o 2|kd|j ,-NTmmib Vlilo XjlgfNtb|qeboclkq1bdN2|jprkd,|i|v|i|j1bdri|oN|of|iNWolfa 2bofc UliaNV/lF /1V UliaN,( +T-3(-ZN2|jprkd*lob|k@1bdri|oNqbpqGH 1bdri|oNpmfofq_qfjbNWbs|k|d|of 2|kd|j ,-N2~obbk2bofcN1l}lqlN~ropfsb@clkq@qvmbN23[bfqf_sfslN~ekcwueN2|jprkd Vil~hYlkq FTN1l}lql Vlkabkpba 1bdri|oNp|jprkd@kbl@krjF1NZ) ,le|kqv.3 ,bafrjNVeriel -brb +l~hNol}lql@krjF+Nebisb@kbrb@riqo|+fdeqbuqbkabaN2|jprkd.ofv|1bdri|oN2|jprkd2|kp-rj@G+s +fdeqN,8fkd[bf_DKCFC_VE@UliaNWY/2e|l-s6H@ZUN1l}lql Ui|~hNebisb@kbrb@riqo|ifdeqNdj_ufebfN+Zil~hG +fdeq_CKCHNZrg|o|qf 2|kd|j ,-N,|i|v|i|j 2|kd|j ,- UliaNol}lql@krjF1N237febf_sfslNY99erk8r|k_ZUDKCFCNklql@p|kp@~gh@ifdeqN~lilolpN-lql 2|kp ZrojrhefN-lql 2|kp 2vj}lipN1l}lql +fdeq (q|if~N+lefq 3|jfiN~ropfsbNabc|riq_ol}lqlNUe|pefq|Vljmibu2|kp UliaN+Z_-rj}bo_1l}lql 3efkNjlklpm|~ba@tfqelrq@pbofcpN[bisbqf~| +3 FH 3efkNp|jprkd@p|kp@krjF+5NW(-/olN)ljlie|ofNp|kp@pbofc@ifdeqNebisb@kbrb@}i|~hN+lefq Ubkd|ifN,v|kj|o 2|kd|j 9|tdvfNWolfa 2bofc (q|if~N1l}lql Ulia (q|if~N-|krjZlqef~N2lkv ,l}fib 4W Zlqef~ 1bdri|oNZblodf| Ulia (q|if~Np|jprkd@p|kp@krjF+sNvrklp@qefkNp|jprkd@kbl@krjF3@~lkaN-lql 2|kp ,v|kj|o 4( UliaNidpbofcNY98lr[bf@1@ZUDKCFCN+lefq /rkg|}fN}|phbosfiibNp|jprkd@p|kp@krjG3sNp|jprkd@p|kp@qefkN+Z XjlgfNTkg|if-bt+fmfN2|jprkd2|kp-rj@G3 3efkN2|jprkd*lob|k@UliaNjfrfbu@ifdeqN-lql 2|kp *|kk|a|N1l}lql -loj|i (q|if~NZblodf| (q|if~Np|kp@pbofc@jbafrjN2j|oq 9|tdvfN1l}lql Vlkabkpba (q|if~N-lql 2|kp *|kk|a| 4( UliaNWY/ 2~ 2|kp [brbFC_DCFN+Z_-rj}bo_1l}lql UliaN/|a|rh UllhNu@ppq@~lkabkpbaN2rkpefkb@4~ebkN1l}lql Ui|~h (q|if~N1fkdl Vlilo XjlgfNWbs|k|d|of .32N2j|oq 9|tdvf /olNY9+|k3fkd[bf@,@ZU*NTkaolfaVil~h@+|odb 1bdri|oNmolmloqflk|iiv@pm|~ba@tfqelrq@pbofcpNVrqfsb ,lklNqfjbpN+Z 2j|oq_[ qbpq UliaNW(-/ol@+fdeqNp|kp@pbofc@}i|~hN+lefq Wbs|k|d|ofNmolmloqflk|iiv@pm|~ba@tfqe@pbofcpNp|jprkd@p|kp@krjF+N,8lrkd /1V ,bafrjNWYZlqef~/6H@U(ZH[*@2.-8Ne|kp@p|kp@jbafrjN223 [b|svN+Z@Y99erk8r|k@,CE@5EAEN,v|kj|o4-bt 1bdri|oN-lql -|phe To|}f~ UliaN2|jprkdZrg|o|qef1bdri|oNc|kq|pvNebisb@kbrb@ifdeqN[bisbqf~| -brb .32 UliaNklql@p|kp@~gh@}liaNp|jprkd@p|kp@krjF1N+fkapbv 2|jprkdNp|jprkd@p|kp@krjF3N2~obbk2bofc,lklNX3orjm ,v|kj|o_96Nebisb@kbrb@qefkbuqbkabaN-lql -|phe To|}f~N+Z_Zrg|o|qfN2j|oq_,lklpm|~baN3|jfi 2|kd|j ,-N+Z Xjlgf -lkT,XN1l}lql Vlkabkpba +fdeq (q|if~Ndj_gfkdh|fNY9+|k3fkd*|k[bf_ZUDKCFCNidqo|sbiNm|i|qfklNZblodf| UliaNWolfa 2|kpN+Z_/rkg|}fN2j|oqZlqef~ UliaN2|jprkd 2|kp 3efkN223 Vlkabkpba UliaNVljf~p_-|ooltN~lrofboN.ofv| 2|kd|j ,-Nebisb@kbrb@ifdeqbuqbkabaNY9+|k3fkd[bf@1@ZUDKCFCNT1 Vovpq|iebf[*2V2 WUNpbofcN13628rb1lraZlZCsD@1bdri|oN,f|l6r_mobsNY98D*N+Z_-rj}bo_1l}lql 1bdri|oNTkaolfaVil~hN2l,T 1bdri|oN[80f[bf@GC2 +fdequNid@p|kp@pbofcNW|k~fkd 2~ofmq UliaNabc|riqNpb~@ol}[url=mailto:lql@ifdeqNVlilo.24]lql@ifdeqNVlilo.24[/url](@1bdri|oNqbpq 1bdri|oN3|jfi 2|kd|j ,- UliaNY98fkdUf7fkd2er@2DIN1l}lql-rjF+ +fdeqNjlklpm|~ba@tfqe@pbofcpNp|jprkd@p|kp@krjFHNVlli g|wwN2|jprkd-bl-rj@F+N237fkdh|fN2~obbk2|kp,lklNWY/6|6|6H@ZUN2|jprkd2|kp-rj@F+ +fdeqNU|kdi| 2|kd|j ,-NZrojrhef 2|kd|j ,-N2XV1l}lql+fdeqNevclkuo|fkN,8fkd[bfZUDKCFCV@UliaNp|jprkd@p|kp@ifdeqN[bisbqf~| +3 IH ,bafrjNWolfa 2|kp Y|ii}|~hN1l}lql 3bpqD UliaN-lql 2|kp ,v|kj|o UliaNp|kp@pbofc@~lkabkpba@~rpqljN2|jprkd-bl-rj@F3N2|jprkd 2|kp -rjFHNjlklpm|~bN3+ ,le|kqv ,bafrjNebisb@kbrb@jbafrjN+3[829*N1l}lql Vlkabkpba ~rpqljb UliaN,v|kj|oFNWolfa 2|kp Wbs|k|d|ofN2e|l-s_mobsNp|jprkd@kbl@krjF+NY9+|k3fkd[bf@X+@ZU*NvrklpNp|jprkd@kbl@krjF3N3fjbp -bt 1lj|kNebisb@kbrb@}liaNklql@p|kp@~gh@obdri|oN-lql 2|kp Zrojrhef 4( UliaNW(-/ol@}i|~hNY9+|k3fkd[bf@X+@ZUDKCFCN223 5fbqk|jbpb ,bafrjN1l}lql Vlkabkpba +fdeqN223 5fbqk|jbpb UliaNT1 W)@**NWolfa 2|kp 2X,VN-lql 2|kp ,v|kj|o 4(NVljfkd 2llkN,8rmmv /1V ,bafrjN1lpbj|ovN+lefq Zrg|o|qfN1l}lql Vlkabkpba ~rpqlj UliaNY9+|k3fkd[bf2@1@ZUN[bisbqf~| -brb .32N*|fqf_mobsN1l}lql@UfdVil~hNY98U*2)6N[|kapbq Vlkabkpba UliaN2|jprkdZblodf|kNW|k~fkd 2~ofmqNp|kp@pbofc@~lkabkpbaNe|kp@p|kp@qefkN2|jprkd2|kp-rj@G3s 3efkN+lefq .af|NUe|pefq|Vljmibu2|kp`y~efq~suav`qtt4uxqhyad`9ufAdywy~q|Gd|`sa~~usfya~`y~s|gtu`vdq}u`dufgd~ qMr]N`sxy|tdu~`2turgwwud`\'~g||\' ye ~af q~ arzusf`vg~s`$_h<Fb`dvdajhs)hccdm`esduu~K`@g}rud`vq|eu`eds7|u}u~f`d$1qd6XWqnvrdqXk~rrhbA6XWqnvrdq.drr~fdXdmsdq`gd|N#tuvqg|f#geudtqfqO`eufDucguef:uqtud`y}badf`}ageuAhud`}ufq`?ej}|TJ?>:FFB`v@p:zm3tww3z}xAzzwM@zrzb:~p`~qfyhu`wq}}q`wufFy}ula~uAvveuf`tqfqeSfe`__a~|aqt__`g5+.h{uan@-U6`zresxu}u,UUcgugu_xqe_}ueeqwu`eufFy}u`yfu}`?76;G?_8>A3F`_r|q~{`v|aqf`#W)u`ujfu~te`v__dpmo}tcp}_~n}t{a_qy`Ducguef`?ej}|XTEudhudJ?>:FFBTYTV`s|yu~f;~vad}qfya~`fxu~`?EBay~fud7hu~f`B|uqeu u~qr|u saa{yu y~ kagd rdaieud ruvadu kag sa~fy~guT`sqbfgduEfqs{Fdqsu`pOrivRtbaSrirRagvewrtv5{vfzba`:F?>Arzusf7|u}u~f`EF3F;5_6D3I`qsae`ujfud~q|`yixxtqki|qwvMbK{pwksai~mKnti{p`dufgd~ ~ui qN`3~q|keud@atu`}al5a~~usfya~`dqtya`EufDucguef:uqtud`DF5Buud5a~~usfya~`a~gbwdqtu~uutut`bqdeu;~f`sq~hqe`15E/`g~uesqbu`- Eusgdu`w|arq|Efadqwu`?ej}|XTJ?>:FFB`p[vr}+zuvb7[vr}+zuvb1g~2 Jtgziv- Lbageb} 1<;6szg2`?ysdaeavfTJ?>:FFBTWTV`sqfsx`Budvad}q~suAreudhud`wuf5a~fujf`tuvqg|fBduhu~fut`avveufFab`sa~fqy~e`tqfq,`$r_b|qfvad}`xffbe,UU`:;9:_;@F`arzusfEfadu@q}ue`fxye`skw<Q`CC4daieud`Ahuddytu?y}uFkbu`ljzcze~ld`iytfx`}ageu?ahu`sxqd`|>jg?43tl4xl_<508<,_`rweag~t`y7wd+xxmizivkm`baeyfya~`sqeu`b6lzqfE[fufdujpo`fagsxu~t`duvduex`$r}8VqJL|D}|HkG:<`bdab`|qef;~tujAv`sq||rqs{`~g||`G~u~s|aeut efdy~wT`t@dvpxCvzrQ@dvpxCvzr`rD~v~f`wuf3ffdyr>asqfya~`<EA@`~atuHq|gu`9q}ubqt`rufq`__q~sxad__`avveuf>uvf`{c\\yF\\Ctgzo|k iujk\\]\\yFe`bqdeu`tqfq`$_vd`bqs{qwu`daie`ArzusfT;~zusfutEsdybfTuhq|gqfu`abu~ud`}ageugb`exu~zyq~`turgwwud`ufxud~uf`$_s6da`F7?BAD3DK`mmyvxh}lyh`dub|qsu5xy|t`BAEF`~g};fu}e`sqbfgdu`tasg}u~fSvdqw}u~f`va~f`vydef5xy|t`vda}5xqd5atu`iur{yf;~tujut64`Bay~fud7hu~f`iur{yfDucguef8y|uEkefu}`sxqd3f`tuesdybfya~`pfcz_ybb|vu5~bmJaz~rgzba(greg)z~v5~bmRauvkvuMK5~bm[vdhvfgJaz~rgzbaOer~v`wuf4qffudk`{;?+zrJ;?+zr`qrea|gfu`dueba~euFujf`saa{yu7~qr|ut`mdyjifuhayh8__di8__diMffydx,ynj8ye/yvNhemiyh`vy~q|`bdu|aqt`=ukraqdt`r|gufaafx`sq~su|4grr|u`ujusEsdybf`fdkmdufgd~ __vy|u~q}u-osqfsxNuOmo`hqd sgd_u|u / fxye-`iyfx`x__bnkm{ran{_naju~j}n`efqfge`fa8yjut`tyeb|qk`egrefd`M~g||] ye ~af q~ arzusf`jPzkh+SU=+SU`L*J:<<KTr}8VqJL|D}|HkG:<NO`euf;fu}`.U$W`|aqtut`Du}ahu7hu~f>yefu~ud`a~qgfasa}b|ufu`$r_sq||:q~t|ud` edv|j `bdafusfut`}qfsx`wafa`tdqi3ddqke`}utyq6uhysue`s|aeu`iurefadu`iur{yfDF5Buud5a~~usfya~`5ag~f`fujfUzqhqesdybf`qrefdqsf`budvad}q~su`Efadqwu`w$ryyu$L$$vyqqo|L$$v}zL$$v}|lL$rnd$L$|okne/yno-v|okne1doma~on5x@rs}2|kwoL$}nd$L$aso$`|q~wgqwue`$_vr`euf>asq|6uesdybfya~`eagdsu`U,geud_va~fe`F=_@G?47D`esda||`$r_vufsxCgugu`.!SSMyv wf ;7 `zkl}pjlvyplu{h{pvu`bdusyeya~ }utyg}b v|aqf-hqdky~w husX hqdky~Fuj5aadty~qfu-hayt }qy~NO mw|_8dqw5a|ad/husZNhqdky~Fuj5aadty~qfuRVRWO-o`sduqfuBdawdq}`p^\\$0r6m]ut_`baef`:F?>7|u}u~f`fujfUxf}|`.!SS`arzusfEfadu`v}xzneO?plw=wlfp} 4S 0zya}zwOR`|y~{Bdawdq}`bdusyeya~`yu{~q{qjqtq|ckpivom`7~fyfk`p~fLevuvagzr}f`cds{|}6a7jfxI<y:3bWeHK=GYD8?Ci*;9vBA+Xrh>@zT)lJ4qE~gVF5(wk_ZLu[tmonp !#$%NOPQRS-/12M]^`g~yvad}Xv`zqhqesdybf,`p*L,vsNkg5htjvs`dub|qsuEfqfu`ha|qfy|u`sduqfu6qfq5xq~~u|`geu efdysf`adywy~q|Fqdwuf`u__ru~qr{f__N_ru~qr{f_@qmpq~;{pq`zqhqesdybf, haytNVO-`G~ujbusfut sxqdqsfud, `m"abfya~q|" , M m"Dfb6qfq5xq~~u|e" , fdguo ]o`G~fud}y~qfut }g|fy|y~u sa}}u~f`UF)3kFdjaIj9t`Egr}yf`fy}u`dueba~eu`dq~wu?y~`fdy}`sxus{raj`L*J:z`sa~ef`E7>75F hq|gu 8DA? 7{sB_f I:7D7 ~q}u/1`8|aqfYX3ddqk`9ufDueba~eu:uqtud`avveufJ`s#dP^b#:#d{|d{}d{6d{ad{7d{jd{fd{xd{Id{<d{yd{:d{gd|fdE6`duvuddud`k*RT<*z|Qljd`~atu@q}u`wufDueba~eu:uqtud`.}ufq\\eQxffbSucgyh/M"\']1duvduexM"\']1\\e`ek~sxda~ylut`ujbadf`vy|u~q}u`abu~6qfqrqeu`b__ds:fcC__hZs:fc`u~qr|uHudfuj3ffdyr3ddqk`xffb,UU`xuywxf`eqvqdy`E7@6`zresxu}u,UU`bnp{wjtjcjmjuzdibohf`G~u~s|aeut duwg|qd ujbdueeya~T`iur{yfBudeyefu~fEfadqwu`ww}4snnox`___fe___`s|qee`dg~fy}u`}al;~tujut64`bqdu~f7|u}u~f`?yeey~w sqfsxUvy~q||k r|as{e`sK#d6343E3~3V3F3(WJe.e0HiD-8~8$8%8 ?c?*?;?9CcCxCIC:C3CbC?CrChC^C&CPihi)ili~igiL*s*{*a*e*H*K*T;c;d;s;|;};6;?;C;_;Z;L9C9*9;999h9>9S9)9l959(929$vjv^v&vPvNvOvoB}AzASA(AwAnA +w+_+Z+2+$+%+&+P+N+O+,+-X}X6XXXrrGrvr)rlr.r0hZhP>f>x>OzGzvzBSXSrS2S%S&S/S.)g)_)ZlvJlJJJgJ_JZJLJuJ[JtJpJ 4c4d4s4S4)4l4J44454w4&(p$a$7$h$>%W%B%A%+%k&mN;N9N>N@NzQyQ:/|/}/2/$/%/0/T/1/U/,.e0tT=TGTiT*T+TXTr1j1f1x1z141q1E1~1g,x,I,<,ym6mWmG#!#d{3d{bd{$d{%d{ d}gd~&d~P}v!}vT}v1}A3}Ab}rG}r?}r9}rw}rk}r_}rZ}rL}hL}hu}>h}z{}z|}zV}Sx}SI}S<}SW}Se}SH})J})4})q})E})~})g})V})F})2})/}).}lv}l]}J|}J}}Jx}JI}Jy}EX}Er}Eh}E>}E@}Ez}ES}E)}EJ}E47fC7e37eb7=b`qffdyrgfu husX qffdHudfuj-hqdky~w husX hqdky~Fuj5aadty~qfu-g~yvad} husX g~yvad}Avveuf-hayt }qy~NOmhqdky~Fuj5aadty~qfu/qffdHudfujQg~yvad}Avveuf-w|_Baeyfya~/husZNqffdHudfujRVRWO-o`raa|uq~`bgexEfqfu`du}ahu;fu}`\x00`sxqdqsfudEuf`kk{d{fame;{nwdmwl{`kyu|t`dufgd~`rqffudk`vad7qsx`y}b|u}u~fe`uhq|gqfu`|y~u~a`?ej}|XTJ?>:FFBT(TV`F=_D79_7J`wufEgbbadfut7jfu~eya~e`mxebf|}d8xebf|}d}dze8xebf|}dcyju`dwrqNXZVRWWVR[YRVTZO`?ej}|XTJ?>:FFBTZTV`}al;fu}e`s|uqd;~fudhq|`fxdai`q/sq~tytqfu,`$_s{`3radf`sxus{ut`avveuf:uywxf`9ufHqdyqr|u`avveufIytfx`eu|usfut`|qkudJ`tu|ufu`Nuhq|gqfy~w \'~g||MV]\'O`efq~tq|a~u`esduu~`Duw7jb`s|yu~fK`sxqdwy~w`}ueeqwu`Eu~t`}y}uFkbue`wuf;fu}`Yzu3>uEeq(`sxda}u`va~f8q}y|k`tuvqg|f`uhu~f`wufG~yvad}>asqfya~`NfxyeO-`G~ujbusfut fa{u~ `fdq~eqsfya~`adyu~fqfya~`wufEagdsue`g~tuvy~ut`M~qfyhu satu]`CFB_7B7_:AA=`vufsx`hytua`:F?>3~sxad7|u}u~f`bdbqudib5fgsftiCdbqudib_sfgsftiCdifdl/phjoCefdszquZbmmcbdl`iur{yf5a~~usfya~`iyvy`.7?476 yt/`6A?Bqdeud`;||uwq| ~ui|y~u qvfud 2fxdai`avveufG~yvad}`{uk6ai~`dufgd~Hq|gu`|a~w`sxqdwy~wFy}u`AB7@`etgqg~gjgrwaf}lec`\\rM^0]P0NM\\e\\E]P1O.\\U`}ageuAgf`_fe_`sa~fy~gu`iurw|`}ageuGb`u~g}udqfu6uhysue`egrefdy~w`esduu~J`g0a{h.h{uan@0a{h.h{uan:pi; S}pera6 Ukjpnkh :ED?|ep;`|uhu|`.tyh0;7*.Utyh0`$r_eufgb`vy||Efk|u`sq~tytqfu`- bqfx/U`xffb`eiyfsx`s|yu~fJ`puezive`rkfu`u~qr|utB|gwy~`dq~wu?qj`a~ruvadug~|aqt`u~saty~w`bqdu~f`}ageutai~`\\\\`efqfys`}ageuagf`wufExqtudBdusyeya~8ad}qf`hudfuj3ffdyrBay~fud`z~likyp}lyJl}hs|h{l`3ttEuqdsxBdahytud`efqfgeFujf`dD#d,s{s77+7rjMj]fIfW:BW)Wle_eQe/emeoHxHC=x=T=1=o8g8&?y?:?)?l?1CdCWC9CvCVCFCmCoiii*i9iviAi+iO*%*^*1;j;D;8;N;O9W9e9i9L9u9,vfv9vvvAvXvrvzvSvnAWAlAJAFA5+kXdX{X|rarzrShJ>Q>/@p@!@$@&@P@O@.zxz<z3zbzYzDzAz)z2z$S<J!4f4y4:4(q.V%Fm%g%w&o1(1w#X#dd:ddbddeds?d|Cd|zd}od6cd6yd6id6;d6vd6PdaAda+d@udS/dExdEIdE!dE2dLgslJsJ9}yq}9M}9]}+-}+m}E26]G7f?7fL7f[7ft7f!7f2`pJxLbageb}7JxLbageb}`?76;G?_;@F`uddad`|rta/niijs`q|bxq`{ukGb`nwxk|vxbdi|dc`exqtudEagdsu`cds{|}6a7jfxI<y:3bWeHK=GYD8?Ci*;9vBA+Xrh>@zS)lJ4qE~gVF5(wk_ZLu[tp!2$%^&PNOQ/.0T1U,-moM]n `bqeeiadt`~ujfEyr|y~w`$_fe`dq~ta}`sduqfuAvvud`3DEueeya~R3gtyaFdqs{>yefR4uvadu;~efq||Bda}bf7hu~fTbdafafkbuT=7KGBR4|ar6ai~|aqt5q||rqs{R563F3Eusfya~TbdafafkbuTdu}ahuR5EE5xqdeufDg|uR5EEBdy}yfyhuHq|guT5EE_H:R5q~hqeDu~tudy~w5a~fujfX6TbdafafkbuTiur{yf9uf;}qwu6qfq:6R5|ys{6qfqR5|aeu7hu~fTbdafafkbuTy~yf5|aeu7hu~fR5a}ba~u~feTy~fudvqsueT;5a}uf?qd{e7jfu~eya~R6uhysuAdyu~fqfya~7hu~fR8g~sfya~TbdafafkbuTry~tR9ufBudvFuefeR:F?>6asg}u~fTbdafafkbuTsduqfuFagsx>yefR:F?>8ad}7|u}u~fTbdafafkbuTducguef3gfasa}b|ufuR:F?>8dq}uEuf7|u}u~fTbdafafkbuTxqeBay~fud5qbfgduR:F?>8dq}uEuf7|u}u~fTbdafafkbuTiur{yfDucguef8g||Esduu~R;~f|R?FF_I=EufFujfEylu;~tujR?utyq5a~fda||udR?utyq7~sdkbfut7hu~fR@afyvysqfya~RArzusfTbdafafkbuT__tuvy~uEuffud__RArzusfTeuq|RArzusfTeufBdafafkbuAvRAvvesduu~5q~hqeDu~tudy~w5a~fujfX6RBqfxX6TbdafafkbuTqttBqfxRBqk}u~fDueba~euRBudvad}q~suBqy~fFy}y~wRBdueu~fqfya~5a~~usfya~5|aeu7hu~fRDuqtud?atu3dfys|uBqwuREH99dqbxyse7|u}u~fTbdafafkbuT}alDucguefBay~fud>as{REH9Bqffud~7|u}u~fTEH9_G@;F_FKB7_A4<75F4AG@6;@94AJREsduu~Adyu~fqfya~REawag>awy~Gfy|eREagdsu4gvvudREagdsu4gvvudTbdafafkbuTsxq~wuFkbuREbuusxEk~fxueyeGffudq~suRFujfFdqs{>yefTbdafafkbuTwufFdqs{4k;tRG5Iur7jfRIur=yf8|qweR_IJ<ER__$_cyxaaY(V_$__R__vyduvaj__R__{eqr5ee5ag~fR__abudqR__eawag_eusgdu_y~bgfR_tagr|uWW_Rsxda}uRsxda}uTqbbT;~efq||EfqfuRsxda}uTseyRsa~ea|uRtuvqg|fEfqfgeRtasg}u~fTratkTa~}ageuu~fudRtasg}u~fTratkTa~bqwuRtasg}u~fTratkTefk|uTrqs{wdag~t4|u~t?atuRtasg}u~fTratkTefk|uT|y~u4duq{Rtasg}u~fTratkTefk|uT}y~IytfxRtasg}u~fTratkTefk|uT}eFujfEylu3tzgefRtasg}u~fTratkTefk|uTfujf3|yw~>qefRtasg}u~fTratkTjS}eSqssu|udqfad{ukRtasg}u~fTtuvqg|f5xqdeufRtasg}u~fTtasg}u~f7|u}u~fTa~dueyluRtasg}u~fTvy|u5duqfut6qfuRtasg}u~fT}e5qbe>as{Iqd~y~wAvvRtasg}u~fTa~}ageu}ahuRtasg}u~fTa~eu|usfya~sxq~wuRtasg}u~fTesda||y~w7|u}u~fTefk|uTva~fHqdyq~f@g}udysRtasg}u~fTeu|usfya~Rtasg}u~fTeu|usfya~Tfkbu6ufqy|Rujfud~q|Rujfud~q|T3tt8qhadyfuRujfud~q|T;eEuqdsxBdahytud;~efq||utRv|kv|ai_iq||bqbud_zeRwuf?qfsxut5EEDg|ueRwduu~fuqRye@atuIxyfuebqsuRzueya~Ra~uddadRa~}ueeqwuRa~abudqtufqsxuthyuisxq~wuRabu~6qfqrqeuRbqeeiadt_}q~qwud_u~qr|utRbudvad}q~suRexai?atq|6yq|awRfqardaieud_7hu~fRiuqfxud4dytwuRiur{yf3gtya5a~fujfTbdafafkbuTs|aeuRiur{yfDucguef8y|uEkefu}`avveufK`vy~q||k`p__~ggLevrgvOer~v5~ggLh~fgb~S(`rqeu`Budvad}q~suAreudhud7~fdk>yef`qffqsxExqtud`u~qr|u/fdgu`a~ysusq~tytqfu`fdkmdufgd~ __tyd~q}u-osqfsxNuOmo`;@E7DF AD D7B>357 ;@FA 7{sB_f N~q}uR hq|guO H3>G7EN1R 1O`ye@q@`?ageu`q~tdayt`{ukgb`6uhysuAdyu~fqfya~7hu~f`m             \"ysuEudhude\" , M                 m"gd|" , "efg~,efg~VWTeybbxa~uTsa}"oR m"gd|" , "efg~,efg~Tu{ywqT~uf"oR                 m"gd|" , "efg~,efg~Tvit~ufT~uf"oR m"gd|" , "efg~,efg~TytuqeybTsa}"oR                 m"gd|" , "efg~,efg~Tybfu|Tadw"oR m"gd|" , "efg~,efg~Tdyjfu|usa}Teu"oR                 m"gd|" , "efg~,efg~Tesx|g~tTtu"oR m"gd|" , "efg~,efg~T|Twaaw|uTsa},W+YVX"oR                 m"gd|" , "efg~,efg~WT|Twaaw|uTsa},W+YVX"oR m"gd|" , "efg~,efg~XT|Twaaw|uTsa},W+YVX"oR                 m"gd|" , "efg~,efg~YT|Twaaw|uTsa},W+YVX"oR m"gd|" , "efg~,efg~ZT|Twaaw|uTsa},W+YVX"o             ]         o`fxdaie`@q}u ujbusfut`q|udf`6uhysu?afya~7hu~f`sdutu~fyq|e`q~sxad`hudfujBae3ffdyr`>AI_8>A3F`prcc(traL}zt|5rcc(traObthfXhg5rcc(traTvlMbja5rcc(traTvl*c`qgtya`hqd egr}yf/vg~sfya~NOmvadNhqd f/sgd_u|u-f!//tasg}u~f&&N!fTfqw@q}unn\"vad}\"!//fTfqw@q}uTfa>aiud5qeuNOO-Of/fTbqdu~f7|u}u~f-f!//tasg}u~f&&fTegr}yfNOo-`qduq`W*bj \'3dyq|\'`ai~ud6asg}u~f`?ej}|XTEudhudJ?>:FFBT(TV`?ej}|XTEudhudJ?>:FFBT[TV`fuefe`?ej}|XTEudhudJ?>:FFBTZTV`9uf@ujfDuc;6`fujfqduq`tasg}u~f7|u}u~f`tuhysu;t`abfya~e`g~ysatu`ruxqhyad`tufqsx7hu~f`y~fudvqsu`vdq}ue`ujusgfuEc|`vy||Fujf`g~yvad}Avveuf`F=_@3?7`dM#7wjTIn<s3d3lbhbEWjWCeZe!e%eOe1e-HLH]=c=f=^=0GGG8GCG+GrG>GzGJD1D,8V858(8[8t828P8/CsC|C}C7i@iSi5iw*U*-*m*n9v9+v0v1v,vmB4BEAeAKA=ADA?AiA;AB+L+pr7rfrxryr3rWrHr=hph2h$h^hOhU>.>-@6@<z8z;zJzg)X)~)V)w)%)/)0lGJ4J~JVJk4a4j4x4<434=484i4q4F4$4^292B2p22%e%D%8%v%X%4^y^3NYN8N?N*NvNANSNqNENgO1Q6/6/7/^///-.c.d.6.a.30Z0[TYTCT;TAT0TM1S1JUo,s,{,f-T-U--m}mam<Mg]c]G]D#B#d}Bd}Jd}(d}2d>=d>YdzMdS?dEqdEF}>G}>r}>$}>o}@q}@(}@,}zs}zE}zg}Sy}Sb}SK}SY})>})l}l }Jd7W57W^7W]7e{7ez7e)`eu|v`ujbudy}u~fq|Siurw|`000/`9uf3||Dueba~eu:uqtude`u__?B>__6==9_<=B7473@`5D73F7 F34>7 ;8 @AF 7J;EFE 7{sB_f Nyt ;@F797D @AF @G>> BD;?3DK =7K 3GFA;@5D7?7@FR ~q}u F7JF @AF @G>>R hq|gu F7JF @AF @G>>R G@;CG7 N~q}uOO`- ujbydue/`ht8}`tyebqfsx7hu~f`6yebqfsx7hu~f`3DD3K_4G887D`rr*X{z`tagr|u`tg}b3||`\uFEFF`va~f>yef`vy||Dusf`8g~sfya~`efdy~wyvk`fa>aiud5qeu`eqhu`>AI_;@F`bqdeu8da}Efdy~w`fa9?FEfdy~w`}ageuahud`u|u}u~fe`a~uddad`k6|mfylagf67 snwj w K f{o Rwl{67I z{xm}}{jI j{lmjf f{o Rwl{67 ; w L ?>>Iu677`g~exyvf`J?>:ffbDucguef`qbbHudeya~`}e5dkbfa`NMVS+]mWRYoN\\TMVS+]mWRYoOmYon NNMVS+qSv]mWRZo,Om)R)oMVS+qSv]mWRZonNMVS+qSv]mWRZo,OmWR)o,nNMVS+qSv]mWRZo,OmWR(o,MVS+qSv]mWRZonNMVS+qSv]mWRZo,OmWR[oN,MVS+qSv]mWRZoOmWRXonNMVS+qSv]mWRZo,OmWRZoN,MVS+qSv]mWRZoOmWRYonNMVS+qSv]mWRZo,OmWRYoN,MVS+qSv]mWRZoOmWRZonNMVS+qSv]mWRZo,OmWRXoN,MVS+qSv]mWRZoOmWR[onMVS+qSv]mWRZo,NN,MVS+qSv]mWRZoOmWR(oOn,NN,MVS+qSv]mWRZoOmWR)on,On,,NvvvvN,VmWRZoOmVRWo,OmVRWoNNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]O\\TOmYRYoNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]OnNMVS+qSv]mWRZo,OmWRZo,NNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]O\\TOmYRYoNX[MVS[]nNXMVSZ]nWmVRWoMVS+]OmVRWoMVS+]OO O`FD;3@9>7_EFD;B`lxvcc)}vekfd9_g}vekfd`eufEudhud6qfq`a~egssuee`biq_jefoujgjfs`xffbSucgyh`g~ujbusfut ~g}rud u~ty~wT`\r\n`iy}qj` xaef `fujf4qeu|y~u`bduhu~f6uvqg|f`cexit(ullscreen`:;9:_8>A3F`gfvS*`g~|aqt`sa}by|uExqtud`G~ujbusfut fa{u~, `]0.y0.Uy0.!Mu~tyv]SS0`}ageu6ai~`ahuddytu?y}uFkbu`agfud:F?>`8EE43`xaef`yfu}Eylu`geuBdawdq}`wn|sbo|Mobkvak~o`uesqbu`gsa|gepreoe|ehepu}d{jca`H7DF7J_E:367D`?utyqEfduq}Fdqs{`Abu~`fagsxue`d#!#s #ddd7dvsys+srs%s&a-an7j7Y7Cj1jmfcf{fyf3fHfhf@xBx+IM<}y^ym:;:z:U3pbdbabjbwW7W4ewH6H7H*HZKcK =+=%Dm848T8n?Y?C?B?@?q?^?P?0?m?]CACXCOCTCnieiKi?i%iP*|*6*G*;*v*A*X*_*L*2*P*/;[;^;.979f939K9D9t9!vIvbvKvGvDvCv4vEvFvpBgB_BLB[BpB]B A7AfAy+d+7+f+I+y+++r+4+E+FX>X4XEXgXFX/X0r{r%rOr1hahxhBh+h)hEh(>D>N> @}@m@]@ z}zazjzez=zrzzS0SoS])9)L)tJsJ)J-Jn4{464G4D4*4z4OqKq9qQqUEUE]~p~&g[g^VVV5VkVLV2V&VOV.F?FiF9FAF$F^FNF/F,FMF 5s535W5Q5.515-(Zw7wGw>kAkqp)p4p5p!!d!a!,2y282C2;2J2t2T$6$K$v$A$X$F%:^A&v&z&-P,NHNNOIO:OeO;ONQaQ<Q&/{0pTKThTl1I1@UqUm,+,r,E,omXM~]8#d]#dc+dchdc)dc4dcodcndd{dd6dd<ddKddgdd5dsbdsedsDds;dsvdsAds@dsldsqdsgdswdsudsOds1ds,dsmd{cd|Zd|td6{d6Id6Wd6=d6Ad6rd6>d6~d6Fd6wd6[d62dX~dradrjdr(drkdrNdrQdr]dhcd>xd>hd>.d>nd@gd@TdzxdzKdz?dzidzAdzXdzSdzldzgdzFdzZdzudz$dz^dz/dz0dzmdE(dEZdEPd~$d~Qd~.d~TdgTdgUdgmdVcdV>dV)dFqdF2d5cd5kd5N}:H}C?}i5}9(}9Z}9Q}vW}vE}vV}vp}v,}B3}A(}At}A2}+1}r3}r=}rY}r8}rC}r;}rv}r(}rM}h4}h[}>=}@H}@4}@_}@U}S })h})t})!})$})Q7|H7a57ak7787797jq7jn7f|7fb7fK7fi7fr7f>7fV7f57f_7f%7x]7I;73X73w7b*7bv7b]7Wr7WE7e07e,7em7Kh7K.7=I7=e7=)7=w7G(7GZ7Gp7G$7GN7G/7GU7Gm7GM`y}qwu`N~uqd \'TTT ~g||MV]TTT\'O`|qkudK`dueba~euJ?>`y~eudf4uvadu`eudhud6qfq`?ej}|YTJ?>:FFB`epkmavB2c}j0j}wcp [F Wmlrpmj`y 9:<M`?ysdaeavfTJ?>:FFB`rduq{`dueuf`ye8y~yfu`o)zcu}ksjwP~sgz8)zcu}ksjwP~sgz`ai~ud7|u}u~f`}e;~tujut64`wuf3||Dueba~eu:uqtude`qradf`3tt7hu~f>yefu~ud`{uktai~`fagsx}ahu`sa}b|ufu`wufBqdq}ufud`eu|usfS`s|uqd`qssu|udqfya~;~s|gty~w9dqhyfk`sduqfu4gvvud`;~vy~yfk`|y~{`A4<75F`}alDF5Buud5a~~usfya~`$_vW`$r_a~4dytwuDuqtk`a~|aqt`r-~qytre xs."qq)Wzy" r{pddxs."r{dxs+XUZUu)V*R*)qZRVVruRqq)WRUUppUUqsrtUq" hxsew."Uai" wtxvwe."Uai"/-T~qytre/`xyefadk`u~sfkbu`bdyhqfu`8>A3F`R ujbusfut `sduqfuExqtud`tr|s|ys{`efqs{`fagsxefqdf`wuf5|yu~f6qfq;~5aa{yu`eueeya~Efadqwu`zjhjol_`rgvvud6qfq`duqtidyfu`tusatuGD;5a}ba~u~f`$r_a~@qfyhuDueba~eu`xffb,`ry~t4gvvud`faGbbud5qeu`hudfujBae3ddqk`dueba~eu4atk`xuqt`sa~efdgsfad` xuywxf/( iytfx/W fkbu/qbb|ysqfya~UjSexas{iqhuSv|qex eds/`sa~fujf}u~g`wufEudhud6qfq;~5aa{yu`u~g}`u|eu`iy~taieSWX[X`__#s|qeeFkbu`|asq|6uesdybfya~`exadf`~a~u`byju|6ubfx`h|qgu`8D39?7@F_E:367D`8y|uDuqtud`_6;H`.ebq~ efk|u/"va~fSvq}y|k,}}||yy-va~fSeylu,WWZbj"0}}}}}}}}}}}||yyy.Uebq~0`ujsubf`:F?>7}rut7|u}u~f`$_KIFG`euf5|yu~f6qfq`wuf7jfu~eya~');
        _$UH = _$ev
        var $_oi = 1732584193;
        var $_po = -271733879;
        var $_sb = -1732584194;
        var $_xn = 271733878;
        
        function f(e) {
                var t, n, i = "0123456789abcdef", a = "";
                for (n = 0; n < e[_$UH[108]]; n += 1)
                        t = e[_$UH[15]](n),
                        a += i.charAt(t >>> 4 & 15) + i.charAt(15 & t);
                return a
        }
        
        function o(e, t, n, a, r, o, s) {
                return i(t ^ n ^ a, e, t, r, o, s)
        }
                
        function c(e) {
                var t, n = "", i = 32 * e["length"];
                for (t = 0; t < i; t += 8)
                        n += String["fromCharCode"](e[t >> 5] >>> t % 32 & 255);
                return n
        }
        
        function n(e, t) {
                return e << t | e >>> 32 - t
        }
        
        function s(e, t, n, a, r, o, s) {
                return i(n ^ (t | ~a), e, t, r, o, s)
        }
                
        function r(e, t, n, a, r, o, s) {
                return i(t & a | n & ~a, e, t, r, o, s)
        }
                
        function t(e, t) {
                var n = (65535 & e) + (65535 & t);
                return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
        }
                
        function i(e, i, a, r, o, s) {
                return t(n(t(t(i, e), t(r, s)), o), a)
        }
        
        function a(e, t, n, a, r, o, s) {
                return i(t & n | ~t & a, e, t, r, o, s)
        }
        
        function l(e, n) {
                e[n >> 5] |= 128 << n % 32,
                e[14 + (n + 64 >>> 9 << 4)] = n;
                var $_XML = 16
                op = 26
                var b64pad = 1;
                var i, l, c, d, u, h = $_oi, f = $_po, p = $_sb, m = $_xn;
        
                _$8K['_$6_'] = -389564586
                for (i = 0; i < e[_$UH[108]]; i += $_XML)
                        l = h,
                        c = f,
                        d = p,
                        u = m,
                        h = a(h, f, p, m, e[i], 7, 513548),
                        m = a(m, h, f, p, e[i + 1], 12, _$8K['_$6_']),
                        p = a(p, m, h, f, e[i + 2], 17, 606105819),
                        f = a(f, p, m, h, e[i + 3], 22, -1044525330),
                        h = a(h, f, p, m, e[i + 4], 7, -176418897),
                        m = a(m, h, f, p, e[i + 5], 12, 1200080426),
                        p = a(p, m, h, f, e[i + 6], 17, -1473231341),
                        f = a(f, p, m, h, e[i + 7], 22, -45705983),
                        h = a(h, f, p, m, e[i + 8], 7, 1770035416),
                        m = a(m, h, f, p, e[i + 9], 12, -1958414417),
                        p = a(p, m, h, f, e[i + 10], 17, -42063),
                        f = a(f, p, m, h, e[i + 11], 22, -1990404162),
                        h = a(h, f, p, m, e[i + 12], 7, 1804603682),
                        m = a(m, h, f, p, e[i + 13], 12, -40341101),
                        p = a(p, m, h, f, e[i + 14], 17, -1502882290),
                        f = a(f, p, m, h, e[i + 15], 22, 1236535329),
                        h = r(h, f, p, m, e[i + 1], 5, -165796510),
                        m = r(m, h, f, p, e[i + 6], 9, -1069501632),
                        p = r(p, m, h, f, e[i + 11], 14, 643717713),
                        f = r(f, p, m, h, e[i], 20, -373897302),
                        h = r(h, f, p, m, e[i + 5], 5, -701558691),
                        m = r(m, h, f, p, e[i + 10], 9, 38016083),
                        p = r(p, m, h, f, e[i + 15], 14, -660478335),
                        f = r(f, p, m, h, e[i + 4], 20, -405537848),
                        h = r(h, f, p, m, e[i + 9], 5, 568446438),
                        m = r(m, h, f, p, e[i + 14], 9, -1019783690),
                        p = r(p, m, h, f, e[i + 3], 14, -187363961),
                        f = r(f, p, m, h, e[i + 8], 20, 1163531501),
                        h = r(h, f, p, m, e[i + 13], 5, -1554681467),
                        m = r(m, h, f, p, e[i + 2], 9, -51403784),
                        p = r(p, m, h, f, e[i + 7], 14, 1735328473),
                        f = r(f, p, m, h, e[i + 12], 20, -1926607734),
                        h = o(h, f, p, m, e[i + 5], 4, -37824558),
                        m = o(m, h, f, p, e[i + 8], 11, -2022574463),
                        p = o(p, m, h, f, e[i + 11], 16, 1839030562),
                        f = o(f, p, m, h, e[i + 14], 23, -35309556),
                        h = o(h, f, p, m, e[i + 1], 4, -1530992060 * (b64pad)),
                        m = o(m, h, f, p, e[i + 4], 11, 1272893353),
                        p = o(p, m, h, f, e[i + 7], 16, -155497632),
                        f = o(f, p, m, h, e[i + 10], 23, -1094730640),
                        h = o(h, f, p, m, e[i + 13], 4, 681279174),
                        m = o(m, h, f, p, e[i], 11, -358537222),
                        p = o(p, m, h, f, e[i + 3], 16, -722521979),
                        f = o(f, p, m, h, e[i + 6], 23, 760291289),
                        h = o(h, f, p, m, e[i + 9], 4, -64036887),
                        m = o(m, h, f, p, e[i + 12], 11, -421815835),
                        p = o(p, m, h, f, e[i + 15], 16, 530742520),
                        f = o(f, p, m, h, e[i + 2], 23, -995338651),
                        h = s(h, f, p, m, e[i], 6, -198630844),
                        m = s(m, h, f, p, e[i + 7], 10, 1126891415),
                        p = s(p, m, h, f, e[i + 14], 15, -1416354905),
                        f = s(f, p, m, h, e[i + 5], 21, -57434055),
                        h = s(h, f, p, m, e[i + 12], 6, 1700485571),
                        m = s(m, h, f, p, e[i + 3], 10, -1894746606),
                        p = s(p, m, h, f, e[i + 10], 15, -105181523),
                        f = s(f, p, m, h, e[i + 1], 21, -2054922799),
                        h = s(h, f, p, m, e[i + 8], 6, 1873313359),
                        m = s(m, h, f, p, e[i + 15], 10, -30611744),
                        p = s(p, m, h, f, e[i + 6], 15, -1560198380),
                        f = s(f, p, m, h, e[i + 13], 21, 1309151649),
                        h = s(h, f, p, m, e[i + 4], 6, -145523070),
                        m = s(m, h, f, p, e[i + 11], 10, -1120210379),
                        p = s(p, m, h, f, e[i + 2], 15, 718787259),
                        f = s(f, p, m, h, e[i + 9], 21, -343485441),
                        h = t(h, l),
                        f = t(f, c),
                        p = t(p, d),
                        m = t(m, u);
                return [h, f, p, m]
        }
        
        function d(e) {
                var t, n = [];
                for (n[(e["length"] >> 2) - 1] = void 0,
                t = 0; t < n["length"]; t += 1)
                        n[t] = 0;
                var i = 8 * e["length"];
                for (t = 0; t < i; t += 8)
                        n[t >> 5] |= (255 & e["charCodeAt"](t / 8)) << t % 32;
                return n
        }
        
        function u(e) {
                return c(l(d(e), 8 * e["length"]))
        }
        
        function p(e) {
                return unescape(encodeURIComponent(e))
        }
        
        function m(e) {
                return u(p(e))
        }
        
        function g(e) {
                return f(m(e))
        }
        var mwqqppz = process.argv[2];
        console.log(g(mwqqppz));
        
        

        此時就可以編寫代碼來請求接口,加密的部分還是調用nodejs來計算
        [Python] 純文本查看 復制代碼
        import requests
        import base64
        import os
        import time
        from Crypto.Cipher import AES
        from Crypto.Util.Padding import pad
        
        def gettime():
            time.sleep(1)
            return str(int(time.time()))+'000'
        
        def main():
            # m為12位時間截,末尾增加一個0,除去最后一位后base64作為ecb的key
            # f為10位時間截,末尾增加三個0
            popularitylist = []
            m = str(int(time.time()*1000))
            f = gettime()
            data = ''
            nodejs = os.popen('node 0501 '+f)
            data += nodejs.read().replace('\n', '')+','
            nodejs.close()
            for i in range(3):
                nodejs = os.popen('node 0501 ' + gettime())
                data += nodejs.read().replace('\n', '') + ','
                nodejs.close()
            nodejs = os.popen('node 0502 '+m)
            cm = nodejs.read().replace('\n', '')
            data += cm
            nodejs.close()
            key = base64.b64encode(m[:-1].encode())
            cryptor = AES.new(key=key, mode=AES.MODE_ECB)
            data = base64.b64encode(cryptor.encrypt(pad(data.encode(), AES.block_size))).decode()
            headers = {
                'cookie': 'm='+cm+'; RM4hZBv0dDon443M='+data
            }
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/api/match/5?page='+str(page)+'&m='+m+'&f='+f
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    popularitylist.append(each['value'])
            popularitylist.sort()
            sums = sum(popularitylist[-5:])
            print(sums)
            # 前五名總和:47313
        
        if __name__ == '__main__':
            main()
        


        第六題【接口-查詢參數-值加密】

        打開瀏覽器f12,然后訪問第六題,查看接口的請求

        可以看到其中一個m的加密參數,還有一個q的參數,q的參數值類似與時間戳。這里因為沒有比較特殊的變量名,所以直接在全局搜索接口的部分地址【api/match/6

        可以在主頁中找到請求的邏輯,其中m參數就是由【t】和【window.o】通過r函數得到的,q也是由前面兩個參數拼接而成,接著主要是看這個r函數



        在【t】參數生成的地方下一個斷點,然后刷新,此時成功斷下,此時可以進入r函數內部

        可以看到這些代碼來源于【http://match.yuanrenxue.com/static/match/safety/match6/pf.js】。當【window.o】大于等于6的時候就會強制刷新,否則正常返回
        去到js的最前面,可以看到有一段混淆的代碼

        把這些復制出來,然后去掉最后的【('_');】,把剩下的輸入到控制臺可以得到反混淆的代碼

        這里可以看到【window.o】賦初值為1,再回去看看加密部分的代碼
        當【window.o】小于6的時候,就會執行z函數,熟悉前端的話可以直接看出這里使用的是rsa加密算法

        在【jsencrypt】下可以看到首先被設置了一個固定的公鑰,加密的時候是將兩個傳入的參數拼接,然后進行加密后返回。
        因為這里使用的不是標準的rsa算法,所以就不往這里深入分析,同時也沒有辦法使用python的標準庫進行加密,所以直接使用nodejs去調用js文件計算。
        我在分析的時候發現有四個小坑,這里大致說一下
        1)第一點上面已經說過,有一段混淆的代碼,反混淆后發現是window.o=1,但是搜索發現后面并沒有使用到,所以這里可以直接刪除

        2)因為在node中沒有BOM,所以【window】是用不了的,所以要在js最前面加上【window = global;】
        3)下面有一句代碼重置了我們前面第二條加的代碼,所以這一句要注釋或者刪掉

        4)在js代碼中間的地方,有一個xe的參數被混淆了,這里會導致我們rsa加密時提示內容的長度太長了,將這部分代碼復制到瀏覽器的【Console】然后回車,就可以看到反混淆的內容是【false】,更換回去即可


        最后將js文件保存為【06.js】
        [JavaScript] 純文本查看 復制代碼
        window = global;
        navigator = {};
        var _n;
        !function(i) {
            var s = {};
            //window = {};
            function n(t) {
                if (s[t])
                    return s[t].exports;
                var e = s[t] = {
                    i: t,
                    l: !1,
                    exports: {}
                };
                return i[t].call(e.exports, e, e.exports, n),
                e.l = !0,
                e.exports
            }
            _n = n;
        }({
            encrypt: function(t, e, i) {
                var s, n, r;
                (r = function(t, e, i) {
                    n = [e],
                    (r = "function" == typeof (s = function(t) {
                        function b(t, e, i) {
                            null != t && ("number" == typeof t ? this.fromNumber(t, e, i) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e))
                        }
                        function y() {
                            return new b(null)
                        }
                        function e(t, e, i, s, n, r) {
                            for (; --r >= 0; ) {
                                var o = e * this[t++] + i[s] + n;
                                n = Math.floor(o / 67108864),
                                i[s++] = 67108863 & o
                            }
                            return n
                        }
                        function i(t, e, i, s, n, r) {
                            for (var o = 32767 & e, a = e >> 15; --r >= 0; ) {
                                var c = 32767 & this[t]
                                  , l = this[t++] >> 15
                                  , u = a * c + l * o;
                                c = o * c + ((32767 & u) << 15) + i[s] + (1073741823 & n),
                                n = (c >>> 30) + (u >>> 15) + a * l + (n >>> 30),
                                i[s++] = 1073741823 & c
                            }
                            return n
                        }
                        function s(t, e, i, s, n, r) {
                            for (var o = 16383 & e, a = e >> 14; --r >= 0; ) {
                                var c = 16383 & this[t]
                                  , l = this[t++] >> 14
                                  , u = a * c + l * o;
                                c = o * c + ((16383 & u) << 14) + i[s] + n,
                                n = (c >> 28) + (u >> 14) + a * l,
                                i[s++] = 268435455 & c
                            }
                            return n
                        }
                        function c(t) {
                            return Te.charAt(t)
                        }
                        function l(t, e) {
                            var i = Ie[t.charCodeAt(e)];
                            return null == i ? -1 : i
                        }
                        function p(t) {
                            for (var e = this.t - 1; e >= 0; --e)
                                t[e] = this[e];
                            t.t = this.t,
                            t.s = this.s
                        }
                        function n(t) {
                            this.t = 1,
                            this.s = 0 > t ? -1 : 0,
                            t > 0 ? this[0] = t : -1 > t ? this[0] = t + this.DV : this.t = 0
                        }
                        function m(t) {
                            var e = y();
                            return e.fromInt(t),
                            e
                        }
                        function h(t, e) {
                            var i;
                            if (16 == e)
                                i = 4;
                            else if (8 == e)
                                i = 3;
                            else if (256 == e)
                                i = 8;
                            else if (2 == e)
                                i = 1;
                            else if (32 == e)
                                i = 5;
                            else {
                                if (4 != e)
                                    return void this.fromRadix(t, e);
                                i = 2
                            }
                            this.t = 0,
                            this.s = 0;
                            for (var s = t.length, n = !1, r = 0; --s >= 0; ) {
                                var o = 8 == i ? 255 & t[s] : l(t, s);
                                0 > o ? "-" == t.charAt(s) && (n = !0) : (n = !1,
                                0 == r ? this[this.t++] = o : r + i > this.DB ? (this[this.t - 1] |= (o & (1 << this.DB - r) - 1) << r,
                                this[this.t++] = o >> this.DB - r) : this[this.t - 1] |= o << r,
                                r += i,
                                r >= this.DB && (r -= this.DB))
                            }
                            8 == i && 0 != (128 & t[0]) && (this.s = -1,
                            r > 0 && (this[this.t - 1] |= (1 << this.DB - r) - 1 << r)),
                            this.clamp(),
                            n && b.ZERO.subTo(this, this)
                        }
                        function r() {
                            for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t; )
                                --this.t
                        }
                        function o(t) {
                            if (this.s < 0)
                                return "-" + this.negate().toString(t);
                            var e;
                            if (16 == t)
                                e = 4;
                            else if (8 == t)
                                e = 3;
                            else if (2 == t)
                                e = 1;
                            else if (32 == t)
                                e = 5;
                            else {
                                if (4 != t)
                                    return this.toRadix(t);
                                e = 2
                            }
                            var i, s = (1 << e) - 1, n = !1, r = "", o = this.t, a = this.DB - o * this.DB % e;
                            if (o-- > 0)
                                for (a < this.DB && (i = this[o] >> a) > 0 && (n = !0,
                                r = c(i)); o >= 0; )
                                    e > a ? (i = (this[o] & (1 << a) - 1) << e - a,
                                    i |= this[--o] >> (a += this.DB - e)) : (i = this[o] >> (a -= e) & s,
                                    0 >= a && (a += this.DB,
                                    --o)),
                                    i > 0 && (n = !0),
                                    n && (r += c(i));
                            return n ? r : "0"
                        }
                        function f() {
                            var t = y();
                            return b.ZERO.subTo(this, t),
                            t
                        }
                        function a() {
                            return this.s < 0 ? this.negate() : this
                        }
                        function u(t) {
                            var e = this.s - t.s;
                            if (0 != e)
                                return e;
                            var i = this.t;
                            if (e = i - t.t,
                            0 != e)
                                return this.s < 0 ? -e : e;
                            for (; --i >= 0; )
                                if (0 != (e = this[i] - t[i]))
                                    return e;
                            return 0
                        }
                        function w(t) {
                            if (t === 65537) {} else {
                                t = 60115
                            }
                            var e, i = 1;
                            return 0 != (e = t >>> 16) && (t = e,
                            i += 16),
                            0 != (e = t >> 8) && (t = e,
                            i += 8),
                            0 != (e = t >> 4) && (t = e,
                            i += 4),
                            0 != (e = t >> 2) && (t = e,
                            i += 2),
                            0 != (e = t >> 1) && (t = e,
                            i += 1),
                            i
                        }
                        function d() {
                            return this.t <= 0 ? 0 : this.DB * (this.t - 1) + w(this[this.t - 1] ^ this.s & this.DM)
                        }
                        function g(t, e) {
                            var i;
                            for (i = this.t - 1; i >= 0; --i)
                                e[i + t] = this[i];
                            for (i = t - 1; i >= 0; --i)
                                e[i] = 0;
                            e.t = this.t + t,
                            e.s = this.s
                        }
                        function _(t, e) {
                            for (var i = t; i < this.t; ++i)
                                e[i - t] = this[i];
                            e.t = Math.max(this.t - t, 0),
                            e.s = this.s
                        }
                        function k(t, e) {
                            var i, s = t % this.DB, n = this.DB - s, r = (1 << n) - 1, o = Math.floor(t / this.DB), a = this.s << s & this.DM;
                            for (i = this.t - 1; i >= 0; --i)
                                e[i + o + 1] = this[i] >> n | a,
                                a = (this[i] & r) << s;
                            for (i = o - 1; i >= 0; --i)
                                e[i] = 0;
                            e[o] = a,
                            e.t = this.t + o + 1,
                            e.s = this.s,
                            e.clamp()
                        }
                        function x(t, e) {
                            e.s = this.s;
                            var i = Math.floor(t / this.DB);
                            if (i >= this.t)
                                return void (e.t = 0);
                            var s = t % this.DB
                              , n = this.DB - s
                              , r = (1 << s) - 1;
                            e[0] = this[i] >> s;
                            for (var o = i + 1; o < this.t; ++o)
                                e[o - i - 1] |= (this[o] & r) << n,
                                e[o - i] = this[o] >> s;
                            s > 0 && (e[this.t - i - 1] |= (this.s & r) << n),
                            e.t = this.t - i,
                            e.clamp()
                        }
                        function D(t, e) {
                            for (var i = 0, s = 0, n = Math.min(t.t, this.t); n > i; )
                                s += this[i] - t[i],
                                e[i++] = s & this.DM,
                                s >>= this.DB;
                            if (t.t < this.t) {
                                for (s -= t.s; i < this.t; )
                                    s += this[i],
                                    e[i++] = s & this.DM,
                                    s >>= this.DB;
                                s += this.s
                            } else {
                                for (s += this.s; i < t.t; )
                                    s -= t[i],
                                    e[i++] = s & this.DM,
                                    s >>= this.DB;
                                s -= t.s
                            }
                            e.s = 0 > s ? -1 : 0,
                            -1 > s ? e[i++] = this.DV + s : s > 0 && (e[i++] = s),
                            e.t = i,
                            e.clamp()
                        }
                        function S(t, e) {
                            var i = this.abs()
                              , s = t.abs()
                              , n = i.t;
                            for (e.t = n + s.t; --n >= 0; )
                                e[n] = 0;
                            for (n = 0; n < s.t; ++n)
                                e[n + i.t] = i.am(0, s[n], e, n, 0, i.t);
                            e.s = 0,
                            e.clamp(),
                            this.s != t.s && b.ZERO.subTo(e, e)
                        }
                        function C(t) {
                            for (var e = this.abs(), i = t.t = 2 * e.t; --i >= 0; )
                                t[i] = 0;
                            for (i = 0; i < e.t - 1; ++i) {
                                var s = e.am(i, e[i], t, 2 * i, 0, 1);
                                (t[i + e.t] += e.am(i + 1, 2 * e[i], t, 2 * i + 1, s, e.t - i - 1)) >= e.DV && (t[i + e.t] -= e.DV,
                                t[i + e.t + 1] = 1)
                            }
                            t.t > 0 && (t[t.t - 1] += e.am(i, e[i], t, 2 * i, 0, 1)),
                            t.s = 0,
                            t.clamp()
                        }
                        function T(t, e, i) {
                            var s = t.abs();
                            if (!(s.t <= 0)) {
                                var n = this.abs();
                                if (n.t < s.t)
                                    return null != e && e.fromInt(0),
                                    void (null != i && this.copyTo(i));
                                null == i && (i = y());
                                var r = y()
                                  , o = this.s
                                  , a = t.s
                                  , c = this.DB - w(s[s.t - 1]);
                                c > 0 ? (s.lShiftTo(c, r),
                                n.lShiftTo(c, i)) : (s.copyTo(r),
                                n.copyTo(i));
                                var l = r.t
                                  , u = r[l - 1];
                                if (0 != u) {
                                    var d = u * (1 << this.F1) + (l > 1 ? r[l - 2] >> this.F2 : 0)
                                      , p = this.FV / d
                                      , h = (1 << this.F1) / d
                                      , f = 1 << this.F2
                                      , g = i.t
                                      , m = g - l
                                      , v = null == e ? y() : e;
                                    for (r.dlShiftTo(m, v),
                                    i.compareTo(v) >= 0 && (i[i.t++] = 1,
                                    i.subTo(v, i)),
                                    b.ONE.dlShiftTo(l, v),
                                    v.subTo(r, r); r.t < l; )
                                        r[r.t++] = 0;
                                    for (; --m >= 0; ) {
                                        var _ = i[--g] == u ? this.DM : Math.floor(i[g] * p + (i[g - 1] + f) * h);
                                        if ((i[g] += r.am(0, _, i, m, 0, l)) < _)
                                            for (r.dlShiftTo(m, v),
                                            i.subTo(v, i); i[g] < --_; )
                                                i.subTo(v, i)
                                    }
                                    null != e && (i.drShiftTo(l, e),
                                    o != a && b.ZERO.subTo(e, e)),
                                    i.t = l,
                                    i.clamp(),
                                    c > 0 && i.rShiftTo(c, i),
                                    0 > o && b.ZERO.subTo(i, i)
                                }
                            }
                        }
                        function I(t) {
                            var e = y();
                            return this.abs().divRemTo(t, null, e),
                            this.s < 0 && e.compareTo(b.ZERO) > 0 && t.subTo(e, e),
                            e
                        }
                        function $(t) {
                            this.m = t
                        }
                        function P(t) {
                            return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t
                        }
                        function R(t) {
                            return t
                        }
                        function A(t) {
                            t.divRemTo(this.m, null, t)
                        }
                        function E(t, e, i) {
                            t.multiplyTo(e, i),
                            this.reduce(i)
                        }
                        function M(t, e) {
                            t.squareTo(e),
                            this.reduce(e)
                        }
                        function N() {
                            if (this.t < 1)
                                return 0;
                            var t = this[0];
                            if (0 == (1 & t))
                                return 0;
                            var e = 3 & t;
                            return e = e * (2 - (15 & t) * e) & 15,
                            e = e * (2 - (255 & t) * e) & 255,
                            e = e * (2 - ((65535 & t) * e & 65535)) & 65535,
                            e = e * (2 - t * e % this.DV) % this.DV,
                            e > 0 ? this.DV - e : -e
                        }
                        function O(t) {
                            this.m = t,
                            this.mp = t.invDigit(),
                            this.mpl = 32767 & this.mp,
                            this.mph = this.mp >> 15,
                            this.um = (1 << t.DB - 15) - 1,
                            this.mt2 = 2 * t.t
                        }
                        function B(t) {
                            var e = y();
                            return t.abs().dlShiftTo(this.m.t, e),
                            e.divRemTo(this.m, null, e),
                            t.s < 0 && e.compareTo(b.ZERO) > 0 && this.m.subTo(e, e),
                            e
                        }
                        function j(t) {
                            var e = y();
                            return t.copyTo(e),
                            this.reduce(e),
                            e
                        }
                        function L(t) {
                            for (; t.t <= this.mt2; )
                                t[t.t++] = 0;
                            for (var e = 0; e < this.m.t; ++e) {
                                var i = 32767 & t[e]
                                  , s = i * this.mpl + ((i * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM;
                                for (i = e + this.m.t,
                                t[i] += this.m.am(0, s, t, e, 0, this.m.t); t[i] >= t.DV; )
                                    t[i] -= t.DV,
                                    t[++i]++
                            }
                            t.clamp(),
                            t.drShiftTo(this.m.t, t),
                            t.compareTo(this.m) >= 0 && t.subTo(this.m, t)
                        }
                        function F(t, e) {
                            t.squareTo(e),
                            this.reduce(e)
                        }
                        function K(t, e, i) {
                            t.multiplyTo(e, i),
                            this.reduce(i)
                        }
                        function U() {
                            return 0 == (this.t > 0 ? 1 & this[0] : this.s)
                        }
                        function V(t, e) {
                            if (t > 4294967295 || 1 > t)
                                return b.ONE;
                            var i = y()
                              , s = y()
                              , n = e.convert(this)
                              , r = w(t) - 1;
                            for (n.copyTo(i); --r >= 0; )
                                if (e.sqrTo(i, s),
                                (t & 1 << r) > 0)
                                    e.mulTo(s, n, i);
                                else {
                                    var o = i;
                                    i = s,
                                    s = o
                                }
                            return e.revert(i)
                        }
                        ;function z(t, e) {
                            var i;
                            return i = 256 > t || e.isEven() ? new $(e) : new O(e),
                            this.exp(t, i)
                        }
                        function q() {
                            var t = y();
                            return this.copyTo(t),
                            t
                        }
                        function H() {
                            if (this.s < 0) {
                                if (1 == this.t)
                                    return this[0] - this.DV;
                                if (0 == this.t)
                                    return -1
                            } else {
                                if (1 == this.t)
                                    return this[0];
                                if (0 == this.t)
                                    return 0
                            }
                            return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0]
                        }
                        function J() {
                            return 0 == this.t ? this.s : this[0] << 24 >> 24
                        }
                        function G() {
                            return 0 == this.t ? this.s : this[0] << 16 >> 16
                        }
                        function Y(t) {
                            return Math.floor(Math.LN2 * this.DB / Math.log(t))
                        }
                        function W() {
                            return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1
                        }
                        function Z(t) {
                            if (null == t && (t = 10),
                            0 == this.signum() || 2 > t || t > 36)
                                return "0";
                            var e = this.chunkSize(t)
                              , i = Math.pow(t, e)
                              , s = m(i)
                              , n = y()
                              , r = y()
                              , o = "";
                            for (this.divRemTo(s, n, r); n.signum() > 0; )
                                o = (i + r.intValue()).toString(t).substr(1) + o,
                                n.divRemTo(s, n, r);
                            return r.intValue().toString(t) + o
                        }
                        function Q(t, e) {
                            this.fromInt(0),
                            null == e && (e = 10);
                            for (var i = this.chunkSize(e), s = Math.pow(e, i), n = !1, r = 0, o = 0, a = 0; a < t.length; ++a) {
                                var c = l(t, a);
                                0 > c ? "-" == t.charAt(a) && 0 == this.signum() && (n = !0) : (o = e * o + c,
                                ++r >= i && (this.dMultiply(s),
                                this.dAddOffset(o, 0),
                                r = 0,
                                o = 0))
                            }
                            r > 0 && (this.dMultiply(Math.pow(e, r)),
                            this.dAddOffset(o, 0)),
                            n && b.ZERO.subTo(this, this)
                        }
                        function X(t, e, i) {
                            if ("number" == typeof e)
                                if (2 > t)
                                    this.fromInt(1);
                                else
                                    for (this.fromNumber(t, i),
                                    this.testBit(t - 1) || this.bitwiseTo(b.ONE.shiftLeft(t - 1), at, this),
                                    this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(e); )
                                        this.dAddOffset(2, 0),
                                        this.bitLength() > t && this.subTo(b.ONE.shiftLeft(t - 1), this);
                            else {
                                var s = new Array
                                  , n = 7 & t;
                                s.length = (t >> 3) + 1,
                                e.nextBytes(s),
                                n > 0 ? s[0] &= (1 << n) - 1 : s[0] = 0,
                                this.fromString(s, 256)
                            }
                        }
                        function tt() {
                            var t = this.t
                              , e = new Array;
                            e[0] = this.s;
                            var i, s = this.DB - t * this.DB % 8, n = 0;
                            if (t-- > 0)
                                for (s < this.DB && (i = this[t] >> s) != (this.s & this.DM) >> s && (e[n++] = i | this.s << this.DB - s); t >= 0; )
                                    8 > s ? (i = (this[t] & (1 << s) - 1) << 8 - s,
                                    i |= this[--t] >> (s += this.DB - 8)) : (i = this[t] >> (s -= 8) & 255,
                                    0 >= s && (s += this.DB,
                                    --t)),
                                    0 != (128 & i) && (i |= -256),
                                    0 == n && (128 & this.s) != (128 & i) && ++n,
                                    (n > 0 || i != this.s) && (e[n++] = i);
                            return e
                        }
                        function et(t) {
                            return 0 == this.compareTo(t)
                        }
                        function it(t) {
                            return this.compareTo(t) < 0 ? this : t
                        }
                        function st(t) {
                            return this.compareTo(t) > 0 ? this : t
                        }
                        function nt(t, e, i) {
                            var s, n, r = Math.min(t.t, this.t);
                            for (s = 0; r > s; ++s)
                                i[s] = e(this[s], t[s]);
                            if (t.t < this.t) {
                                for (n = t.s & this.DM,
                                s = r; s < this.t; ++s)
                                    i[s] = e(this[s], n);
                                i.t = this.t
                            } else {
                                for (n = this.s & this.DM,
                                s = r; s < t.t; ++s)
                                    i[s] = e(n, t[s]);
                                i.t = t.t
                            }
                            i.s = e(this.s, t.s),
                            i.clamp()
                        }
                        function rt(t, e) {
                            return t & e
                        }
                        function ot(t) {
                            var e = y();
                            return this.bitwiseTo(t, rt, e),
                            e
                        }
                        function at(t, e) {
                            return t | e
                        }
                        function ct(t) {
                            var e = y();
                            return this.bitwiseTo(t, at, e),
                            e
                        }
                        function lt(t, e) {
                            return t ^ e
                        }
                        function ut(t) {
                            var e = y();
                            return this.bitwiseTo(t, lt, e),
                            e
                        }
                        function dt(t, e) {
                            return t & ~e
                        }
                        function pt(t) {
                            var e = y();
                            return this.bitwiseTo(t, dt, e),
                            e
                        }
                        function ht() {
                            for (var t = y(), e = 0; e < this.t; ++e)
                                t[e] = this.DM & ~this[e];
                            return t.t = this.t,
                            t.s = ~this.s,
                            t
                        }
                        function ft(t) {
                            var e = y();
                            return 0 > t ? this.rShiftTo(-t, e) : this.lShiftTo(t, e),
                            e
                        }
                        function gt(t) {
                            var e = y();
                            return 0 > t ? this.lShiftTo(-t, e) : this.rShiftTo(t, e),
                            e
                        }
                        function mt(t) {
                            if (0 == t)
                                return -1;
                            var e = 0;
                            return 0 == (65535 & t) && (t >>= 16,
                            e += 16),
                            0 == (255 & t) && (t >>= 8,
                            e += 8),
                            0 == (15 & t) && (t >>= 4,
                            e += 4),
                            0 == (3 & t) && (t >>= 2,
                            e += 2),
                            0 == (1 & t) && ++e,
                            e
                        }
                        function vt() {
                            for (var t = 0; t < this.t; ++t)
                                if (0 != this[t])
                                    return t * this.DB + mt(this[t]);
                            return this.s < 0 ? this.t * this.DB : -1
                        }
                        function _t(t) {
                            for (var e = 0; 0 != t; )
                                t &= t - 1,
                                ++e;
                            return e
                        }
                        function bt() {
                            for (var t = 0, e = this.s & this.DM, i = 0; i < this.t; ++i)
                                t += _t(this[i] ^ e);
                            return t
                        }
                        function yt(t) {
                            var e = Math.floor(t / this.DB);
                            return e >= this.t ? 0 != this.s : 0 != (this[e] & 1 << t % this.DB)
                        }
                        function wt(t, e) {
                            var i = b.ONE.shiftLeft(t);
                            return this.bitwiseTo(i, e, i),
                            i
                        }
                        function kt(t) {
                            return this.changeBit(t, at)
                        }
                        function xt(t) {
                            return this.changeBit(t, dt)
                        }
                        function Dt(t) {
                            return this.changeBit(t, lt)
                        }
                        function St(t, e) {
                            for (var i = 0, s = 0, n = Math.min(t.t, this.t); n > i; )
                                s += this[i] + t[i],
                                e[i++] = s & this.DM,
                                s >>= this.DB;
                            if (t.t < this.t) {
                                for (s += t.s; i < this.t; )
                                    s += this[i],
                                    e[i++] = s & this.DM,
                                    s >>= this.DB;
                                s += this.s
                            } else {
                                for (s += this.s; i < t.t; )
                                    s += t[i],
                                    e[i++] = s & this.DM,
                                    s >>= this.DB;
                                s += t.s
                            }
                            e.s = 0 > s ? -1 : 0,
                            s > 0 ? e[i++] = s : -1 > s && (e[i++] = this.DV + s),
                            e.t = i,
                            e.clamp()
                        }
                        function Ct(t) {
                            var e = y();
                            return this.addTo(t, e),
                            e
                        }
                        function Tt(t) {
                            var e = y();
                            return this.subTo(t, e),
                            e
                        }
                        function It(t) {
                            var e = y();
                            return this.multiplyTo(t, e),
                            e
                        }
                        function $t() {
                            var t = y();
                            return this.squareTo(t),
                            t
                        }
                        function Pt(t) {
                            var e = y();
                            return this.divRemTo(t, e, null),
                            e
                        }
                        function Rt(t) {
                            var e = y();
                            return this.divRemTo(t, null, e),
                            e
                        }
                        function At(t) {
                            var e = y()
                              , i = y();
                            return this.divRemTo(t, e, i),
                            new Array(e,i)
                        }
                        function Et(t) {
                            this[this.t] = this.am(0, t - 1, this, 0, 0, this.t),
                            ++this.t,
                            this.clamp()
                        }
                        function Mt(t, e) {
                            if (0 != t) {
                                for (; this.t <= e; )
                                    this[this.t++] = 0;
                                for (this[e] += t; this[e] >= this.DV; )
                                    this[e] -= this.DV,
                                    ++e >= this.t && (this[this.t++] = 0),
                                    ++this[e]
                            }
                        }
                        function Nt() {}
                        function Ot(t) {
                            return t
                        }
                        function Bt(t, e, i) {
                            t.multiplyTo(e, i)
                        }
                        function jt(t, e) {
                            t.squareTo(e)
                        }
                        function Lt(t) {
                            return this.exp(t, new Nt)
                        }
                        function Ft(t, e, i) {
                            var s = Math.min(this.t + t.t, e);
                            for (i.s = 0,
                            i.t = s; s > 0; )
                                i[--s] = 0;
                            var n;
                            for (n = i.t - this.t; n > s; ++s)
                                i[s + this.t] = this.am(0, t[s], i, s, 0, this.t);
                            for (n = Math.min(t.t, e); n > s; ++s)
                                this.am(0, t[s], i, s, 0, e - s);
                            i.clamp()
                        }
                        function Kt(t, e, i) {
                            --e;
                            var s = i.t = this.t + t.t - e;
                            for (i.s = 0; --s >= 0; )
                                i[s] = 0;
                            for (s = Math.max(e - this.t, 0); s < t.t; ++s)
                                i[this.t + s - e] = this.am(e - s, t[s], i, 0, 0, this.t + s - e);
                            i.clamp(),
                            i.drShiftTo(1, i)
                        }
                        function Ut(t) {
                            this.r2 = y(),
                            this.q3 = y(),
                            b.ONE.dlShiftTo(2 * t.t, this.r2),
                            this.mu = this.r2.divide(t),
                            this.m = t
                        }
                        function Vt(t) {
                            if (t.s < 0 || t.t > 2 * this.m.t)
                                return t.mod(this.m);
                            if (t.compareTo(this.m) < 0)
                                return t;
                            var e = y();
                            return t.copyTo(e),
                            this.reduce(e),
                            e
                        }
                        function zt(t) {
                            return t
                        }
                        function qt(t) {
                            for (t.drShiftTo(this.m.t - 1, this.r2),
                            t.t > this.m.t + 1 && (t.t = this.m.t + 1,
                            t.clamp()),
                            this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3),
                            this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); t.compareTo(this.r2) < 0; )
                                t.dAddOffset(1, this.m.t + 1);
                            for (t.subTo(this.r2, t); t.compareTo(this.m) >= 0; )
                                t.subTo(this.m, t)
                        }
                        function Ht(t, e) {
                            t.squareTo(e),
                            this.reduce(e)
                        }
                        function Jt(t, e, i) {
                            t.multiplyTo(e, i),
                            this.reduce(i)
                        }
                        function Gt(t, e) {
                            var i, s, n = t.bitLength(), r = m(1);
                            if (0 >= n)
                                return r;
                            i = 18 > n ? 1 : 48 > n ? 3 : 144 > n ? 4 : 768 > n ? 5 : 6,
                            s = 8 > n ? new $(e) : e.isEven() ? new Ut(e) : new O(e);
                            var o = new Array
                              , a = 3
                              , c = i - 1
                              , l = (1 << i) - 1;
                            if (o[1] = s.convert(this),
                            i > 1) {
                                var u = y();
                                for (s.sqrTo(o[1], u); l >= a; )
                                    o[a] = y(),
                                    s.mulTo(u, o[a - 2], o[a]),
                                    a += 2
                            }
                            var d, p, h = t.t - 1, f = !0, g = y();
                            for (n = w(t[h]) - 1; h >= 0; ) {
                                for (n >= c ? d = t[h] >> n - c & l : (d = (t[h] & (1 << n + 1) - 1) << c - n,
                                h > 0 && (d |= t[h - 1] >> this.DB + n - c)),
                                a = i; 0 == (1 & d); )
                                    d >>= 1,
                                    --a;
                                if ((n -= a) < 0 && (n += this.DB,
                                --h),
                                f)
                                    o[d].copyTo(r),
                                    f = !1;
                                else {
                                    for (; a > 1; )
                                        s.sqrTo(r, g),
                                        s.sqrTo(g, r),
                                        a -= 2;
                                    a > 0 ? s.sqrTo(r, g) : (p = r,
                                    r = g,
                                    g = p),
                                    s.mulTo(g, o[d], r)
                                }
                                for (; h >= 0 && 0 == (t[h] & 1 << n); )
                                    s.sqrTo(r, g),
                                    p = r,
                                    r = g,
                                    g = p,
                                    --n < 0 && (n = this.DB - 1,
                                    --h)
                            }
                            return s.revert(r)
                        }
                        function Yt(t) {
                            var e = this.s < 0 ? this.negate() : this.clone()
                              , i = t.s < 0 ? t.negate() : t.clone();
                            if (e.compareTo(i) < 0) {
                                var s = e;
                                e = i,
                                i = s
                            }
                            var n = e.getLowestSetBit()
                              , r = i.getLowestSetBit();
                            if (0 > r)
                                return e;
                            for (r > n && (r = n),
                            r > 0 && (e.rShiftTo(r, e),
                            i.rShiftTo(r, i)); e.signum() > 0; )
                                (n = e.getLowestSetBit()) > 0 && e.rShiftTo(n, e),
                                (n = i.getLowestSetBit()) > 0 && i.rShiftTo(n, i),
                                e.compareTo(i) >= 0 ? (e.subTo(i, e),
                                e.rShiftTo(1, e)) : (i.subTo(e, i),
                                i.rShiftTo(1, i));
                            return r > 0 && i.lShiftTo(r, i),
                            i
                        }
                        function Wt(t) {
                            if (0 >= t)
                                return 0;
                            var e = this.DV % t
                              , i = this.s < 0 ? t - 1 : 0;
                            if (this.t > 0)
                                if (0 == e)
                                    i = this[0] % t;
                                else
                                    for (var s = this.t - 1; s >= 0; --s)
                                        i = (e * i + this[s]) % t;
                            return i
                        }
                        function Zt(t) {
                            var e = t.isEven();
                            if (this.isEven() && e || 0 == t.signum())
                                return b.ZERO;
                            for (var i = t.clone(), s = this.clone(), n = m(1), r = m(0), o = m(0), a = m(1); 0 != i.signum(); ) {
                                for (; i.isEven(); )
                                    i.rShiftTo(1, i),
                                    e ? (n.isEven() && r.isEven() || (n.addTo(this, n),
                                    r.subTo(t, r)),
                                    n.rShiftTo(1, n)) : r.isEven() || r.subTo(t, r),
                                    r.rShiftTo(1, r);
                                for (; s.isEven(); )
                                    s.rShiftTo(1, s),
                                    e ? (o.isEven() && a.isEven() || (o.addTo(this, o),
                                    a.subTo(t, a)),
                                    o.rShiftTo(1, o)) : a.isEven() || a.subTo(t, a),
                                    a.rShiftTo(1, a);
                                i.compareTo(s) >= 0 ? (i.subTo(s, i),
                                e && n.subTo(o, n),
                                r.subTo(a, r)) : (s.subTo(i, s),
                                e && o.subTo(n, o),
                                a.subTo(r, a))
                            }
                            return 0 != s.compareTo(b.ONE) ? b.ZERO : a.compareTo(t) >= 0 ? a.subtract(t) : a.signum() < 0 ? (a.addTo(t, a),
                            a.signum() < 0 ? a.add(t) : a) : a
                        }
                        function Qt(t) {
                            var e, i = this.abs();
                            if (1 == i.t && i[0] <= $e[$e.length - 1]) {
                                for (e = 0; e < $e.length; ++e)
                                    if (i[0] == $e[e])
                                        return !0;
                                return !1
                            }
                            if (i.isEven())
                                return !1;
                            for (e = 1; e < $e.length; ) {
                                for (var s = $e[e], n = e + 1; n < $e.length && Pe > s; )
                                    s *= $e[n++];
                                for (s = i.modInt(s); n > e; )
                                    if (s % $e[e++] == 0)
                                        return !1
                            }
                            return i.millerRabin(t)
                        }
                        function Xt(t) {
                            var e = this.subtract(b.ONE)
                              , i = e.getLowestSetBit();
                            if (0 >= i)
                                return !1;
                            var s = e.shiftRight(i);
                            t = t + 1 >> 1,
                            t > $e.length && (t = $e.length);
                            for (var n = y(), r = 0; t > r; ++r) {
                                var o = n.modPow(s, this);
                                if (0 != o.compareTo(b.ONE) && 0 != o.compareTo(e)) {
                                    for (var a = 1; a++ < i && 0 != o.compareTo(e); )
                                        if (o = o.modPowInt(2, this),
                                        0 == o.compareTo(b.ONE))
                                            return !1;
                                    if (0 != o.compareTo(e))
                                        return !1
                                }
                            }
                            return !0
                        }
                        function te() {
                            this.i = 0,
                            this.j = 0,
                            this.S = new Array
                        }
                        function ee(t) {
                            var e, i, s;
                            for (e = 0; 256 > e; ++e)
                                this.S[e] = e;
                            for (i = 0,
                            e = 0; 256 > e; ++e)
                                i = i + this.S[e] + t[e % t.length] & 255,
                                s = this.S[e],
                                this.S[e] = this.S[i],
                                this.S[i] = s;
                            this.i = 0,
                            this.j = 0
                        }
                        function ie() {
                            var t;
                            return this.i = this.i + 1 & 255,
                            this.j = this.j + this.S[this.i] & 255,
                            t = this.S[this.i],
                            this.S[this.i] = this.S[this.j],
                            this.S[this.j] = t,
                            this.S[t + this.S[this.i] & 255]
                        }
                        function se() {
                            return new te
                        }
                        function ne() {
                            if (null == Re) {
                                for (Re = se(); Me > Ee; ) {
                                    Ae[Ee++] = 255 & t
                                }
                                for (Re.init(Ae),
                                Ee = 0; Ee < Ae.length; ++Ee)
                                    Ae[Ee] = 0;
                                Ee = 0
                            }
                            return Re.next()
                        }
                        function re(t) {
                            var e;
                            for (e = 0; e < t.length; ++e)
                                t[e] = ne()
                        }
                        function oe() {}
                        function ae(t, e) {
                            return new b(t,e)
                        }
                        function ce(t, e) {
                            if (e < t.length + 11)
                                return console.error("Message too long for RSA"),
                                null;
                            for (var i = new Array, s = t.length - 1; s >= 0 && e > 0; ) {
                                var n = t.charCodeAt(s--);
                                128 > n ? i[--e] = n : n > 127 && 2048 > n ? (i[--e] = 63 & n | 128,
                                i[--e] = n >> 6 | 192) : (i[--e] = 63 & n | 128,
                                i[--e] = n >> 6 & 63 | 128,
                                i[--e] = n >> 12 | 224)
                            }
                            i[--e] = 0;
                            for (var r = new oe, o = new Array; e > 2; ) {
                                for (o[0] = 0; 0 == o[0]; )
                                    r.nextBytes(o);
                                i[--e] = o[0]
                            }
                            return i[--e] = 2,
                            i[--e] = 0,
                            new b(i)
                        }
                        function le() {
                            this.n = null,
                            this.e = 0,
                            this.d = null,
                            this.p = null,
                            this.q = null,
                            this.dmp1 = null,
                            this.dmq1 = null,
                            this.coeff = null
                        }
                        function ue(t, e) {
                            null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = ae(t, 16),
                            this.e = parseInt(e, 16)) : console.error("Invalid RSA public key")
                        }
                        function de(t) {
                            return t.modPowInt(this.e, this.n)
                        }
                        function pe(t) {
                            var e = ce(t, this.n.bitLength() + 7 >> 3);
                            if (null == e)
                                return null;
                            var i = this.doPublic(e);
                            if (null == i)
                                return null;
                            var s = i.toString(16);
                            return 0 == (1 & s.length) ? s : "0" + s
                        }
                        function he(t, e) {
                            for (var i = t.toByteArray(), s = 0; s < i.length && 0 == i[s]; )
                                ++s;
                            if (i.length - s != e - 1 || 2 != i[s])
                                return null;
                            for (++s; 0 != i[s]; )
                                if (++s >= i.length)
                                    return null;
                            for (var n = ""; ++s < i.length; ) {
                                var r = 255 & i[s];
                                128 > r ? n += String.fromCharCode(r) : r > 191 && 224 > r ? (n += String.fromCharCode((31 & r) << 6 | 63 & i[s + 1]),
                                ++s) : (n += String.fromCharCode((15 & r) << 12 | (63 & i[s + 1]) << 6 | 63 & i[s + 2]),
                                s += 2)
                            }
                            return n
                        }
                        function fe(t, e, i) {
                            null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = ae(t, 16),
                            this.e = parseInt(e, 16),
                            this.d = ae(i, 16)) : console.error("Invalid RSA private key")
                        }
                        function ge(t, e, i, s, n, r, o, a) {
                            null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = ae(t, 16),
                            this.e = parseInt(e, 16),
                            this.d = ae(i, 16),
                            this.p = ae(s, 16),
                            this.q = ae(n, 16),
                            this.dmp1 = ae(r, 16),
                            this.dmq1 = ae(o, 16),
                            this.coeff = ae(a, 16)) : console.error("Invalid RSA private key")
                        }
                        function me(t, e) {
                            var i = new oe
                              , s = t >> 1;
                            this.e = parseInt(e, 16);
                            for (var n = new b(e,16); ; ) {
                                for (; this.p = new b(t - s,1,i),
                                0 != this.p.subtract(b.ONE).gcd(n).compareTo(b.ONE) || !this.p.isProbablePrime(10); )
                                    ;
                                for (; this.q = new b(s,1,i),
                                0 != this.q.subtract(b.ONE).gcd(n).compareTo(b.ONE) || !this.q.isProbablePrime(10); )
                                    ;
                                if (this.p.compareTo(this.q) <= 0) {
                                    var r = this.p;
                                    this.p = this.q,
                                    this.q = r
                                }
                                var o = this.p.subtract(b.ONE)
                                  , a = this.q.subtract(b.ONE)
                                  , c = o.multiply(a);
                                if (0 == c.gcd(n).compareTo(b.ONE)) {
                                    this.n = this.p.multiply(this.q),
                                    this.d = n.modInverse(c),
                                    this.dmp1 = this.d.mod(o),
                                    this.dmq1 = this.d.mod(a),
                                    this.coeff = this.q.modInverse(this.p);
                                    break
                                }
                            }
                        }
                        function ve(t) {
                            if (null == this.p || null == this.q)
                                return t.modPow(this.d, this.n);
                            for (var e = t.mod(this.p).modPow(this.dmp1, this.p), i = t.mod(this.q).modPow(this.dmq1, this.q); e.compareTo(i) < 0; )
                                e = e.add(this.p);
                            return e.subtract(i).multiply(this.coeff).mod(this.p).multiply(this.q).add(i)
                        }
                        function _e(t) {
                            var e = ae(t, 16)
                              , i = this.doPrivate(e);
                            return null == i ? null : he(i, this.n.bitLength() + 7 >> 3)
                        }
                        function be(t) {
                            var e, i, s = "";
                            for (e = 0; e + 3 <= t.length; e += 3)
                                i = parseInt(t.substring(e, e + 3), 16),
                                s += je.charAt(i >> 6) + je.charAt(63 & i);
                            for (e + 1 == t.length ? (i = parseInt(t.substring(e, e + 1), 16),
                            s += je.charAt(i << 2)) : e + 2 == t.length && (i = parseInt(t.substring(e, e + 2), 16),
                            s += je.charAt(i >> 2) + je.charAt((3 & i) << 4)); (3 & s.length) > 0; )
                                s += Le;
                            return s
                        }
                        function ye(t) {
                            var e, i, s = "", n = 0;
                            for (e = 0; e < t.length && t.charAt(e) != Le; ++e)
                                v = je.indexOf(t.charAt(e)),
                                v < 0 || (0 == n ? (s += c(v >> 2),
                                i = 3 & v,
                                n = 1) : 1 == n ? (s += c(i << 2 | v >> 4),
                                i = 15 & v,
                                n = 2) : 2 == n ? (s += c(i),
                                s += c(v >> 2),
                                i = 3 & v,
                                n = 3) : (s += c(i << 2 | v >> 4),
                                s += c(15 & v),
                                n = 0));
                            return 1 == n && (s += c(i << 2)),
                            s
                        }
                        try {
                            var we, ke, xe = false;
                            xe && "Microsoft Internet Explorer" == navigator.appName ? (b.prototype.am = i,
                            we = 26) : xe && "Netscape" != navigator.appName ? (b.prototype.am = e,
                            we = 26) : (b.prototype.am = s,
                            we = 28),
                            b.prototype.DB = we,
                            b.prototype.DM = (1 << we) - 1,
                            b.prototype.DV = 1 << we;
                        } catch (e) {}
                        var De = 52;
                        b.prototype.FV = Math.pow(2, De),
                        b.prototype.F1 = De - we,
                        b.prototype.F2 = 2 * we - De;
                        var Se, Ce, Te = "0123456789abcdefghijklmnopqrstuvwxyz", Ie = new Array;
                        for (Se = "0".charCodeAt(0),
                        Ce = 0; 9 >= Ce; ++Ce)
                            Ie[Se++] = Ce;
                        for (Se = "a".charCodeAt(0),
                        Ce = 10; 36 > Ce; ++Ce)
                            Ie[Se++] = Ce;
                        for (Se = "A".charCodeAt(0),
                        Ce = 10; 36 > Ce; ++Ce)
                            Ie[Se++] = Ce;
                        $.prototype.convert = P,
                        $.prototype.revert = R,
                        $.prototype.reduce = A,
                        $.prototype.mulTo = E,
                        $.prototype.sqrTo = M,
                        O.prototype.convert = B,
                        O.prototype.revert = j,
                        O.prototype.reduce = L,
                        O.prototype.mulTo = K,
                        O.prototype.sqrTo = F,
                        b.prototype.copyTo = p,
                        b.prototype.fromInt = n,
                        b.prototype.fromString = h,
                        b.prototype.clamp = r,
                        b.prototype.dlShiftTo = g,
                        b.prototype.drShiftTo = _,
                        b.prototype.lShiftTo = k,
                        b.prototype.rShiftTo = x,
                        b.prototype.subTo = D,
                        b.prototype.multiplyTo = S,
                        b.prototype.squareTo = C,
                        b.prototype.divRemTo = T,
                        b.prototype.invDigit = N,
                        b.prototype.isEven = U,
                        b.prototype.exp = V,
                        b.prototype.toString = o,
                        b.prototype.negate = f,
                        b.prototype.abs = a,
                        b.prototype.compareTo = u,
                        b.prototype.bitLength = d,
                        b.prototype.mod = I,
                        b.prototype.modPowInt = z,
                        b.ZERO = m(0),
                        b.ONE = m(1),
                        Nt.prototype.convert = Ot,
                        Nt.prototype.revert = Ot,
                        Nt.prototype.mulTo = Bt,
                        Nt.prototype.sqrTo = jt,
                        Ut.prototype.convert = Vt,
                        Ut.prototype.revert = zt,
                        Ut.prototype.reduce = qt,
                        Ut.prototype.mulTo = Jt,
                        Ut.prototype.sqrTo = Ht;
                        var $e = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, [][(![] + [])[!+[] + !![] + !![]] + ([] + {})[+!![]] + (!![] + [])[+!![]] + (!![] + [])[+[]]][([] + {})[!+[] + !![] + !![] + !![] + !![]] + ([] + {})[+!![]] + ([][[]] + [])[+!![]] + (![] + [])[!+[] + !![] + !![]] + (!![] + [])[+[]] + (!![] + [])[+!![]] + ([][[]] + [])[+[]] + ([] + {})[!+[] + !![] + !![] + !![] + !![]] + (!![] + [])[+[]] + ([] + {})[+!![]] + (!![] + [])[+!![]]]((!+[] + !![] + !![] + !![] + !![] + !![] + !![] + !![] + !![] + []) + (!+[] + !![] + !![] + !![] + !![] + !![] + !![] + !![] + !![] + []) + (!+[] + !![] + !![] + !![] + !![] + !![] + !![] + []))(+[])]
                          , Pe = (1 << 26) / $e[$e.length - 1];
                        b.prototype.chunkSize = Y,
                        b.prototype.toRadix = Z,
                        b.prototype.fromRadix = Q,
                        b.prototype.fromNumber = X,
                        b.prototype.bitwiseTo = nt,
                        b.prototype.changeBit = wt,
                        b.prototype.addTo = St,
                        b.prototype.dMultiply = Et,
                        b.prototype.dAddOffset = Mt,
                        b.prototype.multiplyLowerTo = Ft,
                        b.prototype.multiplyUpperTo = Kt,
                        b.prototype.modInt = Wt,
                        b.prototype.millerRabin = Xt,
                        b.prototype.clone = q,
                        b.prototype.intValue = H,
                        b.prototype.byteValue = J,
                        b.prototype.shortValue = G,
                        b.prototype.signum = W,
                        b.prototype.toByteArray = tt,
                        b.prototype.equals = et,
                        b.prototype.min = it,
                        b.prototype.max = st,
                        b.prototype.and = ot,
                        b.prototype.or = ct,
                        b.prototype.xor = ut,
                        b.prototype.andNot = pt,
                        b.prototype.not = ht,
                        b.prototype.shiftLeft = ft,
                        b.prototype.shiftRight = gt,
                        b.prototype.getLowestSetBit = vt,
                        b.prototype.bitCount = bt,
                        b.prototype.testBit = yt,
                        b.prototype.setBit = kt,
                        b.prototype.clearBit = xt,
                        b.prototype.flipBit = Dt,
                        b.prototype.add = Ct,
                        b.prototype.subtract = Tt,
                        b.prototype.multiply = It,
                        b.prototype.divide = Pt,
                        b.prototype.remainder = Rt,
                        b.prototype.divideAndRemainder = At,
                        b.prototype.modPow = Gt,
                        b.prototype.modInverse = Zt,
                        b.prototype.pow = Lt,
                        b.prototype.gcd = Yt,
                        b.prototype.isProbablePrime = Qt,
                        b.prototype.square = $t,
                        te.prototype.init = ee,
                        te.prototype.next = ie;
                        var Re, Ae, Ee, Me = 256;
                        if (null == Ae) {
                            Ae = new Array,
                            Ee = 0;
                            var Ne;
                            var Be = function(t) {
                                if (this.count = this.count || 0,
                                this.count >= 256 || Ee >= Me)
                                    try {
                                        var e = t.x + t.y;
                                        Ae[Ee++] = 255 & e,
                                        this.count += 1
                                    } catch (y) {}
                            };
                            window.addEventListener ? window.addEventListener("mousemove", Be, !1) : window.attachEvent && window.attachEvent("onmousemove", Be)
                        }
                        oe.prototype.nextBytes = re,
                        le.prototype.doPublic = de,
                        le.prototype.setPublic = ue,
                        le.prototype.encrypt = pe,
                        le.prototype.doPrivate = ve,
                        le.prototype.setPrivate = fe,
                        le.prototype.setPrivateEx = ge,
                        le.prototype.generate = me,
                        le.prototype.decrypt = _e,
                        function() {
                            var t = function(t, e, n) {
                                var r = new oe
                                  , o = t >> 1;
                                this.e = parseInt(e, 16);
                                var a = new b(e,16)
                                  , c = this
                                  , l = function() {
                                    var e = function() {
                                        if (c.p.compareTo(c.q) <= 0) {
                                            var t = c.p;
                                            c.p = c.q,
                                            c.q = t
                                        }
                                        var e = c.p.subtract(b.ONE)
                                          , i = c.q.subtract(b.ONE)
                                          , s = e.multiply(i);
                                        0 == s.gcd(a).compareTo(b.ONE) ? (c.n = c.p.multiply(c.q),
                                        c.d = a.modInverse(s),
                                        c.dmp1 = c.d.mod(e),
                                        c.dmq1 = c.d.mod(i),
                                        c.coeff = c.q.modInverse(c.p),
                                        setTimeout(function() {
                                            n()
                                        }, 0)) : setTimeout(l, 0)
                                    }
                                      , i = function() {
                                        c.q = y(),
                                        c.q.fromNumberAsync(o, 1, r, function() {
                                            c.q.subtract(b.ONE).gcda(a, function(t) {
                                                0 == t.compareTo(b.ONE) && c.q.isProbablePrime(10) ? setTimeout(e, 0) : setTimeout(i, 0)
                                            })
                                        })
                                    }
                                      , s = function() {
                                        c.p = y(),
                                        c.p.fromNumberAsync(t - o, 1, r, function() {
                                            c.p.subtract(b.ONE).gcda(a, function(t) {
                                                0 == t.compareTo(b.ONE) && c.p.isProbablePrime(10) ? setTimeout(i, 0) : setTimeout(s, 0)
                                            })
                                        })
                                    };
                                    setTimeout(s, 0)
                                };
                                setTimeout(l, 0)
                            };
                            le.prototype.generateAsync = t;
                            var e = function(t, e) {
                                var i = this.s < 0 ? this.negate() : this.clone()
                                  , s = t.s < 0 ? t.negate() : t.clone();
                                if (i.compareTo(s) < 0) {
                                    var n = i;
                                    i = s,
                                    s = n
                                }
                                var r = i.getLowestSetBit()
                                  , o = s.getLowestSetBit();
                                if (0 > o)
                                    return void e(i);
                                o > r && (o = r),
                                o > 0 && (i.rShiftTo(o, i),
                                s.rShiftTo(o, s));
                                var a = function() {
                                    (r = i.getLowestSetBit()) > 0 && i.rShiftTo(r, i),
                                    (r = s.getLowestSetBit()) > 0 && s.rShiftTo(r, s),
                                    i.compareTo(s) >= 0 ? (i.subTo(s, i),
                                    i.rShiftTo(1, i)) : (s.subTo(i, s),
                                    s.rShiftTo(1, s)),
                                    i.signum() > 0 ? setTimeout(a, 0) : (o > 0 && s.lShiftTo(o, s),
                                    setTimeout(function() {
                                        e(s)
                                    }, 0))
                                };
                                setTimeout(a, 10)
                            };
                            b.prototype.gcda = e;
                            var i = function(t, e, i, s) {
                                if ("number" == typeof e)
                                    if (2 > t)
                                        this.fromInt(1);
                                    else {
                                        this.fromNumber(t, i),
                                        this.testBit(t - 1) || this.bitwiseTo(b.ONE.shiftLeft(t - 1), at, this),
                                        this.isEven() && this.dAddOffset(1, 0);
                                        var n = this
                                          , r = function() {
                                            n.dAddOffset(2, 0),
                                            n.bitLength() > t && n.subTo(b.ONE.shiftLeft(t - 1), n),
                                            n.isProbablePrime(e) ? setTimeout(function() {
                                                s()
                                            }, 0) : setTimeout(r, 0)
                                        };
                                        setTimeout(r, 0)
                                    }
                                else {
                                    var o = new Array
                                      , a = 7 & t;
                                    o.length = (t >> 3) + 1,
                                    e.nextBytes(o),
                                    a > 0 ? o[0] &= (1 << a) - 1 : o[0] = 0,
                                    this.fromString(o, 256)
                                }
                            };
                            b.prototype.fromNumberAsync = i
                        }();
                        var je = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                          , Le = "="
                          , Fe = Fe || {};
                        Fe.env = Fe.env || {};
                        var Ke = Fe
                          , Ue = Object.prototype
                          , Ve = "[object Function]"
                          , ze = ["toString", "valueOf"];
                        Fe.env.parseUA = function(t) {
                            var e, i = function(t) {
                                var e = 0;
                                return parseFloat(t.replace(/\./g, function() {
                                    return 1 == e++ ? "" : "."
                                }))
                            }, s = navigator, n = {
                                ie: 0,
                                opera: 0,
                                gecko: 0,
                                webkit: 0,
                                chrome: 0,
                                mobile: null,
                                air: 0,
                                ipad: 0,
                                iphone: 0,
                                ipod: 0,
                                ios: null,
                                android: 0,
                                webos: 0,
                                caja: s && s.cajaVersion,
                                secure: !1,
                                os: null
                            };
                            try {
                                r = t || navigator && navigator.userAgent,
                                o = window && window,
                                a = o && o.href;
                            } catch (e) {}
                            return n.secure = a && 0 === a.toLowerCase().indexOf("https"),
                            r && (/windows|win32/i.test(r) ? n.os = "windows" : /macintosh/i.test(r) ? n.os = "macintosh" : /rhino/i.test(r) && (n.os = "rhino"),
                            /KHTML/.test(r) && (n.webkit = 1),
                            e = r.match(/AppleWebKit\/([^\s]*)/),
                            e && e[1] && (n.webkit = i(e[1]),
                            / Mobile\//.test(r) ? (n.mobile = "Apple",
                            e = r.match(/OS ([^\s]*)/),
                            e && e[1] && (e = i(e[1].replace("_", "."))),
                            n.ios = e,
                            n.ipad = n.ipod = n.iphone = 0,
                            e = r.match(/iPad|iPod|iPhone/),
                            e && e[0] && (n[e[0].toLowerCase()] = n.ios)) : (e = r.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/),
                            e && (n.mobile = e[0]),
                            /webOS/.test(r) && (n.mobile = "WebOS",
                            e = r.match(/webOS\/([^\s]*);/),
                            e && e[1] && (n.webos = i(e[1]))),
                            / Android/.test(r) && (n.mobile = "Android",
                            e = r.match(/Android ([^\s]*);/),
                            e && e[1] && (n.android = i(e[1])))),
                            e = r.match(/Chrome\/([^\s]*)/),
                            e && e[1] ? n.chrome = i(e[1]) : (e = r.match(/AdobeAIR\/([^\s]*)/),
                            e && (n.air = e[0]))),
                            n.webkit || (e = r.match(/Opera[\s\/]([^\s]*)/),
                            e && e[1] ? (n.opera = i(e[1]),
                            e = r.match(/Version\/([^\s]*)/),
                            e && e[1] && (n.opera = i(e[1])),
                            e = r.match(/Opera Mini[^;]*/),
                            e && (n.mobile = e[0])) : (e = r.match(/MSIE\s([^;]*)/),
                            e && e[1] ? n.ie = i(e[1]) : (e = r.match(/Gecko\/([^\s]*)/),
                            e && (n.gecko = 1,
                            e = r.match(/rv:([^\s\)]*)/),
                            e && e[1] && (n.gecko = i(e[1]))))))),
                            n
                        }
                        ,
                        Fe.env.ua = Fe.env.parseUA(),
                        Fe.isFunction = function(t) {
                            return "function" == typeof t || Ue.toString.apply(t) === Ve
                        }
                        ,
                        Fe._IEEnumFix = Fe.env.ua.ie ? function(t, e) {
                            var i, s, n;
                            for (i = 0; i < ze.length; i += 1)
                                s = ze[i],
                                n = e[s],
                                Ke.isFunction(n) && n != Ue[s] && (t[s] = n)
                        }
                        : function() {}
                        ,
                        Fe.extend = function(t, e, i) {
                            if (!e || !t)
                                throw new Error("extend failed, please check that all dependencies are included.");
                            var s, n = function() {};
                            if (n.prototype = e.prototype,
                            t.prototype = new n,
                            t.prototype.constructor = t,
                            t.superclass = e.prototype,
                            e.prototype.constructor == Ue.constructor && (e.prototype.constructor = e),
                            i) {
                                for (s in i)
                                    Ke.hasOwnProperty(i, s) && (t.prototype[s] = i[s]);
                                Ke._IEEnumFix(t.prototype, i)
                            }
                        }
                        ,
                        "undefined" != typeof KJUR && KJUR || (KJUR = {}),
                        "undefined" != typeof KJUR.asn1 && KJUR.asn1 || (KJUR.asn1 = {}),
                        KJUR.asn1.ASN1Util = new function() {
                            this.integerToByteHex = function(t) {
                                var e = t.toString(16);
                                return e.length % 2 == 1 && (e = "0" + e),
                                e
                            }
                            ,
                            this.bigIntToMinTwosComplementsHex = function(t) {
                                var e = t.toString(16);
                                if ("-" != e.substr(0, 1))
                                    e.length % 2 == 1 ? e = "0" + e : e.match(/^[0-7]/) || (e = "00" + e);
                                else {
                                    var i = e.substr(1)
                                      , s = i.length;
                                    s % 2 == 1 ? s += 1 : e.match(/^[0-7]/) || (s += 2);
                                    for (var n = "", r = 0; s > r; r++)
                                        n += "f";
                                    var o = new b(n,16)
                                      , a = o.xor(t).add(b.ONE);
                                    e = a.toString(16).replace(/^-/, "")
                                }
                                return e
                            }
                            ,
                            this.getPEMStringFromHex = function(t, e) {
                                var i = CryptoJS.enc.Hex.parse(t)
                                  , s = CryptoJS.enc.Base64.stringify(i)
                                  , n = s.replace(/(.{64})/g, "$1\r\n");
                                return n = n.replace(/\r\n$/, ""),
                                "-----BEGIN " + e + "-----\r\n" + n + "\r\n-----END " + e + "-----\r\n"
                            }
                        }
                        ,
                        KJUR.asn1.ASN1Object = function() {
                            var n = "";
                            this.getLengthHexFromValue = function() {
                                if ("undefined" == typeof this.hV || null == this.hV)
                                    throw "this.hV is null or undefined.";
                                if (this.hV.length % 2 == 1)
                                    throw "value hex must be even length: n=" + n.length + ",v=" + this.hV;
                                var t = this.hV.length / 2
                                  , e = t.toString(16);
                                if (e.length % 2 == 1 && (e = "0" + e),
                                128 > t)
                                    return e;
                                var i = e.length / 2;
                                if (i > 15)
                                    throw "ASN.1 length too long to represent by 8x: n = " + t.toString(16);
                                var s = 128 + i;
                                return s.toString(16) + e
                            }
                            ,
                            this.getEncodedHex = function() {
                                return (null == this.hTLV || this.isModified) && (this.hV = this.getFreshValueHex(),
                                this.hL = this.getLengthHexFromValue(),
                                this.hTLV = this.hT + this.hL + this.hV,
                                this.isModified = !1),
                                this.hTLV
                            }
                            ,
                            this.getValueHex = function() {
                                return this.getEncodedHex(),
                                this.hV
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return ""
                            }
                        }
                        ,
                        KJUR.asn1.DERAbstractString = function(t) {
                            KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
                            this.getString = function() {
                                return this.s
                            }
                            ,
                            this.setString = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.s = t,
                                this.hV = stohex(this.s)
                            }
                            ,
                            this.setStringHex = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.s = null,
                                this.hV = t
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex && this.setStringHex(t.hex))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERAbstractTime = function(t) {
                            KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);
                            this.localDateToUTC = function(t) {
                                utc = t.getTime() + 6e4 * t.getTimezoneOffset();
                                var e = new Date(utc);
                                return e
                            }
                            ,
                            this.formatDate = function(t, e) {
                                var i = this.zeroPadding
                                  , s = this.localDateToUTC(t)
                                  , n = String(s.getFullYear());
                                "utc" == e && (n = n.substr(2, 2));
                                var r = i(String(s.getMonth() + 1), 2)
                                  , o = i(String(s.getDate()), 2)
                                  , a = i(String(s.getHours()), 2)
                                  , c = i(String(s.getMinutes()), 2)
                                  , l = i(String(s.getSeconds()), 2);
                                return n + r + o + a + c + l + "Z"
                            }
                            ,
                            this.zeroPadding = function(t, e) {
                                return t.length >= e ? t : new Array(e - t.length + 1).join("0") + t
                            }
                            ,
                            this.getString = function() {
                                return this.s
                            }
                            ,
                            this.setString = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.s = t,
                                this.hV = stohex(this.s)
                            }
                            ,
                            this.setByDateValue = function(t, e, i, s, n, r) {
                                var o = new Date(Date.UTC(t, e - 1, i, s, n, r, 0));
                                this.setByDate(o)
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERAbstractStructured = function(t) {
                            KJUR.asn1.DERAbstractString.superclass.constructor.call(this);
                            this.setByASN1ObjectArray = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.asn1Array = t
                            }
                            ,
                            this.appendASN1Object = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.asn1Array.push(t)
                            }
                            ,
                            this.asn1Array = new Array,
                            "undefined" != typeof t && "undefined" != typeof t.array && (this.asn1Array = t.array)
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERBoolean = function() {
                            KJUR.asn1.DERBoolean.superclass.constructor.call(this),
                            this.hT = "01",
                            this.hTLV = "0101ff"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERInteger = function(t) {
                            KJUR.asn1.DERInteger.superclass.constructor.call(this),
                            this.hT = "02",
                            this.setByBigInteger = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)
                            }
                            ,
                            this.setByInteger = function(t) {
                                var e = new b(String(t),10);
                                this.setByBigInteger(e)
                            }
                            ,
                            this.setValueHex = function(t) {
                                this.hV = t
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.bigint ? this.setByBigInteger(t.bigint) : "undefined" != typeof t["int"] ? this.setByInteger(t["int"]) : "undefined" != typeof t.hex && this.setValueHex(t.hex))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERBitString = function(t) {
                            KJUR.asn1.DERBitString.superclass.constructor.call(this),
                            this.hT = "03",
                            this.setHexValueIncludingUnusedBits = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.hV = t
                            }
                            ,
                            this.setUnusedBitsAndHexValue = function(t, e) {
                                if (0 > t || t > 7)
                                    throw "unused bits shall be from 0 to 7: u = " + t;
                                var i = "0" + t;
                                this.hTLV = null,
                                this.isModified = !0,
                                this.hV = i + e
                            }
                            ,
                            this.setByBinaryString = function(t) {
                                t = t.replace(/0+$/, "");
                                var e = 8 - t.length % 8;
                                8 == e && (e = 0);
                                for (var i = 0; e >= i; i++)
                                    t += "0";
                                for (var s = "", i = 0; i < t.length - 1; i += 8) {
                                    var n = t.substr(i, 8)
                                      , r = parseInt(n, 2).toString(16);
                                    1 == r.length && (r = "0" + r),
                                    s += r
                                }
                                this.hTLV = null,
                                this.isModified = !0,
                                this.hV = "0" + e + s
                            }
                            ,
                            this.setByBooleanArray = function(t) {
                                for (var e = "", i = 0; i < t.length; i++)
                                    e += 1 == t[i] ? "1" : "0";
                                this.setByBinaryString(e)
                            }
                            ,
                            this.newFalseArray = function(t) {
                                for (var e = new Array(t), i = 0; t > i; i++)
                                    e[i] = !1;
                                return e
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.hex ? this.setHexValueIncludingUnusedBits(t.hex) : "undefined" != typeof t.bin ? this.setByBinaryString(t.bin) : "undefined" != typeof t.array && this.setByBooleanArray(t.array))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DEROctetString = function(t) {
                            KJUR.asn1.DEROctetString.superclass.constructor.call(this, t),
                            this.hT = "04"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERNull = function() {
                            KJUR.asn1.DERNull.superclass.constructor.call(this),
                            this.hT = "05",
                            this.hTLV = "0500"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERObjectIdentifier = function(t) {
                            var c = function(t) {
                                var e = t.toString(16);
                                return 1 == e.length && (e = "0" + e),
                                e
                            }
                              , r = function(t) {
                                var e = ""
                                  , i = new b(t,10)
                                  , s = i.toString(2)
                                  , n = 7 - s.length % 7;
                                7 == n && (n = 0);
                                for (var r = "", o = 0; n > o; o++)
                                    r += "0";
                                s = r + s;
                                for (var o = 0; o < s.length - 1; o += 7) {
                                    var a = s.substr(o, 7);
                                    o != s.length - 7 && (a = "1" + a),
                                    e += c(parseInt(a, 2))
                                }
                                return e
                            };
                            KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this),
                            this.hT = "06",
                            this.setValueHex = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.s = null,
                                this.hV = t
                            }
                            ,
                            this.setValueOidString = function(t) {
                                if (!t.match(/^[0-9.]+$/))
                                    throw "malformed oid string: " + t;
                                var e = ""
                                  , i = t.split(".")
                                  , s = 40 * parseInt(i[0]) + parseInt(i[1]);
                                e += c(s),
                                i.splice(0, 2);
                                for (var n = 0; n < i.length; n++)
                                    e += r(i[n]);
                                this.hTLV = null,
                                this.isModified = !0,
                                this.s = null,
                                this.hV = e
                            }
                            ,
                            this.setValueName = function(t) {
                                if ("undefined" == typeof KJUR.asn1.x509.OID.name2oidList[t])
                                    throw "DERObjectIdentifier oidName undefined: " + t;
                                var e = KJUR.asn1.x509.OID.name2oidList[t];
                                this.setValueOidString(e)
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.oid ? this.setValueOidString(t.oid) : "undefined" != typeof t.hex ? this.setValueHex(t.hex) : "undefined" != typeof t.name && this.setValueName(t.name))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object),
                        KJUR.asn1.DERUTF8String = function(t) {
                            KJUR.asn1.DERUTF8String.superclass.constructor.call(this, t),
                            this.hT = "0c"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERNumericString = function(t) {
                            KJUR.asn1.DERNumericString.superclass.constructor.call(this, t),
                            this.hT = "12"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERPrintableString = function(t) {
                            KJUR.asn1.DERPrintableString.superclass.constructor.call(this, t),
                            this.hT = "13"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERTeletexString = function(t) {
                            KJUR.asn1.DERTeletexString.superclass.constructor.call(this, t),
                            this.hT = "14"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERIA5String = function(t) {
                            KJUR.asn1.DERIA5String.superclass.constructor.call(this, t),
                            this.hT = "16"
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString),
                        KJUR.asn1.DERUTCTime = function(t) {
                            KJUR.asn1.DERUTCTime.superclass.constructor.call(this, t),
                            this.hT = "17",
                            this.setByDate = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.date = t,
                                this.s = this.formatDate(this.date, "utc"),
                                this.hV = stohex(this.s)
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex ? this.setStringHex(t.hex) : "undefined" != typeof t.date && this.setByDate(t.date))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime),
                        KJUR.asn1.DERGeneralizedTime = function(t) {
                            KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, t),
                            this.hT = "18",
                            this.setByDate = function(t) {
                                this.hTLV = null,
                                this.isModified = !0,
                                this.date = t,
                                this.s = this.formatDate(this.date, "gen"),
                                this.hV = stohex(this.s)
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex ? this.setStringHex(t.hex) : "undefined" != typeof t.date && this.setByDate(t.date))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime),
                        KJUR.asn1.DERSequence = function(t) {
                            KJUR.asn1.DERSequence.superclass.constructor.call(this, t),
                            this.hT = "30",
                            this.getFreshValueHex = function() {
                                for (var t = "", e = 0; e < this.asn1Array.length; e++) {
                                    var i = this.asn1Array[e];
                                    t += i.getEncodedHex()
                                }
                                return this.hV = t,
                                this.hV
                            }
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured),
                        KJUR.asn1.DERSet = function(t) {
                            KJUR.asn1.DERSet.superclass.constructor.call(this, t),
                            this.hT = "31",
                            this.getFreshValueHex = function() {
                                for (var t = new Array, e = 0; e < this.asn1Array.length; e++) {
                                    var i = this.asn1Array[e];
                                    t.push(i.getEncodedHex())
                                }
                                return t.sort(),
                                this.hV = t.join(""),
                                this.hV
                            }
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured),
                        KJUR.asn1.DERTaggedObject = function(t) {
                            KJUR.asn1.DERTaggedObject.superclass.constructor.call(this),
                            this.hT = "a0",
                            this.hV = "",
                            this.isExplicit = !0,
                            this.asn1Object = null,
                            this.setASN1Object = function(t, e, i) {
                                this.hT = e,
                                this.isExplicit = t,
                                this.asn1Object = i,
                                this.isExplicit ? (this.hV = this.asn1Object.getEncodedHex(),
                                this.hTLV = null,
                                this.isModified = !0) : (this.hV = null,
                                this.hTLV = i.getEncodedHex(),
                                this.hTLV = this.hTLV.replace(/^../, e),
                                this.isModified = !1)
                            }
                            ,
                            this.getFreshValueHex = function() {
                                return this.hV
                            }
                            ,
                            "undefined" != typeof t && ("undefined" != typeof t.tag && (this.hT = t.tag),
                            "undefined" != typeof t.explicit && (this.isExplicit = t.explicit),
                            "undefined" != typeof t.obj && (this.asn1Object = t.obj,
                            this.setASN1Object(this.isExplicit, this.hT, this.asn1Object)))
                        }
                        ,
                        Fe.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object),
                        function(c) {
                            "use strict";
                            var l, t = {};
                            t.decode = function(t) {
                                var e;
                                if (l === c) {
                                    var i = "0123456789ABCDEF"
                                      , s = " \f\n\r  \u2028\u2029";
                                    for (l = [],
                                    e = 0; 16 > e; ++e)
                                        l[i.charAt(e)] = e;
                                    for (i = i.toLowerCase(),
                                    e = 10; 16 > e; ++e)
                                        l[i.charAt(e)] = e;
                                    for (e = 0; e < s.length; ++e)
                                        l[s.charAt(e)] = -1
                                }
                                var n = []
                                  , r = 0
                                  , o = 0;
                                for (e = 0; e < t.length; ++e) {
                                    var a = t.charAt(e);
                                    if ("=" == a)
                                        break;
                                    if (a = l[a],
                                    -1 != a) {
                                        if (a === c)
                                            throw "Illegal character at offset " + e;
                                        r |= a,
                                        ++o >= 2 ? (n[n.length] = r,
                                        r = 0,
                                        o = 0) : r <<= 4
                                    }
                                }
                                if (o)
                                    throw "Hex encoding incomplete: 4 bits missing";
                                return n
                            }
                            ,
                            window.Hex = t
                        }(),
                        function(c) {
                            "use strict";
                            var l, i = {};
                            i.decode = function(t) {
                                var e;
                                if (l === c) {
                                    var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                                      , s = "= \f\n\r  \u2028\u2029";
                                    for (l = [],
                                    e = 0; 64 > e; ++e)
                                        l[i.charAt(e)] = e;
                                    for (e = 0; e < s.length; ++e)
                                        l[s.charAt(e)] = -1
                                }
                                var n = []
                                  , r = 0
                                  , o = 0;
                                for (e = 0; e < t.length; ++e) {
                                    var a = t.charAt(e);
                                    if ("=" == a)
                                        break;
                                    if (a = l[a],
                                    -1 != a) {
                                        if (a === c)
                                            throw "Illegal character at offset " + e;
                                        r |= a,
                                        ++o >= 4 ? (n[n.length] = r >> 16,
                                        n[n.length] = r >> 8 & 255,
                                        n[n.length] = 255 & r,
                                        r = 0,
                                        o = 0) : r <<= 6
                                    }
                                }
                                switch (o) {
                                case 1:
                                    throw "Base64 encoding incomplete: at least 2 bits missing";
                                case 2:
                                    n[n.length] = r >> 10;
                                    break;
                                case 3:
                                    n[n.length] = r >> 16,
                                    n[n.length] = r >> 8 & 255
                                }
                                return n
                            }
                            ,
                            i.re = /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
                            i.unarmor = function(t) {
                                var e = i.re.exec(t);
                                if (e)
                                    if (e[1])
                                        t = e[1];
                                    else {
                                        if (!e[2])
                                            throw "RegExp out of sync";
                                        t = e[2]
                                    }
                                return i.decode(t)
                            }
                            ,
                            window.Base64 = i
                        }(),
                        function(o) {
                            "use strict";
                            function l(t, e) {
                                t instanceof l ? (this.enc = t.enc,
                                this.pos = t.pos) : (this.enc = t,
                                this.pos = e)
                            }
                            function u(t, e, i, s, n) {
                                this.stream = t,
                                this.header = e,
                                this.length = i,
                                this.tag = s,
                                this.sub = n
                            }
                            var r = 100
                              , a = "…"
                              , d = {
                                tag: function(t, e) {},
                                text: function(t) {}
                            };
                            l.prototype.get = function(t) {
                                if (t === o && (t = this.pos++),
                                t >= this.enc.length)
                                    throw "Requesting byte offset " + t + " on a stream of length " + this.enc.length;
                                return this.enc[t]
                            }
                            ,
                            l.prototype.hexDigits = "0123456789ABCDEF",
                            l.prototype.hexByte = function(t) {
                                return this.hexDigits.charAt(t >> 4 & 15) + this.hexDigits.charAt(15 & t)
                            }
                            ,
                            l.prototype.hexDump = function(t, e, i) {
                                for (var s = "", n = t; e > n; ++n)
                                    if (s += this.hexByte(this.get(n)),
                                    i !== !0)
                                        switch (15 & n) {
                                        case 7:
                                            s += " ";
                                            break;
                                        case 15:
                                            s += "\n";
                                            break;
                                        default:
                                            s += " "
                                        }
                                return s
                            }
                            ,
                            l.prototype.parseStringISO = function(t, e) {
                                for (var i = "", s = t; e > s; ++s)
                                    i += String.fromCharCode(this.get(s));
                                return i
                            }
                            ,
                            l.prototype.parseStringUTF = function(t, e) {
                                for (var i = "", s = t; e > s; ) {
                                    var n = this.get(s++);
                                    i += 128 > n ? String.fromCharCode(n) : n > 191 && 224 > n ? String.fromCharCode((31 & n) << 6 | 63 & this.get(s++)) : String.fromCharCode((15 & n) << 12 | (63 & this.get(s++)) << 6 | 63 & this.get(s++))
                                }
                                return i
                            }
                            ,
                            l.prototype.parseStringBMP = function(t, e) {
                                for (var i = "", s = t; e > s; s += 2) {
                                    var n = this.get(s)
                                      , r = this.get(s + 1);
                                    i += String.fromCharCode((n << 8) + r)
                                }
                                return i
                            }
                            ,
                            l.prototype.reTime = /^((?:1[89]|2\d)?\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,
                            l.prototype.parseTime = function(t, e) {
                                var i = this.parseStringISO(t, e)
                                  , s = this.reTime.exec(i);
                                return s ? (i = s[1] + "-" + s[2] + "-" + s[3] + " " + s[4],
                                s[5] && (i += ":" + s[5],
                                s[6] && (i += ":" + s[6],
                                s[7] && (i += "." + s[7]))),
                                s[8] && (i += " UTC",
                                "Z" != s[8] && (i += s[8],
                                s[9] && (i += ":" + s[9]))),
                                i) : "Unrecognized time: " + i
                            }
                            ,
                            l.prototype.parseInteger = function(t, e) {
                                var i = e - t;
                                if (i > 4) {
                                    i <<= 3;
                                    var s = this.get(t);
                                    if (0 === s)
                                        i -= 8;
                                    else
                                        for (; 128 > s; )
                                            s <<= 1,
                                            --i;
                                    return "(" + i + " bit)"
                                }
                                for (var n = 0, r = t; e > r; ++r)
                                    n = n << 8 | this.get(r);
                                return n
                            }
                            ,
                            l.prototype.parseBitString = function(t, e) {
                                var i = this.get(t)
                                  , s = (e - t - 1 << 3) - i
                                  , n = "(" + s + " bit)";
                                if (20 >= s) {
                                    var r = i;
                                    n += " ";
                                    for (var o = e - 1; o > t; --o) {
                                        for (var a = this.get(o), c = r; 8 > c; ++c)
                                            n += a >> c & 1 ? "1" : "0";
                                        r = 0
                                    }
                                }
                                return n
                            }
                            ,
                            l.prototype.parseOctetString = function(t, e) {
                                var i = e - t
                                  , s = "(" + i + " byte) ";
                                i > r && (e = t + r);
                                for (var n = t; e > n; ++n)
                                    s += this.hexByte(this.get(n));
                                return i > r && (s += a),
                                s
                            }
                            ,
                            l.prototype.parseOID = function(t, e) {
                                for (var i = "", s = 0, n = 0, r = t; e > r; ++r) {
                                    var o = this.get(r);
                                    if (s = s << 7 | 127 & o,
                                    n += 7,
                                    !(128 & o)) {
                                        if ("" === i) {
                                            var a = 80 > s ? 40 > s ? 0 : 1 : 2;
                                            i = a + "." + (s - 40 * a)
                                        } else
                                            i += "." + (n >= 31 ? "bigint" : s);
                                        s = n = 0
                                    }
                                }
                                return i
                            }
                            ,
                            u.prototype.typeName = function() {
                                if (this.tag === o)
                                    return "unknown";
                                var t = this.tag >> 6
                                  , e = (this.tag >> 5 & 1,
                                31 & this.tag);
                                switch (t) {
                                case 0:
                                    switch (e) {
                                    case 0:
                                        return "EOC";
                                    case 1:
                                        return "BOOLEAN";
                                    case 2:
                                        return "INTEGER";
                                    case 3:
                                        return "BIT_STRING";
                                    case 4:
                                        return "OCTET_STRING";
                                    case 5:
                                        return "NULL";
                                    case 6:
                                        return "OBJECT_IDENTIFIER";
                                    case 7:
                                        return "ObjectDescriptor";
                                    case 8:
                                        return "EXTERNAL";
                                    case 9:
                                        return "REAL";
                                    case 10:
                                        return "ENUMERATED";
                                    case 11:
                                        return "EMBEDDED_PDV";
                                    case 12:
                                        return "UTF8String";
                                    case 16:
                                        return "SEQUENCE";
                                    case 17:
                                        return "SET";
                                    case 18:
                                        return "NumericString";
                                    case 19:
                                        return "PrintableString";
                                    case 20:
                                        return "TeletexString";
                                    case 21:
                                        return "VideotexString";
                                    case 22:
                                        return "IA5String";
                                    case 23:
                                        return "UTCTime";
                                    case 24:
                                        return "GeneralizedTime";
                                    case 25:
                                        return "GraphicString";
                                    case 26:
                                        return "VisibleString";
                                    case 27:
                                        return "GeneralString";
                                    case 28:
                                        return "UniversalString";
                                    case 30:
                                        return "BMPString";
                                    default:
                                        return "Universal_" + e.toString(16)
                                    }
                                case 1:
                                    return "Application_" + e.toString(16);
                                case 2:
                                    return "[" + e + "]";
                                case 3:
                                    return "Private_" + e.toString(16)
                                }
                            }
                            ,
                            u.prototype.reSeemsASCII = /^[ -~]+$/,
                            u.prototype.content = function() {
                                if (this.tag === o)
                                    return null;
                                var t = this.tag >> 6
                                  , e = 31 & this.tag
                                  , i = this.posContent()
                                  , s = Math.abs(this.length);
                                if (0 !== t) {
                                    if (null !== this.sub)
                                        return "(" + this.sub.length + " elem)";
                                    var n = this.stream.parseStringISO(i, i + Math.min(s, r));
                                    return this.reSeemsASCII.test(n) ? n.substring(0, 2 * r) + (n.length > 2 * r ? a : "") : this.stream.parseOctetString(i, i + s)
                                }
                                switch (e) {
                                case 1:
                                    return 0 === this.stream.get(i) ? "false" : "true";
                                case 2:
                                    return this.stream.parseInteger(i, i + s);
                                case 3:
                                    return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseBitString(i, i + s);
                                case 4:
                                    return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseOctetString(i, i + s);
                                case 6:
                                    return this.stream.parseOID(i, i + s);
                                case 16:
                                case 17:
                                    return "(" + this.sub.length + " elem)";
                                case 12:
                                    return this.stream.parseStringUTF(i, i + s);
                                case 18:
                                case 19:
                                case 20:
                                case 21:
                                case 22:
                                case 26:
                                    return this.stream.parseStringISO(i, i + s);
                                case 30:
                                    return this.stream.parseStringBMP(i, i + s);
                                case 23:
                                case 24:
                                    return this.stream.parseTime(i, i + s)
                                }
                                return null
                            }
                            ,
                            u.prototype.toString = function() {
                                return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + (null === this.sub ? "null" : this.sub.length) + "]"
                            }
                            ,
                            u.prototype.print = function(t) {
                                if (t === o && (t = ""),
                                null !== this.sub) {
                                    t += " ";
                                    for (var e = 0, i = this.sub.length; i > e; ++e)
                                        this.sub[e].print(t)
                                }
                            }
                            ,
                            u.prototype.toPrettyString = function(t) {
                                t === o && (t = "");
                                var e = t + this.typeName() + " @" + this.stream.pos;
                                if (this.length >= 0 && (e += "+"),
                                e += this.length,
                                32 & this.tag ? e += " (constructed)" : 3 != this.tag && 4 != this.tag || null === this.sub || (e += " (encapsulates)"),
                                e += "\n",
                                null !== this.sub) {
                                    t += " ";
                                    for (var i = 0, s = this.sub.length; s > i; ++i)
                                        e += this.sub[i].toPrettyString(t)
                                }
                                return e
                            }
                            ,
                            u.prototype.toDOM = function() {
                                var t = d.tag("div", "node");
                                t.asn1 = this;
                                var e = d.tag("div", "head")
                                  , i = this.typeName().replace(/_/g, " ");
                                e.innerHTML = i;
                                var s = this.content();
                                if (null !== s) {
                                    s = String(s).replace(/</g, "<");
                                    var n = d.tag("span", "preview");
                                    n.appendChild(d.text(s)),
                                    e.appendChild(n)
                                }
                                t.appendChild(e),
                                this.node = t,
                                this.head = e;
                                var r = d.tag("div", "value");
                                if (i = "Offset: " + this.stream.pos + "<br/>",
                                i += "Length: " + this.header + "+",
                                i += this.length >= 0 ? this.length : -this.length + " (undefined)",
                                32 & this.tag ? i += "<br/>(constructed)" : 3 != this.tag && 4 != this.tag || null === this.sub || (i += "<br/>(encapsulates)"),
                                null !== s && (i += "<br/>Value:<br/><b>" + s + "</b>",
                                "object" == typeof oids && 6 == this.tag)) {
                                    var o = oids[s];
                                    o && (o.d && (i += "<br/>" + o.d),
                                    o.c && (i += "<br/>" + o.c),
                                    o.w && (i += "<br/>(warning!)"))
                                }
                                r.innerHTML = i,
                                t.appendChild(r);
                                var a = d.tag("div", "sub");
                                if (null !== this.sub)
                                    for (var c = 0, l = this.sub.length; l > c; ++c)
                                        a.appendChild(this.sub[c].toDOM());
                                return t.appendChild(a),
                                e.onclick = function() {
                                    t.className = "node collapsed" == t.className ? "node" : "node collapsed"
                                }
                                ,
                                t
                            }
                            ,
                            u.prototype.posStart = function() {
                                return this.stream.pos
                            }
                            ,
                            u.prototype.posContent = function() {
                                return this.stream.pos + this.header
                            }
                            ,
                            u.prototype.posEnd = function() {
                                return this.stream.pos + this.header + Math.abs(this.length)
                            }
                            ,
                            u.prototype.fakeHover = function(t) {
                                this.node.className += " hover",
                                t && (this.head.className += " hover")
                            }
                            ,
                            u.prototype.fakeOut = function(t) {
                                var e = / ?hover/;
                                this.node.className = this.node.className.replace(e, ""),
                                t && (this.head.className = this.head.className.replace(e, ""))
                            }
                            ,
                            u.prototype.toHexDOM_sub = function(t, e, i, s, n) {
                                if (!(s >= n)) {
                                    var r = d.tag("span", e);
                                    r.appendChild(d.text(i.hexDump(s, n))),
                                    t.appendChild(r)
                                }
                            }
                            ,
                            u.prototype.toHexDOM = function(e) {
                                var t = d.tag("span", "hex");
                                if (e === o && (e = t),
                                this.head.hexNode = t,
                                this.head.onmouseover = function() {
                                    this.hexNode.className = "hexCurrent"
                                }
                                ,
                                this.head.onmouseout = function() {
                                    this.hexNode.className = "hex"
                                }
                                ,
                                t.asn1 = this,
                                t.onmouseover = function() {
                                    var t = !e.selected;
                                    t && (e.selected = this.asn1,
                                    this.className = "hexCurrent"),
                                    this.asn1.fakeHover(t)
                                }
                                ,
                                t.onmouseout = function() {
                                    var t = e.selected == this.asn1;
                                    this.asn1.fakeOut(t),
                                    t && (e.selected = null,
                                    this.className = "hex")
                                }
                                ,
                                this.toHexDOM_sub(t, "tag", this.stream, this.posStart(), this.posStart() + 1),
                                this.toHexDOM_sub(t, this.length >= 0 ? "dlen" : "ulen", this.stream, this.posStart() + 1, this.posContent()),
                                null === this.sub)
                                    t.appendChild(d.text(this.stream.hexDump(this.posContent(), this.posEnd())));
                                else if (this.sub.length > 0) {
                                    var i = this.sub[0]
                                      , s = this.sub[this.sub.length - 1];
                                    this.toHexDOM_sub(t, "intro", this.stream, this.posContent(), i.posStart());
                                    for (var n = 0, r = this.sub.length; r > n; ++n)
                                        t.appendChild(this.sub[n].toHexDOM(e));
                                    this.toHexDOM_sub(t, "outro", this.stream, s.posEnd(), this.posEnd())
                                }
                                return t
                            }
                            ,
                            u.prototype.toHexString = function(t) {
                                return this.stream.hexDump(this.posStart(), this.posEnd(), !0)
                            }
                            ,
                            u.decodeLength = function(t) {
                                var e = t.get()
                                  , i = 127 & e;
                                if (i == e)
                                    return i;
                                if (i > 3)
                                    throw "Length over 24 bits not supported at position " + (t.pos - 1);
                                if (0 === i)
                                    return -1;
                                e = 0;
                                for (var s = 0; i > s; ++s)
                                    e = e << 8 | t.get();
                                return e
                            }
                            ,
                            u.hasContent = function(t, e, i) {
                                if (32 & t)
                                    return !0;
                                if (3 > t || t > 4)
                                    return !1;
                                var s = new l(i);
                                3 == t && s.get();
                                var n = s.get();
                                if (n >> 6 & 1)
                                    return !1;
                                try {
                                    var r = u.decodeLength(s);
                                    return s.pos - i.pos + r == e
                                } catch (p) {
                                    return !1
                                }
                            }
                            ,
                            u.decode = function(t) {
                                t instanceof l || (t = new l(t,0));
                                var e = new l(t)
                                  , i = t.get()
                                  , s = u.decodeLength(t)
                                  , n = t.pos - e.pos
                                  , r = null;
                                if (u.hasContent(i, s, t)) {
                                    var o = t.pos;
                                    if (3 == i && t.get(),
                                    r = [],
                                    s >= 0) {
                                        for (var a = o + s; t.pos < a; )
                                            r[r.length] = u.decode(t);
                                        if (t.pos != a)
                                            throw "Content size is not correct for container starting at offset " + o
                                    } else
                                        try {
                                            for (; ; ) {
                                                var c = u.decode(t);
                                                if (0 === c.tag)
                                                    break;
                                                r[r.length] = c
                                            }
                                            s = o - t.pos
                                        } catch (h) {
                                            throw "Exception while decoding undefined length content: " + h
                                        }
                                } else
                                    t.pos += s;
                                return new u(e,n,s,i,r)
                            }
                            ,
                            u.test = function() {
                                for (var t = [{
                                    value: [39],
                                    expected: 39
                                }, {
                                    value: [129, 201],
                                    expected: 201
                                }, {
                                    value: [131, 254, 220, 186],
                                    expected: 16702650
                                }], e = 0, i = t.length; i > e; ++e) {
                                    var s = new l(t[e].value,0)
                                      , n = u.decodeLength(s);
                                }
                            }
                            ,
                            window.ASN1 = u
                        }(),
                        ASN1.prototype.getHexStringValue = function() {
                            var t = this.toHexString()
                              , e = 2 * this.header
                              , i = 2 * this.length;
                            return t.substr(e, i)
                        }
                        ,
                        le.prototype.parseKey = function(t) {
                            try {
                                var e = 0
                                  , i = 0
                                  , s = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/
                                  , n = s.test(t) ? Hex.decode(t) : Base64.unarmor(t)
                                  , r = ASN1.decode(n);
                                if (3 === r.sub.length && (r = r.sub[2].sub[0]),
                                9 === r.sub.length) {
                                    e = r.sub[1].getHexStringValue(),
                                    this.n = ae(e, 16),
                                    i = r.sub[2].getHexStringValue(),
                                    this.e = parseInt(i, 16);
                                    var o = r.sub[3].getHexStringValue();
                                    this.d = ae(o, 16);
                                    var a = r.sub[4].getHexStringValue();
                                    this.p = ae(a, 16);
                                    var c = r.sub[5].getHexStringValue();
                                    this.q = ae(c, 16);
                                    var l = r.sub[6].getHexStringValue();
                                    this.dmp1 = ae(l, 16);
                                    var u = r.sub[7].getHexStringValue();
                                    this.dmq1 = ae(u, 16);
                                    var d = r.sub[8].getHexStringValue();
                                    this.coeff = ae(d, 16)
                                } else {
                                    if (2 !== r.sub.length)
                                        return !1;
                                    var p = r.sub[1]
                                      , h = p.sub[0];
                                    e = h.sub[0].getHexStringValue(),
                                    this.n = ae(e, 16),
                                    i = h.sub[1].getHexStringValue(),
                                    this.e = parseInt(i, 16)
                                }
                                return !0
                            } catch (f) {
                                return !1
                            }
                        }
                        ,
                        le.prototype.getPrivateBaseKey = function() {
                            var t = {
                                array: [new KJUR.asn1.DERInteger({
                                    "int": 0
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.n
                                }), new KJUR.asn1.DERInteger({
                                    "int": this.e
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.d
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.p
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.q
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.dmp1
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.dmq1
                                }), new KJUR.asn1.DERInteger({
                                    bigint: this.coeff
                                })]
                            }
                              , e = new KJUR.asn1.DERSequence(t);
                            return e.getEncodedHex()
                        }
                        ,
                        le.prototype.getPrivateBaseKeyB64 = function() {
                            return be(this.getPrivateBaseKey())
                        }
                        ,
                        le.prototype.getPublicBaseKey = function() {
                            var t = {
                                array: [new KJUR.asn1.DERObjectIdentifier({
                                    oid: "1.2.840.113549.1.1.1"
                                }), new KJUR.asn1.DERNull]
                            }
                              , e = new KJUR.asn1.DERSequence(t);
                            t = {
                                array: [new KJUR.asn1.DERInteger({
                                    bigint: this.n
                                }), new KJUR.asn1.DERInteger({
                                    "int": this.e
                                })]
                            };
                            var i = new KJUR.asn1.DERSequence(t);
                            t = {
                                hex: "00" + i.getEncodedHex()
                            };
                            var s = new KJUR.asn1.DERBitString(t);
                            t = {
                                array: [e, s]
                            };
                            var n = new KJUR.asn1.DERSequence(t);
                            return n.getEncodedHex()
                        }
                        ,
                        le.prototype.getPublicBaseKeyB64 = function() {
                            return be(this.getPublicBaseKey())
                        }
                        ,
                        le.prototype.wordwrap = function(t, e) {
                            if (e = e || 64,
                            !t)
                                return t;
                            var i = "(.{1," + e + "})( +|$\n?)|(.{1," + e + "})";
                            return t.match(RegExp(i, "g")).join("\n")
                        }
                        ,
                        le.prototype.getPrivateKey = function() {
                            var t = "-----BEGIN RSA PRIVATE KEY-----\n";
                            return t += this.wordwrap(this.getPrivateBaseKeyB64()) + "\n",
                            t += "-----END RSA PRIVATE KEY-----"
                        }
                        ,
                        le.prototype.getPublicKey = function() {
                            var t = "-----BEGIN PUBLIC KEY-----\n";
                            return t += this.wordwrap(this.getPublicBaseKeyB64()) + "\n",
                            t += "-----END PUBLIC KEY-----"
                        }
                        ,
                        le.prototype.hasPublicKeyProperty = function(t) {
                            return t = t || {},
                            t.hasOwnProperty("n") && t.hasOwnProperty("e")
                        }
                        ,
                        le.prototype.hasPrivateKeyProperty = function(t) {
                            return t = t || {},
                            t.hasOwnProperty("n") && t.hasOwnProperty("e") && t.hasOwnProperty("d") && t.hasOwnProperty("p") && t.hasOwnProperty("q") && t.hasOwnProperty("dmp1") && t.hasOwnProperty("dmq1") && t.hasOwnProperty("coeff")
                        }
                        ,
                        le.prototype.parsePropertiesFrom = function(t) {
                            this.n = t.n,
                            this.e = t.e,
                            t.hasOwnProperty("d") && (this.d = t.d,
                            this.p = t.p,
                            this.q = t.q,
                            this.dmp1 = t.dmp1,
                            this.dmq1 = t.dmq1,
                            this.coeff = t.coeff)
                        }
                        ;
                        var qe = function(t) {
                            le.call(this),
                            t && ("string" == typeof t ? this.parseKey(t) : (this.hasPrivateKeyProperty(t) || this.hasPublicKeyProperty(t)) && this.parsePropertiesFrom(t))
                        };
                        (qe.prototype = new le).constructor = qe;
                        var He = function(t) {
                            t = t || {},
                            this.default_key_size = parseInt(t.default_key_size) || 1024,
                            this.default_public_exponent = t.default_public_exponent || "010001",
                            this.log = t.log || !1,
                            this.key = null
                        };
                        He.prototype.setKey = function(t) {
                            this.log && this.key && console.warn("A key was already set, overriding existing."),
                            this.key = new qe(t)
                        }
                        ,
                        He.prototype.setPrivateKey = function(t) {
                            this.setKey(t)
                        }
                        ,
                        He.prototype.setPublicKey = function(t) {
                            this.setKey(t)
                        }
                        ,
                        He.prototype.decrypt = function(t) {
                            try {
                                return this.getKey().decrypt(ye(t))
                            } catch (b) {
                                return !1
                            }
                        }
                        ,
                        He.prototype.encrypt = function(t) {
                            try {
                                return be(this.getKey().encrypt(t))
                            } catch (b) {
                                return !1
                            }
                        }
                        ,
                        He.prototype.getKey = function(t) {
                            if (!this.key) {
                                if (this.key = new qe,
                                t && "[object Function]" === {}.toString.call(t))
                                    return void this.key.generateAsync(this.default_key_size, this.default_public_exponent, t);
                                this.key.generate(this.default_key_size, this.default_public_exponent)
                            }
                            return this.key
                        }
                        ,
                        He.prototype.getPrivateKey = function() {
                            return this.getKey().getPrivateKey()
                        }
                        ,
                        He.prototype.getPrivateKeyB64 = function() {
                            return this.getKey().getPrivateBaseKeyB64()
                        }
                        ,
                        He.prototype.getPublicKey = function() {
                            return this.getKey().getPublicKey()
                        }
                        ,
                        He.prototype.getPublicKeyB64 = function() {
                            return this.getKey().getPublicBaseKeyB64()
                        }
                        ,
                        He.version = "2.3.1",
                        t.JSEncrypt = He
                    }
                    ) ? s.apply(e, n) : s) === undefined || (i.exports = r)
                }
                .call(e, i, e, t)) === undefined || (t.exports = r)
            },
            jsencrypt: function(t, e, r) {
                var i;
                (i = function(t, e, i) {
                    var s = r("encrypt");
                    function n() {
                        void 0 !== s && (this.jsencrypt = new s.JSEncrypt,
                        this.jsencrypt.setPublicKey("-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDq04c6My441Gj0UFKgrqUhAUg+kQZeUeWSPlAU9fr4HBPDldAeqzx1UR92KJHuQh/zs1HOamE2dgX9z/2oXcJaqoRIA/FXysx+z2YlJkSk8XQLcQ8EBOkp//MZrixam7lCYpNOjadQBb2Ot0U/Ky+jF2p+Ie8gSZ7/u+Wnr5grywIDAQAB-----END PUBLIC KEY-----"))
                    }
                    n.prototype.encode = function(t, e) {
                        var i = e ? e + "|" + t : t;
                        return encodeURIComponent(this.jsencrypt.encrypt(i))
                    }
                    ,
                    i.exports = n
                }
                .call(e, r, e, t)) === undefined || (t.exports = i)
            }
        });
        function z(pwd, time) {
            var n = _n("jsencrypt");
            var g = (new n);
            var r = g.encode(pwd, time);
            return r;
        }
        
        var pwd = process.argv[2];
        var time = process.argv[3];
        console.log(z(pwd, time));
        

        加密的算法到手了,現在就請求獲取數據即可。這時會發現題目要求的是【總金額】,而接口返回的僅僅是【三等獎中獎金額】,然后在全局中搜索其他金額,但是沒有搜索到,此時接口也沒返回,說明是根據接口的參數計算得出的
        回去看一下請求成功時的回調函數

        這里可以看到響應的內一個值賦值給了val

        往右拉可以看到其中的值分別為【三等獎】、【總金額】、【二等獎】和【一等獎】。因為我們要總金額,所以所有數值直接乘以24即可
        [Python] 純文本查看 復制代碼
        import requests
        import time
        import os
        from urllib import parse
        
        def main():
            sums = 0
            for page in range(1, 6):
                t = str(int(time.time()))+'000'
                q = str(page) + '-' + t + '|'
                nodejs = os.popen('node 06 '+t+' '+str(page))
                m = nodejs.read().replace('\n', '')
                nodejs.close()
                data = {
                    'page': page,
                    'm': m,
                    'q': q
                }
                url = 'http://match.yuanrenxue.com/api/match/6?'+parse.urlencode(data)
                headers = {
                    'User-Agent': 'yuanrenxue.project'
                }
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    sums += each['value'] * 24
            print(sums)
            # 總金額: 6883344
        
        if __name__ == '__main__':
            main()


        第七題【響應-字體反爬-字體映射文件】
        這里可以直接抓取接口的數據,請求的時候沒有存在反爬

        可以看到返回的值都已以空格分隔的字符串,還有一個base64編碼的woff文件
        我們將這個woff文件保存下來,并將其轉換為xml文件
        [Python] 純文本查看 復制代碼
        from fontTools.ttLib import TTFont
        url = 'http://match.yuanrenxue.com/api/match/7?page=1'
        response = requests.get(url).json()
        woffb64 = response['woff']
        with open('07.woff', 'wb') as f:
            f.write(base64.b64decode(woffb64.encode()))
        TTFont('07.woff').saveXML('07.xml')


        此時可以查看到字體文件的內容,其中最主要的是兩個部分【cmap】和【glyf】
        【cmap】表示的是我們響應的內容(源碼內容)與name的映射關系
        【glyf】表示name對應字體的輪廓信息
        (備注:信息參考來源https://blog.csdn.net/dream_dt/article/details/82725398
        因為每個數字的輪廓是固定的,那么可以通過輪廓信息的前幾個點來確定是哪一個數字
        所以對于字體文件的處理;舅悸肪褪
        1.獲取相應內容
        2.根據響應找到對應的name
        3.根據name找到對應的輪廓信息
        4.根據輪廓信息的前幾個點,確定對應的數字
        到這里數字就已經處理完成了,但是題目要求的是找出勝點最高的召喚師的姓名,所以還需要獲取每一個數字對應的姓名,這里隨意搜索名字都可以


        我使用的是第一個名字,實際隨意一個都是可以的,都可以找到這段代碼,主要看里面success的回調函數,因為這里就是繪制頁面的

        這里1557行的name變量就是所有的名字,1563行就是取name的值進行顯示
        那么將這些變量復制出來重新編寫函數就可以了
        [Python] 純文本查看 復制代碼
        import requests
        import base64
        import xmltodict
        import os
        from fontTools.ttLib import TTFont
        
        def main():
            name = ['極鍍ギ紬荕', '爺灬霸氣傀儡', '夢戰蒼穹', '傲世哥', 'мaη肆風聲', '一刀メ隔世', '橫刀メ絕殺', 'Q不死你R死你', '魔帝殤邪', '封刀不再戰', '傾城孤狼', '戎馬江湖',
                    '狂得像風', '影之哀傷', '謸氕づ獨尊', '傲視狂殺', '追風之夢', '梟雄在世', '傲視之巔', '黑夜刺客', '占你心為王', '爺來取你狗命', '御風踏血', '鳧矢暮城', '孤影メ殘刀',
                    '野區霸王', '噬血嘯月', '風逝無跡', '帥的睡不著', '血色殺戮者', '冷視天下', '帥出新高度', '風狆瑬蒗', '靈魂禁錮', 'ヤ地獄籃楓ゞ', '濺血メ破天', '劍尊メ殺戮',
                    '塞外う飛龍', '哥‘K純帥', '逆風祈雨', '恣意踏江山', '望斷、天涯路', '地獄惡靈', '瘋狂メ孽殺', '寂月滅影', '騷年霸稱帝王', '狂殺メ無赦', '死靈的哀傷', '撩妹界扛把子',
                    '霸刀☆藐視天下', '瀟灑又能打', '狂卩龍灬巔丷峰', '羈旅天涯.', '南宮沐風', '風戀絕塵', '劍下孤魂', '一蓑煙雨', '領域★傾戰', '威龍丶斷魂神狙', '輝煌戰績', '屎來運賺',
                    '伱、Bu夠檔次', '九音引魂簫', '骨子里的傲氣', '霸海斷長空', '沒槍也很狂', '死魂★之靈']
            peopledict = {}
            for page in range(1, 6):
                yyq = 1
                url = 'http://match.yuanrenxue.com/api/match/7?page='+str(page)
                response = requests.get(url).json()
                woffb64 = response['woff']
                with open('07.woff', 'wb') as f:
                    f.write(base64.b64decode(woffb64.encode()))
                TTFont('07.woff').saveXML('07.xml')
                with open('07.xml', 'r') as f:
                    xmldict = xmltodict.parse(f.read())
                namedict = {}
                for each in xmldict['ttFont']['cmap']['cmap_format_4'][0]['map']:
                    namedict[each['@code']] = each['@name']
                numberdict = {}
                for each in xmldict['ttFont']['glyf']['TTGlyph']:
                    if 'uni' in each['@name']:
                        if type(each['contour']) == list:
                            pt = each['contour'][0]['pt']
                        else:
                            pt = each['contour']['pt']
                        if pt[0]['@x'] == '300':
                            if pt[1]['@x'] == '171':
                                numberdict[each['@name']] = '0'
                            else:
                                numberdict[each['@name']] = '8'
                        elif pt[0]['@x'] == '297':
                            numberdict[each['@name']] = '1'
                        elif pt[0]['@x'] == '310':
                            if pt[1]['@x'] == '202':
                                numberdict[each['@name']] = '2'
                            else:
                                numberdict[each['@name']] = '6'
                        elif pt[0]['@x'] == '307':
                            numberdict[each['@name']] = '3'
                        elif pt[0]['@x'] == '384':
                            numberdict[each['@name']] = '4'
                        elif pt[0]['@x'] == '105':
                            numberdict[each['@name']] = '5'
                        elif pt[0]['@x'] == '66':
                            numberdict[each['@name']] = '7'
                        elif pt[0]['@x'] == '292':
                            numberdict[each['@name']] = '9'
                for each in response['data']:
                    number = each['value'].replace('&#', '0').strip().split(' ')
                    number = int(''.join(list(map(lambda n: numberdict[namedict[n]], number))))
                    peopledict[name[yyq + (page - 1) * 10]] = number
                    yyq += 1
            people = max(peopledict, key=peopledict.get)
            pt = peopledict[people]
            print(people)
            print(pt)
            # 勝點最高召喚師名字:冷視天下
            # 勝點最高:9711
        
            # 清空緩存
            os.remove('07.woff')
            os.remove('07.xml')
        
        if __name__ == '__main__':
            main()


        第八題【接口-驗證碼-文字點選】
        (備注:題目要求是不能夠使用打碼平臺,因為考慮到我不是比賽,而且個人少量需求的識別使用打碼平臺是比較方便的,所以這一題我是用的是騰訊云的通用手寫體識別,
        雖然識別不是百分百準確,但是對付本題足夠了。而且每月有1000次免費調用,用來做這題是完全夠的
        直接使用f12進行抓包,一般驗證碼都會返回一個參數用于請求的時候一起提交,用于知道你輸入的是哪個驗證碼,這里明顯就是【Set-Cookie】中的【sessionid





        首先將html字段的內容復制出來格式化一下

        此時可以看到需要點擊的文字在第二個div中,而驗證碼圖片則在最后的img標簽中,查看一下這張圖片

        如果就這樣直接去識別的話,別說AI,人都看的辣眼睛,所以需要對圖片做進一步的處理
        那么現在的問題就變成了怎么處理圖片來更好的識別了,處理方法有很多,我處理這種也是比較少,我的基本思路是
        1.去除背景色影響
        2.去除噪點的影響
        3.去除框線和斜線的影響
        4.增強字體強度
        5.二值化

        處理的效果大概就像上圖,此時就可以調用騰訊云的api進行文字識別了
        接下來看看怎么請求。隨便點四個地方,然后查看一下請求的內容

        看一看到我們選擇驗證碼的結果再查詢參數中,仔細觀察可以發現,當我們點下一個點的時候,左邊的圖片就會在點的地方出現一個紅點,此時對著圖片右鍵,選擇審查元素

        可以看到圖片上面有很多的div,實際上圖片上是有30*30個div,每個代表一個序號,那么通過這個序號就可以知道點擊的是哪個地方的文字了,這里我一律按照點擊圖片左上角第一個div
        編寫代碼實現請求
        [Python] 純文本查看 復制代碼
        import requests
        import re
        import base64
        import os
        import json
        from tencentcloud.common import credential
        from tencentcloud.common.profile.client_profile import ClientProfile
        from tencentcloud.common.profile.http_profile import HttpProfile
        from tencentcloud.ocr.v20181119 import ocr_client, models
        from PIL import Image
        from collections import Counter
        
        clicklist = [0, 10, 20, 300, 310, 320, 600, 610, 620]
        
        def main():
            numberanswer = []
            for page in range(1, 6):
                while True:
                    try:
                        print('正在獲取第'+str(page)+'頁驗證碼')
                        url = 'http://match.yuanrenxue.com/api/match/8_verify'
                        response = requests.get(url)
                        sessionid = re.findall('(?<=sessionid=).+?(?=;)', response.headers['Set-Cookie'])[0]
                        response = response.json()['html']
                        divs = re.findall('(?<=請依次點擊).+<br>', response)[0]
                        words = re.findall('[\u4e00-\u9fa5]', divs)
                        print('需要依次點擊的文字')
                        print(words)
                        img = re.findall('(?<=<img src="data:image/jpeg;base64,).+?(?=")', response)[0]
                        print('正在處理圖片')
                        with open('08.png', 'wb') as f:
                            f.write(base64.b64decode(img.encode()))
        
                        image = Image.open('08.png').convert("RGB")
                        width, height = image.size
                        rgblst = []
                        lesslist = []
                        morelist = []
                        linelist = []
                        # 去除噪點影響
                        for y in range(height):
                            for x in range(width):
                                rgblst.append(image.getpixel((x, y)))
                        for rgb, number in Counter(rgblst).most_common()[2:]:
                            if number < 500:
                                lesslist.append(rgb)
                            else:
                                morelist.append(rgb)
        
                        # 校驗顏色區間閥值
                        for rgb in morelist:
                            xlist = []
                            ylist = []
                            for y in range(height):
                                for x in range(width):
                                    if rgb == image.getpixel((x, y)):
                                        xlist.append(x)
                                        ylist.append(y)
                            xlist.sort()
                            ylist.sort()
                            if (xlist[-1] - xlist[0]) > 110:
                                linelist.append(rgb)
                            if (ylist[-1] - ylist[0]) > 110:
                                linelist.append(rgb)
                            if xlist[0] < 80 and xlist[-1] > 120:
                                linelist.append(rgb)
                            if xlist[0] < 180 and xlist[-1] > 220:
                                linelist.append(rgb)
                            if ylist[0] < 80 and ylist[-1] > 120:
                                linelist.append(rgb)
                            if ylist[0] < 180 and ylist[-1] > 220:
                                linelist.append(rgb)
        
                        # 去除背景色影響
                        counter = Counter(rgblst).most_common(2)
                        f1 = counter[0][0]
                        f2 = counter[1][0]
                        image2 = Image.new("RGB", (width, height))
                        for y in range(height):
                            for x in range(width):
                                if image.getpixel((x, y)) == f1 or image.getpixel((x, y)) == f2:
                                    image2.putpixel((x, y), (255, 255, 255))
                                elif image.getpixel((x, y)) in lesslist:
                                    image2.putpixel((x, y), (255, 255, 255))
                                elif image.getpixel((x, y)) in linelist:
                                    image2.putpixel((x, y), (255, 255, 255))
                                else:
                                    image2.putpixel((x, y), image.getpixel((x, y)))
        
                        rgblist = []
                        # 最后去除前面遺漏的線條
                        for y in range(height):
                            for x in range(width):
                                rgb = image2.getpixel((x, y))
                                if not rgb in rgblist:
                                    rgblist.append(rgb)
        
                        def contrast1(zhongrgb, bianrgb):
                            for each in bianrgb:
                                if zhongrgb != each:
                                    return False
                            return True
        
                        if len(rgblist) > 10:
                            linelist = []
                            for rgb in rgblist:
                                if rgb != (255, 255, 255):
                                    allnumber = 0
                                    nonumber = 0
                                    for y in range(height):
                                        for x in range(width):
                                            if 0 < x < (width-1) and 0 < y < (height-1):
                                                zhongrgb = image2.getpixel((x, y))
                                                if zhongrgb == rgb:
                                                    bianrgb = [
                                                        image2.getpixel((x-1, y-1)), image2.getpixel((x, y-1)), image2.getpixel((x+1, y-1)),
                                                        image2.getpixel((x-1, y)), image2.getpixel((x+1, y)),
                                                        image2.getpixel((x-1, y+1)), image2.getpixel((x, y+1)), image2.getpixel((x+1, y+1))
                                                    ]
                                                    if contrast1(zhongrgb, bianrgb):
                                                        allnumber += 1
                                                    else:
                                                        nonumber += 1
                                    if (allnumber / (allnumber + nonumber)) > 0.5:
                                        linelist.append(rgb)
                            image3 = Image.new("RGB", (width, height))
                            for y in range(height):
                                for x in range(width):
                                    if image2.getpixel((x, y)) in linelist:
                                        image3.putpixel((x, y), (255, 255, 255))
                                    else:
                                        image3.putpixel((x, y), image2.getpixel((x, y)))
                        else:
                            image3 = image2
        
                        def contrast2(zhongrgb, bianrgb):
                            rgb, number = Counter(bianrgb).most_common(1)[0]
                            if number >= 7 and rgb != zhongrgb:
                                return True
                            else:
                                return False
        
                        # 首次增強字體
                        for i in range(5):
                            image4 = Image.new("RGB", (width, height))
                            for y in range(height):
                                for x in range(width):
                                    if 0 < x < (width - 1) and 0 < y < (height - 1):
                                        zhongrgb = image3.getpixel((x, y))
                                        bianrgb = [
                                            image3.getpixel((x - 1, y - 1)), image3.getpixel((x, y - 1)), image3.getpixel((x + 1, y - 1)),
                                            image3.getpixel((x - 1, y)), image3.getpixel((x + 1, y)),
                                            image3.getpixel((x - 1, y + 1)), image3.getpixel((x, y + 1)), image3.getpixel((x + 1, y + 1))
                                        ]
                                        if contrast2(zhongrgb, bianrgb):
                                            image4.putpixel((x, y), Counter(bianrgb).most_common(1)[0][0])
                                        else:
                                            image4.putpixel((x, y), zhongrgb)
                                    else:
                                        image4.putpixel((x, y), image3.getpixel((x, y)))
                            image4.save('08'+str(i)+'.png')
                            image3 = image4
        
                        # 二值化
                        image4 = Image.new("RGB", (width, height))
                        for y in range(height):
                            for x in range(width):
                                rgb = image3.getpixel((x, y))
                                if rgb == (255, 255, 255):
                                    image4.putpixel((x, y), (255, 255, 255))
                                else:
                                    image4.putpixel((x, y), (0, 0, 0))
                        image4.save('08.png')
        
                        print('正在識別圖片')
                        # 騰訊云
                        with open('08.png', 'rb') as f:
                            img = base64.b64encode(f.read()).decode()
        
                        cred = credential.Credential("", "") # 填寫自己的帳號信息
                        httpProfile = HttpProfile()
                        httpProfile.endpoint = "ocr.tencentcloudapi.com"
                        clientProfile = ClientProfile()
                        clientProfile.httpProfile = httpProfile
                        client = ocr_client.OcrClient(cred, "ap-beijing", clientProfile)
                        req = models.GeneralHandwritingOCRRequest()
                        params = {"ImageBase64": img}
                        req.from_json_string(json.dumps(params))
                        response = json.loads(client.GeneralHandwritingOCR(req).to_json_string())
                        wordlist = []
                        for each in response['TextDetections']:
                            wordlist += list(each['DetectedText'])
                        if len(wordlist) == 9:
                            print('識別成功')
                            print(wordlist)
                            answer = ''
                            for word in words:
                                if word in wordlist:
                                    answer += str(clicklist[wordlist.index(word)])+'|'
                                else:
                                    print('無法找到與 ' + word + ' 對應的文字')
                                    print('重新獲取')
                                    raise ()
                            print('識別答案成功')
                            print(answer)
                            url = 'http://match.yuanrenxue.com/api/match/8?page='+str(page)+'&answer='+answer
                            headers = {
                                'cookie': 'sessionid='+sessionid
                            }
                            response = requests.get(url, headers=headers).json()
                            print(response)
                            for each in response['data']:
                                numberanswer.append(each['value'])
                            break
                        else:
                            print('識別失敗')
                            print('重新獲取')
                    except:
                        pass
            # 請求完成,開始統計
            answer = Counter(numberanswer).most_common(1)[0][0]
            print(answer)
            # 眾數:7453
        
            # 刪除緩存
            os.remove('08.png')
        
        if __name__ == '__main__':
            main()


        第九題【接口-請求頭-值加密
        第九題也是動態cookie,根據第二題的經驗,這次直接使用Fiddler.exe進行抓包


        可以看到與第二題比較類似,都是不帶cookie的時候訪問會返回一段script,然后通過這段script代碼計算出cookie,把這段代碼復制出來



        可以看到這段代碼由三段script代碼組成,復制第二段代碼到ob混淆專解測試版V0.1
        [JavaScript] 純文本查看 復制代碼
        (function () {
          var _0x5d195 = function () {
            var _0x430ddc = true;
            return function (_0x23198c, _0x471107) {
              var _0x4ab8c8 = _0x430ddc ? function () {
                if (_0x471107) {
                  var _0xc5dcca = _0x471107["apply"](_0x23198c, arguments);
        
                  _0x471107 = null;
                  return _0xc5dcca;
                }
              } : function () {};
        
              _0x430ddc = false;
              return _0x4ab8c8;
            };
          }();
        
          var _0x389c3c = _0x5d195(this, function () {
            var _0x4008ad = function () {
              var _0x2a79aa = _0x4008ad["constructor"]("return /\" + this + \"/")()["compile"]("^([^ ]+( +[^ ]+)+)+[^ ]}");
        
              return !_0x2a79aa["test"](_0x389c3c);
            };
        
            return _0x4008ad();
          });
        
          _0x389c3c();
        
          var _0x2c92eb = function () {
            var _0x2b55f5 = true;
            return function (_0x2e56bc, _0x41f85d) {
              var _0x1d675f = _0x2b55f5 ? function () {
                if (_0x41f85d) {
                  var _0x1fa9cf = _0x41f85d["apply"](_0x2e56bc, arguments);
        
                  _0x41f85d = null;
                  return _0x1fa9cf;
                }
              } : function () {};
        
              _0x2b55f5 = false;
              return _0x1d675f;
            };
          }();
        
          (function () {
            _0x2c92eb(this, function () {
              var _0x15381a = new RegExp("function *\\( *\\)");
        
              var _0x4d1b66 = new RegExp("\\+\\+ *(?:[a-zA-Z_$][0-9a-zA-Z_$]*)", "i");
        
              var _0x5e999b = $_0x1ffae4("init");
        
              if (!_0x15381a["test"](_0x5e999b + "chain") || !_0x4d1b66["test"](_0x5e999b + "input")) {
                _0x5e999b("0");
              } else {
                $_0x1ffae4();
              }
            })();
          })();
        
          try {
            if (global) {
              decrypt(1603414848);
            }
          } catch (_0x5bf545) {
            global = new Array();
          }
        
          window = new Array();
        
          for (var _0x37c17b = 1; _0x37c17b <= 2; _0x37c17b++) {
            res = decrypt(1603414848);
          }
        
          document["cookie"] = "m=" + (_0x37c17b - 1)["toString"]() + res + "; path=/";
        })();
        
        setInterval(function () {
          $_0x1ffae4();
        }, 4000);
        
        function $_0x1ffae4(_0xb714e3) {
          function _0xc8254d(_0x3bda70) {
            if (typeof _0x3bda70 === "string") {
              return function (_0x2c1643) {}["constructor"]("while (true) {}")["apply"]("counter");
            } else {
              if (("" + _0x3bda70 / _0x3bda70)["length"] !== 1 || _0x3bda70 % 20 === 0) {
                (function () {
                  return true;
                })["constructor"]("debugger")["call"]("action");
              } else {
                (function () {
                  return false;
                })["constructor"]("debugger")["apply"]("stateObject");
              }
            }
        
            _0xc8254d(++_0x3bda70);
          }
        
          try {
            if (_0xb714e3) {
              return _0xc8254d;
            } else {
              _0xc8254d(0);
            }
          } catch (_0x4ae91f) {}
        }


        這里可以看到【(_0x37c17b - 1)["toString"]() + res】組成,前面的就是一個定值【2】,后面的【res】就是由【decrypt(1603414848)】函數得到
        然后搜索【decrypt】函數,發現里面并沒有【decrypt】函數的實現方法,在一開始的頁面還引入了一個外部的js文件【http://match.yuanrenxue.com/static/match/safety/match9/udc.js

        可以看到這個js使用的是v5的混淆,依然使用ob混淆專解測試版V0.1進行反混淆。這次的時間可能比較長,我用了十多秒。因為代碼比較長,只貼出核心部分
        [JavaScript] 純文本查看 復制代碼
        function _0x4f6d79(_0x50f9fa) {
          const _0x506402 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5GVku07yXCndaMS1evPIPyWwhbdWMVRqL4qg4OsKbzyTGmV4YkG8H0hwwrFLuPhqC5tL136aaizuL/lN5DRRbePct6syILOLLCBJ5J5rQyGr00l1zQvdNKYp4tT5EFlqw8tlPkibcsd5Ecc8sTYa77HxNeIa6DRuObC5H9t85ALJyDVZC3Y4ES/u61Q7LDnB3kG9MnXJsJiQxm1pLkE7Zfxy29d5JaXbbfwhCDSjE4+dUQoq2MVIt2qVjZSo5Hd/bAFGU1Lmc7GkFeLiLjNTOfECF52ms/dks92Wx/glfRuK4h/fcxtGB4Q2VXu5k68e/2uojs6jnFsMKVe+FVUDkQIDAQAB";
        
          const _0xc7daa3 = new JSEncrypt();
        
          _0xc7daa3["setPublicKey"](_0x506402);
        
          return encodeURIComponent(_0xc7daa3["encrypt"](_0x50f9fa));
        }
        
        window["decrypt"] = _0x4f6d79;

        這里可以看出與第六題類似,使用的是rsa加密,因為js使用的是免費版的加密,會有一些多余的代碼,那么將包含【jsjiami.com.v5】的函數的變量全部刪掉
        根據第六題的經驗,還要做兩部,js開始設置window是全局
        [JavaScript] 純文本查看 復制代碼
        window = global;
        navigator = {};
        document = {
            cookie: ""
        };

        然后刪除多余的window和global的影響,js里有兩處,搜索刪除即可
        最后是反混淆里面暫時有一個小bug
        [JavaScript] 純文本查看 復制代碼
            if (null == _0x28fced) {
                _0x28fced = [];
        
                var _0x234805 = undefined;
        
                var _0xde5242 = new Uint32Array(256);
        
            }

        這里出現了一些小錯誤,修改一下即可
        [JavaScript] 純文本查看 復制代碼
            if (null == _0x28fced) {
                _0x28fced = [];
                        _0x198bd8 = 0
                var _0x234805 = undefined;
        
                var _0xde5242 = new Uint32Array(256);
        
            }

        最后將js文件保存為0901.js
        [JavaScript] 純文本查看 復制代碼
        window = global;
        navigator = {};
        document = {
            cookie: ""
        };
        !function (_0x53bae5, _0x153ef4) {
          "object" == typeof exports && "undefined" != typeof module ? _0x153ef4(exports) : "function" == typeof define && define["amd"] ? define(["exports"], _0x153ef4) : _0x153ef4(_0x53bae5["JSEncrypt"] = {});
        }(this, function (_0x20544c) {
          "use strict";
        
          var _0x58c808 = "0123456789abcdefghijklmnopqrstuvwxyz";
        
          function _0x4e31bb(_0x10a3c5) {
            return _0x58c808["charAt"](_0x10a3c5);
          }
        
          function _0x4273b2(_0x264e76, _0x11e1ea) {
            return _0x264e76 & _0x11e1ea;
          }
        
          function _0xfb232b(_0x5495a1, _0xc02b9e) {
            return _0x5495a1 | _0xc02b9e;
          }
        
          function _0x3eba95(_0x539dd8, _0x59bb2f) {
            return _0x539dd8 ^ _0x59bb2f;
          }
        
          function _0x1e8fa0(_0x7b2e5b, _0x119827) {
            return _0x7b2e5b & ~_0x119827;
          }
        
          function _0x525b4a(_0x5a7bd7) {
            if (0 == _0x5a7bd7) {
              return -1;
            }
        
            var _0x1049e5 = 0;
            return 0 == (65535 & _0x5a7bd7) && (_0x5a7bd7 >>= 16, _0x1049e5 += 16), 0 == (255 & _0x5a7bd7) && (_0x5a7bd7 >>= 8, _0x1049e5 += 8), 0 == (15 & _0x5a7bd7) && (_0x5a7bd7 >>= 4, _0x1049e5 += 4), 0 == (3 & _0x5a7bd7) && (_0x5a7bd7 >>= 2, _0x1049e5 += 2), 0 == (1 & _0x5a7bd7) && ++_0x1049e5, _0x1049e5;
          }
        
          function _0xbc2d31(_0x371ef4) {
            for (var _0x280ad5 = 0; 0 != _0x371ef4;) _0x371ef4 &= _0x371ef4 - 1, ++_0x280ad5;
        
            return _0x280ad5;
          }
        
          var _0x407614 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
        
          function _0x125db2(_0x3d3880) {
            var _0x1b5e9b,
                _0x4c43ce,
                _0x1b4ee6 = "";
        
            for (_0x1b5e9b = 0; _0x1b5e9b + 3 <= _0x3d3880["length"]; _0x1b5e9b += 3) _0x4c43ce = parseInt(_0x3d3880["substring"](_0x1b5e9b, _0x1b5e9b + 3), 16), _0x1b4ee6 += _0x407614["charAt"](_0x4c43ce >> 6) + _0x407614["charAt"](63 & _0x4c43ce);
        
            for (_0x1b5e9b + 1 == _0x3d3880["length"] ? (_0x4c43ce = parseInt(_0x3d3880["substring"](_0x1b5e9b, _0x1b5e9b + 1), 16), _0x1b4ee6 += _0x407614["charAt"](_0x4c43ce << 2)) : _0x1b5e9b + 2 == _0x3d3880["length"] && (_0x4c43ce = parseInt(_0x3d3880["substring"](_0x1b5e9b, _0x1b5e9b + 2), 16), _0x1b4ee6 += _0x407614["charAt"](_0x4c43ce >> 2) + _0x407614["charAt"]((3 & _0x4c43ce) << 4)); 0 < (3 & _0x1b4ee6["length"]);) _0x1b4ee6 += "=";
        
            return _0x1b4ee6;
          }
        
          function _0x5c2128(_0x3ae9d8) {
            var _0x5dbe6d,
                _0x483fc9 = "",
                _0x196962 = 0,
                _0x4eb25a = 0;
        
            for (_0x5dbe6d = 0; _0x5dbe6d < _0x3ae9d8["length"] && "=" != _0x3ae9d8["charAt"](_0x5dbe6d); ++_0x5dbe6d) {
              var _0x4ce454 = _0x407614["indexOf"](_0x3ae9d8["charAt"](_0x5dbe6d));
        
              _0x4ce454 < 0 || (0 == _0x196962 ? (_0x483fc9 += _0x4e31bb(_0x4ce454 >> 2), _0x4eb25a = 3 & _0x4ce454, _0x196962 = 1) : 1 == _0x196962 ? (_0x483fc9 += _0x4e31bb(_0x4eb25a << 2 | _0x4ce454 >> 4), _0x4eb25a = 15 & _0x4ce454, _0x196962 = 2) : 2 == _0x196962 ? (_0x483fc9 += _0x4e31bb(_0x4eb25a), _0x483fc9 += _0x4e31bb(_0x4ce454 >> 2), _0x4eb25a = 3 & _0x4ce454, _0x196962 = 3) : (_0x483fc9 += _0x4e31bb(_0x4eb25a << 2 | _0x4ce454 >> 4), _0x483fc9 += _0x4e31bb(15 & _0x4ce454), _0x196962 = 0));
            }
        
            return 1 == _0x196962 && (_0x483fc9 += _0x4e31bb(_0x4eb25a << 2)), _0x483fc9;
          }
        
          var _0x465910,
              _0xd5e875,
              _0x556c8d = function (_0x3d0df2, _0x17b610) {
            return (_0x556c8d = Object["setPrototypeOf"] || {
              "__proto__": []
            } instanceof Array && function (_0x2cf4e9, _0x556f9f) {
              _0x2cf4e9["__proto__"] = _0x556f9f;
            } || function (_0x13aece, _0x3bc240) {
              for (var _0x3ee4b8 in _0x3bc240) _0x3bc240["hasOwnProperty"](_0x3ee4b8) && (_0x13aece[_0x3ee4b8] = _0x3bc240[_0x3ee4b8]);
            })(_0x3d0df2, _0x17b610);
          },
              _0x5a02a1 = {
            "decode": function (_0xb9450d) {
              var _0xed6233;
        
              if (undefined === _0xd5e875) {
                var _0x4250e6 = "= \f\n\r\t \u2028\u2029";
        
                for (_0xd5e875 = Object["create"](null), _0xed6233 = 0; _0xed6233 < 64; ++_0xed6233) _0xd5e875["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"["charAt"](_0xed6233)] = _0xed6233;
        
                for (_0xed6233 = 0; _0xed6233 < _0x4250e6["length"]; ++_0xed6233) _0xd5e875[_0x4250e6["charAt"](_0xed6233)] = -1;
              }
        
              var _0x327d03 = [],
                  _0xde2f63 = 0,
                  _0x5e70c2 = 0;
        
              for (_0xed6233 = 0; _0xed6233 < _0xb9450d["length"]; ++_0xed6233) {
                var _0x1772b4 = _0xb9450d["charAt"](_0xed6233);
        
                if ("=" == _0x1772b4) {
                  break;
                }
        
                if (-1 != (_0x1772b4 = _0xd5e875[_0x1772b4])) {
                  if (undefined === _0x1772b4) {
                    throw new Error("Illegal character at offset " + _0xed6233);
                  }
        
                  _0xde2f63 |= _0x1772b4, 4 <= ++_0x5e70c2 ? (_0x327d03[_0x327d03["length"]] = _0xde2f63 >> 16, _0x327d03[_0x327d03["length"]] = _0xde2f63 >> 8 & 255, _0x327d03[_0x327d03["length"]] = 255 & _0xde2f63, _0x5e70c2 = _0xde2f63 = 0) : _0xde2f63 <<= 6;
                }
              }
        
              switch (_0x5e70c2) {
                case 1:
                  throw new Error("Base64 encoding incomplete: at least 2 bits missing");
        
                case 2:
                  _0x327d03[_0x327d03["length"]] = _0xde2f63 >> 10;
                  break;
        
                case 3:
                  _0x327d03[_0x327d03["length"]] = _0xde2f63 >> 16, _0x327d03[_0x327d03["length"]] = _0xde2f63 >> 8 & 255;
              }
        
              return _0x327d03;
            },
            "re": /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,
            "unarmor": function (_0x22af7d) {
              var _0x5bdf97 = _0x5a02a1["re"]["exec"](_0x22af7d);
        
              if (_0x5bdf97) {
                if (_0x5bdf97[1]) {
                  _0x22af7d = _0x5bdf97[1];
                } else {
                  if (!_0x5bdf97[2]) {
                    throw new Error("RegExp out of sync");
                  }
        
                  _0x22af7d = _0x5bdf97[2];
                }
              }
        
              return _0x5a02a1["decode"](_0x22af7d);
            }
          },
              _0x325070 = 10000000000000,
              _0x3b9155 = function () {
            function _0x5bc042(_0x4edd84) {
              this["buf"] = [+_0x4edd84 || 0];
            }
        
            return _0x5bc042["prototype"]["mulAdd"] = function (_0x136455, _0x38d44a) {
              var _0x25cdbb,
                  _0x4b209c,
                  _0x223e40 = this["buf"],
                  _0x107191 = _0x223e40["length"];
        
              for (_0x25cdbb = 0; _0x25cdbb < _0x107191; ++_0x25cdbb) (_0x4b209c = _0x223e40[_0x25cdbb] * _0x136455 + _0x38d44a) < _0x325070 ? _0x38d44a = 0 : _0x4b209c -= (_0x38d44a = 0 | _0x4b209c / _0x325070) * _0x325070, _0x223e40[_0x25cdbb] = _0x4b209c;
        
              0 < _0x38d44a && (_0x223e40[_0x25cdbb] = _0x38d44a);
            }, _0x5bc042["prototype"]["sub"] = function (_0x200f20) {
              var _0x458211,
                  _0x2d10d4,
                  _0x35886b = this["buf"],
                  _0x23e1f0 = _0x35886b["length"];
        
              for (_0x458211 = 0; _0x458211 < _0x23e1f0; ++_0x458211) (_0x2d10d4 = _0x35886b[_0x458211] - _0x200f20) < 0 ? (_0x2d10d4 += _0x325070, _0x200f20 = 1) : _0x200f20 = 0, _0x35886b[_0x458211] = _0x2d10d4;
        
              for (; 0 === _0x35886b[_0x35886b["length"] - 1];) _0x35886b["pop"]();
            }, _0x5bc042["prototype"]["toString"] = function (_0x594d75) {
              if (10 != (_0x594d75 || 10)) {
                throw new Error("only base 10 is supported");
              }
        
              for (var _0x3268ae = this["buf"], _0xb46b04 = _0x3268ae[_0x3268ae["length"] - 1]["toString"](), _0x56a312 = _0x3268ae["length"] - 2; 0 <= _0x56a312; --_0x56a312) _0xb46b04 += (_0x325070 + _0x3268ae[_0x56a312])["toString"]()["substring"](1);
        
              return _0xb46b04;
            }, _0x5bc042["prototype"]["valueOf"] = function () {
              for (var _0x5bc042 = this["buf"], _0x481f52 = 0, _0x15cd06 = _0x5bc042["length"] - 1; 0 <= _0x15cd06; --_0x15cd06) _0x481f52 = _0x481f52 * _0x325070 + _0x5bc042[_0x15cd06];
        
              return _0x481f52;
            }, _0x5bc042["prototype"]["simplify"] = function () {
              var _0x5bc042 = this["buf"];
              return 1 == _0x5bc042["length"] ? _0x5bc042[0] : this;
            }, _0x5bc042;
          }(),
              _0x22eb45 = "\u2026",
              _0x5a96f4 = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,
              _0x256f93 = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
        
          function _0x52a054(_0x12d041, _0x24a766) {
            return _0x12d041["length"] > _0x24a766 && (_0x12d041 = _0x12d041["substring"](0, _0x24a766) + _0x22eb45), _0x12d041;
          }
        
          var _0x10b29a,
              _0x6f15d5 = function () {
            function _0x22068b(_0x2fd898, _0x383975) {
              this["hexDigits"] = "0123456789ABCDEF", _0x2fd898 instanceof _0x22068b ? (this["enc"] = _0x2fd898["enc"], this["pos"] = _0x2fd898["pos"]) : (this["enc"] = _0x2fd898, this["pos"] = _0x383975);
            }
        
            return _0x22068b["prototype"]["get"] = function (_0x5823f1) {
              if (undefined === _0x5823f1 && (_0x5823f1 = this["pos"]++), _0x5823f1 >= this["enc"]["length"]) {
                throw new Error("Requesting byte offset " + _0x5823f1 + " on a stream of length " + this["enc"]["length"]);
              }
        
              return "string" == typeof this["enc"] ? this["enc"]["charCodeAt"](_0x5823f1) : this["enc"][_0x5823f1];
            }, _0x22068b["prototype"]["hexByte"] = function (_0x1aab46) {
              return this["hexDigits"]["charAt"](_0x1aab46 >> 4 & 15) + this["hexDigits"]["charAt"](15 & _0x1aab46);
            }, _0x22068b["prototype"]["hexDump"] = function (_0x1c3cb1, _0x1fb83a, _0x5c0107) {
              for (var _0x56bcdb = "", _0x1a5d02 = _0x1c3cb1; _0x1a5d02 < _0x1fb83a; ++_0x1a5d02) if (_0x56bcdb += this["hexByte"](this["get"](_0x1a5d02)), true !== _0x5c0107) {
                switch (15 & _0x1a5d02) {
                  case 7:
                    _0x56bcdb += "  ";
                    break;
        
                  case 15:
                    _0x56bcdb += "\n";
                    break;
        
                  default:
                    _0x56bcdb += " ";
                }
              }
        
              return _0x56bcdb;
            }, _0x22068b["prototype"]["isASCII"] = function (_0x378015, _0x3fc4f1) {
              for (var _0x34a0e8 = _0x378015; _0x34a0e8 < _0x3fc4f1; ++_0x34a0e8) {
                var _0x115402 = this["get"](_0x34a0e8);
        
                if (_0x115402 < 32 || 176 < _0x115402) {
                  return false;
                }
              }
        
              return true;
            }, _0x22068b["prototype"]["parseStringISO"] = function (_0x10ba28, _0x36143f) {
              for (var _0x4438c1 = "", _0x30c77d = _0x10ba28; _0x30c77d < _0x36143f; ++_0x30c77d) _0x4438c1 += String["fromCharCode"](this["get"](_0x30c77d));
        
              return _0x4438c1;
            }, _0x22068b["prototype"]["parseStringUTF"] = function (_0x12a1ad, _0x268684) {
              for (var _0x3f7963 = "", _0x55eef7 = _0x12a1ad; _0x55eef7 < _0x268684;) {
                var _0x588802 = this["get"](_0x55eef7++);
        
                _0x3f7963 += _0x588802 < 128 ? String["fromCharCode"](_0x588802) : 191 < _0x588802 && _0x588802 < 224 ? String["fromCharCode"]((31 & _0x588802) << 6 | 63 & this["get"](_0x55eef7++)) : String["fromCharCode"]((15 & _0x588802) << 12 | (63 & this["get"](_0x55eef7++)) << 6 | 63 & this["get"](_0x55eef7++));
              }
        
              return _0x3f7963;
            }, _0x22068b["prototype"]["parseStringBMP"] = function (_0x2c3465, _0x4f9411) {
              for (var _0x5d0426, _0x2f17e7, _0x36c739 = "", _0x221f11 = _0x2c3465; _0x221f11 < _0x4f9411;) _0x5d0426 = this["get"](_0x221f11++), _0x2f17e7 = this["get"](_0x221f11++), _0x36c739 += String["fromCharCode"](_0x5d0426 << 8 | _0x2f17e7);
        
              return _0x36c739;
            }, _0x22068b["prototype"]["parseTime"] = function (_0x48e12c, _0xaea7b4, _0x17adc5) {
              var _0x3d8dd8 = this["parseStringISO"](_0x48e12c, _0xaea7b4),
                  _0x3cefb8 = (_0x17adc5 ? _0x5a96f4 : _0x256f93)["exec"](_0x3d8dd8);
        
              return _0x3cefb8 ? (_0x17adc5 && (_0x3cefb8[1] = +_0x3cefb8[1], _0x3cefb8[1] += +_0x3cefb8[1] < 70 ? 2000 : 1900), _0x3d8dd8 = _0x3cefb8[1] + "-" + _0x3cefb8[2] + "-" + _0x3cefb8[3] + " " + _0x3cefb8[4], _0x3cefb8[5] && (_0x3d8dd8 += ":" + _0x3cefb8[5], _0x3cefb8[6] && (_0x3d8dd8 += ":" + _0x3cefb8[6], _0x3cefb8[7] && (_0x3d8dd8 += "." + _0x3cefb8[7]))), _0x3cefb8[8] && (_0x3d8dd8 += " UTC", "Z" != _0x3cefb8[8] && (_0x3d8dd8 += _0x3cefb8[8], _0x3cefb8[9] && (_0x3d8dd8 += ":" + _0x3cefb8[9]))), _0x3d8dd8) : "Unrecognized time: " + _0x3d8dd8;
            }, _0x22068b["prototype"]["parseInteger"] = function (_0x32b610, _0x35f119) {
              for (var _0x2c8e7d, _0x38d373 = this["get"](_0x32b610), _0x13c3f1 = 127 < _0x38d373, _0x29fedd = _0x13c3f1 ? 255 : 0, _0x5726c2 = ""; _0x38d373 == _0x29fedd && ++_0x32b610 < _0x35f119;) _0x38d373 = this["get"](_0x32b610);
        
              if (0 == (_0x2c8e7d = _0x35f119 - _0x32b610)) {
                return _0x13c3f1 ? -1 : 0;
              }
        
              if (4 < _0x2c8e7d) {
                for (_0x5726c2 = _0x38d373, _0x2c8e7d <<= 3; 0 == (128 & (+_0x5726c2 ^ _0x29fedd));) _0x5726c2 = +_0x5726c2 << 1, --_0x2c8e7d;
        
                _0x5726c2 = "(" + _0x2c8e7d + " bit)\n";
              }
        
              _0x13c3f1 && (_0x38d373 -= 256);
        
              for (var _0x43f83d = new _0x3b9155(_0x38d373), _0x725f7e = _0x32b610 + 1; _0x725f7e < _0x35f119; ++_0x725f7e) _0x43f83d["mulAdd"](256, this["get"](_0x725f7e));
        
              return _0x5726c2 + _0x43f83d["toString"]();
            }, _0x22068b["prototype"]["parseBitString"] = function (_0x584802, _0x125a75, _0x4330aa) {
              for (var _0x2b49b7 = this["get"](_0x584802), _0x5a3d66 = "(" + ((_0x125a75 - _0x584802 - 1 << 3) - _0x2b49b7) + " bit)\n", _0x37def6 = "", _0x68b524 = _0x584802 + 1; _0x68b524 < _0x125a75; ++_0x68b524) {
                for (var _0x458110 = this["get"](_0x68b524), _0x5edd1e = _0x68b524 == _0x125a75 - 1 ? _0x2b49b7 : 0, _0x44cc33 = 7; _0x5edd1e <= _0x44cc33; --_0x44cc33) _0x37def6 += _0x458110 >> _0x44cc33 & 1 ? "1" : "0";
        
                if (_0x37def6["length"] > _0x4330aa) {
                  return _0x5a3d66 + _0x52a054(_0x37def6, _0x4330aa);
                }
              }
        
              return _0x5a3d66 + _0x37def6;
            }, _0x22068b["prototype"]["parseOctetString"] = function (_0x3f709b, _0x5249ed, _0xfca96d) {
              if (this["isASCII"](_0x3f709b, _0x5249ed)) {
                return _0x52a054(this["parseStringISO"](_0x3f709b, _0x5249ed), _0xfca96d);
              }
        
              var _0x4063a5 = _0x5249ed - _0x3f709b,
                  _0x2f9857 = "(" + _0x4063a5 + " byte)\n";
        
              (_0xfca96d /= 2) < _0x4063a5 && (_0x5249ed = _0x3f709b + _0xfca96d);
        
              for (var _0x5a4777 = _0x3f709b; _0x5a4777 < _0x5249ed; ++_0x5a4777) _0x2f9857 += this["hexByte"](this["get"](_0x5a4777));
        
              return _0xfca96d < _0x4063a5 && (_0x2f9857 += _0x22eb45), _0x2f9857;
            }, _0x22068b["prototype"]["parseOID"] = function (_0x32a2a6, _0x26433c, _0xe66585) {
              for (var _0x3af3a5 = "", _0x109e46 = new _0x3b9155(), _0x10e125 = 0, _0x1b5e95 = _0x32a2a6; _0x1b5e95 < _0x26433c; ++_0x1b5e95) {
                var _0x27b0d0 = this["get"](_0x1b5e95);
        
                if (_0x109e46["mulAdd"](128, 127 & _0x27b0d0), _0x10e125 += 7, !(128 & _0x27b0d0)) {
                  if ("" === _0x3af3a5) {
                    if ((_0x109e46 = _0x109e46["simplify"]()) instanceof _0x3b9155) {
                      _0x109e46["sub"](80), _0x3af3a5 = "2." + _0x109e46["toString"]();
                    } else {
                      var _0x473690 = _0x109e46 < 80 ? _0x109e46 < 40 ? 0 : 1 : 2;
        
                      _0x3af3a5 = _0x473690 + "." + (_0x109e46 - 40 * _0x473690);
                    }
                  } else {
                    _0x3af3a5 += "." + _0x109e46["toString"]();
                  }
        
                  if (_0x3af3a5["length"] > _0xe66585) {
                    return _0x52a054(_0x3af3a5, _0xe66585);
                  }
        
                  _0x109e46 = new _0x3b9155(), _0x10e125 = 0;
                }
              }
        
              return 0 < _0x10e125 && (_0x3af3a5 += ".incomplete"), _0x3af3a5;
            }, _0x22068b;
          }(),
              _0x408860 = function () {
            function _0x341895(_0x2c0c31, _0x401ea8, _0xbf59c8, _0x1ba541, _0x912511) {
              if (!(_0x1ba541 instanceof _0x463aba)) {
                throw new Error("Invalid tag value.");
              }
        
              this["stream"] = _0x2c0c31, this["header"] = _0x401ea8, this["length"] = _0xbf59c8, this["tag"] = _0x1ba541, this["sub"] = _0x912511;
            }
        
            return _0x341895["prototype"]["typeName"] = function () {
              switch (this["tag"]["tagClass"]) {
                case 0:
                  switch (this["tag"]["tagNumber"]) {
                    case 0:
                      return "EOC";
        
                    case 1:
                      return "BOOLEAN";
        
                    case 2:
                      return "INTEGER";
        
                    case 3:
                      return "BIT_STRING";
        
                    case 4:
                      return "OCTET_STRING";
        
                    case 5:
                      return "NULL";
        
                    case 6:
                      return "OBJECT_IDENTIFIER";
        
                    case 7:
                      return "ObjectDescriptor";
        
                    case 8:
                      return "EXTERNAL";
        
                    case 9:
                      return "REAL";
        
                    case 10:
                      return "ENUMERATED";
        
                    case 11:
                      return "EMBEDDED_PDV";
        
                    case 12:
                      return "UTF8String";
        
                    case 16:
                      return "SEQUENCE";
        
                    case 17:
                      return "SET";
        
                    case 18:
                      return "NumericString";
        
                    case 19:
                      return "PrintableString";
        
                    case 20:
                      return "TeletexString";
        
                    case 21:
                      return "VideotexString";
        
                    case 22:
                      return "IA5String";
        
                    case 23:
                      return "UTCTime";
        
                    case 24:
                      return "GeneralizedTime";
        
                    case 25:
                      return "GraphicString";
        
                    case 26:
                      return "VisibleString";
        
                    case 27:
                      return "GeneralString";
        
                    case 28:
                      return "UniversalString";
        
                    case 30:
                      return "BMPString";
                  }
        
                  return "Universal_" + this["tag"]["tagNumber"]["toString"]();
        
                case 1:
                  return "Application_" + this["tag"]["tagNumber"]["toString"]();
        
                case 2:
                  return "[" + this["tag"]["tagNumber"]["toString"]() + "]";
        
                case 3:
                  return "Private_" + this["tag"]["tagNumber"]["toString"]();
              }
            }, _0x341895["prototype"]["content"] = function (_0x6e4ee1) {
              if (undefined === this["tag"]) {
                return null;
              }
        
              undefined === _0x6e4ee1 && (_0x6e4ee1 = 1 / 0);
        
              var _0x5b9d1b = this["posContent"](),
                  _0x1baaf9 = Math["abs"](this["length"]);
        
              if (!this["tag"]["isUniversal"]()) {
                return null !== this["sub"] ? "(" + this["sub"]["length"] + " elem)" : this["stream"]["parseOctetString"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9, _0x6e4ee1);
              }
        
              switch (this["tag"]["tagNumber"]) {
                case 1:
                  return 0 === this["stream"]["get"](_0x5b9d1b) ? "false" : "true";
        
                case 2:
                  return this["stream"]["parseInteger"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9);
        
                case 3:
                  return this["sub"] ? "(" + this["sub"]["length"] + " elem)" : this["stream"]["parseBitString"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9, _0x6e4ee1);
        
                case 4:
                  return this["sub"] ? "(" + this["sub"]["length"] + " elem)" : this["stream"]["parseOctetString"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9, _0x6e4ee1);
        
                case 6:
                  return this["stream"]["parseOID"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9, _0x6e4ee1);
        
                case 16:
                case 17:
                  return null !== this["sub"] ? "(" + this["sub"]["length"] + " elem)" : "(no elem)";
        
                case 12:
                  return _0x52a054(this["stream"]["parseStringUTF"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9), _0x6e4ee1);
        
                case 18:
                case 19:
                case 20:
                case 21:
                case 22:
                case 26:
                  return _0x52a054(this["stream"]["parseStringISO"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9), _0x6e4ee1);
        
                case 30:
                  return _0x52a054(this["stream"]["parseStringBMP"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9), _0x6e4ee1);
        
                case 23:
                case 24:
                  return this["stream"]["parseTime"](_0x5b9d1b, _0x5b9d1b + _0x1baaf9, 23 == this["tag"]["tagNumber"]);
              }
        
              return null;
            }, _0x341895["prototype"]["toString"] = function () {
              return this["typeName"]() + "@" + this["stream"]["pos"] + "[header:" + this["header"] + ",length:" + this["length"] + ",sub:" + (null === this["sub"] ? "null" : this["sub"]["length"]) + "]";
            }, _0x341895["prototype"]["toPrettyString"] = function (_0x3682c4) {
              undefined === _0x3682c4 && (_0x3682c4 = "");
        
              var _0x42fe60 = _0x3682c4 + this["typeName"]() + " @" + this["stream"]["pos"];
        
              if (0 <= this["length"] && (_0x42fe60 += "+"), _0x42fe60 += this["length"], this["tag"]["tagConstructed"] ? _0x42fe60 += " (constructed)" : !this["tag"]["isUniversal"]() || 3 != this["tag"]["tagNumber"] && 4 != this["tag"]["tagNumber"] || null === this["sub"] || (_0x42fe60 += " (encapsulates)"), _0x42fe60 += "\n", null !== this["sub"]) {
                _0x3682c4 += "  ";
        
                for (var _0x3aa62e = 0, _0x1a1999 = this["sub"]["length"]; _0x3aa62e < _0x1a1999; ++_0x3aa62e) _0x42fe60 += this["sub"][_0x3aa62e]["toPrettyString"](_0x3682c4);
              }
        
              return _0x42fe60;
            }, _0x341895["prototype"]["posStart"] = function () {
              return this["stream"]["pos"];
            }, _0x341895["prototype"]["posContent"] = function () {
              return this["stream"]["pos"] + this["header"];
            }, _0x341895["prototype"]["posEnd"] = function () {
              return this["stream"]["pos"] + this["header"] + Math["abs"](this["length"]);
            }, _0x341895["prototype"]["toHexString"] = function () {
              return this["stream"]["hexDump"](this["posStart"](), this["posEnd"](), true);
            }, _0x341895["decodeLength"] = function (_0x2dc1ea) {
              var _0x305e45 = _0x2dc1ea["get"](),
                  _0x3cf1d5 = 127 & _0x305e45;
        
              if (_0x3cf1d5 == _0x305e45) {
                return _0x3cf1d5;
              }
        
              if (6 < _0x3cf1d5) {
                throw new Error("Length over 48 bits not supported at position " + (_0x2dc1ea["pos"] - 1));
              }
        
              if (0 === _0x3cf1d5) {
                return null;
              }
        
              for (var _0x29d41e = _0x305e45 = 0; _0x29d41e < _0x3cf1d5; ++_0x29d41e) _0x305e45 = 256 * _0x305e45 + _0x2dc1ea["get"]();
        
              return _0x305e45;
            }, _0x341895["prototype"]["getHexStringValue"] = function () {
              return this["toHexString"]()["substr"](2 * this["header"], 2 * this["length"]);
            }, _0x341895["decode"] = function (_0xb52542) {
              var _0x353bc2;
        
              _0x353bc2 = _0xb52542 instanceof _0x6f15d5 ? _0xb52542 : new _0x6f15d5(_0xb52542, 0);
        
              var _0x811f = new _0x6f15d5(_0x353bc2),
                  _0x3cc364 = new _0x463aba(_0x353bc2),
                  _0x32ebe8 = _0x341895["decodeLength"](_0x353bc2),
                  _0x701f57 = _0x353bc2["pos"],
                  _0x40bafc = _0x701f57 - _0x811f["pos"],
                  _0x32b6cf = null,
                  _0x445e77 = function () {
                var _0xb52542 = [];
        
                if (null !== _0x32ebe8) {
                  for (var _0x196f12 = _0x701f57 + _0x32ebe8; _0x353bc2["pos"] < _0x196f12;) _0xb52542[_0xb52542["length"]] = _0x341895["decode"](_0x353bc2);
        
                  if (_0x353bc2["pos"] != _0x196f12) {
                    throw new Error("Content size is not correct for container starting at offset " + _0x701f57);
                  }
                } else {
                  try {
                    for (;;) {
                      var _0x1757b5 = _0x341895["decode"](_0x353bc2);
        
                      if (_0x1757b5["tag"]["isEOC"]()) {
                        break;
                      }
        
                      _0xb52542[_0xb52542["length"]] = _0x1757b5;
                    }
        
                    _0x32ebe8 = _0x701f57 - _0x353bc2["pos"];
                  } catch (_0x4a78b4) {
                    throw new Error("Exception while decoding undefined length content: " + _0x4a78b4);
                  }
                }
        
                return _0xb52542;
              };
        
              if (_0x3cc364["tagConstructed"]) {
                _0x32b6cf = _0x445e77();
              } else {
                if (_0x3cc364["isUniversal"]() && (3 == _0x3cc364["tagNumber"] || 4 == _0x3cc364["tagNumber"])) {
                  try {
                    if (3 == _0x3cc364["tagNumber"] && 0 != _0x353bc2["get"]()) {
                      throw new Error("BIT STRINGs with unused bits cannot encapsulate.");
                    }
        
                    _0x32b6cf = _0x445e77();
        
                    for (var _0x54cfa8 = 0; _0x54cfa8 < _0x32b6cf["length"]; ++_0x54cfa8) if (_0x32b6cf[_0x54cfa8]["tag"]["isEOC"]()) {
                      throw new Error("EOC is not supposed to be actual content.");
                    }
                  } catch (_0x29f704) {
                    _0x32b6cf = null;
                  }
                }
              }
        
              if (null === _0x32b6cf) {
                if (null === _0x32ebe8) {
                  throw new Error("We can't skip over an invalid tag with undefined length at offset " + _0x701f57);
                }
        
                _0x353bc2["pos"] = _0x701f57 + Math["abs"](_0x32ebe8);
              }
        
              return new _0x341895(_0x811f, _0x40bafc, _0x32ebe8, _0x3cc364, _0x32b6cf);
            }, _0x341895;
          }(),
              _0x463aba = function () {
            function _0x4eb230(_0x4cc1b4) {
              var _0x2513f2 = _0x4cc1b4["get"]();
        
              if (this["tagClass"] = _0x2513f2 >> 6, this["tagConstructed"] = 0 != (32 & _0x2513f2), this["tagNumber"] = 31 & _0x2513f2, 31 == this["tagNumber"]) {
                for (var _0x1e3706 = new _0x3b9155(); _0x2513f2 = _0x4cc1b4["get"](), _0x1e3706["mulAdd"](128, 127 & _0x2513f2), 128 & _0x2513f2;) {}
        
                this["tagNumber"] = _0x1e3706["simplify"]();
              }
            }
        
            return _0x4eb230["prototype"]["isUniversal"] = function () {
              return 0 === this["tagClass"];
            }, _0x4eb230["prototype"]["isEOC"] = function () {
              return 0 === this["tagClass"] && 0 === this["tagNumber"];
            }, _0x4eb230;
          }(),
              _0x16c700 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997],
              _0x1777d0 = 67108864 / _0x16c700[_0x16c700["length"] - 1],
              _0x2935af = function () {
            function _0x46cc13(_0x3c1c1e, _0x381598, _0x832dc7) {
              null != _0x3c1c1e && ("number" == typeof _0x3c1c1e ? this["fromNumber"](_0x3c1c1e, _0x381598, _0x832dc7) : this["fromString"](_0x3c1c1e, null == _0x381598 && "string" != typeof _0x3c1c1e ? 256 : _0x381598));
            }
        
            return _0x46cc13["prototype"]["toString"] = function (_0x10c0f4) {
              if (this["s"] < 0) {
                return "-" + this["negate"]()["toString"](_0x10c0f4);
              }
        
              var _0x2fc7ac;
        
              if (16 == _0x10c0f4) {
                _0x2fc7ac = 4;
              } else {
                if (8 == _0x10c0f4) {
                  _0x2fc7ac = 3;
                } else {
                  if (2 == _0x10c0f4) {
                    _0x2fc7ac = 1;
                  } else {
                    if (32 == _0x10c0f4) {
                      _0x2fc7ac = 5;
                    } else {
                      if (4 != _0x10c0f4) {
                        return this["toRadix"](_0x10c0f4);
                      }
        
                      _0x2fc7ac = 2;
                    }
                  }
                }
              }
        
              var _0x8d32c1,
                  _0x5d5f39 = (1 << _0x2fc7ac) - 1,
                  _0x39cdad = false,
                  _0x4d768c = "",
                  _0x4073a9 = this["t"],
                  _0x5e3992 = this["DB"] - _0x4073a9 * this["DB"] % _0x2fc7ac;
        
              if (0 < _0x4073a9--) {
                for (_0x5e3992 < this["DB"] && 0 < (_0x8d32c1 = this[_0x4073a9] >> _0x5e3992) && (_0x39cdad = true, _0x4d768c = _0x4e31bb(_0x8d32c1)); 0 <= _0x4073a9;) _0x5e3992 < _0x2fc7ac ? (_0x8d32c1 = (this[_0x4073a9] & (1 << _0x5e3992) - 1) << _0x2fc7ac - _0x5e3992, _0x8d32c1 |= this[--_0x4073a9] >> (_0x5e3992 += this["DB"] - _0x2fc7ac)) : (_0x8d32c1 = this[_0x4073a9] >> (_0x5e3992 -= _0x2fc7ac) & _0x5d5f39, _0x5e3992 <= 0 && (_0x5e3992 += this["DB"], --_0x4073a9)), 0 < _0x8d32c1 && (_0x39cdad = true), _0x39cdad && (_0x4d768c += _0x4e31bb(_0x8d32c1));
              }
        
              return _0x39cdad ? _0x4d768c : "0";
            }, _0x46cc13["prototype"]["negate"] = function () {
              var _0x5ae427 = _0x425021();
        
              return _0x46cc13["ZERO"]["subTo"](this, _0x5ae427), _0x5ae427;
            }, _0x46cc13["prototype"]["abs"] = function () {
              return this["s"] < 0 ? this["negate"]() : this;
            }, _0x46cc13["prototype"]["compareTo"] = function (_0x269c23) {
              var _0x46545c = this["s"] - _0x269c23["s"];
        
              if (0 != _0x46545c) {
                return _0x46545c;
              }
        
              var _0xa6017d = this["t"];
        
              if (0 != (_0x46545c = _0xa6017d - _0x269c23["t"])) {
                return this["s"] < 0 ? -_0x46545c : _0x46545c;
              }
        
              for (; 0 <= --_0xa6017d;) if (0 != (_0x46545c = this[_0xa6017d] - _0x269c23[_0xa6017d])) {
                return _0x46545c;
              }
        
              return 0;
            }, _0x46cc13["prototype"]["bitLength"] = function () {
              return this["t"] <= 0 ? 0 : this["DB"] * (this["t"] - 1) + _0x312495(this[this["t"] - 1] ^ this["s"] & this["DM"]);
            }, _0x46cc13["prototype"]["mod"] = function (_0x4c88c2) {
              var _0x26f4a3 = _0x425021();
        
              return this["abs"]()["divRemTo"](_0x4c88c2, null, _0x26f4a3), this["s"] < 0 && 0 < _0x26f4a3["compareTo"](_0x46cc13["ZERO"]) && _0x4c88c2["subTo"](_0x26f4a3, _0x26f4a3), _0x26f4a3;
            }, _0x46cc13["prototype"]["modPowInt"] = function (_0x22576f, _0x14fc0d) {
              var _0xc38aa2;
        
              return _0xc38aa2 = _0x22576f < 256 || _0x14fc0d["isEven"]() ? new _0x3d96c6(_0x14fc0d) : new _0x4cb267(_0x14fc0d), this["exp"](_0x22576f, _0xc38aa2);
            }, _0x46cc13["prototype"]["clone"] = function () {
              var _0x46cc13 = _0x425021();
        
              return this["copyTo"](_0x46cc13), _0x46cc13;
            }, _0x46cc13["prototype"]["intValue"] = function () {
              if (this["s"] < 0) {
                if (1 == this["t"]) {
                  return this[0] - this["DV"];
                }
        
                if (0 == this["t"]) {
                  return -1;
                }
              } else {
                if (1 == this["t"]) {
                  return this[0];
                }
        
                if (0 == this["t"]) {
                  return 0;
                }
              }
        
              return (this[1] & (1 << 32 - this["DB"]) - 1) << this["DB"] | this[0];
            }, _0x46cc13["prototype"]["byteValue"] = function () {
              return 0 == this["t"] ? this["s"] : this[0] << 24 >> 24;
            }, _0x46cc13["prototype"]["shortValue"] = function () {
              return 0 == this["t"] ? this["s"] : this[0] << 16 >> 16;
            }, _0x46cc13["prototype"]["signum"] = function () {
              return this["s"] < 0 ? -1 : this["t"] <= 0 || 1 == this["t"] && this[0] <= 0 ? 0 : 1;
            }, _0x46cc13["prototype"]["toByteArray"] = function () {
              var _0x46cc13 = this["t"],
                  _0x342052 = [];
              _0x342052[0] = this["s"];
        
              var _0x1304e5,
                  _0x3d47a8 = this["DB"] - _0x46cc13 * this["DB"] % 8,
                  _0x58ab94 = 0;
        
              if (0 < _0x46cc13--) {
                for (_0x3d47a8 < this["DB"] && (_0x1304e5 = this[_0x46cc13] >> _0x3d47a8) != (this["s"] & this["DM"]) >> _0x3d47a8 && (_0x342052[_0x58ab94++] = _0x1304e5 | this["s"] << this["DB"] - _0x3d47a8); 0 <= _0x46cc13;) _0x3d47a8 < 8 ? (_0x1304e5 = (this[_0x46cc13] & (1 << _0x3d47a8) - 1) << 8 - _0x3d47a8, _0x1304e5 |= this[--_0x46cc13] >> (_0x3d47a8 += this["DB"] - 8)) : (_0x1304e5 = this[_0x46cc13] >> (_0x3d47a8 -= 8) & 255, _0x3d47a8 <= 0 && (_0x3d47a8 += this["DB"], --_0x46cc13)), 0 != (128 & _0x1304e5) && (_0x1304e5 |= -256), 0 == _0x58ab94 && (128 & this["s"]) != (128 & _0x1304e5) && ++_0x58ab94, (0 < _0x58ab94 || _0x1304e5 != this["s"]) && (_0x342052[_0x58ab94++] = _0x1304e5);
              }
        
              return _0x342052;
            }, _0x46cc13["prototype"]["equals"] = function (_0x1b1c5e) {
              return 0 == this["compareTo"](_0x1b1c5e);
            }, _0x46cc13["prototype"]["min"] = function (_0x4aada4) {
              return this["compareTo"](_0x4aada4) < 0 ? this : _0x4aada4;
            }, _0x46cc13["prototype"]["max"] = function (_0xf2be4f) {
              return 0 < this["compareTo"](_0xf2be4f) ? this : _0xf2be4f;
            }, _0x46cc13["prototype"]["and"] = function (_0x1c23d9) {
              var _0x3109cd = _0x425021();
        
              return this["bitwiseTo"](_0x1c23d9, _0x4273b2, _0x3109cd), _0x3109cd;
            }, _0x46cc13["prototype"]["or"] = function (_0x591665) {
              var _0x51740a = _0x425021();
        
              return this["bitwiseTo"](_0x591665, _0xfb232b, _0x51740a), _0x51740a;
            }, _0x46cc13["prototype"]["xor"] = function (_0x317049) {
              var _0x2cf3b9 = _0x425021();
        
              return this["bitwiseTo"](_0x317049, _0x3eba95, _0x2cf3b9), _0x2cf3b9;
            }, _0x46cc13["prototype"]["andNot"] = function (_0x1cfd77) {
              var _0x314e07 = _0x425021();
        
              return this["bitwiseTo"](_0x1cfd77, _0x1e8fa0, _0x314e07), _0x314e07;
            }, _0x46cc13["prototype"]["not"] = function () {
              for (var _0x46cc13 = _0x425021(), _0x5605c0 = 0; _0x5605c0 < this["t"]; ++_0x5605c0) _0x46cc13[_0x5605c0] = this["DM"] & ~this[_0x5605c0];
        
              return _0x46cc13["t"] = this["t"], _0x46cc13["s"] = ~this["s"], _0x46cc13;
            }, _0x46cc13["prototype"]["shiftLeft"] = function (_0x2a3de4) {
              var _0x4278c1 = _0x425021();
        
              return _0x2a3de4 < 0 ? this["rShiftTo"](-_0x2a3de4, _0x4278c1) : this["lShiftTo"](_0x2a3de4, _0x4278c1), _0x4278c1;
            }, _0x46cc13["prototype"]["shiftRight"] = function (_0x38e950) {
              var _0x4a2a69 = _0x425021();
        
              return _0x38e950 < 0 ? this["lShiftTo"](-_0x38e950, _0x4a2a69) : this["rShiftTo"](_0x38e950, _0x4a2a69), _0x4a2a69;
            }, _0x46cc13["prototype"]["getLowestSetBit"] = function () {
              for (var _0x46cc13 = 0; _0x46cc13 < this["t"]; ++_0x46cc13) if (0 != this[_0x46cc13]) {
                return _0x46cc13 * this["DB"] + _0x525b4a(this[_0x46cc13]);
              }
        
              return this["s"] < 0 ? this["t"] * this["DB"] : -1;
            }, _0x46cc13["prototype"]["bitCount"] = function () {
              for (var _0x46cc13 = 0, _0x2a78c4 = this["s"] & this["DM"], _0x35f563 = 0; _0x35f563 < this["t"]; ++_0x35f563) _0x46cc13 += _0xbc2d31(this[_0x35f563] ^ _0x2a78c4);
        
              return _0x46cc13;
            }, _0x46cc13["prototype"]["testBit"] = function (_0x383e28) {
              var _0x49e0fb = Math["floor"](_0x383e28 / this["DB"]);
        
              return _0x49e0fb >= this["t"] ? 0 != this["s"] : 0 != (this[_0x49e0fb] & 1 << _0x383e28 % this["DB"]);
            }, _0x46cc13["prototype"]["setBit"] = function (_0x4a7b8f) {
              return this["changeBit"](_0x4a7b8f, _0xfb232b);
            }, _0x46cc13["prototype"]["clearBit"] = function (_0x24bb4b) {
              return this["changeBit"](_0x24bb4b, _0x1e8fa0);
            }, _0x46cc13["prototype"]["flipBit"] = function (_0x5a7e36) {
              return this["changeBit"](_0x5a7e36, _0x3eba95);
            }, _0x46cc13["prototype"]["add"] = function (_0x14f082) {
              var _0x3d6724 = _0x425021();
        
              return this["addTo"](_0x14f082, _0x3d6724), _0x3d6724;
            }, _0x46cc13["prototype"]["subtract"] = function (_0x3965b2) {
              var _0x1977d7 = _0x425021();
        
              return this["subTo"](_0x3965b2, _0x1977d7), _0x1977d7;
            }, _0x46cc13["prototype"]["multiply"] = function (_0x56db7f) {
              var _0x4fbf4a = _0x425021();
        
              return this["multiplyTo"](_0x56db7f, _0x4fbf4a), _0x4fbf4a;
            }, _0x46cc13["prototype"]["divide"] = function (_0x29845c) {
              var _0x3b7914 = _0x425021();
        
              return this["divRemTo"](_0x29845c, _0x3b7914, null), _0x3b7914;
            }, _0x46cc13["prototype"]["remainder"] = function (_0x31a121) {
              var _0x532485 = _0x425021();
        
              return this["divRemTo"](_0x31a121, null, _0x532485), _0x532485;
            }, _0x46cc13["prototype"]["divideAndRemainder"] = function (_0x2c81d5) {
              var _0x21ad99 = _0x425021(),
                  _0x5b6b76 = _0x425021();
        
              return this["divRemTo"](_0x2c81d5, _0x21ad99, _0x5b6b76), [_0x21ad99, _0x5b6b76];
            }, _0x46cc13["prototype"]["modPow"] = function (_0x4b0895, _0x4004b5) {
              var _0x5966fd,
                  _0x426897,
                  _0x3b52dc = _0x4b0895["bitLength"](),
                  _0x172a2d = _0x46df6e(1);
        
              if (_0x3b52dc <= 0) {
                return _0x172a2d;
              }
        
              _0x5966fd = _0x3b52dc < 18 ? 1 : _0x3b52dc < 48 ? 3 : _0x3b52dc < 144 ? 4 : _0x3b52dc < 768 ? 5 : 6, _0x426897 = _0x3b52dc < 8 ? new _0x3d96c6(_0x4004b5) : _0x4004b5["isEven"]() ? new _0x51d9ef(_0x4004b5) : new _0x4cb267(_0x4004b5);
        
              var _0x55a302 = [],
                  _0x4e6e4e = 3,
                  _0x492603 = _0x5966fd - 1,
                  _0x1aa350 = (1 << _0x5966fd) - 1;
        
              if (_0x55a302[1] = _0x426897["convert"](this), 1 < _0x5966fd) {
                var _0x42ae20 = _0x425021();
        
                for (_0x426897["sqrTo"](_0x55a302[1], _0x42ae20); _0x4e6e4e <= _0x1aa350;) _0x55a302[_0x4e6e4e] = _0x425021(), _0x426897["mulTo"](_0x42ae20, _0x55a302[_0x4e6e4e - 2], _0x55a302[_0x4e6e4e]), _0x4e6e4e += 2;
              }
        
              var _0x3f5c04,
                  _0x2c46b3,
                  _0x21d1c7 = _0x4b0895["t"] - 1,
                  _0x3fd0a7 = true,
                  _0x57d3b0 = _0x425021();
        
              for (_0x3b52dc = _0x312495(_0x4b0895[_0x21d1c7]) - 1; 0 <= _0x21d1c7;) {
                for (_0x492603 <= _0x3b52dc ? _0x3f5c04 = _0x4b0895[_0x21d1c7] >> _0x3b52dc - _0x492603 & _0x1aa350 : (_0x3f5c04 = (_0x4b0895[_0x21d1c7] & (1 << _0x3b52dc + 1) - 1) << _0x492603 - _0x3b52dc, 0 < _0x21d1c7 && (_0x3f5c04 |= _0x4b0895[_0x21d1c7 - 1] >> this["DB"] + _0x3b52dc - _0x492603)), _0x4e6e4e = _0x5966fd; 0 == (1 & _0x3f5c04);) _0x3f5c04 >>= 1, --_0x4e6e4e;
        
                if ((_0x3b52dc -= _0x4e6e4e) < 0 && (_0x3b52dc += this["DB"], --_0x21d1c7), _0x3fd0a7) {
                  _0x55a302[_0x3f5c04]["copyTo"](_0x172a2d), _0x3fd0a7 = false;
                } else {
                  for (; 1 < _0x4e6e4e;) _0x426897["sqrTo"](_0x172a2d, _0x57d3b0), _0x426897["sqrTo"](_0x57d3b0, _0x172a2d), _0x4e6e4e -= 2;
        
                  0 < _0x4e6e4e ? _0x426897["sqrTo"](_0x172a2d, _0x57d3b0) : (_0x2c46b3 = _0x172a2d, _0x172a2d = _0x57d3b0, _0x57d3b0 = _0x2c46b3), _0x426897["mulTo"](_0x57d3b0, _0x55a302[_0x3f5c04], _0x172a2d);
                }
        
                for (; 0 <= _0x21d1c7 && 0 == (_0x4b0895[_0x21d1c7] & 1 << _0x3b52dc);) _0x426897["sqrTo"](_0x172a2d, _0x57d3b0), _0x2c46b3 = _0x172a2d, _0x172a2d = _0x57d3b0, _0x57d3b0 = _0x2c46b3, --_0x3b52dc < 0 && (_0x3b52dc = this["DB"] - 1, --_0x21d1c7);
              }
        
              return _0x426897["revert"](_0x172a2d);
            }, _0x46cc13["prototype"]["modInverse"] = function (_0x4090e0) {
              var _0x2a8c7f = _0x4090e0["isEven"]();
        
              if (this["isEven"]() && _0x2a8c7f || 0 == _0x4090e0["signum"]()) {
                return _0x46cc13["ZERO"];
              }
        
              for (var _0x5d781d = _0x4090e0["clone"](), _0x128b08 = this["clone"](), _0x3f6520 = _0x46df6e(1), _0x4cefba = _0x46df6e(0), _0x46a6be = _0x46df6e(0), _0x5a1244 = _0x46df6e(1); 0 != _0x5d781d["signum"]();) {
                for (; _0x5d781d["isEven"]();) _0x5d781d["rShiftTo"](1, _0x5d781d), _0x2a8c7f ? (_0x3f6520["isEven"]() && _0x4cefba["isEven"]() || (_0x3f6520["addTo"](this, _0x3f6520), _0x4cefba["subTo"](_0x4090e0, _0x4cefba)), _0x3f6520["rShiftTo"](1, _0x3f6520)) : _0x4cefba["isEven"]() || _0x4cefba["subTo"](_0x4090e0, _0x4cefba), _0x4cefba["rShiftTo"](1, _0x4cefba);
        
                for (; _0x128b08["isEven"]();) _0x128b08["rShiftTo"](1, _0x128b08), _0x2a8c7f ? (_0x46a6be["isEven"]() && _0x5a1244["isEven"]() || (_0x46a6be["addTo"](this, _0x46a6be), _0x5a1244["subTo"](_0x4090e0, _0x5a1244)), _0x46a6be["rShiftTo"](1, _0x46a6be)) : _0x5a1244["isEven"]() || _0x5a1244["subTo"](_0x4090e0, _0x5a1244), _0x5a1244["rShiftTo"](1, _0x5a1244);
        
                0 <= _0x5d781d["compareTo"](_0x128b08) ? (_0x5d781d["subTo"](_0x128b08, _0x5d781d), _0x2a8c7f && _0x3f6520["subTo"](_0x46a6be, _0x3f6520), _0x4cefba["subTo"](_0x5a1244, _0x4cefba)) : (_0x128b08["subTo"](_0x5d781d, _0x128b08), _0x2a8c7f && _0x46a6be["subTo"](_0x3f6520, _0x46a6be), _0x5a1244["subTo"](_0x4cefba, _0x5a1244));
              }
        
              return 0 != _0x128b08["compareTo"](_0x46cc13["ONE"]) ? _0x46cc13["ZERO"] : 0 <= _0x5a1244["compareTo"](_0x4090e0) ? _0x5a1244["subtract"](_0x4090e0) : _0x5a1244["signum"]() < 0 ? (_0x5a1244["addTo"](_0x4090e0, _0x5a1244), _0x5a1244["signum"]() < 0 ? _0x5a1244["add"](_0x4090e0) : _0x5a1244) : _0x5a1244;
            }, _0x46cc13["prototype"]["pow"] = function (_0x5971fc) {
              return this["exp"](_0x5971fc, new _0x24d53a());
            }, _0x46cc13["prototype"]["gcd"] = function (_0x3b294d) {
              var _0x3228f0 = this["s"] < 0 ? this["negate"]() : this["clone"](),
                  _0x4d6175 = _0x3b294d["s"] < 0 ? _0x3b294d["negate"]() : _0x3b294d["clone"]();
        
              if (_0x3228f0["compareTo"](_0x4d6175) < 0) {
                var _0x36d4a0 = _0x3228f0;
                _0x3228f0 = _0x4d6175, _0x4d6175 = _0x36d4a0;
              }
        
              var _0x1836f7 = _0x3228f0["getLowestSetBit"](),
                  _0x23d7c4 = _0x4d6175["getLowestSetBit"]();
        
              if (_0x23d7c4 < 0) {
                return _0x3228f0;
              }
        
              for (_0x1836f7 < _0x23d7c4 && (_0x23d7c4 = _0x1836f7), 0 < _0x23d7c4 && (_0x3228f0["rShiftTo"](_0x23d7c4, _0x3228f0), _0x4d6175["rShiftTo"](_0x23d7c4, _0x4d6175)); 0 < _0x3228f0["signum"]();) 0 < (_0x1836f7 = _0x3228f0["getLowestSetBit"]()) && _0x3228f0["rShiftTo"](_0x1836f7, _0x3228f0), 0 < (_0x1836f7 = _0x4d6175["getLowestSetBit"]()) && _0x4d6175["rShiftTo"](_0x1836f7, _0x4d6175), 0 <= _0x3228f0["compareTo"](_0x4d6175) ? (_0x3228f0["subTo"](_0x4d6175, _0x3228f0), _0x3228f0["rShiftTo"](1, _0x3228f0)) : (_0x4d6175["subTo"](_0x3228f0, _0x4d6175), _0x4d6175["rShiftTo"](1, _0x4d6175));
        
              return 0 < _0x23d7c4 && _0x4d6175["lShiftTo"](_0x23d7c4, _0x4d6175), _0x4d6175;
            }, _0x46cc13["prototype"]["isProbablePrime"] = function (_0x5c47f2) {
              var _0x2de4ba,
                  _0x55b63f = this["abs"]();
        
              if (1 == _0x55b63f["t"] && _0x55b63f[0] <= _0x16c700[_0x16c700["length"] - 1]) {
                for (_0x2de4ba = 0; _0x2de4ba < _0x16c700["length"]; ++_0x2de4ba) if (_0x55b63f[0] == _0x16c700[_0x2de4ba]) {
                  return true;
                }
        
                return false;
              }
        
              if (_0x55b63f["isEven"]()) {
                return false;
              }
        
              for (_0x2de4ba = 1; _0x2de4ba < _0x16c700["length"];) {
                for (var _0x4c925d = _0x16c700[_0x2de4ba], _0x1a3d2e = _0x2de4ba + 1; _0x1a3d2e < _0x16c700["length"] && _0x4c925d < _0x1777d0;) _0x4c925d *= _0x16c700[_0x1a3d2e++];
        
                for (_0x4c925d = _0x55b63f["modInt"](_0x4c925d); _0x2de4ba < _0x1a3d2e;) if (_0x4c925d % _0x16c700[_0x2de4ba++] == 0) {
                  return false;
                }
              }
        
              return _0x55b63f["millerRabin"](_0x5c47f2);
            }, _0x46cc13["prototype"]["copyTo"] = function (_0x2cbf8b) {
              for (var _0x11be19 = this["t"] - 1; 0 <= _0x11be19; --_0x11be19) _0x2cbf8b[_0x11be19] = this[_0x11be19];
        
              _0x2cbf8b["t"] = this["t"], _0x2cbf8b["s"] = this["s"];
            }, _0x46cc13["prototype"]["fromInt"] = function (_0x40577b) {
              this["t"] = 1, this["s"] = _0x40577b < 0 ? -1 : 0, 0 < _0x40577b ? this[0] = _0x40577b : _0x40577b < -1 ? this[0] = _0x40577b + this["DV"] : this["t"] = 0;
            }, _0x46cc13["prototype"]["fromString"] = function (_0x46fefe, _0x46bd09) {
              var _0x423836;
        
              if (16 == _0x46bd09) {
                _0x423836 = 4;
              } else {
                if (8 == _0x46bd09) {
                  _0x423836 = 3;
                } else {
                  if (256 == _0x46bd09) {
                    _0x423836 = 8;
                  } else {
                    if (2 == _0x46bd09) {
                      _0x423836 = 1;
                    } else {
                      if (32 == _0x46bd09) {
                        _0x423836 = 5;
                      } else {
                        if (4 != _0x46bd09) {
                          return undefined;
                        }
        
                        _0x423836 = 2;
                      }
                    }
                  }
                }
              }
        
              this["t"] = 0, this["s"] = 0;
        
              for (var _0x2203c8 = _0x46fefe["length"], _0x397288 = false, _0x258379 = 0; 0 <= --_0x2203c8;) {
                var _0xa341c7 = 8 == _0x423836 ? 255 & +_0x46fefe[_0x2203c8] : _0x1ea6d1(_0x46fefe, _0x2203c8);
        
                _0xa341c7 < 0 ? "-" == _0x46fefe["charAt"](_0x2203c8) && (_0x397288 = true) : (_0x397288 = false, 0 == _0x258379 ? this[this["t"]++] = _0xa341c7 : _0x258379 + _0x423836 > this["DB"] ? (this[this["t"] - 1] |= (_0xa341c7 & (1 << this["DB"] - _0x258379) - 1) << _0x258379, this[this["t"]++] = _0xa341c7 >> this["DB"] - _0x258379) : this[this["t"] - 1] |= _0xa341c7 << _0x258379, (_0x258379 += _0x423836) >= this["DB"] && (_0x258379 -= this["DB"]));
              }
        
              8 == _0x423836 && 0 != (128 & +_0x46fefe[0]) && (this["s"] = -1, 0 < _0x258379 && (this[this["t"] - 1] |= (1 << this["DB"] - _0x258379) - 1 << _0x258379)), this["clamp"](), _0x397288 && _0x46cc13["ZERO"]["subTo"](this, this);
            }, _0x46cc13["prototype"]["clamp"] = function () {
              for (var _0x46cc13 = this["s"] & this["DM"]; 0 < this["t"] && this[this["t"] - 1] == _0x46cc13;) --this["t"];
            }, _0x46cc13["prototype"]["dlShiftTo"] = function (_0x170a15, _0x16346a) {
              var _0x2078d2;
        
              for (_0x2078d2 = this["t"] - 1; 0 <= _0x2078d2; --_0x2078d2) _0x16346a[_0x2078d2 + _0x170a15] = this[_0x2078d2];
        
              for (_0x2078d2 = _0x170a15 - 1; 0 <= _0x2078d2; --_0x2078d2) _0x16346a[_0x2078d2] = 0;
        
              _0x16346a["t"] = this["t"] + _0x170a15, _0x16346a["s"] = this["s"];
            }, _0x46cc13["prototype"]["drShiftTo"] = function (_0x300a63, _0x6b0894) {
              for (var _0x3a54fe = _0x300a63; _0x3a54fe < this["t"]; ++_0x3a54fe) _0x6b0894[_0x3a54fe - _0x300a63] = this[_0x3a54fe];
        
              _0x6b0894["t"] = Math["max"](this["t"] - _0x300a63, 0), _0x6b0894["s"] = this["s"];
            }, _0x46cc13["prototype"]["lShiftTo"] = function (_0x273a7f, _0x593c18) {
              for (var _0x31a918 = _0x273a7f % this["DB"], _0x4f686b = this["DB"] - _0x31a918, _0xd8e230 = (1 << _0x4f686b) - 1, _0x51bb49 = Math["floor"](_0x273a7f / this["DB"]), _0x5b7ef3 = this["s"] << _0x31a918 & this["DM"], _0x1c599f = this["t"] - 1; 0 <= _0x1c599f; --_0x1c599f) _0x593c18[_0x1c599f + _0x51bb49 + 1] = this[_0x1c599f] >> _0x4f686b | _0x5b7ef3, _0x5b7ef3 = (this[_0x1c599f] & _0xd8e230) << _0x31a918;
        
              for (_0x1c599f = _0x51bb49 - 1; 0 <= _0x1c599f; --_0x1c599f) _0x593c18[_0x1c599f] = 0;
        
              _0x593c18[_0x51bb49] = _0x5b7ef3, _0x593c18["t"] = this["t"] + _0x51bb49 + 1, _0x593c18["s"] = this["s"], _0x593c18["clamp"]();
            }, _0x46cc13["prototype"]["rShiftTo"] = function (_0x3a96f4, _0xd83570) {
              _0xd83570["s"] = this["s"];
        
              var _0x120f99 = Math["floor"](_0x3a96f4 / this["DB"]);
        
              if (_0x120f99 >= this["t"]) {
                _0xd83570["t"] = 0;
              } else {
                var _0x332ab2 = _0x3a96f4 % this["DB"],
                    _0x486cfd = this["DB"] - _0x332ab2,
                    _0x57b419 = (1 << _0x332ab2) - 1;
        
                _0xd83570[0] = this[_0x120f99] >> _0x332ab2;
        
                for (var _0x1d86b8 = _0x120f99 + 1; _0x1d86b8 < this["t"]; ++_0x1d86b8) _0xd83570[_0x1d86b8 - _0x120f99 - 1] |= (this[_0x1d86b8] & _0x57b419) << _0x486cfd, _0xd83570[_0x1d86b8 - _0x120f99] = this[_0x1d86b8] >> _0x332ab2;
        
                0 < _0x332ab2 && (_0xd83570[this["t"] - _0x120f99 - 1] |= (this["s"] & _0x57b419) << _0x486cfd), _0xd83570["t"] = this["t"] - _0x120f99, _0xd83570["clamp"]();
              }
            }, _0x46cc13["prototype"]["subTo"] = function (_0x1bfb46, _0x549664) {
              for (var _0x16e8f1 = 0, _0x377986 = 0, _0x32eb74 = Math["min"](_0x1bfb46["t"], this["t"]); _0x16e8f1 < _0x32eb74;) _0x377986 += this[_0x16e8f1] - _0x1bfb46[_0x16e8f1], _0x549664[_0x16e8f1++] = _0x377986 & this["DM"], _0x377986 >>= this["DB"];
        
              if (_0x1bfb46["t"] < this["t"]) {
                for (_0x377986 -= _0x1bfb46["s"]; _0x16e8f1 < this["t"];) _0x377986 += this[_0x16e8f1], _0x549664[_0x16e8f1++] = _0x377986 & this["DM"], _0x377986 >>= this["DB"];
        
                _0x377986 += this["s"];
              } else {
                for (_0x377986 += this["s"]; _0x16e8f1 < _0x1bfb46["t"];) _0x377986 -= _0x1bfb46[_0x16e8f1], _0x549664[_0x16e8f1++] = _0x377986 & this["DM"], _0x377986 >>= this["DB"];
        
                _0x377986 -= _0x1bfb46["s"];
              }
        
              _0x549664["s"] = _0x377986 < 0 ? -1 : 0, _0x377986 < -1 ? _0x549664[_0x16e8f1++] = this["DV"] + _0x377986 : 0 < _0x377986 && (_0x549664[_0x16e8f1++] = _0x377986), _0x549664["t"] = _0x16e8f1, _0x549664["clamp"]();
            }, _0x46cc13["prototype"]["multiplyTo"] = function (_0x16123a, _0x362a4d) {
              var _0x5b71c7 = this["abs"](),
                  _0x2ef1c3 = _0x16123a["abs"](),
                  _0x5da087 = _0x5b71c7["t"];
        
              for (_0x362a4d["t"] = _0x5da087 + _0x2ef1c3["t"]; 0 <= --_0x5da087;) _0x362a4d[_0x5da087] = 0;
        
              for (_0x5da087 = 0; _0x5da087 < _0x2ef1c3["t"]; ++_0x5da087) _0x362a4d[_0x5da087 + _0x5b71c7["t"]] = _0x5b71c7["am"](0, _0x2ef1c3[_0x5da087], _0x362a4d, _0x5da087, 0, _0x5b71c7["t"]);
        
              _0x362a4d["s"] = 0, _0x362a4d["clamp"](), this["s"] != _0x16123a["s"] && _0x46cc13["ZERO"]["subTo"](_0x362a4d, _0x362a4d);
            }, _0x46cc13["prototype"]["squareTo"] = function (_0x5a401f) {
              for (var _0x3d477b = this["abs"](), _0x23fbd0 = _0x5a401f["t"] = 2 * _0x3d477b["t"]; 0 <= --_0x23fbd0;) _0x5a401f[_0x23fbd0] = 0;
        
              for (_0x23fbd0 = 0; _0x23fbd0 < _0x3d477b["t"] - 1; ++_0x23fbd0) {
                var _0x57617a = _0x3d477b["am"](_0x23fbd0, _0x3d477b[_0x23fbd0], _0x5a401f, 2 * _0x23fbd0, 0, 1);
        
                (_0x5a401f[_0x23fbd0 + _0x3d477b["t"]] += _0x3d477b["am"](_0x23fbd0 + 1, 2 * _0x3d477b[_0x23fbd0], _0x5a401f, 2 * _0x23fbd0 + 1, _0x57617a, _0x3d477b["t"] - _0x23fbd0 - 1)) >= _0x3d477b["DV"] && (_0x5a401f[_0x23fbd0 + _0x3d477b["t"]] -= _0x3d477b["DV"], _0x5a401f[_0x23fbd0 + _0x3d477b["t"] + 1] = 1);
              }
        
              0 < _0x5a401f["t"] && (_0x5a401f[_0x5a401f["t"] - 1] += _0x3d477b["am"](_0x23fbd0, _0x3d477b[_0x23fbd0], _0x5a401f, 2 * _0x23fbd0, 0, 1)), _0x5a401f["s"] = 0, _0x5a401f["clamp"]();
            }, _0x46cc13["prototype"]["divRemTo"] = function (_0x41ab8c, _0x2824dd, _0x4d1123) {
              var _0x7304cf = _0x41ab8c["abs"]();
        
              if (!(_0x7304cf["t"] <= 0)) {
                var _0x439dcf = this["abs"]();
        
                if (_0x439dcf["t"] < _0x7304cf["t"]) {
                  return null != _0x2824dd && _0x2824dd["fromInt"](0), undefined;
                }
        
                null == _0x4d1123 && (_0x4d1123 = _0x425021());
        
                var _0x56cb54 = _0x425021(),
                    _0x2d36e7 = this["s"],
                    _0x387fdd = _0x41ab8c["s"],
                    _0x13d1f2 = this["DB"] - _0x312495(_0x7304cf[_0x7304cf["t"] - 1]);
        
                0 < _0x13d1f2 ? (_0x7304cf["lShiftTo"](_0x13d1f2, _0x56cb54), _0x439dcf["lShiftTo"](_0x13d1f2, _0x4d1123)) : (_0x7304cf["copyTo"](_0x56cb54), _0x439dcf["copyTo"](_0x4d1123));
                var _0x391c4a = _0x56cb54["t"],
                    _0x543a0b = _0x56cb54[_0x391c4a - 1];
        
                if (0 != _0x543a0b) {
                  var _0x2ae540 = _0x543a0b * (1 << this["F1"]) + (1 < _0x391c4a ? _0x56cb54[_0x391c4a - 2] >> this["F2"] : 0),
                      _0x469d6b = this["FV"] / _0x2ae540,
                      _0x1bb9ba = (1 << this["F1"]) / _0x2ae540,
                      _0x5f4fc5 = 1 << this["F2"],
                      _0x56f799 = _0x4d1123["t"],
                      _0x1e8018 = _0x56f799 - _0x391c4a,
                      _0x4d3acc = null == _0x2824dd ? _0x425021() : _0x2824dd;
        
                  for (_0x56cb54["dlShiftTo"](_0x1e8018, _0x4d3acc), 0 <= _0x4d1123["compareTo"](_0x4d3acc) && (_0x4d1123[_0x4d1123["t"]++] = 1, _0x4d1123["subTo"](_0x4d3acc, _0x4d1123)), _0x46cc13["ONE"]["dlShiftTo"](_0x391c4a, _0x4d3acc), _0x4d3acc["subTo"](_0x56cb54, _0x56cb54); _0x56cb54["t"] < _0x391c4a;) _0x56cb54[_0x56cb54["t"]++] = 0;
        
                  for (; 0 <= --_0x1e8018;) {
                    var _0x161488 = _0x4d1123[--_0x56f799] == _0x543a0b ? this["DM"] : Math["floor"](_0x4d1123[_0x56f799] * _0x469d6b + (_0x4d1123[_0x56f799 - 1] + _0x5f4fc5) * _0x1bb9ba);
        
                    if ((_0x4d1123[_0x56f799] += _0x56cb54["am"](0, _0x161488, _0x4d1123, _0x1e8018, 0, _0x391c4a)) < _0x161488) {
                      for (_0x56cb54["dlShiftTo"](_0x1e8018, _0x4d3acc), _0x4d1123["subTo"](_0x4d3acc, _0x4d1123); _0x4d1123[_0x56f799] < --_0x161488;) _0x4d1123["subTo"](_0x4d3acc, _0x4d1123);
                    }
                  }
        
                  null != _0x2824dd && (_0x4d1123["drShiftTo"](_0x391c4a, _0x2824dd), _0x2d36e7 != _0x387fdd && _0x46cc13["ZERO"]["subTo"](_0x2824dd, _0x2824dd)), _0x4d1123["t"] = _0x391c4a, _0x4d1123["clamp"](), 0 < _0x13d1f2 && _0x4d1123["rShiftTo"](_0x13d1f2, _0x4d1123), _0x2d36e7 < 0 && _0x46cc13["ZERO"]["subTo"](_0x4d1123, _0x4d1123);
                }
              }
            }, _0x46cc13["prototype"]["invDigit"] = function () {
              if (this["t"] < 1) {
                return 0;
              }
        
              var _0x46cc13 = this[0];
        
              if (0 == (1 & _0x46cc13)) {
                return 0;
              }
        
              var _0x46a795 = 3 & _0x46cc13;
        
              return 0 < (_0x46a795 = (_0x46a795 = (_0x46a795 = (_0x46a795 = _0x46a795 * (2 - (15 & _0x46cc13) * _0x46a795) & 15) * (2 - (255 & _0x46cc13) * _0x46a795) & 255) * (2 - ((65535 & _0x46cc13) * _0x46a795 & 65535)) & 65535) * (2 - _0x46cc13 * _0x46a795 % this["DV"]) % this["DV"]) ? this["DV"] - _0x46a795 : -_0x46a795;
            }, _0x46cc13["prototype"]["isEven"] = function () {
              return 0 == (0 < this["t"] ? 1 & this[0] : this["s"]);
            }, _0x46cc13["prototype"]["exp"] = function (_0x4a65ad, _0x212c70) {
              if (4294967295 < _0x4a65ad || _0x4a65ad < 1) {
                return _0x46cc13["ONE"];
              }
        
              var _0x34ca43 = _0x425021(),
                  _0x43b99d = _0x425021(),
                  _0x5e3d8c = _0x212c70["convert"](this),
                  _0x23c43d = _0x312495(_0x4a65ad) - 1;
        
              for (_0x5e3d8c["copyTo"](_0x34ca43); 0 <= --_0x23c43d;) if (_0x212c70["sqrTo"](_0x34ca43, _0x43b99d), 0 < (_0x4a65ad & 1 << _0x23c43d)) {
                _0x212c70["mulTo"](_0x43b99d, _0x5e3d8c, _0x34ca43);
              } else {
                var _0x2a54ce = _0x34ca43;
                _0x34ca43 = _0x43b99d, _0x43b99d = _0x2a54ce;
              }
        
              return _0x212c70["revert"](_0x34ca43);
            }, _0x46cc13["prototype"]["chunkSize"] = function (_0x41f3a2) {
              return Math["floor"](Math["LN2"] * this["DB"] / Math["log"](_0x41f3a2));
            }, _0x46cc13["prototype"]["toRadix"] = function (_0x57ab55) {
              if (null == _0x57ab55 && (_0x57ab55 = 10), 0 == this["signum"]() || _0x57ab55 < 2 || 36 < _0x57ab55) {
                return "0";
              }
        
              var _0x4f1caa = this["chunkSize"](_0x57ab55),
                  _0x113f29 = Math["pow"](_0x57ab55, _0x4f1caa),
                  _0x3007b3 = _0x46df6e(_0x113f29),
                  _0x506024 = _0x425021(),
                  _0x5bfbe2 = _0x425021(),
                  _0x27f471 = "";
        
              for (this["divRemTo"](_0x3007b3, _0x506024, _0x5bfbe2); 0 < _0x506024["signum"]();) _0x27f471 = (_0x113f29 + _0x5bfbe2["intValue"]())["toString"](_0x57ab55)["substr"](1) + _0x27f471, _0x506024["divRemTo"](_0x3007b3, _0x506024, _0x5bfbe2);
        
              return _0x5bfbe2["intValue"]()["toString"](_0x57ab55) + _0x27f471;
            }, _0x46cc13["prototype"]["fromRadix"] = function (_0xab2623, _0x3c412d) {
              this["fromInt"](0), null == _0x3c412d && (_0x3c412d = 10);
        
              for (var _0x318346 = this["chunkSize"](_0x3c412d), _0x2a6a20 = Math["pow"](_0x3c412d, _0x318346), _0x10032d = false, _0x3f84db = 0, _0xf95517 = 0, _0x5bda4b = 0; _0x5bda4b < _0xab2623["length"]; ++_0x5bda4b) {
                var _0x431258 = _0x1ea6d1(_0xab2623, _0x5bda4b);
        
                _0x431258 < 0 ? "-" == _0xab2623["charAt"](_0x5bda4b) && 0 == this["signum"]() && (_0x10032d = true) : (_0xf95517 = _0x3c412d * _0xf95517 + _0x431258, ++_0x3f84db >= _0x318346 && (this["dMultiply"](_0x2a6a20), this["dAddOffset"](_0xf95517, 0), _0xf95517 = _0x3f84db = 0));
              }
        
              0 < _0x3f84db && (this["dMultiply"](Math["pow"](_0x3c412d, _0x3f84db)), this["dAddOffset"](_0xf95517, 0)), _0x10032d && _0x46cc13["ZERO"]["subTo"](this, this);
            }, _0x46cc13["prototype"]["fromNumber"] = function (_0x1b6a1b, _0x2799da, _0x3fea16) {
              if ("number" == typeof _0x2799da) {
                if (_0x1b6a1b < 2) {
                  this["fromInt"](1);
                } else {
                  for (this["fromNumber"](_0x1b6a1b, _0x3fea16), this["testBit"](_0x1b6a1b - 1) || this["bitwiseTo"](_0x46cc13["ONE"]["shiftLeft"](_0x1b6a1b - 1), _0xfb232b, this), this["isEven"]() && this["dAddOffset"](1, 0); !this["isProbablePrime"](_0x2799da);) this["dAddOffset"](2, 0), this["bitLength"]() > _0x1b6a1b && this["subTo"](_0x46cc13["ONE"]["shiftLeft"](_0x1b6a1b - 1), this);
                }
              } else {
                var _0xaccbba = [],
                    _0x4bd77e = 7 & _0x1b6a1b;
        
                _0xaccbba["length"] = 1 + (_0x1b6a1b >> 3), _0x2799da["nextBytes"](_0xaccbba), 0 < _0x4bd77e ? _0xaccbba[0] &= (1 << _0x4bd77e) - 1 : _0xaccbba[0] = 0, this["fromString"](_0xaccbba, 256);
              }
            }, _0x46cc13["prototype"]["bitwiseTo"] = function (_0x5868f5, _0x57e124, _0x5f05b7) {
              var _0x13ecef,
                  _0x431f37,
                  _0x212347 = Math["min"](_0x5868f5["t"], this["t"]);
        
              for (_0x13ecef = 0; _0x13ecef < _0x212347; ++_0x13ecef) _0x5f05b7[_0x13ecef] = _0x57e124(this[_0x13ecef], _0x5868f5[_0x13ecef]);
        
              if (_0x5868f5["t"] < this["t"]) {
                for (_0x431f37 = _0x5868f5["s"] & this["DM"], _0x13ecef = _0x212347; _0x13ecef < this["t"]; ++_0x13ecef) _0x5f05b7[_0x13ecef] = _0x57e124(this[_0x13ecef], _0x431f37);
        
                _0x5f05b7["t"] = this["t"];
              } else {
                for (_0x431f37 = this["s"] & this["DM"], _0x13ecef = _0x212347; _0x13ecef < _0x5868f5["t"]; ++_0x13ecef) _0x5f05b7[_0x13ecef] = _0x57e124(_0x431f37, _0x5868f5[_0x13ecef]);
        
                _0x5f05b7["t"] = _0x5868f5["t"];
              }
        
              _0x5f05b7["s"] = _0x57e124(this["s"], _0x5868f5["s"]), _0x5f05b7["clamp"]();
            }, _0x46cc13["prototype"]["changeBit"] = function (_0x387312, _0xc77ee7) {
              var _0x560ddf = _0x46cc13["ONE"]["shiftLeft"](_0x387312);
        
              return this["bitwiseTo"](_0x560ddf, _0xc77ee7, _0x560ddf), _0x560ddf;
            }, _0x46cc13["prototype"]["addTo"] = function (_0x432801, _0x4850ea) {
              for (var _0x31b1f0 = 0, _0x30d985 = 0, _0x1b15f9 = Math["min"](_0x432801["t"], this["t"]); _0x31b1f0 < _0x1b15f9;) _0x30d985 += this[_0x31b1f0] + _0x432801[_0x31b1f0], _0x4850ea[_0x31b1f0++] = _0x30d985 & this["DM"], _0x30d985 >>= this["DB"];
        
              if (_0x432801["t"] < this["t"]) {
                for (_0x30d985 += _0x432801["s"]; _0x31b1f0 < this["t"];) _0x30d985 += this[_0x31b1f0], _0x4850ea[_0x31b1f0++] = _0x30d985 & this["DM"], _0x30d985 >>= this["DB"];
        
                _0x30d985 += this["s"];
              } else {
                for (_0x30d985 += this["s"]; _0x31b1f0 < _0x432801["t"];) _0x30d985 += _0x432801[_0x31b1f0], _0x4850ea[_0x31b1f0++] = _0x30d985 & this["DM"], _0x30d985 >>= this["DB"];
        
                _0x30d985 += _0x432801["s"];
              }
        
              _0x4850ea["s"] = _0x30d985 < 0 ? -1 : 0, 0 < _0x30d985 ? _0x4850ea[_0x31b1f0++] = _0x30d985 : _0x30d985 < -1 && (_0x4850ea[_0x31b1f0++] = this["DV"] + _0x30d985), _0x4850ea["t"] = _0x31b1f0, _0x4850ea["clamp"]();
            }, _0x46cc13["prototype"]["dMultiply"] = function (_0x2d7d07) {
              this[this["t"]] = this["am"](0, _0x2d7d07 - 1, this, 0, 0, this["t"]), ++this["t"], this["clamp"]();
            }, _0x46cc13["prototype"]["dAddOffset"] = function (_0x4ef00f, _0x13e7b7) {
              if (0 != _0x4ef00f) {
                for (; this["t"] <= _0x13e7b7;) this[this["t"]++] = 0;
        
                for (this[_0x13e7b7] += _0x4ef00f; this[_0x13e7b7] >= this["DV"];) this[_0x13e7b7] -= this["DV"], ++_0x13e7b7 >= this["t"] && (this[this["t"]++] = 0), ++this[_0x13e7b7];
              }
            }, _0x46cc13["prototype"]["multiplyLowerTo"] = function (_0x10db58, _0x3ae37d, _0x4f92b3) {
              var _0x5d8c8a = Math["min"](this["t"] + _0x10db58["t"], _0x3ae37d);
        
              for (_0x4f92b3["s"] = 0, _0x4f92b3["t"] = _0x5d8c8a; 0 < _0x5d8c8a;) _0x4f92b3[--_0x5d8c8a] = 0;
        
              for (var _0x5f2c8d = _0x4f92b3["t"] - this["t"]; _0x5d8c8a < _0x5f2c8d; ++_0x5d8c8a) _0x4f92b3[_0x5d8c8a + this["t"]] = this["am"](0, _0x10db58[_0x5d8c8a], _0x4f92b3, _0x5d8c8a, 0, this["t"]);
        
              for (_0x5f2c8d = Math["min"](_0x10db58["t"], _0x3ae37d); _0x5d8c8a < _0x5f2c8d; ++_0x5d8c8a) this["am"](0, _0x10db58[_0x5d8c8a], _0x4f92b3, _0x5d8c8a, 0, _0x3ae37d - _0x5d8c8a);
        
              _0x4f92b3["clamp"]();
            }, _0x46cc13["prototype"]["multiplyUpperTo"] = function (_0x160c85, _0x189bce, _0x3a2c9c) {
              var _0x51cb9d = _0x3a2c9c["t"] = this["t"] + _0x160c85["t"] - --_0x189bce;
        
              for (_0x3a2c9c["s"] = 0; 0 <= --_0x51cb9d;) _0x3a2c9c[_0x51cb9d] = 0;
        
              for (_0x51cb9d = Math["max"](_0x189bce - this["t"], 0); _0x51cb9d < _0x160c85["t"]; ++_0x51cb9d) _0x3a2c9c[this["t"] + _0x51cb9d - _0x189bce] = this["am"](_0x189bce - _0x51cb9d, _0x160c85[_0x51cb9d], _0x3a2c9c, 0, 0, this["t"] + _0x51cb9d - _0x189bce);
        
              _0x3a2c9c["clamp"](), _0x3a2c9c["drShiftTo"](1, _0x3a2c9c);
            }, _0x46cc13["prototype"]["modInt"] = function (_0x1647ad) {
              if (_0x1647ad <= 0) {
                return 0;
              }
        
              var _0x453e4c = this["DV"] % _0x1647ad,
                  _0x5dacdb = this["s"] < 0 ? _0x1647ad - 1 : 0;
        
              if (0 < this["t"]) {
                if (0 == _0x453e4c) {
                  _0x5dacdb = this[0] % _0x1647ad;
                } else {
                  for (var _0x1b9d78 = this["t"] - 1; 0 <= _0x1b9d78; --_0x1b9d78) _0x5dacdb = (_0x453e4c * _0x5dacdb + this[_0x1b9d78]) % _0x1647ad;
                }
              }
        
              return _0x5dacdb;
            }, _0x46cc13["prototype"]["millerRabin"] = function (_0x5bea7e) {
              var _0x419cf9 = this["subtract"](_0x46cc13["ONE"]),
                  _0x4f6306 = _0x419cf9["getLowestSetBit"]();
        
              if (_0x4f6306 <= 0) {
                return false;
              }
        
              var _0x5c625f = _0x419cf9["shiftRight"](_0x4f6306);
        
              _0x16c700["length"] < (_0x5bea7e = _0x5bea7e + 1 >> 1) && (_0x5bea7e = _0x16c700["length"]);
        
              for (var _0x3a0263 = _0x425021(), _0x58e43d = 0; _0x58e43d < _0x5bea7e; ++_0x58e43d) {
                var _0x1dfb1a = _0x3a0263["modPow"](_0x5c625f, this);
        
                if (0 != _0x1dfb1a["compareTo"](_0x46cc13["ONE"]) && 0 != _0x1dfb1a["compareTo"](_0x419cf9)) {
                  for (var _0x5a9e49 = 1; _0x5a9e49++ < _0x4f6306 && 0 != _0x1dfb1a["compareTo"](_0x419cf9);) if (0 == (_0x1dfb1a = _0x1dfb1a["modPowInt"](2, this))["compareTo"](_0x46cc13["ONE"])) {
                    return false;
                  }
        
                  if (0 != _0x1dfb1a["compareTo"](_0x419cf9)) {
                    return false;
                  }
                }
              }
        
              return true;
            }, _0x46cc13["prototype"]["square"] = function () {
              var _0x46cc13 = _0x425021();
        
              return this["squareTo"](_0x46cc13), _0x46cc13;
            }, _0x46cc13["prototype"]["gcda"] = function (_0x5d3e11, _0x208d32) {
              var _0x563b22 = this["s"] < 0 ? this["negate"]() : this["clone"](),
                  _0x5b7311 = _0x5d3e11["s"] < 0 ? _0x5d3e11["negate"]() : _0x5d3e11["clone"]();
        
              if (_0x563b22["compareTo"](_0x5b7311) < 0) {
                var _0x926c66 = _0x563b22;
                _0x563b22 = _0x5b7311, _0x5b7311 = _0x926c66;
              }
        
              var _0xca6de8 = _0x563b22["getLowestSetBit"](),
                  _0x1d7bf6 = _0x5b7311["getLowestSetBit"]();
        
              if (_0x1d7bf6 < 0) {
                _0x208d32(_0x563b22);
              } else {
                _0xca6de8 < _0x1d7bf6 && (_0x1d7bf6 = _0xca6de8), 0 < _0x1d7bf6 && (_0x563b22["rShiftTo"](_0x1d7bf6, _0x563b22), _0x5b7311["rShiftTo"](_0x1d7bf6, _0x5b7311));
        
                var _0xa4350a = function () {
                  0 < (_0xca6de8 = _0x563b22["getLowestSetBit"]()) && _0x563b22["rShiftTo"](_0xca6de8, _0x563b22), 0 < (_0xca6de8 = _0x5b7311["getLowestSetBit"]()) && _0x5b7311["rShiftTo"](_0xca6de8, _0x5b7311), 0 <= _0x563b22["compareTo"](_0x5b7311) ? (_0x563b22["subTo"](_0x5b7311, _0x563b22), _0x563b22["rShiftTo"](1, _0x563b22)) : (_0x5b7311["subTo"](_0x563b22, _0x5b7311), _0x5b7311["rShiftTo"](1, _0x5b7311)), 0 < _0x563b22["signum"]() ? setTimeout(_0xa4350a, 0) : (0 < _0x1d7bf6 && _0x5b7311["lShiftTo"](_0x1d7bf6, _0x5b7311), setTimeout(function () {
                    _0x208d32(_0x5b7311);
                  }, 0));
                };
        
                setTimeout(_0xa4350a, 10);
              }
            }, _0x46cc13["prototype"]["fromNumberAsync"] = function (_0x15b60c, _0x1de11d, _0x39e9ee, _0x5cb406) {
              if ("number" == typeof _0x1de11d) {
                if (_0x15b60c < 2) {
                  this["fromInt"](1);
                } else {
                  this["fromNumber"](_0x15b60c, _0x39e9ee), this["testBit"](_0x15b60c - 1) || this["bitwiseTo"](_0x46cc13["ONE"]["shiftLeft"](_0x15b60c - 1), _0xfb232b, this), this["isEven"]() && this["dAddOffset"](1, 0);
        
                  var _0xfc69a0 = this,
                      _0x4c3b48 = function () {
                    _0xfc69a0["dAddOffset"](2, 0), _0xfc69a0["bitLength"]() > _0x15b60c && _0xfc69a0["subTo"](_0x46cc13["ONE"]["shiftLeft"](_0x15b60c - 1), _0xfc69a0), _0xfc69a0["isProbablePrime"](_0x1de11d) ? setTimeout(function () {
                      _0x5cb406();
                    }, 0) : setTimeout(_0x4c3b48, 0);
                  };
        
                  setTimeout(_0x4c3b48, 0);
                }
              } else {
                var _0x304322 = [],
                    _0x5e7edd = 7 & _0x15b60c;
        
                _0x304322["length"] = 1 + (_0x15b60c >> 3), _0x1de11d["nextBytes"](_0x304322), 0 < _0x5e7edd ? _0x304322[0] &= (1 << _0x5e7edd) - 1 : _0x304322[0] = 0, this["fromString"](_0x304322, 256);
              }
            }, _0x46cc13;
          }(),
              _0x24d53a = function () {
            function _0x7a0cac() {}
        
            return _0x7a0cac["prototype"]["convert"] = function (_0x41ce77) {
              return _0x41ce77;
            }, _0x7a0cac["prototype"]["revert"] = function (_0x4b1d70) {
              return _0x4b1d70;
            }, _0x7a0cac["prototype"]["mulTo"] = function (_0x50037c, _0x59c94d, _0x11277b) {
              _0x50037c["multiplyTo"](_0x59c94d, _0x11277b);
            }, _0x7a0cac["prototype"]["sqrTo"] = function (_0x42cc41, _0x2ef799) {
              _0x42cc41["squareTo"](_0x2ef799);
            }, _0x7a0cac;
          }(),
              _0x3d96c6 = function () {
            function _0xc1f893(_0x3f080a) {
              this["m"] = _0x3f080a;
            }
        
            return _0xc1f893["prototype"]["convert"] = function (_0xb45a47) {
              return _0xb45a47["s"] < 0 || 0 <= _0xb45a47["compareTo"](this["m"]) ? _0xb45a47["mod"](this["m"]) : _0xb45a47;
            }, _0xc1f893["prototype"]["revert"] = function (_0x16f707) {
              return _0x16f707;
            }, _0xc1f893["prototype"]["reduce"] = function (_0x319968) {
              _0x319968["divRemTo"](this["m"], null, _0x319968);
            }, _0xc1f893["prototype"]["mulTo"] = function (_0x380f64, _0x1b8469, _0x22a3eb) {
              _0x380f64["multiplyTo"](_0x1b8469, _0x22a3eb), this["reduce"](_0x22a3eb);
            }, _0xc1f893["prototype"]["sqrTo"] = function (_0x1827a1, _0x4c3d20) {
              _0x1827a1["squareTo"](_0x4c3d20), this["reduce"](_0x4c3d20);
            }, _0xc1f893;
          }(),
              _0x4cb267 = function () {
            function _0xdf43b3(_0x4a9319) {
              this["m"] = _0x4a9319, this["mp"] = _0x4a9319["invDigit"](), this["mpl"] = 32767 & this["mp"], this["mph"] = this["mp"] >> 15, this["um"] = (1 << _0x4a9319["DB"] - 15) - 1, this["mt2"] = 2 * _0x4a9319["t"];
            }
        
            return _0xdf43b3["prototype"]["convert"] = function (_0x11c977) {
              var _0x3dc738 = _0x425021();
        
              return _0x11c977["abs"]()["dlShiftTo"](this["m"]["t"], _0x3dc738), _0x3dc738["divRemTo"](this["m"], null, _0x3dc738), _0x11c977["s"] < 0 && 0 < _0x3dc738["compareTo"](_0x2935af["ZERO"]) && this["m"]["subTo"](_0x3dc738, _0x3dc738), _0x3dc738;
            }, _0xdf43b3["prototype"]["revert"] = function (_0x5202f8) {
              var _0x4263bf = _0x425021();
        
              return _0x5202f8["copyTo"](_0x4263bf), this["reduce"](_0x4263bf), _0x4263bf;
            }, _0xdf43b3["prototype"]["reduce"] = function (_0x3482a1) {
              for (; _0x3482a1["t"] <= this["mt2"];) _0x3482a1[_0x3482a1["t"]++] = 0;
        
              for (var _0x204387 = 0; _0x204387 < this["m"]["t"]; ++_0x204387) {
                var _0x303298 = 32767 & _0x3482a1[_0x204387],
                    _0x4d9d80 = _0x303298 * this["mpl"] + ((_0x303298 * this["mph"] + (_0x3482a1[_0x204387] >> 15) * this["mpl"] & this["um"]) << 15) & _0x3482a1["DM"];
        
                for (_0x3482a1[_0x303298 = _0x204387 + this["m"]["t"]] += this["m"]["am"](0, _0x4d9d80, _0x3482a1, _0x204387, 0, this["m"]["t"]); _0x3482a1[_0x303298] >= _0x3482a1["DV"];) _0x3482a1[_0x303298] -= _0x3482a1["DV"], _0x3482a1[++_0x303298]++;
              }
        
              _0x3482a1["clamp"](), _0x3482a1["drShiftTo"](this["m"]["t"], _0x3482a1), 0 <= _0x3482a1["compareTo"](this["m"]) && _0x3482a1["subTo"](this["m"], _0x3482a1);
            }, _0xdf43b3["prototype"]["mulTo"] = function (_0x3ffcce, _0x116ccb, _0x3016b6) {
              _0x3ffcce["multiplyTo"](_0x116ccb, _0x3016b6), this["reduce"](_0x3016b6);
            }, _0xdf43b3["prototype"]["sqrTo"] = function (_0x50e4f5, _0x297e38) {
              _0x50e4f5["squareTo"](_0x297e38), this["reduce"](_0x297e38);
            }, _0xdf43b3;
          }(),
              _0x51d9ef = function () {
            function _0x100af5(_0x2e4853) {
              this["m"] = _0x2e4853, this["r2"] = _0x425021(), this["q3"] = _0x425021(), _0x2935af["ONE"]["dlShiftTo"](2 * _0x2e4853["t"], this["r2"]), this["mu"] = this["r2"]["divide"](_0x2e4853);
            }
        
            return _0x100af5["prototype"]["convert"] = function (_0x5e0c07) {
              if (_0x5e0c07["s"] < 0 || _0x5e0c07["t"] > 2 * this["m"]["t"]) {
                return _0x5e0c07["mod"](this["m"]);
              }
        
              if (_0x5e0c07["compareTo"](this["m"]) < 0) {
                return _0x5e0c07;
              }
        
              var _0x38c177 = _0x425021();
        
              return _0x5e0c07["copyTo"](_0x38c177), this["reduce"](_0x38c177), _0x38c177;
            }, _0x100af5["prototype"]["revert"] = function (_0x53035b) {
              return _0x53035b;
            }, _0x100af5["prototype"]["reduce"] = function (_0x5f39d8) {
              for (_0x5f39d8["drShiftTo"](this["m"]["t"] - 1, this["r2"]), _0x5f39d8["t"] > this["m"]["t"] + 1 && (_0x5f39d8["t"] = this["m"]["t"] + 1, _0x5f39d8["clamp"]()), this["mu"]["multiplyUpperTo"](this["r2"], this["m"]["t"] + 1, this["q3"]), this["m"]["multiplyLowerTo"](this["q3"], this["m"]["t"] + 1, this["r2"]); _0x5f39d8["compareTo"](this["r2"]) < 0;) _0x5f39d8["dAddOffset"](1, this["m"]["t"] + 1);
        
              for (_0x5f39d8["subTo"](this["r2"], _0x5f39d8); 0 <= _0x5f39d8["compareTo"](this["m"]);) _0x5f39d8["subTo"](this["m"], _0x5f39d8);
            }, _0x100af5["prototype"]["mulTo"] = function (_0x720735, _0x5b47e6, _0x41d9c1) {
              _0x720735["multiplyTo"](_0x5b47e6, _0x41d9c1), this["reduce"](_0x41d9c1);
            }, _0x100af5["prototype"]["sqrTo"] = function (_0x464b92, _0x42a884) {
              _0x464b92["squareTo"](_0x42a884), this["reduce"](_0x42a884);
            }, _0x100af5;
          }();
        
          function _0x425021() {
            return new _0x2935af(null);
          }
        
          function _0x5baf06(_0xe04d3b, _0x372989) {
            return new _0x2935af(_0xe04d3b, _0x372989);
          }
        
          "Microsoft Internet Explorer" == navigator["appName"] ? (_0x2935af["prototype"]["am"] = function (_0x1af29b, _0x16b8da, _0x597a23, _0x401af9, _0x55ee66, _0x516c12) {
            for (var _0x36093e = 32767 & _0x16b8da, _0x259618 = _0x16b8da >> 15; 0 <= --_0x516c12;) {
              var _0x57bb8f = 32767 & this[_0x1af29b],
                  _0x5ae27a = this[_0x1af29b++] >> 15,
                  _0x387d95 = _0x259618 * _0x57bb8f + _0x5ae27a * _0x36093e;
        
              _0x55ee66 = ((_0x57bb8f = _0x36093e * _0x57bb8f + ((32767 & _0x387d95) << 15) + _0x597a23[_0x401af9] + (1073741823 & _0x55ee66)) >>> 30) + (_0x387d95 >>> 15) + _0x259618 * _0x5ae27a + (_0x55ee66 >>> 30), _0x597a23[_0x401af9++] = 1073741823 & _0x57bb8f;
            }
        
            return _0x55ee66;
          }, _0x10b29a = 30) : "Netscape" != navigator["appName"] ? (_0x2935af["prototype"]["am"] = function (_0x4c4e6e, _0x5ead7c, _0x337aa0, _0x106255, _0x34e937, _0x2d2a12) {
            for (; 0 <= --_0x2d2a12;) {
              var _0x232504 = _0x5ead7c * this[_0x4c4e6e++] + _0x337aa0[_0x106255] + _0x34e937;
        
              _0x34e937 = Math["floor"](_0x232504 / 67108864), _0x337aa0[_0x106255++] = 67108863 & _0x232504;
            }
        
            return _0x34e937;
          }, _0x10b29a = 26) : (_0x2935af["prototype"]["am"] = function (_0x3c1afb, _0x18bfac, _0x136996, _0x327041, _0x13dbc4, _0x1a1704) {
            for (var _0x5c74f1 = 16383 & _0x18bfac, _0x24929e = _0x18bfac >> 14; 0 <= --_0x1a1704;) {
              var _0x1dec8c = 16383 & this[_0x3c1afb],
                  _0x2a0d28 = this[_0x3c1afb++] >> 14,
                  _0x380ee7 = _0x24929e * _0x1dec8c + _0x2a0d28 * _0x5c74f1;
        
              _0x13dbc4 = ((_0x1dec8c = _0x5c74f1 * _0x1dec8c + ((16383 & _0x380ee7) << 14) + _0x136996[_0x327041] + _0x13dbc4) >> 28) + (_0x380ee7 >> 14) + _0x24929e * _0x2a0d28, _0x136996[_0x327041++] = 268435455 & _0x1dec8c;
            }
        
            return _0x13dbc4;
          }, _0x10b29a = 28), _0x2935af["prototype"]["DB"] = _0x10b29a, _0x2935af["prototype"]["DM"] = (1 << _0x10b29a) - 1, _0x2935af["prototype"]["DV"] = 1 << _0x10b29a, _0x2935af["prototype"]["FV"] = Math["pow"](2, 52), _0x2935af["prototype"]["F1"] = 52 - _0x10b29a, _0x2935af["prototype"]["F2"] = 2 * _0x10b29a - 52;
        
          var _0x563e61,
              _0x1d04ef,
              _0x1c8429 = [];
        
          for (_0x563e61 = "0"["charCodeAt"](0), _0x1d04ef = 0; _0x1d04ef <= 9; ++_0x1d04ef) _0x1c8429[_0x563e61++] = _0x1d04ef;
        
          for (_0x563e61 = "a"["charCodeAt"](0), _0x1d04ef = 10; _0x1d04ef < 36; ++_0x1d04ef) _0x1c8429[_0x563e61++] = _0x1d04ef;
        
          for (_0x563e61 = "A"["charCodeAt"](0), _0x1d04ef = 10; _0x1d04ef < 36; ++_0x1d04ef) _0x1c8429[_0x563e61++] = _0x1d04ef;
        
          function _0x1ea6d1(_0x1886b1, _0x3dcfad) {
            var _0x9abde0 = _0x1c8429[_0x1886b1["charCodeAt"](_0x3dcfad)];
        
            return null == _0x9abde0 ? -1 : _0x9abde0;
          }
        
          function _0x46df6e(_0x48f57e) {
            var _0x8b3fc2 = _0x425021();
        
            return _0x8b3fc2["fromInt"](_0x48f57e), _0x8b3fc2;
          }
        
          function _0x312495(_0x30770b) {
            var _0x3e6991,
                _0x4657cc = 1;
        
            return 0 != (_0x3e6991 = _0x30770b >>> 16) && (_0x30770b = _0x3e6991, _0x4657cc += 16), 0 != (_0x3e6991 = _0x30770b >> 8) && (_0x30770b = _0x3e6991, _0x4657cc += 8), 0 != (_0x3e6991 = _0x30770b >> 4) && (_0x30770b = _0x3e6991, _0x4657cc += 4), 0 != (_0x3e6991 = _0x30770b >> 2) && (_0x30770b = _0x3e6991, _0x4657cc += 2), 0 != (_0x3e6991 = _0x30770b >> 1) && (_0x30770b = _0x3e6991, _0x4657cc += 1), _0x4657cc;
          }
        
          _0x2935af["ZERO"] = _0x46df6e(0), _0x2935af["ONE"] = _0x46df6e(1);
        
          var _0x53c881,
              _0x198bd8,
              _0x19fde7 = function () {
            function _0x7d14e5() {
              this["i"] = 0, this["j"] = 0, this["S"] = [];
            }
        
            return _0x7d14e5["prototype"]["init"] = function (_0xab856e) {
              var _0x2f4340, _0x2e1107, _0xb75fb9;
        
              for (_0x2f4340 = 0; _0x2f4340 < 256; ++_0x2f4340) this["S"][_0x2f4340] = _0x2f4340;
        
              for (_0x2f4340 = _0x2e1107 = 0; _0x2f4340 < 256; ++_0x2f4340) _0xb75fb9 = this["S"][_0x2f4340], this["S"][_0x2f4340] = this["S"][_0x2e1107 = _0x2e1107 + this["S"][_0x2f4340] + _0xab856e[_0x2f4340 % _0xab856e["length"]] & 255], this["S"][_0x2e1107] = _0xb75fb9;
        
              this["i"] = 0, this["j"] = 0;
            }, _0x7d14e5["prototype"]["next"] = function () {
              var _0x7d14e5;
        
              return this["i"] = this["i"] + 1 & 255, this["j"] = this["j"] + this["S"][this["i"]] & 255, _0x7d14e5 = this["S"][this["i"]], this["S"][this["i"]] = this["S"][this["j"]], this["S"][this["j"]] = _0x7d14e5, this["S"][_0x7d14e5 + this["S"][this["i"]] & 255];
            }, _0x7d14e5;
          }(),
              _0xd1fcb7 = 256,
              _0x28fced = null;
        
          if (null == _0x28fced) {
            _0x28fced = [];
                _0x198bd8 = 0x0
            var _0x234805 = undefined;
        
            var _0xde5242 = new Uint32Array(256);
        
          }
        
          function _0x50b972() {
            if (null == _0x53c881) {
              for (_0x53c881 = new _0x19fde7(); _0x198bd8 < _0xd1fcb7;) {
                var _0x20544c = Math["floor"](65536);
        
                _0x28fced[_0x198bd8++] = 255 & _0x20544c;
              }
        
              for (_0x53c881["init"](_0x28fced), _0x198bd8 = 0; _0x198bd8 < _0x28fced["length"]; ++_0x198bd8) _0x28fced[_0x198bd8] = 0;
        
              _0x198bd8 = 0;
            }
        
            return _0x53c881["next"]();
          }
        
          var _0x1c692d = function () {
            function _0x3f7749() {}
        
            return _0x3f7749["prototype"]["nextBytes"] = function (_0x218966) {
              for (var _0x52ef1d = 0; _0x52ef1d < _0x218966["length"]; ++_0x52ef1d) _0x218966[_0x52ef1d] = _0x50b972();
            }, _0x3f7749;
          }(),
              _0x56aa3c = function () {
            function _0x19243d() {
              this["n"] = null, this["e"] = 0, this["d"] = null, this["p"] = null, this["q"] = null, this["dmp1"] = null, this["dmq1"] = null, this["coeff"] = null;
            }
        
            return _0x19243d["prototype"]["doPublic"] = function (_0x58c5a3) {
              return _0x58c5a3["modPowInt"](this["e"], this["n"]);
            }, _0x19243d["prototype"]["doPrivate"] = function (_0x126700) {
              if (null == this["p"] || null == this["q"]) {
                return _0x126700["modPow"](this["d"], this["n"]);
              }
        
              for (var _0x3c2a80 = _0x126700["mod"](this["p"])["modPow"](this["dmp1"], this["p"]), _0x4a698e = _0x126700["mod"](this["q"])["modPow"](this["dmq1"], this["q"]); _0x3c2a80["compareTo"](_0x4a698e) < 0;) _0x3c2a80 = _0x3c2a80["add"](this["p"]);
        
              return _0x3c2a80["subtract"](_0x4a698e)["multiply"](this["coeff"])["mod"](this["p"])["multiply"](this["q"])["add"](_0x4a698e);
            }, _0x19243d["prototype"]["setPublic"] = function (_0x4cbfaf, _0x576a9c) {
              null != _0x4cbfaf && null != _0x576a9c && 0 < _0x4cbfaf["length"] && 0 < _0x576a9c["length"] ? (this["n"] = _0x5baf06(_0x4cbfaf, 16), this["e"] = parseInt(_0x576a9c, 16)) : console["error"]("Invalid RSA public key");
            }, _0x19243d["prototype"]["encrypt"] = function (_0x35dde9) {
              var _0x1971c2 = function (_0x53504c, _0x520615) {
                if (_0x520615 < _0x53504c["length"] + 11) {
                  return console["error"]("Message too long for RSA"), null;
                }
        
                for (var _0x395439 = [], _0x37e200 = _0x53504c["length"] - 1; 0 <= _0x37e200 && 0 < _0x520615;) {
                  var _0x27c7a6 = _0x53504c["charCodeAt"](_0x37e200--);
        
                  _0x27c7a6 < 128 ? _0x395439[--_0x520615] = _0x27c7a6 : 127 < _0x27c7a6 && _0x27c7a6 < 2048 ? (_0x395439[--_0x520615] = 63 & _0x27c7a6 | 128, _0x395439[--_0x520615] = _0x27c7a6 >> 6 | 192) : (_0x395439[--_0x520615] = 63 & _0x27c7a6 | 128, _0x395439[--_0x520615] = _0x27c7a6 >> 6 & 63 | 128, _0x395439[--_0x520615] = _0x27c7a6 >> 12 | 224);
                }
        
                _0x395439[--_0x520615] = 0;
        
                for (var _0x5499c2 = new _0x1c692d(), _0x1e4d4c = []; 2 < _0x520615;) {
                  for (_0x1e4d4c[0] = 0; 0 == _0x1e4d4c[0];) _0x5499c2["nextBytes"](_0x1e4d4c);
        
                  _0x395439[--_0x520615] = _0x1e4d4c[0];
                }
        
                return _0x395439[--_0x520615] = 2, _0x395439[--_0x520615] = 0, new _0x2935af(_0x395439);
              }(_0x35dde9, this["n"]["bitLength"]() + 7 >> 3);
        
              if (null == _0x1971c2) {
                return null;
              }
        
              var _0x173b94 = this["doPublic"](_0x1971c2);
        
              if (null == _0x173b94) {
                return null;
              }
        
              var _0x423d43 = _0x173b94["toString"](16);
        
              return 0 == (1 & _0x423d43["length"]) ? _0x423d43 : "0" + _0x423d43;
            }, _0x19243d["prototype"]["setPrivate"] = function (_0x469101, _0x203293, _0x12e10b) {
              null != _0x469101 && null != _0x203293 && 0 < _0x469101["length"] && 0 < _0x203293["length"] ? (this["n"] = _0x5baf06(_0x469101, 16), this["e"] = parseInt(_0x203293, 16), this["d"] = _0x5baf06(_0x12e10b, 16)) : console["error"]("Invalid RSA private key");
            }, _0x19243d["prototype"]["setPrivateEx"] = function (_0x41060b, _0x211748, _0x387c5c, _0x369faf, _0x41a59f, _0x1457b9, _0x38e7ba, _0x1a1f21) {
              null != _0x41060b && null != _0x211748 && 0 < _0x41060b["length"] && 0 < _0x211748["length"] ? (this["n"] = _0x5baf06(_0x41060b, 16), this["e"] = parseInt(_0x211748, 16), this["d"] = _0x5baf06(_0x387c5c, 16), this["p"] = _0x5baf06(_0x369faf, 16), this["q"] = _0x5baf06(_0x41a59f, 16), this["dmp1"] = _0x5baf06(_0x1457b9, 16), this["dmq1"] = _0x5baf06(_0x38e7ba, 16), this["coeff"] = _0x5baf06(_0x1a1f21, 16)) : console["error"]("Invalid RSA private key");
            }, _0x19243d["prototype"]["generate"] = function (_0x54cded, _0x252e2c) {
              var _0x4d5ffc = new _0x1c692d(),
                  _0x196d88 = _0x54cded >> 1;
        
              this["e"] = parseInt(_0x252e2c, 16);
        
              for (var _0x504a1c = new _0x2935af(_0x252e2c, 16);;) {
                for (; this["p"] = new _0x2935af(_0x54cded - _0x196d88, 1, _0x4d5ffc), 0 != this["p"]["subtract"](_0x2935af["ONE"])["gcd"](_0x504a1c)["compareTo"](_0x2935af["ONE"]) || !this["p"]["isProbablePrime"](10);) {}
        
                for (; this["q"] = new _0x2935af(_0x196d88, 1, _0x4d5ffc), 0 != this["q"]["subtract"](_0x2935af["ONE"])["gcd"](_0x504a1c)["compareTo"](_0x2935af["ONE"]) || !this["q"]["isProbablePrime"](10);) {}
        
                if (this["p"]["compareTo"](this["q"]) <= 0) {
                  var _0x2c514a = this["p"];
                  this["p"] = this["q"], this["q"] = _0x2c514a;
                }
        
                var _0x5835c5 = this["p"]["subtract"](_0x2935af["ONE"]),
                    _0xcff2db = this["q"]["subtract"](_0x2935af["ONE"]),
                    _0x38f7ca = _0x5835c5["multiply"](_0xcff2db);
        
                if (0 == _0x38f7ca["gcd"](_0x504a1c)["compareTo"](_0x2935af["ONE"])) {
                  this["n"] = this["p"]["multiply"](this["q"]), this["d"] = _0x504a1c["modInverse"](_0x38f7ca), this["dmp1"] = this["d"]["mod"](_0x5835c5), this["dmq1"] = this["d"]["mod"](_0xcff2db), this["coeff"] = this["q"]["modInverse"](this["p"]);
                  break;
                }
              }
            }, _0x19243d["prototype"]["decrypt"] = function (_0x36f0fa) {
              var _0x481c7d = _0x5baf06(_0x36f0fa, 16),
                  _0x3758ed = this["doPrivate"](_0x481c7d);
        
              return null == _0x3758ed ? null : function (_0x1a083f, _0x497a1f) {
                for (var _0x459609 = _0x1a083f["toByteArray"](), _0x467192 = 0; _0x467192 < _0x459609["length"] && 0 == _0x459609[_0x467192];) ++_0x467192;
        
                if (_0x459609["length"] - _0x467192 != _0x497a1f - 1 || 2 != _0x459609[_0x467192]) {
                  return null;
                }
        
                for (++_0x467192; 0 != _0x459609[_0x467192];) if (++_0x467192 >= _0x459609["length"]) {
                  return null;
                }
        
                for (var _0x1ac7fe = ""; ++_0x467192 < _0x459609["length"];) {
                  var _0x53487d = 255 & _0x459609[_0x467192];
        
                  _0x53487d < 128 ? _0x1ac7fe += String["fromCharCode"](_0x53487d) : 191 < _0x53487d && _0x53487d < 224 ? (_0x1ac7fe += String["fromCharCode"]((31 & _0x53487d) << 6 | 63 & _0x459609[_0x467192 + 1]), ++_0x467192) : (_0x1ac7fe += String["fromCharCode"]((15 & _0x53487d) << 12 | (63 & _0x459609[_0x467192 + 1]) << 6 | 63 & _0x459609[_0x467192 + 2]), _0x467192 += 2);
                }
        
                return _0x1ac7fe;
              }(_0x3758ed, this["n"]["bitLength"]() + 7 >> 3);
            }, _0x19243d["prototype"]["generateAsync"] = function (_0x4639cc, _0x5e6d24, _0x2ea27d) {
              var _0x3ea2ab = new _0x1c692d(),
                  _0x17c5f2 = _0x4639cc >> 1;
        
              this["e"] = parseInt(_0x5e6d24, 16);
        
              var _0x5a2115 = new _0x2935af(_0x5e6d24, 16),
                  _0x18f76e = this,
                  _0x23dc1f = function () {
                var _0x5e6d24 = function () {
                  if (_0x18f76e["p"]["compareTo"](_0x18f76e["q"]) <= 0) {
                    var _0x4639cc = _0x18f76e["p"];
                    _0x18f76e["p"] = _0x18f76e["q"], _0x18f76e["q"] = _0x4639cc;
                  }
        
                  var _0x5e6d24 = _0x18f76e["p"]["subtract"](_0x2935af["ONE"]),
                      _0x343fe4 = _0x18f76e["q"]["subtract"](_0x2935af["ONE"]),
                      _0x22c084 = _0x5e6d24["multiply"](_0x343fe4);
        
                  0 == _0x22c084["gcd"](_0x5a2115)["compareTo"](_0x2935af["ONE"]) ? (_0x18f76e["n"] = _0x18f76e["p"]["multiply"](_0x18f76e["q"]), _0x18f76e["d"] = _0x5a2115["modInverse"](_0x22c084), _0x18f76e["dmp1"] = _0x18f76e["d"]["mod"](_0x5e6d24), _0x18f76e["dmq1"] = _0x18f76e["d"]["mod"](_0x343fe4), _0x18f76e["coeff"] = _0x18f76e["q"]["modInverse"](_0x18f76e["p"]), setTimeout(function () {
                    _0x2ea27d();
                  }, 0)) : setTimeout(_0x23dc1f, 0);
                },
                    _0x3870eb = function () {
                  _0x18f76e["q"] = _0x425021(), _0x18f76e["q"]["fromNumberAsync"](_0x17c5f2, 1, _0x3ea2ab, function () {
                    _0x18f76e["q"]["subtract"](_0x2935af["ONE"])["gcda"](_0x5a2115, function (_0x239128) {
                      0 == _0x239128["compareTo"](_0x2935af["ONE"]) && _0x18f76e["q"]["isProbablePrime"](10) ? setTimeout(_0x5e6d24, 0) : setTimeout(_0x3870eb, 0);
                    });
                  });
                },
                    _0xfc89d3 = function () {
                  _0x18f76e["p"] = _0x425021();
        
                  _0x18f76e["p"]["fromNumberAsync"](_0x4639cc - _0x17c5f2, 1, _0x3ea2ab, function () {
                    _0x18f76e["p"]["subtract"](_0x2935af["ONE"])["gcda"](_0x5a2115, function (_0x4c257a) {
                      0 == _0x4c257a["compareTo"](_0x2935af["ONE"]) && _0x18f76e["p"]["isProbablePrime"](10) ? setTimeout(_0x3870eb, 0) : setTimeout(_0xfc89d3, 0);
                    });
                  });
                };
        
                setTimeout(_0xfc89d3, 0);
              };
        
              setTimeout(_0x23dc1f, 0);
            }, _0x19243d["prototype"]["sign"] = function (_0x555d0b, _0x29b8d0, _0x17eec9) {
              var _0x3729c9 = function (_0x3b056e, _0x3f4c23) {
                if (_0x3f4c23 < _0x3b056e["length"] + 22) {
                  return console["error"]("Message too long for RSA"), null;
                }
        
                for (var _0x17eec9 = _0x3f4c23 - _0x3b056e["length"] - 6, _0x20f282 = "", _0x549bce = 0; _0x549bce < _0x17eec9; _0x549bce += 2) _0x20f282 += "ff";
        
                return _0x5baf06("0001" + _0x20f282 + "00" + _0x3b056e, 16);
              }((_0x50b97f[_0x17eec9] || "") + _0x29b8d0(_0x555d0b)["toString"](), this["n"]["bitLength"]() / 4);
        
              if (null == _0x3729c9) {
                return null;
              }
        
              var _0x249548 = this["doPrivate"](_0x3729c9);
        
              if (null == _0x249548) {
                return null;
              }
        
              var _0x2c9b88 = _0x249548["toString"](16);
        
              return 0 == (1 & _0x2c9b88["length"]) ? _0x2c9b88 : "0" + _0x2c9b88;
            }, _0x19243d["prototype"]["verify"] = function (_0xc36bda, _0x2a719f, _0x3ab3b4) {
              var _0x4ddb5d = _0x5baf06(_0x2a719f, 16),
                  _0x214cd6 = this["doPublic"](_0x4ddb5d);
        
              return null == _0x214cd6 ? null : function (_0x43ea64) {
                for (var _0x2a719f in _0x50b97f) if (_0x50b97f["hasOwnProperty"](_0x2a719f)) {
                  var _0x3ab3b4 = _0x50b97f[_0x2a719f],
                      _0xb76119 = _0x3ab3b4["length"];
        
                  if (_0x43ea64["substr"](0, _0xb76119) == _0x3ab3b4) {
                    return _0x43ea64["substr"](_0xb76119);
                  }
                }
        
                return _0x43ea64;
              }(_0x214cd6["toString"](16)["replace"](/^1f+00/, "")) == _0x3ab3b4(_0xc36bda)["toString"]();
            }, _0x19243d;
          }(),
              _0x1bbd98 = {
            "lang": {
              "extend": function (_0x4d3756, _0x571eb4, _0x29e6d6) {
                if (!_0x571eb4 || !_0x4d3756) {
                  throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");
                }
        
                var _0x170804 = function () {};
        
                if (_0x170804["prototype"] = _0x571eb4["prototype"], _0x4d3756["prototype"] = new _0x170804(), (_0x4d3756["prototype"]["constructor"] = _0x4d3756)["superclass"] = _0x571eb4["prototype"], _0x571eb4["prototype"]["constructor"] == Object["prototype"]["constructor"] && (_0x571eb4["prototype"]["constructor"] = _0x571eb4), _0x29e6d6) {
                  var _0x3693d9;
        
                  for (_0x3693d9 in _0x29e6d6) _0x4d3756["prototype"][_0x3693d9] = _0x29e6d6[_0x3693d9];
        
                  var _0xcfffe5 = function () {},
                      _0x129a8a = ["toString", "valueOf"];
        
                  try {
                    /MSIE/["test"](navigator["uA"]) && (_0xcfffe5 = function (_0x22041f, _0x2959db) {
                      for (_0x3693d9 = 0; _0x3693d9 < _0x129a8a["length"]; _0x3693d9 += 1) {
                        var _0x29e6d6 = _0x129a8a[_0x3693d9],
                            _0x42e818 = _0x2959db[_0x29e6d6];
                        "function" == typeof _0x42e818 && _0x42e818 != Object["prototype"][_0x29e6d6] && (_0x22041f[_0x29e6d6] = _0x42e818);
                      }
                    });
                  } catch (_0xb09e15) {}
        
                  _0xcfffe5(_0x4d3756["prototype"], _0x29e6d6);
                }
              }
            }
          };
        
          var _0x2f02a5 = {};
          undefined !== _0x2f02a5["asn1"] && _0x2f02a5["asn1"] || (_0x2f02a5["asn1"] = {});
          _0x2f02a5["asn1"]["ASN1Util"] = new function () {
            this["integerToByteHex"] = function (_0x383c06) {
              var _0x1f54af = _0x383c06["toString"](16);
        
              return _0x1f54af["length"] % 2 == 1 && (_0x1f54af = "0" + _0x1f54af), _0x1f54af;
            }, this["bigIntToMinTwosComplementsHex"] = function (_0xe3f045) {
              var _0x252856 = _0xe3f045["toString"](16);
        
              if ("-" != _0x252856["substr"](0, 1)) {
                _0x252856["length"] % 2 == 1 ? _0x252856 = "0" + _0x252856 : _0x252856["match"](/^[0-7]/) || (_0x252856 = "00" + _0x252856);
              } else {
                var _0x10e08d = _0x252856["substr"](1)["length"];
        
                _0x10e08d % 2 == 1 ? _0x10e08d += 1 : _0x252856["match"](/^[0-7]/) || (_0x10e08d += 2);
        
                for (var _0x2a6131 = "", _0x4d211b = 0; _0x4d211b < _0x10e08d; _0x4d211b++) _0x2a6131 += "f";
        
                _0x252856 = new _0x2935af(_0x2a6131, 16)["xor"](_0xe3f045)["add"](_0x2935af["ONE"])["toString"](16)["replace"](/^-/, "");
              }
        
              return _0x252856;
            }, this["getPEMStringFromHex"] = function (_0x54a841, _0x26cd90) {
              return hextopem(_0x54a841, _0x26cd90);
            }, this["newObject"] = function (_0x259224) {
              var _0x1214de = _0x2f02a5["asn1"],
                  _0x14f946 = _0x1214de["DERBoolean"],
                  _0x53b6a1 = _0x1214de["DERInteger"],
                  _0x2da46f = _0x1214de["DERBitString"],
                  _0x20daf9 = _0x1214de["DEROctetString"],
                  _0x262814 = _0x1214de["DERNull"],
                  _0x348e5d = _0x1214de["DERObjectIdentifier"],
                  _0x51bc19 = _0x1214de["DEREnumerated"],
                  _0x4c0132 = _0x1214de["DERUTF8String"],
                  _0xdf9f07 = _0x1214de["DERNumericString"],
                  _0x4caa63 = _0x1214de["DERPrintableString"],
                  _0x2e7100 = _0x1214de["DERTeletexString"],
                  _0x5aca82 = _0x1214de["DERIA5String"],
                  _0x3a3cf2 = _0x1214de["DERUTCTime"],
                  _0x5ca427 = _0x1214de["DERGeneralizedTime"],
                  _0x1f3b2e = _0x1214de["DERSequence"],
                  _0x481792 = _0x1214de["DERSet"],
                  _0x4c37c7 = _0x1214de["DERTaggedObject"],
                  _0x5e17db = _0x1214de["ASN1Util"]["newObject"],
                  _0x2f7fd0 = Object["keys"](_0x259224);
        
              if (1 != _0x2f7fd0["length"]) {
                throw "key of param shall be only one.";
              }
        
              var _0x2c13e9 = _0x2f7fd0[0];
        
              if (-1 == ":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:"["indexOf"](":" + _0x2c13e9 + ":")) {
                throw "undefined key: " + _0x2c13e9;
              }
        
              if ("bool" == _0x2c13e9) {
                return new _0x14f946(_0x259224[_0x2c13e9]);
              }
        
              if ("int" == _0x2c13e9) {
                return new _0x53b6a1(_0x259224[_0x2c13e9]);
              }
        
              if ("bitstr" == _0x2c13e9) {
                return new _0x2da46f(_0x259224[_0x2c13e9]);
              }
        
              if ("octstr" == _0x2c13e9) {
                return new _0x20daf9(_0x259224[_0x2c13e9]);
              }
        
              if ("null" == _0x2c13e9) {
                return new _0x262814(_0x259224[_0x2c13e9]);
              }
        
              if ("oid" == _0x2c13e9) {
                return new _0x348e5d(_0x259224[_0x2c13e9]);
              }
        
              if ("enum" == _0x2c13e9) {
                return new _0x51bc19(_0x259224[_0x2c13e9]);
              }
        
              if ("utf8str" == _0x2c13e9) {
                return new _0x4c0132(_0x259224[_0x2c13e9]);
              }
        
              if ("numstr" == _0x2c13e9) {
                return new _0xdf9f07(_0x259224[_0x2c13e9]);
              }
        
              if ("prnstr" == _0x2c13e9) {
                return new _0x4caa63(_0x259224[_0x2c13e9]);
              }
        
              if ("telstr" == _0x2c13e9) {
                return new _0x2e7100(_0x259224[_0x2c13e9]);
              }
        
              if ("ia5str" == _0x2c13e9) {
                return new _0x5aca82(_0x259224[_0x2c13e9]);
              }
        
              if ("utctime" == _0x2c13e9) {
                return new _0x3a3cf2(_0x259224[_0x2c13e9]);
              }
        
              if ("gentime" == _0x2c13e9) {
                return new _0x5ca427(_0x259224[_0x2c13e9]);
              }
        
              if ("seq" == _0x2c13e9) {
                for (var _0x6b7664 = _0x259224[_0x2c13e9], _0x14ff88 = [], _0x286e3d = 0; _0x286e3d < _0x6b7664["length"]; _0x286e3d++) {
                  var _0xe9c724 = _0x5e17db(_0x6b7664[_0x286e3d]);
        
                  _0x14ff88["push"](_0xe9c724);
                }
        
                return new _0x1f3b2e({
                  "array": _0x14ff88
                });
              }
        
              if ("set" == _0x2c13e9) {
                for (_0x6b7664 = _0x259224[_0x2c13e9], _0x14ff88 = [], _0x286e3d = 0; _0x286e3d < _0x6b7664["length"]; _0x286e3d++) _0xe9c724 = _0x5e17db(_0x6b7664[_0x286e3d]), _0x14ff88["push"](_0xe9c724);
        
                return new _0x481792({
                  "array": _0x14ff88
                });
              }
        
              if ("tag" == _0x2c13e9) {
                var _0x2aa86a = _0x259224[_0x2c13e9];
        
                if ("[object Array]" === Object["prototype"]["toString"]["call"](_0x2aa86a) && 3 == _0x2aa86a["length"]) {
                  var _0x335059 = _0x5e17db(_0x2aa86a[2]);
        
                  return new _0x4c37c7({
                    "tag": _0x2aa86a[0],
                    "explicit": _0x2aa86a[1],
                    "obj": _0x335059
                  });
                }
        
                var _0x59154d = {};
        
                if (undefined !== _0x2aa86a["explicit"] && (_0x59154d["explicit"] = _0x2aa86a["explicit"]), undefined !== _0x2aa86a["tag"] && (_0x59154d["tag"] = _0x2aa86a["tag"]), undefined === _0x2aa86a["obj"]) {
                  throw "obj shall be specified for 'tag'.";
                }
        
                return _0x59154d["obj"] = _0x5e17db(_0x2aa86a["obj"]), new _0x4c37c7(_0x59154d);
              }
            }, this["jsonToASN1HEX"] = function (_0x114a10) {
              return this["newObject"](_0x114a10)["getEncodedHex"]();
            };
          }();
        
          _0x2f02a5["asn1"]["ASN1Util"]["oidHexToInt"] = function (_0x106182) {
            for (var _0x58b2b3 = "", _0xe18f61 = parseInt(_0x106182["substr"](0, 2), 16), _0x3c33d9 = (_0x58b2b3 = Math["floor"](_0xe18f61 / 40) + "." + _0xe18f61 % 40, ""), _0x5b109b = 2; _0x5b109b < _0x106182["length"]; _0x5b109b += 2) {
              var _0x90a44a = ("00000000" + parseInt(_0x106182["substr"](_0x5b109b, 2), 16)["toString"](2))["slice"](-8);
        
              _0x3c33d9 += _0x90a44a["substr"](1, 7), "0" == _0x90a44a["substr"](0, 1) && (_0x58b2b3 = _0x58b2b3 + "." + new _0x2935af(_0x3c33d9, 2)["toString"](10), _0x3c33d9 = "");
            }
        
            return _0x58b2b3;
          };
        
          _0x2f02a5["asn1"]["ASN1Util"]["oidIntToHex"] = function (_0x2f3bd9) {
            var _0x26d55e = function (_0x2c5e07) {
              var _0x352e24 = _0x2c5e07["toString"](16);
        
              return 1 == _0x352e24["length"] && (_0x352e24 = "0" + _0x352e24), _0x352e24;
            },
                _0x425a60 = function (_0x50a16b) {
              var _0x45c230 = "",
                  _0x3505ab = new _0x2935af(_0x50a16b, 10)["toString"](2),
                  _0x188633 = 7 - _0x3505ab["length"] % 7;
        
              7 == _0x188633 && (_0x188633 = 0);
        
              for (var _0x22ef93 = "", _0x53f4f8 = 0; _0x53f4f8 < _0x188633; _0x53f4f8++) _0x22ef93 += "0";
        
              for (_0x3505ab = _0x22ef93 + _0x3505ab, _0x53f4f8 = 0; _0x53f4f8 < _0x3505ab["length"] - 1; _0x53f4f8 += 7) {
                var _0x38fdfe = _0x3505ab["substr"](_0x53f4f8, 7);
        
                _0x53f4f8 != _0x3505ab["length"] - 7 && (_0x38fdfe = "1" + _0x38fdfe), _0x45c230 += _0x26d55e(parseInt(_0x38fdfe, 2));
              }
        
              return _0x45c230;
            };
        
            if (!_0x2f3bd9["match"](/^[0-9.]+$/)) {
              throw "malformed oid string: " + _0x2f3bd9;
            }
        
            var _0x3a63ad = "",
                _0x490035 = _0x2f3bd9["split"]("."),
                _0x2a5dc2 = 40 * parseInt(_0x490035[0]) + parseInt(_0x490035[1]);
        
            _0x3a63ad += _0x26d55e(_0x2a5dc2), _0x490035["splice"](0, 2);
        
            for (var _0x511933 = 0; _0x511933 < _0x490035["length"]; _0x511933++) _0x3a63ad += _0x425a60(_0x490035[_0x511933]);
        
            return _0x3a63ad;
          };
        
          _0x2f02a5["asn1"]["ASN1Object"] = function () {
            this["getLengthHexFromValue"] = function () {
              if (undefined === this["hV"] || null == this["hV"]) {
                throw "this.hV is null or undefined.";
              }
        
              if (this["hV"]["length"] % 2 == 1) {
                throw "value hex must be even length: n=" + ""["length"] + ",v=" + this["hV"];
              }
        
              var _0x20544c = this["hV"]["length"] / 2,
                  _0x10182d = _0x20544c["toString"](16);
        
              if (_0x10182d["length"] % 2 == 1 && (_0x10182d = "0" + _0x10182d), _0x20544c < 128) {
                return _0x10182d;
              }
        
              var _0x47c599 = _0x10182d["length"] / 2;
        
              if (15 < _0x47c599) {
                throw "ASN.1 length too long to represent by 8x: n = " + _0x20544c["toString"](16);
              }
        
              return (128 + _0x47c599)["toString"](16) + _0x10182d;
            }, this["getEncodedHex"] = function () {
              return (null == this["hTLV"] || this["isModified"]) && (this["hV"] = this["getFreshValueHex"](), this["hL"] = this["getLengthHexFromValue"](), this["hTLV"] = this["hT"] + this["hL"] + this["hV"], this["isModified"] = false), this["hTLV"];
            }, this["getValueHex"] = function () {
              return this["getEncodedHex"](), this["hV"];
            }, this["getFreshValueHex"] = function () {
              return "";
            };
          };
        
          _0x2f02a5["asn1"]["DERAbstractString"] = function (_0x545af5) {
            _0x2f02a5["asn1"]["DERAbstractString"]["superclass"]["constructor"]["call"](this), this["getString"] = function () {
              return this["s"];
            }, this["setString"] = function (_0x523241) {
              this["hTLV"] = null, this["isModified"] = true, this["s"] = _0x523241, this["hV"] = stohex(this["s"]);
            }, this["setStringHex"] = function (_0x4b7ad1) {
              this["hTLV"] = null, this["isModified"] = true, this["s"] = null, this["hV"] = _0x4b7ad1;
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x545af5 && ("string" == typeof _0x545af5 ? this["setString"](_0x545af5) : undefined !== _0x545af5["str"] ? this["setString"](_0x545af5["str"]) : undefined !== _0x545af5["hex"] && this["setStringHex"](_0x545af5["hex"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERAbstractString"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERAbstractTime"] = function (_0x3e485a) {
            _0x2f02a5["asn1"]["DERAbstractTime"]["superclass"]["constructor"]["call"](this);
        
            this["localDateToUTC"] = function (_0x2349ab) {
              return utc = _0x2349ab["getTime"]() + 60000 * _0x2349ab["getTimezoneOffset"](), new Date(utc);
            };
        
            this["formatDate"] = function (_0x4de640, _0x106cbb, _0x54ca82) {
              var _0x2a9c6e = this["zeroPadding"],
                  _0x5cba9a = this["localDateToUTC"](_0x4de640),
                  _0xda3fe7 = String(_0x5cba9a["getFullYear"]());
        
              "utc" == _0x106cbb && (_0xda3fe7 = _0xda3fe7["substr"](2, 2));
        
              var _0x181800 = _0xda3fe7 + _0x2a9c6e(String(_0x5cba9a["getMonth"]() + 1), 2) + _0x2a9c6e(String(_0x5cba9a["getDate"]()), 2) + _0x2a9c6e(String(_0x5cba9a["getHours"]()), 2) + _0x2a9c6e(String(_0x5cba9a["getMinutes"]()), 2) + _0x2a9c6e(String(_0x5cba9a["getSeconds"]()), 2);
        
              if (true === _0x54ca82) {
                var _0x53fec8 = _0x5cba9a["getMilliseconds"]();
        
                if (0 != _0x53fec8) {
                  var _0x3a9091 = _0x2a9c6e(String(_0x53fec8), 3);
        
                  _0x181800 = _0x181800 + "." + (_0x3a9091 = _0x3a9091["replace"](/[0]+$/, ""));
                }
              }
        
              return _0x181800 + "Z";
            };
        
            this["zeroPadding"] = function (_0x568a80, _0x3b884c) {
              return _0x568a80["length"] >= _0x3b884c ? _0x568a80 : new Array(_0x3b884c - _0x568a80["length"] + 1)["join"]("0") + _0x568a80;
            };
        
            this["getString"] = function () {
              return this["s"];
            };
        
            this["setString"] = function (_0x4d7947) {
              this["hTLV"] = null, this["isModified"] = true, this["s"] = _0x4d7947, this["hV"] = stohex(_0x4d7947);
            };
        
            this["setByDateValue"] = function (_0x4763a7, _0x4ee5a5, _0x4b49e3, _0x4751e7, _0x442a39, _0x11000f) {
              var _0x35b914 = new Date(Date["UTC"](_0x4763a7, _0x4ee5a5 - 1, _0x4b49e3, _0x4751e7, _0x442a39, _0x11000f, 0));
        
              this["setByDate"](_0x35b914);
            };
        
            this["getFreshValueHex"] = function () {
              return this["hV"];
            };
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERAbstractTime"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERAbstractStructured"] = function (_0x67861f) {
            _0x2f02a5["asn1"]["DERAbstractString"]["superclass"]["constructor"]["call"](this), this["setByASN1ObjectArray"] = function (_0x22cc43) {
              this["hTLV"] = null, this["isModified"] = true, this["asn1Array"] = _0x22cc43;
            }, this["appendASN1Object"] = function (_0xe45ec3) {
              this["hTLV"] = null, this["isModified"] = true, this["asn1Array"]["push"](_0xe45ec3);
            }, this["asn1Array"] = new Array(), undefined !== _0x67861f && undefined !== _0x67861f["array"] && (this["asn1Array"] = _0x67861f["array"]);
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERAbstractStructured"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERBoolean"] = function () {
            _0x2f02a5["asn1"]["DERBoolean"]["superclass"]["constructor"]["call"](this), this["hT"] = "01", this["hTLV"] = "0101ff";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERBoolean"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERInteger"] = function (_0x308af7) {
            _0x2f02a5["asn1"]["DERInteger"]["superclass"]["constructor"]["call"](this), this["hT"] = "02", this["setByBigInteger"] = function (_0x271a44) {
              this["hTLV"] = null, this["isModified"] = true, this["hV"] = _0x2f02a5["asn1"]["ASN1Util"]["bigIntToMinTwosComplementsHex"](_0x271a44);
            }, this["setByInteger"] = function (_0x3a56cd) {
              var _0x38e81a = new _0x2935af(String(_0x3a56cd), 10);
        
              this["setByBigInteger"](_0x38e81a);
            }, this["setValueHex"] = function (_0x11c150) {
              this["hV"] = _0x11c150;
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x308af7 && (undefined !== _0x308af7["bigint"] ? this["setByBigInteger"](_0x308af7["bigint"]) : undefined !== _0x308af7["int"] ? this["setByInteger"](_0x308af7["int"]) : "number" == typeof _0x308af7 ? this["setByInteger"](_0x308af7) : undefined !== _0x308af7["hex"] && this["setValueHex"](_0x308af7["hex"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERInteger"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERBitString"] = function (_0x14b5e6) {
            if (undefined !== _0x14b5e6 && undefined !== _0x14b5e6["obj"]) {
              var _0x42353f = _0x2f02a5["asn1"]["ASN1Util"]["newObject"](_0x14b5e6["obj"]);
        
              _0x14b5e6["hex"] = "00" + _0x42353f["getEncodedHex"]();
            }
        
            _0x2f02a5["asn1"]["DERBitString"]["superclass"]["constructor"]["call"](this), this["hT"] = "03", this["setHexValueIncludingUnusedBits"] = function (_0x349c4d) {
              this["hTLV"] = null, this["isModified"] = true, this["hV"] = _0x349c4d;
            }, this["setUnusedBitsAndHexValue"] = function (_0x4ef8fc, _0x444664) {
              if (_0x4ef8fc < 0 || 7 < _0x4ef8fc) {
                throw "unused bits shall be from 0 to 7: u = " + _0x4ef8fc;
              }
        
              var _0x3fb86b = "0" + _0x4ef8fc;
        
              this["hTLV"] = null, this["isModified"] = true, this["hV"] = _0x3fb86b + _0x444664;
            }, this["setByBinaryString"] = function (_0x1c0556) {
              var _0x483edc = 8 - (_0x1c0556 = _0x1c0556["replace"](/0+$/, ""))["length"] % 8;
        
              8 == _0x483edc && (_0x483edc = 0);
        
              for (var _0x2e0909 = 0; _0x2e0909 <= _0x483edc; _0x2e0909++) _0x1c0556 += "0";
        
              var _0x56ee31 = "";
        
              for (_0x2e0909 = 0; _0x2e0909 < _0x1c0556["length"] - 1; _0x2e0909 += 8) {
                var _0x23450d = _0x1c0556["substr"](_0x2e0909, 8),
                    _0x265248 = parseInt(_0x23450d, 2)["toString"](16);
        
                1 == _0x265248["length"] && (_0x265248 = "0" + _0x265248), _0x56ee31 += _0x265248;
              }
        
              this["hTLV"] = null, this["isModified"] = true, this["hV"] = "0" + _0x483edc + _0x56ee31;
            }, this["setByBooleanArray"] = function (_0x431fb6) {
              for (var _0x2e32c5 = "", _0x2d85d7 = 0; _0x2d85d7 < _0x431fb6["length"]; _0x2d85d7++) _0x2e32c5 += 1 == _0x431fb6[_0x2d85d7] ? "1" : "0";
        
              this["setByBinaryString"](_0x2e32c5);
            }, this["newFalseArray"] = function (_0x344f8f) {
              for (var _0x540ed4 = new Array(_0x344f8f), _0x50e039 = 0; _0x50e039 < _0x344f8f; _0x50e039++) _0x540ed4[_0x50e039] = false;
        
              return _0x540ed4;
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x14b5e6 && ("string" == typeof _0x14b5e6 && _0x14b5e6["toLowerCase"]()["match"](/^[0-9a-f]+$/) ? this["setHexValueIncludingUnusedBits"](_0x14b5e6) : undefined !== _0x14b5e6["hex"] ? this["setHexValueIncludingUnusedBits"](_0x14b5e6["hex"]) : undefined !== _0x14b5e6["bin"] ? this["setByBinaryString"](_0x14b5e6["bin"]) : undefined !== _0x14b5e6["array"] && this["setByBooleanArray"](_0x14b5e6["array"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERBitString"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DEROctetString"] = function (_0x443077) {
            if (undefined !== _0x443077 && undefined !== _0x443077["obj"]) {
              var _0xe36981 = _0x2f02a5["asn1"]["ASN1Util"]["newObject"](_0x443077["obj"]);
        
              _0x443077["hex"] = _0xe36981["getEncodedHex"]();
            }
        
            _0x2f02a5["asn1"]["DEROctetString"]["superclass"]["constructor"]["call"](this, _0x443077), this["hT"] = "04";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DEROctetString"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERNull"] = function () {
            _0x2f02a5["asn1"]["DERNull"]["superclass"]["constructor"]["call"](this), this["hT"] = "05", this["hTLV"] = "0500";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERNull"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERObjectIdentifier"] = function (_0x45f0a0) {
            var _0x9f399 = function (_0x2bd6b2) {
              var _0x491b72 = _0x2bd6b2["toString"](16);
        
              return 1 == _0x491b72["length"] && (_0x491b72 = "0" + _0x491b72), _0x491b72;
            },
                _0x5949c2 = function (_0x4722d4) {
              var _0x1898e = "",
                  _0x45a4ff = new _0x2935af(_0x4722d4, 10)["toString"](2),
                  _0x24b6ed = 7 - _0x45a4ff["length"] % 7;
        
              7 == _0x24b6ed && (_0x24b6ed = 0);
        
              for (var _0x1094f0 = "", _0x5c3350 = 0; _0x5c3350 < _0x24b6ed; _0x5c3350++) _0x1094f0 += "0";
        
              for (_0x45a4ff = _0x1094f0 + _0x45a4ff, _0x5c3350 = 0; _0x5c3350 < _0x45a4ff["length"] - 1; _0x5c3350 += 7) {
                var _0x520ee5 = _0x45a4ff["substr"](_0x5c3350, 7);
        
                _0x5c3350 != _0x45a4ff["length"] - 7 && (_0x520ee5 = "1" + _0x520ee5), _0x1898e += _0x9f399(parseInt(_0x520ee5, 2));
              }
        
              return _0x1898e;
            };
        
            _0x2f02a5["asn1"]["DERObjectIdentifier"]["superclass"]["constructor"]["call"](this), this["hT"] = "06", this["setValueHex"] = function (_0x26f4c9) {
              this["hTLV"] = null, this["isModified"] = true, this["s"] = null, this["hV"] = _0x26f4c9;
            }, this["setValueOidString"] = function (_0x25cb5a) {
              if (!_0x25cb5a["match"](/^[0-9.]+$/)) {
                throw "malformed oid string: " + _0x25cb5a;
              }
        
              var _0x2614db = "",
                  _0x492f86 = _0x25cb5a["split"]("."),
                  _0x424dce = 40 * parseInt(_0x492f86[0]) + parseInt(_0x492f86[1]);
        
              _0x2614db += _0x9f399(_0x424dce), _0x492f86["splice"](0, 2);
        
              for (var _0x25c285 = 0; _0x25c285 < _0x492f86["length"]; _0x25c285++) _0x2614db += _0x5949c2(_0x492f86[_0x25c285]);
        
              this["hTLV"] = null, this["isModified"] = true, this["s"] = null, this["hV"] = _0x2614db;
            }, this["setValueName"] = function (_0x2eae42) {
              var _0x14d959 = _0x2f02a5["asn1"]["x509"]["OID"]["name2oid"](_0x2eae42);
        
              if ("" === _0x14d959) {
                throw "DERObjectIdentifier oidName undefined: " + _0x2eae42;
              }
        
              this["setValueOidString"](_0x14d959);
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x45f0a0 && ("string" == typeof _0x45f0a0 ? _0x45f0a0["match"](/^[0-2].[0-9.]+$/) ? this["setValueOidString"](_0x45f0a0) : this["setValueName"](_0x45f0a0) : undefined !== _0x45f0a0["oid"] ? this["setValueOidString"](_0x45f0a0["oid"]) : undefined !== _0x45f0a0["hex"] ? this["setValueHex"](_0x45f0a0["hex"]) : undefined !== _0x45f0a0["name"] && this["setValueName"](_0x45f0a0["name"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERObjectIdentifier"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DEREnumerated"] = function (_0x37e6d7) {
            _0x2f02a5["asn1"]["DEREnumerated"]["superclass"]["constructor"]["call"](this), this["hT"] = "0a", this["setByBigInteger"] = function (_0x31f2a7) {
              this["hTLV"] = null, this["isModified"] = true, this["hV"] = _0x2f02a5["asn1"]["ASN1Util"]["bigIntToMinTwosComplementsHex"](_0x31f2a7);
            }, this["setByInteger"] = function (_0x3674ed) {
              var _0x4a14b7 = new _0x2935af(String(_0x3674ed), 10);
        
              this["setByBigInteger"](_0x4a14b7);
            }, this["setValueHex"] = function (_0x3da022) {
              this["hV"] = _0x3da022;
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x37e6d7 && (undefined !== _0x37e6d7["int"] ? this["setByInteger"](_0x37e6d7["int"]) : "number" == typeof _0x37e6d7 ? this["setByInteger"](_0x37e6d7) : undefined !== _0x37e6d7["hex"] && this["setValueHex"](_0x37e6d7["hex"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DEREnumerated"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          _0x2f02a5["asn1"]["DERUTF8String"] = function (_0x367654) {
            _0x2f02a5["asn1"]["DERUTF8String"]["superclass"]["constructor"]["call"](this, _0x367654), this["hT"] = "0c";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERUTF8String"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERNumericString"] = function (_0x102996) {
            _0x2f02a5["asn1"]["DERNumericString"]["superclass"]["constructor"]["call"](this, _0x102996), this["hT"] = "12";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERNumericString"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERPrintableString"] = function (_0x48a4e8) {
            _0x2f02a5["asn1"]["DERPrintableString"]["superclass"]["constructor"]["call"](this, _0x48a4e8), this["hT"] = "13";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERPrintableString"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERTeletexString"] = function (_0x51e1c4) {
            _0x2f02a5["asn1"]["DERTeletexString"]["superclass"]["constructor"]["call"](this, _0x51e1c4), this["hT"] = "14";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERTeletexString"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERIA5String"] = function (_0x41620d) {
            _0x2f02a5["asn1"]["DERIA5String"]["superclass"]["constructor"]["call"](this, _0x41620d), this["hT"] = "16";
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERIA5String"], _0x2f02a5["asn1"]["DERAbstractString"]);
        
          _0x2f02a5["asn1"]["DERUTCTime"] = function (_0x2556d3) {
            _0x2f02a5["asn1"]["DERUTCTime"]["superclass"]["constructor"]["call"](this, _0x2556d3), this["hT"] = "17", this["setByDate"] = function (_0x5b710b) {
              this["hTLV"] = null, this["isModified"] = true, this["date"] = _0x5b710b, this["s"] = this["formatDate"](this["date"], "utc"), this["hV"] = stohex(this["s"]);
            }, this["getFreshValueHex"] = function () {
              return undefined === this["date"] && undefined === this["s"] && (this["date"] = new Date(), this["s"] = this["formatDate"](this["date"], "utc"), this["hV"] = stohex(this["s"])), this["hV"];
            }, undefined !== _0x2556d3 && (undefined !== _0x2556d3["str"] ? this["setString"](_0x2556d3["str"]) : "string" == typeof _0x2556d3 && _0x2556d3["match"](/^[0-9]{12}Z$/) ? this["setString"](_0x2556d3) : undefined !== _0x2556d3["hex"] ? this["setStringHex"](_0x2556d3["hex"]) : undefined !== _0x2556d3["date"] && this["setByDate"](_0x2556d3["date"]));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERUTCTime"], _0x2f02a5["asn1"]["DERAbstractTime"]);
        
          _0x2f02a5["asn1"]["DERGeneralizedTime"] = function (_0x4bf687) {
            _0x2f02a5["asn1"]["DERGeneralizedTime"]["superclass"]["constructor"]["call"](this, _0x4bf687);
        
            this["hT"] = "18";
            this["withMillis"] = false;
        
            this["setByDate"] = function (_0x246a1b) {
              this["hTLV"] = null, this["isModified"] = true, this["date"] = _0x246a1b, this["s"] = this["formatDate"](this["date"], "gen", this["withMillis"]), this["hV"] = stohex(this["s"]);
            };
        
            this["getFreshValueHex"] = function () {
              return undefined === this["date"] && undefined === this["s"] && (this["date"] = new Date(), this["s"] = this["formatDate"](this["date"], "gen", this["withMillis"]), this["hV"] = stohex(this["s"])), this["hV"];
            };
        
            undefined !== _0x4bf687 && (undefined !== _0x4bf687["str"] ? this["setString"](_0x4bf687["str"]) : "string" == typeof _0x4bf687 && _0x4bf687["match"](/^[0-9]{14}Z$/) ? this["setString"](_0x4bf687) : undefined !== _0x4bf687["hex"] ? this["setStringHex"](_0x4bf687["hex"]) : undefined !== _0x4bf687["date"] && this["setByDate"](_0x4bf687["date"]), true === _0x4bf687["millis"] && (this["withMillis"] = true));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERGeneralizedTime"], _0x2f02a5["asn1"]["DERAbstractTime"]);
        
          _0x2f02a5["asn1"]["DERSequence"] = function (_0x126f30) {
            _0x2f02a5["asn1"]["DERSequence"]["superclass"]["constructor"]["call"](this, _0x126f30), this["hT"] = "30", this["getFreshValueHex"] = function () {
              for (var _0x126f30 = "", _0x184d55 = 0; _0x184d55 < this["asn1Array"]["length"]; _0x184d55++) _0x126f30 += this["asn1Array"][_0x184d55]["getEncodedHex"]();
        
              return this["hV"] = _0x126f30, this["hV"];
            };
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERSequence"], _0x2f02a5["asn1"]["DERAbstractStructured"]);
        
          _0x2f02a5["asn1"]["DERSet"] = function (_0x58d390) {
            _0x2f02a5["asn1"]["DERSet"]["superclass"]["constructor"]["call"](this, _0x58d390), this["hT"] = "31", this["sortFlag"] = true, this["getFreshValueHex"] = function () {
              for (var _0x58d390 = new Array(), _0x4efcb8 = 0; _0x4efcb8 < this["asn1Array"]["length"]; _0x4efcb8++) _0x58d390["push"](this["asn1Array"][_0x4efcb8]["getEncodedHex"]());
        
              return 1 == this["sortFlag"] && _0x58d390["sort"](), this["hV"] = _0x58d390["join"](""), this["hV"];
            }, undefined !== _0x58d390 && undefined !== _0x58d390["sortflag"] && 0 == _0x58d390["sortflag"] && (this["sortFlag"] = false);
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERSet"], _0x2f02a5["asn1"]["DERAbstractStructured"]);
        
          _0x2f02a5["asn1"]["DERTaggedObject"] = function (_0x1351db) {
            _0x2f02a5["asn1"]["DERTaggedObject"]["superclass"]["constructor"]["call"](this), this["hT"] = "a0", this["hV"] = "", this["isExplicit"] = true, this["asn1Object"] = null, this["setASN1Object"] = function (_0x244761, _0x5b13dd, _0x433a39) {
              this["hT"] = _0x5b13dd, this["isExplicit"] = _0x244761, this["asn1Object"] = _0x433a39, this["isExplicit"] ? (this["hV"] = this["asn1Object"]["getEncodedHex"](), this["hTLV"] = null, this["isModified"] = true) : (this["hV"] = null, this["hTLV"] = _0x433a39["getEncodedHex"](), this["hTLV"] = this["hTLV"]["replace"](/^../, _0x5b13dd), this["isModified"] = false);
            }, this["getFreshValueHex"] = function () {
              return this["hV"];
            }, undefined !== _0x1351db && (undefined !== _0x1351db["tag"] && (this["hT"] = _0x1351db["tag"]), undefined !== _0x1351db["explicit"] && (this["isExplicit"] = _0x1351db["explicit"]), undefined !== _0x1351db["obj"] && (this["asn1Object"] = _0x1351db["obj"], this["setASN1Object"](this["isExplicit"], this["hT"], this["asn1Object"])));
          };
        
          _0x1bbd98["lang"]["extend"](_0x2f02a5["asn1"]["DERTaggedObject"], _0x2f02a5["asn1"]["ASN1Object"]);
        
          var _0x41a492 = function (_0x33a578) {
            function _0xb3f6eb(_0x24d672) {
              var _0xe964c2 = _0x33a578["call"](this) || this;
        
              return _0x24d672 && ("string" == typeof _0x24d672 ? _0xe964c2["parseKey"](_0x24d672) : (_0xb3f6eb["hasPrivateKeyProperty"](_0x24d672) || _0xb3f6eb["hasPublicKeyProperty"](_0x24d672)) && _0xe964c2["parsePropertiesFrom"](_0x24d672)), _0xe964c2;
            }
        
            return function (_0xddeca, _0x357b27) {
              function _0x814063() {
                this["constructor"] = _0xddeca;
              }
        
              _0x556c8d(_0xddeca, _0x357b27), _0xddeca["prototype"] = null === _0x357b27 ? Object["create"](_0x357b27) : (_0x814063["prototype"] = _0x357b27["prototype"], new _0x814063());
            }(_0xb3f6eb, _0x33a578), _0xb3f6eb["prototype"]["parseKey"] = function (_0x2abee0) {
              try {
                var _0x53ddf0 = 0,
                    _0x286e7e = 0,
                    _0x39332d = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/["test"](_0x2abee0) ? function (_0x4274ca) {
                  var _0xa344d5;
        
                  if (undefined === _0x465910) {
                    var _0x1e7d98 = "0123456789ABCDEF",
                        _0x2d9fcf = " \f\n\r\t \u2028\u2029";
        
                    for (_0x465910 = {}, _0xa344d5 = 0; _0xa344d5 < 16; ++_0xa344d5) _0x465910[_0x1e7d98["charAt"](_0xa344d5)] = _0xa344d5;
        
                    for (_0x1e7d98 = _0x1e7d98["toLowerCase"](), _0xa344d5 = 10; _0xa344d5 < 16; ++_0xa344d5) _0x465910[_0x1e7d98["charAt"](_0xa344d5)] = _0xa344d5;
        
                    for (_0xa344d5 = 0; _0xa344d5 < _0x2d9fcf["length"]; ++_0xa344d5) _0x465910[_0x2d9fcf["charAt"](_0xa344d5)] = -1;
                  }
        
                  var _0x3ee697 = [],
                      _0x13a5fe = 0,
                      _0x111111 = 0;
        
                  for (_0xa344d5 = 0; _0xa344d5 < _0x4274ca["length"]; ++_0xa344d5) {
                    var _0x5947c6 = _0x4274ca["charAt"](_0xa344d5);
        
                    if ("=" == _0x5947c6) {
                      break;
                    }
        
                    if (-1 != (_0x5947c6 = _0x465910[_0x5947c6])) {
                      if (undefined === _0x5947c6) {
                        throw new Error("Illegal character at offset " + _0xa344d5);
                      }
        
                      _0x13a5fe |= _0x5947c6, 2 <= ++_0x111111 ? (_0x3ee697[_0x3ee697["length"]] = _0x13a5fe, _0x111111 = _0x13a5fe = 0) : _0x13a5fe <<= 4;
                    }
                  }
        
                  if (_0x111111) {
                    throw new Error("Hex encoding incomplete: 4 bits missing");
                  }
        
                  return _0x3ee697;
                }(_0x2abee0) : _0x5a02a1["unarmor"](_0x2abee0),
                    _0x264f38 = _0x408860["decode"](_0x39332d);
        
                if (3 === _0x264f38["sub"]["length"] && (_0x264f38 = _0x264f38["sub"][2]["sub"][0]), 9 === _0x264f38["sub"]["length"]) {
                  _0x53ddf0 = _0x264f38["sub"][1]["getHexStringValue"](), this["n"] = _0x5baf06(_0x53ddf0, 16), _0x286e7e = _0x264f38["sub"][2]["getHexStringValue"](), this["e"] = parseInt(_0x286e7e, 16);
        
                  var _0x3efe14 = _0x264f38["sub"][3]["getHexStringValue"]();
        
                  this["d"] = _0x5baf06(_0x3efe14, 16);
        
                  var _0x5a91df = _0x264f38["sub"][4]["getHexStringValue"]();
        
                  this["p"] = _0x5baf06(_0x5a91df, 16);
        
                  var _0x356d93 = _0x264f38["sub"][5]["getHexStringValue"]();
        
                  this["q"] = _0x5baf06(_0x356d93, 16);
        
                  var _0x5486e5 = _0x264f38["sub"][6]["getHexStringValue"]();
        
                  this["dmp1"] = _0x5baf06(_0x5486e5, 16);
        
                  var _0x21f4cd = _0x264f38["sub"][7]["getHexStringValue"]();
        
                  this["dmq1"] = _0x5baf06(_0x21f4cd, 16);
        
                  var _0x2d2630 = _0x264f38["sub"][8]["getHexStringValue"]();
        
                  this["coeff"] = _0x5baf06(_0x2d2630, 16);
                } else {
                  if (2 !== _0x264f38["sub"]["length"]) {
                    return false;
                  }
        
                  var _0x277925 = _0x264f38["sub"][1]["sub"][0];
                  _0x53ddf0 = _0x277925["sub"][0]["getHexStringValue"](), this["n"] = _0x5baf06(_0x53ddf0, 16), _0x286e7e = _0x277925["sub"][1]["getHexStringValue"](), this["e"] = parseInt(_0x286e7e, 16);
                }
        
                return true;
              } catch (_0xb7285e) {
                return false;
              }
            }, _0xb3f6eb["prototype"]["getPrivateBaseKey"] = function () {
              var _0x33a578 = {
                "array": [new _0x2f02a5["asn1"]["DERInteger"]({
                  "int": 0
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["n"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "int": this["e"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["d"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["p"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["q"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["dmp1"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["dmq1"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["coeff"]
                })]
              };
              return new _0x2f02a5["asn1"]["DERSequence"](_0x33a578)["getEncodedHex"]();
            }, _0xb3f6eb["prototype"]["getPrivateBaseKeyB64"] = function () {
              return _0x125db2(this["getPrivateBaseKey"]());
            }, _0xb3f6eb["prototype"]["getPublicBaseKey"] = function () {
              var _0x33a578 = new _0x2f02a5["asn1"]["DERSequence"]({
                "array": [new _0x2f02a5["asn1"]["DERObjectIdentifier"]({
                  "oid": "1.2.840.113549.1.1.1"
                }), new _0x2f02a5["asn1"]["DERNull"]()]
              }),
                  _0x48af93 = new _0x2f02a5["asn1"]["DERSequence"]({
                "array": [new _0x2f02a5["asn1"]["DERInteger"]({
                  "bigint": this["n"]
                }), new _0x2f02a5["asn1"]["DERInteger"]({
                  "int": this["e"]
                })]
              }),
                  _0x25edbb = new _0x2f02a5["asn1"]["DERBitString"]({
                "hex": "00" + _0x48af93["getEncodedHex"]()
              });
        
              return new _0x2f02a5["asn1"]["DERSequence"]({
                "array": [_0x33a578, _0x25edbb]
              })["getEncodedHex"]();
            }, _0xb3f6eb["prototype"]["getPublicBaseKeyB64"] = function () {
              return _0x125db2(this["getPublicBaseKey"]());
            }, _0xb3f6eb["wordwrap"] = function (_0x469c11, _0x2f5bfa) {
              if (!_0x469c11) {
                return _0x469c11;
              }
        
              var _0x37b50e = "(.{1," + (_0x2f5bfa = _0x2f5bfa || 64) + "})( +|$\n?)|(.{1," + _0x2f5bfa + "})";
        
              return _0x469c11["match"](RegExp(_0x37b50e, "g"))["join"]("\n");
            }, _0xb3f6eb["prototype"]["getPrivateKey"] = function () {
              var _0x33a578 = "-----BEGIN RSA PRIVATE KEY-----\n";
              return (_0x33a578 += _0xb3f6eb["wordwrap"](this["getPrivateBaseKeyB64"]()) + "\n") + "-----END RSA PRIVATE KEY-----";
            }, _0xb3f6eb["prototype"]["getPublicKey"] = function () {
              var _0x33a578 = "-----BEGIN PUBLIC KEY-----\n";
              return (_0x33a578 += _0xb3f6eb["wordwrap"](this["getPublicBaseKeyB64"]()) + "\n") + "-----END PUBLIC KEY-----";
            }, _0xb3f6eb["hasPublicKeyProperty"] = function (_0x32bb2b) {
              return (_0x32bb2b = _0x32bb2b || {})["hasOwnProperty"]("n") && _0x32bb2b["hasOwnProperty"]("e");
            }, _0xb3f6eb["hasPrivateKeyProperty"] = function (_0x101d27) {
              return (_0x101d27 = _0x101d27 || {})["hasOwnProperty"]("n") && _0x101d27["hasOwnProperty"]("e") && _0x101d27["hasOwnProperty"]("d") && _0x101d27["hasOwnProperty"]("p") && _0x101d27["hasOwnProperty"]("q") && _0x101d27["hasOwnProperty"]("dmp1") && _0x101d27["hasOwnProperty"]("dmq1") && _0x101d27["hasOwnProperty"]("coeff");
            }, _0xb3f6eb["prototype"]["parsePropertiesFrom"] = function (_0x19affd) {
              this["n"] = _0x19affd["n"], this["e"] = _0x19affd["e"], _0x19affd["hasOwnProperty"]("d") && (this["d"] = _0x19affd["d"], this["p"] = _0x19affd["p"], this["q"] = _0x19affd["q"], this["dmp1"] = _0x19affd["dmp1"], this["dmq1"] = _0x19affd["dmq1"], this["coeff"] = _0x19affd["coeff"]);
            }, _0xb3f6eb;
          }(_0x56aa3c),
              _0x4b4d2c = function () {
            function _0x2f9c92(_0x19a9fb) {
              _0x19a9fb = _0x19a9fb || {}, this["default_key_size"] = parseInt(_0x19a9fb["default_key_size"], 10) || 1024, this["default_public_exponent"] = _0x19a9fb["default_public_exponent"] || "010001", this["log"] = _0x19a9fb["log"] || false, this["key"] = null;
            }
        
            return _0x2f9c92["prototype"]["setKey"] = function (_0x1faf93) {
              this["log"] && this["key"] && console["warn"]("A key was already set, overriding existing."), this["key"] = new _0x41a492(_0x1faf93);
            }, _0x2f9c92["prototype"]["setPrivateKey"] = function (_0x40b233) {
              this["setKey"](_0x40b233);
            }, _0x2f9c92["prototype"]["setPublicKey"] = function (_0x3346c5) {
              this["setKey"](_0x3346c5);
            }, _0x2f9c92["prototype"]["decrypt"] = function (_0x5bbfaf) {
              try {
                return this["getKey"]()["decrypt"](_0x5c2128(_0x5bbfaf));
              } catch (_0x47bbe7) {
                return false;
              }
            }, _0x2f9c92["prototype"]["encrypt"] = function (_0x4c98fe) {
              try {
                return _0x125db2(this["getKey"]()["encrypt"](_0x4c98fe));
              } catch (_0x206989) {
                return false;
              }
            }, _0x2f9c92["prototype"]["sign"] = function (_0x42cd43, _0x32d28f, _0x2a76ad) {
              try {
                return _0x125db2(this["getKey"]()["sign"](_0x42cd43, _0x32d28f, _0x2a76ad));
              } catch (_0x40c544) {
                return false;
              }
            }, _0x2f9c92["prototype"]["verify"] = function (_0x4d5b24, _0x78dca0, _0x9fcf29) {
              try {
                return this["getKey"]()["verify"](_0x4d5b24, _0x5c2128(_0x78dca0), _0x9fcf29);
              } catch (_0x80a5ee) {
                return false;
              }
            }, _0x2f9c92["prototype"]["getKey"] = function (_0x3bdda3) {
              if (!this["key"]) {
                if (this["key"] = new _0x41a492(), _0x3bdda3 && "[object Function]" === {}["toString"]["call"](_0x3bdda3)) {
                  return undefined;
                }
        
                this["key"]["generate"](this["default_key_size"], this["default_public_exponent"]);
              }
        
              return this["key"];
            }, _0x2f9c92["prototype"]["getPrivateKey"] = function () {
              return this["getKey"]()["getPrivateKey"]();
            }, _0x2f9c92["prototype"]["getPrivateKeyB64"] = function () {
              return this["getKey"]()["getPrivateBaseKeyB64"]();
            }, _0x2f9c92["prototype"]["getPublicKey"] = function () {
              return this["getKey"]()["getPublicKey"]();
            }, _0x2f9c92["prototype"]["getPublicKeyB64"] = function () {
              return this["getKey"]()["getPublicBaseKeyB64"]();
            }, _0x2f9c92["version"] = "3.0.0-rc.1", _0x2f9c92;
          }();
        
          window["JSEncrypt"] = _0x4b4d2c, _0x20544c["JSEncrypt"] = _0x4b4d2c, _0x20544c["default"] = _0x4b4d2c, Object["defineProperty"](_0x20544c, "__esModule", {
            "value": true
          });
        });
        
        function _0x4f6d79(_0x50f9fa) {
          const _0x506402 = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5GVku07yXCndaMS1evPIPyWwhbdWMVRqL4qg4OsKbzyTGmV4YkG8H0hwwrFLuPhqC5tL136aaizuL/lN5DRRbePct6syILOLLCBJ5J5rQyGr00l1zQvdNKYp4tT5EFlqw8tlPkibcsd5Ecc8sTYa77HxNeIa6DRuObC5H9t85ALJyDVZC3Y4ES/u61Q7LDnB3kG9MnXJsJiQxm1pLkE7Zfxy29d5JaXbbfwhCDSjE4+dUQoq2MVIt2qVjZSo5Hd/bAFGU1Lmc7GkFeLiLjNTOfECF52ms/dks92Wx/glfRuK4h/fcxtGB4Q2VXu5k68e/2uojs6jnFsMKVe+FVUDkQIDAQAB";
        
          const _0xc7daa3 = new JSEncrypt();
        
          _0xc7daa3["setPublicKey"](_0x506402);
        
          return encodeURIComponent(_0xc7daa3["encrypt"](_0x50f9fa));
        }
        
        window["decrypt"] = _0x4f6d79;


        此時這個js只是一部分,還有當面的js,將他們拼接在一起
        這里的js會有一個環境的檢驗。所以要用replace將他替換掉,最終的請求代碼
        [Python] 純文本查看 復制代碼
        import requests
        import re
        import os
        
        def main():
            with open('0901.js', 'r', encoding='utf-8') as f:
                script1 = f.read()
            url = 'http://match.yuanrenxue.com/match/9'
            response = requests.get(url)
            sessionid = re.findall('(?<=sessionid=).+?(?=;)', response.headers['Set-Cookie'])[0]
            script2 = re.findall('(?<=<script type="application/javascript">).+?(?=</script>)', response.text)[0].replace("global", 'yuge')
            with open('0902.js', 'w', encoding='utf-8') as f:
                f.write(script1+'\n')
                f.write(script2+'\n')
                f.write('console.log(document.cookie);')
                f.write('process.exit();')
            nodejs = os.popen('node 0902')
            cookie = nodejs.read().replace('\n', '').replace('; path=/', '')
            nodejs.close()
            nums = 0
            sums = 0
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/api/match/9?page='+str(page)
                headers = {
                    'cookie': 'sessionid='+sessionid+'; '+cookie,
                    'User-Agent': 'yuanrenxue.project'
                }
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    nums += 1
                    sums += each['value']
        
            print(nums)
            print(sums)
            print(sums // nums)
            # 店鋪數:50
            # 總評論數:245000
            # 平均評論數:4900
        
        if __name__ == '__main__':
            main()


        第十題【接口-查詢參數-值加密】
        打開瀏覽器f12抓包,然后打開第十題。

        此時會在這個地方斷下,如果直接禁用斷點,然后繼續執行,瀏覽器會異?D,甚至崩潰,所以此時先改用Fiddler.exe進行抓包
        因為過程過于繁瑣,所以這里先貼出答案
        保存js內容為【10.js】
        [JavaScript] 純文本查看 復制代碼
        window = global
        
        var _yrxQ9C = ["call", "slice", "prototype", "type", "href", "floor", "string", "tylctrlaz}", "concat", "createElement", "readyState", "$_fr", "button", "removeChild", "safari", "$_fpn1", "clientData", "localStorage", "stringify", "onsuccess", "location", "getElementById", "submit", "hidden", "setAttribute", "http:", "open", "HTMLFormElement", "target", "style", "documentElement", "round", "apply", "hostname", "hasOwnProperty", "$_f1", "onreadystatechange", "FSSBB", "innerHTML", "setTimeout", "cookie", "addEventListener", "$_JQnh", "clearInterval", "visibility", "send", "charCodeAt", "protocol", "userAgent", "host", "$_f0", "getElementsByTagName", "EkcP", "load", "https:", "ceil", "pathname", "data", "toString", "document", "$_fh0", "$_vvCI", "port", "appVersion", "splice", "MicroMessenger", "number", "search", "indexedDB", "getTime", "replace", "transaction", "match", "indexOf", "keydown", "keyCode", "name", "$_cDro", "Math", "Request", "script", "appendChild", "___ts___", "removeEventListener", "origin", "fonts", "getAttribute", "ActiveXObject", "result", "$b_callHandler", "input", "timeStamp", "canvas", "setInterval", "body", "XMLHttpRequest", "function", "getContext", "fromCharCode", "split", "isFinite", "chrome", "decodeURIComponent", "nDhzt|Gz~vUDhzt|Gz~v", "Object.InjectedScript.evaluate", "jbscheme://", "GetAllResponseHeaders", "Keyboard", "Msxml2.XMLHTTP", "width", "forEach", "precision", "fontList", "bpa_aqhcfd+paannjrgdke", "/T7AyTrxoWxGd", "getClientDataInCookie", "dumpAll", "[native code]", "]><i></i><![endif]-->", "utf-8", "FSSBA", "offsetX", "charging", "vertexPosArray", "{8iep<mhisH8iep<mhisBxqC [gxmzi> )srxvsp BMLGfmxC", "test", "x>,@li.a{I|j~li", "clientInformation", "onerror", "webkitRTCPeerConnection", "shenjian", "mozItems", "INSERT OR REPLACE INTO EkcP_t (name, value) VALUES(?, ?)", "onbeforeunload", "serverData", "tagName", "$b_onBridgeReady", "createBuffer", "x@liA65vn6zn_>72:>._", "b;naidbs hc<\"aa71ji\" bk~rrhc<\"bkrhc92/4/e708,87a4,00be,aa71,//~~//acbd/a\" vhcsg<\"/ow\" gdhfgs<\"/ow\"=;.naidbs=", "GetResponseHeader", "onupgradeneeded", "ckqFgbbcl", "status", "enable=true", "DispatchEvent", "PerformanceObserver", "touchend", "touches", "standalone", "HIGH_FLOAT", "setClientData", "responseText", "Msxml2.XMLHTTP.4.0", "parentElement", "ht\\lW\\Tgxmbo| zh{|\\]\\lWv", "charAt", "alpha", "CREATE TABLE IF NOT EXISTS EkcP_t (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", "Microsoft.XMLHTTP", "cookieEnabled", "qrcklmDoExthWJiHAp1sVYKU3RFMQw8IGfPO92bvLNj.7zXBaSnu0TC6gy_4Ze5d{}|~ !#$%()*+,-;=?@[]^", "webstore", "fM~zgKgzt~m", "iz{nay{eglagf", "@debugger", "bindBuffer", "qfwcwpwzwdiqvo|us", "screenY", "(evaluating 'null[0]')", "__anchor__", "mouseOver", "Gamepad", "Msxml2.XMLHTTP.5.0", "bb82kj", "createShader", "loaded", "x__:=9__1884_78=2/2.;", "none", "TRIANGLE_STRIP", "rzb2arqr{cvnyb", " height=6 width=1 type=application/x-shockwave-flash src=", "ARSession,AudioTrackList,BeforeInstallPromptEvent.prototype.KEYUP,BlobDownloadCallback,CDATASection.prototype.remove,CSSCharsetRule,CSSPrimitiveValue.CSS_VH,CanvasRenderingContext2D.prototype.webkitGetImageDataHD,ClickData,CloseEvent.prototype.initCloseEvent,Components.interfaces.ICometMarksExtension,DeviceOrientationEvent,Function.prototype.bind,GetPerfTests,HTMLDocument.prototype.createTouchList,HTMLFormElement.prototype.requestAutocomplete,HTMLFrameSetElement.prototype.hasPointerCapture,HTMLFrameSetElement.prototype.webkitRequestFullScreen,Intl,MTT_WKSetTextSizeIndex,MediaController,MediaEncryptedEvent,Notification,Object.prototype.__defineSetter__,Object.seal,Object.setPrototypeOf,OffscreenCanvasRenderingContext2D,Path2D.prototype.addPath,PaymentResponse,PerformancePaintTiming,PresentationConnectionCloseEvent,ReaderModeArticlePage,SVGGraphicsElement.prototype.mozRequestPointerLock,SVGPatternElement.SVG_UNIT_TYPE_OBJECTBOUNDINGBOX,ScreenOrientation,SogouLoginUtils,SourceBuffer,SourceBuffer.prototype.changeType,SpeechSynthesisUtterance,TextTrackList.prototype.getTrackById,UCWebExt,WebKitFlags,_WXJS,__~w}uXjihoo360_~w}QoP,__firefox__,__ksabCssCount,__opera,__sogou_secure_input,_double11_,chrome,chrome.app.InstallState,chrome.csi,console,defaultStatus,document.body.onmouseenter,document.body.onpage,document.body.style.backgroundBlendMode,document.body.style.lineBreak,document.body.style.minWidth,document.body.style.msTextSizeAdjust,document.body.style.textAlignLast,document.body.x-ms-acceleratorkey,document.defaultCharset,document.documentElement.onresize,document.fileCreatedDate,document.msCapsLockWarningOff,document.onmousemove,document.onselectionchange,document.scrollingElement.style.fontVariantNumeric,document.selection,document.selection.typeDetail,external,external.AddFavorite,external.IsSearchProviderInstalled,flyflow_wallpaper_js,getMatchedCSSRules,greentea,isNodeWhitespace,jesion,onerror,onmessage,onoperadetachedviewchange,openDatabase,password_manager_enabled,performance,showModalDialog,taobrowser_Event,weatherBridge,webkitAudioContext.prototype.close,webkitRequestFileSystem", "t~{t_szzvpoMxzg.ytxlatzy@al}aAtxpMxzg6yopepo1/Mxzg?p|bp~a.ytxlatzy3}lxp", "Msxml2.XMLHTTP.3.0", "getSources", "post", "mouseUp", "v>n8xk1ruu1x{v?xxuK>xpx~8|n", "FileReader", "msIndexedDB", "method", "readwrite", "bvdacqhudq", "parse", "t:zg.{{pl}lynp", "$_vJTp", "lineno", "data:", "charset", "rgba(240,110,53,0.4)", "Number", "DeviceMotionEvent", "mouseup", "Please enable cookie in your browser before you continue.", "mousedown", "windows-1252", "sessionStorage", "hzxeeIaxgmhfY_iaxgmhf", "onicecandidate", "content", "mimeTypes", "OPEN", "unicode", "null", "LOW_FLOAT", "n~bm;zuuva", "mGzcu}ksjw:~sgzVGzcu}ksjw:~sgz", "0000", "performance", "clientX", "useProgram", "beta", "touchmove", "sA{s{c", "h__fmm<k|xm|?kxf|Yfmm<nflmhfCL", "fillStyle", "cellular", "onload", "include", "linkProgram", "DeviceOrientationEvent", "parseInt", "jbscheme://queue_has_message", "toDataURL", "SEND", "escape", "addBehavior", "acceleration", "callback", "~snpdyE5fbm3mbzfs *I Zpouspm", "STATIC_DRAW", "Msxml2.XMLHTTP.6.0", "; expires=", "close", "getSupportedExtensions", "experimental-webgl", "getAllResponseHeaders", "#f82", "fillRect", "openDatabase", "meta", "eval", "$_YWTU", "y}khjxo|kxIk|gr{gzk", "<EMBED id=", "; Secure", "mouseMove", "toUpperCase", "([0-9]{1,3}(\\.[0-9]{1,3}){3}| (([0-9a-f]{1,4}:){7,7}[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,7}:|([0-9a-f]{1,4}:){1,6}:[0-9a-f]{1,4}|([0-9a-f]{1,4}:){1,5}(:[0-9a-f]{1,4}){1,2}|([0-9a-f]{1,4}:){1,4}(:[0-9a-f]{1,4}){1,3}|([0-9a-f]{1,4}:){1,3}(:[0-9a-f]{1,4}){1,4}|([0-9a-f]{1,4}:){1,2}(:[0-9a-f]{1,4}){1,5}|[0-9a-f]{1,4}:((:[0-9a-f]{1,4}){1,6})|:((:[0-9a-f]{1,4}){1,7}|:)|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-f]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])) )", "createOffer", "unescape", "nEvr}C}rlveUEvr}C}rlveOg~P 4tgzivK 6bageb} OZYTszgP", "{[gvs6*,H6*,", "{ettpmgexmsrI|Gwlsgo{eziGjpewl", "base", "dispatchEvent", "setRequestHeader", "z__iwn{jw_j{fqzfyjG__|jgiwn{jw_j{fqzfyjG__xjqjsnzr_j{fqzfyjG__k}iwn{jw_j{fqzfyjG__iwn{jw_zs|wfuujiG__|jgiwn{jw_zs|wfuujiG__xjqjsnzr_zs|wfuujiG__k}iwn{jw_zs|wfuujiG__|jgiwn{jw_xhwnuy_kzshG__|jgiwn{jw_xhwnuy_ks", "offsetWidth", "DOMParser", "TEMPORARY", "filename", "attrVertex", "Infinity", "languages", "responseBody", "exec", "accelerationIncludingGravity", "18px 'Arial'", "AddEventListener", "Z8XHJJY.bmF0aXZlRmlVyUHJ()", "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}", "Msxml2.ServerXMLHTTP", "\\\\", "substring", "getResponseHeader", "toLowerCase", "clientY", "webgl", "value", "enumerateDevices", "uniformOffset", "mouseover", "; path=/", "screenX", "mousemove", "func", "createProgram", "use strict", "wifi", "bluetooth", "object", "LOW_INT", "hash", "itemSize", "setItem", "g__q}z|lcp}l_}pyfoyn}", "getUniformLocation", "g|lcp}l[}pyfoyn}", "acos", "RemoveEventListener", "webkitIndexedDB", "$bmF0aXZlRmlVyUHJ", "save", "msCrypto", "POST", "wimax", " host ", "detachEvent", "arity", "Microsoft.XMLHTTP.1.0", "g|lcp}l", "screen", "getAttribLocation", "trim", "rangeMin", "PerformanceObserverEntryList", "|ks_lghqwlilhu", "candidate", "Msxml.XMLHTTP", "hLdri|[=|m|zmbhg", "getParameter", "chargingTime", "s__ru~qr{f__N_ru~qr{f_@qmpq~;{pq", "}ygdmkvxkukdknkv{ejcpig", "mouseOut", "PointerEvent", "Msxml2.ServerXMLHTTP.4.0", "setServerData", "OverrideMimeType", "Msxml2.ServerXMLHTTP.3.0", "mouseDown", "description", "xul{zwhyrlyI__uzI__uz*wwluk=la{Ilv@li+yv~zly", "a=candidate:", "uwyfbs}slsvs~emrkxqo", "android", "responseXML", "}__ygdftkxgt_uetkrv_hp", "mediaDevices", "|^\\$@dF}]gf_", "showModalDialog", "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}", "scroll", "ethernet", "$_fb", "webkitRequestFileSystem", "\u0000", "i{pal>mddkyj{{f", "credentials", "q ?@BS", "[object Array]", "(near '... null[0]...')", "MediaStreamTrack", "error", "rows", "keyDown", "http://", "children", "z:>*yqI:>*yq", "message", " srflx ", "Open", "/:user_fonts", "f__|mR~{[__b>mR~{", "font", "orientation", "MEDIUM_INT", "Function", "HIGH_INT", "unload", "deviceId", "action", "HTMLAnchorElement", "lgbdvmWGxtaEatnxg <[ 8dcigdaWZ", "Count", "zxjqjsnzrHj{fqzfyj", "gamma", "FRAGMENT_SHADER", "b~ooRb~mBkhbj+~ooRb~mEnbtrNts+~ooRb~mJdxCnvm+~ooRb~mJdxTo", "GetOriginalUrl", "vdFm", "response", "createObjectStore", "offsetUniform", "toGMTString", "getTimezoneOffset", "$b_platform", "?CS=", "keyUp", "captureStackTrace", "undefined", "enabledPlugin", "parentNode", "Send", "height", "Z8XHj", "lastIndexOf", "Msxml2.ServerXMLHTTP.6.0", "javascript:", "mozConnection", "dblclick", "Mouse", "getExtension", "lLBEatnxgWD8M", "RegExp", "mozRTCPeerConnection", "GetVariable", "attachShader", "QTP_EPE_HOOK", "SELECT value FROM EkcP_t WHERE name=?", "display", "webkitPersistentStorage", "alert", "FLOAT", "qrcklmDoExthWJiHAp1sVYKU3RFMQw8IGfPO92bvLNj-7zXBaSnu0TC6gy_4Ze5d~!@$%^&*()+=<>.?/:;{}[]| ", "GetNextReqID", "stack", "y.g|k1iut2g|g1tzkxlgikHpkyout", "JSON", "$_ts", "setTime", "ARRAY_BUFFER", "z7+-I7ik*ywq", "plugins", "getServerDataInCookie", "position", "fontFamily", "iframe", "colorDepth", "attachEvent", "return a[b](", "b_Rdkdmhtl_HCD_Qdbnqcdq+_rdkdmhtl+b~kkRdkdmhtl", "setLocalDescription", "}ugngpkwo", "objectStoreNames", "then", "q46@vszfsdwqo+Dwpsdo| =oqvw|s E|w+3}}zxojj+Fsbro|o+8szfsdwqo >ses <D @b} WY Dvw|+dov}{o+<7 C{obd_8 dscd Bsuezob+49>@b}Qzwuvd+8szfsdwqo <D XW <wuvd 5hds|rsr+8szfs=_9|rwo+C53B}p}d}<wuvd 2}zr+?B =}vo|di E|wq}rs Bsuezob+4b}wr Co|c Dvow+;o||oro Co|uo{ =>+443 Eqvs|+qz}qyVTUZ_fURU+Co{ce|u;o||oroBsuezob+=9 <1>D9>7 2}zr+Co{ce|uCo|c>e{W< <wuvd+fsbro|o+8szfsdwqo>sesDvw|+C536ozzpoqy+Co{ce|u5{}xw+Dszeue Co|uo{ =>+3obb}wc 7}dvwq C3+6zi{s <wuvd B}p}d} <wuvd+C}=1Q4wuwd <wuvd+C}=3 Co|c Bsuezob+8IHwIeo|:+ccd+co{ce|uQco|cQ|e{XD+u{_{s|u{s|u+<}vwd ;o||oro+dw{sc |sg b}{o|+co{ce|uQco|cQ|e{X<+csbwtQ{}|}c~oqs+Co{ce|uCo|c>e{QWD Dvw|+3}z}b?CE9QHDvw|+4b}wr >ocyv Cvwtd 1zd+Co{ce|uDszeueBsuezob+2s|uozw ?DC+=9 <o|Dw|u_72 ?edcwrs IC+6J=wo}Ge_72U(TWT+vszfsQ|sesQbsuezob+CCD =srwe{+3}ebwsb >sg+;v{sb =}|rezywbw 2}zr+8szfsdwqo <D VW Ezdbo <wuvd 5hds|rsr+8szfsdwqo <D VY Ezdbo <wuvd+B}p}d} =srwe{+4b}wr Co|c 2}zr+u}eri+co|cQcsbwtQq}|rs|csrQzwuvd+C6w|rsb+|}d}Qco|cQqxyQ{srwe{+{wew+=B}qyi @B3 2}zr+1|rb}wr3z}qy Bsuezob+Co{ce|uCo|c>e{QX< <wuvd+co|cQcsbwtQdvw|+1o@o|uIosb+qoceoz+2> =}vo|di?D 2}zr+hQccd+>}d}Co|c=io|{obJoguiw+8szfsdwqo <D WW Dvw| 5hds|rsr+1cvzsiCqbw~d=D 1zd+>}d} Co|c 4sfo|ouobw E9+B}p}d} 3}|rs|csr 2}zr+B}p}d} =srwe{ 9dozwq+{wewsh+>}d} Co|c 7eb{eyvw E9+CCD Fwsd|o{scs <wuvd+<7_?bwio+viq}ttss+hQccdQezdbozwuvd+468sw1G[Q1+6JJGH2D?D_E|wq}rs+4sfo|ouobw Co|uo{ => 2}zr+co|cQcsbwtQ{}|}c~oqs+@oroey 2}}y 2}zr+<7Q6JIw|u2w;owCveQCUYQFVRV+<7Q6JIw|u2w;owCveQCUYQFVRW+8szfsdwqo>ses<D @b} WY Dv+=wqb}c}td 8w{ozoio+Co{ce|uCo|c6ozzpoqy+CCD =srwe{ 9dozwq+1|rb}wr5{}xw+Co{ce|uCo|c>e{QWB+9D3 Cd}|s Csbwt+co|cQcsbwtQc{ozzqo~c+hQccdQ{srwe{+<7_Cw|vozscs+B}p}d} Dvw| 9dozwq+qs|debiQu}dvwq+3z}qy}~wo+<e{w|}ec_Co|c+6z}bwrwo| Cqbw~d 1zd+>}d} Co|c 7eb{eyvw 2}zr+<D8ICJ; 2}zr+7C_Dvow+Co{ce|u>s}>e{_WD_V+1bopwq+vo|cQco|cQ|}b{oz+<}vwd Dszeue+8IAw8swQYTC <wuvd+<w|rcsi t}b Co{ce|u+1B 3bicdozvsw 42+Co{ce|u Co|c =srwe{+co{ce|uQco|cQ|e{XY+vo|cQco|cQp}zr+<e{w|}ec_Cqbw~d+CCD 3}|rs|csr+Co{ce|u4sfo|ouobwBsuezob+1|xoz =ozoiozo{ =>+Co{ce|uDvowLdscdM+6J<o|Dw|u8swQ=Q72U(TWT+8spbsg ?DC+7CXY_1bopL1|rb}wr?CM+Co{ce|u Co|c <wuvd+3v}q} q}}yi+vszfsQ|sesQdvw|+@> =}vo|di?D =srwe{+<7Q6J;oD}|uQ=U)QFVRX+4b}wr Csbwt+Co{ce|uCw|vozoBsuezob+vszfsdwqo+<7Q6J;oD}|uQ=U)QFVRV+>}d} Co|c 4sfo|ouobw E9 2}zr+CCD <wuvd+46@5{}xw+gsodvsbt}|d|sg Bsuezob+B}p}d}>e{WB+49>@b}Q{srwe{+Co{ce|u Co|c >e{YY+CCD 8sofi 9dozwq+<7z}qyX Bsuezob_T(TY+7s}buwo+|}d}Qco|cQqxy+Dszeue Co|uo{ => 2}zr+=9E9 5H >}b{oz+8IAw8swQ[YC 2}zr+>}d}Co|c=io|{obJoguiw 2}zr+ie|}c~b}Qpzoqy+vszfsQ|sesQ|}b{oz+<e{w|}ec_Csbwt+D= =}vo|di?D >}b{oz+Co{ce|uCo|c>e{QW<f <wuvd+Co{ce|u Co|c >e{XY+C{obd7}dvwq =srwe{+us}buwo+qoceozQt}|dQdi~s+Co{ce|u Co|c 2}zr+c{ozzQqo~wdozc+=6w|o|qs @B3 2}zr+6J<o|Dw|u8sw_72U(TWT+Co{ce|u1b{s|wo|+B}p}d} 2}zr+qs|debiQu}dvwqQp}zr+hQccdQvsofi+CCD <wuvd 9dozwq+Dvob<}|+hQccdQzwuvd+4w|p}z Bsuezob+Co{ce|u2s|uozwBsuezob+;> =}vo|di?DC{ozz =srwe{+vi~ebs+Co{ce|uDo{wzBsuezob+=ozoiozo{ Co|uo{ =>+>}d} Co|c ;o||oro E9+vszfsQ|ses+8szfsdwqo <D YY B}{o|+>}d} Co|c ;o||oro 2}zr+Co|~io+Co{ce|u@e|xopwBsuezob+co{ce|uQco|cQ|e{X<f+<7_;o||oro+Co{ce|u Co|c Bsuezob+JoguiwQ?|s+4b}wr Csbwt 2}zr 9dozwq+6J;1D:G+q}ebwsb |sg+Co{ce|u5{}xwBsuezob+=9E9 5H 2}zr+1|rb}wr 5{}xw+>}d} >ocyv 1bopwq E9+<34 3}{+6edebo =srwe{ 2D+Fwf}Qshdboqd+2o|uzo Co|uo{ => 2}zr+vo|cQco|cQbsuezob+C>e{QWB+C>e{QWD+vo|cQco|c+CCD Ezdbo <wuvd+B}p}d} Bsuezob+B}p}d} <wuvd+8o|e{o|+|sgzuu}dvwq+468sw1GYQ1+vo|cQco|cQzwuvd+@zods 7}dvwq+C>e{QW<+8szfsdwqo <D XY <wuvd+=io|{ob Co|uo{ Joguiw 2}zr+zuQco|cQcsbwtQzwuvd+=9E9 5H <wuvd+B}p}d} Dvw|+C}=1 2}zr+@oroey+Co{ce|u Co|c+C~oqw}ec_C{ozz3o~+co|cQcsbwt+4F =}vo|di?D =srwe{+Cdopzs_Czo~+{}|oq}+6zi{sQ<wuvd+tjjicQr}c~i+Cqbss|Co|c+qz}qyVTUZ+B}p}d} 3}|rs|csr 2}zr 9dozwq+1bwoz+;> =}vo|di =srwe{+=}d}io<=obe GW {}|}+8o|rcsd 3}|rs|csr+B}p}d} 9dozwq+8D3 8o|r+CCD Ezdbo <wuvd 9dozwq+CCD Fwsd|o{scs B}{o|+>}d} >ocyv 1bopwq E9 2}zr+qv|tjhvQ{srwe{+C>e{3}|rQWD+qs|debiQu}dvwqQbsuezob+rstoezd_b}p}d}Qzwuvd+>}d} Co|c =io|{ob+=io|{ob Co|uo{ =>+1~~zs 3}z}b 5{}xw+gsodvsbt}|dBsu+Co{ce|u=ozoiozo{Bsuezob+obwoz+4b}wr Csbwt 2}zr+3@}W @B3 2}zr+=9 <1>D9>7+Co{ce|u;}bso|QBsuezob+dscdXY Bsuezob+c~wbwd_dw{s+4sfo|ouobw Co|uo{ =>+Cqbss|Csbwt+B}p}d}+qebcwfsQt}|dQdi~s+CD8swdw_fwf}+qv|tjhv+Co{ce|u 3z}qy6}|d W1+B}p}d} 3}|rs|csr Bsuezob+co{ce|uQ|s}Q|e{WB+7: =}vo|di?D =srwe{+3vezv} >ses <}qy+b}p}d}Q|e{W<+vszfsQ|sesQezdbo<wuvdshds|rsr+Co{ce|u?bwioBsuezob+Co{ce|uCo|c>e{QX<f <wuvd+=Iw|u8sw_U(TWT_3VQ2}zr+46@Cvo}>fGYQ72+B}p}d} 2zoqy+vszfsQ|sesQezdbozwuvd+u{_hwvsw+<7z}qyX <wuvd_T(TY+7exobodw Co|uo{ =>+=ozoiozo{ Co|uo{ => 2}zr+b}p}d}Q|e{WB+CDHwvsw_fwf}+6JJve|Ieo|_72U(TWT+|}d}Qco|cQqxyQzwuvd+q}z}b}c+>}d} Co|c 7eb{eyvw+>}d} Co|c Ci{p}zc+B}p}d} <wuvd 9dozwq+<}vwd Do{wz+qebcwfs+rstoezd_b}p}d}+2vocvwdo3}{~zshCo|c 2}zr+<7_>e{psb_B}p}d} Dvw|+{}|}c~oqsrQgwdv}edQcsbwtc+8szfsdwqo <D WY Dvw|+co{ce|uQco|cQ|e{W<F+49>@b}+:}{}zvobw+co|cQcsbwtQzwuvd+vszfsQ|sesQpzoqy+<}vwd 2s|uozw+=io|{ob Co|uo{ Joguiw+4b}wr Csbwt 9dozwq+B}p}d} 2}zr 9dozwq+>o|e{7}dvwq+C}|i =}pwzs E4 7}dvwq Bsuezob+7s}buwo 2}zr 9dozwq+co{ce|uQco|cQ|e{W<f+ie|}cQdvw|+co{ce|uQ|s}Q|e{WDQq}|r+>}d} Co|c =io|{ob E9 2}zr+zucsbwt+6JI}e8swQBQ72U(TWT+<}vwd @e|xopw+pocysbfwzzs+co{ce|uQco|cQ|e{XDf+co{ce|uQco|cQdvw|+<7 5{}xw+1|xozw>sg<w~w+Co{ce|uCo|c>e{QXD Dvw|+Co{ce|u;}bso|Q2}zr+{wewshQzwuvd+>}d} Co|c ;o||oro+B}p}d} >}b{oz 9dozwq+7s}buwo 9dozwq+co|cQcsbwtQ{srwe{+C{obd Joguiw+B}p}d} 3}|rs|csr 9dozwq+>}d} Co|c ;o||oro E9 2}zr+46@ Cq Co|c 8sesWT_UTW+<7_>e{psb_B}p}d} 2}zr+@oroey 2}}y+hQccdQq}|rs|csr+Ce|cvw|sQEqvs|+B}p}d} 2zoqy 9dozwq+Bw|u} 3}z}b 5{}xw+4sfo|ouobw ?DC+C{obd Joguiw @b}+6J<o|Dw|u8swQ=Q72;+1|rb}wr3z}qyQ<obus Bsuezob+~b}~}bdw}|ozziQc~oqsrQgwdv}edQcsbwtc+3edwfs =}|}+dw{sc+<7 C{obd_8 dscd 2}zr+49>@b}Q<wuvd+co|cQcsbwtQpzoqy+<}vwd 4sfo|ouobw+~b}~}bdw}|ozziQc~oqsrQgwdvQcsbwtc+co{ce|uQco|cQ|e{W<+=I}e|u @B3 =srwe{+467}dvwq@GYQ297Y8;QC?>I+vo|cQco|cQ{srwe{+CCD 8sofi+<7Q6JJve|Ieo|Q=TVQFVRV+=io|{obE>sg Bsuezob+>}d} >ocyv 1bopwq 2}zr+Co{ce|u7exobodvwBsuezob+to|doci+vszfsQ|sesQzwuvd+8szfsdwqo >ses ?DC 2}zr+|}d}Qco|cQqxyQp}zr+co{ce|uQco|cQ|e{WB+<w|rcsi Co{ce|u+co{ce|uQco|cQ|e{WD+Cqbss|Csbwt=}|}+5Dbe{~ =io|{ob_JG+vszfsQ|sesQdvw|shds|rsr+>}d} >ocyv 1bopwq+<7_7exobodw+C{obd_=}|}c~oqsr+Do{wz Co|uo{ =>+<7 5{}xw >}|1=5+B}p}d} 3}|rs|csr <wuvd 9dozwq+u{_xw|uyow+6J<o|Dw|u;o|8sw_72U(TWT+zudbofsz+~ozodw|}+7s}buwo 2}zr+4b}wr Co|c+<7_@e|xopw+C{obd7}dvwq 2}zr+Co{ce|u Co|c Dvw|+CCD 3}|rs|csr 2}zr+3}{wqc_>obb}g+q}ebwsb+?bwio Co|uo{ =>+vszfsQ|sesQzwuvdshds|rsr+6J<o|Dw|u8swQBQ72U(TWT+1B 3bicdozvsw8;C3C 42+csbwt+BDGCIesB}er7}7TfUQBsuezob+=wo}Ge_~bsf+6JIU;+<7_>e{psb_B}p}d} Bsuezob+1|rb}wr3z}qy+C}=1 Bsuezob+8IAw8swQXTC <wuvdh+zuQco|cQcsbwt+4o|qw|u Cqbw~d 2}zr+rstoezd+csqQb}p}d}Qzwuvd+3}z}b?CE9QBsuezob+dscd Bsuezob+Do{wz Co|uo{ => 2}zr+6JIw|u2wHw|uCveQCUZ+B}p}d}>e{W< <wuvd+{}|}c~oqsrQgwdvQcsbwtc+co{ce|uQco|cQ|e{WY+3}}z xojj+Co{ce|u>s}>e{QW<+CDHw|uyow+Cqbss|Co|c=}|}+46@GoGoGYQ72+Co{ce|uCo|c>e{QW< <wuvd+2o|uzo Co|uo{ =>+7eb{eyvw Co|uo{ =>+C53B}p}d}<wuvd+vit}|hbow|+=Iw|u8sw72U(TWT3Q2}zr+co{ce|uQco|cQzwuvd+8szfsdwqo <D ZY =srwe{+4b}wr Co|c 6ozzpoqy+B}p}d} DscdU 2}zr+>}d} Co|c =io|{ob 2}zr+co|cQcsbwtQq}|rs|csrQqecd}{+Co{ce|u>s}>e{QWD+Co{ce|u Co|c >e{WY+{}|}c~oqs+D< =}vo|di =srwe{+vszfsQ|sesQ{srwe{+<D8ICJ;+B}p}d} 3}|rs|csr qecd}{s 2}zr+=io|{obW+4b}wr Co|c 4sfo|ouobw+Cvo}>f_~bsf+co{ce|uQ|s}Q|e{W<+6J<o|Dw|u8swQ5<Q72;+ie|}c+co{ce|uQ|s}Q|e{WD+Dw{sc >sg B}{o|+vszfsQ|sesQp}zr+|}d}Qco|cQqxyQbsuezob+>}d} Co|c 7eb{eyvw E9 2}zr+49>@b}Qpzoqy+6J<o|Dw|u8swQ5<Q72U(TWT+CCD Fwsd|o{scs =srwe{+B}p}d} 3}|rs|csr <wuvd+CCD Fwsd|o{scs 2}zr+1B 4:Q;;+4b}wr Co|c C5=3+>}d} Co|c =io|{ob E9+3}{w|u C}}|+=Ie~~i @B3 =srwe{+B}cs{obi+<}vwd 7exobodw+B}p}d} 3}|rs|csr qecd}{ 2}zr+6J<o|Dw|u8swCQBQ72+8szfsdwqo >ses ?DC+;owdw_~bsf+B}p}d}Q2wu3z}qy+6JI2;C:G+8o|rcsd 3}|rs|csr 2}zr+Co{ce|u7s}buwo|+4o|qw|u Cqbw~d+co|cQcsbwtQq}|rs|csr+vo|cQco|cQdvw|+Co{ce|uCo|c>e{QXDf Dvw|+<}vwd ?rwo+2vocvwdo3}{~zshCo|c", "abort", "length", "connection", "overrideMimeType", "'null' is not an object", "item", "Abort", "substr", "evaluate", "transferChannel", "keyup", "bufferData", "Msxml2.ServerXMLHTTP.5.0", "execScript", "shaderSource", "#17e", "absolute", "SetRequestHeader", "click", "textBaseline", "offsetHeight", "<span style=\"font-family:mmllii;font-size:114px\">mmmmmmmmmmmlliii</span>", "toFixed", "pixelDepth", "offsetY", "[null] is not an object", "localDescription", "getBattery", "self", "<!--[if gt IE ", "cbmjnfgl*bmjnfglgldm*bmjnfglkcr}", "webkitConnection", "y$nuuq$H$$rummkxH$$ryvH$$ryxhH$nj~$H$xkgja+ujk)rxkgja-~ki{zkj1t<noy.xgskH$yj~$H${ok$", "v$;{n@.-{xb|n{.uj||rlK@.-{xb|n{8n||jpn.nw}n{", "cZdslargmlZ[ yt}p } ; lcu B}rcZ[9 bc~seecp9 pcrspl lcu B}rcZ[ + } < /..9{Z[[", "vertexPosAttrib", "VERTEX_SHADER", "enableVertexAttribArray", "AddSearchProvider", "level", "contains", "battery", "$b_setup", "statusText", "executeSql", "Float32Array", "http", "removeItem", "fetch", "p|dgxdxqx{xejrwp}vt", "globalStorage", "Msxml3.XMLHTTP", "try{return __dirname;}catch(e){}", "{             \"iceServers\" : [                 {\"url\" : \"stun:stun01.sipphone.com\"}, {\"url\" : \"stun:stun.ekiga.net\"},                 {\"url\" : \"stun:stun.fwdnet.net\"}, {\"url\" : \"stun:stun.ideasip.com\"},                 {\"url\" : \"stun:stun.iptel.org\"}, {\"url\" : \"stun:stun.rixtelecom.se\"},                 {\"url\" : \"stun:stun.schlund.de\"}, {\"url\" : \"stun:stun.l.google.com:19302\"},                 {\"url\" : \"stun:stun1.l.google.com:19302\"}, {\"url\" : \"stun:stun2.l.google.com:19302\"},                 {\"url\" : \"stun:stun3.l.google.com:19302\"}, {\"url\" : \"stun:stun4.l.google.com:19302\"}             ]         }", "rangeMax", "__#classType", "MEDIUM_FLOAT", "musuzw_", "objectStore", "$b_fetchQueue", "3jeALeSsa6", "getItem", "$b_onNativeResponse", "pushNotification", "AnalyserNode", "characterSet", "createDataChannel", "numItems", "boolean", "touchstart", "try{return (window instanceof Window);}catch(e){}", "isNaN", "form", "{\"optional\" : [ {\"RtpDataChannels\" : true} ]}", "applicationCache", "~XhZpouspmEXhZpouspm", "umkz~mrk>op|o}rLmkz~mrk_|op|o}rLmromu8yqsxLnom|ez~/kvvlkmu", "kmyva}j>}xxyd", "runtime", "tests", "mouseout", "RTCPeerConnection", "QQBrowser", "https://", "getShaderPrecisionFormat", "vertexAttribPointer", "Entity", "drawArrays", "fillText", "MSPointerEvent", "except", "external", "try{return __filename;}catch(e){}", "zij{nhjtwnjsyfynts", "$_ck", "vlaue", "onautocomplete", "uniform2f", "compileShader", "complete", "mozIndexedDB", "random", "anchor", "url(#default#userdata)", "behavior"]
        var _yrxItP
        var _yrx5XG = encodeURIComponent
        var _yrxiv8 = unescape
        var _yrxWOo = Array
        var _yrxD3B = Array
        var _yrxKni = Math
        var _yrxp7X = String.prototype["charCodeAt"]
        var _yrxpbG = String.fromCharCode
        var _yrx6U9 = parseInt
        var _yrxeFV = Date
        _yrx03s[_yrxQ9C[2]] = new _yrxs6z()
        
        function _yrxHR8(_yrx7jl) {
            return _yrxiv8(_yrx5XG(_yrx7jl))
        }
        
        function _yrxTZR(_yrx7jl) {
            var _yrxrqQ, _yrx$Kn = 0, _yrxmEu;
            _yrx7jl = _yrxHR8(_yrx7jl);
            _yrxmEu = _yrx7jl.length;
            _yrxrqQ = new _yrxWOo(_yrxmEu);
            _yrxmEu -= 3;
            while (_yrx$Kn < _yrxmEu) {
                _yrxrqQ[_yrx$Kn] = _yrxp7X[_yrxQ9C[0]](_yrx7jl, _yrx$Kn++);
                _yrxrqQ[_yrx$Kn] = _yrxp7X[_yrxQ9C[0]](_yrx7jl, _yrx$Kn++);
                _yrxrqQ[_yrx$Kn] = _yrxp7X[_yrxQ9C[0]](_yrx7jl, _yrx$Kn++);
                _yrxrqQ[_yrx$Kn] = _yrxp7X[_yrxQ9C[0]](_yrx7jl, _yrx$Kn++)
            }
            _yrxmEu += 3;
            while (_yrx$Kn < _yrxmEu)
                _yrxrqQ[_yrx$Kn] = _yrxp7X[_yrxQ9C[0]](_yrx7jl, _yrx$Kn++);
            return _yrxrqQ
        }
        
        function _yrxs6z() {
            this._yrxS63 = _yrxrqQ;
            this._yrxXPb = _yrx$Kn;
            this._yrxa9O = [0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0];
            this._yrxPtU = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];
            this._yrxM5F = _yrxmEu;
        
            function _yrxrqQ(_yrx_cw) {
                if (typeof _yrx_cw === _yrxQ9C[6])
                    _yrx_cw = _yrxTZR(_yrx_cw);
                var _yrxrqQ = this._yrxNj0 = this._yrxNj0[_yrxQ9C[8]](_yrx_cw);
                this._yrx2tg += _yrx_cw.length;
                while (_yrxrqQ.length >= 64) {
                    this._yrxM5F(_yrxSVn(_yrxrqQ[_yrxQ9C[64]](0, 64)))
                }
                return this
            }
        
            function _yrx$Kn() {
                var _yrxrqQ, _yrx$Kn = this._yrxNj0, _yrxmEu = this._yrx4r0, _yrx2LR = _yrxQ9C[450];
                _yrx$Kn.push(0x80);
                for (_yrxrqQ = _yrx$Kn.length + 2 * 4; _yrxrqQ & 0x3f; _yrxrqQ++) {
                    _yrx$Kn.push(0)
                }
                while (_yrx$Kn[_yrx2LR] >= 64) {
                    this._yrxM5F(_yrxSVn(_yrx$Kn[_yrxQ9C[64]](0, 64)))
                }
                _yrx$Kn = _yrxSVn(_yrx$Kn);
                _yrx$Kn.push(_yrxKni[_yrxQ9C[5]](this._yrx2tg * 8 / 0x100000000));
                _yrx$Kn.push(this._yrx2tg * 8 | 0);
                this._yrxM5F(_yrx$Kn);
                _yrx2LR = _yrxmEu.length;
                var _yrx3il = new _yrxWOo(_yrx2LR * 4);
                for (var _yrxrqQ = _yrxItP = 0; _yrxrqQ < _yrx2LR;) {
                    var _yrxTXe = _yrxmEu[_yrxrqQ++];
                    _yrx3il[_yrxItP++] = (_yrxTXe >>> 24) & 0xFF;
                    _yrx3il[_yrxItP++] = (_yrxTXe >>> 16) & 0xFF;
                    _yrx3il[_yrxItP++] = (_yrxTXe >>> 8) & 0xFF;
                    _yrx3il[_yrxItP++] = _yrxTXe & 0xFF
                }
                return _yrx3il
            }
        
            function _yrxmEu(_yrx_cw) {
                var _yrxrqQ, _yrx$Kn, _yrxmEu, _yrx2LR, _yrx3il, _yrxTXe, _yrxxj7, _yrxUSw = _yrx_cw[_yrxQ9C[1]](0),
                    _yrxWfm = this._yrx4r0, _yrx7ea, _yrxG5u, _yrx4Sf = _yrxQ9C[5];
                _yrxmEu = _yrxWfm[0];
                _yrx2LR = _yrxWfm[1];
                _yrx3il = _yrxWfm[2];
                _yrxTXe = _yrxWfm[3];
                _yrxxj7 = _yrxWfm[4];
                for (_yrxrqQ = 0; _yrxrqQ <= 79; _yrxrqQ++) {
                    if (_yrxrqQ >= 16) {
                        _yrx7ea = _yrxUSw[_yrxrqQ - 3] ^ _yrxUSw[_yrxrqQ - 8] ^ _yrxUSw[_yrxrqQ - 14] ^ _yrxUSw[_yrxrqQ - 16];
                        _yrxUSw[_yrxrqQ] = (_yrx7ea << 1) | (_yrx7ea >>> 31)
                    }
                    _yrx7ea = (_yrxmEu << 5) | (_yrxmEu >>> 27);
                    if (_yrxrqQ <= 19) {
                        _yrxG5u = (_yrx2LR & _yrx3il) | (~_yrx2LR & _yrxTXe)
                    } else if (_yrxrqQ <= 39) {
                        _yrxG5u = _yrx2LR ^ _yrx3il ^ _yrxTXe
                    } else if (_yrxrqQ <= 59) {
                        _yrxG5u = (_yrx2LR & _yrx3il) | (_yrx2LR & _yrxTXe) | (_yrx3il & _yrxTXe)
                    } else if (_yrxrqQ <= 79) {
                        _yrxG5u = _yrx2LR ^ _yrx3il ^ _yrxTXe
                    }
                    _yrx$Kn = (_yrx7ea + _yrxG5u + _yrxxj7 + _yrxUSw[_yrxrqQ] + this._yrxPtU[_yrxKni[_yrx4Sf](_yrxrqQ / 20)]) | 0;
                    _yrxxj7 = _yrxTXe;
                    _yrxTXe = _yrx3il;
                    _yrx3il = (_yrx2LR << 30) | (_yrx2LR >>> 2);
                    _yrx2LR = _yrxmEu;
                    _yrxmEu = _yrx$Kn
                }
                _yrxWfm[0] = (_yrxWfm[0] + _yrxmEu) | 0;
                _yrxWfm[1] = (_yrxWfm[1] + _yrx2LR) | 0;
                _yrxWfm[2] = (_yrxWfm[2] + _yrx3il) | 0;
                _yrxWfm[3] = (_yrxWfm[3] + _yrxTXe) | 0;
                _yrxWfm[4] = (_yrxWfm[4] + _yrxxj7) | 0
            }
        }
        
        function _yrxWKg() {
            var _yrxrqQ = new _yrx03s();
            for (var _yrx$Kn = 0; _yrx$Kn < arguments.length; _yrx$Kn++) {
                _yrxrqQ._yrxS63(arguments[_yrx$Kn])
            }
            return _yrxrqQ._yrxXPb()[_yrxQ9C[1]](0, 16)
        }
        
        function _yrx03s() {
            this._yrx4r0 = this._yrxa9O[_yrxQ9C[1]](0);
            this._yrxNj0 = [];
            this._yrx2tg = 0
        }
        
        function _yrxSVn(_yrx7jl) {
            var _yrxrqQ = _yrx7jl.length / 4
                , _yrx$Kn = 0
                , _yrxmEu = 0
                , _yrx2LR = _yrx7jl.length;
            if (_yrxrqQ < 1) {
                _yrxrqQ = 1
            }
            try {
                var _yrx3il = new _yrxWOo(_yrxrqQ)
            } catch (e) {
            }
            var _yrx3il = new _yrxWOo(16);
            while (_yrx$Kn < _yrx2LR) {
                _yrx3il[_yrxmEu++] = ((_yrx7jl[_yrx$Kn++] << 24) | (_yrx7jl[_yrx$Kn++] << 16) | (_yrx7jl[_yrx$Kn++] << 8) | (_yrx7jl[_yrx$Kn++]))
            }
            return _yrx3il
        }
        
        var argarr, _yrxitF, _yrx$Ds
        
        function aiding_5702(_yrxays, _yrxVMl, _yrxR7k, _yrxJ_8) {
            window.$_ts = _yrxVMl;
            $_ts = _yrxVMl;
            argarr = _yrxVMl[_yrxR7k];
            _yrx8LV();
            _yrxRTX(_yrxays);
            _yrxLYu();
            _yrxsIp();
            _yrx$tH();
            _yrxitF = _yrxFV3(5);
            _yrx$Ds = _yrx4U7(1, _yrxJ_8);
            return _yrx$Ds
        }
        
        var _yrx2TP
        
        function _yrx4U7(_yrxtJ1, armin) {
            var _yrxmbl = _yrxE5D(_yrxB3q());
            var _yrx9mg = four_array(709, _yrxmbl);
            var _yrxiyJ = _yrx9mg[1];
            var _yrxB40 = old_time();
            var _yrx6um = _yrxTcE([_yrxB40 / 4294967296 & 4294967295, _yrxB40 & 4294967295, Math["floor"](_yrxozw / 1000), Math["floor"](_yrxB27 / 1000)]);
            var _yrxFd8 = new_wp(268, _yrxtJ1, armin);
            var _yrxpuh = _yrxS_G_691(691);
            _yrx9mg = _yrx6um["concat"](_yrxpuh, _yrxFd8);
            var _yrx8zK = _yrxlfm(_yrxiyJ["concat"](_yrx9mg));
            for (_yrx2TP = 0; _yrx2TP < 64 + 1; _yrx2TP++) {
                _yrxiyJ[_yrx2TP] ^= _yrx8zK
            }
            var _yrxjKb = _yrxS_G_685(_yrxmbl);
            var _yrxHwI = _yrxBXG(_yrx9mg, _yrxjKb);
            return "4" + _yrx$tI(_yrxiyJ["concat"](_yrx8zK, _yrxHwI))
        }
        
        function _yrx$tI(_yrxtJ1, _yrxDnL) {
            if (typeof _yrxtJ1 === "string")
                _yrxtJ1 = _yrxQ$C(_yrxtJ1);
            _yrxDnL = _yrxDnL || _yrxxDc;
            var _yrxmbl, _yrx9mg = _yrxF6D = 0, _yrxiyJ = _yrxtJ1.length, _yrxB40, _yrx6um;
            _yrxmbl = new _yrxD3B(Math["ceil"](_yrxiyJ * 4 / 3));
            _yrxiyJ = _yrxtJ1.length - 2;
            while (_yrx9mg < _yrxiyJ) {
                _yrxB40 = _yrxtJ1[_yrx9mg++];
                _yrxmbl[_yrxF6D++] = _yrxDnL[_yrxB40 >> 2];
                _yrx6um = _yrxtJ1[_yrx9mg++];
                _yrxmbl[_yrxF6D++] = _yrxDnL[(_yrxB40 & 3) << 4 | _yrx6um >> 4];
                _yrxB40 = _yrxtJ1[_yrx9mg++];
                _yrxmbl[_yrxF6D++] = _yrxDnL[(_yrx6um & 15) << 2 | _yrxB40 >> 6];
                _yrxmbl[_yrxF6D++] = _yrxDnL[_yrxB40 & 63]
            }
            if (_yrx9mg < _yrxtJ1.length) {
                _yrxB40 = _yrxtJ1[_yrx9mg];
                _yrxmbl[_yrxF6D++] = _yrxDnL[_yrxB40 >> 2];
                _yrx6um = _yrxtJ1[++_yrx9mg];
                _yrxmbl[_yrxF6D++] = _yrxDnL[(_yrxB40 & 3) << 4 | _yrx6um >> 4];
                if (_yrx6um !== aiding_arg1) {
                    _yrxmbl[_yrxF6D++] = _yrxDnL[(_yrx6um & 15) << 2]
                }
            }
            return _yrxmbl.join("")
        }
        
        function _yrxBXG(_yrxtJ1, _yrxDnL, _yrxMd3) {
            if (typeof _yrxtJ1 === "string")
                _yrxtJ1 = _yrxQ$C(_yrxtJ1);
            var _yrxmbl = _yrxUQA(_yrxDnL, _yrxMd3);
            return _yrxmbl._yrxJo8(_yrxtJ1, true)
        }
        
        var _yrxZ_m
        
        function _yrxS_G_685(_yrxvAM) {
            _yrx$8Y["prototype"] = new _yrxNG6();
            var _yrxC2_ = _yrxr_F(_yrxvAM, _yrxnmu(_yrxvAM));
            var _yrx9rO = _yrxr_F(_yrxams(_yrxT8b()));
            var _yrxnRw = [];
            for (_yrxZ_m = 0; _yrxZ_m < 16; _yrxZ_m++) {
                _yrxnRw[_yrxZ_m * 2] = _yrxC2_[_yrxZ_m];
                _yrxnRw[_yrxZ_m * 2 + 1] = _yrx9rO[_yrxZ_m]
            }
            return _yrxnRw
        }
        
        function _yrxams(_yrxvAM) {
            var _yrxC2_ = _yrxvAM["slice"](0);
            if (_yrxC2_.length < 5) {
                return
            }
            var _yrx9rO = _yrxC2_.pop();
            var _yrxnRw = 0
                , _yrxZ_m = _yrxC2_.length;
            while (_yrxnRw < _yrxZ_m) {
                _yrxC2_[_yrxnRw++] ^= _yrx9rO
            }
            var _yrxdpH = _yrxC2_.length - 4;
        
            function _yrxHnj() {
                _yrxdtn = Date;
                return window.Math["ceil"](new _yrxdtn()["getTime"]() / 1000)
            }
        
            var _yrxlEA = _yrxHnj() - _yrxOFj(_yrxC2_["slice"](_yrxdpH))[0];
            _yrxC2_ = _yrxC2_["slice"](0, _yrxdpH);
            var _yrx_Uy = window.Math["floor"](window["Math"].log(_yrxlEA / 1.164 + 1));
            var _yrxCmO = _yrxC2_.length;
            var _yrx6kn = [0, $_ts[argarr[2]]][_yrxqXj];
            _yrxnRw = 0;
            while (_yrxnRw < _yrxCmO) {
                _yrxC2_[_yrxnRw] = _yrx_Uy | _yrxC2_[_yrxnRw++] ^ _yrx6kn
            }
            // _yrxKFl(8, _yrx_Uy);
            return _yrxC2_
        }
        
        function _yrxT8b() {
            var _yrxC2_ = _yrxdJ4(_yrxkr0(19) + $_ts[argarr[4]]);
            return _yrxM3E(_yrxC2_)
        }
        
        var _yrxdtn
        
        function _yrxM3E(_yrxvAM) {
            var _yrxC2_ = window.ddd + window.aaa;
        
            function _yrxHnj() {
                _yrxdtn = Date;
                return window.Math["ceil"]((new _yrxdtn()["getTime"]() / 1000))
            }
        
            function _yrxcAb(_yrxvAM) {
                return [_yrxvAM >>> 24 & 255, _yrxvAM >>> 16 & 255, _yrxvAM >>> 8 & 255, _yrxvAM & 255]
            }
        
            _yrxvAM = _yrxvAM["concat"](_yrxcAb(_yrxHnj()));
            for (var _yrx9rO = 0; _yrx9rO < _yrxvAM.length; _yrx9rO++) {
                _yrxvAM[_yrx9rO] ^= _yrxC2_
            }
            _yrxvAM[_yrx9rO] = _yrxC2_;
            return _yrxvAM
        }
        
        function _yrxnmu(_yrxvAM) {
            var _yrxC2_ = _yrxvAM["slice"](0, 16), _yrx9rO, _yrxnRw = 0, _yrxZ_m, _yrxdpH = "abs";
            getout(_yrxC2_);
            _yrxZ_m = _yrxC2_.length;
            while (_yrxnRw < _yrxZ_m) {
                _yrx9rO = Math["abs"](_yrxC2_[_yrxnRw]);
                _yrxC2_[_yrxnRw++] = _yrx9rO > 256 ? 256 : _yrx9rO
            }
            return _yrxC2_
        }
        
        function getout(val) {
            function _yrxRcp(_yrxgKO, _yrxcmf) {
                return Math.abs(_yrxgKO) % _yrxcmf
            }
        
            function _yrxVCU(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrx1hH(_yrxlWr), 16)] = _yrxgeY(_yrxlWr);
                var _yrxPjI = _yrxlWr[_yrxRcp(_yrxmFi(), 16)];
                var _yrxPjI = _yrxXzB(_yrxlWr);
                var _yrxBEW = _yrxKIo(_yrxlWr);
                var _yrxBEW = _yrxOig();
                _yrxlWr[_yrxRcp(_yrxaXm() - _yrxlWr[_yrxRcp(_yrx6$O(), 16)], 16)] = _yrxlWr[_yrxRcp(_yrxdb7() + _yrxoAL(), 16)];
                _yrxlWr[2] = _yrxaXm() - _yrxlWr[_yrxRcp(_yrx6$O(), 16)];
                _yrxthy(_yrxlWr);
                _yrxlWr[10] = _yrxdb7() - _yrxlWr[_yrxRcp(_yrxya1(), 16)];
                return _yrxlWr[_yrxRcp(_yrxaXm() - _yrxlWr[_yrxRcp(_yrx6$O(), 16)], 16)]
            }
        
            function _yrx1hH(_yrxlWr) {
                _yrxlWr[4] = _yrxeEr();
                _yrxlWr[_yrxRcp(_yrxaXm(), 16)] = _yrxjJR();
                var _yrxPjI = _yrx7v_();
                var _yrxljo = _yrxx0X();
                return _yrxOig() + _yrxSA8()
            }
        
            function _yrxeEr() {
                return 2
            }
        
            function _yrxaXm() {
                return 9
            }
        
            function _yrxjJR() {
                return 15
            }
        
            function _yrx7v_() {
                return 8
            }
        
            function _yrxx0X() {
                return 6
            }
        
            function _yrxOig() {
                return 13
            }
        
            function _yrxSA8() {
                return 3
            }
        
            function _yrxgeY(_yrxlWr) {
                if (_yrxUje()) {
                    _yrxlWr[_yrxRcp(_yrx7v_(), 16)] = _yrxx0X()
                }
                _yrxlWr[0] = _yrx8Vh();
                var _yrxljo = _yrxeEr();
                if (_yrxUje()) {
                    _yrxlWr[11] = _yrxdb7()
                }
                _yrxlWr[14] = _yrx6$O();
                _yrx5RZ(_yrxlWr);
                return _yrxtWM(_yrxlWr)
            }
        
            function _yrxUje() {
                return 5
            }
        
            function _yrx8Vh() {
                return 14
            }
        
            function _yrxdb7() {
                return 1
            }
        
            function _yrxmFi() {
                return 0
            }
        
            function _yrx6$O() {
                return 12
            }
        
            function _yrx5RZ(_yrxlWr) {
                var _yrxBEW = _yrxoAL();
                var _yrxljo = _yrxOig();
                var _yrxljo = _yrxaXm();
                _yrxlWr[_yrxRcp(_yrx6$O(), 16)] = _yrx$Eu();
                return _yrx7v_()
            }
        
            function _yrxoAL() {
                return 7
            }
        
            function _yrx$Eu() {
                return 10
            }
        
            function _yrxtWM(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrxOig(), 16)] = _yrxSA8();
                _yrxlWr[9] = _yrxjJR();
                _yrxlWr[_yrxRcp(_yrx$Eu(), 16)] = _yrx7v_();
                return _yrxx0X()
            }
        
            function _yrxXzB(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrxUje(), 16)] = _yrxg1K();
                _yrxlWr[1] = _yrxoAL();
                _yrxNDw(_yrxlWr);
                _yrxvpX(_yrxlWr);
                return _yrxUje()
            }
        
            function _yrxg1K() {
                return 11
            }
        
            function _yrxNDw(_yrxlWr) {
                _yrxlWr[3] = _yrxaXm();
                _yrxlWr[15] = _yrxUje();
                var _yrxBEW = _yrxx0X();
                var _yrxPjI = _yrxya1();
                _yrxlWr[2] = _yrxmFi();
                return _yrx8Vh()
            }
        
            function _yrxya1() {
                return 4
            }
        
            function _yrxvpX(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrxg1K(), 16)] = _yrxdb7();
                _yrxlWr[7] = _yrxOig();
                _yrxlWr[3] = _yrxaXm();
                return _yrxjJR()
            }
        
            function _yrxKIo(_yrxlWr) {
                var _yrxPjI = _yrxSA8();
                var _yrxPjI = _yrxaXm();
                _yrxlWr[15] = _yrxUje();
                _yrxlWr[11] = _yrxdb7();
                return _yrxoAL()
            }
        
            function _yrxthy(_yrxlWr) {
                var _yrxPjI = _yrx$Eu();
                if (_yrxI5n(_yrxlWr)) {
                    _yrxlWr[3] = _yrxaXm()
                }
                var _yrxljo = _yrx6$O();
                if (_yrxlWr[_yrxRcp(_yrxya1(), 16)]) {
                    if (_yrxSA8()) {
                        var _yrxPjI = _yrx$Eu()
                    }
                }
                _yrxO7$(_yrxlWr);
                _yrxlWr[6] = _yrxOig() + _yrxSA8();
                _yrxmsC(_yrxlWr);
                var _yrxljo = _yrxOig();
                return _yrxlWr[_yrxRcp(_yrxaXm() + _yrxjJR(), 16)]
            }
        
            function _yrxI5n(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrxOig(), 16)] = _yrxSA8();
                var _yrxljo = _yrx6$O();
                var _yrxPjI = _yrx$Eu();
                _yrxlWr[_yrxRcp(_yrxdb7(), 16)] = _yrxoAL();
                return _yrxOig()
            }
        
            function _yrxO7$(_yrxlWr) {
                var _yrxljo = _yrx7v_();
                var _yrxljo = _yrxSA8();
                if (_yrxjJR()) {
                    var _yrxBEW = _yrxx0X()
                }
                if (_yrx6$O()) {
                    _yrxlWr[_yrxRcp(_yrxg1K(), 16)] = _yrxdb7()
                }
                var _yrxPjI = _yrxjJR();
                var _yrxPjI = _yrxUje();
                return _yrxlWr[_yrxRcp(_yrx7v_(), 16)]
            }
        
            function _yrxmsC(_yrxlWr) {
                _yrxlWr[12] = _yrx$Eu();
                _yrxlWr[_yrxRcp(_yrxdb7(), 16)] = _yrxoAL();
                _yrxlWr[13] = _yrxSA8();
                _yrxlWr[_yrxRcp(_yrx8Vh(), 16)] = _yrx6$O();
                return _yrxzDC(_yrxlWr)
            }
        
            function _yrxzDC(_yrxlWr) {
                _yrxlWr[_yrxRcp(_yrxdb7(), 16)] = _yrxoAL();
                _yrxlWr[_yrxRcp(_yrxeEr(), 16)] = _yrxmFi();
                var _yrxljo = _yrxUje();
                var _yrxPjI = _yrxg1K();
                return _yrxdb7()
            }
        
            return _yrxVCU(val)
        }
        
        function _yrxr_F() {
            var _yrxC2_ = new _yrx$8Y();
            for (var _yrx9rO = 0; _yrx9rO < arguments.length; _yrx9rO++) {
                _yrxC2_._yrxdMZ(arguments[_yrx9rO])
            }
            return _yrxC2_._yrx5nv()["slice"](0, 16)
        }
        
        function _yrx$8Y() {
            this._yrxg2p = this._yrxOTj["slice"](0);
            this._yrxJLT = [];
            this._yrx8H0 = 0
        }
        
        var _yrxIE7
        
        function _yrxOFj(_yrxvAM) {
            var _yrxC2_ = _yrxvAM.length / 4
                , _yrx9rO = 0
                , _yrxnRw = 0
                , _yrxZ_m = _yrxvAM.length;
            _yrxseo = Array;
            var _yrxdpH = new _yrxseo(_yrxC2_);
            while (_yrx9rO < _yrxZ_m) {
                _yrxdpH[_yrxnRw++] = _yrxvAM[_yrx9rO++] << 24 | _yrxvAM[_yrx9rO++] << 16 | _yrxvAM[_yrx9rO++] << 8 | _yrxvAM[_yrx9rO++]
            }
            return _yrxdpH
        }
        
        function _yrxNG6() {
            this._yrxdMZ = _yrxC2_;
            this._yrx5nv = _yrx9rO;
            this._yrxOTj = [1732584193, 4023233417, 2562383102, 271733878, 3285377520];
            this._yrxXCT = [1518500249, 1859775393, 2400959708, 3395469782];
            this._yrxhCw = _yrxnRw;
        
            function _yrxC2_(_yrx6fP) {
                if (typeof _yrx6fP === "string")
                    _yrx6fP = _yrxdqV(_yrx6fP);
                var _yrxC2_ = this._yrxJLT = this._yrxJLT["concat"](_yrx6fP);
                this._yrx8H0 += _yrx6fP.length;
                while (_yrxC2_.length >= 64) {
                    this._yrxhCw(_yrxOFj(_yrxC2_["splice"](0, 64)))
                }
                return this
            }
        
            function _yrx9rO() {
                var _yrxC2_, _yrx9rO = this._yrxJLT, _yrxnRw = this._yrxg2p, _yrxZ_m = "length";
                _yrx9rO.push(128);
                for (_yrxC2_ = _yrx9rO.length + 2 * 4; _yrxC2_ & 63; _yrxC2_++) {
                    _yrx9rO.push(0)
                }
                while (_yrx9rO[_yrxZ_m] >= 64) {
                    this._yrxhCw(_yrxOFj(_yrx9rO["splice"](0, 64)))
                }
                _yrx9rO = _yrxOFj(_yrx9rO);
                _yrx9rO.push(Math["floor"](this._yrx8H0 * 8 / 4294967296));
                _yrx9rO.push(this._yrx8H0 * 8 | 0);
                this._yrxhCw(_yrx9rO);
                _yrxZ_m = _yrxnRw.length;
                var _yrxdpH = new _yrxseo(_yrxZ_m * 4);
                for (var _yrxC2_ = _yrxIE7 = 0; _yrxC2_ < _yrxZ_m;) {
                    var _yrxlEA = _yrxnRw[_yrxC2_++];
                    _yrxdpH[_yrxIE7++] = _yrxlEA >>> 24 & 255;
                    _yrxdpH[_yrxIE7++] = _yrxlEA >>> 16 & 255;
                    _yrxdpH[_yrxIE7++] = _yrxlEA >>> 8 & 255;
                    _yrxdpH[_yrxIE7++] = _yrxlEA & 255
                }
                return _yrxdpH
            }
        
            function _yrxnRw(_yrx6fP) {
                var _yrxC2_, _yrx9rO, _yrxnRw, _yrxZ_m, _yrxdpH, _yrxlEA, _yrx_Uy, _yrxCmO = _yrx6fP["slice"](0),
                    _yrx6kn = this._yrxg2p, _yrx5TB, _yrxSpK, _yrxBC1 = "floor";
                _yrxnRw = _yrx6kn[0];
                _yrxZ_m = _yrx6kn[1];
                _yrxdpH = _yrx6kn[2];
                _yrxlEA = _yrx6kn[3];
                _yrx_Uy = _yrx6kn[4];
                for (_yrxC2_ = 0; _yrxC2_ <= 79; _yrxC2_++) {
                    if (_yrxC2_ >= 16) {
                        _yrx5TB = _yrxCmO[_yrxC2_ - 3] ^ _yrxCmO[_yrxC2_ - 8] ^ _yrxCmO[_yrxC2_ - 14] ^ _yrxCmO[_yrxC2_ - 16];
                        _yrxCmO[_yrxC2_] = _yrx5TB << 1 | _yrx5TB >>> 31
                    }
                    _yrx5TB = _yrxnRw << 5 | _yrxnRw >>> 27;
                    if (_yrxC2_ <= 19) {
                        _yrxSpK = _yrxZ_m & _yrxdpH | ~_yrxZ_m & _yrxlEA
                    } else if (_yrxC2_ <= 39) {
                        _yrxSpK = _yrxZ_m ^ _yrxdpH ^ _yrxlEA
                    } else if (_yrxC2_ <= 59) {
                        _yrxSpK = _yrxZ_m & _yrxdpH | _yrxZ_m & _yrxlEA | _yrxdpH & _yrxlEA
                    } else if (_yrxC2_ <= 79) {
                        _yrxSpK = _yrxZ_m ^ _yrxdpH ^ _yrxlEA
                    }
                    _yrx9rO = _yrx5TB + _yrxSpK + _yrx_Uy + _yrxCmO[_yrxC2_] + this._yrxXCT[Math["floor"](_yrxC2_ / 20)] | 0;
                    _yrx_Uy = _yrxlEA;
                    _yrxlEA = _yrxdpH;
                    _yrxdpH = _yrxZ_m << 30 | _yrxZ_m >>> 2;
                    _yrxZ_m = _yrxnRw;
                    _yrxnRw = _yrx9rO
                }
                _yrx6kn[0] = _yrx6kn[0] + _yrxnRw | 0;
                _yrx6kn[1] = _yrx6kn[1] + _yrxZ_m | 0;
                _yrx6kn[2] = _yrx6kn[2] + _yrxdpH | 0;
                _yrx6kn[3] = _yrx6kn[3] + _yrxlEA | 0;
                _yrx6kn[4] = _yrx6kn[4] + _yrx_Uy | 0
            }
        }
        
        var _yrxseo = Array
        
        function _yrxdqV(_yrxvAM) {
            var _yrxC2_, _yrx9rO = 0, _yrxnRw;
            _yrxvAM = _yrxeFV(_yrxvAM);
            _yrxnRw = _yrxvAM.length;
            _yrxC2_ = new _yrxseo(_yrxnRw);
            _yrxnRw -= 3;
            while (_yrx9rO < _yrxnRw) {
                _yrxC2_[_yrx9rO] = String.prototype["charCodeAt"]["call"](_yrxvAM, _yrx9rO++);
                _yrxC2_[_yrx9rO] = String.prototype["charCodeAt"]["call"](_yrxvAM, _yrx9rO++);
                _yrxC2_[_yrx9rO] = String.prototype["charCodeAt"]["call"](_yrxvAM, _yrx9rO++);
                _yrxC2_[_yrx9rO] = String.prototype["charCodeAt"]["call"](_yrxvAM, _yrx9rO++)
            }
            _yrxnRw += 3;
            while (_yrx9rO < _yrxnRw)
                _yrxC2_[_yrx9rO] = String.prototype["charCodeAt"]["call"](_yrxvAM, _yrx9rO++);
            return _yrxC2_
        }
        
        var _yrxpP9 = [90, 75, 60, 45]
        
        function _yrxlfm(_yrxtJ1) {
            function _yrxu35() {
                var _yrxmbl = [];
                for (var _yrx9mg = 0; _yrx9mg < 256; ++_yrx9mg) {
                    var _yrxiyJ = _yrx9mg;
                    for (var _yrxB40 = 0; _yrxB40 < 8; ++_yrxB40) {
                        if ((_yrxiyJ & 128) !== 0)
                            _yrxiyJ = _yrxiyJ << 1 ^ 7;
                        else
                            _yrxiyJ <<= 1
                    }
                    _yrxmbl[_yrx9mg] = _yrxiyJ & 255
                }
                return _yrxmbl
            }
        
            function _yrx$q8(_yrxtJ1) {
                if (typeof _yrxtJ1 === "string")
                    _yrxtJ1 = _yrxQ$C(_yrxtJ1);
                var _yrxmbl = $_ts[argarr[1]] || ($_ts[argarr[1]] = _yrxu35());
                var _yrx9mg = 0
                    , _yrxiyJ = _yrxtJ1.length
                    , _yrxB40 = 0;
                while (_yrxB40 < _yrxiyJ) {
                    _yrx9mg = _yrxmbl[(_yrx9mg ^ _yrxtJ1[_yrxB40++]) & 255]
                }
                return _yrx9mg
            }
        
            if (typeof _yrxtJ1 === "string")
                _yrxtJ1 = _yrxQ$C(_yrxtJ1);
            _yrxtJ1 = _yrxtJ1["concat"](_yrxpP9);
            return _yrx$q8(_yrxtJ1)
        }
        
        function _yrxQ$C(_yrxtJ1) {
            var _yrxmbl, _yrx9mg = 0, _yrxiyJ;
            _yrxtJ1 = _yrxH3$(_yrxtJ1);
            _yrxiyJ = _yrxtJ1.length;
            _yrxmbl = new _yrxD3B(_yrxiyJ);
            _yrxiyJ -= 3;
            while (_yrx9mg < _yrxiyJ) {
                _yrxmbl[_yrx9mg] = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx9mg++);
                _yrxmbl[_yrx9mg] = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx9mg++);
                _yrxmbl[_yrx9mg] = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx9mg++);
                _yrxmbl[_yrx9mg] = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx9mg++)
            }
            _yrxiyJ += 3;
            while (_yrx9mg < _yrxiyJ)
                _yrxmbl[_yrx9mg] = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx9mg++);
            return _yrxmbl
        }
        
        function _yrxS_G_691() {
            function _yrx6Xk() {
                var _yrxmbl = _yrxdJ4(_yrxkr0(22) + $_ts[argarr[25]]);
                return _yrxmbl
            }
        
            var _yrxmbl = _yrx6Xk();
            return _yrxmbl["slice"](0, 4)
        }
        
        var _yrxiyJ
        
        function new_wp(_yrx_ol, _yrxtJ1, armin) {
            var _yrxB40 = new _yrxD3B(128)
                , _yrxmbl = 0;
            _yrxB40[_yrxmbl++] = 254;
            _yrxB40[_yrxmbl++] = 3;
            _yrxB40[_yrxmbl++] = _yrxtJ1;
            var _yrx6um = _yrxmbl++;
            _yrxB40[_yrx6um] = undefined;
            _yrxB40[_yrxmbl++] = [129, 128, 0, 0, 0, 0, 0, 0];
            _yrxB40[_yrxmbl++] = 14;
            _yrxB40[_yrxmbl++] = 1;
            _yrxB40[_yrxmbl++] = ts_four(668, armin);
            _yrxB40[_yrxmbl++] = 0;
            _yrxB40[_yrxmbl++] = _yrxeCo;
            _yrxB40[_yrxmbl++] = 5;
            _yrxiyJ = 66112;
            _yrxB40[_yrx6um] = _yrxSth(_yrxiyJ);
            _yrxB40[_yrxmbl++] = 239;
            _yrxB40["splice"](_yrxmbl, _yrxB40.length - _yrxmbl);
            return Array["prototype"].concat["apply"]([], _yrxB40)
        }
        
        function ts_four(tt, armin) {
            var _yrxmbl = _yrxdJ4($_ts[argarr[40]]);
            return _yrxmbl["concat"](armin)
        }
        
        function old_time() {
            return _yrxozw + _yrxYGj() - _yrxB27
        }
        
        var _yrxB40, _yrx6um, _yrxFd8, _yrx8zK
        
        function four_array($zC, _yrxtJ1, _yrxDnL, _yrxMd3) {
            var _yrxmbl = aiding_arg1;
            var _yrx9mg = "";
            var _yrxiyJ = _yrx6fp();
            _yrxmbl = String.prototype["charAt"]["call"](_yrxiyJ, 0);
            _yrxB40 = _yrxdJ4(String.prototype["substring"]["call"](_yrxiyJ, 1));
            _yrx6um = _yrxB40[64 + 1];
            for (_yrxFd8 = 0; _yrxFd8 < 64 + 1; _yrxFd8++) {
                _yrxB40[_yrxFd8] ^= _yrx6um
            }
            _yrx9mg = _yrxB40["slice"](0, 64 + 1);
            _yrx8zK = _yrxB40["slice"](64 + 2);
            return [_yrxmbl, _yrx9mg, _yrx6um, _yrx8zK]
        }
        
        function _yrx6fp() {
            return _yrxitF
        }
        
        function _yrxB3q() {
            var _yrxmbl = _yrxdJ4(_yrxkr0(21) + $_ts[argarr[6]]);
            // _yrxMi4(4096, _yrxmbl.length !== 32);
            return _yrxa$o(_yrxmbl)
        }
        
        var _yrx9mg, _yrxeCo
        
        function _yrx$tH() {
            var _yrxiyJ = _yrxkr0(26);
            _yrx9mg = _yrxRaI_78(78, _yrxiyJ);
            _yrxeCo = _yrx9mg
        }
        
        var _yrxmbl
        
        function _yrxRaI_78(_yrx8LV, _yrxB7w) {
            _yrxmbl = _yrxGgv(_yrxB7w, _yrx5ih());
            return _yrxmbl
        }
        
        function _yrxGgv(_yrxtJ1, _yrxDnL) {
            var _yrxmbl = _yrxdJ4(_yrxtJ1);
            var _yrx9mg = new _yrxUQA(_yrxDnL);
            return _yrx9mg._yrxCxm(_yrxmbl, true)
        }
        
        function _yrxUQA(_yrxtJ1, _yrxDnL) {
            var _yrxmbl = _yrxdZQ()
                , _yrxqAs = _yrxmbl[0]
                , _yrxPYy = _yrxmbl[1];
            if (!_yrxqAs[0][0] && !_yrxqAs[0][1]) {
                _yrxyum(_yrxDnL, _yrxqAs, _yrxPYy)
            }
            var _yrxs0x = _yrxRi8(_yrxtJ1, _yrxqAs, _yrxPYy);
        
            function _yrx9mg(_yrxB7w, _yrxxAF) {
                var _yrxmbl = Math["floor"](_yrxB7w.length / 16) + 1, _yrx9mg, _yrxiyJ = [], _yrxB40 = 16 - _yrxB7w.length % 16,
                    _yrx6um, _yrxFd8;
                if (_yrxxAF) {
                    _yrxiyJ = _yrx6um = _yrxqge()
                }
                var _yrx8zK = _yrxB7w["slice"](0);
                _yrxFd8 = _yrxB7w.length + _yrxB40;
                for (_yrx9mg = _yrxB7w.length; _yrx9mg < _yrxFd8;)
                    _yrx8zK[_yrx9mg++] = _yrxB40;
                _yrx8zK = _yrx6Vr(_yrx8zK);
                for (_yrx9mg = 0; _yrx9mg < _yrxmbl;) {
                    _yrxFd8 = _yrx8zK["slice"](_yrx9mg << 2, ++_yrx9mg << 2);
                    _yrxFd8 = _yrx6um ? _yrxznI(_yrxFd8, _yrx6um) : _yrxFd8;
                    _yrx6um = _yrxbN0(_yrxs0x, _yrxFd8, 0, _yrxqAs);
                    _yrxiyJ = _yrxiyJ["concat"](_yrx6um)
                }
                return _yrxTcE(_yrxiyJ)
            }
        
            function _yrxiyJ(_yrxB7w, _yrxxAF) {
                var _yrxmbl, _yrx9mg, _yrxiyJ, _yrxB40, _yrx6um = [], _yrxFd8, _yrx8zK;
                _yrxB7w = _yrx6Vr(_yrxB7w);
                if (_yrxxAF) {
                    _yrx8zK = _yrxB7w["slice"](0, 4);
                    _yrxB7w = _yrxB7w["slice"](4)
                }
                _yrxmbl = _yrxB7w.length / 4;
                for (_yrx9mg = 0; _yrx9mg < _yrxmbl;) {
                    _yrxB40 = _yrxB7w["slice"](_yrx9mg << 2, ++_yrx9mg << 2);
                    _yrxiyJ = _yrxbN0(_yrxs0x, _yrxB40, 1, _yrxPYy);
                    _yrx6um = _yrx6um["concat"](_yrx8zK ? _yrxznI(_yrxiyJ, _yrx8zK) : _yrxiyJ);
                    _yrx8zK = _yrxB40
                }
                _yrx6um = _yrxTcE(_yrx6um);
                _yrxFd8 = _yrx6um[_yrx6um.length - 1];
                _yrx6um["splice"](_yrx6um.length - _yrxFd8, _yrxFd8);
                return _yrx6um
            }
        
            var _yrxB40 = {};
            _yrxB40._yrxJo8 = _yrx9mg;
            _yrxB40._yrxCxm = _yrxiyJ;
            return _yrxB40
        }
        
        var _yrxF6D
        
        function _yrxTcE(_yrxtJ1) {
            var _yrxmbl = _yrxtJ1.length, _yrx9mg = _yrxF6D = 0, _yrxiyJ = _yrxtJ1.length * 4, _yrxB40, _yrx6um;
            _yrx6um = new _yrxD3B(_yrxiyJ);
            while (_yrx9mg < _yrxmbl) {
                _yrxB40 = _yrxtJ1[_yrx9mg++];
                _yrx6um[_yrxF6D++] = _yrxB40 >>> 24 & 255;
                _yrx6um[_yrxF6D++] = _yrxB40 >>> 16 & 255;
                _yrx6um[_yrxF6D++] = _yrxB40 >>> 8 & 255;
                _yrx6um[_yrxF6D++] = _yrxB40 & 255
            }
            return _yrx6um
        }
        
        function _yrxbN0(_yrxtJ1, _yrxDnL, _yrxMd3, _yrx4kO) {
            var _yrxmbl = _yrxtJ1[_yrxMd3], _yrx9mg = _yrxDnL[0] ^ _yrxmbl[0], _yrxiyJ = _yrxDnL[_yrxMd3 ? 3 : 1] ^ _yrxmbl[1],
                _yrxB40 = _yrxDnL[2] ^ _yrxmbl[2], _yrx6um = _yrxDnL[_yrxMd3 ? 1 : 3] ^ _yrxmbl[3], _yrxFd8, _yrx8zK, _yrx2TP,
                _yrxjKb = _yrxmbl.length / 4 - 2, _yrxHwI, _yrxrid = 4, _yrxpW8 = [0, 0, 0, 0], _yrx1sj = _yrx4kO[0],
                _yrxpnb = _yrx4kO[1], _yrx8LV = _yrx4kO[2], _yrxMXv = _yrx4kO[3], _yrxAOV = _yrx4kO[4];
            for (_yrxHwI = 0; _yrxHwI < _yrxjKb; _yrxHwI++) {
                _yrxFd8 = _yrx1sj[_yrx9mg >>> 24] ^ _yrxpnb[_yrxiyJ >> 16 & 255] ^ _yrx8LV[_yrxB40 >> 8 & 255] ^ _yrxMXv[_yrx6um & 255] ^ _yrxmbl[_yrxrid];
                _yrx8zK = _yrx1sj[_yrxiyJ >>> 24] ^ _yrxpnb[_yrxB40 >> 16 & 255] ^ _yrx8LV[_yrx6um >> 8 & 255] ^ _yrxMXv[_yrx9mg & 255] ^ _yrxmbl[_yrxrid + 1];
                _yrx2TP = _yrx1sj[_yrxB40 >>> 24] ^ _yrxpnb[_yrx6um >> 16 & 255] ^ _yrx8LV[_yrx9mg >> 8 & 255] ^ _yrxMXv[_yrxiyJ & 255] ^ _yrxmbl[_yrxrid + 2];
                _yrx6um = _yrx1sj[_yrx6um >>> 24] ^ _yrxpnb[_yrx9mg >> 16 & 255] ^ _yrx8LV[_yrxiyJ >> 8 & 255] ^ _yrxMXv[_yrxB40 & 255] ^ _yrxmbl[_yrxrid + 3];
                _yrxrid += 4;
                _yrx9mg = _yrxFd8;
                _yrxiyJ = _yrx8zK;
                _yrxB40 = _yrx2TP
            }
            for (_yrxHwI = 0; _yrxHwI < 4; _yrxHwI++) {
                _yrxpW8[_yrxMd3 ? 3 & -_yrxHwI : _yrxHwI] = _yrxAOV[_yrx9mg >>> 24] << 24 ^ _yrxAOV[_yrxiyJ >> 16 & 255] << 16 ^ _yrxAOV[_yrxB40 >> 8 & 255] << 8 ^ _yrxAOV[_yrx6um & 255] ^ _yrxmbl[_yrxrid++];
                _yrxFd8 = _yrx9mg;
                _yrx9mg = _yrxiyJ;
                _yrxiyJ = _yrxB40;
                _yrxB40 = _yrx6um;
                _yrx6um = _yrxFd8
            }
            return _yrxpW8
        }
        
        function _yrxznI(_yrxtJ1, _yrxDnL) {
            return [_yrxtJ1[0] ^ _yrxDnL[0], _yrxtJ1[1] ^ _yrxDnL[1], _yrxtJ1[2] ^ _yrxDnL[2], _yrxtJ1[3] ^ _yrxDnL[3]]
        }
        
        function _yrxqge() {
            return [_yrxVhD(4294967295), _yrxVhD(4294967295), _yrxVhD(4294967295), _yrxVhD(4294967295)]
        }
        
        function _yrxVhD(_yrxtJ1) {
            return window.ccc + window.aaa
        }
        
        function _yrxRi8(_yrxtJ1, _yrxDnL, _yrxMd3) {
            var _yrxmbl = _yrxtJ1;
            if (_yrxtJ1.length % 16 !== 0)
                _yrxmbl = _yrxE5D(_yrxtJ1);
            if (_yrxmbl.length === 10) {
                var _yrx9mg = _yrxSVn(_yrxmbl);
            } else {
                var _yrx9mg = _yrx6Vr(_yrxmbl);
            }
            var _yrxiyJ, _yrxB40, _yrx6um, _yrxFd8, _yrx8zK, _yrx2TP = _yrxDnL[4], _yrxjKb = _yrx9mg.length, _yrxHwI = 1;
            var _yrxFd8 = _yrx9mg["slice"](0);
            var _yrx8zK = [];
            for (_yrxiyJ = _yrxjKb; _yrxiyJ < 4 * _yrxjKb + 28; _yrxiyJ++) {
                _yrx6um = _yrxFd8[_yrxiyJ - 1];
                if (_yrxiyJ % _yrxjKb === 0 || _yrxjKb === 8 && _yrxiyJ % _yrxjKb === 4) {
                    _yrx6um = _yrx2TP[_yrx6um >>> 24] << 24 ^ _yrx2TP[_yrx6um >> 16 & 255] << 16 ^ _yrx2TP[_yrx6um >> 8 & 255] << 8 ^ _yrx2TP[_yrx6um & 255];
                    if (_yrxiyJ % _yrxjKb === 0) {
                        _yrx6um = _yrx6um << 8 ^ _yrx6um >>> 24 ^ _yrxHwI << 24;
                        _yrxHwI = _yrxHwI << 1 ^ (_yrxHwI >> 7) * 283
                    }
                }
                _yrxFd8[_yrxiyJ] = _yrxFd8[_yrxiyJ - _yrxjKb] ^ _yrx6um
            }
            for (_yrxB40 = 0; _yrxiyJ; _yrxB40++,
                _yrxiyJ--) {
                _yrx6um = _yrxFd8[_yrxB40 & 3 ? _yrxiyJ : _yrxiyJ - 4];
                if (_yrxiyJ <= 4 || _yrxB40 < 4) {
                    _yrx8zK[_yrxB40] = _yrx6um
                } else {
                    _yrx8zK[_yrxB40] = _yrxMd3[0][_yrx2TP[_yrx6um >>> 24]] ^ _yrxMd3[1][_yrx2TP[_yrx6um >> 16 & 255]] ^ _yrxMd3[2][_yrx2TP[_yrx6um >> 8 & 255]] ^ _yrxMd3[3][_yrx2TP[_yrx6um & 255]]
                }
            }
            return [_yrxFd8, _yrx8zK]
        }
        
        var _yrxqXj = 1
        
        function _yrxE5D(_yrxtJ1) {
            var _yrxmbl = _yrxtJ1["slice"](0);
            if (_yrxmbl.length < 5) {
                return
            }
            var _yrx9mg = _yrxmbl.pop();
            var _yrxiyJ = 0
                , _yrxB40 = _yrxmbl.length;
            while (_yrxiyJ < _yrxB40) {
                _yrxmbl[_yrxiyJ++] ^= _yrx9mg
            }
            var _yrx6um = _yrxmbl.length - 4;
            var _yrxFd8 = _yrxdJZ() - _yrx6Vr(_yrxmbl["slice"](_yrx6um))[0];
            _yrxmbl = _yrxmbl["slice"](0, _yrx6um);
            var _yrx8zK = window.Math["floor"](window["Math"].log(_yrxFd8 / 1.164 + 1));
            var _yrx2TP = _yrxmbl.length;
            var _yrxjKb = [0, $_ts[argarr[2]]][_yrxqXj];
            _yrxiyJ = 0;
            while (_yrxiyJ < _yrx2TP) {
                _yrxmbl[_yrxiyJ] = _yrx8zK | _yrxmbl[_yrxiyJ++] ^ _yrxjKb
            }
            // _yrxi67(8, _yrx8zK);
            return _yrxmbl
        }
        
        function _yrx6Vr(_yrxtJ1) {
            var _yrxmbl = _yrxtJ1.length / 4
                , _yrx9mg = 0
                , _yrxiyJ = 0
                , _yrxB40 = _yrxtJ1.length;
            var _yrx6um = new _yrxD3B(_yrxmbl);
            while (_yrx9mg < _yrxB40) {
                _yrx6um[_yrxiyJ++] = _yrxtJ1[_yrx9mg++] << 24 | _yrxtJ1[_yrx9mg++] << 16 | _yrxtJ1[_yrx9mg++] << 8 | _yrxtJ1[_yrx9mg++]
            }
            return _yrx6um
        }
        
        function _yrxyum(_yrxtJ1, _yrxDnL, _yrxMd3) {
            var _yrxmbl = _yrxDnL[4], _yrx9mg = _yrxMd3[4], _yrxiyJ, _yrxB40, _yrx6um, _yrxFd8 = [], _yrx8zK = [], _yrx2TP,
                _yrxjKb, _yrxHwI, _yrxrid, _yrxpW8, _yrx1sj;
            for (_yrxiyJ = 0; _yrxiyJ < 256; _yrxiyJ++) {
                _yrx8zK[(_yrxFd8[_yrxiyJ] = _yrxiyJ << 1 ^ (_yrxiyJ >> 7) * 283) ^ _yrxiyJ] = _yrxiyJ
            }
            for (_yrxB40 = _yrx6um = 0; !_yrxmbl[_yrxB40]; _yrxB40 ^= _yrx2TP || 1,
                _yrx6um = _yrx8zK[_yrx6um] || 1) {
                _yrxrid = _yrx6um ^ _yrx6um << 1 ^ _yrx6um << 2 ^ _yrx6um << 3 ^ _yrx6um << 4;
                _yrxrid = _yrxrid >> 8 ^ _yrxrid & 255 ^ 99;
                _yrxmbl[_yrxB40] = _yrxrid;
                _yrx9mg[_yrxrid] = _yrxB40;
                _yrx2TP = _yrxFd8[_yrxB40]
            }
            for (_yrxiyJ = 0; _yrxiyJ < 256; _yrxiyJ++) {
                _yrx9mg[_yrxmbl[_yrxiyJ]] = _yrxiyJ
            }
            for (_yrxB40 = 0; _yrxB40 < 256; _yrxB40++) {
                _yrxrid = _yrxmbl[_yrxB40];
                _yrxHwI = _yrxFd8[_yrxjKb = _yrxFd8[_yrx2TP = _yrxFd8[_yrxB40]]];
                _yrx1sj = _yrxHwI * 16843009 ^ _yrxjKb * 65537 ^ _yrx2TP * 257 ^ _yrxB40 * 16843008;
                _yrxpW8 = _yrxFd8[_yrxrid] * 257 ^ _yrxrid * 16843008;
                for (_yrxiyJ = 0; _yrxiyJ < 4; _yrxiyJ++) {
                    _yrxDnL[_yrxiyJ][_yrxB40] = _yrxpW8 = _yrxpW8 << 24 ^ _yrxpW8 >>> 8;
                    _yrxMd3[_yrxiyJ][_yrxrid] = _yrx1sj = _yrx1sj << 24 ^ _yrx1sj >>> 8
                }
            }
            for (_yrxiyJ = 0; _yrxiyJ < 5; _yrxiyJ++) {
                _yrxDnL[_yrxiyJ] = _yrxDnL[_yrxiyJ]["slice"](0);
                _yrxMd3[_yrxiyJ] = _yrxMd3[_yrxiyJ]["slice"](0)
            }
        }
        
        function _yrx5ih() {
            var _yrxmbl = _yrxdJ4(_yrxkr0(19) + $_ts[argarr[4]]);
            return _yrxa$o(_yrxmbl)
        }
        
        function _yrxa$o(_yrxtJ1) {
            var _yrxmbl = window.bbb + window.aaa;
            _yrxtJ1 = _yrxtJ1["concat"](_yrxSth(_yrxdJZ()));
            for (var _yrx9mg = 0; _yrx9mg < _yrxtJ1.length; _yrx9mg++) {
                _yrxtJ1[_yrx9mg] ^= _yrxmbl
            }
            _yrxtJ1[_yrx9mg] = _yrxmbl;
            return _yrxtJ1
        }
        
        function _yrxSth(_yrxtJ1) {
            return [_yrxtJ1 >>> 24 & 255, _yrxtJ1 >>> 16 & 255, _yrxtJ1 >>> 8 & 255, _yrxtJ1 & 255]
        }
        
        function _yrxdJZ() {
            return window.Math["ceil"](new _yrxeFV()["getTime"]() / 1000)
        }
        
        var _yrxdZQ
        
        function _yrxsIp() {
            var _yrxqAs = [[], [], [], [], []];
            var _yrxPYy = [[], [], [], [], []];
            _yrxdZQ = _yrxmbl;
        
            function _yrxmbl(_yrxB7w) {
                return [_yrxqAs, _yrxPYy]
            }
        }
        
        var _yrxWaA, _yrxozw, _yrxB27
        
        function _yrxLYu() {
            _yrxWaA = [0, 0];
            var _yrx9mg = _yrxWaA[0];
            var _yrxiyJ = _yrxWaA[1];
            var _yrxB40 = _yrx6U9(_yrxFV3(25));
            _yrxozw = _yrxB40;
            _yrxB27 = _yrxYGj()
        }
        
        function _yrxYGj() {
            return 1601028914126
        }
        
        function _yrxFV3(_yrxtJ1) {
            return _yrxfXZ(_yrxkr0(_yrxtJ1))
        }
        
        function _yrxfXZ(_yrxtJ1) {
            return _yrxdFo(_yrxCwK(_yrxtJ1))
        }
        
        function _yrxdFo(_yrxtJ1) {
            var _yrxmbl = [], _yrx9mg, _yrxiyJ, _yrxB40, _yrx6um = String.prototype["charCodeAt"]["call"]("?", 0);
            for (_yrx9mg = 0; _yrx9mg < _yrxtJ1.length;) {
                _yrxiyJ = _yrxtJ1[_yrx9mg];
                if (_yrxiyJ < 128) {
                    _yrxB40 = _yrxiyJ
                } else if (_yrxiyJ < 192) {
                    _yrxB40 = _yrx6um
                } else if (_yrxiyJ < 224) {
                    _yrxB40 = (_yrxiyJ & 63) << 6 | _yrxtJ1[_yrx9mg + 1] & 63;
                    _yrx9mg++
                } else if (_yrxiyJ < 240) {
                    _yrxB40 = (_yrxiyJ & 15) << 12 | (_yrxtJ1[_yrx9mg + 1] & 63) << 6 | _yrxtJ1[_yrx9mg + 2] & 63;
                    _yrx9mg += 2
                } else if (_yrxiyJ < 248) {
                    _yrxB40 = _yrx6um;
                    _yrx9mg += 3
                } else if (_yrxiyJ < 252) {
                    _yrxB40 = _yrx6um;
                    _yrx9mg += 4
                } else if (_yrxiyJ < 254) {
                    _yrxB40 = _yrx6um;
                    _yrx9mg += 5
                } else {
                    _yrxB40 = _yrx6um
                }
                _yrx9mg++;
                _yrxmbl.push(_yrxB40)
            }
            return _yrxA53(_yrxmbl)
        }
        
        var aiding_arg1
        
        function _yrxA53(_yrxtJ1, _yrxDnL, _yrxMd3) {
            _yrxDnL = _yrxDnL || 0;
            if (_yrxMd3 === aiding_arg1)
                _yrxMd3 = _yrxtJ1.length;
            var _yrxmbl = new _yrxD3B(Math["ceil"](_yrxtJ1.length / 40960))
                , _yrx9mg = _yrxMd3 - 40960
                , _yrxiyJ = 0;
            while (_yrxDnL < _yrx9mg) {
                _yrxmbl[_yrxiyJ++] = _yrxpbG["apply"](null, _yrxtJ1["slice"](_yrxDnL, _yrxDnL += 40960))
            }
            if (_yrxDnL < _yrxMd3)
                _yrxmbl[_yrxiyJ++] = _yrxpbG["apply"](null, _yrxtJ1["slice"](_yrxDnL, _yrxMd3));
            return _yrxmbl.join("")
        }
        
        function _yrxCwK(_yrxtJ1) {
            var _yrxmbl = _yrxdJ4(_yrxtJ1), _yrx9mg = (_yrxmbl[0] << 8) + _yrxmbl[1], _yrxiyJ = _yrxmbl.length, _yrxB40;
            for (_yrxB40 = 2; _yrxB40 < _yrxiyJ; _yrxB40 += 2) {
                _yrxmbl[_yrxB40] ^= _yrx9mg >> 8 & 255;
                if (_yrxB40 + 1 < _yrxiyJ)
                    _yrxmbl[_yrxB40 + 1] ^= _yrx9mg & 255;
                _yrx9mg++
            }
            return _yrxmbl["slice"](2)
        }
        
        function _yrxdJ4(_yrxtJ1) {
            var _yrxmbl = _yrxtJ1.length
                , _yrx9mg = new _yrxD3B(Math["floor"](_yrxmbl * 3 / 4));
            var _yrxiyJ, _yrxB40, _yrx6um, _yrxFd8;
            var _yrx8zK = 0
                , _yrx2TP = 0
                , _yrxjKb = _yrxmbl - 3;
            for (_yrx8zK = 0; _yrx8zK < _yrxjKb;) {
                _yrxiyJ = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrxB40 = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrx6um = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrxFd8 = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrx9mg[_yrx2TP++] = _yrxjxG[_yrxiyJ] | _yrxTNs[_yrxB40];
                _yrx9mg[_yrx2TP++] = _yrxb0B[_yrxB40] | _yrx2VK[_yrx6um];
                _yrx9mg[_yrx2TP++] = _yrxvnj[_yrx6um] | _yrxsNG[_yrxFd8]
            }
            if (_yrx8zK < _yrxmbl) {
                _yrxiyJ = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrxB40 = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK++);
                _yrx9mg[_yrx2TP++] = _yrxjxG[_yrxiyJ] | _yrxTNs[_yrxB40];
                if (_yrx8zK < _yrxmbl) {
                    _yrx6um = String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrx8zK);
                    _yrx9mg[_yrx2TP++] = _yrxb0B[_yrxB40] | _yrx2VK[_yrx6um]
                }
            }
            return _yrx9mg
        }
        
        var _yrxkr0
        
        function _yrxRTX(_yrxtJ1) {
            var _yrxmbl = _yrxtJ1.length, _yrxqAs = 0, _yrx9mg, _yrxiyJ = 0;
            var _yrxB40 = _yrx6um();
            var _yrxPYy = new _yrxD3B(_yrxB40);
            while (_yrxqAs < _yrxmbl) {
                _yrx9mg = _yrx6um();
                _yrxPYy[_yrxiyJ++] = String.prototype["substr"]["call"](_yrxtJ1, _yrxqAs, _yrx9mg);
                _yrxqAs += _yrx9mg
            }
            _yrxkr0 = _yrxFd8;
        
            function _yrx6um() {
                var _yrxmbl = _yrxsNG[String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrxqAs++)];
                if (_yrxmbl < 0) {
                    return _yrxsNG[String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrxqAs++)] * 7396 + _yrxsNG[String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrxqAs++)] * 86 + _yrxsNG[String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrxqAs++)]
                } else if (_yrxmbl < 64) {
                    return _yrxmbl
                } else if (_yrxmbl <= 86) {
                    return _yrxmbl * 86 + _yrxsNG[String.prototype["charCodeAt"]["call"](_yrxtJ1, _yrxqAs++)] - 5440
                }
            }
        
            function _yrxFd8(_yrxB7w) {
                var _yrxmbl = _yrxB7w % 64;
                var _yrx9mg = _yrxB7w - _yrxmbl;
                _yrxmbl = _yrxfzV(_yrxmbl);
                _yrxmbl ^= $_ts[argarr[23]];
                _yrx9mg += _yrxmbl;
                return _yrxPYy[_yrx9mg]
            }
        }
        
        function _yrxfzV(_yrxtJ1) {
            var _yrxmbl = [0, 1, 3, 7, 15, 31];
            return _yrxtJ1 >> $_ts[argarr[24]] | (_yrxtJ1 & _yrxmbl[$_ts[argarr[24]]]) << 6 - $_ts[argarr[24]]
        }
        
        var _yrxxDc = String.prototype["split"]["call"]("qrcklmDoExthWJiHAp1sVYKU3RFMQw8IGfPO92bvLNj.7zXBaSnu0TC6gy_4Ze5d{}|~ !#$%()*+,-;=?@[]^", "");
        var _yrxjxG = []
            , _yrxTNs = []
            , _yrxb0B = []
            , _yrx2VK = []
            , _yrxvnj = []
            , _yrxsNG = [];
        var _yrx$_7
        
        function _yrx8LV() {
            for (_yrx$_7 = 0; _yrx$_7 <= 255; _yrx$_7++) {
                _yrxsNG[_yrx$_7] = -1
            }
            for (_yrx$_7 = 0; _yrx$_7 < _yrxxDc.length; _yrx$_7++) {
                var _yrxmbl = String.prototype["charCodeAt"]["call"](_yrxxDc[_yrx$_7], 0);
                _yrxjxG[_yrxmbl] = _yrx$_7 << 2;
                _yrxTNs[_yrxmbl] = _yrx$_7 >> 4;
                _yrxb0B[_yrxmbl] = (_yrx$_7 & 15) << 4;
                _yrx2VK[_yrxmbl] = _yrx$_7 >> 2;
                _yrxvnj[_yrxmbl] = (_yrx$_7 & 3) << 6;
                _yrxsNG[_yrxmbl] = _yrx$_7
            }
        }
        
        function _yrxwbi(_yrx7jl) {
            return _yrxx1M(_yrx7jl, _yrxsK7())
        }
        
        function _yrxx1M(_yrx7jl, _yrxcze, _yrxyqC) {
            return _yrx$tI(_yrxHCZ(_yrx7jl, _yrxcze, _yrxyqC))
        }
        
        function _yrxHCZ(_yrx7jl, _yrxcze, _yrxyqC) {
            if (typeof _yrx7jl === _yrxQ9C[6])
                _yrx7jl = _yrxTZR(_yrx7jl);
            var _yrxrqQ = _yrxUQA(_yrxcze, _yrxyqC);
            return _yrxrqQ._yrxJo8(_yrx7jl, true)
        }
        
        function _yrxsK7() {
            var _yrxrqQ = _yrxdJ4("EgWWundefined");
            return _yrxHad(_yrxrqQ)
        }
        
        function _yrxHad(_yrx7jl) {
            var _yrxrqQ = Math[_yrxQ9C[55]](Math[_yrxQ9C[550]]() * 256);
            _yrx7jl = _yrx7jl[_yrxQ9C[8]](_yrxeh1(_yrxXOl()));
            for (var _yrx$Kn = 0; _yrx$Kn < _yrx7jl.length; _yrx$Kn++) {
                _yrx7jl[_yrx$Kn] ^= _yrxrqQ
            }
            _yrx7jl[_yrx$Kn] = _yrxrqQ;
            return _yrx7jl
        }
        
        function _yrxeh1(_yrx7jl) {
            return [(_yrx7jl >>> 24) & 0xFF, (_yrx7jl >>> 16) & 0xFF, (_yrx7jl >>> 8) & 0xFF, _yrx7jl & 0xFF]
        }
        
        function _yrxXOl() {
            return Math[_yrxQ9C[55]](new Date()[_yrxQ9C[69]]() / 1000)
        }
        
        function get_url(page, aaa, bbb, ccc, ddd) {
        	page = parseInt(page)
            window.aaa = parseInt(aaa)
            window.bbb = parseInt(bbb)
            window.ccc = parseInt(ccc)
            window.ddd = parseInt(ddd)
            var url = "/api/match/10"
            var real_url = url + "?page=" + page
            var _yrxmEu1 = _yrxWKg(unescape(encodeURIComponent(real_url)).toUpperCase());
            real_url = real_url + "&"
            var _yrxrqQ = []
            var _yrx$Kn = ''
            var _yrxays = '{qqqqqqqqq~F3F2Y0r8FDwZzST.0m833g1O8K3Lp5rUZVIEcS2.5cJl.aG4FKElt0sBukW2APm.aigTYNPnEiHGB.rsZldYKLmjhKMlS.a14qdQvjSF.ttGuXYj_J4ZD_ubMJXyYvnjaEiNKXmjLtEaVbP_1Wtzp_c8AcRE7CAtcJzEWjnB1kL9o9pK9mgzFLnu3cMGOX2DhxMZHnGFTt7Qhzft6EgVMbYj4hylyunHiJEAxbfUmkF7XpArhr2Jp8YRTsDll3TWSYsTW3SlSqsGkIpl0rKVKFpq9soVlwTW2Y1mWISlzhY70Un2nxPGKMAehKUfUxamAY0GuV1Y_YfGSAmzUhoVzVsxkclyRc80qKXecN.sWZDpUvSdYGoST5hq.nynMpWTcSGZ99KpMJ0B24Wpp33Bjo3ePE0_BzQLBpi9r0l4096hdtX.i.ivhmjqqqqqqqqqDdfe167kR2El3leHql3650hAuA1Wm3ZJmRr0qq!x7z,aac,amr,asm,avi,bak,bat,bmp,bin,c,cab,css,csv,com,cpp,dat,dll,doc,dot,docx,exe,eot,fla,flc,fon,fot,font,gdb,gif,gz,gho,hlp,hpp,htc,ico,ini,inf,ins,iso,js,jar,jpg,jpeg,json,java,lib,log,mid,mp4,mpa,m4a,mp3,mpg,mkv,mod,mov,mim,mpp,msi,mpeg,obj,ocx,ogg,olb,ole,otf,py,pyc,pas,pgm,ppm,pps,ppt,pdf,pptx,png,pic,pli,psd,qif,qtx,ra,rm,ram,rmvb,reg,res,rtf,rar,so,sbl,sfx,swa,swf,svg,sys,tar,taz,tif,tiff,torrent,txt,ttf,vsd,vss,vsw,vxd,woff,woff2,wmv,wma,wav,wps,xbm,xpm,xls,xlsx,xsl,xml,z,zip,apk,plist,ipaqqqqqM1L25X6idI4fnXojgI.z5XU_9I_Q{.DGZ.J1G9Eoe4RoJ08CrTRupbwbxeQUpjJoRdwUTLQv0.xcG7EmJyV6eowqTnAUJcQ2x_mPqFhfJ01CScIVTXAbGqF9JBY6JIFpSCYvpsM20HRSRYxYAGV1ephYWqr1r4k162hZrX5whI412tqq}!iAgmRTwdsDARRVrPUcgMImrSUUJUJp2SU1AMpKR0Y6rKImTrRO0Rs2fWUrZMsUrUwCpWwYwb8m2dlmRiUDmg3K26KbYQAUmEwKRFq9mPAo2zp2zIk6rbQArOsKLhwKSNQKS3UomQsvR.w2ArwOJno9N.1qeNQlWG1GwOo9WFFop4xUy7Ds23Hla0roqUoAl93qr6lC98ksp6FVq5UGpnDlq7DCqqqqqqXAOo30eljTuAgmeehhIUrtA;4kUyzUi8kgD7ll6J2MqFBA;k136EQOTwklqJ|gc10eslSeWlfIq0ms3Vz7rVrl3TRSDkNJ10rt3KSGM6wLpKwWUVpc8la.Wkfjrm9WpnJtw0EfFSfGhmZ9FrJEkYZQIqecmo9mYG9ZH0EP31xQiUSOFueM3s0IM1JQMuafKny3oC3z3sS.kC3OMap4EYrsAn2Lh27nApZZKbgf82NrEbZNpqezJuzcAnRkxYgZVSSJplV5UuxHlkG0Y922mTg5Qczkh6rxs7J2SvHMA7rEasuQMWztyDIIHZwhybsyK8yD4mvm1.ymC2kE8XrenTOGKWxvZ2uXKeYlVMqTwimVCKszMxYZ9Knp3r0t1074790432Y3HGMHwnXHqzPTCrao7BEU';
            var _yrxVMl = {
                "scj": [],
                "_yrxdD_": ["_yrxvn$", "_yrxnIK", "_yrxw3G", "_yrx4Sh", "_yrx8LV", "_yrx1e8", "_yrxc$E", "_yrxIEc", "_yrx9zH", "_yrxYeM", "_yrxlCm", "_yrxUlA", "_yrx6L9", "_yrxCZ3", "_yrxC72", "_yrxEvO", "_yrxksc", "_yrxbDF", "_yrxVrt", "_yrxlQ1", "_yrxYZC", "_yrxdDm", "_yrxFpw", "_yrxJPo", "_yrxfMk", "_yrxpnH", "_yrxyLY", "_yrxEH7", "_yrxwaS", "_yrxXGq", "_yrxdJ4", "_yrxANR", "_yrx9K2", "_yrxCIU", "_yrx_yd", "_yrx5El", "_yrxGxQ", "_yrxDnL", "_yrxgie", "_yrxBoU", "_yrxAv3", "_yrx9XC", "_yrxqy0", "_yrxIvz", "_yrxHpk", "_yrxQsc", "_yrxZXD", "_yrxEM9", "_yrx1x3", "_yrxyum", "_yrxa$M", "_yrxbFy", "_yrxUQ9", "_yrx0N3", "_yrx_Mu", "_yrx4vh", "_yrxphR", "_yrxuIo", "_yrxuHi", "_yrxh5_", "_yrx$re", "_yrxA_W", "_yrxtCE", "_yrxEIH", "_yrxOWU", "_yrxgbu", "_yrxrIo", "_yrxrp_", "_yrxQfa", "_yrxzw0", "_yrxzO0", "_yrxCwK", "_yrxxoO", "_yrxEvl", "_yrx148", "_yrx6sx", "_yrxgJ7", "_yrxzWA", "_yrxbvq", "_yrxMXv", "_yrxEG0", "_yrx1Gh", "_yrxDvn", "_yrxbUG", "_yrx6Ot", "_yrxuxO", "_yrx5T2", "_yrxDH0", "_yrx78n", "_yrxl1W", "_yrxRph", "_yrxhP3", "_yrxYTK", "_yrxB2k", "_yrx8IE", "_yrxiSq", "_yrxRVO", "_yrxkm0", "_yrx3xY", "_yrxFfV", "_yrxL82", "_yrxo5n", "_yrxIE7", "_yrxIN8", "_yrxvah", "_yrxCkZ", "_yrx5Tr", "_yrxKQ7", "_yrxs3J", "_yrx3Zy", "_yrxbVe", "_yrxvpX", "_yrxNy7", "_yrxX7$", "_yrxguY", "_yrxsCY", "_yrx$Rr", "_yrxCKr", "_yrxLm1", "_yrxf$v", "_yrx38N", "_yrxesH", "_yrxBFw", "_yrxaXm", "_yrxKtx", "_yrx62w", "_yrxbzo", "_yrxd$z", "_yrxRNY", "_yrxa01", "_yrxzX3", "_yrxPh$", "_yrxo3Y", "_yrxueR", "_yrxesu", "_yrxZxk", "_yrxFhg", "_yrx1DZ", "_yrxlgb", "_yrx1Dk", "_yrxjRT", "_yrxXZS", "_yrxIZD", "_yrxxLm", "_yrxReq", "_yrxSGY", "_yrxobT", "_yrxLxA", "_yrxljD", "_yrx7Ua", "_yrxIAZ", "_yrxB7N", "_yrxY3F", "_yrxNar", "_yrxeDY", "_yrxxFM", "_yrxYdQ", "_yrxoIx", "_yrxXLs", "_yrxskY", "_yrxOzH", "_yrxRHC", "_yrxdD_", "_yrxF9v", "_yrxSQs", "_yrxXKo", "_yrxe_I", "_yrxkdW", "_yrxjQZ", "_yrxrl5", "_yrx9Cs", "_yrxwrM", "_yrxxuf", "_yrxG1y", "_yrxBeS", "_yrxIR_", "_yrxa05", "_yrxJzA", "_yrxpzH", "_yrx2Qi", "_yrxlS3", "_yrxh$_", "_yrxcUJ", "_yrxHzD", "_yrxkbM", "_yrxtjm", "_yrxujQ", "_yrxQ2N", "_yrxyHY", "_yrx8_W", "_yrx5cB", "_yrxcKn", "_yrxewE", "_yrx3l5", "_yrx9ma", "_yrxwmT", "_yrxPpH", "_yrxPTc", "_yrxHIr", "_yrxJPm", "_yrx5TB", "_yrxNhj", "_yrxzgw", "_yrxwNp", "_yrx384", "_yrxGMB", "_yrxOlf", "_yrxlLZ", "_yrxbmY", "_yrx7fF", "_yrxByv", "_yrxMcz", "_yrx5DU", "_yrxI_A", "_yrxwHl", "_yrxCqV", "_yrxGUo", "_yrx8Bu", "_yrxsA9", "_yrx2vL", "_yrxrmP", "_yrxkcn", "_yrxnbH", "_yrxeCo", "_yrxJTd", "_yrxGr9", "_yrxRFl", "_yrxuZX", "_yrxLB$", "_yrxzfU", "_yrxb8Z", "_yrxoVn", "_yrxs4W", "_yrx7Ly", "_yrx6MZ", "_yrxxzB", "_yrxxJf", "_yrxfLH", "_yrxnaE", "_yrxGLk", "_yrxsfq", "_yrxq1J", "_yrx7MS", "_yrx_CY", "_yrxxs7", "_yrxAUK", "_yrxysL", "_yrxvt0", "_yrxvGj", "_yrxVZ5", "_yrxd6Y", "_yrxGFx", "_yrxwoX", "_yrxMty", "_yrxLAe", "_yrxVH8", "_yrxgny", "_yrxGOA", "_yrxxZ1", "_yrxMtN", "_yrxqc0", "_yrxryX", "_yrxYNU", "_yrxCxm", "_yrx6eT", "_yrxipW", "_yrxxh$", "_yrx$VN", "_yrxAbr", "_yrxYXt", "_yrxn5J", "_yrxyUW", "_yrxWNu", "_yrxCPn", "_yrxrxt", "_yrxMqa", "_yrxwl9", "_yrxpTj", "_yrx5ZS", "_yrxdUL", "_yrxT24", "_yrxj6t", "_yrxqy3", "_yrxeKO", "_yrxJtv", "_yrxYT$", "_yrxQHJ", "_yrxkGQ", "_yrxH$W", "_yrxtlb", "_yrxC6E", "_yrx6Co", "_yrxPoS", "_yrxz5E", "_yrx_MJ", "_yrxCis", "_yrxiJr", "_yrxbW$", "_yrxUCq", "_yrx4L6", "_yrxrNH", "_yrxsbl", "_yrxbGf", "_yrxUtc", "_yrxkAl", "_yrxGx4", "_yrxKHt", "_yrxfzV", "_yrxPjI", "_yrx9$i", "_yrxf8y", "_yrxC8m", "_yrxpvu", "_yrxMYv", "_yrxoBI", "_yrxXNY", "_yrxfop", "_yrxlai", "_yrxhs4", "_yrxt8s", "_yrx3vn", "_yrxiJ_", "_yrxrsz", "_yrxy3U", "_yrxiyJ", "_yrxe95", "_yrx1c3", "_yrxv6V", "_yrxMIW", "_yrx3Zr", "_yrxXaH", "_yrxc9Z", "_yrxvnj", "_yrxITk", "_yrx3gL", "_yrxQjp", "_yrxF7S", "_yrx4nv", "_yrxOti", "_yrxUew", "_yrxZa$", "_yrxs1t", "_yrxACY", "_yrxi0j", "_yrxhKn", "_yrxBR$", "_yrxq1j", "_yrxWFn", "_yrxAsZ", "_yrxIJz", "_yrxcGo", "_yrxkEO", "_yrxBrv", "_yrxQlP", "_yrxk5W", "_yrxQea", "_yrx6Tl", "_yrxspT", "_yrxMdm", "_yrxXjK", "_yrxSXA", "_yrxbhG", "_yrxmQM", "_yrxHMV", "_yrxWfK", "_yrxT30", "_yrxO$q", "_yrxgeN", "_yrxfsZ", "_yrxRkB", "_yrx1oK", "_yrx5eX", "_yrxBOd", "_yrx_FJ", "_yrxCKS", "_yrx0pK", "_yrx8PQ", "_yrxVYs", "_yrxtID", "_yrxQop", "_yrxrti", "_yrxhpM", "_yrxR4J", "_yrxSIs", "_yrxYue", "_yrxaMJ", "_yrxm4r", "_yrxW9G", "_yrxmEn", "_yrxp8I", "_yrx8Mg", "_yrxVCk", "_yrx4yh", "_yrxu$6", "_yrxsKT", "_yrxg_C", "_yrxTek", "_yrx2ls", "_yrxJlC", "_yrxxlW", "_yrxYCT", "_yrxYwL", "_yrxFMr", "_yrx_HZ", "_yrxdP_", "_yrxib_", "_yrxZzn", "_yrxoWN", "_yrxCr8", "_yrxW2V", "_yrxq0O", "_yrxZDq", "_yrxJt6", "_yrx4ZB", "_yrxDtu", "_yrxvws", "_yrxFvG", "_yrxsXn", "_yrxLUO", "_yrxmLF", "_yrx0aH", "_yrxgrL", "_yrx$vi", "_yrxMjU", "_yrxgnz", "_yrxH4g", "_yrxlAD", "_yrxZbF", "_yrxZ9O", "_yrxyDh", "_yrxGQI", "_yrxIXE", "_yrxlKt", "_yrxaMH", "_yrxbwQ", "_yrx7vl", "_yrxcs_", "_yrxnQG", "_yrxLGi", "_yrxqmY", "_yrx3$u", "_yrxsFd", "_yrxsiZ", "_yrxRcF", "_yrxnm6", "_yrxJZB", "_yrxSA8", "_yrxsmv", "_yrx$IW", "_yrx6iQ", "_yrxCSB", "_yrxCSj", "_yrxyol", "_yrxxb7", "_yrx$GK", "_yrxtMv", "_yrxKyq", "_yrxtmC", "_yrxRXY", "_yrx0bX", "_yrxktO", "_yrx0Yy", "_yrxqmN", "_yrxKob", "_yrxDyf", "_yrxWyR", "_yrx0uk", "_yrx35v", "_yrx_c3", "_yrxBhN", "_yrxjFS", "_yrxZBz", "_yrxqir", "_yrx1Zm", "_yrxWXt", "_yrxSiZ", "_yrx1pR", "_yrxnI6", "_yrxgPc", "_yrxHzZ", "_yrx0AE", "_yrxlBA", "_yrxZL7", "_yrxKTc", "_yrxhu3", "_yrxKrv", "_yrxGEI", "_yrxhIk", "_yrxVo3", "_yrxE8B", "_yrx0u2", "_yrxoiI", "_yrx5Nx", "_yrxkbn", "_yrxbc_", "_yrxnWX", "_yrxti2", "_yrxYCx", "_yrxQ5b", "_yrxhqz", "_yrxslt", "_yrxuQs", "_yrx1oc", "_yrxgJq", "_yrxsXq", "_yrxuDZ", "_yrxJvd", "_yrxARP", "_yrxGN1", "_yrxIAU", "_yrxkzY", "_yrxBRE", "_yrx6$W", "_yrxcCO", "_yrxwRb", "_yrxKBC", "_yrxyRP", "_yrxN9H", "_yrxiZr", "_yrxmOc", "_yrxNP$", "_yrxFvM", "_yrxXFt", "_yrxwcB", "_yrxDHA", "_yrxaTZ", "_yrx4nd", "_yrxbSu", "_yrx8fG", "_yrxanS", "_yrx4sc", "_yrx65U", "_yrxWp0", "_yrxeCH", "_yrx6cf", "_yrxRUs", "_yrx5Ez", "_yrxrpn", "_yrxIUj", "_yrxmrS", "_yrxh4U", "_yrx8v4", "_yrxJwg", "_yrxMAX", "_yrxLQa", "_yrxCwd", "_yrxgUq", "_yrxZsd", "_yrxwgT", "_yrx2CI", "_yrxdDM", "_yrxq3B", "_yrx0$G", "_yrxs3D", "_yrxYXC", "_yrxqXj", "_yrxg6c", "_yrxzKr", "_yrxHqj", "_yrxpze", "_yrxavz", "_yrx0UI", "_yrxR9p", "_yrxv1m", "_yrxo$_", "_yrxfZ5", "_yrxR$I", "_yrxoRY", "_yrxXdI", "_yrxZaO", "_yrxvNs", "_yrx94Y", "_yrxpwF", "_yrxhSJ", "_yrx1e0", "_yrxBHc", "_yrxHWO", "_yrxG$u", "_yrx_IP", "_yrxvgx", "_yrx6V8", "_yrxJoN", "_yrx_sb", "_yrxCnA", "_yrxxQ3", "_yrxIz2", "_yrxqe1", "_yrxseo", "_yrxWvn", "_yrxjzR", "_yrxSpt", "_yrxC3u", "_yrxWhC", "_yrxL$E", "_yrxsNG", "_yrxr4R", "_yrxP9n", "_yrxs_S", "_yrxyvu", "_yrxp2H", "_yrxCc5", "_yrxiaz", "_yrxbp3", "_yrxXDC", "_yrxc1W", "_yrxqwf", "_yrx_Md", "_yrxmVv", "_yrxAOV", "_yrxOFw", "_yrx_Jy", "_yrx46_", "_yrxU$j", "_yrxB6t", "_yrxgG$", "_yrx0kE", "_yrxnmu", "_yrxXa9", "_yrxTS1", "_yrxWYB", "_yrxydX", "_yrxs0x", "_yrxVaz", "_yrxemL", "_yrx8OV", "_yrxf6A", "_yrxHqN", "_yrxHnX", "_yrxa0E", "_yrxE1m", "_yrxcSp", "_yrxBsz", "_yrxKrH", "_yrxuPJ", "_yrxx0N", "_yrxSRQ", "_yrxfEV", "_yrxPtQ", "_yrxfaI", "_yrxuNA", "_yrx2jW", "_yrxP9Z", "_yrxNs6", "_yrxRaI", "_yrxBUi", "_yrxoLR", "_yrxcMm", "_yrxLWC", "_yrxjMy", "_yrxyZo", "_yrxFX2", "_yrxMW1", "_yrx5nY", "_yrxgcF", "_yrxB27", "_yrx_t3", "_yrxxFN", "_yrx5C4", "_yrx8O6", "_yrxiC8", "_yrxUzY", "_yrxsf2", "_yrxlRr", "_yrxmtc", "_yrxrFm", "_yrxka3", "_yrxv8F", "_yrxoYx", "_yrxtsH", "_yrxHDC", "_yrxhOy", "_yrxEo1", "_yrxMmL", "_yrxwjf", "_yrxLtD", "_yrxlWr", "_yrxsRq", "_yrxk2P", "_yrxYUF", "_yrx38b", "_yrxeDI", "_yrxD6s", "_yrxlGM", "_yrxM7l", "_yrxdxm", "_yrxZP0", "_yrxuKx", "_yrxqge", "_yrxC2_", "_yrxCLW", "_yrxe9l", "_yrx0SW", "_yrx_DI", "_yrxAGq", "_yrxFBS", "_yrxZ5Q", "_yrxydK", "_yrxcDL", "_yrxEvY", "_yrxT3X", "_yrxwt4", "_yrxWFi", "_yrxcWt", "_yrxX9a", "_yrx6$O", "_yrxioC", "_yrx97k", "_yrx5zl", "_yrxdFJ", "_yrxE78", "_yrxmsT", "_yrxAMx", "_yrx_jm", "_yrxtFh", "_yrxQpl", "_yrxCwc", "_yrxWTD", "_yrxJo8", "_yrx1CB", "_yrxE5Q", "_yrxK$s", "_yrxheq", "_yrxxaO", "_yrxl9I", "_yrxP4e", "_yrxOdV", "_yrxo91", "_yrxsXv", "_yrxBIv", "_yrxgrQ", "_yrxQp3", "_yrx_o4", "_yrx1ZQ", "_yrxTca", "_yrx$ik", "_yrxW4m", "_yrxYfv", "_yrxGTH", "_yrx3Xx", "_yrxvBq", "_yrxOkz", "_yrxbY0", "_yrxvlu", "_yrx6kn", "_yrxOXt", "_yrxDaw", "_yrxPkV", "_yrx9er", "_yrxjGP", "_yrxkr0", "_yrxIYv", "_yrxV9K", "_yrxuXS", "_yrxrsp", "_yrxvAM", "_yrxXZW", "_yrxixH", "_yrx_9X", "_yrxW$P", "_yrxE$A", "_yrxF6D", "_yrxQPF", "_yrxgnE", "_yrxUk5", "_yrxgOw", "_yrx0kY", "_yrx5es", "_yrxHi2", "_yrxaOF", "_yrx5ih", "_yrx60p", "_yrxJe2", "_yrxlXc", "_yrxjCx", "_yrx5ST", "_yrxao0", "_yrxNvQ", "_yrx58d", "_yrxZHQ", "_yrxAib", "_yrxTDa", "_yrxxoi", "_yrxoJG", "_yrxzyD", "_yrxcpE", "_yrx6bH", "_yrxoHC", "_yrxsHn", "_yrxSTy", "_yrxzYG", "_yrxK_u", "_yrxBbS", "_yrxJy8", "_yrxCnq", "_yrxlBI", "_yrxC_3", "_yrxk$S", "_yrxXte", "_yrxg7A", "_yrxwHO", "_yrxDJL", "_yrxMfm", "_yrxt$d", "_yrx0Su", "_yrx7KW", "_yrxVua", "_yrx0jZ", "_yrx2Wn", "_yrx$EP", "_yrxCl6", "_yrxPEb", "_yrx2iR", "_yrxqXd", "_yrxsCu", "_yrxT8A", "_yrx6St", "_yrxfNC", "_yrx0vn", "_yrx_rq", "_yrxRHu", "_yrx70z", "_yrxlJu", "_yrxFyi", "_yrx47w", "_yrxhXn", "_yrxcd6", "_yrxviG", "_yrxhu$", "_yrxWMk", "_yrxCEV", "_yrxrv4", "_yrxa$v", "_yrxE6t", "_yrxGbF", "_yrxQ19", "_yrxOFZ", "_yrxOSA", "_yrxDSX", "_yrxFlt", "_yrxXrx", "_yrxsCI", "_yrxRwv", "_yrx9WZ", "_yrxAiy", "_yrxzXv", "_yrx2IV", "_yrx58j", "_yrxcgQ", "_yrxH3P", "_yrxPVu", "_yrx6LX", "_yrxIar", "_yrxVYQ", "_yrxVSH", "_yrxOr6", "_yrxR$e", "_yrxCxh", "_yrxw8g", "_yrxrjd", "_yrx4G7", "_yrxG$g", "_yrxDL5", "_yrxy6K", "_yrxB7w", "_yrx0UT", "_yrxxEX", "_yrxPFL", "_yrxUDM", "_yrxBqk", "_yrxcOX", "_yrxVw5", "_yrxJLb", "_yrx1j0", "_yrxV6u", "_yrxTcE", "_yrx1rx", "_yrxVZb", "_yrxKDI", "_yrxdCW", "_yrxoGE", "_yrxWMU", "_yrxU0T", "_yrx6TG", "_yrxj$b", "_yrxMBG", "_yrxM8R", "_yrxjHs", "_yrxwsM", "_yrxKmt", "_yrxGhr", "_yrxK1p", "_yrx2Cy", "_yrxKqP", "_yrxpnC", "_yrxgDT", "_yrxpi6", "_yrxjYX", "_yrxac4", "_yrxUva", "_yrxkFO", "_yrxOz6", "_yrx4Lq", "_yrxE5J", "_yrxRGz", "_yrxHaQ", "_yrxVCU", "_yrxaPy", "_yrxzxI", "_yrxxyQ", "_yrxdGe", "_yrxqhC", "_yrxcJC", "_yrxI9o", "_yrxaPr", "_yrxf$e", "_yrx$ki", "_yrxT4k", "_yrx4RC", "_yrxzO3", "_yrxrAG", "_yrxR$H"],
                "_yrxJPo": 42,
                "_yrxw3G": 25,
                "_yrxfMk": 2,
                "_yrxueR": "_yrxh5_",
                "_yrxRNY": "_yrx0N3",
                "_yrxa01": "_yrx_Mu",
                "_yrxesu": "_yrx4vh",
                "_yrxzX3": "_yrxphR",
                "_yrxPh$": "_yrxuIo",
                "_yrxo3Y": "_yrxuHi",
                "_yrxZxk": "_yrxA_W",
                "_yrxyum": "_yrx$re",
                "_yrx1x3": "_yrxBoU",
                "_yrx8LV": "SKqUSREnLma",
                "_yrxpnH": "6IlAN8vwS8G",
                "_yrxc$E": "SDYIJJvVXUgSzuW0plhENg",
                "_yrxOzH": "JXvH5PnmBoa",
                "_yrxAv3": "9cYSTvrLw95znNK8s5SwUa",
                "_yrxJPm": "_yrxrGA",
                "_yrx9XC": 103,
                "_yrx5TB": "_yrx$IW",
                "_yrxqy0": 203,
                "_yrxNhj": "_yrx71e",
                "_yrxgie": 203,
                "_yrxzgw": "_yrxb2c",
                "_yrxIvz": 180,
                "_yrx5El": -15,
                "aebi": [[], [510, 72, 82, 242, 535, 334, 168, 129, 535, 519, 468, 338, 468, 519, 502, 70, 242, 298, 244, 519, 398, 242, 497, 261, 519, 523, 401, 468, 314, 219, 266, 519, 347, 519, 468, 332, 124, 115, 162, 425, 195, 242, 319, 205, 245, 316, 242, 47, 18, 217, 417, 227, 531, 212, 374, 464, 204, 242, 431, 415, 204, 242, 431, 31, 204, 242, 431, 468, 250, 347, 519, 10, 519, 173, 140, 209, 305, 306, 489, 33, 519, 268, 448, 242, 254, 28, 519, 468, 518, 215, 60, 519, 165, 208, 242, 214, 519, 102, 385, 96, 428, 330, 17, 223, 481, 348, 267, 524, 471, 455, 4, 528, 29, 428, 283, 288, 285, 17, 184, 418, 513, 517, 251, 195, 242, 519, 318, 414, 519, 173, 379, 242, 137, 303, 189, 519, 325, 457, 519, 451, 242, 405, 48, 519, 469, 519, 299, 50, 411, 209, 519, 306, 182, 519, 502, 333, 199, 209, 232, 512, 519, 282, 30, 448, 209, 232, 512, 519, 360, 395, 519, 529, 365, 372, 519, 49, 350, 209, 5, 86, 136, 209, 143, 0, 161, 209, 36, 54, 141, 209, 79, 134, 64, 209, 159, 149, 198, 333, 390, 242, 306, 138, 421, 80, 209, 512, 247, 151, 209, 38, 238, 384, 209, 538, 443, 200, 209, 228, 122, 27, 209, 132, 222, 172, 242, 521, 109, 519, 94, 530, 519, 173, 409, 21, 77, 519, 492, 494, 291, 412, 130, 209, 452, 306, 440, 257, 242, 197, 28, 519, 492, 249, 519, 321, 242, 527, 14, 519, 442, 302, 242, 327, 230, 519, 468, 468, 346, 519, 280, 533, 355, 152, 435, 381, 394, 294, 466, 516, 183, 145, 468, 410, 185, 470, 144, 257, 209, 135, 226, 387, 257, 209, 312, 506, 1, 100, 337, 118, 486, 445, 399, 196, 361, 408, 87, 157, 526, 139, 194, 257, 209, 312, 484, 322, 257, 209, 312, 233, 39, 348, 206, 65, 370, 534, 503, 20, 148, 59, 242, 142, 476, 252, 375, 209, 125, 25, 511, 348, 505, 121, 520, 123, 316, 209, 187, 253, 293, 348, 525, 155, 265, 150, 237, 242, 434, 335, 474, 242, 51, 478, 348, 424, 40, 169, 127, 209, 388, 154, 235, 128, 209, 515, 34, 81, 176, 209, 111, 119, 62, 176, 209, 111, 433, 446, 304, 459, 242, 326, 468, 43, 519, 112, 242, 3, 313, 310, 519, 104, 333, 284, 368, 436, 307, 468, 519, 173, 404, 351, 503, 391, 290, 348, 367, 69, 468, 103, 112, 242, 352, 292, 56, 324, 242, 315, 519, 323, 242, 495, 396, 519, 112, 242, 482, 89, 519, 101, 259, 203, 519, 229, 203, 519, 201, 348, 63, 263, 271, 519, 236, 358, 532, 209, 389, 306, 218, 519, 7, 345, 449, 75, 406, 519, 344, 240, 258, 67, 458, 193, 153, 514, 274, 120, 181, 450, 447, 19, 348, 256, 147, 460, 488, 58, 301, 180, 272, 331, 116, 88, 243, 146, 44, 281, 202, 73, 519, 210, 113, 519, 262, 519, 461, 473, 456, 519, 507, 209, 329, 6, 519, 507, 209, 504, 373, 519, 507, 242, 178, 519, 280, 211, 499, 295, 432, 213, 348, 220, 170, 105, 264, 37, 519, 52, 248, 519, 507, 100, 188, 221, 45, 209, 287, 179, 311, 383, 348, 463, 242, 328, 519, 468, 126, 422, 519, 68, 519, 507, 242, 23, 519, 468, 369, 242, 465, 296, 231, 519, 156, 242, 477, 519, 41, 359, 158, 131, 537, 225, 423, 519, 277, 158, 341, 133, 380, 420, 519, 173, 32, 340, 204, 90, 107, 209, 234, 491, 241, 209, 84, 207, 536, 209, 462, 191, 437, 209, 397, 517, 166, 209, 356, 306, 106, 33, 519, 354, 74, 519, 279, 519, 419, 76, 519, 273, 519, 362, 209, 468, 519, 66, 224, 439, 519, 413, 382, 519, 403, 490, 257, 348, 522, 487, 349, 255, 239, 257, 29, 55, 441, 91, 209, 500, 222, 467, 242, 480, 530, 519, 173, 496, 286, 348, 386, 15, 24, 519, 171, 519, 8, 519, 110, 468, 177, 519, 363, 22, 498, 377, 289, 348, 427, 453, 117, 300, 163, 393, 519, 275, 444, 426, 454, 24, 519, 485, 2, 242, 483, 366, 519, 61, 472, 108, 376, 92, 209, 175, 306, 297, 519, 475, 519, 378, 501, 438, 97, 209, 468, 167, 364, 503, 11, 357, 509, 336, 493, 85, 93, 242, 53, 402, 519, 371, 407, 57, 216, 16, 13, 71, 242, 270, 353, 186, 429, 342, 9, 242, 270, 339, 519, 371, 407, 26, 192, 242, 519, 276, 343, 209, 278, 468, 246, 508, 416, 309, 190, 392, 83, 42, 320, 519, 269, 260, 209, 400, 98, 519, 99, 519, 173, 479, 33, 519, 78, 501, 430, 204, 348, 164, 174, 12, 35, 519, 371, 114, 519, 317, 95, 308, 160, 242, 46, 519], [28, 39, 33, 39, 77, 108, 45, 100, 17, 83, 56, 26, 56, 80, 18, 56, 32, 56, 30, 66, 51, 62, 56, 96, 56, 68, 64, 56, 56, 7, 56, 35, 17, 2, 56, 119, 56, 61, 56, 57, 56, 22, 109, 76, 58, 17, 36, 118, 56, 46, 56, 87, 89, 56, 85, 104, 56, 111, 93, 110, 113, 91, 84, 56, 6, 59, 40, 110, 5, 69, 102, 56, 60, 56, 73, 56, 73, 56, 63, 56, 55, 35, 108, 20, 107, 17, 94, 82, 88, 98, 17, 15, 42, 34, 13, 97, 79, 33, 37, 1, 123, 74, 3, 25, 116, 108, 75, 13, 106, 69, 75, 56, 8, 56, 86, 65, 19, 65, 17, 78, 126, 17, 56, 95, 11, 92, 27, 23, 120, 125, 110, 114, 90, 47, 34, 14, 17, 114, 112, 44, 29, 81, 115, 121, 120, 70, 110, 41, 90, 101, 34, 50, 17, 41, 56, 67, 17, 16, 56, 54, 56, 56, 12, 24, 17, 56, 9, 31, 34, 75, 109, 124, 75, 38, 56, 72, 48, 99, 21, 56, 117, 110, 49, 69, 122, 56, 117, 17, 56, 0, 71, 10, 4, 105, 53, 52, 103, 43, 56], [27, 22, 28, 1, 10, 1, 36, 1, 25, 16, 8, 14, 1, 9, 1, 37, 41, 35, 4, 13, 44, 39, 12, 46, 44, 26, 31, 1, 1, 1, 18, 44, 32, 33, 1, 20, 15, 7, 11, 0, 6, 24, 21, 29, 30, 38, 44, 5, 40, 23, 34, 1, 2, 19, 3, 1, 43, 42, 44, 45, 17, 1], [3, 0, 1, 2]]
            };
            var _yrxR7k = '_yrxdD_';
            var _yrxJ_8 = [103, 203, 203, 180];
            var _yrxmEu = aiding_5702(_yrxays, _yrxVMl, _yrxR7k, _yrxJ_8);
            var _yrxTY4 = _yrxmEu
            var _yrxrqQ = _yrxrqQ[_yrxQ9C[8]](_yrxmEu1, 0, 0, [37, 144, 202, 178, 221, 147, 173, 9])
            var _yrx2LR = _yrxmEu + _yrxwbi(_yrxrqQ)
            return real_url + "m=" + _yrx2LR
        }
        
        var pages = process.argv[2];
        var aaas = process.argv[3];
        var bbbs = process.argv[4];
        var cccs = process.argv[5];
        var ddds = process.argv[6];
        console.log(get_url(pages, aaas, bbbs, cccs, ddds));
        
        

        下面是編寫請求函數
        [Python] 純文本查看 復制代碼
        import requests
        import re
        import base64
        import os
        
        def main():
            sums = 0
            for page in range(1, 6):
                url = 'http://match.yuanrenxue.com/match/10'
                response = requests.get(url)
                sessionid = re.findall('(?<=sessionid=).+?(?=;)', response.headers['Set-Cookie'])[0]
                headers = {
                    'cookie': 'sessionid='+sessionid,
                    'User-Agent': 'yuanrenxue.project'
                }
                uf = int(re.findall('\d+(?=;var iil)', response.text)[0])
                encryptdata = requests.get("http://match.yuanrenxue.com/stati/mu/rsnkw2ksph", headers=headers).text[17:-1]
                decryptdata = base64.b64decode(''.join([chr(ord(encryptdata[i]) - i % uf - 50) for i in range(len(encryptdata))]).encode()).decode()
                data = ' '.join(re.findall("\d+?(?= \+ _yrxCxm)", decryptdata))
                nodejs = os.popen('node 10 '+str(page)+' '+str(uf)+' '+data)
                url = 'http://match.yuanrenxue.com'+nodejs.read().replace('\n', '')
                nodejs.close()
                print(url)
                response = requests.get(url, headers=headers).json()
                for each in response['data']:
                    sums += each['value']
            print(sums)
            # 總價:221919
        
        if __name__ == '__main__':
            main()




        第十一題【接口-查詢參數-值加密
        安裝好app后,打開HttpCanary抓包,然后隨意查詢一個范圍內的數字

        可以看到我們輸入的參數生成一個sign,然后通過接口訪問獲取到最終需要的數值,那么首先使用jadx進行初步分析
        直接搜索接口的網址【https://sekiro.virjar.com/yuanrenxue/query

        可以看到sign參數是調用了一個getSign1方法得到的,那么繼續跟進這個方法

        這里可以看到加載了一個so文件,然后調用了getSign方法得到了sign,如果繼續靜態分析的話,就要用到IDA來分析,這里我直接使用python+frida框架解決
        這里跳過配置環境的部分,直接遍歷0-9999來調用getSign方法獲取sign,因為請求次數比較多,所以我這里還是用了多線程進行請求

        [Python] 純文本查看 復制代碼
        import frida
        import sys
        import queue
        import threading
        import requests
        from urllib import parse
        
        class Producer(threading.Thread):
            def __init__(self, baoming):
                threading.Thread.__init__(self)
                self.baoming = baoming
            def run(self):
                process = frida.get_remote_device().attach(self.baoming)
                script = process.create_script(jscode)
                script.on("message", message)
                script.load()
                sys.stdin.read()
        
        class Consumer(threading.Thread):
            def __init__(self, q):
                threading.Thread.__init__(self)
                self.q = q
            def run(self):
                global sums
                while True:
                    try:
                        sign = self.q.get(timeout=10)
                    except:
                        break
                    nid, sign = sign.split(':')
                    while True:
                        try:
                            response = requests.get('https://sekiro.virjar.com/yuanrenxue/query?id='+nid+'&sign='+parse.quote(sign)).json()
                            break
                        except:
                            pass
                    print(nid)
                    print(response)
                    sums += response['data']
        
        sums = 0
        workqueue = queue.Queue(maxsize=0)
        
        jscode = """
        Java.perform(function () {
            var OnlineJudgeApp = Java.use('com.yuanrenxue.onlinejudge2020.OnlineJudgeApp');
            OnlineJudgeApp.getSign.implementation = function (j){
                console.log('HOOK 開始');
                for (i = 0; i < 10000; i++){
                    var sign = this.getSign(i);
                    send(i+':'+sign);
                }
                console.log('HOOK 結束');
                return this.getSign(j);;
            };
        });
        """
        
        def message(message, data):
            global i
            global workqueue
            if message["type"] == 'send':
                sign = message['payload']
                workqueue.put(sign)
            else:
                print(message['stack'])
        
        def main():
            global workqueue
            global sums
            # 創建線程列表
            threads = []
        
            # 創建新線程,并開始線程
            for eachthread in range(0, 32):
                thread = Consumer(workqueue)
                thread.start()
                threads.append(thread)
        
            baoming = 'com.yuanrenxue.onlinejudge2020'
            thread = Producer(baoming)
            thread.start()
        
            # 等待所有線程結束
            for t in threads:
                t.join()
        
            print(sums)
            # 總和:4925000
        
        if __name__ == '__main__':
            main()



        第十二題【接口-查詢參數-值加密】
        打開f12進行抓包,刷新頁面,查看接口請求

        可以看到其中m參數被加密了,然后根據前面的經驗,可以在主頁中查找接口請求的參數來源,在主頁中搜索【api/match/12】

        可以看到m參數是由一段固定字符串加上頁碼進行base64編碼得到
        到這里邏輯就基本完成了,但是當我們點擊第四和第五頁是會出現彈窗


        此時按照它的提示設置UA即可,編寫代碼進行請求
        [Python] 純文本查看 復制代碼
        [/s]
        [s]import requests[/s]
        [s]import base64[/s]
        
        [s]def main():[/s]
        [s]    headers = {[/s]
        [s]        'User-Agent': 'yuanrenxue.project'[/s]
        [s]    }[/s]
        [s]    sums = 0[/s]
        [s]    for page in range(1, 6):[/s]
        [s]        m = base64.b64encode(('yuanrenxue'+str(page)).encode()).decode()[/s]
        [s]        url = 'http://match.yuanrenxue.com/api/match/12?page='+str(page)+'&m='+m[/s]
        [s]        response = requests.get(url, headers=headers).json()[/s]
        [s]        for each in response['data']:[/s]
        [s]            sums += each['value'][/s]
        [s]    print(sums)[/s]
        [s]    # 總和:247082[/s]
        
        [s]if __name__ == '__main__':[/s]
        [s]    main()


        第十三題【接口-請求頭-值加密
        又是一題cookie的題目,根據前面的經驗,直接隱身模式加Fiddler.exe抓包

        可以看到和之前的套路一樣,第一次訪問返回一段script,并設置了cookie的值,因為這里的script代碼太有規律,所以直接用正則處理
        [JavaScript] 純文本查看 復制代碼
        document.cookie = ('y') + ('u') + ('a') + ('n') + ('r') + ('e') + ('n') + ('x') + ('u') + ('e') + ('_') + ('c') + ('o') +[/s]
        [s]    ('o') + ('k') + ('i') + ('e') + ('=') + ('1') + ('6') + ('0') + ('4') + ('9') + ('1') + ('6') + ('6') + ('9') + ([/s]
        [s]        '9') + ('|') + ('Y') + ('2') + ('W') + ('W') + ('G') + ('H') + ('H') + ('P') + ('t') + ('5') + ('m') + ('i') +[/s]
        [s]    ('c') + ('P') + ('o') + ('j') + ('R') + ('V') + ('D') + ('4') + ('U') + ('q') + ('3') + ('o') + ('r') + ('p') + ([/s]
        [s]        'y') + ('M') + ('8') + ('t') + ('N') + ('v') + ('X') + ('0') + ('x') + ('7') + ('O') + ('Q') + ('a') + ('M') +[/s]
        [s]    ('r') + ('U') + ('3') + ('S') + ('P') + ('6') + ('o') + ('V') + ('y') + ('a') + ('W') + ('i') + ('q') + ('Z') + ([/s]
        [s]        'O') + ('6') + ('G') + ('D') + ('I') + ('i') + ('U') + ('k') + ('0') + ('q') + ('6') + ('8') + ('8') + ('V') +[/s]
        [s]    ('I') + ('j') + ('F') + ('c') + ('M') + ('V') + ('S') + ('p') + ('U') + ('y') + ('N') + ('2') + ('Q') + ('N') + ([/s]
        [s]        'H') + ('D') + ('d') + ('F') + ('9') + ('K') + ('l') + ('W') + ('o') + ('F') + ('u') + ('7') + ('7') + ('j') +[/s]
        [s]    ('M') + ('y') + ('x') + ('c') + ('Z') + ('w') + ('y') + ('H') + ('v') + ('7') + ('S') + ('9') + ('R') + ('R') + ([/s]
        [s]        'u') + ('M') + ('t') + ('6') + ('Y') + ('m') + ('j') + ('I') + ('N') + ('F') + ('a') + ('r') + ('G') + ('3') +[/s]
        [s]    ('C') + ('d') + ('b') + ('8') + ('q') + ('b') + ('c') + ('L') + ('b') + ('b') + ('8') + ('m') + ('W') + ('E') + ([/s]
        [s]        '2') + ('U') + ('w') + ('W') + ('T') + ('5') + ('i') + ('M') + ('E') + ('a') + ('I') + ('M') + ('k') + ('a') +[/s]
        [s]    ('j') + ('c') + ('Z') + ('4') + ('i') + ('9') + ('G') + ('F') + ('z') + ('h') + ('v') + ('J') + ('n') + ('u') + ([/s]
        [s]        'S') + ('X') + ('g') + ('U') + ('n') + ('I') + ('u') + ('e') + ';path=/';[/s]
        [s]location.href = location.pathname + location.search

        這里注意兩個點,第一個是第一次訪問的響應頭有sessionid,要放到cookie里面,第四第五頁的數據需要規定的請求頭
        [Python] 純文本查看 復制代碼
        [/s]
        [s]import requests[/s]
        [s]import re[/s]
        
        [s]def main():[/s]
        [s]    sums = 0[/s]
        [s]    url = 'http://match.yuanrenxue.com/match/13'[/s]
        [s]    response = requests.get(url)[/s]
        [s]    cookie = ''.join(re.findall("(?<=\(').(?='\))", response.text))[/s]
        [s]    sessionid = response.headers['Set-Cookie'].split(';')[0][/s]
        [s]    headers = {[/s]
        [s]        'cookie': sessionid+'; '+cookie,[/s]
        [s]        'User-Agent': 'yuanrenxue.project'[/s]
        [s]    }[/s]
        [s]    for page in range(1, 6):[/s]
        [s]        url = 'http://match.yuanrenxue.com/api/match/13?page='+str(page)[/s]
        [s]        response = requests.get(url, headers=headers).json()[/s]
        [s]        for each in response['data']:[/s]
        [s]            sums += each['value'][/s]
        [s]    print(sums)[/s]
        [s]    # 總數:213133[/s]
        
        [s]if __name__ == '__main__':[/s]
        [s]    main()





        最后向大佬請教如何完成第十題

        2.jpg (160.31 KB, 下載次數: 0)

        2.jpg

        免費評分

        參與人數 142吾愛幣 +142 熱心值 +129 收起 理由
        sos218909 + 1 用心討論,共獲提升!
        傳說中的殺幣 + 1 + 1 我很贊同!
        Fancier + 1 + 1 謝謝@Thanks!
        WMWspecter + 1 熱心回復!
        libaibuaidufu + 1 用心討論,共獲提升!
        LyHello233 + 1 + 1 我很贊同!
        deoham + 1 + 1 用心討論,共獲提升!
        安久丶 + 1 + 1 我很贊同!
        WAlitudealiy + 1 用心討論,共獲提升!
        whisperbb + 1 + 1 謝謝@Thanks!
        zlixunnhuan + 1 + 1 謝謝@Thanks!
        honor_weiping + 1 + 1 我很贊同!
        DivineWing + 1 + 1 用心討論,共獲提升!
        放手一搏09 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        liuyunfz + 1 + 1 用心討論,共獲提升!
        猛浪若奔 + 1 + 1 熱心回復!
        fushanpupil + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        Bigcraft + 1 + 1 我很贊同!
        審判者壓縮 + 1 + 1 我很贊同!
        桂林白丁 + 1 + 1 用心討論,共獲提升!
        月六點年一倍 + 1 我很贊同!
        孤世 + 1 + 1 熱心回復!
        dongmian + 1 + 1 用心討論,共獲提升!
        1223NingLLL + 1 我很贊同!
        007nbqaq + 1 + 1 謝謝@Thanks!
        comon + 1 + 1 謝謝@Thanks!
        莫丶莫欺少年窮 + 1 + 1 我很贊同!
        18269055653 + 1 + 1 熱心回復!
        Goldbama + 1 我很贊同!
        深度潛水 + 1 + 1 我很贊同!
        killl + 1 + 1 熱心回復!
        滾動的天空云 + 1 + 1 感謝
        !x_x! + 1 + 1 謝謝@Thanks!
        Pineker + 1 + 1 我很贊同!
        不良少年白日夢 + 1 我很贊同!
        alinwan0922 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
        不被承認的好人 + 1 + 1 用心討論,共獲提升!
        笑你浪 + 1 + 1 謝謝@Thanks!
        qwertyuiop1822 + 1 + 1 大佬們真牛逼
        zhangfei28 + 1 + 1 用心討論,共獲提升!
        studio + 1 我很贊同!
        zsq + 1 + 1 謝謝@Thanks!
        ltf971101 + 1 + 1 熱心回復!
        火神獵殺者 + 1 + 1 我很贊同!
        nut1999 + 1 + 1 我很贊同!
        丶峰宇 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        a2612995 + 1 + 1 用心討論,共獲提升!
        xiaoaivcm + 1 + 1 用心討論,共獲提升!
        好吃懶做的藍貓 + 1 用心討論,共獲提升!
        無業人員 + 1 + 1 用心討論,共獲提升!
        幽蘭生前庭 + 1 用心討論,共獲提升!
        kxkxy5505 + 1 + 1 不明覺厲,牛
        妄想癥的大蚊子 + 1 + 1 謝謝@Thanks!
        luanshils + 3 + 1 我很贊同!
        loner. + 1 謝謝@Thanks!
        紅燒排骨 + 1 + 1 熱心回復!
        GTABOSS + 1 用心討論,共獲提升!
        觀魚 + 1 + 1 我很贊同!
        流浪- + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        qikran + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        onething + 1 + 1 熱心回復!
        初心wo + 1 + 1 熱心回復!
        154675361 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        pwp + 3 + 1 舉報:此為違規行為,請遵守論壇版規!
        fra丶ce + 1 + 1 用心討論,共獲提升!
        shikozhou + 1 + 1 用心討論,共獲提升!
        hht369852 + 1 + 1 謝謝@Thanks!
        不怕黑的夜晚 + 1 + 1 熱心回復!
        丿顛覆灬虎哥 + 1 + 1 太難了啊
        zibo2019 + 1 + 1 我很贊同!
        ligxi + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        weiping + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
        wzxkk123 + 3 + 1 用心討論,共獲提升!
        azcolf + 1 + 1 用心討論,共獲提升!
        rt1412 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
        takpap + 1 + 1 謝謝@Thanks!
        huguo002 + 1 + 1 感謝大佬分享。!
        ColoThor + 1 謝謝@Thanks!
        青蛙么 + 1 謝謝@Thanks!
        不諳世事的騷年 + 1 + 1 熱心回復!
        一瓶膨脹雪碧 + 1 + 1 用心討論,共獲提升!
        mcwindy + 1 + 1 我很贊同!
        yaffsyale + 1 + 1 謝謝@Thanks!
        xiao9798 + 1 + 1 謝謝@Thanks!
        非常猥鎖 + 1 + 1 大佬,牛逼!學習了
        h3nimm + 1 + 1 用心討論,共獲提升!
        iYolo丶moye + 1 用心討論,共獲提升!
        抱歉、 + 1 用心討論,共獲提升!
        追夢的人 + 1 + 1 我很贊同!
        ssmnghunssjust + 1 + 1 用心討論,共獲提升!
        qctech + 1 + 1 用心討論,共獲提升!
        月下賞妞 + 1 + 1 用心討論,共獲提升!
        shufang + 1 + 1 謝謝@Thanks!
        沉默之劍 + 1 + 1 謝謝@Thanks!
        gudeds + 1 我很贊同!
        xiaoyu0814 + 1 謝謝@Thanks!
        yalehorance + 1 + 1 用心討論,共獲提升!
        夜泉 + 1 + 1 用心討論,共獲提升!
        MFC + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
        zasilla + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!

        查看全部評分

        本帖被以下淘專輯推薦:

        • · 好帖|主題: 233, 訂閱: 24

        發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

        推薦
        RS水果 發表于 2020-10-22 04:48

        回帖獎勵 +1 CB吾愛幣

        本帖最后由 RS水果 于 2020-10-22 04:57 編輯

        求求你做個人吧 我看到這頭都禿了
        以前總是聽xxxx中外技術相差幾十年幾十年

        但一直沒有個客觀印象,沒有切實的體驗感覺

        今天我體驗到了

        謝謝樓主,我愁的睡不著覺
        推薦
        濤之雨 發表于 2020-10-22 17:23

        第一題大概看了一眼,貌似還可以有別的方法,參與討論一下

        (蠢哭的前端方法)

        1. 斷點的話可以在左邊的行號上右鍵,選擇Never pause here也可以繞過。。。

        順便再說一句,如果是類似某些“加密”搞得匿名函數一直死循環debugger,也可以用fd之類的修改后直接本地文件替換。

        1. 設置一個變量存儲總數,另一個存儲個數(相除)
          var sum=0,num=0;
        2. query selector元素選擇器篩選出共同的最后一個節點
          document.querySelectorAll('body > div.body-wrap > div:nth-child(7) > div > div > div > div > div')
        3. 獲取每一個數值,轉數字后加到總數里,個數自增;
          document.querySelectorAll('body > div.body-wrap > div:nth-child(7) > div > div > div > div > div').forEach(function(a){//a為每個html元素
          num++;
          sum+=Number(a.querySelector("div > div.col-price > p > span > span > span").innerHTML);
          });
        4. 模擬點擊下一頁,并等待加載完成(因為個數很少,就直接手動點了),判斷可以通過下一頁元素的變化
          (略)
        5. 最后一頁則總數除以個數,輸出平均值,否則繼續執行第五步

        點評

        比賽不能用騷操作 哈哈  發表于 2020-10-22 22:23

        免費評分

        參與人數 1吾愛幣 +2 熱心值 +1 收起 理由
        漁滒 + 2 + 1 我很贊同!

        查看全部評分

        推薦
        觀棋不宇 發表于 2020-10-25 01:40
        本帖最后由 觀棋不宇 于 2020-10-25 15:13 編輯

        第六題,第九題,和第十題我是有點思路的。
        首先就是這個r參數,這個r參數是個重點

        里面就是實際上js的執行邏輯。但是這個邏輯里面我放入了一些跟瀏覽器環境有關的蜜罐陷阱、這就是為什么可以執行出參數但是風控不過的原因。
        可以嘗試找到代碼里jsfuck的值 也就是類似于 “[][![]]”這類的,放到瀏覽器中,然后運行一下得出值來,然后再利用node執行,第六題就可解了
        第九題,我做了個非常有意思的蜜罐。因為node環境里面是一定存在 global的,而瀏覽器中沒有,這里是核心加密點

        ,里面有很多的環境檢測。在js執行的時候,一定要習慣性的搜一下環境。
        常用的關鍵詞比如:navigator 、global、document、location等,這樣就能發現一些貓膩。
        第十題,作為一道壓軸題(也是js里面的大軸題),是我做的最久,處理最長的題目。這個我就只能稍微點一下思路,因為破解過程實際上會非常繁瑣。
        先打script斷點,想辦法進第一層js殼,然后搜索 .call,去打上斷點,追進二層殼,之后進行無窮無盡的單步調試,一直到找到_yrxrqQ = _yrxrqQ[_yrxQ9C[8]](_yrxcze, _yrxBXT(775, _yrx7jl) ? 1 : 0, _yrxyqC || 0, _yrxBXT(789))為止
        到這里就要細心了,在經過_yrxwbi函數處理為字符串最后拼接這倆段就是m的值了。(這里面的流程極其繁雜,需要耐心+細心方可解。)


        免費評分

        參與人數 1吾愛幣 +1 收起 理由
        loner. + 1 我很贊同!

        查看全部評分

        推薦
        gzq830510 發表于 2020-10-30 09:51
        大佬厲害!
        我目前只試了下那個“非常容易”的非賽題-第12題,也是get請求攜帶了一個m參數,js腳本完全不會看,不過我胡猜亂試搞出來了,m參數原來是”yuanrenxue+頁碼“的base64編碼+URL編碼(主要是最后那個“=”,該網站默認utf-8),附上丑陋的代碼:
        [Python] 純文本查看 復制代碼
        import requests
        import base64
        from urllib.parse import quote
        
        total = 0
        headers1 = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.56', 'Referer':'http://match.yuanrenxue.com/match/12'}
        headers2 = {'User-Agent':'yuanrenxue.project', 'Referer':'http://match.yuanrenxue.com/match/12'}
        
        for i in range(1, 6):
            s = base64.b64encode(f'yuanrenxue{i}'.encode('utf-8'))
            m = quote(s, 'utf-8')
            if i < 4:
                r = requests.get(url = f'http://match.yuanrenxue.com/api/match/12?page={i}&m={m}', headers = headers1)
            else:
                r = requests.get(url = f'http://match.yuanrenxue.com/api/match/12?page={i}&m={m}', headers = headers2)
            total += sum(item['value'] for item in r.json()['data'])
        print(total)
        

        免費評分

        參與人數 2吾愛幣 +3 熱心值 +2 收起 理由
        gsn529 + 1 + 1 我很贊同!
        漁滒 + 2 + 1 我很贊同!

        查看全部評分

        推薦
        walkingdone 發表于 2020-10-24 22:05
        多謝大佬分享經驗
        推薦
        xyfs 發表于 2020-10-23 23:22
        跪著看完這個貼
        8#
        JavaSB 發表于 2020-10-21 23:40

        回帖獎勵 +1 CB吾愛幣

        謝謝分享
        9#
        hacksz 發表于 2020-10-21 23:45

        回帖獎勵 +1 CB吾愛幣

        謝謝分享,過來學習一下
        我還是初學者,剛接觸
        10#
        skykain 發表于 2020-10-21 23:49

        回帖獎勵 +1 CB吾愛幣


        謝謝分享
        11#
        ReaJason 發表于 2020-10-21 23:53

        回帖獎勵 +1 CB吾愛幣

        又可以深入學習一波了,感謝分享
        12#
        千城憶夢 發表于 2020-10-22 00:10

        回帖獎勵 +1 CB吾愛幣

        感謝樓主分享!
        13#
        濤之雨 發表于 2020-10-22 00:20

        回帖獎勵 +1 CB吾愛幣

        自定義加密。。。就離譜。。。
        14#
        judgecx 發表于 2020-10-22 00:27

        回帖獎勵 +1 CB吾愛幣

        woc  謝謝樓主分享啊
        15#
         樓主| 漁滒 發表于 2020-10-22 00:28 |樓主
        濤之雨 發表于 2020-10-22 00:20
        自定義加密。。。就離譜。。。

        是的,1,2,5題都不是標準的md5,比較麻煩
        16#
        eastkyo 發表于 2020-10-22 00:48

        回帖獎勵 +1 CB吾愛幣

        謝謝分享,太棒了
        您需要登錄后才可以回帖 登錄 | 注冊[Register]

        本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

        快速回復 收藏帖子 返回列表 搜索

        RSS訂閱|小黑屋|處罰記錄|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

        GMT+8, 2020-11-25 01:32

        Powered by Discuz!

        Copyright © 2001-2020, Tencent Cloud.

        快速回復 返回頂部 返回列表
        快三开奖结果