window = this;
navigator = {
    appName : "Netscape",
    userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}


!function(t, e) {
    if ("object" == typeof exports && "object" == typeof module)
        module.exports = e();
    else if ("function" == typeof define && define.amd)
        define([], e);
    else {
        var r, i = e();
        for (r in i)
            ("object" == typeof exports ? exports : t)[r] = i[r]
    }
}(this, (function() {
    var t = {
        77: function(t, e) {
            (function() {
                function e(t, e, r) {
                    null != t && ("number" == typeof t ? this.fromNumber(t, e, r) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e))
                }
                function r() {
                    return new e(null)
                }
                var i = (i = "undefined" != typeof navigator) && "Microsoft Internet Explorer" == navigator.appName ? (e.prototype.am = function(t, e, r, i, n, o) {
                    for (var s = 32767 & e, h = e >> 15; 0 <= --o; ) {
                        var u = 32767 & this[t]
                          , a = this[t++] >> 15
                          , c = h * u + a * s;
                        n = ((u = s * u + ((32767 & c) << 15) + r[i] + (1073741823 & n)) >>> 30) + (c >>> 15) + h * a + (n >>> 30),
                        r[i++] = 1073741823 & u
                    }
                    return n
                }
                ,
                30) : i && "Netscape" != navigator.appName ? (e.prototype.am = function(t, e, r, i, n, o) {
                    for (; 0 <= --o; ) {
                        var s = e * this[t++] + r[i] + n;
                        n = Math.floor(s / 67108864),
                        r[i++] = 67108863 & s
                    }
                    return n
                }
                ,
                26) : (e.prototype.am = function(t, e, r, i, n, o) {
                    for (var s = 16383 & e, h = e >> 14; 0 <= --o; ) {
                        var u = 16383 & this[t]
                          , a = this[t++] >> 14
                          , c = h * u + a * s;
                        n = ((u = s * u + ((16383 & c) << 14) + r[i] + n) >> 28) + (c >> 14) + h * a,
                        r[i++] = 268435455 & u
                    }
                    return n
                }
                ,
                28);
                e.prototype.DB = i,
                e.prototype.DM = (1 << i) - 1,
                e.prototype.DV = 1 << i,
                e.prototype.FV = Math.pow(2, 52),
                e.prototype.F1 = 52 - i,
                e.prototype.F2 = 2 * i - 52;
                for (var n = new Array, o = "0".charCodeAt(0), s = 0; s <= 9; ++s)
                    n[o++] = s;
                for (o = "a".charCodeAt(0),
                s = 10; s < 36; ++s)
                    n[o++] = s;
                for (o = "A".charCodeAt(0),
                s = 10; s < 36; ++s)
                    n[o++] = s;
                function h(t) {
                    return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(t)
                }
                function u(t, e) {
                    return null == (e = n[t.charCodeAt(e)]) ? -1 : e
                }
                function a(t) {
                    var e = r();
                    return e.fromInt(t),
                    e
                }
                function c(t) {
                    var e, r = 1;
                    return 0 != (e = t >>> 16) && (t = e,
                    r += 16),
                    0 != (e = t >> 8) && (t = e,
                    r += 8),
                    0 != (e = t >> 4) && (t = e,
                    r += 4),
                    0 != (e = t >> 2) && (t = e,
                    r += 2),
                    0 != (e = t >> 1) && (t = e,
                    r += 1),
                    r
                }
                function f(t) {
                    this.m = t
                }
                function p(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 l(t, e) {
                    return t & e
                }
                function y(t, e) {
                    return t | e
                }
                function d(t, e) {
                    return t ^ e
                }
                function m(t, e) {
                    return t & ~e
                }
                function v() {}
                function g(t) {
                    return t
                }
                function b(t) {
                    this.r2 = r(),
                    this.q3 = r(),
                    e.ONE.dlShiftTo(2 * t.t, this.r2),
                    this.mu = this.r2.divide(t),
                    this.m = t
                }
                f.prototype.convert = function(t) {
                    return t.s < 0 || 0 <= t.compareTo(this.m) ? t.mod(this.m) : t
                }
                ,
                f.prototype.revert = function(t) {
                    return t
                }
                ,
                f.prototype.reduce = function(t) {
                    t.divRemTo(this.m, null, t)
                }
                ,
                f.prototype.mulTo = function(t, e, r) {
                    t.multiplyTo(e, r),
                    this.reduce(r)
                }
                ,
                f.prototype.sqrTo = function(t, e) {
                    t.squareTo(e),
                    this.reduce(e)
                }
                ,
                p.prototype.convert = function(t) {
                    var i = r();
                    return t.abs().dlShiftTo(this.m.t, i),
                    i.divRemTo(this.m, null, i),
                    t.s < 0 && 0 < i.compareTo(e.ZERO) && this.m.subTo(i, i),
                    i
                }
                ,
                p.prototype.revert = function(t) {
                    var e = r();
                    return t.copyTo(e),
                    this.reduce(e),
                    e
                }
                ,
                p.prototype.reduce = function(t) {
                    for (; t.t <= this.mt2; )
                        t[t.t++] = 0;
                    for (var e = 0; e < this.m.t; ++e) {
                        var r = 32767 & t[e]
                          , i = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM;
                        for (t[r = e + this.m.t] += this.m.am(0, i, t, e, 0, this.m.t); t[r] >= t.DV; )
                            t[r] -= t.DV,
                            t[++r]++
                    }
                    t.clamp(),
                    t.drShiftTo(this.m.t, t),
                    0 <= t.compareTo(this.m) && t.subTo(this.m, t)
                }
                ,
                p.prototype.mulTo = function(t, e, r) {
                    t.multiplyTo(e, r),
                    this.reduce(r)
                }
                ,
                p.prototype.sqrTo = function(t, e) {
                    t.squareTo(e),
                    this.reduce(e)
                }
                ,
                e.prototype.copyTo = function(t) {
                    for (var e = this.t - 1; 0 <= e; --e)
                        t[e] = this[e];
                    t.t = this.t,
                    t.s = this.s
                }
                ,
                e.prototype.fromInt = function(t) {
                    this.t = 1,
                    this.s = t < 0 ? -1 : 0,
                    0 < t ? this[0] = t : t < -1 ? this[0] = t + this.DV : this.t = 0
                }
                ,
                e.prototype.fromString = function(t, r) {
                    var i;
                    if (16 == r)
                        i = 4;
                    else if (8 == r)
                        i = 3;
                    else if (256 == r)
                        i = 8;
                    else if (2 == r)
                        i = 1;
                    else if (32 == r)
                        i = 5;
                    else {
                        if (4 != r)
                            return void this.fromRadix(t, r);
                        i = 2
                    }
                    this.t = 0,
                    this.s = 0;
                    for (var n = t.length, o = !1, s = 0; 0 <= --n; ) {
                        var h = 8 == i ? 255 & t[n] : u(t, n);
                        h < 0 ? "-" == t.charAt(n) && (o = !0) : (o = !1,
                        0 == s ? this[this.t++] = h : s + i > this.DB ? (this[this.t - 1] |= (h & (1 << this.DB - s) - 1) << s,
                        this[this.t++] = h >> this.DB - s) : this[this.t - 1] |= h << s,
                        (s += i) >= this.DB && (s -= this.DB))
                    }
                    8 == i && 0 != (128 & t[0]) && (this.s = -1,
                    0 < s && (this[this.t - 1] |= (1 << this.DB - s) - 1 << s)),
                    this.clamp(),
                    o && e.ZERO.subTo(this, this)
                }
                ,
                e.prototype.clamp = function() {
                    for (var t = this.s & this.DM; 0 < this.t && this[this.t - 1] == t; )
                        --this.t
                }
                ,
                e.prototype.dlShiftTo = function(t, e) {
                    for (var r = this.t - 1; 0 <= r; --r)
                        e[r + t] = this[r];
                    for (r = t - 1; 0 <= r; --r)
                        e[r] = 0;
                    e.t = this.t + t,
                    e.s = this.s
                }
                ,
                e.prototype.drShiftTo = function(t, e) {
                    for (var r = t; r < this.t; ++r)
                        e[r - t] = this[r];
                    e.t = Math.max(this.t - t, 0),
                    e.s = this.s
                }
                ,
                e.prototype.lShiftTo = function(t, e) {
                    for (var r = t % this.DB, i = this.DB - r, n = (1 << i) - 1, o = Math.floor(t / this.DB), s = this.s << r & this.DM, h = this.t - 1; 0 <= h; --h)
                        e[h + o + 1] = this[h] >> i | s,
                        s = (this[h] & n) << r;
                    for (h = o - 1; 0 <= h; --h)
                        e[h] = 0;
                    e[o] = s,
                    e.t = this.t + o + 1,
                    e.s = this.s,
                    e.clamp()
                }
                ,
                e.prototype.rShiftTo = function(t, e) {
                    e.s = this.s;
                    var r = Math.floor(t / this.DB);
                    if (r >= this.t)
                        e.t = 0;
                    else {
                        var i = t % this.DB
                          , n = this.DB - i
                          , o = (1 << i) - 1;
                        e[0] = this[r] >> i;
                        for (var s = r + 1; s < this.t; ++s)
                            e[s - r - 1] |= (this[s] & o) << n,
                            e[s - r] = this[s] >> i;
                        0 < i && (e[this.t - r - 1] |= (this.s & o) << n),
                        e.t = this.t - r,
                        e.clamp()
                    }
                }
                ,
                e.prototype.subTo = function(t, e) {
                    for (var r = 0, i = 0, n = Math.min(t.t, this.t); r < n; )
                        i += this[r] - t[r],
                        e[r++] = i & this.DM,
                        i >>= this.DB;
                    if (t.t < this.t) {
                        for (i -= t.s; r < this.t; )
                            i += this[r],
                            e[r++] = i & this.DM,
                            i >>= this.DB;
                        i += this.s
                    } else {
                        for (i += this.s; r < t.t; )
                            i -= t[r],
                            e[r++] = i & this.DM,
                            i >>= this.DB;
                        i -= t.s
                    }
                    e.s = i < 0 ? -1 : 0,
                    i < -1 ? e[r++] = this.DV + i : 0 < i && (e[r++] = i),
                    e.t = r,
                    e.clamp()
                }
                ,
                e.prototype.multiplyTo = function(t, r) {
                    var i = this.abs()
                      , n = t.abs()
                      , o = i.t;
                    for (r.t = o + n.t; 0 <= --o; )
                        r[o] = 0;
                    for (o = 0; o < n.t; ++o)
                        r[o + i.t] = i.am(0, n[o], r, o, 0, i.t);
                    r.s = 0,
                    r.clamp(),
                    this.s != t.s && e.ZERO.subTo(r, r)
                }
                ,
                e.prototype.squareTo = function(t) {
                    for (var e = this.abs(), r = t.t = 2 * e.t; 0 <= --r; )
                        t[r] = 0;
                    for (r = 0; r < e.t - 1; ++r) {
                        var i = e.am(r, e[r], t, 2 * r, 0, 1);
                        (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, i, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV,
                        t[r + e.t + 1] = 1)
                    }
                    0 < t.t && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)),
                    t.s = 0,
                    t.clamp()
                }
                ,
                e.prototype.divRemTo = function(t, i, n) {
                    var o = t.abs();
                    if (!(o.t <= 0)) {
                        if ((p = this.abs()).t < o.t)
                            return null != i && i.fromInt(0),
                            void (null != n && this.copyTo(n));
                        null == n && (n = r());
                        var s = r()
                          , h = this.s
                          , u = t.s;
                        0 < (t = this.DB - c(o[o.t - 1])) ? (o.lShiftTo(t, s),
                        p.lShiftTo(t, n)) : (o.copyTo(s),
                        p.copyTo(n));
                        var a = s.t
                          , f = s[a - 1];
                        if (0 != f) {
                            var p = f * (1 << this.F1) + (1 < a ? s[a - 2] >> this.F2 : 0)
                              , l = this.FV / p
                              , y = (1 << this.F1) / p
                              , d = 1 << this.F2
                              , m = n.t
                              , v = m - a
                              , g = null == i ? r() : i;
                            for (s.dlShiftTo(v, g),
                            0 <= n.compareTo(g) && (n[n.t++] = 1,
                            n.subTo(g, n)),
                            e.ONE.dlShiftTo(a, g),
                            g.subTo(s, s); s.t < a; )
                                s[s.t++] = 0;
                            for (; 0 <= --v; ) {
                                var b = n[--m] == f ? this.DM : Math.floor(n[m] * l + (n[m - 1] + d) * y);
                                if ((n[m] += s.am(0, b, n, v, 0, a)) < b)
                                    for (s.dlShiftTo(v, g),
                                    n.subTo(g, n); n[m] < --b; )
                                        n.subTo(g, n)
                            }
                            null != i && (n.drShiftTo(a, i),
                            h != u && e.ZERO.subTo(i, i)),
                            n.t = a,
                            n.clamp(),
                            0 < t && n.rShiftTo(t, n),
                            h < 0 && e.ZERO.subTo(n, n)
                        }
                    }
                }
                ,
                e.prototype.invDigit = function() {
                    if (this.t < 1)
                        return 0;
                    var t = this[0];
                    if (0 == (1 & t))
                        return 0;
                    var e = 3 & t;
                    return 0 < (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) ? this.DV - e : -e
                }
                ,
                e.prototype.isEven = function() {
                    return 0 == (0 < this.t ? 1 & this[0] : this.s)
                }
                ,
                e.prototype.exp = function(t, i) {
                    if (4294967295 < t || t < 1)
                        return e.ONE;
                    var n, o = r(), s = r(), h = i.convert(this), u = c(t) - 1;
                    for (h.copyTo(o); 0 <= --u; )
                        i.sqrTo(o, s),
                        0 < (t & 1 << u) ? i.mulTo(s, h, o) : (n = o,
                        o = s,
                        s = n);
                    return i.revert(o)
                }
                ,
                e.prototype.toString = function(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 r, i = (1 << e) - 1, n = !1, o = "", s = this.t, u = this.DB - s * this.DB % e;
                    if (0 < s--)
                        for (u < this.DB && 0 < (r = this[s] >> u) && (n = !0,
                        o = h(r)); 0 <= s; )
                            u < e ? (r = (this[s] & (1 << u) - 1) << e - u,
                            r |= this[--s] >> (u += this.DB - e)) : (r = this[s] >> (u -= e) & i,
                            u <= 0 && (u += this.DB,
                            --s)),
                            (n = 0 < r || n) && (o += h(r));
                    return n ? o : "0"
                }
                ,
                e.prototype.negate = function() {
                    var t = r();
                    return e.ZERO.subTo(this, t),
                    t
                }
                ,
                e.prototype.abs = function() {
                    return this.s < 0 ? this.negate() : this
                }
                ,
                e.prototype.compareTo = function(t) {
                    var e = this.s - t.s;
                    if (0 != e)
                        return e;
                    var r = this.t;
                    if (0 != (e = r - t.t))
                        return this.s < 0 ? -e : e;
                    for (; 0 <= --r; )
                        if (0 != (e = this[r] - t[r]))
                            return e;
                    return 0
                }
                ,
                e.prototype.bitLength = function() {
                    return this.t <= 0 ? 0 : this.DB * (this.t - 1) + c(this[this.t - 1] ^ this.s & this.DM)
                }
                ,
                e.prototype.mod = function(t) {
                    var i = r();
                    return this.abs().divRemTo(t, null, i),
                    this.s < 0 && 0 < i.compareTo(e.ZERO) && t.subTo(i, i),
                    i
                }
                ,
                e.prototype.modPowInt = function(t, e) {
                    return e = new (t < 256 || e.isEven() ? f : p)(e),
                    this.exp(t, e)
                }
                ,
                e.ZERO = a(0),
                e.ONE = a(1),
                v.prototype.convert = g,
                v.prototype.revert = g,
                v.prototype.mulTo = function(t, e, r) {
                    t.multiplyTo(e, r)
                }
                ,
                v.prototype.sqrTo = function(t, e) {
                    t.squareTo(e)
                }
                ,
                b.prototype.convert = function(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 = r();
                    return t.copyTo(e),
                    this.reduce(e),
                    e
                }
                ,
                b.prototype.revert = function(t) {
                    return t
                }
                ,
                b.prototype.reduce = function(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); 0 <= t.compareTo(this.m); )
                        t.subTo(this.m, t)
                }
                ,
                b.prototype.mulTo = function(t, e, r) {
                    t.multiplyTo(e, r),
                    this.reduce(r)
                }
                ,
                b.prototype.sqrTo = function(t, e) {
                    t.squareTo(e),
                    this.reduce(e)
                }
                ;
                var T, w = [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], F = (1 << 26) / w[w.length - 1];
                function S() {
                    var t;
                    t = (new Date).getTime(),
                    x[B++] ^= 255 & t,
                    x[B++] ^= t >> 8 & 255,
                    x[B++] ^= t >> 16 & 255,
                    x[B++] ^= t >> 24 & 255,
                    O <= B && (B -= O)
                }
                e.prototype.chunkSize = function(t) {
                    return Math.floor(Math.LN2 * this.DB / Math.log(t))
                }
                ,
                e.prototype.toRadix = function(t) {
                    if (null == t && (t = 10),
                    0 == this.signum() || t < 2 || 36 < t)
                        return "0";
                    var e = this.chunkSize(t)
                      , i = Math.pow(t, e)
                      , n = a(i)
                      , o = r()
                      , s = r()
                      , h = "";
                    for (this.divRemTo(n, o, s); 0 < o.signum(); )
                        h = (i + s.intValue()).toString(t).substr(1) + h,
                        o.divRemTo(n, o, s);
                    return s.intValue().toString(t) + h
                }
                ,
                e.prototype.fromRadix = function(t, r) {
                    this.fromInt(0);
                    for (var i = this.chunkSize(r = null == r ? 10 : r), n = Math.pow(r, i), o = !1, s = 0, h = 0, a = 0; a < t.length; ++a) {
                        var c = u(t, a);
                        c < 0 ? "-" == t.charAt(a) && 0 == this.signum() && (o = !0) : (h = r * h + c,
                        ++s >= i && (this.dMultiply(n),
                        this.dAddOffset(h, 0),
                        h = s = 0))
                    }
                    0 < s && (this.dMultiply(Math.pow(r, s)),
                    this.dAddOffset(h, 0)),
                    o && e.ZERO.subTo(this, this)
                }
                ,
                e.prototype.fromNumber = function(t, r, i) {
                    if ("number" == typeof r)
                        if (t < 2)
                            this.fromInt(1);
                        else
                            for (this.fromNumber(t, i),
                            this.testBit(t - 1) || this.bitwiseTo(e.ONE.shiftLeft(t - 1), y, this),
                            this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(r); )
                                this.dAddOffset(2, 0),
                                this.bitLength() > t && this.subTo(e.ONE.shiftLeft(t - 1), this);
                    else {
                        var n = new Array;
                        i = 7 & t,
                        n.length = 1 + (t >> 3),
                        r.nextBytes(n),
                        0 < i ? n[0] &= (1 << i) - 1 : n[0] = 0,
                        this.fromString(n, 256)
                    }
                }
                ,
                e.prototype.bitwiseTo = function(t, e, r) {
                    for (var i, n = Math.min(t.t, this.t), o = 0; o < n; ++o)
                        r[o] = e(this[o], t[o]);
                    if (t.t < this.t) {
                        for (i = t.s & this.DM,
                        o = n; o < this.t; ++o)
                            r[o] = e(this[o], i);
                        r.t = this.t
                    } else {
                        for (i = this.s & this.DM,
                        o = n; o < t.t; ++o)
                            r[o] = e(i, t[o]);
                        r.t = t.t
                    }
                    r.s = e(this.s, t.s),
                    r.clamp()
                }
                ,
                e.prototype.changeBit = function(t, r) {
                    return t = e.ONE.shiftLeft(t),
                    this.bitwiseTo(t, r, t),
                    t
                }
                ,
                e.prototype.addTo = function(t, e) {
                    for (var r = 0, i = 0, n = Math.min(t.t, this.t); r < n; )
                        i += this[r] + t[r],
                        e[r++] = i & this.DM,
                        i >>= this.DB;
                    if (t.t < this.t) {
                        for (i += t.s; r < this.t; )
                            i += this[r],
                            e[r++] = i & this.DM,
                            i >>= this.DB;
                        i += this.s
                    } else {
                        for (i += this.s; r < t.t; )
                            i += t[r],
                            e[r++] = i & this.DM,
                            i >>= this.DB;
                        i += t.s
                    }
                    e.s = i < 0 ? -1 : 0,
                    0 < i ? e[r++] = i : i < -1 && (e[r++] = this.DV + i),
                    e.t = r,
                    e.clamp()
                }
                ,
                e.prototype.dMultiply = function(t) {
                    this[this.t] = this.am(0, t - 1, this, 0, 0, this.t),
                    ++this.t,
                    this.clamp()
                }
                ,
                e.prototype.dAddOffset = function(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]
                    }
                }
                ,
                e.prototype.multiplyLowerTo = function(t, e, r) {
                    var i, n = Math.min(this.t + t.t, e);
                    for (r.s = 0,
                    r.t = n; 0 < n; )
                        r[--n] = 0;
                    for (i = r.t - this.t; n < i; ++n)
                        r[n + this.t] = this.am(0, t[n], r, n, 0, this.t);
                    for (i = Math.min(t.t, e); n < i; ++n)
                        this.am(0, t[n], r, n, 0, e - n);
                    r.clamp()
                }
                ,
                e.prototype.multiplyUpperTo = function(t, e, r) {
                    var i = r.t = this.t + t.t - --e;
                    for (r.s = 0; 0 <= --i; )
                        r[i] = 0;
                    for (i = Math.max(e - this.t, 0); i < t.t; ++i)
                        r[this.t + i - e] = this.am(e - i, t[i], r, 0, 0, this.t + i - e);
                    r.clamp(),
                    r.drShiftTo(1, r)
                }
                ,
                e.prototype.modInt = function(t) {
                    if (t <= 0)
                        return 0;
                    var e = this.DV % t
                      , r = this.s < 0 ? t - 1 : 0;
                    if (0 < this.t)
                        if (0 == e)
                            r = this[0] % t;
                        else
                            for (var i = this.t - 1; 0 <= i; --i)
                                r = (e * r + this[i]) % t;
                    return r
                }
                ,
                e.prototype.millerRabin = function(t) {
                    var i = this.subtract(e.ONE)
                      , n = i.getLowestSetBit();
                    if (n <= 0)
                        return !1;
                    var o = i.shiftRight(n);
                    w.length < (t = t + 1 >> 1) && (t = w.length);
                    for (var s = r(), h = 0; h < t; ++h) {
                        s.fromInt(w[Math.floor(Math.random() * w.length)]);
                        var u = s.modPow(o, this);
                        if (0 != u.compareTo(e.ONE) && 0 != u.compareTo(i)) {
                            for (var a = 1; a++ < n && 0 != u.compareTo(i); )
                                if (0 == (u = u.modPowInt(2, this)).compareTo(e.ONE))
                                    return !1;
                            if (0 != u.compareTo(i))
                                return !1
                        }
                    }
                    return !0
                }
                ,
                e.prototype.clone = function() {
                    var t = r();
                    return this.copyTo(t),
                    t
                }
                ,
                e.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]
                }
                ,
                e.prototype.byteValue = function() {
                    return 0 == this.t ? this.s : this[0] << 24 >> 24
                }
                ,
                e.prototype.shortValue = function() {
                    return 0 == this.t ? this.s : this[0] << 16 >> 16
                }
                ,
                e.prototype.signum = function() {
                    return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1
                }
                ,
                e.prototype.toByteArray = function() {
                    var t = this.t
                      , e = new Array;
                    e[0] = this.s;
                    var r, i = this.DB - t * this.DB % 8, n = 0;
                    if (0 < t--)
                        for (i < this.DB && (r = this[t] >> i) != (this.s & this.DM) >> i && (e[n++] = r | this.s << this.DB - i); 0 <= t; )
                            i < 8 ? (r = (this[t] & (1 << i) - 1) << 8 - i,
                            r |= this[--t] >> (i += this.DB - 8)) : (r = this[t] >> (i -= 8) & 255,
                            i <= 0 && (i += this.DB,
                            --t)),
                            0 != (128 & r) && (r |= -256),
                            0 == n && (128 & this.s) != (128 & r) && ++n,
                            (0 < n || r != this.s) && (e[n++] = r);
                    return e
                }
                ,
                e.prototype.equals = function(t) {
                    return 0 == this.compareTo(t)
                }
                ,
                e.prototype.min = function(t) {
                    return this.compareTo(t) < 0 ? this : t
                }
                ,
                e.prototype.max = function(t) {
                    return 0 < this.compareTo(t) ? this : t
                }
                ,
                e.prototype.and = function(t) {
                    var e = r();
                    return this.bitwiseTo(t, l, e),
                    e
                }
                ,
                e.prototype.or = function(t) {
                    var e = r();
                    return this.bitwiseTo(t, y, e),
                    e
                }
                ,
                e.prototype.xor = function(t) {
                    var e = r();
                    return this.bitwiseTo(t, d, e),
                    e
                }
                ,
                e.prototype.andNot = function(t) {
                    var e = r();
                    return this.bitwiseTo(t, m, e),
                    e
                }
                ,
                e.prototype.not = function() {
                    for (var t = r(), e = 0; e < this.t; ++e)
                        t[e] = this.DM & ~this[e];
                    return t.t = this.t,
                    t.s = ~this.s,
                    t
                }
                ,
                e.prototype.shiftLeft = function(t) {
                    var e = r();
                    return t < 0 ? this.rShiftTo(-t, e) : this.lShiftTo(t, e),
                    e
                }
                ,
                e.prototype.shiftRight = function(t) {
                    var e = r();
                    return t < 0 ? this.lShiftTo(-t, e) : this.rShiftTo(t, e),
                    e
                }
                ,
                e.prototype.getLowestSetBit = function() {
                    for (var t = 0; t < this.t; ++t)
                        if (0 != this[t])
                            return t * this.DB + function(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
                            }(this[t]);
                    return this.s < 0 ? this.t * this.DB : -1
                }
                ,
                e.prototype.bitCount = function() {
                    for (var t = 0, e = this.s & this.DM, r = 0; r < this.t; ++r)
                        t += function(t) {
                            for (var e = 0; 0 != t; )
                                t &= t - 1,
                                ++e;
                            return e
                        }(this[r] ^ e);
                    return t
                }
                ,
                e.prototype.testBit = function(t) {
                    var e = Math.floor(t / this.DB);
                    return e >= this.t ? 0 != this.s : 0 != (this[e] & 1 << t % this.DB)
                }
                ,
                e.prototype.setBit = function(t) {
                    return this.changeBit(t, y)
                }
                ,
                e.prototype.clearBit = function(t) {
                    return this.changeBit(t, m)
                }
                ,
                e.prototype.flipBit = function(t) {
                    return this.changeBit(t, d)
                }
                ,
                e.prototype.add = function(t) {
                    var e = r();
                    return this.addTo(t, e),
                    e
                }
                ,
                e.prototype.subtract = function(t) {
                    var e = r();
                    return this.subTo(t, e),
                    e
                }
                ,
                e.prototype.multiply = function(t) {
                    var e = r();
                    return this.multiplyTo(t, e),
                    e
                }
                ,
                e.prototype.divide = function(t) {
                    var e = r();
                    return this.divRemTo(t, e, null),
                    e
                }
                ,
                e.prototype.remainder = function(t) {
                    var e = r();
                    return this.divRemTo(t, null, e),
                    e
                }
                ,
                e.prototype.divideAndRemainder = function(t) {
                    var e = r()
                      , i = r();
                    return this.divRemTo(t, e, i),
                    new Array(e,i)
                }
                ,
                e.prototype.modPow = function(t, e) {
                    var i = t.bitLength()
                      , n = a(1);
                    if (i <= 0)
                        return n;
                    var o = i < 18 ? 1 : i < 48 ? 3 : i < 144 ? 4 : i < 768 ? 5 : 6
                      , s = new (i < 8 ? f : e.isEven() ? b : p)(e)
                      , h = new Array
                      , u = 3
                      , l = o - 1
                      , y = (1 << o) - 1;
                    if (h[1] = s.convert(this),
                    1 < o) {
                        var d = r();
                        for (s.sqrTo(h[1], d); u <= y; )
                            h[u] = r(),
                            s.mulTo(d, h[u - 2], h[u]),
                            u += 2
                    }
                    var m, v, g = t.t - 1, T = !0, w = r();
                    for (i = c(t[g]) - 1; 0 <= g; ) {
                        for (l <= i ? m = t[g] >> i - l & y : (m = (t[g] & (1 << i + 1) - 1) << l - i,
                        0 < g && (m |= t[g - 1] >> this.DB + i - l)),
                        u = o; 0 == (1 & m); )
                            m >>= 1,
                            --u;
                        if ((i -= u) < 0 && (i += this.DB,
                        --g),
                        T)
                            h[m].copyTo(n),
                            T = !1;
                        else {
                            for (; 1 < u; )
                                s.sqrTo(n, w),
                                s.sqrTo(w, n),
                                u -= 2;
                            0 < u ? s.sqrTo(n, w) : (v = n,
                            n = w,
                            w = v),
                            s.mulTo(w, h[m], n)
                        }
                        for (; 0 <= g && 0 == (t[g] & 1 << i); )
                            s.sqrTo(n, w),
                            v = n,
                            n = w,
                            w = v,
                            --i < 0 && (i = this.DB - 1,
                            --g)
                    }
                    return s.revert(n)
                }
                ,
                e.prototype.modInverse = function(t) {
                    var r = t.isEven();
                    if (this.isEven() && r || 0 == t.signum())
                        return e.ZERO;
                    for (var i = t.clone(), n = this.clone(), o = a(1), s = a(0), h = a(0), u = a(1); 0 != i.signum(); ) {
                        for (; i.isEven(); )
                            i.rShiftTo(1, i),
                            r ? (o.isEven() && s.isEven() || (o.addTo(this, o),
                            s.subTo(t, s)),
                            o.rShiftTo(1, o)) : s.isEven() || s.subTo(t, s),
                            s.rShiftTo(1, s);
                        for (; n.isEven(); )
                            n.rShiftTo(1, n),
                            r ? (h.isEven() && u.isEven() || (h.addTo(this, h),
                            u.subTo(t, u)),
                            h.rShiftTo(1, h)) : u.isEven() || u.subTo(t, u),
                            u.rShiftTo(1, u);
                        0 <= i.compareTo(n) ? (i.subTo(n, i),
                        r && o.subTo(h, o),
                        s.subTo(u, s)) : (n.subTo(i, n),
                        r && h.subTo(o, h),
                        u.subTo(s, u))
                    }
                    return 0 != n.compareTo(e.ONE) ? e.ZERO : 0 <= u.compareTo(t) ? u.subtract(t) : u.signum() < 0 ? (u.addTo(t, u),
                    u.signum() < 0 ? u.add(t) : u) : u
                }
                ,
                e.prototype.pow = function(t) {
                    return this.exp(t, new v)
                }
                ,
                e.prototype.gcd = function(t) {
                    var e = this.s < 0 ? this.negate() : this.clone()
                      , r = t.s < 0 ? t.negate() : t.clone();
                    e.compareTo(r) < 0 && (n = e,
                    e = r,
                    r = n);
                    var i = e.getLowestSetBit()
                      , n = r.getLowestSetBit();
                    if (n < 0)
                        return e;
                    for (0 < (n = i < n ? i : n) && (e.rShiftTo(n, e),
                    r.rShiftTo(n, r)); 0 < e.signum(); )
                        0 < (i = e.getLowestSetBit()) && e.rShiftTo(i, e),
                        0 < (i = r.getLowestSetBit()) && r.rShiftTo(i, r),
                        0 <= e.compareTo(r) ? (e.subTo(r, e),
                        e.rShiftTo(1, e)) : (r.subTo(e, r),
                        r.rShiftTo(1, r));
                    return 0 < n && r.lShiftTo(n, r),
                    r
                }
                ,
                e.prototype.isProbablePrime = function(t) {
                    var e, r = this.abs();
                    if (1 == r.t && r[0] <= w[w.length - 1]) {
                        for (e = 0; e < w.length; ++e)
                            if (r[0] == w[e])
                                return !0;
                        return !1
                    }
                    if (r.isEven())
                        return !1;
                    for (e = 1; e < w.length; ) {
                        for (var i = w[e], n = e + 1; n < w.length && i < F; )
                            i *= w[n++];
                        for (i = r.modInt(i); e < n; )
                            if (i % w[e++] == 0)
                                return !1
                    }
                    return r.millerRabin(t)
                }
                ,
                e.prototype.square = function() {
                    var t = r();
                    return this.squareTo(t),
                    t
                }
                ,
                e.prototype.Barrett = b;
                var x = new Array
                  , B = 0;
                if ("undefined" != typeof window && window.crypto)
                    if (window.crypto.getRandomValues) {
                        var D = new Uint8Array(32);
                        for (window.crypto.getRandomValues(D),
                        A = 0; A < 32; ++A)
                            x[B++] = D[A]
                    } else if ("Netscape" == navigator.appName && navigator.appVersion < "5")
                        for (var E = window.crypto.random(32), A = 0; A < E.length; ++A)
                            x[B++] = 255 & E.charCodeAt(A);
                for (; B < O; )
                    A = Math.floor(65536 * Math.random()),
                    x[B++] = A >>> 8,
                    x[B++] = 255 & A;
                function I() {
                    if (null == T) {
                        for (S(),
                        (T = new R).init(x),
                        B = 0; B < x.length; ++B)
                            x[B] = 0;
                        B = 0
                    }
                    return T.next()
                }
                function q() {}
                function R() {
                    this.i = 0,
                    this.j = 0,
                    this.S = new Array
                }
                B = 0,
                S(),
                q.prototype.nextBytes = function(t) {
                    for (var e = 0; e < t.length; ++e)
                        t[e] = I()
                }
                ,
                R.prototype.init = function(t) {
                    for (var e, r, i = 0; i < 256; ++i)
                        this.S[i] = i;
                    for (i = e = 0; i < 256; ++i)
                        e = e + this.S[i] + t[i % t.length] & 255,
                        r = this.S[i],
                        this.S[i] = this.S[e],
                        this.S[e] = r;
                    this.i = 0,
                    this.j = 0
                }
                ,
                R.prototype.next = function() {
                    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]
                }
                ;
                var O = 256;
                t.exports = {
                    default: e,
                    BigInteger: e,
                    SecureRandom: q
                }
            }
            ).call(this)
        },
        686: function(t, e, r) {
            function i(t) {
                if (o[t])
                    return o[t].exports;
                var e = o[t] = {
                    i: t,
                    l: !1,
                    exports: {}
                };
                return n[t].call(e.exports, e, e.exports, i),
                e.l = !0,
                e.exports
            }
            var n, o;
            t.exports = (o = {},
            i.m = n = [function(t, e) {
                t.exports = r(77)
            }
            , function(t, e, r) {
                "use strict";
                function i(t, e) {
                    for (var r = [], i = ~~(e / 8), n = e % 8, o = 0, s = t.length; o < s; o++)
                        r[o] = (t[(o + i) % s] << n & 255) + (t[(o + i + 1) % s] >>> 8 - n & 255);
                    return r
                }
                function n(t, e) {
                    for (var r = [], i = t.length - 1; 0 <= i; i--)
                        r[i] = 255 & (t[i] ^ e[i]);
                    return r
                }
                function o(t, e) {
                    for (var r = [], i = t.length - 1; 0 <= i; i--)
                        r[i] = t[i] & e[i] & 255;
                    return r
                }
                function s(t, e) {
                    for (var r = [], i = t.length - 1; 0 <= i; i--)
                        r[i] = 255 & (t[i] | e[i]);
                    return r
                }
                function h(t, e) {
                    for (var r = [], i = 0, n = t.length - 1; 0 <= n; n--) {
                        var o = t[n] + e[n] + i;
                        i = 255 < o ? 1 : 0,
                        r[n] = 255 & o
                    }
                    return r
                }
                function u(t, e, r, i) {
                    return 0 <= i && i <= 15 ? n(n(t, e), r) : s(o(t, e), o(function(t) {
                        for (var e = [], r = t.length - 1; 0 <= r; r--)
                            e[r] = 255 & ~t[r];
                        return e
                    }(t), r))
                }
                function a(t, e) {
                    for (var r = [], a = [], c = 0; c < 16; c++) {
                        var f = 4 * c;
                        r.push(e.slice(f, 4 + f))
                    }
                    for (var p, l = 16; l < 68; l++)
                        r.push(n(n((p = n(n(r[l - 16], r[l - 9]), i(r[l - 3], 15)),
                        n(n(p, i(p, 15)), i(p, 23))), i(r[l - 13], 7)), r[l - 6]));
                    for (var y = 0; y < 64; y++)
                        a.push(n(r[y], r[y + 4]));
                    for (var d, m, v = [121, 204, 69, 25], g = [122, 135, 157, 138], b = t.slice(0, 4), T = t.slice(4, 8), w = t.slice(8, 12), F = t.slice(12, 16), S = t.slice(16, 20), x = t.slice(20, 24), B = t.slice(24, 28), D = t.slice(28, 32), E = void 0, A = 0; A < 64; A++) {
                        var I = 0 <= A && A <= 15 ? v : g
                          , q = n(E = i(h(h(i(b, 12), S), i(I, A)), 7), i(b, 12))
                          , R = h(h(h((d = b,
                        m = T,
                        R = w,
                        0 <= (I = A) && I <= 15 ? n(n(d, m), R) : s(s(o(d, m), o(d, R)), o(m, R))), F), q), a[A]);
                        q = h(h(h(u(S, x, B, A), D), E), r[A]),
                        F = w,
                        w = i(T, 9),
                        T = b,
                        b = R,
                        D = B,
                        B = i(x, 19),
                        x = S,
                        S = n(n(q = q, i(q, 9)), i(q, 17))
                    }
                    return n([].concat(b, T, w, F, S, x, B, D), t)
                }
                t.exports = function(t) {
                    for (var e = 448 <= (e = (h = 8 * t.length) % 512) ? 512 - e % 448 - 1 : 448 - e - 1, r = new Array((e - 7) / 8), i = 0, n = r.length; i < n; i++)
                        r[i] = 0;
                    for (var o, s = [], h = h.toString(2), u = 7; 0 <= u; u--)
                        8 < h.length ? (o = h.length - 8,
                        s[u] = parseInt(h.substr(o), 2),
                        h = h.substr(0, o)) : 0 < h.length ? (s[u] = parseInt(h, 2),
                        h = "") : s[u] = 0;
                    for (var c = [].concat(t, [128], r, s), f = c.length / 64, p = [115, 128, 22, 111, 73, 20, 178, 185, 23, 36, 66, 215, 218, 138, 6, 0, 169, 111, 48, 188, 22, 49, 56, 170, 227, 141, 238, 77, 176, 251, 14, 78], l = 0; l < f; l++) {
                        var y = 64 * l;
                        p = a(p, c.slice(y, 64 + y))
                    }
                    return p
                }
            }
            , function(t, e, r) {
                "use strict";
                t.exports = {
                    sm2: r(3),
                    sm3: r(7),
                    sm4: r(8)
                }
            }
            , function(t, e, r) {
                "use strict";
                var i = r(0).BigInteger
                  , n = r(4)
                  , o = n.encodeDer
                  , s = n.decodeDer
                  , h = r(5)
                  , u = r(1)
                  , a = (r = h.generateEcparam()).G
                  , c = r.curve
                  , f = r.n;
                function p(t, e, r) {
                    var i = h.utf8ToHex(i = 2 < arguments.length && void 0 !== r ? r : "1234567812345678")
                      , n = h.leftPad(a.curve.a.toBigInteger().toRadix(16), 64)
                      , o = h.leftPad(a.curve.b.toBigInteger().toRadix(16), 64)
                      , s = h.leftPad(a.getX().toBigInteger().toRadix(16), 64)
                      , c = h.leftPad(a.getY().toBigInteger().toRadix(16), 64);
                    return r = (e = 128 < e.length ? e.substr(2, 128) : e).substr(0, 64),
                    e = e.substr(64, 64),
                    e = h.hexToArray(i + n + o + s + c + r + e),
                    i = 4 * i.length,
                    e.unshift(255 & i),
                    e.unshift(i >> 8 & 255),
                    e = u(e),
                    h.arrayToHex(u(e.concat(h.hexToArray(t))))
                }
                function l() {
                    var t = h.generateKeyPairHex()
                      , e = c.decodePointHex(t.publicKey);
                    return t.k = new i(t.privateKey,16),
                    t.x1 = e.getX().toBigInteger(),
                    t
                }
                t.exports = {
                    generateKeyPairHex: h.generateKeyPairHex,
                    doEncrypt: function(t, e) {
                        var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 1;
                        t = h.hexToArray(h.utf8ToHex(t)),
                        e = h.getGlobalCurve().decodePointHex(e);
                        var n = h.generateKeyPairHex()
                          , o = new i(n.privateKey,16)
                          , s = n.publicKey;
                        function a() {
                            p = u([].concat(l, [c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c])),
                            c++,
                            f = 0
                        }
                        128 < s.length && (s = s.substr(s.length - 128)),
                        n = e.multiply(o),
                        e = h.hexToArray(h.leftPad(n.getX().toBigInteger().toRadix(16), 64)),
                        o = h.hexToArray(h.leftPad(n.getY().toBigInteger().toRadix(16), 64)),
                        n = h.arrayToHex(u([].concat(e, t, o)));
                        var c = 1
                          , f = 0
                          , p = []
                          , l = [].concat(e, o);
                        a();
                        for (var y = 0, d = t.length; y < d; y++)
                            f === p.length && a(),
                            t[y] ^= 255 & p[f++];
                        return o = h.arrayToHex(t),
                        0 === r ? s + o + n : s + n + o
                    },
                    doDecrypt: function(t, e) {
                        var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 1;
                        e = new i(e,16);
                        var n = t.substr(128, 64)
                          , o = t.substr(192);
                        function s() {
                            p = u([].concat(l, [c >> 24 & 255, c >> 16 & 255, c >> 8 & 255, 255 & c])),
                            c++,
                            f = 0
                        }
                        0 === r && (n = t.substr(t.length - 64),
                        o = t.substr(128, t.length - 128 - 64));
                        var a = h.hexToArray(o)
                          , c = (t = h.getGlobalCurve().decodePointHex("04" + t.substr(0, 128)).multiply(e),
                        e = h.hexToArray(h.leftPad(t.getX().toBigInteger().toRadix(16), 64)),
                        t = h.hexToArray(h.leftPad(t.getY().toBigInteger().toRadix(16), 64)),
                        1)
                          , f = 0
                          , p = []
                          , l = [].concat(e, t);
                        s();
                        for (var y = 0, d = a.length; y < d; y++)
                            f === p.length && s(),
                            a[y] ^= 255 & p[f++];
                        return h.arrayToHex(u([].concat(e, a, t))) === n ? h.arrayToUtf8(a) : ""
                    },
                    doSignature: function(t, e) {
                        var r = (c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).pointPool
                          , n = c.der
                          , s = c.hash
                          , u = c.publicKey
                          , c = c.userId;
                        t = "string" == typeof t ? h.utf8ToHex(t) : h.arrayToHex(t),
                        s && (t = p(t, u || (s = e,
                        u = a.multiply(new i(s,16)),
                        "04" + (s = h.leftPad(u.getX().toBigInteger().toString(16), 64)) + (u = h.leftPad(u.getY().toBigInteger().toString(16), 64))), c));
                        var y = new i(e,16)
                          , d = new i(t,16)
                          , m = null
                          , v = null
                          , g = null;
                        do {
                            do {
                                var b = void 0;
                                m = (b = r && r.length ? r.pop() : l()).k,
                                v = d.add(b.x1).mod(f)
                            } while (v.equals(i.ZERO) || v.add(m).equals(f))
                        } while ((g = y.add(i.ONE).modInverse(f).multiply(m.subtract(v.multiply(y))).mod(f)).equals(i.ZERO));
                        return n ? o(v, g) : h.leftPad(v.toString(16), 64) + h.leftPad(g.toString(16), 64)
                    },
                    doVerifySignature: function(t, e, r) {
                        var n = (u = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : {}).der
                          , o = u.hash
                          , u = u.userId;
                        return t = "string" == typeof t ? h.utf8ToHex(t) : h.arrayToHex(t),
                        o && (t = p(t, r, u)),
                        o = void 0,
                        u = void 0,
                        u = n ? (o = (n = s(e)).r,
                        n.s) : (o = new i(e.substring(0, 64),16),
                        new i(e.substring(64),16)),
                        e = c.decodePointHex(r),
                        r = new i(t,16),
                        !(t = o.add(u).mod(f)).equals(i.ZERO) && (t = a.multiply(u).add(e.multiply(t)),
                        t = r.add(t.getX().toBigInteger()).mod(f),
                        o.equals(t))
                    },
                    getPoint: l,
                    verifyPublicKey: h.verifyPublicKey
                }
            }
            , function(t, e, r) {
                "use strict";
                function i(t, e) {
                    if (!t)
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return !e || "object" != typeof e && "function" != typeof e ? t : e
                }
                function n(t, e) {
                    if ("function" != typeof e && null !== e)
                        throw new TypeError("Super expression must either be null or a function, not " + typeof e);
                    t.prototype = Object.create(e && e.prototype, {
                        constructor: {
                            value: t,
                            enumerable: !1,
                            writable: !0,
                            configurable: !0
                        }
                    }),
                    e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
                }
                function o(t, e) {
                    if (!(t instanceof e))
                        throw new TypeError("Cannot call a class as a function")
                }
                var s = r(0).BigInteger;
                function h() {
                    o(this, h),
                    this.tlv = null,
                    this.t = "00",
                    this.l = "00",
                    this.v = ""
                }
                h.prototype.getEncodedHex = function() {
                    return this.tlv || (this.v = this.getValue(),
                    this.l = this.getLength(),
                    this.tlv = this.t + this.l + this.v),
                    this.tlv
                }
                ,
                h.prototype.getLength = function() {
                    var t = this.v.length / 2
                      , e = t.toString(16);
                    return e.length % 2 == 1 && (e = "0" + e),
                    t < 128 ? e : (128 + e.length / 2).toString(16) + e
                }
                ,
                h.prototype.getValue = function() {
                    return ""
                }
                ;
                var u, a = (n(c, u = r = h),
                c.prototype.getValue = function() {
                    return this.v
                }
                ,
                c);
                function c(t) {
                    o(this, c);
                    var e = i(this, u.call(this));
                    return e.t = "02",
                    t && (e.v = function(t) {
                        if ("-" !== (e = t.toString(16))[0])
                            e.length % 2 == 1 ? e = "0" + e : e.match(/^[0-7]/) || (e = "00" + e);
                        else {
                            var e, r = (e = e.substr(1)).length;
                            r % 2 == 1 ? r += 1 : e.match(/^[0-7]/) || (r += 2);
                            for (var i = "", n = 0; n < r; n++)
                                i += "f";
                            e = (e = (i = new s(i,16)).xor(t).add(s.ONE)).toString(16).replace(/^-/, "")
                        }
                        return e
                    }(t)),
                    e
                }
                var f, p = (n(l, f = r),
                l.prototype.getValue = function() {
                    return this.v = this.asn1Array.map((function(t) {
                        return t.getEncodedHex()
                    }
                    )).join(""),
                    this.v
                }
                ,
                l);
                function l(t) {
                    o(this, l);
                    var e = i(this, f.call(this));
                    return e.t = "30",
                    e.asn1Array = t,
                    e
                }
                function y(t, e) {
                    return +t[e + 2] < 8 ? 1 : 128 & +t.substr(e + 2, 2)
                }
                function d(t, e) {
                    var r = y(t, e);
                    return (r = t.substr(e + 2, 2 * r)) ? (+r[0] < 8 ? new s(r,16) : new s(r.substr(2),16)).intValue() : -1
                }
                function m(t, e) {
                    return e + 2 * (y(t, e) + 1)
                }
                t.exports = {
                    encodeDer: function(t, e) {
                        return t = new a(t),
                        e = new a(e),
                        new p([t, e]).getEncodedHex()
                    },
                    decodeDer: function(t) {
                        var e = m(t, 0)
                          , r = m(t, e)
                          , i = d(t, e);
                        return e = t.substr(r, 2 * i),
                        r = m(t, i = r + e.length),
                        i = d(t, i),
                        i = t.substr(r, 2 * i),
                        {
                            r: new s(e,16),
                            s: new s(i,16)
                        }
                    }
                }
            }
            , function(t, e, r) {
                "use strict";
                var i = (n = r(0)).BigInteger
                  , n = n.SecureRandom
                  , o = r(6).ECCurveFp
                  , s = new n
                  , h = (n = c()).curve
                  , u = n.G
                  , a = n.n;
                function c() {
                    var t = new i("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",16)
                      , e = new i("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",16)
                      , r = new i("28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",16);
                    return r = (e = new o(t,e,r)).decodePointHex("0432C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0"),
                    {
                        curve: e,
                        G: r,
                        n: new i("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",16)
                    }
                }
                function f(t, e) {
                    return t.length >= e ? t : new Array(e - t.length + 1).join("0") + t
                }
                t.exports = {
                    getGlobalCurve: function() {
                        return h
                    },
                    generateEcparam: c,
                    generateKeyPairHex: function(t, e, r) {
                        return {
                            privateKey: r = f((e = (t ? new i(t,e,r) : new i(a.bitLength(),s)).mod(a.subtract(i.ONE)).add(i.ONE)).toString(16), 64),
                            publicKey: "04" + f((e = u.multiply(e)).getX().toBigInteger().toString(16), 64) + f(e.getY().toBigInteger().toString(16), 64)
                        }
                    },
                    utf8ToHex: function(t) {
                        for (var e = (t = unescape(encodeURIComponent(t))).length, r = [], i = 0; i < e; i++)
                            r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
                        for (var n = [], o = 0; o < e; o++) {
                            var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                            n.push((s >>> 4).toString(16)),
                            n.push((15 & s).toString(16))
                        }
                        return n.join("")
                    },
                    leftPad: f,
                    arrayToHex: function(t) {
                        return t.map((function(t) {
                            return 1 === (t = t.toString(16)).length ? "0" + t : t
                        }
                        )).join("")
                    },
                    arrayToUtf8: function(t) {
                        for (var e = [], r = 0, i = 0; i < 2 * t.length; i += 2)
                            e[i >>> 3] |= parseInt(t[r], 10) << 24 - i % 8 * 4,
                            r++;
                        try {
                            for (var n = [], o = 0; o < t.length; o++) {
                                var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                                n.push(String.fromCharCode(s))
                            }
                            return decodeURIComponent(escape(n.join("")))
                        } catch (t) {
                            throw new Error("Malformed UTF-8 data")
                        }
                    },
                    hexToArray: function(t) {
                        for (var e = [], r = (t = (r = t.length) % 2 != 0 ? f(t, r + 1) : t).length, i = 0; i < r; i += 2)
                            e.push(parseInt(t.substr(i, 2), 16));
                        return e
                    },
                    verifyPublicKey: function(t) {
                        var e = h.decodePointHex(t);
                        return !!e && (t = e.getX(),
                        e.getY().square().equals(t.multiply(t.square()).add(t.multiply(h.a)).add(h.b)))
                    }
                }
            }
            , function(t, e, r) {
                "use strict";
                function i(t, e) {
                    if (!(t instanceof e))
                        throw new TypeError("Cannot call a class as a function")
                }
                var n = r(0).BigInteger
                  , o = new n("3")
                  , s = (h.prototype.equals = function(t) {
                    return t === this || this.q.equals(t.q) && this.x.equals(t.x)
                }
                ,
                h.prototype.toBigInteger = function() {
                    return this.x
                }
                ,
                h.prototype.negate = function() {
                    return new h(this.q,this.x.negate().mod(this.q))
                }
                ,
                h.prototype.add = function(t) {
                    return new h(this.q,this.x.add(t.toBigInteger()).mod(this.q))
                }
                ,
                h.prototype.subtract = function(t) {
                    return new h(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))
                }
                ,
                h.prototype.multiply = function(t) {
                    return new h(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))
                }
                ,
                h.prototype.divide = function(t) {
                    return new h(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))
                }
                ,
                h.prototype.square = function() {
                    return new h(this.q,this.x.square().mod(this.q))
                }
                ,
                h);
                function h(t, e) {
                    i(this, h),
                    this.x = e,
                    this.q = t
                }
                var u = (a.prototype.getX = function() {
                    return null === this.zinv && (this.zinv = this.z.modInverse(this.curve.q)),
                    this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))
                }
                ,
                a.prototype.getY = function() {
                    return null === this.zinv && (this.zinv = this.z.modInverse(this.curve.q)),
                    this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))
                }
                ,
                a.prototype.equals = function(t) {
                    return t === this || (this.isInfinity() ? t.isInfinity() : t.isInfinity() ? this.isInfinity() : !!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(n.ZERO) && t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(n.ZERO))
                }
                ,
                a.prototype.isInfinity = function() {
                    return null === this.x && null === this.y || this.z.equals(n.ZERO) && !this.y.toBigInteger().equals(n.ZERO)
                }
                ,
                a.prototype.negate = function() {
                    return new a(this.curve,this.x,this.y.negate(),this.z)
                }
                ,
                a.prototype.add = function(t) {
                    if (this.isInfinity())
                        return t;
                    if (t.isInfinity())
                        return this;
                    var e = this.x.toBigInteger()
                      , r = this.y.toBigInteger()
                      , i = this.z
                      , o = t.x.toBigInteger()
                      , s = t.y.toBigInteger()
                      , h = t.z
                      , u = this.curve.q
                      , c = e.multiply(h).mod(u);
                    return t = o.multiply(i).mod(u),
                    e = c.subtract(t),
                    o = r.multiply(h).mod(u),
                    r = s.multiply(i).mod(u),
                    s = o.subtract(r),
                    n.ZERO.equals(e) ? n.ZERO.equals(s) ? this.twice() : this.curve.infinity : (r = c.add(t),
                    t = i.multiply(h).mod(u),
                    i = e.square().mod(u),
                    h = e.multiply(i).mod(u),
                    r = t.multiply(s.square()).subtract(r.multiply(i)).mod(u),
                    e = e.multiply(r).mod(u),
                    o = s.multiply(i.multiply(c).subtract(r)).subtract(o.multiply(h)).mod(u),
                    u = h.multiply(t).mod(u),
                    new a(this.curve,this.curve.fromBigInteger(e),this.curve.fromBigInteger(o),u))
                }
                ,
                a.prototype.twice = function() {
                    if (this.isInfinity())
                        return this;
                    if (!this.y.toBigInteger().signum())
                        return this.curve.infinity;
                    var t = this.x.toBigInteger()
                      , e = this.y.toBigInteger()
                      , r = this.z
                      , i = this.curve.q
                      , n = this.curve.a.toBigInteger()
                      , s = t.square().multiply(o).add(n.multiply(r.square())).mod(i)
                      , h = e.shiftLeft(1).multiply(r).mod(i)
                      , u = (n = (u = e.square().mod(i)).multiply(t).multiply(r).mod(i),
                    e = h.square().mod(i),
                    t = s.square().subtract(n.shiftLeft(3)).mod(i),
                    r = h.multiply(t).mod(i),
                    s.multiply(n.shiftLeft(2).subtract(t)).subtract(e.shiftLeft(1).multiply(u)).mod(i));
                    return i = h.multiply(e).mod(i),
                    new a(this.curve,this.curve.fromBigInteger(r),this.curve.fromBigInteger(u),i)
                }
                ,
                a.prototype.multiply = function(t) {
                    if (this.isInfinity())
                        return this;
                    if (!t.signum())
                        return this.curve.infinity;
                    for (var e = t.multiply(o), r = this.negate(), i = this, n = e.bitLength() - 2; 0 < n; n--) {
                        i = i.twice();
                        var s = e.testBit(n);
                        s !== t.testBit(n) && (i = i.add(s ? this : r))
                    }
                    return i
                }
                ,
                a);
                function a(t, e, r, o) {
                    i(this, a),
                    this.curve = t,
                    this.x = e,
                    this.y = r,
                    this.z = null == o ? n.ONE : o,
                    this.zinv = null
                }
                function c(t, e, r) {
                    i(this, c),
                    this.q = t,
                    this.a = this.fromBigInteger(e),
                    this.b = this.fromBigInteger(r),
                    this.infinity = new u(this,null,null)
                }
                c.prototype.equals = function(t) {
                    return t === this || this.q.equals(t.q) && this.a.equals(t.a) && this.b.equals(t.b)
                }
                ,
                c.prototype.fromBigInteger = function(t) {
                    return new s(this.q,t)
                }
                ,
                c.prototype.decodePointHex = function(t) {
                    switch (parseInt(t.substr(0, 2), 16)) {
                    case 0:
                        return this.infinity;
                    default:
                        return null;
                    case 4:
                    case 6:
                    case 7:
                        var e = (t.length - 2) / 2
                          , r = t.substr(2, e);
                        return e = t.substr(2 + e, e),
                        new u(this,this.fromBigInteger(new n(r,16)),this.fromBigInteger(new n(e,16)))
                    }
                }
                ,
                r = c,
                t.exports = {
                    ECPointFp: u,
                    ECCurveFp: r
                }
            }
            , function(t, e, r) {
                "use strict";
                var i = r(1);
                t.exports = function(t) {
                    return t = "string" == typeof t ? function(t) {
                        for (var e = [], r = 0, i = t.length; r < i; r++) {
                            var n = t.charCodeAt(r);
                            if (n <= 127)
                                e.push(n);
                            else if (n <= 2047)
                                e.push(192 | n >>> 6),
                                e.push(128 | 63 & n);
                            else if (n <= 55295 || 57344 <= n && n <= 65535)
                                e.push(224 | n >>> 12),
                                e.push(128 | n >>> 6 & 63),
                                e.push(128 | 63 & n);
                            else {
                                if (!(65536 <= n && n <= 1114111))
                                    throw e.push(n),
                                    new Error("input is not supported");
                                r++,
                                e.push(240 | n >>> 18 & 28),
                                e.push(128 | n >>> 12 & 63),
                                e.push(128 | n >>> 6 & 63),
                                e.push(128 | 63 & n)
                            }
                        }
                        return e
                    }(t) : Array.prototype.slice.call(t),
                    i(t).map((function(t) {
                        return 1 === (t = t.toString(16)).length ? "0" + t : t
                    }
                    )).join("")
                }
            }
            , function(t, e, r) {
                "use strict";
                var i = [214, 144, 233, 254, 204, 225, 61, 183, 22, 182, 20, 194, 40, 251, 44, 5, 43, 103, 154, 118, 42, 190, 4, 195, 170, 68, 19, 38, 73, 134, 6, 153, 156, 66, 80, 244, 145, 239, 152, 122, 51, 84, 11, 67, 237, 207, 172, 98, 228, 179, 28, 169, 201, 8, 232, 149, 128, 223, 148, 250, 117, 143, 63, 166, 71, 7, 167, 252, 243, 115, 23, 186, 131, 89, 60, 25, 230, 133, 79, 168, 104, 107, 129, 178, 113, 100, 218, 139, 248, 235, 15, 75, 112, 86, 157, 53, 30, 36, 14, 94, 99, 88, 209, 162, 37, 34, 124, 59, 1, 33, 120, 135, 212, 0, 70, 87, 159, 211, 39, 82, 76, 54, 2, 231, 160, 196, 200, 158, 234, 191, 138, 210, 64, 199, 56, 181, 163, 247, 242, 206, 249, 97, 21, 161, 224, 174, 93, 164, 155, 52, 26, 85, 173, 147, 50, 48, 245, 140, 177, 227, 29, 246, 226, 46, 130, 102, 202, 96, 192, 41, 35, 171, 13, 83, 78, 111, 213, 219, 55, 69, 222, 253, 142, 47, 3, 255, 106, 114, 109, 108, 91, 81, 141, 27, 175, 146, 187, 221, 188, 127, 17, 217, 92, 65, 31, 16, 90, 216, 10, 193, 49, 136, 165, 205, 123, 189, 45, 116, 208, 18, 184, 229, 180, 176, 137, 105, 151, 74, 12, 150, 119, 126, 101, 185, 241, 9, 197, 110, 198, 132, 24, 240, 125, 236, 58, 220, 77, 32, 121, 238, 95, 62, 215, 203, 57, 72]
                  , n = [462357, 472066609, 943670861, 1415275113, 1886879365, 2358483617, 2830087869, 3301692121, 3773296373, 4228057617, 404694573, 876298825, 1347903077, 1819507329, 2291111581, 2762715833, 3234320085, 3705924337, 4177462797, 337322537, 808926789, 1280531041, 1752135293, 2223739545, 2695343797, 3166948049, 3638552301, 4110090761, 269950501, 741554753, 1213159005, 1684763257];
                function o(t) {
                    for (var e = [], r = 0, i = t.length; r < i; r += 2)
                        e.push(parseInt(t.substr(r, 2), 16));
                    return e
                }
                function s(t, e) {
                    return t << e | t >>> 32 - e
                }
                function h(t) {
                    return (255 & i[t >>> 24 & 255]) << 24 | (255 & i[t >>> 16 & 255]) << 16 | (255 & i[t >>> 8 & 255]) << 8 | 255 & i[255 & t]
                }
                function u(t) {
                    return t ^ s(t, 2) ^ s(t, 10) ^ s(t, 18) ^ s(t, 24)
                }
                function a(t) {
                    return t ^ s(t, 13) ^ s(t, 23)
                }
                function c(t, e, r, i) {
                    i = void 0 === (c = (f = 3 < arguments.length && void 0 !== i ? i : {}).padding) ? "pkcs#5" : c;
                    var s = f.mode
                      , c = void 0 === (c = f.iv) ? [] : c
                      , f = void 0 === (f = f.output) ? "string" : f;
                    if ("cbc" === s && 16 !== (c = "string" == typeof c ? o(c) : c).length)
                        throw new Error("iv is invalid");
                    if (16 !== (e = "string" == typeof e ? o(e) : e).length)
                        throw new Error("key is invalid");
                    if (t = "string" == typeof t ? (0 !== r ? function(t) {
                        for (var e = [], r = 0, i = t.length; r < i; r++) {
                            var n = t.charCodeAt(r);
                            if (n <= 127)
                                e.push(n);
                            else if (n <= 2047)
                                e.push(192 | n >>> 6),
                                e.push(128 | 63 & n);
                            else if (n <= 55295 || 57344 <= n && n <= 65535)
                                e.push(224 | n >>> 12),
                                e.push(128 | n >>> 6 & 63),
                                e.push(128 | 63 & n);
                            else {
                                if (!(65536 <= n && n <= 1114111))
                                    throw e.push(n),
                                    new Error("input is not supported");
                                r++,
                                e.push(240 | n >>> 18 & 28),
                                e.push(128 | n >>> 12 & 63),
                                e.push(128 | n >>> 6 & 63),
                                e.push(128 | 63 & n)
                            }
                        }
                        return e
                    }
                    : o)(t) : [].concat(t),
                    "pkcs#5" === i && 0 !== r)
                        for (var p = 16 - t.length % 16, l = 0; l < p; l++)
                            t.push(p);
                    var y = new Array(32);
                    !function(t, e, r) {
                        for (var i = new Array(4), o = new Array(4), s = 0; s < 4; s++)
                            o[0] = 255 & t[0 + 4 * s],
                            o[1] = 255 & t[1 + 4 * s],
                            o[2] = 255 & t[2 + 4 * s],
                            o[3] = 255 & t[3 + 4 * s],
                            i[s] = o[0] << 24 | o[1] << 16 | o[2] << 8 | o[3];
                        i[0] ^= 2746333894,
                        i[1] ^= 1453994832,
                        i[2] ^= 1736282519,
                        i[3] ^= 2993693404;
                        for (var u, c = 0; c < 32; c += 4)
                            u = i[1] ^ i[2] ^ i[3] ^ n[c + 0],
                            e[c + 0] = i[0] ^= a(h(u)),
                            u = i[2] ^ i[3] ^ i[0] ^ n[c + 1],
                            e[c + 1] = i[1] ^= a(h(u)),
                            u = i[3] ^ i[0] ^ i[1] ^ n[c + 2],
                            e[c + 2] = i[2] ^= a(h(u)),
                            u = i[0] ^ i[1] ^ i[2] ^ n[c + 3],
                            e[c + 3] = i[3] ^= a(h(u));
                        if (0 === r)
                            for (var f, p = 0; p < 16; p++)
                                f = e[p],
                                e[p] = e[31 - p],
                                e[31 - p] = f
                    }(e, y, r);
                    for (var d = [], m = c, v = t.length, g = 0; 16 <= v; ) {
                        var b = t.slice(g, g + 16)
                          , T = new Array(16);
                        if ("cbc" === s)
                            for (var w = 0; w < 16; w++)
                                0 !== r && (b[w] ^= m[w]);
                        !function(t, e, r) {
                            for (var i = new Array(4), n = new Array(4), o = 0; o < 4; o++)
                                n[0] = 255 & t[4 * o],
                                n[1] = 255 & t[4 * o + 1],
                                n[2] = 255 & t[4 * o + 2],
                                n[3] = 255 & t[4 * o + 3],
                                i[o] = n[0] << 24 | n[1] << 16 | n[2] << 8 | n[3];
                            for (var s, a = 0; a < 32; a += 4)
                                s = i[1] ^ i[2] ^ i[3] ^ r[a + 0],
                                i[0] ^= u(h(s)),
                                s = i[2] ^ i[3] ^ i[0] ^ r[a + 1],
                                i[1] ^= u(h(s)),
                                s = i[3] ^ i[0] ^ i[1] ^ r[a + 2],
                                i[2] ^= u(h(s)),
                                s = i[0] ^ i[1] ^ i[2] ^ r[a + 3],
                                i[3] ^= u(h(s));
                            for (var c = 0; c < 16; c += 4)
                                e[c] = i[3 - c / 4] >>> 24 & 255,
                                e[c + 1] = i[3 - c / 4] >>> 16 & 255,
                                e[c + 2] = i[3 - c / 4] >>> 8 & 255,
                                e[c + 3] = 255 & i[3 - c / 4]
                        }(b, T, y);
                        for (var F = 0; F < 16; F++)
                            "cbc" === s && 0 === r && (T[F] ^= m[F]),
                            d[g + F] = T[F];
                        "cbc" === s && (m = 0 !== r ? T : b),
                        v -= 16,
                        g += 16
                    }
                    return "pkcs#5" === i && 0 === r && (i = d[d.length - 1],
                    d.splice(d.length - i, i)),
                    "array" !== f ? 0 !== r ? d.map((function(t) {
                        return 1 === (t = t.toString(16)).length ? "0" + t : t
                    }
                    )).join("") : function(t) {
                        for (var e = [], r = 0, i = t.length; r < i; r++)
                            240 <= t[r] && t[r] <= 247 ? (e.push(String.fromCharCode(((7 & t[r]) << 18) + ((63 & t[r + 1]) << 12) + ((63 & t[r + 2]) << 6) + (63 & t[r + 3]))),
                            r += 3) : 224 <= t[r] && t[r] <= 239 ? (e.push(String.fromCharCode(((15 & t[r]) << 12) + ((63 & t[r + 1]) << 6) + (63 & t[r + 2]))),
                            r += 2) : 192 <= t[r] && t[r] <= 223 ? (e.push(String.fromCharCode(((31 & t[r]) << 6) + (63 & t[r + 1]))),
                            r++) : e.push(String.fromCharCode(t[r]));
                        return e.join("")
                    }(d) : d
                }
                t.exports = {
                    encrypt: function(t, e, r) {
                        return c(t, e, 1, r)
                    },
                    decrypt: function(t, e, r) {
                        return c(t, e, 0, r)
                    }
                }
            }
            ],
            i.c = o,
            i.d = function(t, e, r) {
                i.o(t, e) || Object.defineProperty(t, e, {
                    enumerable: !0,
                    get: r
                })
            }
            ,
            i.r = function(t) {
                "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
                    value: "Module"
                }),
                Object.defineProperty(t, "__esModule", {
                    value: !0
                })
            }
            ,
            i.t = function(t, e) {
                if (1 & e && (t = i(t)),
                8 & e)
                    return t;
                if (4 & e && "object" == typeof t && t && t.__esModule)
                    return t;
                var r = Object.create(null);
                if (i.r(r),
                Object.defineProperty(r, "default", {
                    enumerable: !0,
                    value: t
                }),
                2 & e && "string" != typeof t)
                    for (var n in t)
                        i.d(r, n, function(e) {
                            return t[e]
                        }
                        .bind(null, n));
                return r
            }
            ,
            i.n = function(t) {
                var e = t && t.__esModule ? function() {
                    return t.default
                }
                : function() {
                    return t
                }
                ;
                return i.d(e, "a", e),
                e
            }
            ,
            i.o = function(t, e) {
                return Object.prototype.hasOwnProperty.call(t, e)
            }
            ,
            i.p = "",
            i(i.s = 2))
        }
    }
      , e = {};
    function r(i) {
        var n = e[i];
        return void 0 !== n || (n = e[i] = {
            exports: {}
        },
        t[i].call(n.exports, n, n.exports, r)),
        n.exports
    }
    r.d = function(t, e) {
        for (var i in e)
            r.o(e, i) && !r.o(t, i) && Object.defineProperty(t, i, {
                enumerable: !0,
                get: e[i]
            })
    }
    ,
    r.o = function(t, e) {
        return Object.prototype.hasOwnProperty.call(t, e)
    }
    ,
    r.r = function(t) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(t, "__esModule", {
            value: !0
        })
    }
    ;
    var i = {};
    return function() {
        "use strict";
        function t(t) {
            this.PromiseState = "pending",
            this.PromiseResult = null,
            this.callbacks = [];
            var e = this;
            function r(t) {
                "pending" === e.PromiseState && (e.PromiseResult = t,
                e.PromiseState = "rejected",
                e.callbacks.forEach((function(e) {
                    e.onReject(t)
                }
                )))
            }
            try {
                t((function(t) {
                    "pending" == e.PromiseState && (e.PromiseState = "fulfilled",
                    e.PromiseResult = t,
                    e.callbacks.forEach((function(e) {
                        e.onResolve(t)
                    }
                    )))
                }
                ), r)
            } catch (t) {
                r(t)
            }
        }
        r.r(i),
        r.d(i, {
            SummerCryptico: function() {
                return c
            },
            default: function() {
                return f
            }
        });
        var e = r(686);
        function n(t, e) {
            var r, i = Object.keys(t);
            return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(t),
            e && (r = r.filter((function(e) {
                return Object.getOwnPropertyDescriptor(t, e).enumerable
            }
            ))),
            i.push.apply(i, r)),
            i
        }
        function o(t) {
            for (var e = 1; e < arguments.length; e++) {
                var r = null != arguments[e] ? arguments[e] : {};
                e % 2 ? n(Object(r), !0).forEach((function(e) {
                    var i, n;
                    i = t,
                    e = r[n = e],
                    n in i ? Object.defineProperty(i, n, {
                        value: e,
                        enumerable: !0,
                        configurable: !0,
                        writable: !0
                    }) : i[n] = e
                }
                )) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(r)) : n(Object(r)).forEach((function(e) {
                    Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(r, e))
                }
                ))
            }
            return t
        }
        t.prototype.then = function(e, r) {
            var i = this
              , n = this;
            return "function" != typeof r && (r = function(t) {
                throw t
            }
            ),
            "function" != typeof e && (e = function(t) {
                return t
            }
            ),
            new t((function(o, s) {
                function h(e) {
                    try {
                        var r = e(n.PromiseResult);
                        r instanceof t ? r.then((function(t) {
                            o(t)
                        }
                        ), (function(t) {
                            s(t)
                        }
                        )) : o(r),
                        o(r)
                    } catch (e) {
                        s(e)
                    }
                }
                "fulfilled" === i.PromiseState && h(e),
                "rejected" === i.PromiseState && h(r),
                "pending" == i.PromiseState && i.callbacks.push({
                    onReject: function() {
                        h(r)
                    },
                    onResolve: function() {
                        h(e)
                    }
                })
            }
            ))
        }
        ,
        t.prototype.catch = function(t) {
            return this.then(void 0, t)
        }
        ,
        t.resolve = function(e) {
            return new t((function(r, i) {
                try {
                    e instanceof t ? e.then((function(t) {
                        r(t)
                    }
                    ), (function(t) {
                        i(t)
                    }
                    )) : r(e)
                } catch (t) {
                    i(t)
                }
            }
            ))
        }
        ,
        t.reject = function(e) {
            return new t((function(t, r) {
                r(e)
            }
            ))
        }
        ,
        t.all = function(e) {
            var r = []
              , i = 0;
            return new t((function(n, o) {
                for (var s = 0; s < e.length; s++)
                    !function(s) {
                        e[s]instanceof t ? e[s].then((function(t) {
                            i++,
                            r[s] = t,
                            i === e.length && n(r)
                        }
                        ), (function(t) {
                            o(t)
                        }
                        )) : (r[s] = e,
                        i++)
                    }(s)
            }
            ))
        }
        ;
        var s, h = t.race = function(e) {
            return new t((function(r, i) {
                for (var n = 0; n < e.length; n++)
                    e[n]instanceof t ? e[n].then((function(t) {
                        r(t)
                    }
                    ), (function(t) {
                        i(t)
                    }
                    )) : r(e[n])
            }
            ))
        }
        , u = null;
        function a() {
            this.handshakePublicKey = "",
            this.handshakeUrl = "",
            this._keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
            this.publicKeyHeader = "",
            this.sm2Key = "",
            this.sm4Key = "",
            this.iv = "",
            this.randomKey = "",
            this.sm2EncryptData = "",
            this.sm4EncryptData = "",
            this.encryptStorageSm4Key = "6c3d6878252e641b",
            this.encryptStorageIv = "5f5e5a247f544d771255134517043757",
            this.encryptRandomKey = "",
            this.encryptSm2RandomKey = "";
            var t = !1
              , e = !1;
            "undefined" != typeof wx && wx.request && wx.login ? t = !0 : "undefined" != typeof jd && jd.request && jd.login ? e = t = !0 : t = !1,
            this.isJd = e,
            t = (this.isApplet = t) ? 2 : 1,
            this.isResponse = !1,
            this.version = [1],
            this.client_type = [t],
            this.key_cipher = [],
            this.time = null,
            this.ms = 6e4,
            this._localStorage = ""
        }
        h = "undefined" != typeof wx && wx.request && wx.login ? (u = wx,
        !0) : !("undefined" == typeof jd || !jd.request || !jd.login || (u = jd,
        0)),
        s = h ? function(e) {
            return new t((function(t, r) {
                u.request(o({
                    header: {
                        "Content-Type": "application/x-www-form-urlencoded"
                    }
                }, e))
            }
            ))
        }
        : function(t) {
            (t = t || {}).type = (t.type || "GET").toUpperCase(),
            t.dataType = t.dataType || "json",
            t.async = t.async || !0;
            var e, r = function(t) {
                var e, r = [];
                for (e in t = t || {})
                    r.push(encodeURIComponent(e) + "=" + encodeURIComponent(t[e]));
                return r.join("&")
            }(t.data), i = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
            t.timeout && (e = setTimeout((function() {
                4 != i.readySate && i.abort()
            }
            ), t.timeout || 1e4)),
            i.onreadystatechange = function() {
                var r;
                4 == i.readyState && (clearTimeout(e),
                200 <= (r = i.status) && r < 300 || 304 === r ? t.success && t.success(i.responseText, i.responseXML) : t.error && t.error(r))
            }
            ,
            "GET" == t.type ? (i.open("GET", t.url + "?" + r, t.async),
            i.send(null)) : "POST" == t.type && (i.open("POST", t.url, t.async),
            i.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"),
            i.send(r))
        }
        ,
        a.prototype = {
            commonPromise: function(e, r) {
                var i = this
                  , n = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 1
                  , o = (r = this.isJd ? encodeURIComponent(r) : r,
                1 !== n ? {
                    data: r
                } : {
                    clientKey: r
                });
                return new t((function(t, r) {
                    var n = {
                        url: e,
                        method: "POST",
                        data: o,
                        success: function(e) {
                            var i = e.statusCode;
                            200 <= i && i < 300 || 304 === i ? t(e.data) : r(i)
                        },
                        fail: function(t) {
                            r(t)
                        }
                    };
                    i.isApplet || (n = {
                        type: "POST",
                        url: e,
                        data: o,
                        success: function(e) {
                            t(e)
                        },
                        error: function(t) {
                            r(t)
                        }
                    }),
                    s(n)
                }
                ))
            },
            encryptDecryptRequest: function(t, e) {
                return this.commonPromise(t, e)
            },
            createDemote: function() {
                this.isResponse || this.demoteKeyCipher()
            },
            demoteKeyCipher: function() {
                var t = [140, 58, 51, 17, 108, 219, 141, 107, 65, 13, 222, 250, 147, 190, 156, 25];
                this.isApplet && (t = [68, 176, 150, 193, 133, 248, 213, 81, 190, 140, 15, 58, 167, 248, 31, 97]);
                var r = this.createRandomKey(8);
                this.randomKey = r;
                var i = this.createRandomKey();
                t = e.sm4.encrypt(r, t, {
                    mode: "cbc",
                    iv: i
                }),
                this.encryptRandomKey = t,
                t = this.hexToArray(t),
                t = this.hexToArray(i).concat(t, [0, 0, 0, 0, 0]),
                this.key_cipher = t
            },
            handshake: function(t, e) {
                this.isResponse || this.key_cipher.length && Date.now() < this.lastClick + this.ms || (this.handshakeUrl || (this.handshakeUrl = t,
                this.handshakePublicKey = e),
                this.createDemote(),
                this.sm2EncryptRandomKey(t, e))
            },
            encryptRequest: function(t, e) {
                var r = this;
                this.encryptDecryptRequest(t, e).then((function(t) {
                    t ? (t = r.decode(t),
                    t = Array.prototype.slice.call(t),
                    r.key_cipher = t,
                    r.isResponse = !0) : (r.isResponse = !1,
                    r.lastClick = Date.now())
                }
                )).catch((function(t) {
                    r.isResponse = !1,
                    r.lastClick = Date.now()
                }
                ))
            },
            sm2EncryptRandomKey: function(t, r) {
                var i = e.sm2.doEncrypt(this.randomKey, r)
                  , n = this.hexToArray(this.createRandomKey(1))
                  , o = this.version;
                r = this.client_type,
                i = this.hexToArray(i),
                i = n.concat(o, r, i),
                i = new Uint8Array(i),
                i = this.arrayBufferToBase64(i),
                this.encryptRequest(t, i)
            },
            createRandomKey: function() {
                var t = this.randomUnit8Array(1, 127, 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 16);
                return this.buffertoHex(t)
            },
            encrypt: function(t) {
                if (!t)
                    throw new Error("encrypt data can not empty");
                this.createDemote();
                var r, i = {
                    mode: "cbc",
                    iv: r = this.createRandomKey()
                }, n = this.utf8ToHex(this.randomKey), o = e.sm4.encrypt(t, n, i), s = this.hexToArray(o), h = this.hexToArray(this.createRandomKey(1)), u = this.version, a = this.client_type;
                return t = this.isResponse ? [0] : [1],
                n = this.key_cipher,
                i = this.hexToArray(r),
                o = s,
                (r = new Uint32Array(1))[0] = s.length,
                r = Array.prototype.slice.call(new Uint8Array(r.buffer)),
                o = h.concat(u, a, t, n, i, r, o),
                o = new Uint8Array(o),
                o = this.arrayBufferToBase64(o),
                !this.isResponse && this.handshakeUrl && this.handshake(this.handshakeUrl, this.handshakePublicKey),
                o
            },
            encryptData: function(t, e) {
                if (!e)
                    throw new Error("encrypt data can not empty");
                var r = (i = this.decode(t)).byteLength
                  , i = (t = i.subarray(0, r - 65),
                i.subarray(r - 65));
                return r = this.buffertoHex(t),
                t = this.buffertoHex(i),
                i = this.encryptStorageSm4Data(),
                this.publicKeyHeader = r,
                this.sm2Key = t,
                this.sm4Key = i,
                this.iv = this.createRandomKey(),
                this.encryptSm2Data(),
                this.encryptSm4Data(e),
                this.getEncryptData()
            },
            testDecrpt: function(t, e) {
                return this.commonPromise(t, e, 2)
            },
            test: function(e, r) {
                return this.testDecrpt(e, r).then((function(e) {
                    return t.resolve(e)
                }
                )).catch((function(e) {
                    return t.reject(e)
                }
                ))
            },
            randomUnit8Array: function(t, e, r) {
                e += 1;
                for (var i = [], n = void 0 === r ? 1 : r, o = 0; o < n; o++) {
                    var s = Math.floor(Math.random() * (e - t) + t);
                    i.push(s)
                }
                return new Uint8Array(i)
            },
            buffertoHex: function(t) {
                return Array.prototype.map.call(t, (function(t) {
                    return ("00" + t.toString(16)).slice(-2)
                }
                )).join("")
            },
            encryptSm2Data: function() {
                var t = this.sm4Key
                  , r = this.sm2Key;
                r = e.sm2.doEncrypt(t, r),
                this.sm2EncryptData = r
            },
            encryptSm4Data: function(t) {
                var r = this.sm4Key
                  , i = {
                    mode: "cbc",
                    iv: this.iv
                };
                r = this.utf8ToHex(r),
                i = e.sm4.encrypt(t, r, i),
                this.sm4EncryptData = i
            },
            encryptStorageSm4Data: function() {
                var t = this.encryptStorageSm4Key
                  , r = {
                    mode: "cbc",
                    iv: this.encryptStorageIv
                }
                  , i = this.utf8ToHex(t)
                  , n = ""
                  , o = this.isApplet
                  , s = this.isJd;
                if (t = o ? s ? jd : wx : null,
                o)
                    n = t.getStorageSync("aksKey");
                else
                    try {
                        n = localStorage.getItem("aksKey")
                    } catch (t) {
                        n = this._localStorage
                    }
                if (s = "",
                n)
                    s = e.sm4.decrypt(n, i, r);
                else if (n = this.randomUnit8Array(1, 127, 8),
                s = this.buffertoHex(n),
                r = e.sm4.encrypt(s, i, r),
                o)
                    t.setStorageSync("aksKey", r);
                else
                    try {
                        localStorage.setItem("aksKey", r)
                    } catch (t) {
                        this._localStorage = r
                    }
                return s
            },
            utf8ToHex: function(t) {
                for (var e = (t = unescape(encodeURIComponent(t))).length, r = [], i = 0; i < e; i++)
                    r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
                for (var n = [], o = 0; o < e; o++) {
                    var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                    n.push((s >>> 4).toString(16)),
                    n.push((15 & s).toString(16))
                }
                return n.join("")
            },
            hex2b64: function(t) {
                for (var e, r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", i = "", n = 0; n + 3 <= t.length; n += 3)
                    e = parseInt(t.substring(n, n + 3), 16),
                    i += r.charAt(e >> 6) + r.charAt(63 & e);
                for (n + 1 == t.length ? (e = parseInt(t.substring(n, n + 1), 16),
                i += r.charAt(e << 2)) : n + 2 == t.length && (e = parseInt(t.substring(n, n + 2), 16),
                i += r.charAt(e >> 2) + r.charAt((3 & e) << 4)); 0 < (3 & i.length); )
                    i += "=";
                return i
            },
            leftPad: function(t, e) {
                return t.length >= e ? t : new Array(e - t.length + 1).join("0") + t
            },
            hexToArray: function(t) {
                for (var e = [], r = (t = (r = t.length) % 2 != 0 ? this.leftPad(t, r + 1) : t).length, i = 0; i < r; i += 2)
                    e.push(parseInt(t.substr(i, 2), 16));
                return e
            },
            getEncryptData: function() {
                var t = this.hexToArray(this.publicKeyHeader)
                  , e = this.hexToArray(this.sm2EncryptData)
                  , r = this.hexToArray(this.sm4EncryptData)
                  , i = this.hexToArray(this.iv);
                return r = t.concat(e, i, r),
                r = new Uint8Array(r),
                this.arrayBufferToBase64(r)
            },
            removePaddingChars: function(t) {
                return 64 == this._keyStr.indexOf(t.charAt(t.length - 1)) ? t.substring(0, t.length - 1) : t
            },
            arrayBufferToBase64: function(t) {
                for (var e = t.byteLength, r = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"], i = "", n = 0; 3 <= e - n; n += 3) {
                    var o = t[n]
                      , s = t[n + 1]
                      , h = t[n + 2];
                    i += r[o >>> 2] + r[(3 & o) << 4 | s >>> 4] + r[(15 & s) << 2 | h >>> 6] + r[63 & h]
                }
                var u, a = e - n;
                return 1 == a ? i += r[(u = t[n]) >>> 2] + r[(3 & u) << 4] + "==" : 2 == a && (u = t[n],
                a = t[n + 1],
                i += r[u >>> 2] + r[(3 & u) << 4 | a >>> 4] + r[(15 & a) << 2] + "="),
                i
            },
            decode: function(t, e) {
                var r = t;
                e = e,
                r = this.removePaddingChars(r),
                r = this.removePaddingChars(r);
                var i, n, o, s, h, u, a = parseInt(r.length / 4 * 3, 10), c = 0, f = 0, p = e ? new Uint8Array(e) : new Uint8Array(a);
                for (r = r.replace(/[^A-Za-z0-9\+\/\=]/g, ""),
                c = 0; c < a; c += 3)
                    o = this._keyStr.indexOf(r.charAt(f++)),
                    i = (15 & (s = this._keyStr.indexOf(r.charAt(f++)))) << 4 | (h = this._keyStr.indexOf(r.charAt(f++))) >> 2,
                    n = (3 & h) << 6 | (u = this._keyStr.indexOf(r.charAt(f++))),
                    p[c] = o << 2 | s >> 4,
                    64 != h && (p[c + 1] = i),
                    64 != u && (p[c + 2] = n);
                return p
            },
            decryptData: function(t) {
                var r = (o = this.decode(t)).byteLength
                  , i = o.subarray(3, 19)
                  , n = o.subarray(19, r)
                  , o = (t = this.buffertoHex(i),
                this.buffertoHex(n));
                if (r = this.isApplet,
                i = "",
                n = this.isJd,
                n = r ? n ? jd : wx : null,
                r)
                    try {
                        if (!(i = n.getStorageSync("aksKey")))
                            throw new Error("get storage fail")
                    } catch (t) {
                        throw new Error("get storage fail")
                    }
                else
                    try {
                        i = localStorage.getItem("aksKey")
                    } catch (t) {
                        i = this._localStorage
                    }
                if (n = "",
                !i)
                    throw new Error("key is invalid");
                return n = this.encryptStorageSm4Data(),
                n = this.utf8ToHex(n),
                e.sm4.decrypt(o, n, {
                    mode: "cbc",
                    iv: t
                })
            }
        };
        var c = new a
          , f = {
            SummerCryptico: c
        }
    }(),
    i
}
));

function encrypt_data(publicKey, data){
    return SummerCryptico.encryptData(publicKey, data)
}