!(function(a) {
  if ('object' == typeof exports && 'undefined' != typeof module)
    module.exports = a();
  else if ('function' == typeof define && define.amd) define([], a);
  else {
    var b;
    (b =
      'undefined' != typeof window
        ? window
        : 'undefined' != typeof global
        ? global
        : 'undefined' != typeof self
        ? self
        : this),
      (b.elliptic = a());
  }
})(function() {
  return (function a(b, c, d) {
    function e(g, h) {
      if (!c[g]) {
        if (!b[g]) {
          var i = 'function' == typeof require && require;
          if (!h && i) return i(g, !0);
          if (f) return f(g, !0);
          var j = new Error("Cannot find module '" + g + "'");
          throw ((j.code = 'MODULE_NOT_FOUND'), j);
        }
        var k = (c[g] = { exports: {} });
        b[g][0].call(
          k.exports,
          function(a) {
            var c = b[g][1][a];
            return e(c ? c : a);
          },
          k,
          k.exports,
          a,
          b,
          c,
          d
        );
      }
      return c[g].exports;
    }
    for (
      var f = 'function' == typeof require && require, g = 0;
      g < d.length;
      g++
    )
      e(d[g]);
    return e;
  })(
    {
      1: [
        function(a, b, c) {
          !(function(b, c) {
            'use strict';
            function d(a, b) {
              if (!a) throw new Error(b || 'Assertion failed');
            }
            function e(a, b) {
              a.super_ = b;
              var c = function() {};
              (c.prototype = b.prototype),
                (a.prototype = new c()),
                (a.prototype.constructor = a);
            }
            function f(a, b, c) {
              return f.isBN(a)
                ? a
                : ((this.negative = 0),
                  (this.words = null),
                  (this.length = 0),
                  (this.red = null),
                  void (
                    null !== a &&
                    (('le' !== b && 'be' !== b) || ((c = b), (b = 10)),
                    this._init(a || 0, b || 10, c || 'be'))
                  ));
            }
            function h(a, b, c) {
              for (var d = 0, e = Math.min(a.length, c), f = b; f < e; f++) {
                var g = a.charCodeAt(f) - 48;
                (d <<= 4),
                  (d |=
                    g >= 49 && g <= 54
                      ? g - 49 + 10
                      : g >= 17 && g <= 22
                      ? g - 17 + 10
                      : 15 & g);
              }
              return d;
            }
            function i(a, b, c, d) {
              for (var e = 0, f = Math.min(a.length, c), g = b; g < f; g++) {
                var h = a.charCodeAt(g) - 48;
                (e *= d),
                  (e += h >= 49 ? h - 49 + 10 : h >= 17 ? h - 17 + 10 : h);
              }
              return e;
            }
            function m(a) {
              for (var b = new Array(a.bitLength()), c = 0; c < b.length; c++) {
                var d = (c / 26) | 0,
                  e = c % 26;
                b[c] = (a.words[d] & (1 << e)) >>> e;
              }
              return b;
            }
            function n(a, b, c) {
              c.negative = b.negative ^ a.negative;
              var d = (a.length + b.length) | 0;
              (c.length = d), (d = (d - 1) | 0);
              var e = 0 | a.words[0],
                f = 0 | b.words[0],
                g = e * f,
                h = 67108863 & g,
                i = (g / 67108864) | 0;
              c.words[0] = h;
              for (var j = 1; j < d; j++) {
                for (
                  var k = i >>> 26,
                    l = 67108863 & i,
                    m = Math.min(j, b.length - 1),
                    n = Math.max(0, j - a.length + 1);
                  n <= m;
                  n++
                ) {
                  var o = (j - n) | 0;
                  (e = 0 | a.words[o]),
                    (f = 0 | b.words[n]),
                    (g = e * f + l),
                    (k += (g / 67108864) | 0),
                    (l = 67108863 & g);
                }
                (c.words[j] = 0 | l), (i = 0 | k);
              }
              return 0 !== i ? (c.words[j] = 0 | i) : c.length--, c.strip();
            }
            function p(a, b, c) {
              (c.negative = b.negative ^ a.negative),
                (c.length = a.length + b.length);
              for (var d = 0, e = 0, f = 0; f < c.length - 1; f++) {
                var g = e;
                e = 0;
                for (
                  var h = 67108863 & d,
                    i = Math.min(f, b.length - 1),
                    j = Math.max(0, f - a.length + 1);
                  j <= i;
                  j++
                ) {
                  var k = f - j,
                    l = 0 | a.words[k],
                    m = 0 | b.words[j],
                    n = l * m,
                    o = 67108863 & n;
                  (g = (g + ((n / 67108864) | 0)) | 0),
                    (o = (o + h) | 0),
                    (h = 67108863 & o),
                    (g = (g + (o >>> 26)) | 0),
                    (e += g >>> 26),
                    (g &= 67108863);
                }
                (c.words[f] = h), (d = g), (g = e);
              }
              return 0 !== d ? (c.words[f] = d) : c.length--, c.strip();
            }
            function q(a, b, c) {
              var d = new r();
              return d.mulp(a, b, c);
            }
            function r(a, b) {
              (this.x = a), (this.y = b);
            }
            function t(a, b) {
              (this.name = a),
                (this.p = new f(b, 16)),
                (this.n = this.p.bitLength()),
                (this.k = new f(1).iushln(this.n).isub(this.p)),
                (this.tmp = this._tmp());
            }
            function u() {
              t.call(
                this,
                'k256',
                'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'
              );
            }
            function v() {
              t.call(
                this,
                'p224',
                'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'
              );
            }
            function w() {
              t.call(
                this,
                'p192',
                'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'
              );
            }
            function x() {
              t.call(
                this,
                '25519',
                '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'
              );
            }
            function y(a) {
              if ('string' == typeof a) {
                var b = f._prime(a);
                (this.m = b.p), (this.prime = b);
              } else
                d(a.gtn(1), 'modulus must be greater than 1'),
                  (this.m = a),
                  (this.prime = null);
            }
            function z(a) {
              y.call(this, a),
                (this.shift = this.m.bitLength()),
                this.shift % 26 !== 0 && (this.shift += 26 - (this.shift % 26)),
                (this.r = new f(1).iushln(this.shift)),
                (this.r2 = this.imod(this.r.sqr())),
                (this.rinv = this.r._invmp(this.m)),
                (this.minv = this.rinv
                  .mul(this.r)
                  .isubn(1)
                  .div(this.m)),
                (this.minv = this.minv.umod(this.r)),
                (this.minv = this.r.sub(this.minv));
            }
            'object' == typeof b ? (b.exports = f) : (c.BN = f),
              (f.BN = f),
              (f.wordSize = 26);
            var g;
            try {
              g = a('buffer').Buffer;
            } catch (a) {}
            (f.isBN = function(b) {
              return (
                b instanceof f ||
                (null !== b &&
                  'object' == typeof b &&
                  b.constructor.wordSize === f.wordSize &&
                  Array.isArray(b.words))
              );
            }),
              (f.max = function(b, c) {
                return b.cmp(c) > 0 ? b : c;
              }),
              (f.min = function(b, c) {
                return b.cmp(c) < 0 ? b : c;
              }),
              (f.prototype._init = function(b, c, e) {
                if ('number' == typeof b) return this._initNumber(b, c, e);
                if ('object' == typeof b) return this._initArray(b, c, e);
                'hex' === c && (c = 16),
                  d(c === (0 | c) && c >= 2 && c <= 36),
                  (b = b.toString().replace(/\s+/g, ''));
                var f = 0;
                '-' === b[0] && f++,
                  16 === c ? this._parseHex(b, f) : this._parseBase(b, c, f),
                  '-' === b[0] && (this.negative = 1),
                  this.strip(),
                  'le' === e && this._initArray(this.toArray(), c, e);
              }),
              (f.prototype._initNumber = function(b, c, e) {
                b < 0 && ((this.negative = 1), (b = -b)),
                  b < 67108864
                    ? ((this.words = [67108863 & b]), (this.length = 1))
                    : b < 4503599627370496
                    ? ((this.words = [67108863 & b, (b / 67108864) & 67108863]),
                      (this.length = 2))
                    : (d(b < 9007199254740992),
                      (this.words = [
                        67108863 & b,
                        (b / 67108864) & 67108863,
                        1
                      ]),
                      (this.length = 3)),
                  'le' === e && this._initArray(this.toArray(), c, e);
              }),
              (f.prototype._initArray = function(b, c, e) {
                if ((d('number' == typeof b.length), b.length <= 0))
                  return (this.words = [0]), (this.length = 1), this;
                (this.length = Math.ceil(b.length / 3)),
                  (this.words = new Array(this.length));
                for (var f = 0; f < this.length; f++) this.words[f] = 0;
                var g,
                  h,
                  i = 0;
                if ('be' === e)
                  for (f = b.length - 1, g = 0; f >= 0; f -= 3)
                    (h = b[f] | (b[f - 1] << 8) | (b[f - 2] << 16)),
                      (this.words[g] |= (h << i) & 67108863),
                      (this.words[g + 1] = (h >>> (26 - i)) & 67108863),
                      (i += 24),
                      i >= 26 && ((i -= 26), g++);
                else if ('le' === e)
                  for (f = 0, g = 0; f < b.length; f += 3)
                    (h = b[f] | (b[f + 1] << 8) | (b[f + 2] << 16)),
                      (this.words[g] |= (h << i) & 67108863),
                      (this.words[g + 1] = (h >>> (26 - i)) & 67108863),
                      (i += 24),
                      i >= 26 && ((i -= 26), g++);
                return this.strip();
              }),
              (f.prototype._parseHex = function(b, c) {
                (this.length = Math.ceil((b.length - c) / 6)),
                  (this.words = new Array(this.length));
                for (var d = 0; d < this.length; d++) this.words[d] = 0;
                var e,
                  f,
                  g = 0;
                for (d = b.length - 6, e = 0; d >= c; d -= 6)
                  (f = h(b, d, d + 6)),
                    (this.words[e] |= (f << g) & 67108863),
                    (this.words[e + 1] |= (f >>> (26 - g)) & 4194303),
                    (g += 24),
                    g >= 26 && ((g -= 26), e++);
                d + 6 !== c &&
                  ((f = h(b, c, d + 6)),
                  (this.words[e] |= (f << g) & 67108863),
                  (this.words[e + 1] |= (f >>> (26 - g)) & 4194303)),
                  this.strip();
              }),
              (f.prototype._parseBase = function(b, c, d) {
                (this.words = [0]), (this.length = 1);
                for (var e = 0, f = 1; f <= 67108863; f *= c) e++;
                e--, (f = (f / c) | 0);
                for (
                  var g = b.length - d,
                    h = g % e,
                    j = Math.min(g, g - h) + d,
                    k = 0,
                    l = d;
                  l < j;
                  l += e
                )
                  (k = i(b, l, l + e, c)),
                    this.imuln(f),
                    this.words[0] + k < 67108864
                      ? (this.words[0] += k)
                      : this._iaddn(k);
                if (0 !== h) {
                  var m = 1;
                  for (k = i(b, l, b.length, c), l = 0; l < h; l++) m *= c;
                  this.imuln(m),
                    this.words[0] + k < 67108864
                      ? (this.words[0] += k)
                      : this._iaddn(k);
                }
              }),
              (f.prototype.copy = function(b) {
                b.words = new Array(this.length);
                for (var c = 0; c < this.length; c++)
                  b.words[c] = this.words[c];
                (b.length = this.length),
                  (b.negative = this.negative),
                  (b.red = this.red);
              }),
              (f.prototype.clone = function() {
                var b = new f(null);
                return this.copy(b), b;
              }),
              (f.prototype._expand = function(b) {
                for (; this.length < b; ) this.words[this.length++] = 0;
                return this;
              }),
              (f.prototype.strip = function() {
                for (; this.length > 1 && 0 === this.words[this.length - 1]; )
                  this.length--;
                return this._normSign();
              }),
              (f.prototype._normSign = function() {
                return (
                  1 === this.length &&
                    0 === this.words[0] &&
                    (this.negative = 0),
                  this
                );
              }),
              (f.prototype.inspect = function() {
                return (
                  (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>'
                );
              });
            var j = [
                '',
                '0',
                '00',
                '000',
                '0000',
                '00000',
                '000000',
                '0000000',
                '00000000',
                '000000000',
                '0000000000',
                '00000000000',
                '000000000000',
                '0000000000000',
                '00000000000000',
                '000000000000000',
                '0000000000000000',
                '00000000000000000',
                '000000000000000000',
                '0000000000000000000',
                '00000000000000000000',
                '000000000000000000000',
                '0000000000000000000000',
                '00000000000000000000000',
                '000000000000000000000000',
                '0000000000000000000000000'
              ],
              k = [
                0,
                0,
                25,
                16,
                12,
                11,
                10,
                9,
                8,
                8,
                7,
                7,
                7,
                7,
                6,
                6,
                6,
                6,
                6,
                6,
                6,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5,
                5
              ],
              l = [
                0,
                0,
                33554432,
                43046721,
                16777216,
                48828125,
                60466176,
                40353607,
                16777216,
                43046721,
                1e7,
                19487171,
                35831808,
                62748517,
                7529536,
                11390625,
                16777216,
                24137569,
                34012224,
                47045881,
                64e6,
                4084101,
                5153632,
                6436343,
                7962624,
                9765625,
                11881376,
                14348907,
                17210368,
                20511149,
                243e5,
                28629151,
                33554432,
                39135393,
                45435424,
                52521875,
                60466176
              ];
            (f.prototype.toString = function(b, c) {
              (b = b || 10), (c = 0 | c || 1);
              var e;
              if (16 === b || 'hex' === b) {
                e = '';
                for (var f = 0, g = 0, h = 0; h < this.length; h++) {
                  var i = this.words[h],
                    m = (16777215 & ((i << f) | g)).toString(16);
                  (g = (i >>> (24 - f)) & 16777215),
                    (e =
                      0 !== g || h !== this.length - 1
                        ? j[6 - m.length] + m + e
                        : m + e),
                    (f += 2),
                    f >= 26 && ((f -= 26), h--);
                }
                for (0 !== g && (e = g.toString(16) + e); e.length % c !== 0; )
                  e = '0' + e;
                return 0 !== this.negative && (e = '-' + e), e;
              }
              if (b === (0 | b) && b >= 2 && b <= 36) {
                var n = k[b],
                  o = l[b];
                e = '';
                var p = this.clone();
                for (p.negative = 0; !p.isZero(); ) {
                  var q = p.modn(o).toString(b);
                  (p = p.idivn(o)),
                    (e = p.isZero() ? q + e : j[n - q.length] + q + e);
                }
                for (this.isZero() && (e = '0' + e); e.length % c !== 0; )
                  e = '0' + e;
                return 0 !== this.negative && (e = '-' + e), e;
              }
              d(!1, 'Base should be between 2 and 36');
            }),
              (f.prototype.toNumber = function() {
                var b = this.words[0];
                return (
                  2 === this.length
                    ? (b += 67108864 * this.words[1])
                    : 3 === this.length && 1 === this.words[2]
                    ? (b += 4503599627370496 + 67108864 * this.words[1])
                    : this.length > 2 &&
                      d(!1, 'Number can only safely store up to 53 bits'),
                  0 !== this.negative ? -b : b
                );
              }),
              (f.prototype.toJSON = function() {
                return this.toString(16);
              }),
              (f.prototype.toBuffer = function(b, c) {
                return d('undefined' != typeof g), this.toArrayLike(g, b, c);
              }),
              (f.prototype.toArray = function(b, c) {
                return this.toArrayLike(Array, b, c);
              }),
              (f.prototype.toArrayLike = function(b, c, e) {
                var f = this.byteLength(),
                  g = e || Math.max(1, f);
                d(f <= g, 'byte array longer than desired length'),
                  d(g > 0, 'Requested array length <= 0'),
                  this.strip();
                var j,
                  k,
                  h = 'le' === c,
                  i = new b(g),
                  l = this.clone();
                if (h) {
                  for (k = 0; !l.isZero(); k++)
                    (j = l.andln(255)), l.iushrn(8), (i[k] = j);
                  for (; k < g; k++) i[k] = 0;
                } else {
                  for (k = 0; k < g - f; k++) i[k] = 0;
                  for (k = 0; !l.isZero(); k++)
                    (j = l.andln(255)), l.iushrn(8), (i[g - k - 1] = j);
                }
                return i;
              }),
              Math.clz32
                ? (f.prototype._countBits = function(b) {
                    return 32 - Math.clz32(b);
                  })
                : (f.prototype._countBits = function(b) {
                    var c = b,
                      d = 0;
                    return (
                      c >= 4096 && ((d += 13), (c >>>= 13)),
                      c >= 64 && ((d += 7), (c >>>= 7)),
                      c >= 8 && ((d += 4), (c >>>= 4)),
                      c >= 2 && ((d += 2), (c >>>= 2)),
                      d + c
                    );
                  }),
              (f.prototype._zeroBits = function(b) {
                if (0 === b) return 26;
                var c = b,
                  d = 0;
                return (
                  0 === (8191 & c) && ((d += 13), (c >>>= 13)),
                  0 === (127 & c) && ((d += 7), (c >>>= 7)),
                  0 === (15 & c) && ((d += 4), (c >>>= 4)),
                  0 === (3 & c) && ((d += 2), (c >>>= 2)),
                  0 === (1 & c) && d++,
                  d
                );
              }),
              (f.prototype.bitLength = function() {
                var b = this.words[this.length - 1],
                  c = this._countBits(b);
                return 26 * (this.length - 1) + c;
              }),
              (f.prototype.zeroBits = function() {
                if (this.isZero()) return 0;
                for (var b = 0, c = 0; c < this.length; c++) {
                  var d = this._zeroBits(this.words[c]);
                  if (((b += d), 26 !== d)) break;
                }
                return b;
              }),
              (f.prototype.byteLength = function() {
                return Math.ceil(this.bitLength() / 8);
              }),
              (f.prototype.toTwos = function(b) {
                return 0 !== this.negative
                  ? this.abs()
                      .inotn(b)
                      .iaddn(1)
                  : this.clone();
              }),
              (f.prototype.fromTwos = function(b) {
                return this.testn(b - 1)
                  ? this.notn(b)
                      .iaddn(1)
                      .ineg()
                  : this.clone();
              }),
              (f.prototype.isNeg = function() {
                return 0 !== this.negative;
              }),
              (f.prototype.neg = function() {
                return this.clone().ineg();
              }),
              (f.prototype.ineg = function() {
                return this.isZero() || (this.negative ^= 1), this;
              }),
              (f.prototype.iuor = function(b) {
                for (; this.length < b.length; ) this.words[this.length++] = 0;
                for (var c = 0; c < b.length; c++)
                  this.words[c] = this.words[c] | b.words[c];
                return this.strip();
              }),
              (f.prototype.ior = function(b) {
                return d(0 === (this.negative | b.negative)), this.iuor(b);
              }),
              (f.prototype.or = function(b) {
                return this.length > b.length
                  ? this.clone().ior(b)
                  : b.clone().ior(this);
              }),
              (f.prototype.uor = function(b) {
                return this.length > b.length
                  ? this.clone().iuor(b)
                  : b.clone().iuor(this);
              }),
              (f.prototype.iuand = function(b) {
                var c;
                c = this.length > b.length ? b : this;
                for (var d = 0; d < c.length; d++)
                  this.words[d] = this.words[d] & b.words[d];
                return (this.length = c.length), this.strip();
              }),
              (f.prototype.iand = function(b) {
                return d(0 === (this.negative | b.negative)), this.iuand(b);
              }),
              (f.prototype.and = function(b) {
                return this.length > b.length
                  ? this.clone().iand(b)
                  : b.clone().iand(this);
              }),
              (f.prototype.uand = function(b) {
                return this.length > b.length
                  ? this.clone().iuand(b)
                  : b.clone().iuand(this);
              }),
              (f.prototype.iuxor = function(b) {
                var c, d;
                this.length > b.length
                  ? ((c = this), (d = b))
                  : ((c = b), (d = this));
                for (var e = 0; e < d.length; e++)
                  this.words[e] = c.words[e] ^ d.words[e];
                if (this !== c)
                  for (; e < c.length; e++) this.words[e] = c.words[e];
                return (this.length = c.length), this.strip();
              }),
              (f.prototype.ixor = function(b) {
                return d(0 === (this.negative | b.negative)), this.iuxor(b);
              }),
              (f.prototype.xor = function(b) {
                return this.length > b.length
                  ? this.clone().ixor(b)
                  : b.clone().ixor(this);
              }),
              (f.prototype.uxor = function(b) {
                return this.length > b.length
                  ? this.clone().iuxor(b)
                  : b.clone().iuxor(this);
              }),
              (f.prototype.inotn = function(b) {
                d('number' == typeof b && b >= 0);
                var c = 0 | Math.ceil(b / 26),
                  e = b % 26;
                this._expand(c), e > 0 && c--;
                for (var f = 0; f < c; f++)
                  this.words[f] = 67108863 & ~this.words[f];
                return (
                  e > 0 &&
                    (this.words[f] = ~this.words[f] & (67108863 >> (26 - e))),
                  this.strip()
                );
              }),
              (f.prototype.notn = function(b) {
                return this.clone().inotn(b);
              }),
              (f.prototype.setn = function(b, c) {
                d('number' == typeof b && b >= 0);
                var e = (b / 26) | 0,
                  f = b % 26;
                return (
                  this._expand(e + 1),
                  c
                    ? (this.words[e] = this.words[e] | (1 << f))
                    : (this.words[e] = this.words[e] & ~(1 << f)),
                  this.strip()
                );
              }),
              (f.prototype.iadd = function(b) {
                var c;
                if (0 !== this.negative && 0 === b.negative)
                  return (
                    (this.negative = 0),
                    (c = this.isub(b)),
                    (this.negative ^= 1),
                    this._normSign()
                  );
                if (0 === this.negative && 0 !== b.negative)
                  return (
                    (b.negative = 0),
                    (c = this.isub(b)),
                    (b.negative = 1),
                    c._normSign()
                  );
                var d, e;
                this.length > b.length
                  ? ((d = this), (e = b))
                  : ((d = b), (e = this));
                for (var f = 0, g = 0; g < e.length; g++)
                  (c = (0 | d.words[g]) + (0 | e.words[g]) + f),
                    (this.words[g] = 67108863 & c),
                    (f = c >>> 26);
                for (; 0 !== f && g < d.length; g++)
                  (c = (0 | d.words[g]) + f),
                    (this.words[g] = 67108863 & c),
                    (f = c >>> 26);
                if (((this.length = d.length), 0 !== f))
                  (this.words[this.length] = f), this.length++;
                else if (d !== this)
                  for (; g < d.length; g++) this.words[g] = d.words[g];
                return this;
              }),
              (f.prototype.add = function(b) {
                var c;
                return 0 !== b.negative && 0 === this.negative
                  ? ((b.negative = 0), (c = this.sub(b)), (b.negative ^= 1), c)
                  : 0 === b.negative && 0 !== this.negative
                  ? ((this.negative = 0),
                    (c = b.sub(this)),
                    (this.negative = 1),
                    c)
                  : this.length > b.length
                  ? this.clone().iadd(b)
                  : b.clone().iadd(this);
              }),
              (f.prototype.isub = function(b) {
                if (0 !== b.negative) {
                  b.negative = 0;
                  var c = this.iadd(b);
                  return (b.negative = 1), c._normSign();
                }
                if (0 !== this.negative)
                  return (
                    (this.negative = 0),
                    this.iadd(b),
                    (this.negative = 1),
                    this._normSign()
                  );
                var d = this.cmp(b);
                if (0 === d)
                  return (
                    (this.negative = 0),
                    (this.length = 1),
                    (this.words[0] = 0),
                    this
                  );
                var e, f;
                d > 0 ? ((e = this), (f = b)) : ((e = b), (f = this));
                for (var g = 0, h = 0; h < f.length; h++)
                  (c = (0 | e.words[h]) - (0 | f.words[h]) + g),
                    (g = c >> 26),
                    (this.words[h] = 67108863 & c);
                for (; 0 !== g && h < e.length; h++)
                  (c = (0 | e.words[h]) + g),
                    (g = c >> 26),
                    (this.words[h] = 67108863 & c);
                if (0 === g && h < e.length && e !== this)
                  for (; h < e.length; h++) this.words[h] = e.words[h];
                return (
                  (this.length = Math.max(this.length, h)),
                  e !== this && (this.negative = 1),
                  this.strip()
                );
              }),
              (f.prototype.sub = function(b) {
                return this.clone().isub(b);
              });
            var o = function(b, c, d) {
              var i,
                j,
                k,
                e = b.words,
                f = c.words,
                g = d.words,
                h = 0,
                l = 0 | e[0],
                m = 8191 & l,
                n = l >>> 13,
                o = 0 | e[1],
                p = 8191 & o,
                q = o >>> 13,
                r = 0 | e[2],
                s = 8191 & r,
                t = r >>> 13,
                u = 0 | e[3],
                v = 8191 & u,
                w = u >>> 13,
                x = 0 | e[4],
                y = 8191 & x,
                z = x >>> 13,
                A = 0 | e[5],
                B = 8191 & A,
                C = A >>> 13,
                D = 0 | e[6],
                E = 8191 & D,
                F = D >>> 13,
                G = 0 | e[7],
                H = 8191 & G,
                I = G >>> 13,
                J = 0 | e[8],
                K = 8191 & J,
                L = J >>> 13,
                M = 0 | e[9],
                N = 8191 & M,
                O = M >>> 13,
                P = 0 | f[0],
                Q = 8191 & P,
                R = P >>> 13,
                S = 0 | f[1],
                T = 8191 & S,
                U = S >>> 13,
                V = 0 | f[2],
                W = 8191 & V,
                X = V >>> 13,
                Y = 0 | f[3],
                Z = 8191 & Y,
                $ = Y >>> 13,
                _ = 0 | f[4],
                aa = 8191 & _,
                ba = _ >>> 13,
                ca = 0 | f[5],
                da = 8191 & ca,
                ea = ca >>> 13,
                fa = 0 | f[6],
                ga = 8191 & fa,
                ha = fa >>> 13,
                ia = 0 | f[7],
                ja = 8191 & ia,
                ka = ia >>> 13,
                la = 0 | f[8],
                ma = 8191 & la,
                na = la >>> 13,
                oa = 0 | f[9],
                pa = 8191 & oa,
                qa = oa >>> 13;
              (d.negative = b.negative ^ c.negative),
                (d.length = 19),
                (i = Math.imul(m, Q)),
                (j = Math.imul(m, R)),
                (j = (j + Math.imul(n, Q)) | 0),
                (k = Math.imul(n, R));
              var ra = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (ra >>> 26)) | 0),
                (ra &= 67108863),
                (i = Math.imul(p, Q)),
                (j = Math.imul(p, R)),
                (j = (j + Math.imul(q, Q)) | 0),
                (k = Math.imul(q, R)),
                (i = (i + Math.imul(m, T)) | 0),
                (j = (j + Math.imul(m, U)) | 0),
                (j = (j + Math.imul(n, T)) | 0),
                (k = (k + Math.imul(n, U)) | 0);
              var sa = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (sa >>> 26)) | 0),
                (sa &= 67108863),
                (i = Math.imul(s, Q)),
                (j = Math.imul(s, R)),
                (j = (j + Math.imul(t, Q)) | 0),
                (k = Math.imul(t, R)),
                (i = (i + Math.imul(p, T)) | 0),
                (j = (j + Math.imul(p, U)) | 0),
                (j = (j + Math.imul(q, T)) | 0),
                (k = (k + Math.imul(q, U)) | 0),
                (i = (i + Math.imul(m, W)) | 0),
                (j = (j + Math.imul(m, X)) | 0),
                (j = (j + Math.imul(n, W)) | 0),
                (k = (k + Math.imul(n, X)) | 0);
              var ta = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (ta >>> 26)) | 0),
                (ta &= 67108863),
                (i = Math.imul(v, Q)),
                (j = Math.imul(v, R)),
                (j = (j + Math.imul(w, Q)) | 0),
                (k = Math.imul(w, R)),
                (i = (i + Math.imul(s, T)) | 0),
                (j = (j + Math.imul(s, U)) | 0),
                (j = (j + Math.imul(t, T)) | 0),
                (k = (k + Math.imul(t, U)) | 0),
                (i = (i + Math.imul(p, W)) | 0),
                (j = (j + Math.imul(p, X)) | 0),
                (j = (j + Math.imul(q, W)) | 0),
                (k = (k + Math.imul(q, X)) | 0),
                (i = (i + Math.imul(m, Z)) | 0),
                (j = (j + Math.imul(m, $)) | 0),
                (j = (j + Math.imul(n, Z)) | 0),
                (k = (k + Math.imul(n, $)) | 0);
              var ua = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (ua >>> 26)) | 0),
                (ua &= 67108863),
                (i = Math.imul(y, Q)),
                (j = Math.imul(y, R)),
                (j = (j + Math.imul(z, Q)) | 0),
                (k = Math.imul(z, R)),
                (i = (i + Math.imul(v, T)) | 0),
                (j = (j + Math.imul(v, U)) | 0),
                (j = (j + Math.imul(w, T)) | 0),
                (k = (k + Math.imul(w, U)) | 0),
                (i = (i + Math.imul(s, W)) | 0),
                (j = (j + Math.imul(s, X)) | 0),
                (j = (j + Math.imul(t, W)) | 0),
                (k = (k + Math.imul(t, X)) | 0),
                (i = (i + Math.imul(p, Z)) | 0),
                (j = (j + Math.imul(p, $)) | 0),
                (j = (j + Math.imul(q, Z)) | 0),
                (k = (k + Math.imul(q, $)) | 0),
                (i = (i + Math.imul(m, aa)) | 0),
                (j = (j + Math.imul(m, ba)) | 0),
                (j = (j + Math.imul(n, aa)) | 0),
                (k = (k + Math.imul(n, ba)) | 0);
              var va = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (va >>> 26)) | 0),
                (va &= 67108863),
                (i = Math.imul(B, Q)),
                (j = Math.imul(B, R)),
                (j = (j + Math.imul(C, Q)) | 0),
                (k = Math.imul(C, R)),
                (i = (i + Math.imul(y, T)) | 0),
                (j = (j + Math.imul(y, U)) | 0),
                (j = (j + Math.imul(z, T)) | 0),
                (k = (k + Math.imul(z, U)) | 0),
                (i = (i + Math.imul(v, W)) | 0),
                (j = (j + Math.imul(v, X)) | 0),
                (j = (j + Math.imul(w, W)) | 0),
                (k = (k + Math.imul(w, X)) | 0),
                (i = (i + Math.imul(s, Z)) | 0),
                (j = (j + Math.imul(s, $)) | 0),
                (j = (j + Math.imul(t, Z)) | 0),
                (k = (k + Math.imul(t, $)) | 0),
                (i = (i + Math.imul(p, aa)) | 0),
                (j = (j + Math.imul(p, ba)) | 0),
                (j = (j + Math.imul(q, aa)) | 0),
                (k = (k + Math.imul(q, ba)) | 0),
                (i = (i + Math.imul(m, da)) | 0),
                (j = (j + Math.imul(m, ea)) | 0),
                (j = (j + Math.imul(n, da)) | 0),
                (k = (k + Math.imul(n, ea)) | 0);
              var wa = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (wa >>> 26)) | 0),
                (wa &= 67108863),
                (i = Math.imul(E, Q)),
                (j = Math.imul(E, R)),
                (j = (j + Math.imul(F, Q)) | 0),
                (k = Math.imul(F, R)),
                (i = (i + Math.imul(B, T)) | 0),
                (j = (j + Math.imul(B, U)) | 0),
                (j = (j + Math.imul(C, T)) | 0),
                (k = (k + Math.imul(C, U)) | 0),
                (i = (i + Math.imul(y, W)) | 0),
                (j = (j + Math.imul(y, X)) | 0),
                (j = (j + Math.imul(z, W)) | 0),
                (k = (k + Math.imul(z, X)) | 0),
                (i = (i + Math.imul(v, Z)) | 0),
                (j = (j + Math.imul(v, $)) | 0),
                (j = (j + Math.imul(w, Z)) | 0),
                (k = (k + Math.imul(w, $)) | 0),
                (i = (i + Math.imul(s, aa)) | 0),
                (j = (j + Math.imul(s, ba)) | 0),
                (j = (j + Math.imul(t, aa)) | 0),
                (k = (k + Math.imul(t, ba)) | 0),
                (i = (i + Math.imul(p, da)) | 0),
                (j = (j + Math.imul(p, ea)) | 0),
                (j = (j + Math.imul(q, da)) | 0),
                (k = (k + Math.imul(q, ea)) | 0),
                (i = (i + Math.imul(m, ga)) | 0),
                (j = (j + Math.imul(m, ha)) | 0),
                (j = (j + Math.imul(n, ga)) | 0),
                (k = (k + Math.imul(n, ha)) | 0);
              var xa = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (xa >>> 26)) | 0),
                (xa &= 67108863),
                (i = Math.imul(H, Q)),
                (j = Math.imul(H, R)),
                (j = (j + Math.imul(I, Q)) | 0),
                (k = Math.imul(I, R)),
                (i = (i + Math.imul(E, T)) | 0),
                (j = (j + Math.imul(E, U)) | 0),
                (j = (j + Math.imul(F, T)) | 0),
                (k = (k + Math.imul(F, U)) | 0),
                (i = (i + Math.imul(B, W)) | 0),
                (j = (j + Math.imul(B, X)) | 0),
                (j = (j + Math.imul(C, W)) | 0),
                (k = (k + Math.imul(C, X)) | 0),
                (i = (i + Math.imul(y, Z)) | 0),
                (j = (j + Math.imul(y, $)) | 0),
                (j = (j + Math.imul(z, Z)) | 0),
                (k = (k + Math.imul(z, $)) | 0),
                (i = (i + Math.imul(v, aa)) | 0),
                (j = (j + Math.imul(v, ba)) | 0),
                (j = (j + Math.imul(w, aa)) | 0),
                (k = (k + Math.imul(w, ba)) | 0),
                (i = (i + Math.imul(s, da)) | 0),
                (j = (j + Math.imul(s, ea)) | 0),
                (j = (j + Math.imul(t, da)) | 0),
                (k = (k + Math.imul(t, ea)) | 0),
                (i = (i + Math.imul(p, ga)) | 0),
                (j = (j + Math.imul(p, ha)) | 0),
                (j = (j + Math.imul(q, ga)) | 0),
                (k = (k + Math.imul(q, ha)) | 0),
                (i = (i + Math.imul(m, ja)) | 0),
                (j = (j + Math.imul(m, ka)) | 0),
                (j = (j + Math.imul(n, ja)) | 0),
                (k = (k + Math.imul(n, ka)) | 0);
              var ya = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (ya >>> 26)) | 0),
                (ya &= 67108863),
                (i = Math.imul(K, Q)),
                (j = Math.imul(K, R)),
                (j = (j + Math.imul(L, Q)) | 0),
                (k = Math.imul(L, R)),
                (i = (i + Math.imul(H, T)) | 0),
                (j = (j + Math.imul(H, U)) | 0),
                (j = (j + Math.imul(I, T)) | 0),
                (k = (k + Math.imul(I, U)) | 0),
                (i = (i + Math.imul(E, W)) | 0),
                (j = (j + Math.imul(E, X)) | 0),
                (j = (j + Math.imul(F, W)) | 0),
                (k = (k + Math.imul(F, X)) | 0),
                (i = (i + Math.imul(B, Z)) | 0),
                (j = (j + Math.imul(B, $)) | 0),
                (j = (j + Math.imul(C, Z)) | 0),
                (k = (k + Math.imul(C, $)) | 0),
                (i = (i + Math.imul(y, aa)) | 0),
                (j = (j + Math.imul(y, ba)) | 0),
                (j = (j + Math.imul(z, aa)) | 0),
                (k = (k + Math.imul(z, ba)) | 0),
                (i = (i + Math.imul(v, da)) | 0),
                (j = (j + Math.imul(v, ea)) | 0),
                (j = (j + Math.imul(w, da)) | 0),
                (k = (k + Math.imul(w, ea)) | 0),
                (i = (i + Math.imul(s, ga)) | 0),
                (j = (j + Math.imul(s, ha)) | 0),
                (j = (j + Math.imul(t, ga)) | 0),
                (k = (k + Math.imul(t, ha)) | 0),
                (i = (i + Math.imul(p, ja)) | 0),
                (j = (j + Math.imul(p, ka)) | 0),
                (j = (j + Math.imul(q, ja)) | 0),
                (k = (k + Math.imul(q, ka)) | 0),
                (i = (i + Math.imul(m, ma)) | 0),
                (j = (j + Math.imul(m, na)) | 0),
                (j = (j + Math.imul(n, ma)) | 0),
                (k = (k + Math.imul(n, na)) | 0);
              var za = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (za >>> 26)) | 0),
                (za &= 67108863),
                (i = Math.imul(N, Q)),
                (j = Math.imul(N, R)),
                (j = (j + Math.imul(O, Q)) | 0),
                (k = Math.imul(O, R)),
                (i = (i + Math.imul(K, T)) | 0),
                (j = (j + Math.imul(K, U)) | 0),
                (j = (j + Math.imul(L, T)) | 0),
                (k = (k + Math.imul(L, U)) | 0),
                (i = (i + Math.imul(H, W)) | 0),
                (j = (j + Math.imul(H, X)) | 0),
                (j = (j + Math.imul(I, W)) | 0),
                (k = (k + Math.imul(I, X)) | 0),
                (i = (i + Math.imul(E, Z)) | 0),
                (j = (j + Math.imul(E, $)) | 0),
                (j = (j + Math.imul(F, Z)) | 0),
                (k = (k + Math.imul(F, $)) | 0),
                (i = (i + Math.imul(B, aa)) | 0),
                (j = (j + Math.imul(B, ba)) | 0),
                (j = (j + Math.imul(C, aa)) | 0),
                (k = (k + Math.imul(C, ba)) | 0),
                (i = (i + Math.imul(y, da)) | 0),
                (j = (j + Math.imul(y, ea)) | 0),
                (j = (j + Math.imul(z, da)) | 0),
                (k = (k + Math.imul(z, ea)) | 0),
                (i = (i + Math.imul(v, ga)) | 0),
                (j = (j + Math.imul(v, ha)) | 0),
                (j = (j + Math.imul(w, ga)) | 0),
                (k = (k + Math.imul(w, ha)) | 0),
                (i = (i + Math.imul(s, ja)) | 0),
                (j = (j + Math.imul(s, ka)) | 0),
                (j = (j + Math.imul(t, ja)) | 0),
                (k = (k + Math.imul(t, ka)) | 0),
                (i = (i + Math.imul(p, ma)) | 0),
                (j = (j + Math.imul(p, na)) | 0),
                (j = (j + Math.imul(q, ma)) | 0),
                (k = (k + Math.imul(q, na)) | 0),
                (i = (i + Math.imul(m, pa)) | 0),
                (j = (j + Math.imul(m, qa)) | 0),
                (j = (j + Math.imul(n, pa)) | 0),
                (k = (k + Math.imul(n, qa)) | 0);
              var Aa = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Aa >>> 26)) | 0),
                (Aa &= 67108863),
                (i = Math.imul(N, T)),
                (j = Math.imul(N, U)),
                (j = (j + Math.imul(O, T)) | 0),
                (k = Math.imul(O, U)),
                (i = (i + Math.imul(K, W)) | 0),
                (j = (j + Math.imul(K, X)) | 0),
                (j = (j + Math.imul(L, W)) | 0),
                (k = (k + Math.imul(L, X)) | 0),
                (i = (i + Math.imul(H, Z)) | 0),
                (j = (j + Math.imul(H, $)) | 0),
                (j = (j + Math.imul(I, Z)) | 0),
                (k = (k + Math.imul(I, $)) | 0),
                (i = (i + Math.imul(E, aa)) | 0),
                (j = (j + Math.imul(E, ba)) | 0),
                (j = (j + Math.imul(F, aa)) | 0),
                (k = (k + Math.imul(F, ba)) | 0),
                (i = (i + Math.imul(B, da)) | 0),
                (j = (j + Math.imul(B, ea)) | 0),
                (j = (j + Math.imul(C, da)) | 0),
                (k = (k + Math.imul(C, ea)) | 0),
                (i = (i + Math.imul(y, ga)) | 0),
                (j = (j + Math.imul(y, ha)) | 0),
                (j = (j + Math.imul(z, ga)) | 0),
                (k = (k + Math.imul(z, ha)) | 0),
                (i = (i + Math.imul(v, ja)) | 0),
                (j = (j + Math.imul(v, ka)) | 0),
                (j = (j + Math.imul(w, ja)) | 0),
                (k = (k + Math.imul(w, ka)) | 0),
                (i = (i + Math.imul(s, ma)) | 0),
                (j = (j + Math.imul(s, na)) | 0),
                (j = (j + Math.imul(t, ma)) | 0),
                (k = (k + Math.imul(t, na)) | 0),
                (i = (i + Math.imul(p, pa)) | 0),
                (j = (j + Math.imul(p, qa)) | 0),
                (j = (j + Math.imul(q, pa)) | 0),
                (k = (k + Math.imul(q, qa)) | 0);
              var Ba = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ba >>> 26)) | 0),
                (Ba &= 67108863),
                (i = Math.imul(N, W)),
                (j = Math.imul(N, X)),
                (j = (j + Math.imul(O, W)) | 0),
                (k = Math.imul(O, X)),
                (i = (i + Math.imul(K, Z)) | 0),
                (j = (j + Math.imul(K, $)) | 0),
                (j = (j + Math.imul(L, Z)) | 0),
                (k = (k + Math.imul(L, $)) | 0),
                (i = (i + Math.imul(H, aa)) | 0),
                (j = (j + Math.imul(H, ba)) | 0),
                (j = (j + Math.imul(I, aa)) | 0),
                (k = (k + Math.imul(I, ba)) | 0),
                (i = (i + Math.imul(E, da)) | 0),
                (j = (j + Math.imul(E, ea)) | 0),
                (j = (j + Math.imul(F, da)) | 0),
                (k = (k + Math.imul(F, ea)) | 0),
                (i = (i + Math.imul(B, ga)) | 0),
                (j = (j + Math.imul(B, ha)) | 0),
                (j = (j + Math.imul(C, ga)) | 0),
                (k = (k + Math.imul(C, ha)) | 0),
                (i = (i + Math.imul(y, ja)) | 0),
                (j = (j + Math.imul(y, ka)) | 0),
                (j = (j + Math.imul(z, ja)) | 0),
                (k = (k + Math.imul(z, ka)) | 0),
                (i = (i + Math.imul(v, ma)) | 0),
                (j = (j + Math.imul(v, na)) | 0),
                (j = (j + Math.imul(w, ma)) | 0),
                (k = (k + Math.imul(w, na)) | 0),
                (i = (i + Math.imul(s, pa)) | 0),
                (j = (j + Math.imul(s, qa)) | 0),
                (j = (j + Math.imul(t, pa)) | 0),
                (k = (k + Math.imul(t, qa)) | 0);
              var Ca = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ca >>> 26)) | 0),
                (Ca &= 67108863),
                (i = Math.imul(N, Z)),
                (j = Math.imul(N, $)),
                (j = (j + Math.imul(O, Z)) | 0),
                (k = Math.imul(O, $)),
                (i = (i + Math.imul(K, aa)) | 0),
                (j = (j + Math.imul(K, ba)) | 0),
                (j = (j + Math.imul(L, aa)) | 0),
                (k = (k + Math.imul(L, ba)) | 0),
                (i = (i + Math.imul(H, da)) | 0),
                (j = (j + Math.imul(H, ea)) | 0),
                (j = (j + Math.imul(I, da)) | 0),
                (k = (k + Math.imul(I, ea)) | 0),
                (i = (i + Math.imul(E, ga)) | 0),
                (j = (j + Math.imul(E, ha)) | 0),
                (j = (j + Math.imul(F, ga)) | 0),
                (k = (k + Math.imul(F, ha)) | 0),
                (i = (i + Math.imul(B, ja)) | 0),
                (j = (j + Math.imul(B, ka)) | 0),
                (j = (j + Math.imul(C, ja)) | 0),
                (k = (k + Math.imul(C, ka)) | 0),
                (i = (i + Math.imul(y, ma)) | 0),
                (j = (j + Math.imul(y, na)) | 0),
                (j = (j + Math.imul(z, ma)) | 0),
                (k = (k + Math.imul(z, na)) | 0),
                (i = (i + Math.imul(v, pa)) | 0),
                (j = (j + Math.imul(v, qa)) | 0),
                (j = (j + Math.imul(w, pa)) | 0),
                (k = (k + Math.imul(w, qa)) | 0);
              var Da = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Da >>> 26)) | 0),
                (Da &= 67108863),
                (i = Math.imul(N, aa)),
                (j = Math.imul(N, ba)),
                (j = (j + Math.imul(O, aa)) | 0),
                (k = Math.imul(O, ba)),
                (i = (i + Math.imul(K, da)) | 0),
                (j = (j + Math.imul(K, ea)) | 0),
                (j = (j + Math.imul(L, da)) | 0),
                (k = (k + Math.imul(L, ea)) | 0),
                (i = (i + Math.imul(H, ga)) | 0),
                (j = (j + Math.imul(H, ha)) | 0),
                (j = (j + Math.imul(I, ga)) | 0),
                (k = (k + Math.imul(I, ha)) | 0),
                (i = (i + Math.imul(E, ja)) | 0),
                (j = (j + Math.imul(E, ka)) | 0),
                (j = (j + Math.imul(F, ja)) | 0),
                (k = (k + Math.imul(F, ka)) | 0),
                (i = (i + Math.imul(B, ma)) | 0),
                (j = (j + Math.imul(B, na)) | 0),
                (j = (j + Math.imul(C, ma)) | 0),
                (k = (k + Math.imul(C, na)) | 0),
                (i = (i + Math.imul(y, pa)) | 0),
                (j = (j + Math.imul(y, qa)) | 0),
                (j = (j + Math.imul(z, pa)) | 0),
                (k = (k + Math.imul(z, qa)) | 0);
              var Ea = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ea >>> 26)) | 0),
                (Ea &= 67108863),
                (i = Math.imul(N, da)),
                (j = Math.imul(N, ea)),
                (j = (j + Math.imul(O, da)) | 0),
                (k = Math.imul(O, ea)),
                (i = (i + Math.imul(K, ga)) | 0),
                (j = (j + Math.imul(K, ha)) | 0),
                (j = (j + Math.imul(L, ga)) | 0),
                (k = (k + Math.imul(L, ha)) | 0),
                (i = (i + Math.imul(H, ja)) | 0),
                (j = (j + Math.imul(H, ka)) | 0),
                (j = (j + Math.imul(I, ja)) | 0),
                (k = (k + Math.imul(I, ka)) | 0),
                (i = (i + Math.imul(E, ma)) | 0),
                (j = (j + Math.imul(E, na)) | 0),
                (j = (j + Math.imul(F, ma)) | 0),
                (k = (k + Math.imul(F, na)) | 0),
                (i = (i + Math.imul(B, pa)) | 0),
                (j = (j + Math.imul(B, qa)) | 0),
                (j = (j + Math.imul(C, pa)) | 0),
                (k = (k + Math.imul(C, qa)) | 0);
              var Fa = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Fa >>> 26)) | 0),
                (Fa &= 67108863),
                (i = Math.imul(N, ga)),
                (j = Math.imul(N, ha)),
                (j = (j + Math.imul(O, ga)) | 0),
                (k = Math.imul(O, ha)),
                (i = (i + Math.imul(K, ja)) | 0),
                (j = (j + Math.imul(K, ka)) | 0),
                (j = (j + Math.imul(L, ja)) | 0),
                (k = (k + Math.imul(L, ka)) | 0),
                (i = (i + Math.imul(H, ma)) | 0),
                (j = (j + Math.imul(H, na)) | 0),
                (j = (j + Math.imul(I, ma)) | 0),
                (k = (k + Math.imul(I, na)) | 0),
                (i = (i + Math.imul(E, pa)) | 0),
                (j = (j + Math.imul(E, qa)) | 0),
                (j = (j + Math.imul(F, pa)) | 0),
                (k = (k + Math.imul(F, qa)) | 0);
              var Ga = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ga >>> 26)) | 0),
                (Ga &= 67108863),
                (i = Math.imul(N, ja)),
                (j = Math.imul(N, ka)),
                (j = (j + Math.imul(O, ja)) | 0),
                (k = Math.imul(O, ka)),
                (i = (i + Math.imul(K, ma)) | 0),
                (j = (j + Math.imul(K, na)) | 0),
                (j = (j + Math.imul(L, ma)) | 0),
                (k = (k + Math.imul(L, na)) | 0),
                (i = (i + Math.imul(H, pa)) | 0),
                (j = (j + Math.imul(H, qa)) | 0),
                (j = (j + Math.imul(I, pa)) | 0),
                (k = (k + Math.imul(I, qa)) | 0);
              var Ha = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ha >>> 26)) | 0),
                (Ha &= 67108863),
                (i = Math.imul(N, ma)),
                (j = Math.imul(N, na)),
                (j = (j + Math.imul(O, ma)) | 0),
                (k = Math.imul(O, na)),
                (i = (i + Math.imul(K, pa)) | 0),
                (j = (j + Math.imul(K, qa)) | 0),
                (j = (j + Math.imul(L, pa)) | 0),
                (k = (k + Math.imul(L, qa)) | 0);
              var Ia = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              (h = (((k + (j >>> 13)) | 0) + (Ia >>> 26)) | 0),
                (Ia &= 67108863),
                (i = Math.imul(N, pa)),
                (j = Math.imul(N, qa)),
                (j = (j + Math.imul(O, pa)) | 0),
                (k = Math.imul(O, qa));
              var Ja = (((h + i) | 0) + ((8191 & j) << 13)) | 0;
              return (
                (h = (((k + (j >>> 13)) | 0) + (Ja >>> 26)) | 0),
                (Ja &= 67108863),
                (g[0] = ra),
                (g[1] = sa),
                (g[2] = ta),
                (g[3] = ua),
                (g[4] = va),
                (g[5] = wa),
                (g[6] = xa),
                (g[7] = ya),
                (g[8] = za),
                (g[9] = Aa),
                (g[10] = Ba),
                (g[11] = Ca),
                (g[12] = Da),
                (g[13] = Ea),
                (g[14] = Fa),
                (g[15] = Ga),
                (g[16] = Ha),
                (g[17] = Ia),
                (g[18] = Ja),
                0 !== h && ((g[19] = h), d.length++),
                d
              );
            };
            Math.imul || (o = n),
              (f.prototype.mulTo = function(b, c) {
                var d,
                  e = this.length + b.length;
                return (d =
                  10 === this.length && 10 === b.length
                    ? o(this, b, c)
                    : e < 63
                    ? n(this, b, c)
                    : e < 1024
                    ? p(this, b, c)
                    : q(this, b, c));
              }),
              (r.prototype.makeRBT = function(b) {
                for (
                  var c = new Array(b),
                    d = f.prototype._countBits(b) - 1,
                    e = 0;
                  e < b;
                  e++
                )
                  c[e] = this.revBin(e, d, b);
                return c;
              }),
              (r.prototype.revBin = function(b, c, d) {
                if (0 === b || b === d - 1) return b;
                for (var e = 0, f = 0; f < c; f++)
                  (e |= (1 & b) << (c - f - 1)), (b >>= 1);
                return e;
              }),
              (r.prototype.permute = function(b, c, d, e, f, g) {
                for (var h = 0; h < g; h++) (e[h] = c[b[h]]), (f[h] = d[b[h]]);
              }),
              (r.prototype.transform = function(b, c, d, e, f, g) {
                this.permute(g, b, c, d, e, f);
                for (var h = 1; h < f; h <<= 1)
                  for (
                    var i = h << 1,
                      j = Math.cos((2 * Math.PI) / i),
                      k = Math.sin((2 * Math.PI) / i),
                      l = 0;
                    l < f;
                    l += i
                  )
                    for (var m = j, n = k, o = 0; o < h; o++) {
                      var p = d[l + o],
                        q = e[l + o],
                        r = d[l + o + h],
                        s = e[l + o + h],
                        t = m * r - n * s;
                      (s = m * s + n * r),
                        (r = t),
                        (d[l + o] = p + r),
                        (e[l + o] = q + s),
                        (d[l + o + h] = p - r),
                        (e[l + o + h] = q - s),
                        o !== i &&
                          ((t = j * m - k * n), (n = j * n + k * m), (m = t));
                    }
              }),
              (r.prototype.guessLen13b = function(b, c) {
                var d = 1 | Math.max(c, b),
                  e = 1 & d,
                  f = 0;
                for (d = (d / 2) | 0; d; d >>>= 1) f++;
                return 1 << (f + 1 + e);
              }),
              (r.prototype.conjugate = function(b, c, d) {
                if (!(d <= 1))
                  for (var e = 0; e < d / 2; e++) {
                    var f = b[e];
                    (b[e] = b[d - e - 1]),
                      (b[d - e - 1] = f),
                      (f = c[e]),
                      (c[e] = -c[d - e - 1]),
                      (c[d - e - 1] = -f);
                  }
              }),
              (r.prototype.normalize13b = function(b, c) {
                for (var d = 0, e = 0; e < c / 2; e++) {
                  var f =
                    8192 * Math.round(b[2 * e + 1] / c) +
                    Math.round(b[2 * e] / c) +
                    d;
                  (b[e] = 67108863 & f),
                    (d = f < 67108864 ? 0 : (f / 67108864) | 0);
                }
                return b;
              }),
              (r.prototype.convert13b = function(b, c, e, f) {
                for (var g = 0, h = 0; h < c; h++)
                  (g += 0 | b[h]),
                    (e[2 * h] = 8191 & g),
                    (g >>>= 13),
                    (e[2 * h + 1] = 8191 & g),
                    (g >>>= 13);
                for (h = 2 * c; h < f; ++h) e[h] = 0;
                d(0 === g), d(0 === (g & -8192));
              }),
              (r.prototype.stub = function(b) {
                for (var c = new Array(b), d = 0; d < b; d++) c[d] = 0;
                return c;
              }),
              (r.prototype.mulp = function(b, c, d) {
                var e = 2 * this.guessLen13b(b.length, c.length),
                  f = this.makeRBT(e),
                  g = this.stub(e),
                  h = new Array(e),
                  i = new Array(e),
                  j = new Array(e),
                  k = new Array(e),
                  l = new Array(e),
                  m = new Array(e),
                  n = d.words;
                (n.length = e),
                  this.convert13b(b.words, b.length, h, e),
                  this.convert13b(c.words, c.length, k, e),
                  this.transform(h, g, i, j, e, f),
                  this.transform(k, g, l, m, e, f);
                for (var o = 0; o < e; o++) {
                  var p = i[o] * l[o] - j[o] * m[o];
                  (j[o] = i[o] * m[o] + j[o] * l[o]), (i[o] = p);
                }
                return (
                  this.conjugate(i, j, e),
                  this.transform(i, j, n, g, e, f),
                  this.conjugate(n, g, e),
                  this.normalize13b(n, e),
                  (d.negative = b.negative ^ c.negative),
                  (d.length = b.length + c.length),
                  d.strip()
                );
              }),
              (f.prototype.mul = function(b) {
                var c = new f(null);
                return (
                  (c.words = new Array(this.length + b.length)),
                  this.mulTo(b, c)
                );
              }),
              (f.prototype.mulf = function(b) {
                var c = new f(null);
                return (
                  (c.words = new Array(this.length + b.length)), q(this, b, c)
                );
              }),
              (f.prototype.imul = function(b) {
                return this.clone().mulTo(b, this);
              }),
              (f.prototype.imuln = function(b) {
                d('number' == typeof b), d(b < 67108864);
                for (var c = 0, e = 0; e < this.length; e++) {
                  var f = (0 | this.words[e]) * b,
                    g = (67108863 & f) + (67108863 & c);
                  (c >>= 26),
                    (c += (f / 67108864) | 0),
                    (c += g >>> 26),
                    (this.words[e] = 67108863 & g);
                }
                return 0 !== c && ((this.words[e] = c), this.length++), this;
              }),
              (f.prototype.muln = function(b) {
                return this.clone().imuln(b);
              }),
              (f.prototype.sqr = function() {
                return this.mul(this);
              }),
              (f.prototype.isqr = function() {
                return this.imul(this.clone());
              }),
              (f.prototype.pow = function(b) {
                var c = m(b);
                if (0 === c.length) return new f(1);
                for (
                  var d = this, e = 0;
                  e < c.length && 0 === c[e];
                  e++, d = d.sqr()
                );
                if (++e < c.length)
                  for (var g = d.sqr(); e < c.length; e++, g = g.sqr())
                    0 !== c[e] && (d = d.mul(g));
                return d;
              }),
              (f.prototype.iushln = function(b) {
                d('number' == typeof b && b >= 0);
                var g,
                  c = b % 26,
                  e = (b - c) / 26,
                  f = (67108863 >>> (26 - c)) << (26 - c);
                if (0 !== c) {
                  var h = 0;
                  for (g = 0; g < this.length; g++) {
                    var i = this.words[g] & f,
                      j = ((0 | this.words[g]) - i) << c;
                    (this.words[g] = j | h), (h = i >>> (26 - c));
                  }
                  h && ((this.words[g] = h), this.length++);
                }
                if (0 !== e) {
                  for (g = this.length - 1; g >= 0; g--)
                    this.words[g + e] = this.words[g];
                  for (g = 0; g < e; g++) this.words[g] = 0;
                  this.length += e;
                }
                return this.strip();
              }),
              (f.prototype.ishln = function(b) {
                return d(0 === this.negative), this.iushln(b);
              }),
              (f.prototype.iushrn = function(b, c, e) {
                d('number' == typeof b && b >= 0);
                var f;
                f = c ? (c - (c % 26)) / 26 : 0;
                var g = b % 26,
                  h = Math.min((b - g) / 26, this.length),
                  i = 67108863 ^ ((67108863 >>> g) << g),
                  j = e;
                if (((f -= h), (f = Math.max(0, f)), j)) {
                  for (var k = 0; k < h; k++) j.words[k] = this.words[k];
                  j.length = h;
                }
                if (0 === h);
                else if (this.length > h)
                  for (this.length -= h, k = 0; k < this.length; k++)
                    this.words[k] = this.words[k + h];
                else (this.words[0] = 0), (this.length = 1);
                var l = 0;
                for (k = this.length - 1; k >= 0 && (0 !== l || k >= f); k--) {
                  var m = 0 | this.words[k];
                  (this.words[k] = (l << (26 - g)) | (m >>> g)), (l = m & i);
                }
                return (
                  j && 0 !== l && (j.words[j.length++] = l),
                  0 === this.length && ((this.words[0] = 0), (this.length = 1)),
                  this.strip()
                );
              }),
              (f.prototype.ishrn = function(b, c, e) {
                return d(0 === this.negative), this.iushrn(b, c, e);
              }),
              (f.prototype.shln = function(b) {
                return this.clone().ishln(b);
              }),
              (f.prototype.ushln = function(b) {
                return this.clone().iushln(b);
              }),
              (f.prototype.shrn = function(b) {
                return this.clone().ishrn(b);
              }),
              (f.prototype.ushrn = function(b) {
                return this.clone().iushrn(b);
              }),
              (f.prototype.testn = function(b) {
                d('number' == typeof b && b >= 0);
                var c = b % 26,
                  e = (b - c) / 26,
                  f = 1 << c;
                if (this.length <= e) return !1;
                var g = this.words[e];
                return !!(g & f);
              }),
              (f.prototype.imaskn = function(b) {
                d('number' == typeof b && b >= 0);
                var c = b % 26,
                  e = (b - c) / 26;
                if (
                  (d(
                    0 === this.negative,
                    'imaskn works only with positive numbers'
                  ),
                  this.length <= e)
                )
                  return this;
                if (
                  (0 !== c && e++,
                  (this.length = Math.min(e, this.length)),
                  0 !== c)
                ) {
                  var f = 67108863 ^ ((67108863 >>> c) << c);
                  this.words[this.length - 1] &= f;
                }
                return this.strip();
              }),
              (f.prototype.maskn = function(b) {
                return this.clone().imaskn(b);
              }),
              (f.prototype.iaddn = function(b) {
                return (
                  d('number' == typeof b),
                  d(b < 67108864),
                  b < 0
                    ? this.isubn(-b)
                    : 0 !== this.negative
                    ? 1 === this.length && (0 | this.words[0]) < b
                      ? ((this.words[0] = b - (0 | this.words[0])),
                        (this.negative = 0),
                        this)
                      : ((this.negative = 0),
                        this.isubn(b),
                        (this.negative = 1),
                        this)
                    : this._iaddn(b)
                );
              }),
              (f.prototype._iaddn = function(b) {
                this.words[0] += b;
                for (
                  var c = 0;
                  c < this.length && this.words[c] >= 67108864;
                  c++
                )
                  (this.words[c] -= 67108864),
                    c === this.length - 1
                      ? (this.words[c + 1] = 1)
                      : this.words[c + 1]++;
                return (this.length = Math.max(this.length, c + 1)), this;
              }),
              (f.prototype.isubn = function(b) {
                if ((d('number' == typeof b), d(b < 67108864), b < 0))
                  return this.iaddn(-b);
                if (0 !== this.negative)
                  return (
                    (this.negative = 0),
                    this.iaddn(b),
                    (this.negative = 1),
                    this
                  );
                if (
                  ((this.words[0] -= b), 1 === this.length && this.words[0] < 0)
                )
                  (this.words[0] = -this.words[0]), (this.negative = 1);
                else
                  for (var c = 0; c < this.length && this.words[c] < 0; c++)
                    (this.words[c] += 67108864), (this.words[c + 1] -= 1);
                return this.strip();
              }),
              (f.prototype.addn = function(b) {
                return this.clone().iaddn(b);
              }),
              (f.prototype.subn = function(b) {
                return this.clone().isubn(b);
              }),
              (f.prototype.iabs = function() {
                return (this.negative = 0), this;
              }),
              (f.prototype.abs = function() {
                return this.clone().iabs();
              }),
              (f.prototype._ishlnsubmul = function(b, c, e) {
                var g,
                  f = b.length + e;
                this._expand(f);
                var h,
                  i = 0;
                for (g = 0; g < b.length; g++) {
                  h = (0 | this.words[g + e]) + i;
                  var j = (0 | b.words[g]) * c;
                  (h -= 67108863 & j),
                    (i = (h >> 26) - ((j / 67108864) | 0)),
                    (this.words[g + e] = 67108863 & h);
                }
                for (; g < this.length - e; g++)
                  (h = (0 | this.words[g + e]) + i),
                    (i = h >> 26),
                    (this.words[g + e] = 67108863 & h);
                if (0 === i) return this.strip();
                for (d(i === -1), i = 0, g = 0; g < this.length; g++)
                  (h = -(0 | this.words[g]) + i),
                    (i = h >> 26),
                    (this.words[g] = 67108863 & h);
                return (this.negative = 1), this.strip();
              }),
              (f.prototype._wordDiv = function(b, c) {
                var d = this.length - b.length,
                  e = this.clone(),
                  g = b,
                  h = 0 | g.words[g.length - 1],
                  i = this._countBits(h);
                (d = 26 - i),
                  0 !== d &&
                    ((g = g.ushln(d)),
                    e.iushln(d),
                    (h = 0 | g.words[g.length - 1]));
                var k,
                  j = e.length - g.length;
                if ('mod' !== c) {
                  (k = new f(null)),
                    (k.length = j + 1),
                    (k.words = new Array(k.length));
                  for (var l = 0; l < k.length; l++) k.words[l] = 0;
                }
                var m = e.clone()._ishlnsubmul(g, 1, j);
                0 === m.negative && ((e = m), k && (k.words[j] = 1));
                for (var n = j - 1; n >= 0; n--) {
                  var o =
                    67108864 * (0 | e.words[g.length + n]) +
                    (0 | e.words[g.length + n - 1]);
                  for (
                    o = Math.min((o / h) | 0, 67108863),
                      e._ishlnsubmul(g, o, n);
                    0 !== e.negative;

                  )
                    o--,
                      (e.negative = 0),
                      e._ishlnsubmul(g, 1, n),
                      e.isZero() || (e.negative ^= 1);
                  k && (k.words[n] = o);
                }
                return (
                  k && k.strip(),
                  e.strip(),
                  'div' !== c && 0 !== d && e.iushrn(d),
                  { div: k || null, mod: e }
                );
              }),
              (f.prototype.divmod = function(b, c, e) {
                if ((d(!b.isZero()), this.isZero()))
                  return { div: new f(0), mod: new f(0) };
                var g, h, i;
                return 0 !== this.negative && 0 === b.negative
                  ? ((i = this.neg().divmod(b, c)),
                    'mod' !== c && (g = i.div.neg()),
                    'div' !== c &&
                      ((h = i.mod.neg()), e && 0 !== h.negative && h.iadd(b)),
                    { div: g, mod: h })
                  : 0 === this.negative && 0 !== b.negative
                  ? ((i = this.divmod(b.neg(), c)),
                    'mod' !== c && (g = i.div.neg()),
                    { div: g, mod: i.mod })
                  : 0 !== (this.negative & b.negative)
                  ? ((i = this.neg().divmod(b.neg(), c)),
                    'div' !== c &&
                      ((h = i.mod.neg()), e && 0 !== h.negative && h.isub(b)),
                    { div: i.div, mod: h })
                  : b.length > this.length || this.cmp(b) < 0
                  ? { div: new f(0), mod: this }
                  : 1 === b.length
                  ? 'div' === c
                    ? { div: this.divn(b.words[0]), mod: null }
                    : 'mod' === c
                    ? { div: null, mod: new f(this.modn(b.words[0])) }
                    : {
                        div: this.divn(b.words[0]),
                        mod: new f(this.modn(b.words[0]))
                      }
                  : this._wordDiv(b, c);
              }),
              (f.prototype.div = function(b) {
                return this.divmod(b, 'div', !1).div;
              }),
              (f.prototype.mod = function(b) {
                return this.divmod(b, 'mod', !1).mod;
              }),
              (f.prototype.umod = function(b) {
                return this.divmod(b, 'mod', !0).mod;
              }),
              (f.prototype.divRound = function(b) {
                var c = this.divmod(b);
                if (c.mod.isZero()) return c.div;
                var d = 0 !== c.div.negative ? c.mod.isub(b) : c.mod,
                  e = b.ushrn(1),
                  f = b.andln(1),
                  g = d.cmp(e);
                return g < 0 || (1 === f && 0 === g)
                  ? c.div
                  : 0 !== c.div.negative
                  ? c.div.isubn(1)
                  : c.div.iaddn(1);
              }),
              (f.prototype.modn = function(b) {
                d(b <= 67108863);
                for (
                  var c = (1 << 26) % b, e = 0, f = this.length - 1;
                  f >= 0;
                  f--
                )
                  e = (c * e + (0 | this.words[f])) % b;
                return e;
              }),
              (f.prototype.idivn = function(b) {
                d(b <= 67108863);
                for (var c = 0, e = this.length - 1; e >= 0; e--) {
                  var f = (0 | this.words[e]) + 67108864 * c;
                  (this.words[e] = (f / b) | 0), (c = f % b);
                }
                return this.strip();
              }),
              (f.prototype.divn = function(b) {
                return this.clone().idivn(b);
              }),
              (f.prototype.egcd = function(b) {
                d(0 === b.negative), d(!b.isZero());
                var c = this,
                  e = b.clone();
                c = 0 !== c.negative ? c.umod(b) : c.clone();
                for (
                  var g = new f(1),
                    h = new f(0),
                    i = new f(0),
                    j = new f(1),
                    k = 0;
                  c.isEven() && e.isEven();

                )
                  c.iushrn(1), e.iushrn(1), ++k;
                for (var l = e.clone(), m = c.clone(); !c.isZero(); ) {
                  for (
                    var n = 0, o = 1;
                    0 === (c.words[0] & o) && n < 26;
                    ++n, o <<= 1
                  );
                  if (n > 0)
                    for (c.iushrn(n); n-- > 0; )
                      (g.isOdd() || h.isOdd()) && (g.iadd(l), h.isub(m)),
                        g.iushrn(1),
                        h.iushrn(1);
                  for (
                    var p = 0, q = 1;
                    0 === (e.words[0] & q) && p < 26;
                    ++p, q <<= 1
                  );
                  if (p > 0)
                    for (e.iushrn(p); p-- > 0; )
                      (i.isOdd() || j.isOdd()) && (i.iadd(l), j.isub(m)),
                        i.iushrn(1),
                        j.iushrn(1);
                  c.cmp(e) >= 0
                    ? (c.isub(e), g.isub(i), h.isub(j))
                    : (e.isub(c), i.isub(g), j.isub(h));
                }
                return { a: i, b: j, gcd: e.iushln(k) };
              }),
              (f.prototype._invmp = function(b) {
                d(0 === b.negative), d(!b.isZero());
                var c = this,
                  e = b.clone();
                c = 0 !== c.negative ? c.umod(b) : c.clone();
                for (
                  var g = new f(1), h = new f(0), i = e.clone();
                  c.cmpn(1) > 0 && e.cmpn(1) > 0;

                ) {
                  for (
                    var j = 0, k = 1;
                    0 === (c.words[0] & k) && j < 26;
                    ++j, k <<= 1
                  );
                  if (j > 0)
                    for (c.iushrn(j); j-- > 0; )
                      g.isOdd() && g.iadd(i), g.iushrn(1);
                  for (
                    var l = 0, m = 1;
                    0 === (e.words[0] & m) && l < 26;
                    ++l, m <<= 1
                  );
                  if (l > 0)
                    for (e.iushrn(l); l-- > 0; )
                      h.isOdd() && h.iadd(i), h.iushrn(1);
                  c.cmp(e) >= 0
                    ? (c.isub(e), g.isub(h))
                    : (e.isub(c), h.isub(g));
                }
                var n;
                return (
                  (n = 0 === c.cmpn(1) ? g : h), n.cmpn(0) < 0 && n.iadd(b), n
                );
              }),
              (f.prototype.gcd = function(b) {
                if (this.isZero()) return b.abs();
                if (b.isZero()) return this.abs();
                var c = this.clone(),
                  d = b.clone();
                (c.negative = 0), (d.negative = 0);
                for (var e = 0; c.isEven() && d.isEven(); e++)
                  c.iushrn(1), d.iushrn(1);
                for (;;) {
                  for (; c.isEven(); ) c.iushrn(1);
                  for (; d.isEven(); ) d.iushrn(1);
                  var f = c.cmp(d);
                  if (f < 0) {
                    var g = c;
                    (c = d), (d = g);
                  } else if (0 === f || 0 === d.cmpn(1)) break;
                  c.isub(d);
                }
                return d.iushln(e);
              }),
              (f.prototype.invm = function(b) {
                return this.egcd(b).a.umod(b);
              }),
              (f.prototype.isEven = function() {
                return 0 === (1 & this.words[0]);
              }),
              (f.prototype.isOdd = function() {
                return 1 === (1 & this.words[0]);
              }),
              (f.prototype.andln = function(b) {
                return this.words[0] & b;
              }),
              (f.prototype.bincn = function(b) {
                d('number' == typeof b);
                var c = b % 26,
                  e = (b - c) / 26,
                  f = 1 << c;
                if (this.length <= e)
                  return this._expand(e + 1), (this.words[e] |= f), this;
                for (var g = f, h = e; 0 !== g && h < this.length; h++) {
                  var i = 0 | this.words[h];
                  (i += g),
                    (g = i >>> 26),
                    (i &= 67108863),
                    (this.words[h] = i);
                }
                return 0 !== g && ((this.words[h] = g), this.length++), this;
              }),
              (f.prototype.isZero = function() {
                return 1 === this.length && 0 === this.words[0];
              }),
              (f.prototype.cmpn = function(b) {
                var c = b < 0;
                if (0 !== this.negative && !c) return -1;
                if (0 === this.negative && c) return 1;
                this.strip();
                var e;
                if (this.length > 1) e = 1;
                else {
                  c && (b = -b), d(b <= 67108863, 'Number is too big');
                  var f = 0 | this.words[0];
                  e = f === b ? 0 : f < b ? -1 : 1;
                }
                return 0 !== this.negative ? 0 | -e : e;
              }),
              (f.prototype.cmp = function(b) {
                if (0 !== this.negative && 0 === b.negative) return -1;
                if (0 === this.negative && 0 !== b.negative) return 1;
                var c = this.ucmp(b);
                return 0 !== this.negative ? 0 | -c : c;
              }),
              (f.prototype.ucmp = function(b) {
                if (this.length > b.length) return 1;
                if (this.length < b.length) return -1;
                for (var c = 0, d = this.length - 1; d >= 0; d--) {
                  var e = 0 | this.words[d],
                    f = 0 | b.words[d];
                  if (e !== f) {
                    e < f ? (c = -1) : e > f && (c = 1);
                    break;
                  }
                }
                return c;
              }),
              (f.prototype.gtn = function(b) {
                return 1 === this.cmpn(b);
              }),
              (f.prototype.gt = function(b) {
                return 1 === this.cmp(b);
              }),
              (f.prototype.gten = function(b) {
                return this.cmpn(b) >= 0;
              }),
              (f.prototype.gte = function(b) {
                return this.cmp(b) >= 0;
              }),
              (f.prototype.ltn = function(b) {
                return this.cmpn(b) === -1;
              }),
              (f.prototype.lt = function(b) {
                return this.cmp(b) === -1;
              }),
              (f.prototype.lten = function(b) {
                return this.cmpn(b) <= 0;
              }),
              (f.prototype.lte = function(b) {
                return this.cmp(b) <= 0;
              }),
              (f.prototype.eqn = function(b) {
                return 0 === this.cmpn(b);
              }),
              (f.prototype.eq = function(b) {
                return 0 === this.cmp(b);
              }),
              (f.red = function(b) {
                return new y(b);
              }),
              (f.prototype.toRed = function(b) {
                return (
                  d(!this.red, 'Already a number in reduction context'),
                  d(0 === this.negative, 'red works only with positives'),
                  b.convertTo(this)._forceRed(b)
                );
              }),
              (f.prototype.fromRed = function() {
                return (
                  d(
                    this.red,
                    'fromRed works only with numbers in reduction context'
                  ),
                  this.red.convertFrom(this)
                );
              }),
              (f.prototype._forceRed = function(b) {
                return (this.red = b), this;
              }),
              (f.prototype.forceRed = function(b) {
                return (
                  d(!this.red, 'Already a number in reduction context'),
                  this._forceRed(b)
                );
              }),
              (f.prototype.redAdd = function(b) {
                return (
                  d(this.red, 'redAdd works only with red numbers'),
                  this.red.add(this, b)
                );
              }),
              (f.prototype.redIAdd = function(b) {
                return (
                  d(this.red, 'redIAdd works only with red numbers'),
                  this.red.iadd(this, b)
                );
              }),
              (f.prototype.redSub = function(b) {
                return (
                  d(this.red, 'redSub works only with red numbers'),
                  this.red.sub(this, b)
                );
              }),
              (f.prototype.redISub = function(b) {
                return (
                  d(this.red, 'redISub works only with red numbers'),
                  this.red.isub(this, b)
                );
              }),
              (f.prototype.redShl = function(b) {
                return (
                  d(this.red, 'redShl works only with red numbers'),
                  this.red.shl(this, b)
                );
              }),
              (f.prototype.redMul = function(b) {
                return (
                  d(this.red, 'redMul works only with red numbers'),
                  this.red._verify2(this, b),
                  this.red.mul(this, b)
                );
              }),
              (f.prototype.redIMul = function(b) {
                return (
                  d(this.red, 'redMul works only with red numbers'),
                  this.red._verify2(this, b),
                  this.red.imul(this, b)
                );
              }),
              (f.prototype.redSqr = function() {
                return (
                  d(this.red, 'redSqr works only with red numbers'),
                  this.red._verify1(this),
                  this.red.sqr(this)
                );
              }),
              (f.prototype.redISqr = function() {
                return (
                  d(this.red, 'redISqr works only with red numbers'),
                  this.red._verify1(this),
                  this.red.isqr(this)
                );
              }),
              (f.prototype.redSqrt = function() {
                return (
                  d(this.red, 'redSqrt works only with red numbers'),
                  this.red._verify1(this),
                  this.red.sqrt(this)
                );
              }),
              (f.prototype.redInvm = function() {
                return (
                  d(this.red, 'redInvm works only with red numbers'),
                  this.red._verify1(this),
                  this.red.invm(this)
                );
              }),
              (f.prototype.redNeg = function() {
                return (
                  d(this.red, 'redNeg works only with red numbers'),
                  this.red._verify1(this),
                  this.red.neg(this)
                );
              }),
              (f.prototype.redPow = function(b) {
                return (
                  d(this.red && !b.red, 'redPow(normalNum)'),
                  this.red._verify1(this),
                  this.red.pow(this, b)
                );
              });
            var s = { k256: null, p224: null, p192: null, p25519: null };
            (t.prototype._tmp = function() {
              var b = new f(null);
              return (b.words = new Array(Math.ceil(this.n / 13))), b;
            }),
              (t.prototype.ireduce = function(b) {
                var d,
                  c = b;
                do
                  this.split(c, this.tmp),
                    (c = this.imulK(c)),
                    (c = c.iadd(this.tmp)),
                    (d = c.bitLength());
                while (d > this.n);
                var e = d < this.n ? -1 : c.ucmp(this.p);
                return (
                  0 === e
                    ? ((c.words[0] = 0), (c.length = 1))
                    : e > 0
                    ? c.isub(this.p)
                    : c.strip(),
                  c
                );
              }),
              (t.prototype.split = function(b, c) {
                b.iushrn(this.n, 0, c);
              }),
              (t.prototype.imulK = function(b) {
                return b.imul(this.k);
              }),
              e(u, t),
              (u.prototype.split = function(b, c) {
                for (
                  var d = 4194303, e = Math.min(b.length, 9), f = 0;
                  f < e;
                  f++
                )
                  c.words[f] = b.words[f];
                if (((c.length = e), b.length <= 9))
                  return (b.words[0] = 0), void (b.length = 1);
                var g = b.words[9];
                for (c.words[c.length++] = g & d, f = 10; f < b.length; f++) {
                  var h = 0 | b.words[f];
                  (b.words[f - 10] = ((h & d) << 4) | (g >>> 22)), (g = h);
                }
                (g >>>= 22),
                  (b.words[f - 10] = g),
                  0 === g && b.length > 10 ? (b.length -= 10) : (b.length -= 9);
              }),
              (u.prototype.imulK = function(b) {
                (b.words[b.length] = 0),
                  (b.words[b.length + 1] = 0),
                  (b.length += 2);
                for (var c = 0, d = 0; d < b.length; d++) {
                  var e = 0 | b.words[d];
                  (c += 977 * e),
                    (b.words[d] = 67108863 & c),
                    (c = 64 * e + ((c / 67108864) | 0));
                }
                return (
                  0 === b.words[b.length - 1] &&
                    (b.length--, 0 === b.words[b.length - 1] && b.length--),
                  b
                );
              }),
              e(v, t),
              e(w, t),
              e(x, t),
              (x.prototype.imulK = function(b) {
                for (var c = 0, d = 0; d < b.length; d++) {
                  var e = 19 * (0 | b.words[d]) + c,
                    f = 67108863 & e;
                  (e >>>= 26), (b.words[d] = f), (c = e);
                }
                return 0 !== c && (b.words[b.length++] = c), b;
              }),
              (f._prime = function a(b) {
                if (s[b]) return s[b];
                var a;
                if ('k256' === b) a = new u();
                else if ('p224' === b) a = new v();
                else if ('p192' === b) a = new w();
                else {
                  if ('p25519' !== b) throw new Error('Unknown prime ' + b);
                  a = new x();
                }
                return (s[b] = a), a;
              }),
              (y.prototype._verify1 = function(b) {
                d(0 === b.negative, 'red works only with positives'),
                  d(b.red, 'red works only with red numbers');
              }),
              (y.prototype._verify2 = function(b, c) {
                d(
                  0 === (b.negative | c.negative),
                  'red works only with positives'
                ),
                  d(
                    b.red && b.red === c.red,
                    'red works only with red numbers'
                  );
              }),
              (y.prototype.imod = function(b) {
                return this.prime
                  ? this.prime.ireduce(b)._forceRed(this)
                  : b.umod(this.m)._forceRed(this);
              }),
              (y.prototype.neg = function(b) {
                return b.isZero() ? b.clone() : this.m.sub(b)._forceRed(this);
              }),
              (y.prototype.add = function(b, c) {
                this._verify2(b, c);
                var d = b.add(c);
                return d.cmp(this.m) >= 0 && d.isub(this.m), d._forceRed(this);
              }),
              (y.prototype.iadd = function(b, c) {
                this._verify2(b, c);
                var d = b.iadd(c);
                return d.cmp(this.m) >= 0 && d.isub(this.m), d;
              }),
              (y.prototype.sub = function(b, c) {
                this._verify2(b, c);
                var d = b.sub(c);
                return d.cmpn(0) < 0 && d.iadd(this.m), d._forceRed(this);
              }),
              (y.prototype.isub = function(b, c) {
                this._verify2(b, c);
                var d = b.isub(c);
                return d.cmpn(0) < 0 && d.iadd(this.m), d;
              }),
              (y.prototype.shl = function(b, c) {
                return this._verify1(b), this.imod(b.ushln(c));
              }),
              (y.prototype.imul = function(b, c) {
                return this._verify2(b, c), this.imod(b.imul(c));
              }),
              (y.prototype.mul = function(b, c) {
                return this._verify2(b, c), this.imod(b.mul(c));
              }),
              (y.prototype.isqr = function(b) {
                return this.imul(b, b.clone());
              }),
              (y.prototype.sqr = function(b) {
                return this.mul(b, b);
              }),
              (y.prototype.sqrt = function(b) {
                if (b.isZero()) return b.clone();
                var c = this.m.andln(3);
                if ((d(c % 2 === 1), 3 === c)) {
                  var e = this.m.add(new f(1)).iushrn(2);
                  return this.pow(b, e);
                }
                for (
                  var g = this.m.subn(1), h = 0;
                  !g.isZero() && 0 === g.andln(1);

                )
                  h++, g.iushrn(1);
                d(!g.isZero());
                var i = new f(1).toRed(this),
                  j = i.redNeg(),
                  k = this.m.subn(1).iushrn(1),
                  l = this.m.bitLength();
                for (
                  l = new f(2 * l * l).toRed(this);
                  0 !== this.pow(l, k).cmp(j);

                )
                  l.redIAdd(j);
                for (
                  var m = this.pow(l, g),
                    n = this.pow(b, g.addn(1).iushrn(1)),
                    o = this.pow(b, g),
                    p = h;
                  0 !== o.cmp(i);

                ) {
                  for (var q = o, r = 0; 0 !== q.cmp(i); r++) q = q.redSqr();
                  d(r < p);
                  var s = this.pow(m, new f(1).iushln(p - r - 1));
                  (n = n.redMul(s)),
                    (m = s.redSqr()),
                    (o = o.redMul(m)),
                    (p = r);
                }
                return n;
              }),
              (y.prototype.invm = function(b) {
                var c = b._invmp(this.m);
                return 0 !== c.negative
                  ? ((c.negative = 0), this.imod(c).redNeg())
                  : this.imod(c);
              }),
              (y.prototype.pow = function(b, c) {
                if (c.isZero()) return new f(1);
                if (0 === c.cmpn(1)) return b.clone();
                var d = 4,
                  e = new Array(1 << d);
                (e[0] = new f(1).toRed(this)), (e[1] = b);
                for (var g = 2; g < e.length; g++) e[g] = this.mul(e[g - 1], b);
                var h = e[0],
                  i = 0,
                  j = 0,
                  k = c.bitLength() % 26;
                for (0 === k && (k = 26), g = c.length - 1; g >= 0; g--) {
                  for (var l = c.words[g], m = k - 1; m >= 0; m--) {
                    var n = (l >> m) & 1;
                    h !== e[0] && (h = this.sqr(h)),
                      0 !== n || 0 !== i
                        ? ((i <<= 1),
                          (i |= n),
                          j++,
                          (j === d || (0 === g && 0 === m)) &&
                            ((h = this.mul(h, e[i])), (j = 0), (i = 0)))
                        : (j = 0);
                  }
                  k = 26;
                }
                return h;
              }),
              (y.prototype.convertTo = function(b) {
                var c = b.umod(this.m);
                return c === b ? c.clone() : c;
              }),
              (y.prototype.convertFrom = function(b) {
                var c = b.clone();
                return (c.red = null), c;
              }),
              (f.mont = function(b) {
                return new z(b);
              }),
              e(z, y),
              (z.prototype.convertTo = function(b) {
                return this.imod(b.ushln(this.shift));
              }),
              (z.prototype.convertFrom = function(b) {
                var c = this.imod(b.mul(this.rinv));
                return (c.red = null), c;
              }),
              (z.prototype.imul = function(b, c) {
                if (b.isZero() || c.isZero())
                  return (b.words[0] = 0), (b.length = 1), b;
                var d = b.imul(c),
                  e = d
                    .maskn(this.shift)
                    .mul(this.minv)
                    .imaskn(this.shift)
                    .mul(this.m),
                  f = d.isub(e).iushrn(this.shift),
                  g = f;
                return (
                  f.cmp(this.m) >= 0
                    ? (g = f.isub(this.m))
                    : f.cmpn(0) < 0 && (g = f.iadd(this.m)),
                  g._forceRed(this)
                );
              }),
              (z.prototype.mul = function(b, c) {
                if (b.isZero() || c.isZero()) return new f(0)._forceRed(this);
                var d = b.mul(c),
                  e = d
                    .maskn(this.shift)
                    .mul(this.minv)
                    .imaskn(this.shift)
                    .mul(this.m),
                  g = d.isub(e).iushrn(this.shift),
                  h = g;
                return (
                  g.cmp(this.m) >= 0
                    ? (h = g.isub(this.m))
                    : g.cmpn(0) < 0 && (h = g.iadd(this.m)),
                  h._forceRed(this)
                );
              }),
              (z.prototype.invm = function(b) {
                var c = this.imod(b._invmp(this.m).mul(this.r2));
                return c._forceRed(this);
              });
          })('undefined' == typeof b || b, this);
        },
        {}
      ],
      2: [
        function(a, b, c) {
          'use strict';
          var d = c;
          (d.version = a('../package.json').version),
            (d.utils = a('./elliptic/utils')),
            (d.rand = a('brorand')),
            (d.hmacDRBG = a('./elliptic/hmac-drbg')),
            (d.curve = a('./elliptic/curve')),
            (d.curves = a('./elliptic/curves')),
            (d.ec = a('./elliptic/ec')),
            (d.eddsa = a('./elliptic/eddsa'));
        },
        {
          '../package.json': 26,
          './elliptic/curve': 5,
          './elliptic/curves': 8,
          './elliptic/ec': 9,
          './elliptic/eddsa': 12,
          './elliptic/hmac-drbg': 15,
          './elliptic/utils': 17,
          brorand: 18
        }
      ],
      3: [
        function(a, b, c) {
          'use strict';
          function j(a, b) {
            (this.type = a),
              (this.p = new d(b.p, 16)),
              (this.red = b.prime ? d.red(b.prime) : d.mont(this.p)),
              (this.zero = new d(0).toRed(this.red)),
              (this.one = new d(1).toRed(this.red)),
              (this.two = new d(2).toRed(this.red)),
              (this.n = b.n && new d(b.n, 16)),
              (this.g = b.g && this.pointFromJSON(b.g, b.gRed)),
              (this._wnafT1 = new Array(4)),
              (this._wnafT2 = new Array(4)),
              (this._wnafT3 = new Array(4)),
              (this._wnafT4 = new Array(4));
            var c = this.n && this.p.div(this.n);
            !c || c.cmpn(100) > 0
              ? (this.redN = null)
              : ((this._maxwellTrick = !0),
                (this.redN = this.n.toRed(this.red)));
          }
          function k(a, b) {
            (this.curve = a), (this.type = b), (this.precomputed = null);
          }
          var d = a('bn.js'),
            e = a('../../elliptic'),
            f = e.utils,
            g = f.getNAF,
            h = f.getJSF,
            i = f.assert;
          (b.exports = j),
            (j.prototype.point = function() {
              throw new Error('Not implemented');
            }),
            (j.prototype.validate = function() {
              throw new Error('Not implemented');
            }),
            (j.prototype._fixedNafMul = function(b, c) {
              i(b.precomputed);
              var d = b._getDoubles(),
                e = g(c, 1),
                f = (1 << (d.step + 1)) - (d.step % 2 === 0 ? 2 : 1);
              f /= 3;
              for (var h = [], j = 0; j < e.length; j += d.step) {
                for (var k = 0, c = j + d.step - 1; c >= j; c--)
                  k = (k << 1) + e[c];
                h.push(k);
              }
              for (
                var l = this.jpoint(null, null, null),
                  m = this.jpoint(null, null, null),
                  n = f;
                n > 0;
                n--
              ) {
                for (var j = 0; j < h.length; j++) {
                  var k = h[j];
                  k === n
                    ? (m = m.mixedAdd(d.points[j]))
                    : k === -n && (m = m.mixedAdd(d.points[j].neg()));
                }
                l = l.add(m);
              }
              return l.toP();
            }),
            (j.prototype._wnafMul = function(b, c) {
              var d = 4,
                e = b._getNAFPoints(d);
              d = e.wnd;
              for (
                var f = e.points,
                  h = g(c, d),
                  j = this.jpoint(null, null, null),
                  k = h.length - 1;
                k >= 0;
                k--
              ) {
                for (var c = 0; k >= 0 && 0 === h[k]; k--) c++;
                if ((k >= 0 && c++, (j = j.dblp(c)), k < 0)) break;
                var l = h[k];
                i(0 !== l),
                  (j =
                    'affine' === b.type
                      ? l > 0
                        ? j.mixedAdd(f[(l - 1) >> 1])
                        : j.mixedAdd(f[(-l - 1) >> 1].neg())
                      : l > 0
                      ? j.add(f[(l - 1) >> 1])
                      : j.add(f[(-l - 1) >> 1].neg()));
              }
              return 'affine' === b.type ? j.toP() : j;
            }),
            (j.prototype._wnafMulAdd = function(b, c, d, e, f) {
              for (
                var i = this._wnafT1,
                  j = this._wnafT2,
                  k = this._wnafT3,
                  l = 0,
                  m = 0;
                m < e;
                m++
              ) {
                var n = c[m],
                  o = n._getNAFPoints(b);
                (i[m] = o.wnd), (j[m] = o.points);
              }
              for (var m = e - 1; m >= 1; m -= 2) {
                var p = m - 1,
                  q = m;
                if (1 === i[p] && 1 === i[q]) {
                  var r = [c[p], null, null, c[q]];
                  0 === c[p].y.cmp(c[q].y)
                    ? ((r[1] = c[p].add(c[q])),
                      (r[2] = c[p].toJ().mixedAdd(c[q].neg())))
                    : 0 === c[p].y.cmp(c[q].y.redNeg())
                    ? ((r[1] = c[p].toJ().mixedAdd(c[q])),
                      (r[2] = c[p].add(c[q].neg())))
                    : ((r[1] = c[p].toJ().mixedAdd(c[q])),
                      (r[2] = c[p].toJ().mixedAdd(c[q].neg())));
                  var s = [-3, -1, -5, -7, 0, 7, 5, 1, 3],
                    t = h(d[p], d[q]);
                  (l = Math.max(t[0].length, l)),
                    (k[p] = new Array(l)),
                    (k[q] = new Array(l));
                  for (var u = 0; u < l; u++) {
                    var v = 0 | t[0][u],
                      w = 0 | t[1][u];
                    (k[p][u] = s[3 * (v + 1) + (w + 1)]),
                      (k[q][u] = 0),
                      (j[p] = r);
                  }
                } else
                  (k[p] = g(d[p], i[p])),
                    (k[q] = g(d[q], i[q])),
                    (l = Math.max(k[p].length, l)),
                    (l = Math.max(k[q].length, l));
              }
              for (
                var x = this.jpoint(null, null, null), y = this._wnafT4, m = l;
                m >= 0;
                m--
              ) {
                for (var z = 0; m >= 0; ) {
                  for (var A = !0, u = 0; u < e; u++)
                    (y[u] = 0 | k[u][m]), 0 !== y[u] && (A = !1);
                  if (!A) break;
                  z++, m--;
                }
                if ((m >= 0 && z++, (x = x.dblp(z)), m < 0)) break;
                for (var u = 0; u < e; u++) {
                  var n,
                    B = y[u];
                  0 !== B &&
                    (B > 0
                      ? (n = j[u][(B - 1) >> 1])
                      : B < 0 && (n = j[u][(-B - 1) >> 1].neg()),
                    (x = 'affine' === n.type ? x.mixedAdd(n) : x.add(n)));
                }
              }
              for (var m = 0; m < e; m++) j[m] = null;
              return f ? x : x.toP();
            }),
            (j.BasePoint = k),
            (k.prototype.eq = function() {
              throw new Error('Not implemented');
            }),
            (k.prototype.validate = function() {
              return this.curve.validate(this);
            }),
            (j.prototype.decodePoint = function(b, c) {
              b = f.toArray(b, c);
              var d = this.p.byteLength();
              if (
                (4 === b[0] || 6 === b[0] || 7 === b[0]) &&
                b.length - 1 === 2 * d
              ) {
                6 === b[0]
                  ? i(b[b.length - 1] % 2 === 0)
                  : 7 === b[0] && i(b[b.length - 1] % 2 === 1);
                var e = this.point(
                  b.slice(1, 1 + d),
                  b.slice(1 + d, 1 + 2 * d)
                );
                return e;
              }
              if ((2 === b[0] || 3 === b[0]) && b.length - 1 === d)
                return this.pointFromX(b.slice(1, 1 + d), 3 === b[0]);
              throw new Error('Unknown point format');
            }),
            (k.prototype.encodeCompressed = function(b) {
              return this.encode(b, !0);
            }),
            (k.prototype._encode = function(b) {
              var c = this.curve.p.byteLength(),
                d = this.getX().toArray('be', c);
              return b
                ? [this.getY().isEven() ? 2 : 3].concat(d)
                : [4].concat(d, this.getY().toArray('be', c));
            }),
            (k.prototype.encode = function(b, c) {
              return f.encode(this._encode(c), b);
            }),
            (k.prototype.precompute = function(b) {
              if (this.precomputed) return this;
              var c = { doubles: null, naf: null, beta: null };
              return (
                (c.naf = this._getNAFPoints(8)),
                (c.doubles = this._getDoubles(4, b)),
                (c.beta = this._getBeta()),
                (this.precomputed = c),
                this
              );
            }),
            (k.prototype._hasDoubles = function(b) {
              if (!this.precomputed) return !1;
              var c = this.precomputed.doubles;
              return (
                !!c &&
                c.points.length >= Math.ceil((b.bitLength() + 1) / c.step)
              );
            }),
            (k.prototype._getDoubles = function(b, c) {
              if (this.precomputed && this.precomputed.doubles)
                return this.precomputed.doubles;
              for (var d = [this], e = this, f = 0; f < c; f += b) {
                for (var g = 0; g < b; g++) e = e.dbl();
                d.push(e);
              }
              return { step: b, points: d };
            }),
            (k.prototype._getNAFPoints = function(b) {
              if (this.precomputed && this.precomputed.naf)
                return this.precomputed.naf;
              for (
                var c = [this],
                  d = (1 << b) - 1,
                  e = 1 === d ? null : this.dbl(),
                  f = 1;
                f < d;
                f++
              )
                c[f] = c[f - 1].add(e);
              return { wnd: b, points: c };
            }),
            (k.prototype._getBeta = function() {
              return null;
            }),
            (k.prototype.dblp = function(b) {
              for (var c = this, d = 0; d < b; d++) c = c.dbl();
              return c;
            });
        },
        { '../../elliptic': 2, 'bn.js': 1 }
      ],
      4: [
        function(a, b, c) {
          'use strict';
          function j(a) {
            (this.twisted = 1 !== (0 | a.a)),
              (this.mOneA = this.twisted && (0 | a.a) === -1),
              (this.extended = this.mOneA),
              h.call(this, 'edwards', a),
              (this.a = new f(a.a, 16).umod(this.red.m)),
              (this.a = this.a.toRed(this.red)),
              (this.c = new f(a.c, 16).toRed(this.red)),
              (this.c2 = this.c.redSqr()),
              (this.d = new f(a.d, 16).toRed(this.red)),
              (this.dd = this.d.redAdd(this.d)),
              i(!this.twisted || 0 === this.c.fromRed().cmpn(1)),
              (this.oneC = 1 === (0 | a.c));
          }
          function k(a, b, c, d, e) {
            h.BasePoint.call(this, a, 'projective'),
              null === b && null === c && null === d
                ? ((this.x = this.curve.zero),
                  (this.y = this.curve.one),
                  (this.z = this.curve.one),
                  (this.t = this.curve.zero),
                  (this.zOne = !0))
                : ((this.x = new f(b, 16)),
                  (this.y = new f(c, 16)),
                  (this.z = d ? new f(d, 16) : this.curve.one),
                  (this.t = e && new f(e, 16)),
                  this.x.red || (this.x = this.x.toRed(this.curve.red)),
                  this.y.red || (this.y = this.y.toRed(this.curve.red)),
                  this.z.red || (this.z = this.z.toRed(this.curve.red)),
                  this.t &&
                    !this.t.red &&
                    (this.t = this.t.toRed(this.curve.red)),
                  (this.zOne = this.z === this.curve.one),
                  this.curve.extended &&
                    !this.t &&
                    ((this.t = this.x.redMul(this.y)),
                    this.zOne || (this.t = this.t.redMul(this.z.redInvm()))));
          }
          var d = a('../curve'),
            e = a('../../elliptic'),
            f = a('bn.js'),
            g = a('inherits'),
            h = d.base,
            i = e.utils.assert;
          g(j, h),
            (b.exports = j),
            (j.prototype._mulA = function(b) {
              return this.mOneA ? b.redNeg() : this.a.redMul(b);
            }),
            (j.prototype._mulC = function(b) {
              return this.oneC ? b : this.c.redMul(b);
            }),
            (j.prototype.jpoint = function(b, c, d, e) {
              return this.point(b, c, d, e);
            }),
            (j.prototype.pointFromX = function(b, c) {
              (b = new f(b, 16)), b.red || (b = b.toRed(this.red));
              var d = b.redSqr(),
                e = this.c2.redSub(this.a.redMul(d)),
                g = this.one.redSub(this.c2.redMul(this.d).redMul(d)),
                h = e.redMul(g.redInvm()),
                i = h.redSqrt();
              if (
                0 !==
                i
                  .redSqr()
                  .redSub(h)
                  .cmp(this.zero)
              )
                throw new Error('invalid point');
              var j = i.fromRed().isOdd();
              return (
                ((c && !j) || (!c && j)) && (i = i.redNeg()), this.point(b, i)
              );
            }),
            (j.prototype.pointFromY = function(b, c) {
              (b = new f(b, 16)), b.red || (b = b.toRed(this.red));
              var d = b.redSqr(),
                e = d.redSub(this.one),
                g = d.redMul(this.d).redAdd(this.one),
                h = e.redMul(g.redInvm());
              if (0 === h.cmp(this.zero)) {
                if (c) throw new Error('invalid point');
                return this.point(this.zero, b);
              }
              var i = h.redSqrt();
              if (
                0 !==
                i
                  .redSqr()
                  .redSub(h)
                  .cmp(this.zero)
              )
                throw new Error('invalid point');
              return i.isOdd() !== c && (i = i.redNeg()), this.point(i, b);
            }),
            (j.prototype.validate = function(b) {
              if (b.isInfinity()) return !0;
              b.normalize();
              var c = b.x.redSqr(),
                d = b.y.redSqr(),
                e = c.redMul(this.a).redAdd(d),
                f = this.c2.redMul(this.one.redAdd(this.d.redMul(c).redMul(d)));
              return 0 === e.cmp(f);
            }),
            g(k, h.BasePoint),
            (j.prototype.pointFromJSON = function(b) {
              return k.fromJSON(this, b);
            }),
            (j.prototype.point = function(b, c, d, e) {
              return new k(this, b, c, d, e);
            }),
            (k.fromJSON = function(b, c) {
              return new k(b, c[0], c[1], c[2]);
            }),
            (k.prototype.inspect = function() {
              return this.isInfinity()
                ? '<EC Point Infinity>'
                : '<EC Point x: ' +
                    this.x.fromRed().toString(16, 2) +
                    ' y: ' +
                    this.y.fromRed().toString(16, 2) +
                    ' z: ' +
                    this.z.fromRed().toString(16, 2) +
                    '>';
            }),
            (k.prototype.isInfinity = function() {
              return 0 === this.x.cmpn(0) && 0 === this.y.cmp(this.z);
            }),
            (k.prototype._extDbl = function() {
              var b = this.x.redSqr(),
                c = this.y.redSqr(),
                d = this.z.redSqr();
              d = d.redIAdd(d);
              var e = this.curve._mulA(b),
                f = this.x
                  .redAdd(this.y)
                  .redSqr()
                  .redISub(b)
                  .redISub(c),
                g = e.redAdd(c),
                h = g.redSub(d),
                i = e.redSub(c),
                j = f.redMul(h),
                k = g.redMul(i),
                l = f.redMul(i),
                m = h.redMul(g);
              return this.curve.point(j, k, m, l);
            }),
            (k.prototype._projDbl = function() {
              var e,
                f,
                g,
                b = this.x.redAdd(this.y).redSqr(),
                c = this.x.redSqr(),
                d = this.y.redSqr();
              if (this.curve.twisted) {
                var h = this.curve._mulA(c),
                  i = h.redAdd(d);
                if (this.zOne)
                  (e = b
                    .redSub(c)
                    .redSub(d)
                    .redMul(i.redSub(this.curve.two))),
                    (f = i.redMul(h.redSub(d))),
                    (g = i
                      .redSqr()
                      .redSub(i)
                      .redSub(i));
                else {
                  var j = this.z.redSqr(),
                    k = i.redSub(j).redISub(j);
                  (e = b
                    .redSub(c)
                    .redISub(d)
                    .redMul(k)),
                    (f = i.redMul(h.redSub(d))),
                    (g = i.redMul(k));
                }
              } else {
                var h = c.redAdd(d),
                  j = this.curve._mulC(this.c.redMul(this.z)).redSqr(),
                  k = h.redSub(j).redSub(j);
                (e = this.curve._mulC(b.redISub(h)).redMul(k)),
                  (f = this.curve._mulC(h).redMul(c.redISub(d))),
                  (g = h.redMul(k));
              }
              return this.curve.point(e, f, g);
            }),
            (k.prototype.dbl = function() {
              return this.isInfinity()
                ? this
                : this.curve.extended
                ? this._extDbl()
                : this._projDbl();
            }),
            (k.prototype._extAdd = function(b) {
              var c = this.y.redSub(this.x).redMul(b.y.redSub(b.x)),
                d = this.y.redAdd(this.x).redMul(b.y.redAdd(b.x)),
                e = this.t.redMul(this.curve.dd).redMul(b.t),
                f = this.z.redMul(b.z.redAdd(b.z)),
                g = d.redSub(c),
                h = f.redSub(e),
                i = f.redAdd(e),
                j = d.redAdd(c),
                k = g.redMul(h),
                l = i.redMul(j),
                m = g.redMul(j),
                n = h.redMul(i);
              return this.curve.point(k, l, n, m);
            }),
            (k.prototype._projAdd = function(b) {
              var l,
                m,
                c = this.z.redMul(b.z),
                d = c.redSqr(),
                e = this.x.redMul(b.x),
                f = this.y.redMul(b.y),
                g = this.curve.d.redMul(e).redMul(f),
                h = d.redSub(g),
                i = d.redAdd(g),
                j = this.x
                  .redAdd(this.y)
                  .redMul(b.x.redAdd(b.y))
                  .redISub(e)
                  .redISub(f),
                k = c.redMul(h).redMul(j);
              return (
                this.curve.twisted
                  ? ((l = c.redMul(i).redMul(f.redSub(this.curve._mulA(e)))),
                    (m = h.redMul(i)))
                  : ((l = c.redMul(i).redMul(f.redSub(e))),
                    (m = this.curve._mulC(h).redMul(i))),
                this.curve.point(k, l, m)
              );
            }),
            (k.prototype.add = function(b) {
              return this.isInfinity()
                ? b
                : b.isInfinity()
                ? this
                : this.curve.extended
                ? this._extAdd(b)
                : this._projAdd(b);
            }),
            (k.prototype.mul = function(b) {
              return this._hasDoubles(b)
                ? this.curve._fixedNafMul(this, b)
                : this.curve._wnafMul(this, b);
            }),
            (k.prototype.mulAdd = function(b, c, d) {
              return this.curve._wnafMulAdd(1, [this, c], [b, d], 2, !1);
            }),
            (k.prototype.jmulAdd = function(b, c, d) {
              return this.curve._wnafMulAdd(1, [this, c], [b, d], 2, !0);
            }),
            (k.prototype.normalize = function() {
              if (this.zOne) return this;
              var b = this.z.redInvm();
              return (
                (this.x = this.x.redMul(b)),
                (this.y = this.y.redMul(b)),
                this.t && (this.t = this.t.redMul(b)),
                (this.z = this.curve.one),
                (this.zOne = !0),
                this
              );
            }),
            (k.prototype.neg = function() {
              return this.curve.point(
                this.x.redNeg(),
                this.y,
                this.z,
                this.t && this.t.redNeg()
              );
            }),
            (k.prototype.getX = function() {
              return this.normalize(), this.x.fromRed();
            }),
            (k.prototype.getY = function() {
              return this.normalize(), this.y.fromRed();
            }),
            (k.prototype.eq = function(b) {
              return (
                this === b ||
                (0 === this.getX().cmp(b.getX()) &&
                  0 === this.getY().cmp(b.getY()))
              );
            }),
            (k.prototype.eqXToP = function(b) {
              var c = b.toRed(this.curve.red).redMul(this.z);
              if (0 === this.x.cmp(c)) return !0;
              for (var d = b.clone(), e = this.curve.redN.redMul(this.z); ; ) {
                if ((d.iadd(this.curve.n), d.cmp(this.curve.p) >= 0)) return !1;
                if ((c.redIAdd(e), 0 === this.x.cmp(c))) return !0;
              }
              return !1;
            }),
            (k.prototype.toP = k.prototype.normalize),
            (k.prototype.mixedAdd = k.prototype.add);
        },
        { '../../elliptic': 2, '../curve': 5, 'bn.js': 1, inherits: 25 }
      ],
      5: [
        function(a, b, c) {
          'use strict';
          var d = c;
          (d.base = a('./base')),
            (d.short = a('./short')),
            (d.mont = a('./mont')),
            (d.edwards = a('./edwards'));
        },
        { './base': 3, './edwards': 4, './mont': 6, './short': 7 }
      ],
      6: [
        function(a, b, c) {
          'use strict';
          function j(a) {
            g.call(this, 'mont', a),
              (this.a = new e(a.a, 16).toRed(this.red)),
              (this.b = new e(a.b, 16).toRed(this.red)),
              (this.i4 = new e(4).toRed(this.red).redInvm()),
              (this.two = new e(2).toRed(this.red)),
              (this.a24 = this.i4.redMul(this.a.redAdd(this.two)));
          }
          function k(a, b, c) {
            g.BasePoint.call(this, a, 'projective'),
              null === b && null === c
                ? ((this.x = this.curve.one), (this.z = this.curve.zero))
                : ((this.x = new e(b, 16)),
                  (this.z = new e(c, 16)),
                  this.x.red || (this.x = this.x.toRed(this.curve.red)),
                  this.z.red || (this.z = this.z.toRed(this.curve.red)));
          }
          var d = a('../curve'),
            e = a('bn.js'),
            f = a('inherits'),
            g = d.base,
            h = a('../../elliptic'),
            i = h.utils;
          f(j, g),
            (b.exports = j),
            (j.prototype.validate = function(b) {
              var c = b.normalize().x,
                d = c.redSqr(),
                e = d
                  .redMul(c)
                  .redAdd(d.redMul(this.a))
                  .redAdd(c),
                f = e.redSqrt();
              return 0 === f.redSqr().cmp(e);
            }),
            f(k, g.BasePoint),
            (j.prototype.decodePoint = function(b, c) {
              return this.point(i.toArray(b, c), 1);
            }),
            (j.prototype.point = function(b, c) {
              return new k(this, b, c);
            }),
            (j.prototype.pointFromJSON = function(b) {
              return k.fromJSON(this, b);
            }),
            (k.prototype.precompute = function() {}),
            (k.prototype._encode = function() {
              return this.getX().toArray('be', this.curve.p.byteLength());
            }),
            (k.fromJSON = function(b, c) {
              return new k(b, c[0], c[1] || b.one);
            }),
            (k.prototype.inspect = function() {
              return this.isInfinity()
                ? '<EC Point Infinity>'
                : '<EC Point x: ' +
                    this.x.fromRed().toString(16, 2) +
                    ' z: ' +
                    this.z.fromRed().toString(16, 2) +
                    '>';
            }),
            (k.prototype.isInfinity = function() {
              return 0 === this.z.cmpn(0);
            }),
            (k.prototype.dbl = function() {
              var b = this.x.redAdd(this.z),
                c = b.redSqr(),
                d = this.x.redSub(this.z),
                e = d.redSqr(),
                f = c.redSub(e),
                g = c.redMul(e),
                h = f.redMul(e.redAdd(this.curve.a24.redMul(f)));
              return this.curve.point(g, h);
            }),
            (k.prototype.add = function() {
              throw new Error('Not supported on Montgomery curve');
            }),
            (k.prototype.diffAdd = function(b, c) {
              var d = this.x.redAdd(this.z),
                e = this.x.redSub(this.z),
                f = b.x.redAdd(b.z),
                g = b.x.redSub(b.z),
                h = g.redMul(d),
                i = f.redMul(e),
                j = c.z.redMul(h.redAdd(i).redSqr()),
                k = c.x.redMul(h.redISub(i).redSqr());
              return this.curve.point(j, k);
            }),
            (k.prototype.mul = function(b) {
              for (
                var c = b.clone(),
                  d = this,
                  e = this.curve.point(null, null),
                  f = this,
                  g = [];
                0 !== c.cmpn(0);
                c.iushrn(1)
              )
                g.push(c.andln(1));
              for (var h = g.length - 1; h >= 0; h--)
                0 === g[h]
                  ? ((d = d.diffAdd(e, f)), (e = e.dbl()))
                  : ((e = d.diffAdd(e, f)), (d = d.dbl()));
              return e;
            }),
            (k.prototype.mulAdd = function() {
              throw new Error('Not supported on Montgomery curve');
            }),
            (k.prototype.jumlAdd = function() {
              throw new Error('Not supported on Montgomery curve');
            }),
            (k.prototype.eq = function(b) {
              return 0 === this.getX().cmp(b.getX());
            }),
            (k.prototype.normalize = function() {
              return (
                (this.x = this.x.redMul(this.z.redInvm())),
                (this.z = this.curve.one),
                this
              );
            }),
            (k.prototype.getX = function() {
              return this.normalize(), this.x.fromRed();
            });
        },
        { '../../elliptic': 2, '../curve': 5, 'bn.js': 1, inherits: 25 }
      ],
      7: [
        function(a, b, c) {
          'use strict';
          function j(a) {
            h.call(this, 'short', a),
              (this.a = new f(a.a, 16).toRed(this.red)),
              (this.b = new f(a.b, 16).toRed(this.red)),
              (this.tinv = this.two.redInvm()),
              (this.zeroA = 0 === this.a.fromRed().cmpn(0)),
              (this.threeA =
                0 ===
                this.a
                  .fromRed()
                  .sub(this.p)
                  .cmpn(-3)),
              (this.endo = this._getEndomorphism(a)),
              (this._endoWnafT1 = new Array(4)),
              (this._endoWnafT2 = new Array(4));
          }
          function k(a, b, c, d) {
            h.BasePoint.call(this, a, 'affine'),
              null === b && null === c
                ? ((this.x = null), (this.y = null), (this.inf = !0))
                : ((this.x = new f(b, 16)),
                  (this.y = new f(c, 16)),
                  d &&
                    (this.x.forceRed(this.curve.red),
                    this.y.forceRed(this.curve.red)),
                  this.x.red || (this.x = this.x.toRed(this.curve.red)),
                  this.y.red || (this.y = this.y.toRed(this.curve.red)),
                  (this.inf = !1));
          }
          function l(a, b, c, d) {
            h.BasePoint.call(this, a, 'jacobian'),
              null === b && null === c && null === d
                ? ((this.x = this.curve.one),
                  (this.y = this.curve.one),
                  (this.z = new f(0)))
                : ((this.x = new f(b, 16)),
                  (this.y = new f(c, 16)),
                  (this.z = new f(d, 16))),
              this.x.red || (this.x = this.x.toRed(this.curve.red)),
              this.y.red || (this.y = this.y.toRed(this.curve.red)),
              this.z.red || (this.z = this.z.toRed(this.curve.red)),
              (this.zOne = this.z === this.curve.one);
          }
          var d = a('../curve'),
            e = a('../../elliptic'),
            f = a('bn.js'),
            g = a('inherits'),
            h = d.base,
            i = e.utils.assert;
          g(j, h),
            (b.exports = j),
            (j.prototype._getEndomorphism = function(b) {
              if (this.zeroA && this.g && this.n && 1 === this.p.modn(3)) {
                var c, d;
                if (b.beta) c = new f(b.beta, 16).toRed(this.red);
                else {
                  var e = this._getEndoRoots(this.p);
                  (c = e[0].cmp(e[1]) < 0 ? e[0] : e[1]),
                    (c = c.toRed(this.red));
                }
                if (b.lambda) d = new f(b.lambda, 16);
                else {
                  var g = this._getEndoRoots(this.n);
                  0 === this.g.mul(g[0]).x.cmp(this.g.x.redMul(c))
                    ? (d = g[0])
                    : ((d = g[1]),
                      i(0 === this.g.mul(d).x.cmp(this.g.x.redMul(c))));
                }
                var h;
                return (
                  (h = b.basis
                    ? b.basis.map(function(a) {
                        return { a: new f(a.a, 16), b: new f(a.b, 16) };
                      })
                    : this._getEndoBasis(d)),
                  { beta: c, lambda: d, basis: h }
                );
              }
            }),
            (j.prototype._getEndoRoots = function(b) {
              var c = b === this.p ? this.red : f.mont(b),
                d = new f(2).toRed(c).redInvm(),
                e = d.redNeg(),
                g = new f(3)
                  .toRed(c)
                  .redNeg()
                  .redSqrt()
                  .redMul(d),
                h = e.redAdd(g).fromRed(),
                i = e.redSub(g).fromRed();
              return [h, i];
            }),
            (j.prototype._getEndoBasis = function(b) {
              for (
                var k,
                  l,
                  m,
                  n,
                  o,
                  p,
                  q,
                  s,
                  t,
                  c = this.n.ushrn(Math.floor(this.n.bitLength() / 2)),
                  d = b,
                  e = this.n.clone(),
                  g = new f(1),
                  h = new f(0),
                  i = new f(0),
                  j = new f(1),
                  r = 0;
                0 !== d.cmpn(0);

              ) {
                var u = e.div(d);
                (s = e.sub(u.mul(d))), (t = i.sub(u.mul(g)));
                var v = j.sub(u.mul(h));
                if (!m && s.cmp(c) < 0)
                  (k = q.neg()), (l = g), (m = s.neg()), (n = t);
                else if (m && 2 === ++r) break;
                (q = s), (e = d), (d = s), (i = g), (g = t), (j = h), (h = v);
              }
              (o = s.neg()), (p = t);
              var w = m.sqr().add(n.sqr()),
                x = o.sqr().add(p.sqr());
              return (
                x.cmp(w) >= 0 && ((o = k), (p = l)),
                m.negative && ((m = m.neg()), (n = n.neg())),
                o.negative && ((o = o.neg()), (p = p.neg())),
                [{ a: m, b: n }, { a: o, b: p }]
              );
            }),
            (j.prototype._endoSplit = function(b) {
              var c = this.endo.basis,
                d = c[0],
                e = c[1],
                f = e.b.mul(b).divRound(this.n),
                g = d.b
                  .neg()
                  .mul(b)
                  .divRound(this.n),
                h = f.mul(d.a),
                i = g.mul(e.a),
                j = f.mul(d.b),
                k = g.mul(e.b),
                l = b.sub(h).sub(i),
                m = j.add(k).neg();
              return { k1: l, k2: m };
            }),
            (j.prototype.pointFromX = function(b, c) {
              (b = new f(b, 16)), b.red || (b = b.toRed(this.red));
              var d = b
                  .redSqr()
                  .redMul(b)
                  .redIAdd(b.redMul(this.a))
                  .redIAdd(this.b),
                e = d.redSqrt();
              if (
                0 !==
                e
                  .redSqr()
                  .redSub(d)
                  .cmp(this.zero)
              )
                throw new Error('invalid point');
              var g = e.fromRed().isOdd();
              return (
                ((c && !g) || (!c && g)) && (e = e.redNeg()), this.point(b, e)
              );
            }),
            (j.prototype.validate = function(b) {
              if (b.inf) return !0;
              var c = b.x,
                d = b.y,
                e = this.a.redMul(c),
                f = c
                  .redSqr()
                  .redMul(c)
                  .redIAdd(e)
                  .redIAdd(this.b);
              return (
                0 ===
                d
                  .redSqr()
                  .redISub(f)
                  .cmpn(0)
              );
            }),
            (j.prototype._endoWnafMulAdd = function(b, c, d) {
              for (
                var e = this._endoWnafT1, f = this._endoWnafT2, g = 0;
                g < b.length;
                g++
              ) {
                var h = this._endoSplit(c[g]),
                  i = b[g],
                  j = i._getBeta();
                h.k1.negative && (h.k1.ineg(), (i = i.neg(!0))),
                  h.k2.negative && (h.k2.ineg(), (j = j.neg(!0))),
                  (e[2 * g] = i),
                  (e[2 * g + 1] = j),
                  (f[2 * g] = h.k1),
                  (f[2 * g + 1] = h.k2);
              }
              for (
                var k = this._wnafMulAdd(1, e, f, 2 * g, d), l = 0;
                l < 2 * g;
                l++
              )
                (e[l] = null), (f[l] = null);
              return k;
            }),
            g(k, h.BasePoint),
            (j.prototype.point = function(b, c, d) {
              return new k(this, b, c, d);
            }),
            (j.prototype.pointFromJSON = function(b, c) {
              return k.fromJSON(this, b, c);
            }),
            (k.prototype._getBeta = function() {
              if (this.curve.endo) {
                var b = this.precomputed;
                if (b && b.beta) return b.beta;
                var c = this.curve.point(
                  this.x.redMul(this.curve.endo.beta),
                  this.y
                );
                if (b) {
                  var d = this.curve,
                    e = function(a) {
                      return d.point(a.x.redMul(d.endo.beta), a.y);
                    };
                  (b.beta = c),
                    (c.precomputed = {
                      beta: null,
                      naf: b.naf && {
                        wnd: b.naf.wnd,
                        points: b.naf.points.map(e)
                      },
                      doubles: b.doubles && {
                        step: b.doubles.step,
                        points: b.doubles.points.map(e)
                      }
                    });
                }
                return c;
              }
            }),
            (k.prototype.toJSON = function() {
              return this.precomputed
                ? [
                    this.x,
                    this.y,
                    this.precomputed && {
                      doubles: this.precomputed.doubles && {
                        step: this.precomputed.doubles.step,
                        points: this.precomputed.doubles.points.slice(1)
                      },
                      naf: this.precomputed.naf && {
                        wnd: this.precomputed.naf.wnd,
                        points: this.precomputed.naf.points.slice(1)
                      }
                    }
                  ]
                : [this.x, this.y];
            }),
            (k.fromJSON = function(b, c, d) {
              function f(a) {
                return b.point(a[0], a[1], d);
              }
              'string' == typeof c && (c = JSON.parse(c));
              var e = b.point(c[0], c[1], d);
              if (!c[2]) return e;
              var g = c[2];
              return (
                (e.precomputed = {
                  beta: null,
                  doubles: g.doubles && {
                    step: g.doubles.step,
                    points: [e].concat(g.doubles.points.map(f))
                  },
                  naf: g.naf && {
                    wnd: g.naf.wnd,
                    points: [e].concat(g.naf.points.map(f))
                  }
                }),
                e
              );
            }),
            (k.prototype.inspect = function() {
              return this.isInfinity()
                ? '<EC Point Infinity>'
                : '<EC Point x: ' +
                    this.x.fromRed().toString(16, 2) +
                    ' y: ' +
                    this.y.fromRed().toString(16, 2) +
                    '>';
            }),
            (k.prototype.isInfinity = function() {
              return this.inf;
            }),
            (k.prototype.add = function(b) {
              if (this.inf) return b;
              if (b.inf) return this;
              if (this.eq(b)) return this.dbl();
              if (this.neg().eq(b)) return this.curve.point(null, null);
              if (0 === this.x.cmp(b.x)) return this.curve.point(null, null);
              var c = this.y.redSub(b.y);
              0 !== c.cmpn(0) && (c = c.redMul(this.x.redSub(b.x).redInvm()));
              var d = c
                  .redSqr()
                  .redISub(this.x)
                  .redISub(b.x),
                e = c.redMul(this.x.redSub(d)).redISub(this.y);
              return this.curve.point(d, e);
            }),
            (k.prototype.dbl = function() {
              if (this.inf) return this;
              var b = this.y.redAdd(this.y);
              if (0 === b.cmpn(0)) return this.curve.point(null, null);
              var c = this.curve.a,
                d = this.x.redSqr(),
                e = b.redInvm(),
                f = d
                  .redAdd(d)
                  .redIAdd(d)
                  .redIAdd(c)
                  .redMul(e),
                g = f.redSqr().redISub(this.x.redAdd(this.x)),
                h = f.redMul(this.x.redSub(g)).redISub(this.y);
              return this.curve.point(g, h);
            }),
            (k.prototype.getX = function() {
              return this.x.fromRed();
            }),
            (k.prototype.getY = function() {
              return this.y.fromRed();
            }),
            (k.prototype.mul = function(b) {
              return (
                (b = new f(b, 16)),
                this._hasDoubles(b)
                  ? this.curve._fixedNafMul(this, b)
                  : this.curve.endo
                  ? this.curve._endoWnafMulAdd([this], [b])
                  : this.curve._wnafMul(this, b)
              );
            }),
            (k.prototype.mulAdd = function(b, c, d) {
              var e = [this, c],
                f = [b, d];
              return this.curve.endo
                ? this.curve._endoWnafMulAdd(e, f)
                : this.curve._wnafMulAdd(1, e, f, 2);
            }),
            (k.prototype.jmulAdd = function(b, c, d) {
              var e = [this, c],
                f = [b, d];
              return this.curve.endo
                ? this.curve._endoWnafMulAdd(e, f, !0)
                : this.curve._wnafMulAdd(1, e, f, 2, !0);
            }),
            (k.prototype.eq = function(b) {
              return (
                this === b ||
                (this.inf === b.inf &&
                  (this.inf ||
                    (0 === this.x.cmp(b.x) && 0 === this.y.cmp(b.y))))
              );
            }),
            (k.prototype.neg = function(b) {
              if (this.inf) return this;
              var c = this.curve.point(this.x, this.y.redNeg());
              if (b && this.precomputed) {
                var d = this.precomputed,
                  e = function(a) {
                    return a.neg();
                  };
                c.precomputed = {
                  naf: d.naf && { wnd: d.naf.wnd, points: d.naf.points.map(e) },
                  doubles: d.doubles && {
                    step: d.doubles.step,
                    points: d.doubles.points.map(e)
                  }
                };
              }
              return c;
            }),
            (k.prototype.toJ = function() {
              if (this.inf) return this.curve.jpoint(null, null, null);
              var b = this.curve.jpoint(this.x, this.y, this.curve.one);
              return b;
            }),
            g(l, h.BasePoint),
            (j.prototype.jpoint = function(b, c, d) {
              return new l(this, b, c, d);
            }),
            (l.prototype.toP = function() {
              if (this.isInfinity()) return this.curve.point(null, null);
              var b = this.z.redInvm(),
                c = b.redSqr(),
                d = this.x.redMul(c),
                e = this.y.redMul(c).redMul(b);
              return this.curve.point(d, e);
            }),
            (l.prototype.neg = function() {
              return this.curve.jpoint(this.x, this.y.redNeg(), this.z);
            }),
            (l.prototype.add = function(b) {
              if (this.isInfinity()) return b;
              if (b.isInfinity()) return this;
              var c = b.z.redSqr(),
                d = this.z.redSqr(),
                e = this.x.redMul(c),
                f = b.x.redMul(d),
                g = this.y.redMul(c.redMul(b.z)),
                h = b.y.redMul(d.redMul(this.z)),
                i = e.redSub(f),
                j = g.redSub(h);
              if (0 === i.cmpn(0))
                return 0 !== j.cmpn(0)
                  ? this.curve.jpoint(null, null, null)
                  : this.dbl();
              var k = i.redSqr(),
                l = k.redMul(i),
                m = e.redMul(k),
                n = j
                  .redSqr()
                  .redIAdd(l)
                  .redISub(m)
                  .redISub(m),
                o = j.redMul(m.redISub(n)).redISub(g.redMul(l)),
                p = this.z.redMul(b.z).redMul(i);
              return this.curve.jpoint(n, o, p);
            }),
            (l.prototype.mixedAdd = function(b) {
              if (this.isInfinity()) return b.toJ();
              if (b.isInfinity()) return this;
              var c = this.z.redSqr(),
                d = this.x,
                e = b.x.redMul(c),
                f = this.y,
                g = b.y.redMul(c).redMul(this.z),
                h = d.redSub(e),
                i = f.redSub(g);
              if (0 === h.cmpn(0))
                return 0 !== i.cmpn(0)
                  ? this.curve.jpoint(null, null, null)
                  : this.dbl();
              var j = h.redSqr(),
                k = j.redMul(h),
                l = d.redMul(j),
                m = i
                  .redSqr()
                  .redIAdd(k)
                  .redISub(l)
                  .redISub(l),
                n = i.redMul(l.redISub(m)).redISub(f.redMul(k)),
                o = this.z.redMul(h);
              return this.curve.jpoint(m, n, o);
            }),
            (l.prototype.dblp = function(b) {
              if (0 === b) return this;
              if (this.isInfinity()) return this;
              if (!b) return this.dbl();
              if (this.curve.zeroA || this.curve.threeA) {
                for (var c = this, d = 0; d < b; d++) c = c.dbl();
                return c;
              }
              for (
                var e = this.curve.a,
                  f = this.curve.tinv,
                  g = this.x,
                  h = this.y,
                  i = this.z,
                  j = i.redSqr().redSqr(),
                  k = h.redAdd(h),
                  d = 0;
                d < b;
                d++
              ) {
                var l = g.redSqr(),
                  m = k.redSqr(),
                  n = m.redSqr(),
                  o = l
                    .redAdd(l)
                    .redIAdd(l)
                    .redIAdd(e.redMul(j)),
                  p = g.redMul(m),
                  q = o.redSqr().redISub(p.redAdd(p)),
                  r = p.redISub(q),
                  s = o.redMul(r);
                s = s.redIAdd(s).redISub(n);
                var t = k.redMul(i);
                d + 1 < b && (j = j.redMul(n)), (g = q), (i = t), (k = s);
              }
              return this.curve.jpoint(g, k.redMul(f), i);
            }),
            (l.prototype.dbl = function() {
              return this.isInfinity()
                ? this
                : this.curve.zeroA
                ? this._zeroDbl()
                : this.curve.threeA
                ? this._threeDbl()
                : this._dbl();
            }),
            (l.prototype._zeroDbl = function() {
              var b, c, d;
              if (this.zOne) {
                var e = this.x.redSqr(),
                  f = this.y.redSqr(),
                  g = f.redSqr(),
                  h = this.x
                    .redAdd(f)
                    .redSqr()
                    .redISub(e)
                    .redISub(g);
                h = h.redIAdd(h);
                var i = e.redAdd(e).redIAdd(e),
                  j = i
                    .redSqr()
                    .redISub(h)
                    .redISub(h),
                  k = g.redIAdd(g);
                (k = k.redIAdd(k)),
                  (k = k.redIAdd(k)),
                  (b = j),
                  (c = i.redMul(h.redISub(j)).redISub(k)),
                  (d = this.y.redAdd(this.y));
              } else {
                var l = this.x.redSqr(),
                  m = this.y.redSqr(),
                  n = m.redSqr(),
                  o = this.x
                    .redAdd(m)
                    .redSqr()
                    .redISub(l)
                    .redISub(n);
                o = o.redIAdd(o);
                var p = l.redAdd(l).redIAdd(l),
                  q = p.redSqr(),
                  r = n.redIAdd(n);
                (r = r.redIAdd(r)),
                  (r = r.redIAdd(r)),
                  (b = q.redISub(o).redISub(o)),
                  (c = p.redMul(o.redISub(b)).redISub(r)),
                  (d = this.y.redMul(this.z)),
                  (d = d.redIAdd(d));
              }
              return this.curve.jpoint(b, c, d);
            }),
            (l.prototype._threeDbl = function() {
              var b, c, d;
              if (this.zOne) {
                var e = this.x.redSqr(),
                  f = this.y.redSqr(),
                  g = f.redSqr(),
                  h = this.x
                    .redAdd(f)
                    .redSqr()
                    .redISub(e)
                    .redISub(g);
                h = h.redIAdd(h);
                var i = e
                    .redAdd(e)
                    .redIAdd(e)
                    .redIAdd(this.curve.a),
                  j = i
                    .redSqr()
                    .redISub(h)
                    .redISub(h);
                b = j;
                var k = g.redIAdd(g);
                (k = k.redIAdd(k)),
                  (k = k.redIAdd(k)),
                  (c = i.redMul(h.redISub(j)).redISub(k)),
                  (d = this.y.redAdd(this.y));
              } else {
                var l = this.z.redSqr(),
                  m = this.y.redSqr(),
                  n = this.x.redMul(m),
                  o = this.x.redSub(l).redMul(this.x.redAdd(l));
                o = o.redAdd(o).redIAdd(o);
                var p = n.redIAdd(n);
                p = p.redIAdd(p);
                var q = p.redAdd(p);
                (b = o.redSqr().redISub(q)),
                  (d = this.y
                    .redAdd(this.z)
                    .redSqr()
                    .redISub(m)
                    .redISub(l));
                var r = m.redSqr();
                (r = r.redIAdd(r)),
                  (r = r.redIAdd(r)),
                  (r = r.redIAdd(r)),
                  (c = o.redMul(p.redISub(b)).redISub(r));
              }
              return this.curve.jpoint(b, c, d);
            }),
            (l.prototype._dbl = function() {
              var b = this.curve.a,
                c = this.x,
                d = this.y,
                e = this.z,
                f = e.redSqr().redSqr(),
                g = c.redSqr(),
                h = d.redSqr(),
                i = g
                  .redAdd(g)
                  .redIAdd(g)
                  .redIAdd(b.redMul(f)),
                j = c.redAdd(c);
              j = j.redIAdd(j);
              var k = j.redMul(h),
                l = i.redSqr().redISub(k.redAdd(k)),
                m = k.redISub(l),
                n = h.redSqr();
              (n = n.redIAdd(n)), (n = n.redIAdd(n)), (n = n.redIAdd(n));
              var o = i.redMul(m).redISub(n),
                p = d.redAdd(d).redMul(e);
              return this.curve.jpoint(l, o, p);
            }),
            (l.prototype.trpl = function() {
              if (!this.curve.zeroA) return this.dbl().add(this);
              var b = this.x.redSqr(),
                c = this.y.redSqr(),
                d = this.z.redSqr(),
                e = c.redSqr(),
                f = b.redAdd(b).redIAdd(b),
                g = f.redSqr(),
                h = this.x
                  .redAdd(c)
                  .redSqr()
                  .redISub(b)
                  .redISub(e);
              (h = h.redIAdd(h)),
                (h = h.redAdd(h).redIAdd(h)),
                (h = h.redISub(g));
              var i = h.redSqr(),
                j = e.redIAdd(e);
              (j = j.redIAdd(j)), (j = j.redIAdd(j)), (j = j.redIAdd(j));
              var k = f
                  .redIAdd(h)
                  .redSqr()
                  .redISub(g)
                  .redISub(i)
                  .redISub(j),
                l = c.redMul(k);
              (l = l.redIAdd(l)), (l = l.redIAdd(l));
              var m = this.x.redMul(i).redISub(l);
              (m = m.redIAdd(m)), (m = m.redIAdd(m));
              var n = this.y.redMul(
                k.redMul(j.redISub(k)).redISub(h.redMul(i))
              );
              (n = n.redIAdd(n)), (n = n.redIAdd(n)), (n = n.redIAdd(n));
              var o = this.z
                .redAdd(h)
                .redSqr()
                .redISub(d)
                .redISub(i);
              return this.curve.jpoint(m, n, o);
            }),
            (l.prototype.mul = function(b, c) {
              return (b = new f(b, c)), this.curve._wnafMul(this, b);
            }),
            (l.prototype.eq = function(b) {
              if ('affine' === b.type) return this.eq(b.toJ());
              if (this === b) return !0;
              var c = this.z.redSqr(),
                d = b.z.redSqr();
              if (
                0 !==
                this.x
                  .redMul(d)
                  .redISub(b.x.redMul(c))
                  .cmpn(0)
              )
                return !1;
              var e = c.redMul(this.z),
                f = d.redMul(b.z);
              return (
                0 ===
                this.y
                  .redMul(f)
                  .redISub(b.y.redMul(e))
                  .cmpn(0)
              );
            }),
            (l.prototype.eqXToP = function(b) {
              var c = this.z.redSqr(),
                d = b.toRed(this.curve.red).redMul(c);
              if (0 === this.x.cmp(d)) return !0;
              for (var e = b.clone(), f = this.curve.redN.redMul(c); ; ) {
                if ((e.iadd(this.curve.n), e.cmp(this.curve.p) >= 0)) return !1;
                if ((d.redIAdd(f), 0 === this.x.cmp(d))) return !0;
              }
              return !1;
            }),
            (l.prototype.inspect = function() {
              return this.isInfinity()
                ? '<EC JPoint Infinity>'
                : '<EC JPoint x: ' +
                    this.x.toString(16, 2) +
                    ' y: ' +
                    this.y.toString(16, 2) +
                    ' z: ' +
                    this.z.toString(16, 2) +
                    '>';
            }),
            (l.prototype.isInfinity = function() {
              return 0 === this.z.cmpn(0);
            });
        },
        { '../../elliptic': 2, '../curve': 5, 'bn.js': 1, inherits: 25 }
      ],
      8: [
        function(a, b, c) {
          'use strict';
          function h(a) {
            'short' === a.type
              ? (this.curve = new f.curve.short(a))
              : 'edwards' === a.type
              ? (this.curve = new f.curve.edwards(a))
              : (this.curve = new f.curve.mont(a)),
              (this.g = this.curve.g),
              (this.n = this.curve.n),
              (this.hash = a.hash),
              g(this.g.validate(), 'Invalid curve'),
              g(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');
          }
          function i(a, b) {
            Object.defineProperty(d, a, {
              configurable: !0,
              enumerable: !0,
              get: function() {
                var c = new h(b);
                return (
                  Object.defineProperty(d, a, {
                    configurable: !0,
                    enumerable: !0,
                    value: c
                  }),
                  c
                );
              }
            });
          }
          var d = c,
            e = a('hash.js'),
            f = a('../elliptic'),
            g = f.utils.assert;
          (d.PresetCurve = h),
            i('p192', {
              type: 'short',
              prime: 'p192',
              p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',
              a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',
              b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',
              n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',
              hash: e.sha256,
              gRed: !1,
              g: [
                '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',
                '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'
              ]
            }),
            i('p224', {
              type: 'short',
              prime: 'p224',
              p:
                'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',
              a:
                'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',
              b:
                'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',
              n:
                'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',
              hash: e.sha256,
              gRed: !1,
              g: [
                'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',
                'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'
              ]
            }),
            i('p256', {
              type: 'short',
              prime: null,
              p:
                'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',
              a:
                'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',
              b:
                '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',
              n:
                'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',
              hash: e.sha256,
              gRed: !1,
              g: [
                '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',
                '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'
              ]
            }),
            i('p384', {
              type: 'short',
              prime: null,
              p:
                'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff',
              a:
                'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc',
              b:
                'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',
              n:
                'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',
              hash: e.sha384,
              gRed: !1,
              g: [
                'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7',
                '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'
              ]
            }),
            i('p521', {
              type: 'short',
              prime: null,
              p:
                '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff',
              a:
                '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc',
              b:
                '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',
              n:
                '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',
              hash: e.sha512,
              gRed: !1,
              g: [
                '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',
                '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650'
              ]
            }),
            i('curve25519', {
              type: 'mont',
              prime: 'p25519',
              p:
                '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
              a: '76d06',
              b: '0',
              n:
                '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
              hash: e.sha256,
              gRed: !1,
              g: ['9']
            }),
            i('ed25519', {
              type: 'edwards',
              prime: 'p25519',
              p:
                '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',
              a: '-1',
              c: '1',
              d:
                '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',
              n:
                '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',
              hash: e.sha256,
              gRed: !1,
              g: [
                '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',
                '6666666666666666666666666666666666666666666666666666666666666658'
              ]
            });
          var j;
          try {
            j = a('./precomputed/secp256k1');
          } catch (a) {
            j = void 0;
          }
          i('secp256k1', {
            type: 'short',
            prime: 'k256',
            p:
              'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',
            a: '0',
            b: '7',
            n:
              'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',
            h: '1',
            hash: e.sha256,
            beta:
              '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',
            lambda:
              '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',
            basis: [
              {
                a: '3086d221a7d46bcde86c90e49284eb15',
                b: '-e4437ed6010e88286f547fa90abfe4c3'
              },
              {
                a: '114ca50f7a8e2f3f657c1108d9d44cfd8',
                b: '3086d221a7d46bcde86c90e49284eb15'
              }
            ],
            gRed: !1,
            g: [
              '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',
              '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',
              j
            ]
          });
        },
        { '../elliptic': 2, './precomputed/secp256k1': 16, 'hash.js': 19 }
      ],
      9: [
        function(a, b, c) {
          'use strict';
          function j(a) {
            return this instanceof j
              ? ('string' == typeof a &&
                  (g(e.curves.hasOwnProperty(a), 'Unknown curve ' + a),
                  (a = e.curves[a])),
                a instanceof e.curves.PresetCurve && (a = { curve: a }),
                (this.curve = a.curve.curve),
                (this.n = this.curve.n),
                (this.nh = this.n.ushrn(1)),
                (this.g = this.curve.g),
                (this.g = a.curve.g),
                this.g.precompute(a.curve.n.bitLength() + 1),
                void (this.hash = a.hash || a.curve.hash))
              : new j(a);
          }
          var d = a('bn.js'),
            e = a('../../elliptic'),
            f = e.utils,
            g = f.assert,
            h = a('./key'),
            i = a('./signature');
          (b.exports = j),
            (j.prototype.keyPair = function(b) {
              return new h(this, b);
            }),
            (j.prototype.keyFromPrivate = function(b, c) {
              return h.fromPrivate(this, b, c);
            }),
            (j.prototype.keyFromPublic = function(b, c) {
              return h.fromPublic(this, b, c);
            }),
            (j.prototype.genKeyPair = function(b) {
              b || (b = {});
              for (
                var c = new e.hmacDRBG({
                    hash: this.hash,
                    pers: b.pers,
                    entropy: b.entropy || e.rand(this.hash.hmacStrength),
                    nonce: this.n.toArray()
                  }),
                  f = this.n.byteLength(),
                  g = this.n.sub(new d(2));
                ;

              ) {
                var h = new d(c.generate(f));
                if (!(h.cmp(g) > 0)) return h.iaddn(1), this.keyFromPrivate(h);
              }
            }),
            (j.prototype._truncateToN = function(b, c) {
              var d = 8 * b.byteLength() - this.n.bitLength();
              return (
                d > 0 && (b = b.ushrn(d)),
                !c && b.cmp(this.n) >= 0 ? b.sub(this.n) : b
              );
            }),
            (j.prototype.sign = function(b, c, f, g) {
              'object' == typeof f && ((g = f), (f = null)),
                g || (g = {}),
                (c = this.keyFromPrivate(c, f)),
                (b = this._truncateToN(new d(b, 16)));
              for (
                var h = this.n.byteLength(),
                  j = c.getPrivate().toArray('be', h),
                  k = b.toArray('be', h),
                  l = new e.hmacDRBG({
                    hash: this.hash,
                    entropy: j,
                    nonce: k,
                    pers: g.pers,
                    persEnc: g.persEnc
                  }),
                  m = this.n.sub(new d(1)),
                  n = 0;
                !0;
                n++
              ) {
                var o = g.k ? g.k(n) : new d(l.generate(this.n.byteLength()));
                if (
                  ((o = this._truncateToN(o, !0)),
                  !(o.cmpn(1) <= 0 || o.cmp(m) >= 0))
                ) {
                  var p = this.g.mul(o);
                  if (!p.isInfinity()) {
                    var q = p.getX(),
                      r = q.umod(this.n);
                    if (0 !== r.cmpn(0)) {
                      var s = o.invm(this.n).mul(r.mul(c.getPrivate()).iadd(b));
                      if (((s = s.umod(this.n)), 0 !== s.cmpn(0))) {
                        var t =
                          (p.getY().isOdd() ? 1 : 0) | (0 !== q.cmp(r) ? 2 : 0);
                        return (
                          g.canonical &&
                            s.cmp(this.nh) > 0 &&
                            ((s = this.n.sub(s)), (t ^= 1)),
                          new i({ r: r, s: s, recoveryParam: t })
                        );
                      }
                    }
                  }
                }
              }
            }),
            (j.prototype.verify = function(b, c, e, f) {
              (b = this._truncateToN(new d(b, 16))),
                (e = this.keyFromPublic(e, f)),
                (c = new i(c, 'hex'));
              var g = c.r,
                h = c.s;
              if (g.cmpn(1) < 0 || g.cmp(this.n) >= 0) return !1;
              if (h.cmpn(1) < 0 || h.cmp(this.n) >= 0) return !1;
              var j = h.invm(this.n),
                k = j.mul(b).umod(this.n),
                l = j.mul(g).umod(this.n);
              if (!this.curve._maxwellTrick) {
                var m = this.g.mulAdd(k, e.getPublic(), l);
                return (
                  !m.isInfinity() &&
                  0 ===
                    m
                      .getX()
                      .umod(this.n)
                      .cmp(g)
                );
              }
              var m = this.g.jmulAdd(k, e.getPublic(), l);
              return !m.isInfinity() && m.eqXToP(g);
            }),
            (j.prototype.recoverPubKey = function(a, b, c, e) {
              g((3 & c) === c, 'The recovery param is more than two bits'),
                (b = new i(b, e));
              var f = this.n,
                h = new d(a),
                j = b.r,
                k = b.s,
                l = 1 & c,
                m = c >> 1;
              if (j.cmp(this.curve.p.umod(this.curve.n)) >= 0 && m)
                throw new Error('Unable to find sencond key candinate');
              j = m
                ? this.curve.pointFromX(j.add(this.curve.n), l)
                : this.curve.pointFromX(j, l);
              var n = b.r.invm(f),
                o = f
                  .sub(h)
                  .mul(n)
                  .umod(f),
                p = k.mul(n).umod(f);
              return this.g.mulAdd(o, j, p);
            }),
            (j.prototype.getKeyRecoveryParam = function(a, b, c, d) {
              if (((b = new i(b, d)), null !== b.recoveryParam))
                return b.recoveryParam;
              for (var e = 0; e < 4; e++) {
                var f;
                try {
                  f = this.recoverPubKey(a, b, e);
                } catch (a) {
                  continue;
                }
                if (f.eq(c)) return e;
              }
              throw new Error('Unable to find valid recovery factor');
            });
        },
        { '../../elliptic': 2, './key': 10, './signature': 11, 'bn.js': 1 }
      ],
      10: [
        function(a, b, c) {
          'use strict';
          function e(a, b) {
            (this.ec = a),
              (this.priv = null),
              (this.pub = null),
              b.priv && this._importPrivate(b.priv, b.privEnc),
              b.pub && this._importPublic(b.pub, b.pubEnc);
          }
          var d = a('bn.js');
          (b.exports = e),
            (e.fromPublic = function(b, c, d) {
              return c instanceof e ? c : new e(b, { pub: c, pubEnc: d });
            }),
            (e.fromPrivate = function(b, c, d) {
              return c instanceof e ? c : new e(b, { priv: c, privEnc: d });
            }),
            (e.prototype.validate = function() {
              var b = this.getPublic();
              return b.isInfinity()
                ? { result: !1, reason: 'Invalid public key' }
                : b.validate()
                ? b.mul(this.ec.curve.n).isInfinity()
                  ? { result: !0, reason: null }
                  : { result: !1, reason: 'Public key * N != O' }
                : { result: !1, reason: 'Public key is not a point' };
            }),
            (e.prototype.getPublic = function(b, c) {
              return (
                'string' == typeof b && ((c = b), (b = null)),
                this.pub || (this.pub = this.ec.g.mul(this.priv)),
                c ? this.pub.encode(c, b) : this.pub
              );
            }),
            (e.prototype.getPrivate = function(b) {
              return 'hex' === b ? this.priv.toString(16, 2) : this.priv;
            }),
            (e.prototype._importPrivate = function(b, c) {
              (this.priv = new d(b, c || 16)),
                (this.priv = this.priv.umod(this.ec.curve.n));
            }),
            (e.prototype._importPublic = function(b, c) {
              return b.x || b.y
                ? void (this.pub = this.ec.curve.point(b.x, b.y))
                : void (this.pub = this.ec.curve.decodePoint(b, c));
            }),
            (e.prototype.derive = function(b) {
              return b.mul(this.priv).getX();
            }),
            (e.prototype.sign = function(b, c, d) {
              return this.ec.sign(b, this, c, d);
            }),
            (e.prototype.verify = function(b, c) {
              return this.ec.verify(b, c, this);
            }),
            (e.prototype.inspect = function() {
              return (
                '<Key priv: ' +
                (this.priv && this.priv.toString(16, 2)) +
                ' pub: ' +
                (this.pub && this.pub.inspect()) +
                ' >'
              );
            });
        },
        { 'bn.js': 1 }
      ],
      11: [
        function(a, b, c) {
          'use strict';
          function h(a, b) {
            return a instanceof h
              ? a
              : void (
                  this._importDER(a, b) ||
                  (g(a.r && a.s, 'Signature without r or s'),
                  (this.r = new d(a.r, 16)),
                  (this.s = new d(a.s, 16)),
                  void 0 === a.recoveryParam
                    ? (this.recoveryParam = null)
                    : (this.recoveryParam = a.recoveryParam))
                );
          }
          function i() {
            this.place = 0;
          }
          function j(a, b) {
            var c = a[b.place++];
            if (!(128 & c)) return c;
            for (var d = 15 & c, e = 0, f = 0, g = b.place; f < d; f++, g++)
              (e <<= 8), (e |= a[g]);
            return (b.place = g), e;
          }
          function k(a) {
            for (
              var b = 0, c = a.length - 1;
              !a[b] && !(128 & a[b + 1]) && b < c;

            )
              b++;
            return 0 === b ? a : a.slice(b);
          }
          function l(a, b) {
            if (b < 128) return void a.push(b);
            var c = 1 + ((Math.log(b) / Math.LN2) >>> 3);
            for (a.push(128 | c); --c; ) a.push((b >>> (c << 3)) & 255);
            a.push(b);
          }
          var d = a('bn.js'),
            e = a('../../elliptic'),
            f = e.utils,
            g = f.assert;
          (b.exports = h),
            (h.prototype._importDER = function(b, c) {
              b = f.toArray(b, c);
              var e = new i();
              if (48 !== b[e.place++]) return !1;
              var g = j(b, e);
              if (g + e.place !== b.length) return !1;
              if (2 !== b[e.place++]) return !1;
              var h = j(b, e),
                k = b.slice(e.place, h + e.place);
              if (((e.place += h), 2 !== b[e.place++])) return !1;
              var l = j(b, e);
              if (b.length !== l + e.place) return !1;
              var m = b.slice(e.place, l + e.place);
              return (
                0 === k[0] && 128 & k[1] && (k = k.slice(1)),
                0 === m[0] && 128 & m[1] && (m = m.slice(1)),
                (this.r = new d(k)),
                (this.s = new d(m)),
                (this.recoveryParam = null),
                !0
              );
            }),
            (h.prototype.toDER = function(b) {
              var c = this.r.toArray(),
                d = this.s.toArray();
              for (
                128 & c[0] && (c = [0].concat(c)),
                  128 & d[0] && (d = [0].concat(d)),
                  c = k(c),
                  d = k(d);
                !(d[0] || 128 & d[1]);

              )
                d = d.slice(1);
              var e = [2];
              l(e, c.length), (e = e.concat(c)), e.push(2), l(e, d.length);
              var g = e.concat(d),
                h = [48];
              return l(h, g.length), (h = h.concat(g)), f.encode(h, b);
            });
        },
        { '../../elliptic': 2, 'bn.js': 1 }
      ],
      12: [
        function(a, b, c) {
          'use strict';
          function k(a) {
            if (
              (g('ed25519' === a, 'only tested with ed25519 so far'),
              !(this instanceof k))
            )
              return new k(a);
            var a = e.curves[a].curve;
            (this.curve = a),
              (this.g = a.g),
              this.g.precompute(a.n.bitLength() + 1),
              (this.pointClass = a.point().constructor),
              (this.encodingLength = Math.ceil(a.n.bitLength() / 8)),
              (this.hash = d.sha512);
          }
          var d = a('hash.js'),
            e = a('../../elliptic'),
            f = e.utils,
            g = f.assert,
            h = f.parseBytes,
            i = a('./key'),
            j = a('./signature');
          (b.exports = k),
            (k.prototype.sign = function(b, c) {
              b = h(b);
              var d = this.keyFromSecret(c),
                e = this.hashInt(d.messagePrefix(), b),
                f = this.g.mul(e),
                g = this.encodePoint(f),
                i = this.hashInt(g, d.pubBytes(), b).mul(d.priv()),
                j = e.add(i).umod(this.curve.n);
              return this.makeSignature({ R: f, S: j, Rencoded: g });
            }),
            (k.prototype.verify = function(b, c, d) {
              (b = h(b)), (c = this.makeSignature(c));
              var e = this.keyFromPublic(d),
                f = this.hashInt(c.Rencoded(), e.pubBytes(), b),
                g = this.g.mul(c.S()),
                i = c.R().add(e.pub().mul(f));
              return i.eq(g);
            }),
            (k.prototype.hashInt = function() {
              for (var b = this.hash(), c = 0; c < arguments.length; c++)
                b.update(arguments[c]);
              return f.intFromLE(b.digest()).umod(this.curve.n);
            }),
            (k.prototype.keyFromPublic = function(b) {
              return i.fromPublic(this, b);
            }),
            (k.prototype.keyFromSecret = function(b) {
              return i.fromSecret(this, b);
            }),
            (k.prototype.makeSignature = function(b) {
              return b instanceof j ? b : new j(this, b);
            }),
            (k.prototype.encodePoint = function(b) {
              var c = b.getY().toArray('le', this.encodingLength);
              return (
                (c[this.encodingLength - 1] |= b.getX().isOdd() ? 128 : 0), c
              );
            }),
            (k.prototype.decodePoint = function(b) {
              b = f.parseBytes(b);
              var c = b.length - 1,
                d = b.slice(0, c).concat(b[c] & -129),
                e = 0 !== (128 & b[c]),
                g = f.intFromLE(d);
              return this.curve.pointFromY(g, e);
            }),
            (k.prototype.encodeInt = function(b) {
              return b.toArray('le', this.encodingLength);
            }),
            (k.prototype.decodeInt = function(b) {
              return f.intFromLE(b);
            }),
            (k.prototype.isPoint = function(b) {
              return b instanceof this.pointClass;
            });
        },
        { '../../elliptic': 2, './key': 13, './signature': 14, 'hash.js': 19 }
      ],
      13: [
        function(a, b, c) {
          'use strict';
          function i(a, b) {
            (this.eddsa = a),
              (this._secret = g(b.secret)),
              a.isPoint(b.pub)
                ? (this._pub = b.pub)
                : (this._pubBytes = g(b.pub));
          }
          var d = a('../../elliptic'),
            e = d.utils,
            f = e.assert,
            g = e.parseBytes,
            h = e.cachedProperty;
          (i.fromPublic = function(b, c) {
            return c instanceof i ? c : new i(b, { pub: c });
          }),
            (i.fromSecret = function(b, c) {
              return c instanceof i ? c : new i(b, { secret: c });
            }),
            (i.prototype.secret = function() {
              return this._secret;
            }),
            h(i, 'pubBytes', function() {
              return this.eddsa.encodePoint(this.pub());
            }),
            h(i, 'pub', function() {
              return this._pubBytes
                ? this.eddsa.decodePoint(this._pubBytes)
                : this.eddsa.g.mul(this.priv());
            }),
            h(i, 'privBytes', function() {
              var b = this.eddsa,
                c = this.hash(),
                d = b.encodingLength - 1,
                e = c.slice(0, b.encodingLength);
              return (e[0] &= 248), (e[d] &= 127), (e[d] |= 64), e;
            }),
            h(i, 'priv', function() {
              return this.eddsa.decodeInt(this.privBytes());
            }),
            h(i, 'hash', function() {
              return this.eddsa
                .hash()
                .update(this.secret())
                .digest();
            }),
            h(i, 'messagePrefix', function() {
              return this.hash().slice(this.eddsa.encodingLength);
            }),
            (i.prototype.sign = function(b) {
              return (
                f(this._secret, 'KeyPair can only verify'),
                this.eddsa.sign(b, this)
              );
            }),
            (i.prototype.verify = function(b, c) {
              return this.eddsa.verify(b, c, this);
            }),
            (i.prototype.getSecret = function(b) {
              return (
                f(this._secret, 'KeyPair is public only'),
                e.encode(this.secret(), b)
              );
            }),
            (i.prototype.getPublic = function(b) {
              return e.encode(this.pubBytes(), b);
            }),
            (b.exports = i);
        },
        { '../../elliptic': 2 }
      ],
      14: [
        function(a, b, c) {
          'use strict';
          function j(a, b) {
            (this.eddsa = a),
              'object' != typeof b && (b = i(b)),
              Array.isArray(b) &&
                (b = {
                  R: b.slice(0, a.encodingLength),
                  S: b.slice(a.encodingLength)
                }),
              g(b.R && b.S, 'Signature without R or S'),
              a.isPoint(b.R) && (this._R = b.R),
              b.S instanceof d && (this._S = b.S),
              (this._Rencoded = Array.isArray(b.R) ? b.R : b.Rencoded),
              (this._Sencoded = Array.isArray(b.S) ? b.S : b.Sencoded);
          }
          var d = a('bn.js'),
            e = a('../../elliptic'),
            f = e.utils,
            g = f.assert,
            h = f.cachedProperty,
            i = f.parseBytes;
          h(j, 'S', function() {
            return this.eddsa.decodeInt(this.Sencoded());
          }),
            h(j, 'R', function() {
              return this.eddsa.decodePoint(this.Rencoded());
            }),
            h(j, 'Rencoded', function() {
              return this.eddsa.encodePoint(this.R());
            }),
            h(j, 'Sencoded', function() {
              return this.eddsa.encodeInt(this.S());
            }),
            (j.prototype.toBytes = function() {
              return this.Rencoded().concat(this.Sencoded());
            }),
            (j.prototype.toHex = function() {
              return f.encode(this.toBytes(), 'hex').toUpperCase();
            }),
            (b.exports = j);
        },
        { '../../elliptic': 2, 'bn.js': 1 }
      ],
      15: [
        function(a, b, c) {
          'use strict';
          function h(a) {
            if (!(this instanceof h)) return new h(a);
            (this.hash = a.hash),
              (this.predResist = !!a.predResist),
              (this.outLen = this.hash.outSize),
              (this.minEntropy = a.minEntropy || this.hash.hmacStrength),
              (this.reseed = null),
              (this.reseedInterval = null),
              (this.K = null),
              (this.V = null);
            var b = f.toArray(a.entropy, a.entropyEnc),
              c = f.toArray(a.nonce, a.nonceEnc),
              d = f.toArray(a.pers, a.persEnc);
            g(
              b.length >= this.minEntropy / 8,
              'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'
            ),
              this._init(b, c, d);
          }
          var d = a('hash.js'),
            e = a('../elliptic'),
            f = e.utils,
            g = f.assert;
          (b.exports = h),
            (h.prototype._init = function(b, c, d) {
              var e = b.concat(c).concat(d);
              (this.K = new Array(this.outLen / 8)),
                (this.V = new Array(this.outLen / 8));
              for (var f = 0; f < this.V.length; f++)
                (this.K[f] = 0), (this.V[f] = 1);
              this._update(e),
                (this.reseed = 1),
                (this.reseedInterval = 281474976710656);
            }),
            (h.prototype._hmac = function() {
              return new d.hmac(this.hash, this.K);
            }),
            (h.prototype._update = function(b) {
              var c = this._hmac()
                .update(this.V)
                .update([0]);
              b && (c = c.update(b)),
                (this.K = c.digest()),
                (this.V = this._hmac()
                  .update(this.V)
                  .digest()),
                b &&
                  ((this.K = this._hmac()
                    .update(this.V)
                    .update([1])
                    .update(b)
                    .digest()),
                  (this.V = this._hmac()
                    .update(this.V)
                    .digest()));
            }),
            (h.prototype.reseed = function(b, c, d, e) {
              'string' != typeof c && ((e = d), (d = c), (c = null)),
                (b = f.toBuffer(b, c)),
                (d = f.toBuffer(d, e)),
                g(
                  b.length >= this.minEntropy / 8,
                  'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'
                ),
                this._update(b.concat(d || [])),
                (this.reseed = 1);
            }),
            (h.prototype.generate = function(b, c, d, e) {
              if (this.reseed > this.reseedInterval)
                throw new Error('Reseed is required');
              'string' != typeof c && ((e = d), (d = c), (c = null)),
                d && ((d = f.toArray(d, e)), this._update(d));
              for (var g = []; g.length < b; )
                (this.V = this._hmac()
                  .update(this.V)
                  .digest()),
                  (g = g.concat(this.V));
              var h = g.slice(0, b);
              return this._update(d), this.reseed++, f.encode(h, c);
            });
        },
        { '../elliptic': 2, 'hash.js': 19 }
      ],
      16: [
        function(a, b, c) {
          b.exports = {
            doubles: {
              step: 4,
              points: [
                [
                  'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',
                  'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'
                ],
                [
                  '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',
                  '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'
                ],
                [
                  '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',
                  'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'
                ],
                [
                  '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',
                  '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'
                ],
                [
                  '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',
                  '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'
                ],
                [
                  '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',
                  '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'
                ],
                [
                  'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',
                  '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'
                ],
                [
                  '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',
                  'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'
                ],
                [
                  'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',
                  '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'
                ],
                [
                  'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',
                  'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'
                ],
                [
                  'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',
                  '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'
                ],
                [
                  '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',
                  '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'
                ],
                [
                  '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',
                  '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'
                ],
                [
                  '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',
                  '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'
                ],
                [
                  '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',
                  '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'
                ],
                [
                  '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',
                  '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'
                ],
                [
                  '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',
                  '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'
                ],
                [
                  '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',
                  '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'
                ],
                [
                  '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',
                  'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'
                ],
                [
                  'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',
                  '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'
                ],
                [
                  'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',
                  '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'
                ],
                [
                  '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',
                  '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'
                ],
                [
                  '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',
                  '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'
                ],
                [
                  'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',
                  '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'
                ],
                [
                  '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',
                  'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'
                ],
                [
                  'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',
                  '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'
                ],
                [
                  'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',
                  'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'
                ],
                [
                  'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',
                  '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'
                ],
                [
                  'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',
                  'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'
                ],
                [
                  'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',
                  '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'
                ],
                [
                  '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',
                  'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'
                ],
                [
                  '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',
                  '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'
                ],
                [
                  'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',
                  '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'
                ],
                [
                  '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',
                  'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'
                ],
                [
                  'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',
                  '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'
                ],
                [
                  'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',
                  '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'
                ],
                [
                  'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',
                  'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'
                ],
                [
                  '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',
                  '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'
                ],
                [
                  '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',
                  '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'
                ],
                [
                  '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',
                  'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'
                ],
                [
                  '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',
                  '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'
                ],
                [
                  'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',
                  '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'
                ],
                [
                  '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',
                  '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'
                ],
                [
                  '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',
                  'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'
                ],
                [
                  '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',
                  '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'
                ],
                [
                  'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',
                  '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'
                ],
                [
                  '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',
                  'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'
                ],
                [
                  'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',
                  'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'
                ],
                [
                  'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',
                  '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'
                ],
                [
                  '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',
                  'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'
                ],
                [
                  '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',
                  'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'
                ],
                [
                  'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',
                  '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'
                ],
                [
                  'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',
                  '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'
                ],
                [
                  'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',
                  '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'
                ],
                [
                  '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',
                  'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'
                ],
                [
                  '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',
                  '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'
                ],
                [
                  'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',
                  'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'
                ],
                [
                  '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',
                  'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'
                ],
                [
                  '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',
                  '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'
                ],
                [
                  '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',
                  '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'
                ],
                [
                  'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',
                  'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'
                ],
                [
                  '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',
                  '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'
                ],
                [
                  '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',
                  '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'
                ],
                [
                  'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',
                  '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'
                ],
                [
                  'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',
                  'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82'
                ]
              ]
            },
            naf: {
              wnd: 7,
              points: [
                [
                  'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',
                  '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'
                ],
                [
                  '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',
                  'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'
                ],
                [
                  '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',
                  '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'
                ],
                [
                  'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',
                  'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'
                ],
                [
                  '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',
                  'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'
                ],
                [
                  'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',
                  'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'
                ],
                [
                  'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',
                  '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'
                ],
                [
                  'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',
                  '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'
                ],
                [
                  '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',
                  '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'
                ],
                [
                  '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',
                  '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'
                ],
                [
                  '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',
                  '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'
                ],
                [
                  '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',
                  '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'
                ],
                [
                  'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',
                  'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'
                ],
                [
                  'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',
                  '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'
                ],
                [
                  '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',
                  'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'
                ],
                [
                  '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',
                  'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'
                ],
                [
                  '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',
                  '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'
                ],
                [
                  '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',
                  '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'
                ],
                [
                  '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',
                  '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'
                ],
                [
                  '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',
                  'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'
                ],
                [
                  'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',
                  'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'
                ],
                [
                  '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',
                  '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'
                ],
                [
                  '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',
                  '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'
                ],
                [
                  'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',
                  'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'
                ],
                [
                  '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',
                  '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'
                ],
                [
                  'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',
                  'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'
                ],
                [
                  'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',
                  'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'
                ],
                [
                  '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',
                  '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'
                ],
                [
                  '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',
                  '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'
                ],
                [
                  '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',
                  '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'
                ],
                [
                  'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',
                  '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'
                ],
                [
                  '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',
                  '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'
                ],
                [
                  'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',
                  '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'
                ],
                [
                  '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',
                  'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'
                ],
                [
                  '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',
                  'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'
                ],
                [
                  'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',
                  'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'
                ],
                [
                  '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',
                  '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'
                ],
                [
                  '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',
                  'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'
                ],
                [
                  'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',
                  'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'
                ],
                [
                  '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',
                  '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'
                ],
                [
                  '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',
                  'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'
                ],
                [
                  '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',
                  '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'
                ],
                [
                  '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',
                  'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'
                ],
                [
                  'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',
                  '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'
                ],
                [
                  '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',
                  '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'
                ],
                [
                  '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',
                  'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'
                ],
                [
                  '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',
                  'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'
                ],
                [
                  'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',
                  'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'
                ],
                [
                  'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',
                  'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'
                ],
                [
                  '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',
                  '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'
                ],
                [
                  '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',
                  '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'
                ],
                [
                  'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',
                  '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'
                ],
                [
                  'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',
                  'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'
                ],
                [
                  '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',
                  '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'
                ],
                [
                  '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',
                  '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'
                ],
                [
                  'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',
                  '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'
                ],
                [
                  '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',
                  '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'
                ],
                [
                  'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',
                  'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'
                ],
                [
                  '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',
                  'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'
                ],
                [
                  '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',
                  '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'
                ],
                [
                  'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',
                  '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'
                ],
                [
                  'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',
                  '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'
                ],
                [
                  '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',
                  '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'
                ],
                [
                  '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',
                  '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'
                ],
                [
                  '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',
                  'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'
                ],
                [
                  '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',
                  'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'
                ],
                [
                  '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',
                  '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'
                ],
                [
                  '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',
                  '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'
                ],
                [
                  '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',
                  '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'
                ],
                [
                  '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',
                  'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'
                ],
                [
                  'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',
                  'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'
                ],
                [
                  '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',
                  'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'
                ],
                [
                  'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',
                  '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'
                ],
                [
                  'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',
                  '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'
                ],
                [
                  'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',
                  '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'
                ],
                [
                  'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',
                  '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'
                ],
                [
                  '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',
                  'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'
                ],
                [
                  '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',
                  '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'
                ],
                [
                  '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',
                  'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'
                ],
                [
                  'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',
                  'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'
                ],
                [
                  'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',
                  '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'
                ],
                [
                  'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',
                  'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'
                ],
                [
                  'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',
                  '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'
                ],
                [
                  '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',
                  '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'
                ],
                [
                  'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',
                  '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'
                ],
                [
                  'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',
                  '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'
                ],
                [
                  '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',
                  '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'
                ],
                [
                  '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',
                  'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'
                ],
                [
                  'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',
                  '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'
                ],
                [
                  'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',
                  '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'
                ],
                [
                  'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',
                  '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'
                ],
                [
                  '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',
                  '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'
                ],
                [
                  'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',
                  'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'
                ],
                [
                  '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',
                  'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'
                ],
                [
                  'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',
                  'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'
                ],
                [
                  'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',
                  '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'
                ],
                [
                  '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',
                  'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'
                ],
                [
                  'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',
                  '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'
                ],
                [
                  'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',
                  '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'
                ],
                [
                  'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',
                  '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'
                ],
                [
                  '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',
                  'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'
                ],
                [
                  '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',
                  'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'
                ],
                [
                  'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',
                  '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'
                ],
                [
                  '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',
                  'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'
                ],
                [
                  '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',
                  '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'
                ],
                [
                  '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',
                  'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'
                ],
                [
                  'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',
                  'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'
                ],
                [
                  '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',
                  'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'
                ],
                [
                  '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',
                  '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'
                ],
                [
                  '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',
                  'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'
                ],
                [
                  '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',
                  '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'
                ],
                [
                  'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',
                  'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'
                ],
                [
                  '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',
                  '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'
                ],
                [
                  'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',
                  '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'
                ],
                [
                  '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',
                  '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'
                ],
                [
                  'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',
                  'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'
                ],
                [
                  'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',
                  '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'
                ],
                [
                  'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',
                  'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'
                ],
                [
                  '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',
                  'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'
                ],
                [
                  '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',
                  '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'
                ],
                [
                  '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',
                  'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'
                ],
                [
                  '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',
                  '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'
                ],
                [
                  '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',
                  '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'
                ],
                [
                  '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',
                  'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'
                ],
                [
                  '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',
                  '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'
                ],
                [
                  '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',
                  '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'
                ],
                [
                  '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',
                  '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9'
                ]
              ]
            }
          };
        },
        {}
      ],
      17: [
        function(a, b, c) {
          'use strict';
          function f(a, b) {
            if (Array.isArray(a)) return a.slice();
            if (!a) return [];
            var c = [];
            if ('string' != typeof a) {
              for (var d = 0; d < a.length; d++) c[d] = 0 | a[d];
              return c;
            }
            if (b) {
              if ('hex' === b) {
                (a = a.replace(/[^a-z0-9]+/gi, '')),
                  a.length % 2 !== 0 && (a = '0' + a);
                for (var d = 0; d < a.length; d += 2)
                  c.push(parseInt(a[d] + a[d + 1], 16));
              }
            } else
              for (var d = 0; d < a.length; d++) {
                var e = a.charCodeAt(d),
                  f = e >> 8,
                  g = 255 & e;
                f ? c.push(f, g) : c.push(g);
              }
            return c;
          }
          function g(a) {
            return 1 === a.length ? '0' + a : a;
          }
          function h(a) {
            for (var b = '', c = 0; c < a.length; c++)
              b += g(a[c].toString(16));
            return b;
          }
          function i(a, b) {
            for (
              var c = [], d = 1 << (b + 1), e = a.clone();
              e.cmpn(1) >= 0;

            ) {
              var f;
              if (e.isOdd()) {
                var g = e.andln(d - 1);
                (f = g > (d >> 1) - 1 ? (d >> 1) - g : g), e.isubn(f);
              } else f = 0;
              c.push(f);
              for (
                var h = 0 !== e.cmpn(0) && 0 === e.andln(d - 1) ? b + 1 : 1,
                  i = 1;
                i < h;
                i++
              )
                c.push(0);
              e.iushrn(h);
            }
            return c;
          }
          function j(a, b) {
            var c = [[], []];
            (a = a.clone()), (b = b.clone());
            for (var d = 0, e = 0; a.cmpn(-d) > 0 || b.cmpn(-e) > 0; ) {
              var f = (a.andln(3) + d) & 3,
                g = (b.andln(3) + e) & 3;
              3 === f && (f = -1), 3 === g && (g = -1);
              var h;
              if (0 === (1 & f)) h = 0;
              else {
                var i = (a.andln(7) + d) & 7;
                h = (3 !== i && 5 !== i) || 2 !== g ? f : -f;
              }
              c[0].push(h);
              var j;
              if (0 === (1 & g)) j = 0;
              else {
                var i = (b.andln(7) + e) & 7;
                j = (3 !== i && 5 !== i) || 2 !== f ? g : -g;
              }
              c[1].push(j),
                2 * d === h + 1 && (d = 1 - d),
                2 * e === j + 1 && (e = 1 - e),
                a.iushrn(1),
                b.iushrn(1);
            }
            return c;
          }
          function k(a, b, c) {
            var d = '_' + b;
            a.prototype[b] = function() {
              return void 0 !== this[d] ? this[d] : (this[d] = c.call(this));
            };
          }
          function l(a) {
            return 'string' == typeof a ? d.toArray(a, 'hex') : a;
          }
          function m(a) {
            return new e(a, 'hex', 'le');
          }
          var d = c,
            e = a('bn.js');
          (d.assert = function(b, c) {
            if (!b) throw new Error(c || 'Assertion failed');
          }),
            (d.toArray = f),
            (d.zero2 = g),
            (d.toHex = h),
            (d.encode = function(b, c) {
              return 'hex' === c ? h(b) : b;
            }),
            (d.getNAF = i),
            (d.getJSF = j),
            (d.cachedProperty = k),
            (d.parseBytes = l),
            (d.intFromLE = m);
        },
        { 'bn.js': 1 }
      ],
      18: [
        function(a, b, c) {
          function e(a) {
            this.rand = a;
          }
          var d;
          if (
            ((b.exports = function(b) {
              return d || (d = new e(null)), d.generate(b);
            }),
            (b.exports.Rand = e),
            (e.prototype.generate = function(b) {
              return this._rand(b);
            }),
            'object' == typeof self)
          )
            self.crypto && self.crypto.getRandomValues
              ? (e.prototype._rand = function(b) {
                  var c = new Uint8Array(b);
                  return self.crypto.getRandomValues(c), c;
                })
              : self.msCrypto && self.msCrypto.getRandomValues
              ? (e.prototype._rand = function(b) {
                  var c = new Uint8Array(b);
                  return self.msCrypto.getRandomValues(c), c;
                })
              : (e.prototype._rand = function() {
                  throw new Error('Not implemented yet');
                });
          else
            try {
              var f = a('crypto');
              e.prototype._rand = function(b) {
                return f.randomBytes(b);
              };
            } catch (a) {
              e.prototype._rand = function(b) {
                for (var c = new Uint8Array(b), d = 0; d < c.length; d++)
                  c[d] = this.rand.getByte();
                return c;
              };
            }
        },
        {}
      ],
      19: [
        function(a, b, c) {
          var d = c;
          (d.utils = a('./hash/utils')),
            (d.common = a('./hash/common')),
            (d.sha = a('./hash/sha')),
            (d.ripemd = a('./hash/ripemd')),
            (d.hmac = a('./hash/hmac')),
            (d.sha1 = d.sha.sha1),
            (d.sha256 = d.sha.sha256),
            (d.sha224 = d.sha.sha224),
            (d.sha384 = d.sha.sha384),
            (d.sha512 = d.sha.sha512),
            (d.ripemd160 = d.ripemd.ripemd160);
        },
        {
          './hash/common': 20,
          './hash/hmac': 21,
          './hash/ripemd': 22,
          './hash/sha': 23,
          './hash/utils': 24
        }
      ],
      20: [
        function(a, b, c) {
          function g() {
            (this.pending = null),
              (this.pendingTotal = 0),
              (this.blockSize = this.constructor.blockSize),
              (this.outSize = this.constructor.outSize),
              (this.hmacStrength = this.constructor.hmacStrength),
              (this.padLength = this.constructor.padLength / 8),
              (this.endian = 'big'),
              (this._delta8 = this.blockSize / 8),
              (this._delta32 = this.blockSize / 32);
          }
          var d = a('../hash'),
            e = d.utils,
            f = e.assert;
          (c.BlockHash = g),
            (g.prototype.update = function(b, c) {
              if (
                ((b = e.toArray(b, c)),
                this.pending
                  ? (this.pending = this.pending.concat(b))
                  : (this.pending = b),
                (this.pendingTotal += b.length),
                this.pending.length >= this._delta8)
              ) {
                b = this.pending;
                var d = b.length % this._delta8;
                (this.pending = b.slice(b.length - d, b.length)),
                  0 === this.pending.length && (this.pending = null),
                  (b = e.join32(b, 0, b.length - d, this.endian));
                for (var f = 0; f < b.length; f += this._delta32)
                  this._update(b, f, f + this._delta32);
              }
              return this;
            }),
            (g.prototype.digest = function(b) {
              return (
                this.update(this._pad()),
                f(null === this.pending),
                this._digest(b)
              );
            }),
            (g.prototype._pad = function() {
              var b = this.pendingTotal,
                c = this._delta8,
                d = c - ((b + this.padLength) % c),
                e = new Array(d + this.padLength);
              e[0] = 128;
              for (var f = 1; f < d; f++) e[f] = 0;
              if (((b <<= 3), 'big' === this.endian)) {
                for (var g = 8; g < this.padLength; g++) e[f++] = 0;
                (e[f++] = 0),
                  (e[f++] = 0),
                  (e[f++] = 0),
                  (e[f++] = 0),
                  (e[f++] = (b >>> 24) & 255),
                  (e[f++] = (b >>> 16) & 255),
                  (e[f++] = (b >>> 8) & 255),
                  (e[f++] = 255 & b);
              } else {
                (e[f++] = 255 & b),
                  (e[f++] = (b >>> 8) & 255),
                  (e[f++] = (b >>> 16) & 255),
                  (e[f++] = (b >>> 24) & 255),
                  (e[f++] = 0),
                  (e[f++] = 0),
                  (e[f++] = 0),
                  (e[f++] = 0);
                for (var g = 8; g < this.padLength; g++) e[f++] = 0;
              }
              return e;
            });
        },
        { '../hash': 19 }
      ],
      21: [
        function(a, b, c) {
          function h(a, b, c) {
            return this instanceof h
              ? ((this.Hash = a),
                (this.blockSize = a.blockSize / 8),
                (this.outSize = a.outSize / 8),
                (this.inner = null),
                (this.outer = null),
                void this._init(f.toArray(b, c)))
              : new h(a, b, c);
          }
          var e = a('../hash'),
            f = e.utils,
            g = f.assert;
          (b.exports = h),
            (h.prototype._init = function(b) {
              b.length > this.blockSize &&
                (b = new this.Hash().update(b).digest()),
                g(b.length <= this.blockSize);
              for (var c = b.length; c < this.blockSize; c++) b.push(0);
              for (var c = 0; c < b.length; c++) b[c] ^= 54;
              this.inner = new this.Hash().update(b);
              for (var c = 0; c < b.length; c++) b[c] ^= 106;
              this.outer = new this.Hash().update(b);
            }),
            (h.prototype.update = function(b, c) {
              return this.inner.update(b, c), this;
            }),
            (h.prototype.digest = function(b) {
              return (
                this.outer.update(this.inner.digest()), this.outer.digest(b)
              );
            });
        },
        { '../hash': 19 }
      ],
      22: [
        function(a, b, c) {
          function k() {
            return this instanceof k
              ? (j.call(this),
                (this.h = [
                  1732584193,
                  4023233417,
                  2562383102,
                  271733878,
                  3285377520
                ]),
                void (this.endian = 'little'))
              : new k();
          }
          function l(a, b, c, d) {
            return a <= 15
              ? b ^ c ^ d
              : a <= 31
              ? (b & c) | (~b & d)
              : a <= 47
              ? (b | ~c) ^ d
              : a <= 63
              ? (b & d) | (c & ~d)
              : b ^ (c | ~d);
          }
          function m(a) {
            return a <= 15
              ? 0
              : a <= 31
              ? 1518500249
              : a <= 47
              ? 1859775393
              : a <= 63
              ? 2400959708
              : 2840853838;
          }
          function n(a) {
            return a <= 15
              ? 1352829926
              : a <= 31
              ? 1548603684
              : a <= 47
              ? 1836072691
              : a <= 63
              ? 2053994217
              : 0;
          }
          var d = a('../hash'),
            e = d.utils,
            f = e.rotl32,
            g = e.sum32,
            h = e.sum32_3,
            i = e.sum32_4,
            j = d.common.BlockHash;
          e.inherits(k, j),
            (c.ripemd160 = k),
            (k.blockSize = 512),
            (k.outSize = 160),
            (k.hmacStrength = 192),
            (k.padLength = 64),
            (k.prototype._update = function(b, c) {
              for (
                var d = this.h[0],
                  e = this.h[1],
                  j = this.h[2],
                  k = this.h[3],
                  s = this.h[4],
                  t = d,
                  u = e,
                  v = j,
                  w = k,
                  x = s,
                  y = 0;
                y < 80;
                y++
              ) {
                var z = g(f(i(d, l(y, e, j, k), b[o[y] + c], m(y)), q[y]), s);
                (d = s),
                  (s = k),
                  (k = f(j, 10)),
                  (j = e),
                  (e = z),
                  (z = g(
                    f(i(t, l(79 - y, u, v, w), b[p[y] + c], n(y)), r[y]),
                    x
                  )),
                  (t = x),
                  (x = w),
                  (w = f(v, 10)),
                  (v = u),
                  (u = z);
              }
              (z = h(this.h[1], j, w)),
                (this.h[1] = h(this.h[2], k, x)),
                (this.h[2] = h(this.h[3], s, t)),
                (this.h[3] = h(this.h[4], d, u)),
                (this.h[4] = h(this.h[0], e, v)),
                (this.h[0] = z);
            }),
            (k.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h, 'little')
                : e.split32(this.h, 'little');
            });
          var o = [
              0,
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              7,
              4,
              13,
              1,
              10,
              6,
              15,
              3,
              12,
              0,
              9,
              5,
              2,
              14,
              11,
              8,
              3,
              10,
              14,
              4,
              9,
              15,
              8,
              1,
              2,
              7,
              0,
              6,
              13,
              11,
              5,
              12,
              1,
              9,
              11,
              10,
              0,
              8,
              12,
              4,
              13,
              3,
              7,
              15,
              14,
              5,
              6,
              2,
              4,
              0,
              5,
              9,
              7,
              12,
              2,
              10,
              14,
              1,
              3,
              8,
              11,
              6,
              15,
              13
            ],
            p = [
              5,
              14,
              7,
              0,
              9,
              2,
              11,
              4,
              13,
              6,
              15,
              8,
              1,
              10,
              3,
              12,
              6,
              11,
              3,
              7,
              0,
              13,
              5,
              10,
              14,
              15,
              8,
              12,
              4,
              9,
              1,
              2,
              15,
              5,
              1,
              3,
              7,
              14,
              6,
              9,
              11,
              8,
              12,
              2,
              10,
              0,
              4,
              13,
              8,
              6,
              4,
              1,
              3,
              11,
              15,
              0,
              5,
              12,
              2,
              13,
              9,
              7,
              10,
              14,
              12,
              15,
              10,
              4,
              1,
              5,
              8,
              7,
              6,
              2,
              13,
              14,
              0,
              3,
              9,
              11
            ],
            q = [
              11,
              14,
              15,
              12,
              5,
              8,
              7,
              9,
              11,
              13,
              14,
              15,
              6,
              7,
              9,
              8,
              7,
              6,
              8,
              13,
              11,
              9,
              7,
              15,
              7,
              12,
              15,
              9,
              11,
              7,
              13,
              12,
              11,
              13,
              6,
              7,
              14,
              9,
              13,
              15,
              14,
              8,
              13,
              6,
              5,
              12,
              7,
              5,
              11,
              12,
              14,
              15,
              14,
              15,
              9,
              8,
              9,
              14,
              5,
              6,
              8,
              6,
              5,
              12,
              9,
              15,
              5,
              11,
              6,
              8,
              13,
              12,
              5,
              12,
              13,
              14,
              11,
              8,
              5,
              6
            ],
            r = [
              8,
              9,
              9,
              11,
              13,
              15,
              15,
              5,
              7,
              7,
              8,
              11,
              14,
              14,
              12,
              6,
              9,
              13,
              15,
              7,
              12,
              8,
              9,
              11,
              7,
              7,
              12,
              7,
              6,
              15,
              13,
              11,
              9,
              7,
              15,
              11,
              8,
              6,
              6,
              14,
              12,
              13,
              5,
              14,
              13,
              13,
              7,
              5,
              15,
              5,
              8,
              11,
              14,
              14,
              6,
              14,
              6,
              9,
              12,
              9,
              12,
              5,
              15,
              8,
              8,
              5,
              12,
              9,
              12,
              5,
              14,
              6,
              8,
              13,
              6,
              5,
              15,
              13,
              11,
              11
            ];
        },
        { '../hash': 19 }
      ],
      23: [
        function(a, b, c) {
          function A() {
            return this instanceof A
              ? (w.call(this),
                (this.h = [
                  1779033703,
                  3144134277,
                  1013904242,
                  2773480762,
                  1359893119,
                  2600822924,
                  528734635,
                  1541459225
                ]),
                (this.k = x),
                void (this.W = new Array(64)))
              : new A();
          }
          function B() {
            return this instanceof B
              ? (A.call(this),
                void (this.h = [
                  3238371032,
                  914150663,
                  812702999,
                  4144912697,
                  4290775857,
                  1750603025,
                  1694076839,
                  3204075428
                ]))
              : new B();
          }
          function C() {
            return this instanceof C
              ? (w.call(this),
                (this.h = [
                  1779033703,
                  4089235720,
                  3144134277,
                  2227873595,
                  1013904242,
                  4271175723,
                  2773480762,
                  1595750129,
                  1359893119,
                  2917565137,
                  2600822924,
                  725511199,
                  528734635,
                  4215389547,
                  1541459225,
                  327033209
                ]),
                (this.k = y),
                void (this.W = new Array(160)))
              : new C();
          }
          function D() {
            return this instanceof D
              ? (C.call(this),
                void (this.h = [
                  3418070365,
                  3238371032,
                  1654270250,
                  914150663,
                  2438529370,
                  812702999,
                  355462360,
                  4144912697,
                  1731405415,
                  4290775857,
                  2394180231,
                  1750603025,
                  3675008525,
                  1694076839,
                  1203062813,
                  3204075428
                ]))
              : new D();
          }
          function E() {
            return this instanceof E
              ? (w.call(this),
                (this.h = [
                  1732584193,
                  4023233417,
                  2562383102,
                  271733878,
                  3285377520
                ]),
                void (this.W = new Array(80)))
              : new E();
          }
          function F(a, b, c) {
            return (a & b) ^ (~a & c);
          }
          function G(a, b, c) {
            return (a & b) ^ (a & c) ^ (b & c);
          }
          function H(a, b, c) {
            return a ^ b ^ c;
          }
          function I(a) {
            return g(a, 2) ^ g(a, 13) ^ g(a, 22);
          }
          function J(a) {
            return g(a, 6) ^ g(a, 11) ^ g(a, 25);
          }
          function K(a) {
            return g(a, 7) ^ g(a, 18) ^ (a >>> 3);
          }
          function L(a) {
            return g(a, 17) ^ g(a, 19) ^ (a >>> 10);
          }
          function M(a, b, c, d) {
            return 0 === a
              ? F(b, c, d)
              : 1 === a || 3 === a
              ? H(b, c, d)
              : 2 === a
              ? G(b, c, d)
              : void 0;
          }
          function N(a, b, c, d, e, f) {
            var g = (a & c) ^ (~a & e);
            return g < 0 && (g += 4294967296), g;
          }
          function O(a, b, c, d, e, f) {
            var g = (b & d) ^ (~b & f);
            return g < 0 && (g += 4294967296), g;
          }
          function P(a, b, c, d, e, f) {
            var g = (a & c) ^ (a & e) ^ (c & e);
            return g < 0 && (g += 4294967296), g;
          }
          function Q(a, b, c, d, e, f) {
            var g = (b & d) ^ (b & f) ^ (d & f);
            return g < 0 && (g += 4294967296), g;
          }
          function R(a, b) {
            var c = l(a, b, 28),
              d = l(b, a, 2),
              e = l(b, a, 7),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function S(a, b) {
            var c = m(a, b, 28),
              d = m(b, a, 2),
              e = m(b, a, 7),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function T(a, b) {
            var c = l(a, b, 14),
              d = l(a, b, 18),
              e = l(b, a, 9),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function U(a, b) {
            var c = m(a, b, 14),
              d = m(a, b, 18),
              e = m(b, a, 9),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function V(a, b) {
            var c = l(a, b, 1),
              d = l(a, b, 8),
              e = n(a, b, 7),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function W(a, b) {
            var c = m(a, b, 1),
              d = m(a, b, 8),
              e = o(a, b, 7),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function X(a, b) {
            var c = l(a, b, 19),
              d = l(b, a, 29),
              e = n(a, b, 6),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          function Y(a, b) {
            var c = m(a, b, 19),
              d = m(b, a, 29),
              e = o(a, b, 6),
              f = c ^ d ^ e;
            return f < 0 && (f += 4294967296), f;
          }
          var d = a('../hash'),
            e = d.utils,
            f = e.assert,
            g = e.rotr32,
            h = e.rotl32,
            i = e.sum32,
            j = e.sum32_4,
            k = e.sum32_5,
            l = e.rotr64_hi,
            m = e.rotr64_lo,
            n = e.shr64_hi,
            o = e.shr64_lo,
            p = e.sum64,
            q = e.sum64_hi,
            r = e.sum64_lo,
            s = e.sum64_4_hi,
            t = e.sum64_4_lo,
            u = e.sum64_5_hi,
            v = e.sum64_5_lo,
            w = d.common.BlockHash,
            x = [
              1116352408,
              1899447441,
              3049323471,
              3921009573,
              961987163,
              1508970993,
              2453635748,
              2870763221,
              3624381080,
              310598401,
              607225278,
              1426881987,
              1925078388,
              2162078206,
              2614888103,
              3248222580,
              3835390401,
              4022224774,
              264347078,
              604807628,
              770255983,
              1249150122,
              1555081692,
              1996064986,
              2554220882,
              2821834349,
              2952996808,
              3210313671,
              3336571891,
              3584528711,
              113926993,
              338241895,
              666307205,
              773529912,
              1294757372,
              1396182291,
              1695183700,
              1986661051,
              2177026350,
              2456956037,
              2730485921,
              2820302411,
              3259730800,
              3345764771,
              3516065817,
              3600352804,
              4094571909,
              275423344,
              430227734,
              506948616,
              659060556,
              883997877,
              958139571,
              1322822218,
              1537002063,
              1747873779,
              1955562222,
              2024104815,
              2227730452,
              2361852424,
              2428436474,
              2756734187,
              3204031479,
              3329325298
            ],
            y = [
              1116352408,
              3609767458,
              1899447441,
              602891725,
              3049323471,
              3964484399,
              3921009573,
              2173295548,
              961987163,
              4081628472,
              1508970993,
              3053834265,
              2453635748,
              2937671579,
              2870763221,
              3664609560,
              3624381080,
              2734883394,
              310598401,
              1164996542,
              607225278,
              1323610764,
              1426881987,
              3590304994,
              1925078388,
              4068182383,
              2162078206,
              991336113,
              2614888103,
              633803317,
              3248222580,
              3479774868,
              3835390401,
              2666613458,
              4022224774,
              944711139,
              264347078,
              2341262773,
              604807628,
              2007800933,
              770255983,
              1495990901,
              1249150122,
              1856431235,
              1555081692,
              3175218132,
              1996064986,
              2198950837,
              2554220882,
              3999719339,
              2821834349,
              766784016,
              2952996808,
              2566594879,
              3210313671,
              3203337956,
              3336571891,
              1034457026,
              3584528711,
              2466948901,
              113926993,
              3758326383,
              338241895,
              168717936,
              666307205,
              1188179964,
              773529912,
              1546045734,
              1294757372,
              1522805485,
              1396182291,
              2643833823,
              1695183700,
              2343527390,
              1986661051,
              1014477480,
              2177026350,
              1206759142,
              2456956037,
              344077627,
              2730485921,
              1290863460,
              2820302411,
              3158454273,
              3259730800,
              3505952657,
              3345764771,
              106217008,
              3516065817,
              3606008344,
              3600352804,
              1432725776,
              4094571909,
              1467031594,
              275423344,
              851169720,
              430227734,
              3100823752,
              506948616,
              1363258195,
              659060556,
              3750685593,
              883997877,
              3785050280,
              958139571,
              3318307427,
              1322822218,
              3812723403,
              1537002063,
              2003034995,
              1747873779,
              3602036899,
              1955562222,
              1575990012,
              2024104815,
              1125592928,
              2227730452,
              2716904306,
              2361852424,
              442776044,
              2428436474,
              593698344,
              2756734187,
              3733110249,
              3204031479,
              2999351573,
              3329325298,
              3815920427,
              3391569614,
              3928383900,
              3515267271,
              566280711,
              3940187606,
              3454069534,
              4118630271,
              4000239992,
              116418474,
              1914138554,
              174292421,
              2731055270,
              289380356,
              3203993006,
              460393269,
              320620315,
              685471733,
              587496836,
              852142971,
              1086792851,
              1017036298,
              365543100,
              1126000580,
              2618297676,
              1288033470,
              3409855158,
              1501505948,
              4234509866,
              1607167915,
              987167468,
              1816402316,
              1246189591
            ],
            z = [1518500249, 1859775393, 2400959708, 3395469782];
          e.inherits(A, w),
            (c.sha256 = A),
            (A.blockSize = 512),
            (A.outSize = 256),
            (A.hmacStrength = 192),
            (A.padLength = 64),
            (A.prototype._update = function(b, c) {
              for (var d = this.W, e = 0; e < 16; e++) d[e] = b[c + e];
              for (; e < d.length; e++)
                d[e] = j(L(d[e - 2]), d[e - 7], K(d[e - 15]), d[e - 16]);
              var g = this.h[0],
                h = this.h[1],
                l = this.h[2],
                m = this.h[3],
                n = this.h[4],
                o = this.h[5],
                p = this.h[6],
                q = this.h[7];
              f(this.k.length === d.length);
              for (var e = 0; e < d.length; e++) {
                var r = k(q, J(n), F(n, o, p), this.k[e], d[e]),
                  s = i(I(g), G(g, h, l));
                (q = p),
                  (p = o),
                  (o = n),
                  (n = i(m, r)),
                  (m = l),
                  (l = h),
                  (h = g),
                  (g = i(r, s));
              }
              (this.h[0] = i(this.h[0], g)),
                (this.h[1] = i(this.h[1], h)),
                (this.h[2] = i(this.h[2], l)),
                (this.h[3] = i(this.h[3], m)),
                (this.h[4] = i(this.h[4], n)),
                (this.h[5] = i(this.h[5], o)),
                (this.h[6] = i(this.h[6], p)),
                (this.h[7] = i(this.h[7], q));
            }),
            (A.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h, 'big')
                : e.split32(this.h, 'big');
            }),
            e.inherits(B, A),
            (c.sha224 = B),
            (B.blockSize = 512),
            (B.outSize = 224),
            (B.hmacStrength = 192),
            (B.padLength = 64),
            (B.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h.slice(0, 7), 'big')
                : e.split32(this.h.slice(0, 7), 'big');
            }),
            e.inherits(C, w),
            (c.sha512 = C),
            (C.blockSize = 1024),
            (C.outSize = 512),
            (C.hmacStrength = 192),
            (C.padLength = 128),
            (C.prototype._prepareBlock = function(b, c) {
              for (var d = this.W, e = 0; e < 32; e++) d[e] = b[c + e];
              for (; e < d.length; e += 2) {
                var f = X(d[e - 4], d[e - 3]),
                  g = Y(d[e - 4], d[e - 3]),
                  h = d[e - 14],
                  i = d[e - 13],
                  j = V(d[e - 30], d[e - 29]),
                  k = W(d[e - 30], d[e - 29]),
                  l = d[e - 32],
                  m = d[e - 31];
                (d[e] = s(f, g, h, i, j, k, l, m)),
                  (d[e + 1] = t(f, g, h, i, j, k, l, m));
              }
            }),
            (C.prototype._update = function(b, c) {
              this._prepareBlock(b, c);
              var d = this.W,
                e = this.h[0],
                g = this.h[1],
                h = this.h[2],
                i = this.h[3],
                j = this.h[4],
                k = this.h[5],
                l = this.h[6],
                m = this.h[7],
                n = this.h[8],
                o = this.h[9],
                s = this.h[10],
                t = this.h[11],
                w = this.h[12],
                x = this.h[13],
                y = this.h[14],
                z = this.h[15];
              f(this.k.length === d.length);
              for (var A = 0; A < d.length; A += 2) {
                var B = y,
                  C = z,
                  D = T(n, o),
                  E = U(n, o),
                  F = N(n, o, s, t, w, x),
                  G = O(n, o, s, t, w, x),
                  H = this.k[A],
                  I = this.k[A + 1],
                  J = d[A],
                  K = d[A + 1],
                  L = u(B, C, D, E, F, G, H, I, J, K),
                  M = v(B, C, D, E, F, G, H, I, J, K),
                  B = R(e, g),
                  C = S(e, g),
                  D = P(e, g, h, i, j, k),
                  E = Q(e, g, h, i, j, k),
                  V = q(B, C, D, E),
                  W = r(B, C, D, E);
                (y = w),
                  (z = x),
                  (w = s),
                  (x = t),
                  (s = n),
                  (t = o),
                  (n = q(l, m, L, M)),
                  (o = r(m, m, L, M)),
                  (l = j),
                  (m = k),
                  (j = h),
                  (k = i),
                  (h = e),
                  (i = g),
                  (e = q(L, M, V, W)),
                  (g = r(L, M, V, W));
              }
              p(this.h, 0, e, g),
                p(this.h, 2, h, i),
                p(this.h, 4, j, k),
                p(this.h, 6, l, m),
                p(this.h, 8, n, o),
                p(this.h, 10, s, t),
                p(this.h, 12, w, x),
                p(this.h, 14, y, z);
            }),
            (C.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h, 'big')
                : e.split32(this.h, 'big');
            }),
            e.inherits(D, C),
            (c.sha384 = D),
            (D.blockSize = 1024),
            (D.outSize = 384),
            (D.hmacStrength = 192),
            (D.padLength = 128),
            (D.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h.slice(0, 12), 'big')
                : e.split32(this.h.slice(0, 12), 'big');
            }),
            e.inherits(E, w),
            (c.sha1 = E),
            (E.blockSize = 512),
            (E.outSize = 160),
            (E.hmacStrength = 80),
            (E.padLength = 64),
            (E.prototype._update = function(b, c) {
              for (var d = this.W, e = 0; e < 16; e++) d[e] = b[c + e];
              for (; e < d.length; e++)
                d[e] = h(d[e - 3] ^ d[e - 8] ^ d[e - 14] ^ d[e - 16], 1);
              for (
                var f = this.h[0],
                  g = this.h[1],
                  j = this.h[2],
                  l = this.h[3],
                  m = this.h[4],
                  e = 0;
                e < d.length;
                e++
              ) {
                var n = ~~(e / 20),
                  o = k(h(f, 5), M(n, g, j, l), m, d[e], z[n]);
                (m = l), (l = j), (j = h(g, 30)), (g = f), (f = o);
              }
              (this.h[0] = i(this.h[0], f)),
                (this.h[1] = i(this.h[1], g)),
                (this.h[2] = i(this.h[2], j)),
                (this.h[3] = i(this.h[3], l)),
                (this.h[4] = i(this.h[4], m));
            }),
            (E.prototype._digest = function(b) {
              return 'hex' === b
                ? e.toHex32(this.h, 'big')
                : e.split32(this.h, 'big');
            });
        },
        { '../hash': 19 }
      ],
      24: [
        function(a, b, c) {
          function f(a, b) {
            if (Array.isArray(a)) return a.slice();
            if (!a) return [];
            var c = [];
            if ('string' == typeof a)
              if (b) {
                if ('hex' === b) {
                  (a = a.replace(/[^a-z0-9]+/gi, '')),
                    a.length % 2 !== 0 && (a = '0' + a);
                  for (var d = 0; d < a.length; d += 2)
                    c.push(parseInt(a[d] + a[d + 1], 16));
                }
              } else
                for (var d = 0; d < a.length; d++) {
                  var e = a.charCodeAt(d),
                    f = e >> 8,
                    g = 255 & e;
                  f ? c.push(f, g) : c.push(g);
                }
            else for (var d = 0; d < a.length; d++) c[d] = 0 | a[d];
            return c;
          }
          function g(a) {
            for (var b = '', c = 0; c < a.length; c++)
              b += j(a[c].toString(16));
            return b;
          }
          function h(a) {
            var b =
              (a >>> 24) |
              ((a >>> 8) & 65280) |
              ((a << 8) & 16711680) |
              ((255 & a) << 24);
            return b >>> 0;
          }
          function i(a, b) {
            for (var c = '', d = 0; d < a.length; d++) {
              var e = a[d];
              'little' === b && (e = h(e)), (c += k(e.toString(16)));
            }
            return c;
          }
          function j(a) {
            return 1 === a.length ? '0' + a : a;
          }
          function k(a) {
            return 7 === a.length
              ? '0' + a
              : 6 === a.length
              ? '00' + a
              : 5 === a.length
              ? '000' + a
              : 4 === a.length
              ? '0000' + a
              : 3 === a.length
              ? '00000' + a
              : 2 === a.length
              ? '000000' + a
              : 1 === a.length
              ? '0000000' + a
              : a;
          }
          function l(a, b, c, d) {
            var e = c - b;
            t(e % 4 === 0);
            for (
              var f = new Array(e / 4), g = 0, h = b;
              g < f.length;
              g++, h += 4
            ) {
              var i;
              (i =
                'big' === d
                  ? (a[h] << 24) | (a[h + 1] << 16) | (a[h + 2] << 8) | a[h + 3]
                  : (a[h + 3] << 24) |
                    (a[h + 2] << 16) |
                    (a[h + 1] << 8) |
                    a[h]),
                (f[g] = i >>> 0);
            }
            return f;
          }
          function m(a, b) {
            for (
              var c = new Array(4 * a.length), d = 0, e = 0;
              d < a.length;
              d++, e += 4
            ) {
              var f = a[d];
              'big' === b
                ? ((c[e] = f >>> 24),
                  (c[e + 1] = (f >>> 16) & 255),
                  (c[e + 2] = (f >>> 8) & 255),
                  (c[e + 3] = 255 & f))
                : ((c[e + 3] = f >>> 24),
                  (c[e + 2] = (f >>> 16) & 255),
                  (c[e + 1] = (f >>> 8) & 255),
                  (c[e] = 255 & f));
            }
            return c;
          }
          function n(a, b) {
            return (a >>> b) | (a << (32 - b));
          }
          function o(a, b) {
            return (a << b) | (a >>> (32 - b));
          }
          function p(a, b) {
            return (a + b) >>> 0;
          }
          function q(a, b, c) {
            return (a + b + c) >>> 0;
          }
          function r(a, b, c, d) {
            return (a + b + c + d) >>> 0;
          }
          function s(a, b, c, d, e) {
            return (a + b + c + d + e) >>> 0;
          }
          function t(a, b) {
            if (!a) throw new Error(b || 'Assertion failed');
          }
          function u(a, b, c, d) {
            var e = a[b],
              f = a[b + 1],
              g = (d + f) >>> 0,
              h = (g < d ? 1 : 0) + c + e;
            (a[b] = h >>> 0), (a[b + 1] = g);
          }
          function v(a, b, c, d) {
            var e = (b + d) >>> 0,
              f = (e < b ? 1 : 0) + a + c;
            return f >>> 0;
          }
          function w(a, b, c, d) {
            var e = b + d;
            return e >>> 0;
          }
          function x(a, b, c, d, e, f, g, h) {
            var i = 0,
              j = b;
            (j = (j + d) >>> 0),
              (i += j < b ? 1 : 0),
              (j = (j + f) >>> 0),
              (i += j < f ? 1 : 0),
              (j = (j + h) >>> 0),
              (i += j < h ? 1 : 0);
            var k = a + c + e + g + i;
            return k >>> 0;
          }
          function y(a, b, c, d, e, f, g, h) {
            var i = b + d + f + h;
            return i >>> 0;
          }
          function z(a, b, c, d, e, f, g, h, i, j) {
            var k = 0,
              l = b;
            (l = (l + d) >>> 0),
              (k += l < b ? 1 : 0),
              (l = (l + f) >>> 0),
              (k += l < f ? 1 : 0),
              (l = (l + h) >>> 0),
              (k += l < h ? 1 : 0),
              (l = (l + j) >>> 0),
              (k += l < j ? 1 : 0);
            var m = a + c + e + g + i + k;
            return m >>> 0;
          }
          function A(a, b, c, d, e, f, g, h, i, j) {
            var k = b + d + f + h + j;
            return k >>> 0;
          }
          function B(a, b, c) {
            var d = (b << (32 - c)) | (a >>> c);
            return d >>> 0;
          }
          function C(a, b, c) {
            var d = (a << (32 - c)) | (b >>> c);
            return d >>> 0;
          }
          function D(a, b, c) {
            return a >>> c;
          }
          function E(a, b, c) {
            var d = (a << (32 - c)) | (b >>> c);
            return d >>> 0;
          }
          var d = c,
            e = a('inherits');
          (d.toArray = f),
            (d.toHex = g),
            (d.htonl = h),
            (d.toHex32 = i),
            (d.zero2 = j),
            (d.zero8 = k),
            (d.join32 = l),
            (d.split32 = m),
            (d.rotr32 = n),
            (d.rotl32 = o),
            (d.sum32 = p),
            (d.sum32_3 = q),
            (d.sum32_4 = r),
            (d.sum32_5 = s),
            (d.assert = t),
            (d.inherits = e),
            (c.sum64 = u),
            (c.sum64_hi = v),
            (c.sum64_lo = w),
            (c.sum64_4_hi = x),
            (c.sum64_4_lo = y),
            (c.sum64_5_hi = z),
            (c.sum64_5_lo = A),
            (c.rotr64_hi = B),
            (c.rotr64_lo = C),
            (c.shr64_hi = D),
            (c.shr64_lo = E);
        },
        { inherits: 25 }
      ],
      25: [
        function(a, b, c) {
          'function' == typeof Object.create
            ? (b.exports = function(b, c) {
                (b.super_ = c),
                  (b.prototype = Object.create(c.prototype, {
                    constructor: {
                      value: b,
                      enumerable: !1,
                      writable: !0,
                      configurable: !0
                    }
                  }));
              })
            : (b.exports = function(b, c) {
                b.super_ = c;
                var d = function() {};
                (d.prototype = c.prototype),
                  (b.prototype = new d()),
                  (b.prototype.constructor = b);
              });
        },
        {}
      ],
      26: [
        function(a, b, c) {
          b.exports = {
            name: 'elliptic',
            version: '6.3.2',
            description: 'EC cryptography',
            main: 'lib/elliptic.js',
            files: ['lib'],
            scripts: {
              jscs:
                'jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js',
              jshint:
                'jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js',
              lint: 'npm run jscs && npm run jshint',
              unit: 'istanbul test _mocha --reporter=spec test/index.js',
              test: 'npm run lint && npm run unit',
              version: 'grunt dist && git add dist/'
            },
            repository: { type: 'git', url: 'git@github.com:indutny/elliptic' },
            keywords: ['EC', 'Elliptic', 'curve', 'Cryptography'],
            author: 'Fedor Indutny <fedor@indutny.com>',
            license: 'MIT',
            bugs: { url: 'https://github.com/indutny/elliptic/issues' },
            homepage: 'https://github.com/indutny/elliptic',
            devDependencies: {
              brfs: '^1.4.3',
              coveralls: '^2.11.3',
              grunt: '^0.4.5',
              'grunt-browserify': '^5.0.0',
              'grunt-contrib-connect': '^1.0.0',
              'grunt-contrib-copy': '^1.0.0',
              'grunt-contrib-uglify': '^1.0.1',
              'grunt-mocha-istanbul': '^3.0.1',
              'grunt-saucelabs': '^8.6.2',
              istanbul: '^0.4.2',
              jscs: '^2.9.0',
              jshint: '^2.6.0',
              mocha: '^2.1.0'
            },
            dependencies: {
              'bn.js': '^4.4.0',
              brorand: '^1.0.1',
              'hash.js': '^1.0.0',
              inherits: '^2.0.1'
            }
          };
        },
        {}
      ]
    },
    {},
    [2]
  )(2);
});

var liner = (function(e) {
  function r(n) {
    if (t[n]) return t[n].exports;
    var a = (t[n] = { i: n, l: !1, exports: {} });
    return e[n].call(a.exports, a, a.exports, r), (a.l = !0), a.exports;
  }
  var t = {};
  return (
    (r.m = e),
    (r.c = t),
    (r.d = function(e, t, n) {
      r.o(e, t) ||
        Object.defineProperty(e, t, {
          configurable: !1,
          enumerable: !0,
          get: n
        });
    }),
    (r.n = function(e) {
      var t =
        e && e.__esModule
          ? function() {
              return e.default;
            }
          : function() {
              return e;
            };
      return r.d(t, 'a', t), t;
    }),
    (r.o = function(e, r) {
      return Object.prototype.hasOwnProperty.call(e, r);
    }),
    (r.p = ''),
    r((r.s = 17))
  );
})([
  function(e, r, t) {
    'use strict';
    Object.defineProperty(r, '__esModule', { value: !0 }),
      function(e) {
        function n(e) {
          for (var r, t = e, n = /[^%](%\d+)/g, a = []; (r = n.exec(t)); )
            a.push({ arg: r[1], index: r.index });
          for (var o = a.length - 1; o >= 0; o--) {
            var i = a[o],
              s = i.arg.substring(1),
              c = i.index + 1;
            t =
              t.substring(0, c) + arguments[+s] + t.substring(c + 1 + s.length);
          }
          return (t = t.replace('%%', '%'));
        }
        function a(e) {
          var r;
          (r = 'string' == typeof e ? { name: e } : e), p.checkAlgorithm(r);
          var t = e;
          return t.hash && (t.hash = a(t.hash)), r;
        }
        function o(e, r) {
          if (!e)
            throw new s("Parameter '" + r + "' is required and cant be empty");
          if ('undefined' != typeof Buffer && Buffer.isBuffer(e))
            return new Uint8Array(e);
          if (ArrayBuffer.isView(e)) {
            var t = e.map(function(e) {
              return e;
            });
            return new Uint8Array(t.buffer);
          }
          if (e instanceof ArrayBuffer) return new Uint8Array(e);
          throw new s(
            "Incoming parameter '" +
              r +
              "' has wrong data type. Must be ArrayBufferView or ArrayBuffer"
          );
        }
        t.d(r, 'WebCryptoError', function() {
          return s;
        }),
          t.d(r, 'AlgorithmError', function() {
            return c;
          }),
          t.d(r, 'CryptoKeyError', function() {
            return u;
          }),
          t.d(r, 'PrepareAlgorithm', function() {
            return a;
          }),
          t.d(r, 'PrepareData', function() {
            return o;
          }),
          t.d(r, 'BaseCrypto', function() {
            return p;
          }),
          t.d(r, 'AlgorithmNames', function() {
            return h;
          }),
          t.d(r, 'Base64Url', function() {
            return y;
          }),
          t.d(r, 'SubtleCrypto', function() {
            return W;
          }),
          t.d(r, 'Aes', function() {
            return m;
          }),
          t.d(r, 'AesAlgorithmError', function() {
            return A;
          }),
          t.d(r, 'AesWrapKey', function() {
            return w;
          }),
          t.d(r, 'AesEncrypt', function() {
            return v;
          }),
          t.d(r, 'AesECB', function() {
            return g;
          }),
          t.d(r, 'AesCBC', function() {
            return C;
          }),
          t.d(r, 'AesCTR', function() {
            return d;
          }),
          t.d(r, 'AesGCM', function() {
            return k;
          }),
          t.d(r, 'AesKW', function() {
            return b;
          }),
          t.d(r, 'RsaKeyGenParamsError', function() {
            return G;
          }),
          t.d(r, 'RsaHashedImportParamsError', function() {
            return M;
          }),
          t.d(r, 'Rsa', function() {
            return B;
          }),
          t.d(r, 'RsaSSA', function() {
            return T;
          }),
          t.d(r, 'RsaPSSParamsError', function() {
            return D;
          }),
          t.d(r, 'RsaPSS', function() {
            return x;
          }),
          t.d(r, 'RsaOAEPParamsError', function() {
            return j;
          }),
          t.d(r, 'RsaOAEP', function() {
            return H;
          }),
          t.d(r, 'EcKeyGenParamsError', function() {
            return U;
          }),
          t.d(r, 'Ec', function() {
            return _;
          }),
          t.d(r, 'EcAlgorithmError', function() {
            return K;
          }),
          t.d(r, 'EcDSA', function() {
            return O;
          }),
          t.d(r, 'EcDH', function() {
            return S;
          }),
          t.d(r, 'ShaAlgorithms', function() {
            return E;
          }),
          t.d(r, 'Sha', function() {
            return P;
          });
        var i = t(8),
          s = (function(e) {
            function r(r) {
              for (var t = [], a = 1; a < arguments.length; a++)
                t[a - 1] = arguments[a];
              var o = e.call(this) || this;
              (o.code = 0), (o.message = n.apply(void 0, [r].concat(t)));
              var i = new Error(o.message);
              return (i.name = o.constructor.name), (o.stack = i.stack), o;
            }
            return (
              Object(i.a)(r, e),
              (r.NOT_SUPPORTED = 'Method is not supported'),
              r
            );
          })(Error),
          c = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 1), r;
            }
            return (
              Object(i.a)(r, e),
              (r.PARAM_REQUIRED =
                "Algorithm hasn't got required paramter '%1'"),
              (r.PARAM_WRONG_TYPE =
                "Algorithm has got wrong type for paramter '%1'. Must be %2"),
              (r.PARAM_WRONG_VALUE =
                "Algorithm has got wrong value for paramter '%1'. Must be %2"),
              (r.WRONG_ALG_NAME =
                "Algorithm has got wrong name '%1'. Must be '%2'"),
              (r.UNSUPPORTED_ALGORITHM = "Algorithm '%1' is not supported"),
              (r.WRONG_USAGE = "Algorithm doesn't support key usage '%1'"),
              r
            );
          })(s),
          u = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 3), r;
            }
            return (
              Object(i.a)(r, e),
              (r.EMPTY_KEY = 'CryptoKey is empty'),
              (r.WRONG_KEY_ALG =
                "CryptoKey has wrong algorithm '%1'. Must be '%2'"),
              (r.WRONG_KEY_TYPE =
                "CryptoKey has wrong type '%1'. Must be '%2'"),
              (r.WRONG_KEY_USAGE =
                "CryptoKey has wrong key usage. Must be '%1'"),
              (r.NOT_EXTRACTABLE = 'CryptoKey is not extractable'),
              (r.WRONG_FORMAT =
                "CryptoKey has '%1' type. It can be used with '%2' format"),
              (r.UNKNOWN_FORMAT =
                "Unknown format in use '%1'. Must be one of 'raw', 'pkcs8', 'spki'  or 'jwk'"),
              (r.ALLOWED_FORMAT = "Wrong format value '%1'. Must be %2"),
              r
            );
          })(s),
          p = (function() {
            function e() {}
            return (
              (e.checkAlgorithm = function(e) {
                if ('object' != typeof e)
                  throw new TypeError(
                    'Wrong algorithm data type. Must be Object'
                  );
                if (!e.name) throw new c(c.PARAM_REQUIRED, 'name');
              }),
              (e.checkAlgorithmParams = function(e) {
                this.checkAlgorithm(e);
              }),
              (e.checkKey = function(e, r, t, n) {
                if (
                  (void 0 === t && (t = null), void 0 === n && (n = null), !e)
                )
                  throw new u(u.EMPTY_KEY);
                var a = e.algorithm;
                if (
                  (this.checkAlgorithm(a),
                  r && a.name.toUpperCase() !== r.toUpperCase())
                )
                  throw new u(u.WRONG_KEY_ALG, a.name, r);
                if (t && (!e.type || e.type.toUpperCase() !== t.toUpperCase()))
                  throw new u(u.WRONG_KEY_TYPE, e.type, t);
                if (
                  n &&
                  !e.usages.some(function(e) {
                    return n.toUpperCase() === e.toUpperCase();
                  })
                )
                  throw new u(u.WRONG_KEY_USAGE, n);
              }),
              (e.checkWrappedKey = function(e) {
                if (!e.extractable) throw new u(u.NOT_EXTRACTABLE);
              }),
              (e.checkKeyUsages = function(e) {
                if (!e || !e.length)
                  throw new s("Parameter 'keyUsages' cannot be empty.");
              }),
              (e.checkFormat = function(e, r) {
                switch (e.toLowerCase()) {
                  case 'raw':
                    if (
                      r &&
                      'secret' !== r.toLowerCase() &&
                      r &&
                      'public' !== r.toLowerCase()
                    )
                      throw new u(u.WRONG_FORMAT, r, 'raw');
                    break;
                  case 'pkcs8':
                    if (r && 'private' !== r.toLowerCase())
                      throw new u(u.WRONG_FORMAT, r, 'pkcs8');
                    break;
                  case 'spki':
                    if (r && 'public' !== r.toLowerCase())
                      throw new u(u.WRONG_FORMAT, r, 'spki');
                    break;
                  case 'jwk':
                    break;
                  default:
                    throw new u(u.UNKNOWN_FORMAT, e);
                }
              }),
              (e.generateKey = function(e, r, t) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.digest = function(e, r) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.sign = function(e, r, t) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.verify = function(e, r, t, n) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.encrypt = function(e, r, t) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.decrypt = function(e, r, t) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.deriveBits = function(e, r, t) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.deriveKey = function(e, r, t, n, a) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.exportKey = function(e, r) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.importKey = function(e, r, t, n, a) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.wrapKey = function(e, r, t, n) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              (e.unwrapKey = function(e, r, t, n, a, o, i) {
                return new Promise(function(e, r) {
                  throw new s(s.NOT_SUPPORTED);
                });
              }),
              e
            );
          })(),
          h = {
            RsaSSA: 'RSASSA-PKCS1-v1_5',
            RsaPSS: 'RSA-PSS',
            RsaOAEP: 'RSA-OAEP',
            AesECB: 'AES-ECB',
            AesCTR: 'AES-CTR',
            AesCMAC: 'AES-CMAC',
            AesGCM: 'AES-GCM',
            AesCBC: 'AES-CBC',
            AesKW: 'AES-KW',
            Sha1: 'SHA-1',
            Sha256: 'SHA-256',
            Sha384: 'SHA-384',
            Sha512: 'SHA-512',
            EcDSA: 'ECDSA',
            EcDH: 'ECDH',
            Hmac: 'HMAC',
            Pbkdf2: 'PBKDF2',
            Hkdf: 'HKDF'
          };
        if ('undefined' == typeof self) {
          var f = e;
          (f.btoa = function(e) {
            return new Buffer(e, 'binary').toString('base64');
          }),
            (f.atob = function(e) {
              return new Buffer(e, 'base64').toString('binary');
            });
        }
        var y = (function() {
            function e() {}
            return (
              (e.encode = function(e) {
                var r = this.buffer2string(e);
                return btoa(r)
                  .replace(/=/g, '')
                  .replace(/\+/g, '-')
                  .replace(/\//g, '_');
              }),
              (e.decode = function(e) {
                for (; e.length % 4; ) e += '=';
                var r = e.replace(/\-/g, '+').replace(/_/g, '/');
                return this.string2buffer(atob(r));
              }),
              (e.buffer2string = function(e) {
                for (var r = '', t = e.length, n = 0; n < t; n++)
                  r += String.fromCharCode(e[n]);
                return r;
              }),
              (e.string2buffer = function(e) {
                for (
                  var r = new Uint8Array(e.length), t = e.length, n = 0;
                  n < t;
                  n++
                )
                  r[n] = e.charCodeAt(n);
                return r;
              }),
              e
            );
          })(),
          l = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 7), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          m = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkKeyUsages = function(r) {
                var t = this;
                e.checkKeyUsages.call(this, r);
                var n = r.filter(function(e) {
                  return -1 === t.KEY_USAGES.indexOf(e);
                });
                if (n.length) throw new c(c.WRONG_USAGE, n.join(', '));
              }),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkKeyGenParams = function(e) {
                switch (e.length) {
                  case 128:
                  case 192:
                  case 256:
                    break;
                  default:
                    throw new l(
                      l.PARAM_WRONG_VALUE,
                      'length',
                      '128, 192 or 256'
                    );
                }
              }),
              (r.generateKey = function(e, r, t) {
                var n = this;
                return new Promise(function(r, a) {
                  n.checkAlgorithm(e),
                    n.checkKeyGenParams(e),
                    n.checkKeyUsages(t),
                    r(void 0);
                });
              }),
              (r.exportKey = function(e, r) {
                var t = this;
                return new Promise(function(n, a) {
                  t.checkKey(r, t.ALG_NAME),
                    t.checkFormat(e, r.type),
                    n(void 0);
                });
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return new Promise(function(r, n) {
                  if (
                    (o.checkAlgorithm(t),
                    o.checkFormat(e),
                    'raw' !== e.toLowerCase() && 'jwk' !== e.toLowerCase())
                  )
                    throw new u(u.ALLOWED_FORMAT, e, "'jwk' or 'raw'");
                  o.checkKeyUsages(a), r(void 0);
                });
              }),
              (r.ALG_NAME = ''),
              (r.KEY_USAGES = []),
              r
            );
          })(p),
          A = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 8), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          w = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.wrapKey = function(e, r, t, n) {
                var a = this;
                return new Promise(function(o, i) {
                  a.checkAlgorithmParams(n),
                    a.checkKey(t, a.ALG_NAME, 'secret', 'wrapKey'),
                    a.checkWrappedKey(r),
                    a.checkFormat(e, r.type),
                    o(void 0);
                });
              }),
              (r.unwrapKey = function(e, r, t, n, a, o, i) {
                var s = this;
                return new Promise(function(r, a) {
                  s.checkAlgorithmParams(n),
                    s.checkKey(t, s.ALG_NAME, 'secret', 'unwrapKey'),
                    s.checkFormat(e),
                    r(void 0);
                });
              }),
              r
            );
          })(m),
          v = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.encrypt = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'secret', 'encrypt'),
                    t(void 0);
                });
              }),
              (r.decrypt = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'secret', 'decrypt'),
                    t(void 0);
                });
              }),
              (r.KEY_USAGES = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']),
              r
            );
          })(w),
          g = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return Object(i.a)(r, e), (r.ALG_NAME = h.AesECB), r;
          })(v),
          C = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                if ((this.checkAlgorithm(e), !e.iv))
                  throw new A(A.PARAM_REQUIRED, 'iv');
                if (!(ArrayBuffer.isView(e.iv) || e.iv instanceof ArrayBuffer))
                  throw new A(
                    A.PARAM_WRONG_TYPE,
                    'iv',
                    'ArrayBufferView or ArrayBuffer'
                  );
                if (16 !== e.iv.byteLength)
                  throw new A(
                    A.PARAM_WRONG_VALUE,
                    'iv',
                    'ArrayBufferView or ArrayBuffer with size 16'
                  );
              }),
              (r.ALG_NAME = h.AesCBC),
              r
            );
          })(v),
          d = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                if (
                  (this.checkAlgorithm(e),
                  !e.counter ||
                    !(
                      ArrayBuffer.isView(e.counter) ||
                      e.counter instanceof ArrayBuffer
                    ))
                )
                  throw new A(
                    A.PARAM_WRONG_TYPE,
                    'counter',
                    'ArrayBufferView or ArrayBuffer'
                  );
                if (16 !== e.counter.byteLength)
                  throw new A(
                    A.PARAM_WRONG_VALUE,
                    'counter',
                    'ArrayBufferView or ArrayBuffer with size 16'
                  );
                if (!(e.length > 0 && e.length <= 128))
                  throw new A(A.PARAM_WRONG_VALUE, 'length', 'number [1-128]');
              }),
              (r.ALG_NAME = h.AesCTR),
              r
            );
          })(v),
          k = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                if (
                  (this.checkAlgorithm(e),
                  e.additionalData &&
                    !(
                      ArrayBuffer.isView(e.additionalData) ||
                      e.additionalData instanceof ArrayBuffer
                    ))
                )
                  throw new A(
                    A.PARAM_WRONG_TYPE,
                    'additionalData',
                    'ArrayBufferView or ArrayBuffer'
                  );
                if (!e.iv) throw new A(A.PARAM_REQUIRED, 'iv');
                if (!(ArrayBuffer.isView(e.iv) || e.iv instanceof ArrayBuffer))
                  throw new A(
                    A.PARAM_WRONG_TYPE,
                    'iv',
                    'ArrayBufferView or ArrayBuffer'
                  );
                if (e.tagLength) {
                  if (
                    ![32, 64, 96, 104, 112, 120, 128].some(function(r) {
                      return r === e.tagLength;
                    })
                  )
                    throw new A(
                      A.PARAM_WRONG_VALUE,
                      'tagLength',
                      '32, 64, 96, 104, 112, 120 or 128'
                    );
                }
              }),
              (r.ALG_NAME = h.AesGCM),
              r
            );
          })(v),
          b = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                this.checkAlgorithm(e);
              }),
              (r.ALG_NAME = h.AesKW),
              (r.KEY_USAGES = ['wrapKey', 'unwrapKey']),
              r
            );
          })(w),
          E = [h.Sha1, h.Sha256, h.Sha384, h.Sha512].join(' | '),
          P = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(r) {
                var t;
                switch (
                  ((t = 'string' == typeof r ? { name: r } : r),
                  e.checkAlgorithm.call(this, t),
                  t.name.toUpperCase())
                ) {
                  case h.Sha1:
                  case h.Sha256:
                  case h.Sha384:
                  case h.Sha512:
                    break;
                  default:
                    throw new c(c.WRONG_ALG_NAME, t.name, E);
                }
              }),
              (r.digest = function(e, r) {
                var t = this;
                return new Promise(function(r, n) {
                  t.checkAlgorithm(e), r(void 0);
                });
              }),
              r
            );
          })(p),
          U = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 9), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          _ = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkKeyGenParams = function(e) {
                if (!e.namedCurve) throw new U(U.PARAM_REQUIRED, 'namedCurve');
                if ('string' != typeof e.namedCurve)
                  throw new U(U.PARAM_WRONG_TYPE, 'namedCurve', 'string');
                switch (e.namedCurve.toUpperCase()) {
                  case 'P-256':
                  case 'K-256':
                  case 'P-384':
                  case 'P-521':
                    break;
                  default:
                    throw new U(
                      U.PARAM_WRONG_VALUE,
                      'namedCurve',
                      'K-256, P-256, P-384 or P-521'
                    );
                }
              }),
              (r.checkKeyGenUsages = function(e) {
                var r = this;
                e.forEach(function(e) {
                  var t = 0;
                  for (
                    t;
                    t < r.KEY_USAGES.length &&
                    r.KEY_USAGES[t].toLowerCase() !== e.toLowerCase();
                    t++
                  );
                  if (t === r.KEY_USAGES.length)
                    throw new s(
                      "Unsupported key usage '" +
                        e +
                        "'. Should be one of [" +
                        r.KEY_USAGES.join(', ') +
                        ']'
                    );
                });
              }),
              (r.generateKey = function(e, r, t) {
                var n = this;
                return new Promise(function(r, a) {
                  n.checkAlgorithm(e),
                    n.checkKeyGenParams(e),
                    n.checkKeyGenUsages(t),
                    r(void 0);
                });
              }),
              (r.exportKey = function(e, r) {
                var t = this;
                return new Promise(function(n, a) {
                  t.checkKey(r, t.ALG_NAME),
                    (e && 'raw' === e.toLowerCase() && 'public' === r.type) ||
                      t.checkFormat(e, r.type),
                    n(void 0);
                });
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return new Promise(function(r, n) {
                  o.checkKeyGenParams(t),
                    o.checkFormat(e),
                    o.checkKeyGenUsages(a),
                    r(void 0);
                });
              }),
              (r.ALG_NAME = ''),
              (r.KEY_USAGES = []),
              r
            );
          })(p),
          K = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 10), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          O = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                this.checkAlgorithm(e), P.checkAlgorithm(e.hash);
              }),
              (r.sign = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'private', 'sign'),
                    t(void 0);
                });
              }),
              (r.verify = function(e, r, t, n) {
                var a = this;
                return new Promise(function(t, n) {
                  a.checkAlgorithmParams(e),
                    a.checkKey(r, a.ALG_NAME, 'public', 'verify'),
                    t(void 0);
                });
              }),
              (r.ALG_NAME = h.EcDSA),
              (r.KEY_USAGES = ['sign', 'verify', 'deriveKey', 'deriveBits']),
              r
            );
          })(_),
          S = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkDeriveParams = function(e) {
                if ((this.checkAlgorithm(e), !e.public))
                  throw new K(K.PARAM_REQUIRED, 'public');
                this.checkKey(e.public, this.ALG_NAME, 'public');
              }),
              (r.deriveBits = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkDeriveParams(e),
                    n.checkKey(r, n.ALG_NAME, 'private', 'deriveBits'),
                    t(void 0);
                });
              }),
              (r.deriveKey = function(e, r, t, n, a) {
                var o = this;
                return new Promise(function(n, a) {
                  switch (
                    (o.checkDeriveParams(e),
                    o.checkKey(r, o.ALG_NAME, 'private', 'deriveKey'),
                    p.checkAlgorithm(t),
                    t.name.toUpperCase())
                  ) {
                    case h.AesCBC:
                      C.checkKeyGenParams(t);
                      break;
                    case h.AesCTR:
                      d.checkKeyGenParams(t);
                      break;
                    case h.AesGCM:
                      k.checkKeyGenParams(t);
                      break;
                    case h.AesKW:
                      b.checkKeyGenParams(t);
                      break;
                    default:
                      throw new K(
                        "Unsupported name '" +
                          t.name +
                          "' for algorithm in param 'derivedKeyType'"
                      );
                  }
                  n(void 0);
                });
              }),
              (r.ALG_NAME = h.EcDH),
              (r.KEY_USAGES = ['deriveKey', 'deriveBits']),
              r
            );
          })(_),
          L = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkKeyGenParams = function(e) {
                if ('length' in e && !(e.length > 0 && e.length <= 512))
                  throw new c(
                    c.PARAM_WRONG_VALUE,
                    'length',
                    'more 0 and less than 512'
                  );
              }),
              (r.checkKeyGenUsages = function(e) {
                var r = this;
                this.checkKeyUsages(e),
                  e.forEach(function(e) {
                    var t = 0;
                    for (
                      t;
                      t < r.KEY_USAGES.length &&
                      r.KEY_USAGES[t].toLowerCase() !== e.toLowerCase();
                      t++
                    );
                    if (t === r.KEY_USAGES.length)
                      throw new s(
                        "Unsupported key usage '" +
                          e +
                          "'. Should be one of [" +
                          r.KEY_USAGES.join(', ') +
                          ']'
                      );
                  });
              }),
              (r.generateKey = function(e, r, t) {
                var n = this;
                return new Promise(function(r, a) {
                  n.checkAlgorithm(e),
                    n.checkKeyGenParams(e),
                    n.checkKeyGenUsages(t),
                    r(void 0);
                });
              }),
              (r.exportKey = function(e, r) {
                var t = this;
                return new Promise(function(n, a) {
                  t.checkKey(r, t.ALG_NAME),
                    t.checkFormat(e, r.type),
                    n(void 0);
                });
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return new Promise(function(r, n) {
                  if (
                    (o.checkAlgorithm(t),
                    o.checkFormat(e),
                    'raw' !== e.toLowerCase() && 'jwk' !== e.toLowerCase())
                  )
                    throw new u(u.ALLOWED_FORMAT, e, "'jwk' or 'raw'");
                  o.checkKeyGenUsages(a), r(void 0);
                });
              }),
              (r.sign = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'secret', 'sign'),
                    t(void 0);
                });
              }),
              (r.verify = function(e, r, t, n) {
                var a = this;
                return new Promise(function(t, n) {
                  a.checkAlgorithmParams(e),
                    a.checkKey(r, a.ALG_NAME, 'secret', 'verify'),
                    t(void 0);
                });
              }),
              (r.ALG_NAME = h.Hmac),
              (r.KEY_USAGES = ['sign', 'verify']),
              r
            );
          })(p),
          R = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkDeriveParams = function(e) {
                if ((this.checkAlgorithm(e), !e.salt))
                  throw new c(c.PARAM_REQUIRED, 'salt');
                if (
                  !(ArrayBuffer.isView(e.salt) || e.salt instanceof ArrayBuffer)
                )
                  throw new c(
                    c.PARAM_WRONG_TYPE,
                    'salt',
                    'ArrayBuffer or ArrayBufferView'
                  );
                if (!e.info) throw new c(c.PARAM_REQUIRED, 'info');
                if (
                  !(ArrayBuffer.isView(e.info) || e.info instanceof ArrayBuffer)
                )
                  throw new c(
                    c.PARAM_WRONG_TYPE,
                    'info',
                    'ArrayBuffer or ArrayBufferView'
                  );
                if (!e.hash) throw new c(c.PARAM_REQUIRED, 'hash');
                var r = a(e.hash);
                P.checkAlgorithm(r);
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return Promise.resolve().then(function() {
                  if (n) throw new s('KDF keys must set extractable=false');
                  if (
                    (o.checkAlgorithm(t),
                    o.checkFormat(e),
                    'raw' !== e.toLowerCase())
                  )
                    throw new u(u.ALLOWED_FORMAT, e, "'raw'");
                  o.checkKeyUsages(a);
                });
              }),
              (r.deriveKey = function(e, r, t, n, a) {
                var o = this;
                return Promise.resolve().then(function() {
                  switch (
                    (o.checkDeriveParams(e),
                    o.checkKey(r, o.ALG_NAME, 'secret', 'deriveKey'),
                    p.checkAlgorithm(t),
                    t.name.toUpperCase())
                  ) {
                    case h.AesCBC:
                      C.checkKeyGenParams(t), C.checkKeyUsages(a);
                      break;
                    case h.AesCTR:
                      d.checkKeyGenParams(t), d.checkKeyUsages(a);
                      break;
                    case h.AesGCM:
                      k.checkKeyGenParams(t), k.checkKeyUsages(a);
                      break;
                    case h.AesKW:
                      b.checkKeyGenParams(t), b.checkKeyUsages(a);
                      break;
                    case h.Hmac:
                      L.checkKeyGenParams(t), L.checkKeyUsages(a);
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, t);
                  }
                });
              }),
              (r.deriveBits = function(e, r, t) {
                var n = this;
                return Promise.resolve().then(function() {
                  if (
                    (n.checkDeriveParams(e),
                    n.checkKey(r, n.ALG_NAME, 'secret', 'deriveBits'),
                    !t || 'number' != typeof t)
                  )
                    throw new s(
                      "Parameter 'length' must be Number and more than 0"
                    );
                });
              }),
              (r.ALG_NAME = h.Hkdf),
              (r.KEY_USAGES = ['deriveKey', 'deriveBits']),
              r
            );
          })(p),
          N = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkDeriveParams = function(e) {
                if ((this.checkAlgorithm(e), !e.salt))
                  throw new c(c.PARAM_REQUIRED, 'salt');
                if (
                  !(ArrayBuffer.isView(e.salt) || e.salt instanceof ArrayBuffer)
                )
                  throw new c(
                    c.PARAM_WRONG_TYPE,
                    'salt',
                    'ArrayBuffer or ArrayBufferView'
                  );
                if (!e.iterations) throw new c(c.PARAM_REQUIRED, 'iterations');
                if (!e.hash) throw new c(c.PARAM_REQUIRED, 'hash');
                var r = a(e.hash);
                P.checkAlgorithm(r);
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return Promise.resolve().then(function() {
                  if (n) throw new s('KDF keys must set extractable=false');
                  if (
                    (o.checkAlgorithm(t),
                    o.checkFormat(e),
                    'raw' !== e.toLowerCase())
                  )
                    throw new u(u.ALLOWED_FORMAT, e, "'raw'");
                  o.checkKeyUsages(a);
                });
              }),
              (r.deriveKey = function(e, r, t, n, a) {
                var o = this;
                return Promise.resolve().then(function() {
                  switch (
                    (o.checkDeriveParams(e),
                    o.checkKey(r, o.ALG_NAME, 'secret', 'deriveKey'),
                    p.checkAlgorithm(t),
                    t.name.toUpperCase())
                  ) {
                    case h.AesCBC:
                      C.checkKeyGenParams(t), C.checkKeyUsages(a);
                      break;
                    case h.AesCTR:
                      d.checkKeyGenParams(t), d.checkKeyUsages(a);
                      break;
                    case h.AesGCM:
                      k.checkKeyGenParams(t), k.checkKeyUsages(a);
                      break;
                    case h.AesKW:
                      b.checkKeyGenParams(t), b.checkKeyUsages(a);
                      break;
                    case h.Hmac:
                      L.checkKeyGenParams(t), L.checkKeyUsages(a);
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, t);
                  }
                });
              }),
              (r.deriveBits = function(e, r, t) {
                var n = this;
                return Promise.resolve().then(function() {
                  if (
                    (n.checkDeriveParams(e),
                    n.checkKey(r, n.ALG_NAME, 'secret', 'deriveBits'),
                    !t || 'number' != typeof t)
                  )
                    throw new s(
                      "Parameter 'length' must be Number and more than 0"
                    );
                });
              }),
              (r.ALG_NAME = h.Pbkdf2),
              (r.KEY_USAGES = ['deriveKey', 'deriveBits']),
              r
            );
          })(p),
          G = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 2), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          M = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 6), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          B = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithm = function(e) {
                if (e.name.toUpperCase() !== this.ALG_NAME.toUpperCase())
                  throw new c(c.WRONG_ALG_NAME, e.name, this.ALG_NAME);
              }),
              (r.checkImportAlgorithm = function(e) {
                if ((this.checkAlgorithm(e), !e.hash))
                  throw new M(M.PARAM_REQUIRED, 'hash');
                P.checkAlgorithm(e.hash);
              }),
              (r.checkKeyGenParams = function(e) {
                var r = e.modulusLength;
                if (!(r >= 256 && r <= 16384) || r % 8)
                  throw new G(
                    G.PARAM_WRONG_VALUE,
                    'modulusLength',
                    ' a multiple of 8 bits and >= 256 and <= 16384'
                  );
                var t = e.publicExponent;
                if (!t) throw new G(G.PARAM_REQUIRED, 'publicExponent');
                if (!ArrayBuffer.isView(t))
                  throw new G(
                    G.PARAM_WRONG_TYPE,
                    'publicExponent',
                    'ArrayBufferView'
                  );
                if (3 !== t[0] && (1 !== t[0] || 0 !== t[1] || 1 !== t[2]))
                  throw new G(
                    G.PARAM_WRONG_VALUE,
                    'publicExponent',
                    'Uint8Array([3]) | Uint8Array([1, 0, 1])'
                  );
                if (!e.hash) throw new G(G.PARAM_REQUIRED, 'hash', E);
                P.checkAlgorithm(e.hash);
              }),
              (r.checkKeyGenUsages = function(e) {
                var r = this;
                this.checkKeyUsages(e),
                  e.forEach(function(e) {
                    var t = 0;
                    for (
                      t;
                      t < r.KEY_USAGES.length &&
                      r.KEY_USAGES[t].toLowerCase() !== e.toLowerCase();
                      t++
                    );
                    if (t === r.KEY_USAGES.length)
                      throw new s(
                        "Unsupported key usage '" +
                          e +
                          "'. Should be one of [" +
                          r.KEY_USAGES.join(', ') +
                          ']'
                      );
                  });
              }),
              (r.generateKey = function(e, r, t) {
                var n = this;
                return new Promise(function(r, a) {
                  n.checkAlgorithm(e),
                    n.checkKeyGenParams(e),
                    n.checkKeyGenUsages(t),
                    r(void 0);
                });
              }),
              (r.exportKey = function(e, r) {
                var t = this;
                return new Promise(function(n, a) {
                  t.checkKey(r, t.ALG_NAME),
                    t.checkFormat(e, r.type),
                    n(void 0);
                });
              }),
              (r.importKey = function(e, r, t, n, a) {
                var o = this;
                return new Promise(function(r, n) {
                  if (
                    (o.checkImportAlgorithm(t),
                    o.checkFormat(e),
                    'raw' === e.toLowerCase())
                  )
                    throw new u(
                      u.ALLOWED_FORMAT,
                      e,
                      "'JsonWebKey', 'pkcs8' or 'spki'"
                    );
                  o.checkKeyGenUsages(a), r(void 0);
                });
              }),
              (r.ALG_NAME = ''),
              (r.KEY_USAGES = []),
              r
            );
          })(p),
          T = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.sign = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'private', 'sign'),
                    t(void 0);
                });
              }),
              (r.verify = function(e, r, t, n) {
                var a = this;
                return new Promise(function(t, n) {
                  a.checkAlgorithmParams(e),
                    a.checkKey(r, a.ALG_NAME, 'public', 'verify'),
                    t(void 0);
                });
              }),
              (r.ALG_NAME = h.RsaSSA),
              (r.KEY_USAGES = ['sign', 'verify']),
              r
            );
          })(B),
          D = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 4), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          x = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(r) {
                var t = r;
                if ((e.checkAlgorithmParams.call(this, t), !t.saltLength))
                  throw new D(D.PARAM_REQUIRED, 'saltLength');
                if (t.saltLength < 0)
                  throw new D(
                    "Parameter 'saltLength' is outside of numeric range"
                  );
              }),
              (r.ALG_NAME = h.RsaPSS),
              r
            );
          })(T),
          j = (function(e) {
            function r() {
              var r = (null !== e && e.apply(this, arguments)) || this;
              return (r.code = 5), r;
            }
            return Object(i.a)(r, e), r;
          })(c),
          H = (function(e) {
            function r() {
              return (null !== e && e.apply(this, arguments)) || this;
            }
            return (
              Object(i.a)(r, e),
              (r.checkAlgorithmParams = function(e) {
                if (
                  e.label &&
                  !(
                    ArrayBuffer.isView(e.label) ||
                    e.label instanceof ArrayBuffer
                  )
                )
                  throw new j(
                    j.PARAM_WRONG_TYPE,
                    'label',
                    'ArrayBufferView or ArrayBuffer'
                  );
              }),
              (r.encrypt = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'public', 'encrypt'),
                    t(void 0);
                });
              }),
              (r.decrypt = function(e, r, t) {
                var n = this;
                return new Promise(function(t, a) {
                  n.checkAlgorithmParams(e),
                    n.checkKey(r, n.ALG_NAME, 'private', 'decrypt'),
                    t(void 0);
                });
              }),
              (r.wrapKey = function(e, r, t, n) {
                var a = this;
                return new Promise(function(o, i) {
                  a.checkAlgorithmParams(n),
                    a.checkKey(t, a.ALG_NAME, 'public', 'wrapKey'),
                    a.checkWrappedKey(r),
                    a.checkFormat(e, r.type),
                    o(void 0);
                });
              }),
              (r.unwrapKey = function(e, r, t, n, a, o, i) {
                var s = this;
                return new Promise(function(r, a) {
                  s.checkAlgorithmParams(n),
                    s.checkKey(t, s.ALG_NAME, 'private', 'unwrapKey'),
                    s.checkFormat(e),
                    r(void 0);
                });
              }),
              (r.ALG_NAME = h.RsaOAEP),
              (r.KEY_USAGES = ['encrypt', 'decrypt', 'wrapKey', 'unwrapKey']),
              r
            );
          })(B),
          W = (function() {
            function e() {}
            return (
              (e.prototype.generateKey = function(e, r, t) {
                return new Promise(function(n, o) {
                  var i = a(e),
                    s = p;
                  switch (i.name.toUpperCase()) {
                    case h.RsaSSA.toUpperCase():
                      s = T;
                      break;
                    case h.RsaOAEP.toUpperCase():
                      s = H;
                      break;
                    case h.RsaPSS.toUpperCase():
                      s = x;
                      break;
                    case h.AesECB.toUpperCase():
                      s = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      s = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      s = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      s = k;
                      break;
                    case h.AesKW.toUpperCase():
                      s = b;
                      break;
                    case h.EcDSA.toUpperCase():
                      s = O;
                      break;
                    case h.EcDH.toUpperCase():
                      s = S;
                      break;
                    case h.Hmac.toUpperCase():
                      s = L;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, i.name);
                  }
                  s.generateKey(i, r, t).then(n, o);
                });
              }),
              (e.prototype.digest = function(e, r) {
                return new Promise(function(t, n) {
                  var i = a(e),
                    s = o(r, 'data'),
                    u = p;
                  switch (i.name.toUpperCase()) {
                    case h.Sha1.toUpperCase():
                    case h.Sha256.toUpperCase():
                    case h.Sha384.toUpperCase():
                    case h.Sha512.toUpperCase():
                      u = P;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, i.name);
                  }
                  u.digest(i, s).then(t, n);
                });
              }),
              (e.prototype.sign = function(e, r, t) {
                return new Promise(function(n, i) {
                  var s = a(e),
                    u = o(t, 'data'),
                    f = p;
                  switch (s.name.toUpperCase()) {
                    case h.RsaSSA.toUpperCase():
                      f = T;
                      break;
                    case h.RsaPSS.toUpperCase():
                      f = x;
                      break;
                    case h.EcDSA.toUpperCase():
                      f = O;
                      break;
                    case h.Hmac.toUpperCase():
                      f = L;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, s.name);
                  }
                  f.sign(s, r, u).then(n, i);
                });
              }),
              (e.prototype.verify = function(e, r, t, n) {
                return new Promise(function(t, i) {
                  var s = a(e),
                    u = o(n, 'signature'),
                    f = o(n, 'data'),
                    y = p;
                  switch (s.name.toUpperCase()) {
                    case h.RsaSSA.toUpperCase():
                      y = T;
                      break;
                    case h.RsaPSS.toUpperCase():
                      y = x;
                      break;
                    case h.EcDSA.toUpperCase():
                      y = O;
                      break;
                    case h.Hmac.toUpperCase():
                      y = L;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, s.name);
                  }
                  y.verify(s, r, u, f).then(t, i);
                });
              }),
              (e.prototype.encrypt = function(e, r, t) {
                return new Promise(function(n, i) {
                  var s = a(e),
                    u = o(t, 'data'),
                    f = p;
                  switch (s.name.toUpperCase()) {
                    case h.RsaOAEP.toUpperCase():
                      f = H;
                      break;
                    case h.AesECB.toUpperCase():
                      f = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      f = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      f = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      f = k;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, s.name);
                  }
                  f.encrypt(s, r, u).then(n, i);
                });
              }),
              (e.prototype.decrypt = function(e, r, t) {
                return new Promise(function(n, i) {
                  var s = a(e),
                    u = o(t, 'data'),
                    f = p;
                  switch (s.name.toUpperCase()) {
                    case h.RsaOAEP.toUpperCase():
                      f = H;
                      break;
                    case h.AesECB.toUpperCase():
                      f = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      f = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      f = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      f = k;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, s.name);
                  }
                  f.decrypt(s, r, u).then(n, i);
                });
              }),
              (e.prototype.deriveBits = function(e, r, t) {
                return new Promise(function(n, o) {
                  var i = a(e),
                    s = p;
                  switch (i.name.toUpperCase()) {
                    case h.EcDH.toUpperCase():
                      s = S;
                      break;
                    case h.Pbkdf2.toUpperCase():
                      s = N;
                      break;
                    case h.Hkdf.toUpperCase():
                      s = R;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, i.name);
                  }
                  s.deriveBits(i, r, t).then(n, o);
                });
              }),
              (e.prototype.deriveKey = function(e, r, t, n, o) {
                return new Promise(function(i, s) {
                  var u = a(e),
                    f = a(t),
                    y = p;
                  switch (u.name.toUpperCase()) {
                    case h.EcDH.toUpperCase():
                      y = S;
                      break;
                    case h.Pbkdf2.toUpperCase():
                      y = N;
                      break;
                    case h.Hkdf.toUpperCase():
                      y = R;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, u.name);
                  }
                  y.deriveKey(u, r, f, n, o).then(i, s);
                });
              }),
              (e.prototype.exportKey = function(e, r) {
                return new Promise(function(t, n) {
                  if ((p.checkKey(r), !r.extractable))
                    throw new u(u.NOT_EXTRACTABLE);
                  var a = p;
                  switch (r.algorithm.name.toUpperCase()) {
                    case h.RsaSSA.toUpperCase():
                      a = T;
                      break;
                    case h.RsaPSS.toUpperCase():
                      a = x;
                      break;
                    case h.AesECB.toUpperCase():
                      a = g;
                      break;
                    case h.RsaOAEP.toUpperCase():
                      a = H;
                      break;
                    case h.AesCBC.toUpperCase():
                      a = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      a = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      a = k;
                      break;
                    case h.AesKW.toUpperCase():
                      a = b;
                      break;
                    case h.EcDSA.toUpperCase():
                      a = O;
                      break;
                    case h.EcDH.toUpperCase():
                      a = S;
                      break;
                    case h.Hmac.toUpperCase():
                      a = L;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, r.algorithm.name);
                  }
                  a.exportKey(e, r).then(t, n);
                });
              }),
              (e.prototype.importKey = function(e, r, t, n, o) {
                return new Promise(function(i, s) {
                  var u = a(t),
                    f = p;
                  switch (u.name.toUpperCase()) {
                    case h.RsaSSA.toUpperCase():
                      f = T;
                      break;
                    case h.RsaPSS.toUpperCase():
                      f = x;
                      break;
                    case h.RsaOAEP.toUpperCase():
                      f = H;
                      break;
                    case h.AesECB.toUpperCase():
                      f = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      f = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      f = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      f = k;
                      break;
                    case h.AesKW.toUpperCase():
                      f = b;
                      break;
                    case h.EcDSA.toUpperCase():
                      f = O;
                      break;
                    case h.EcDH.toUpperCase():
                      f = S;
                      break;
                    case h.Hmac.toUpperCase():
                      f = L;
                      break;
                    case h.Pbkdf2.toUpperCase():
                      f = N;
                      break;
                    case h.Hkdf.toUpperCase():
                      f = R;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, u.name);
                  }
                  f.importKey(e, r, u, n, o).then(i, s);
                });
              }),
              (e.prototype.wrapKey = function(e, r, t, n) {
                return new Promise(function(o, i) {
                  var s = a(n),
                    u = p;
                  switch (s.name.toUpperCase()) {
                    case h.RsaOAEP.toUpperCase():
                      u = H;
                      break;
                    case h.AesECB.toUpperCase():
                      u = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      u = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      u = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      u = k;
                      break;
                    case h.AesKW.toUpperCase():
                      u = b;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, s.name);
                  }
                  u.wrapKey(e, r, t, s).then(o, i);
                });
              }),
              (e.prototype.unwrapKey = function(e, r, t, n, i, s, u) {
                return new Promise(function(f, y) {
                  var l = a(n),
                    m = a(i),
                    A = o(r, 'wrappedKey'),
                    w = p;
                  switch (l.name.toUpperCase()) {
                    case h.RsaOAEP.toUpperCase():
                      w = H;
                      break;
                    case h.AesECB.toUpperCase():
                      w = g;
                      break;
                    case h.AesCBC.toUpperCase():
                      w = C;
                      break;
                    case h.AesCTR.toUpperCase():
                      w = d;
                      break;
                    case h.AesGCM.toUpperCase():
                      w = k;
                      break;
                    case h.AesKW.toUpperCase():
                      w = b;
                      break;
                    default:
                      throw new c(c.UNSUPPORTED_ALGORITHM, l.name);
                  }
                  w.unwrapKey(e, A, t, l, m, s, u).then(f, y);
                });
              }),
              e
            );
          })();
      }.call(r, t(7));
  },
  function(e, r, t) {
    'use strict';
    var n =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a = t(0),
      o = (function(e) {
        function r() {
          var r = (null !== e && e.apply(this, arguments)) || this;
          return (r.code = 10), r;
        }
        return (
          n(r, e),
          (r.MODULE_NOT_FOUND =
            "Module '%1' is not found. Download it from %2"),
          (r.UNSUPPORTED_ALGORITHM = "Unsupported algorithm '%1'"),
          r
        );
      })(a.WebCryptoError);
    r.LinerError = o;
  },
  function(e, r, t) {
    'use strict';
    Object.defineProperty(r, '__esModule', { value: !0 });
    var n = t(10),
      a = t(4),
      o = (function() {
        function e() {
          this.subtle = new n.SubtleCrypto();
        }
        return (
          (e.prototype.getRandomValues = function(e) {
            return a.nativeCrypto.getRandomValues(e);
          }),
          e
        );
      })();
    r.Crypto = o;
  },
  function(e, r, t) {
    'use strict';
    Object.defineProperty(r, '__esModule', { value: !0 });
    var n = (function() {
      function e(e) {
        (this.algorithm = e.algorithm),
          e.type && (this.type = e.type),
          (this.extractable = e.extractable),
          (this.usages = e.usages);
      }
      return e;
    })();
    r.CryptoKey = n;
  },
  function(e, r, t) {
    'use strict';
    function n(e, r) {
      var t = e[r];
      e[r] = function() {
        var n = arguments;
        return new Promise(function(a, o) {
          var i = t.apply(e, n);
          (i.oncomplete = function(e) {
            a(e.target.result);
          }),
            (i.onerror = function(e) {
              o("Error on running '" + r + "' function");
            });
        });
      };
    }
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a,
      o = t(1);
    if ('undefined' == typeof self) {
      var i = t(9);
      a = {
        crypto: {
          subtle: {},
          getRandomValues: function(e) {
            var r = e.buffer,
              t = new Uint8Array(r);
            return (
              i.randomBytes(t.length).forEach(function(e, r) {
                return (t[r] = e);
              }),
              e
            );
          }
        }
      };
    } else a = self;
    (r.nativeCrypto = a.msCrypto || a.crypto || {}), (r.nativeSubtle = null);
    try {
      r.nativeSubtle = r.nativeCrypto.subtle || r.nativeCrypto.webkitSubtle;
    } catch (e) {}
    if (a.msCrypto) {
      if (!a.Promise)
        throw new o.LinerError(
          o.LinerError.MODULE_NOT_FOUND,
          'Promise',
          'https://www.promisejs.org'
        );
      n(r.nativeSubtle, 'generateKey'),
        n(r.nativeSubtle, 'digest'),
        n(r.nativeSubtle, 'sign'),
        n(r.nativeSubtle, 'verify'),
        n(r.nativeSubtle, 'encrypt'),
        n(r.nativeSubtle, 'decrypt'),
        n(r.nativeSubtle, 'importKey'),
        n(r.nativeSubtle, 'exportKey'),
        n(r.nativeSubtle, 'wrapKey'),
        n(r.nativeSubtle, 'unwrapKey'),
        n(r.nativeSubtle, 'deriveKey'),
        n(r.nativeSubtle, 'deriveBits');
    }
    Math.imul ||
      (Math.imul = function(e, r) {
        var t = (e >>> 16) & 65535,
          n = 65535 & e,
          a = (r >>> 16) & 65535,
          o = 65535 & r;
        return (n * o + (((t * o + n * a) << 16) >>> 0)) | 0;
      });
  },
  function(e, r, t) {
    'use strict';
    function n() {
      var e = { name: 'Unknown', version: '0' };
      try {
        var t = self.navigator.userAgent,
          n = void 0;
        (n = /edge\/([\d\.]+)/i.exec(t))
          ? ((e.name = r.Browser.Edge), (e.version = n[1]))
          : /msie/i.test(t)
          ? ((e.name = r.Browser.IE),
            (e.version = /msie ([\d\.]+)/i.exec(t)[1]))
          : /Trident/i.test(t)
          ? ((e.name = r.Browser.IE), (e.version = /rv:([\d\.]+)/i.exec(t)[1]))
          : /chrome/i.test(t)
          ? ((e.name = r.Browser.Chrome),
            (e.version = /chrome\/([\d\.]+)/i.exec(t)[1]))
          : /safari/i.test(t)
          ? ((e.name = r.Browser.Safari),
            (e.version = /version\/([\d\.]+)/i.exec(t)[1]))
          : /firefox/i.test(t) &&
            ((e.name = r.Browser.Firefox),
            (e.version = /firefox\/([\d\.]+)/i.exec(t)[1]));
      } catch (e) {}
      return e;
    }
    function a(e) {
      for (var r = new Uint8Array(e.length), t = 0; t < e.length; t++)
        r[t] = e.charCodeAt(t);
      return r;
    }
    function o(e) {
      for (var r = '', t = 0; t < e.length; t++) r += String.fromCharCode(e[t]);
      return r;
    }
    function i() {
      for (var e = [], r = 0; r < arguments.length; r++) e[r] = arguments[r];
      var t = new Uint8Array(
          e
            .map(function(e) {
              return e.length;
            })
            .reduce(function(e, r) {
              return e + r;
            })
        ),
        n = 0;
      return (
        e.forEach(function(e, r) {
          for (var a = 0; a < e.length; a++) t[n + a] = e[a];
          n += e.length;
        }),
        t
      );
    }
    function s(e) {
      for (var r = [], t = 1; t < arguments.length; t++)
        r[t - 1] = arguments[t];
      for (var n = arguments[0], a = 1; a < arguments.length; a++) {
        var o = arguments[a];
        for (var i in o) n[i] = o[i];
      }
      return n;
    }
    function c(e) {
      for (var r = [], t = 1; t < arguments.length; t++)
        r[t - 1] = arguments[t];
      'undefined' != typeof self &&
        self.PV_WEBCRYPTO_LINER_LOG &&
        console.warn.apply(console, arguments);
    }
    Object.defineProperty(r, '__esModule', { value: !0 }),
      (r.Browser = {
        IE: 'Internet Explorer',
        Safari: 'Safari',
        Edge: 'Edge',
        Chrome: 'Chrome',
        Firefox: 'Firefox Mozilla',
        Mobile: 'Mobile'
      }),
      (r.BrowserInfo = n),
      (r.string2buffer = a),
      (r.buffer2string = o),
      (r.concat = i),
      (r.assign = s),
      (r.warn = c);
  },
  function(e, r, t) {
    'use strict';
    function n(e) {
      for (var t in e) r.hasOwnProperty(t) || (r[t] = e[t]);
    }
    Object.defineProperty(r, '__esModule', { value: !0 }), n(t(4)), n(t(2));
  },
  function(e, r) {
    var t;
    t = (function() {
      return this;
    })();
    try {
      t = t || Function('return this')() || (0, eval)('this');
    } catch (e) {
      'object' == typeof window && (t = window);
    }
    e.exports = t;
  },
  function(e, r, t) {
    'use strict';
    function n(e, r) {
      function t() {
        this.constructor = e;
      }
      a(e, r),
        (e.prototype =
          null === r
            ? Object.create(r)
            : ((t.prototype = r.prototype), new t()));
    }
    r.a = n; /*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0

THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.

See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
    var a =
      Object.setPrototypeOf ||
      ({ __proto__: [] } instanceof Array &&
        function(e, r) {
          e.__proto__ = r;
        }) ||
      function(e, r) {
        for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
      };
    Object.assign;
  },
  function(e, r) {
    e.exports = require('crypto');
  },
  function(e, r, t) {
    'use strict';
    function n(e, r) {
      return Promise.resolve().then(function() {
        if (e.key) return e;
        if (e.extractable) {
          return new m.Crypto().subtle.exportKey('jwk', e).then(function(t) {
            var n = o(e);
            return (
              n && (n = w.assign(n, e.algorithm)),
              r.importKey('jwk', t, n, !0, e.usages)
            );
          });
        }
        throw new A.LinerError(
          "'key' is Native CryptoKey. It can't be converted to JS CryptoKey"
        );
      });
    }
    function a(e, r) {
      (w.BrowserInfo().name !== w.Browser.IE &&
        w.BrowserInfo().name !== w.Browser.Edge &&
        w.BrowserInfo().name !== w.Browser.Safari) ||
        !/^rsa/i.test(e.name) ||
        (r.privateKey
          ? (E.push({ hash: e.hash, key: r.privateKey }),
            E.push({ hash: e.hash, key: r.publicKey }))
          : E.push({ hash: e.hash, key: r }));
    }
    function o(e) {
      var r = null;
      return (
        E.some(function(t) {
          return (
            t.key === e &&
            ((r = w.assign({}, e.algorithm, { hash: t.hash })), !0)
          );
        }),
        r
      );
    }
    function i(e, r) {
      var t = [];
      e.privateKey ? (t.push(e.privateKey), t.push(e.publicKey)) : t.push(e),
        t.forEach(function(e) {
          'keyUsage' in e &&
            ((e.usages = e.keyUsage || []),
            e.usages.length ||
              (['verify', 'encrypt', 'wrapKey'].forEach(function(t) {
                r.indexOf(t) > -1 &&
                  ('public' === e.type || 'secret' === e.type) &&
                  e.usages.push(t);
              }),
              [
                'sign',
                'decrypt',
                'unwrapKey',
                'deriveKey',
                'deriveBits'
              ].forEach(function(t) {
                r.indexOf(t) > -1 &&
                  ('private' === e.type || 'secret' === e.type) &&
                  e.usages.push(t);
              })));
        });
    }
    function s(e, r, t) {
      if (r && w.BrowserInfo().name === w.Browser.IE) {
        'extractable' in e && ((e.ext = e.extractable), delete e.extractable);
        var n = null;
        switch (r.name.toUpperCase()) {
          case h.AlgorithmNames.AesECB.toUpperCase():
          case h.AlgorithmNames.AesCBC.toUpperCase():
          case h.AlgorithmNames.AesGCM.toUpperCase():
            n = v.AesCrypto;
            break;
          default:
            throw new A.LinerError(
              A.LinerError.UNSUPPORTED_ALGORITHM,
              r.name.toUpperCase()
            );
        }
        n && !e.alg && (e.alg = n.alg2jwk(r)),
          'key_ops' in e || (e.key_ops = t);
      }
    }
    function c(e) {
      w.BrowserInfo().name === w.Browser.IE &&
        ('ext' in e && ((e.extractable = e.ext), delete e.ext),
        delete e.key_ops,
        delete e.alg);
    }
    function u(e) {
      var r = /AppleWebKit\/(\d+)/.exec(self.navigator.userAgent);
      return (
        e.toUpperCase() === h.AlgorithmNames.RsaOAEP &&
        r &&
        parseInt(r[1], 10) < 604
      );
    }
    var p =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var h = t(0),
      f = t(0),
      y = t(0),
      l = t(4),
      m = t(2),
      A = t(1),
      w = t(5),
      v = t(11),
      g = t(12),
      C = t(13),
      d = t(14),
      k = t(15),
      b = t(16),
      E = [],
      P = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          p(r, e),
          (r.prototype.generateKey = function(r, t, n) {
            var o,
              s = this,
              c = arguments;
            return e.prototype.generateKey
              .apply(this, c)
              .then(function(e) {
                if (
                  ((o = y.PrepareAlgorithm(r)),
                  !(
                    (w.BrowserInfo().name === w.Browser.Edge &&
                      o.name.toUpperCase() === h.AlgorithmNames.AesGCM) ||
                    u(o.name)
                  ) && l.nativeSubtle)
                )
                  try {
                    return l.nativeSubtle.generateKey
                      .apply(l.nativeSubtle, c)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native generateKey for ' +
                            o.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native generateKey for ' +
                        o.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) {
                  var c = Promise.resolve(e);
                  if (
                    w.BrowserInfo().name === w.Browser.Safari &&
                    (o.name.toUpperCase() ===
                      h.AlgorithmNames.EcDH.toUpperCase() ||
                      o.name.toUpperCase() ===
                        h.AlgorithmNames.EcDSA.toUpperCase())
                  ) {
                    var u = e.publicKey;
                    c = c.then(function() {
                      return s.exportKey('jwk', u).then(function(a) {
                        return s.exportKey('spki', u).then(function(o) {
                          for (
                            var i = h.Base64Url.decode(a.x),
                              c = h.Base64Url.decode(a.y),
                              u = i.length + c.length,
                              p = new Uint8Array(o),
                              f = 0;
                            f < u;
                            f++
                          ) {
                            var y = p[p.length - f - 1],
                              l = void 0;
                            if (
                              ((l =
                                f < c.length
                                  ? c[c.length - f - 1]
                                  : i[i.length + c.length - f - 1]),
                              y !== l)
                            )
                              return (
                                w.warn(
                                  'WebCrypto: EC key has wrong public key JWK. Key pair will be recreated'
                                ),
                                s.generateKey(r, t, n)
                              );
                          }
                          return e;
                        });
                      });
                    });
                  }
                  return c.then(function(e) {
                    return i(e, n), a(o, e), e;
                  });
                }
                var p;
                switch (o.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    p = v.AesCrypto;
                    break;
                  case h.AlgorithmNames.EcDSA.toLowerCase():
                  case h.AlgorithmNames.EcDH.toLowerCase():
                    p = C.EcCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.UNSUPPORTED_ALGORITHM,
                      o.name.toLowerCase()
                    );
                }
                return p.generateKey(o, t, n);
              });
          }),
          (r.prototype.digest = function(r, t) {
            var n,
              a,
              o = arguments;
            return e.prototype.digest
              .apply(this, o)
              .then(function(e) {
                if (
                  ((n = y.PrepareAlgorithm(r)),
                  (a = y.PrepareData(t, 'data')),
                  l.nativeSubtle)
                )
                  try {
                    return l.nativeSubtle.digest
                      .apply(l.nativeSubtle, o)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native digest for ' +
                            n.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native digest for ' +
                        n.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                return e || g.ShaCrypto.digest(n, a);
              });
          }),
          (r.prototype.sign = function(r, t, a) {
            var i,
              s,
              c = arguments;
            return e.prototype.sign
              .apply(this, c)
              .then(function(e) {
                (i = y.PrepareAlgorithm(r)), (s = y.PrepareData(a, 'data'));
                var n = o(t);
                if ((n && (c[0] = w.assign(i, n)), l.nativeSubtle))
                  try {
                    return l.nativeSubtle.sign
                      .apply(l.nativeSubtle, c)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native sign for ' +
                            i.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native sign for ' + i.name + " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) return e;
                var r;
                switch (i.name.toLowerCase()) {
                  case h.AlgorithmNames.EcDSA.toLowerCase():
                    r = C.EcCrypto;
                    break;
                  case h.AlgorithmNames.Hmac.toLowerCase():
                    r = k.HmacCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.UNSUPPORTED_ALGORITHM,
                      i.name.toLowerCase()
                    );
                }
                return n(t, r).then(function(e) {
                  return r.sign(i, e, s);
                });
              });
          }),
          (r.prototype.verify = function(r, t, n, a) {
            var i,
              s,
              c,
              u = arguments;
            return e.prototype.verify
              .apply(this, u)
              .then(function(e) {
                (i = y.PrepareAlgorithm(r)),
                  (s = y.PrepareData(n, 'data')),
                  (c = y.PrepareData(a, 'data'));
                var p = o(t);
                if ((p && (u[0] = w.assign(i, p)), l.nativeSubtle))
                  try {
                    return l.nativeSubtle.verify
                      .apply(l.nativeSubtle, u)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native verify for ' +
                            i.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native verify for ' +
                        i.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if ('boolean' == typeof e) return e;
                switch (i.name.toLowerCase()) {
                  case h.AlgorithmNames.EcDSA.toLowerCase():
                    C.EcCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.UNSUPPORTED_ALGORITHM,
                      i.name.toLowerCase()
                    );
                }
              });
          }),
          (r.prototype.deriveBits = function(r, t, n) {
            var a,
              o = arguments;
            return e.prototype.deriveBits
              .apply(this, o)
              .then(function(e) {
                if (((a = y.PrepareAlgorithm(r)), l.nativeSubtle))
                  try {
                    return l.nativeSubtle.deriveBits
                      .apply(l.nativeSubtle, o)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native deriveBits for ' +
                            a.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native deriveBits for ' +
                        a.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) return e;
                var r;
                switch (a.name.toLowerCase()) {
                  case h.AlgorithmNames.EcDH.toLowerCase():
                    r = C.EcCrypto;
                    break;
                  case h.AlgorithmNames.Pbkdf2.toLowerCase():
                    r = d.Pbkdf2Crypto;
                    break;
                  case h.AlgorithmNames.Hkdf.toLowerCase():
                    r = b.HkdfCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'deriveBits'
                    );
                }
                return r.deriveBits(a, t, n);
              });
          }),
          (r.prototype.deriveKey = function(r, t, n, a, o) {
            var s,
              c,
              u = arguments;
            return e.prototype.deriveKey
              .apply(this, u)
              .then(function(e) {
                if (
                  ((s = y.PrepareAlgorithm(r)),
                  (c = y.PrepareAlgorithm(n)),
                  l.nativeSubtle)
                )
                  try {
                    return l.nativeSubtle.deriveKey
                      .apply(l.nativeSubtle, u)
                      .catch(function(e) {
                        w.warn(
                          'WebCrypto: native deriveKey for ' +
                            s.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      'WebCrypto: native deriveKey for ' +
                        s.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) return i(e, o), e;
                var r;
                switch (s.name.toLowerCase()) {
                  case h.AlgorithmNames.EcDH.toLowerCase():
                    r = C.EcCrypto;
                    break;
                  case h.AlgorithmNames.Pbkdf2.toLowerCase():
                    r = d.Pbkdf2Crypto;
                    break;
                  case h.AlgorithmNames.Hkdf.toLowerCase():
                    r = b.HkdfCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'deriveKey'
                    );
                }
                return r.deriveKey(s, t, c, a, o);
              });
          }),
          (r.prototype.encrypt = function(r, t, a) {
            var o,
              i,
              s = arguments;
            return e.prototype.encrypt
              .apply(this, s)
              .then(function(e) {
                if (
                  ((o = y.PrepareAlgorithm(r)),
                  (i = y.PrepareData(a, 'data')),
                  l.nativeSubtle)
                )
                  try {
                    return l.nativeSubtle.encrypt
                      .apply(l.nativeSubtle, s)
                      .catch(function(e) {
                        w.warn(
                          "WebCrypto: native 'encrypt' for " +
                            o.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      "WebCrypto: native 'encrypt' for " +
                        o.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) {
                  if (
                    w.BrowserInfo().name === w.Browser.IE &&
                    o.name.toUpperCase() === h.AlgorithmNames.AesGCM &&
                    e.ciphertext
                  ) {
                    var r = new Uint8Array(
                        e.ciphertext.byteLength + e.tag.byteLength
                      ),
                      a = 0;
                    new Uint8Array(e.ciphertext).forEach(function(e) {
                      return (r[a++] = e);
                    }),
                      new Uint8Array(e.tag).forEach(function(e) {
                        return (r[a++] = e);
                      }),
                      (e = r.buffer);
                  }
                  return Promise.resolve(e);
                }
                var s;
                switch (o.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    s = v.AesCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'encrypt'
                    );
                }
                return n(t, s).then(function(e) {
                  return s.encrypt(o, e, i);
                });
              });
          }),
          (r.prototype.decrypt = function(r, t, n) {
            var a,
              o,
              i = arguments;
            return e.prototype.decrypt.apply(this, i).then(function(e) {
              (a = y.PrepareAlgorithm(r)), (o = y.PrepareData(n, 'data'));
              var i = o;
              if (
                w.BrowserInfo().name === w.Browser.IE &&
                a.name.toUpperCase() === h.AlgorithmNames.AesGCM
              ) {
                var s = o.byteLength - a.tagLength / 8;
                i = {
                  ciphertext: o.buffer.slice(0, s),
                  tag: o.buffer.slice(s, o.byteLength)
                };
              }
              if (t.key) {
                var c = void 0;
                switch (a.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    c = v.AesCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'decrypt'
                    );
                }
                return c.decrypt(a, t, o);
              }
              return l.nativeSubtle.decrypt.call(l.nativeSubtle, a, t, i);
            });
          }),
          (r.prototype.wrapKey = function(r, t, n, a) {
            var o,
              i = arguments;
            return e.prototype.wrapKey
              .apply(this, i)
              .then(function(e) {
                if (((o = y.PrepareAlgorithm(a)), l.nativeSubtle))
                  try {
                    return l.nativeSubtle.wrapKey
                      .apply(l.nativeSubtle, i)
                      .catch(function(e) {
                        w.warn(
                          "WebCrypto: native 'wrapKey' for " +
                            o.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      "WebCrypto: native 'wrapKey' for " +
                        o.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) return e;
                var a;
                switch (o.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    a = v.AesCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'wrapKey'
                    );
                }
                return a.wrapKey(r, t, n, o);
              });
          }),
          (r.prototype.unwrapKey = function(r, t, n, a, o, s, c) {
            var u,
              p,
              f,
              m = this,
              g = arguments;
            return e.prototype.unwrapKey.apply(this, g).then(function(e) {
              if (
                ((u = y.PrepareAlgorithm(a)),
                (p = y.PrepareAlgorithm(o)),
                (f = y.PrepareData(t, 'wrappedKey')),
                n.key)
              ) {
                var C = void 0;
                switch (u.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    C = v.AesCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.NOT_SUPPORTED,
                      'unwrapKey'
                    );
                }
                return C.unwrapKey(r, f, n, u, p, s, c);
              }
              return l.nativeSubtle.unwrapKey
                .apply(l.nativeSubtle, g)
                .catch(function(e) {
                  return m.decrypt(u, n, t).then(function(e) {
                    var t;
                    return (
                      (t =
                        'jwk' === r
                          ? JSON.parse(w.buffer2string(new Uint8Array(e)))
                          : e),
                      m.importKey(r, t, p, s, c)
                    );
                  });
                })
                .then(function(e) {
                  if (e) return i(e, c), e;
                })
                .catch(function(e) {
                  throw (console.error(e),
                  new Error('Cannot unwrap key from incoming data'));
                });
            });
          }),
          (r.prototype.exportKey = function(r, t) {
            var n = arguments;
            return e.prototype.exportKey
              .apply(this, n)
              .then(function() {
                if (l.nativeSubtle)
                  try {
                    return l.nativeSubtle.exportKey
                      .apply(l.nativeSubtle, n)
                      .catch(function(e) {
                        w.warn(
                          "WebCrypto: native 'exportKey' for " +
                            t.algorithm.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      "WebCrypto: native 'exportKey' for " +
                        t.algorithm.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) {
                  'jwk' === r &&
                    e instanceof ArrayBuffer &&
                    ((e = w.buffer2string(new Uint8Array(e))),
                    (e = JSON.parse(e)));
                  var n = o(t);
                  return (
                    n || (n = w.assign({}, t.algorithm)),
                    s(e, n, t.usages),
                    Promise.resolve(e)
                  );
                }
                if (!t.key)
                  throw new A.LinerError(
                    'Cannot export native CryptoKey from JS implementation'
                  );
                var a;
                switch (t.algorithm.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    a = v.AesCrypto;
                    break;
                  case h.AlgorithmNames.EcDH.toLowerCase():
                  case h.AlgorithmNames.EcDSA.toLowerCase():
                    a = C.EcCrypto;
                    break;
                  case h.AlgorithmNames.Hmac.toLowerCase():
                    a = k.HmacCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.UNSUPPORTED_ALGORITHM,
                      t.algorithm.name.toLowerCase()
                    );
                }
                return a.exportKey(r, t);
              });
          }),
          (r.prototype.importKey = function(r, t, n, o, s) {
            var p,
              f,
              m = arguments;
            return e.prototype.importKey
              .apply(this, m)
              .then(function(e) {
                (p = y.PrepareAlgorithm(n)), (f = t);
                var a = w.BrowserInfo();
                if (
                  ('jwk' !== r ||
                    ((a.name !== w.Browser.Safari || /^11/.test(a.version)) &&
                      a.name !== w.Browser.IE) ||
                    (w.BrowserInfo().name === w.Browser.IE &&
                      ((t = w.assign({}, t)), c(t)),
                    (m[1] = w.string2buffer(JSON.stringify(t)).buffer)),
                  ArrayBuffer.isView(t) && (f = y.PrepareData(t, 'keyData')),
                  !u(p.name) && l.nativeSubtle)
                )
                  try {
                    return l.nativeSubtle.importKey
                      .apply(l.nativeSubtle, m)
                      .catch(function(e) {
                        w.warn(
                          "WebCrypto: native 'importKey' for " +
                            p.name +
                            " doesn't work.",
                          (e && e.message) || 'Unknown message'
                        );
                      });
                  } catch (e) {
                    w.warn(
                      "WebCrypto: native 'importKey' for " +
                        p.name +
                        " doesn't work.",
                      (e && e.message) || 'Unknown message'
                    );
                  }
              })
              .then(function(e) {
                if (e) return a(p, e), i(e, s), Promise.resolve(e);
                var t;
                switch (p.name.toLowerCase()) {
                  case h.AlgorithmNames.AesECB.toLowerCase():
                  case h.AlgorithmNames.AesCBC.toLowerCase():
                  case h.AlgorithmNames.AesGCM.toLowerCase():
                    t = v.AesCrypto;
                    break;
                  case h.AlgorithmNames.EcDH.toLowerCase():
                  case h.AlgorithmNames.EcDSA.toLowerCase():
                    t = C.EcCrypto;
                    break;
                  case h.AlgorithmNames.Pbkdf2.toLowerCase():
                    t = d.Pbkdf2Crypto;
                    break;
                  case h.AlgorithmNames.Hmac.toLowerCase():
                    t = k.HmacCrypto;
                    break;
                  case h.AlgorithmNames.Hkdf.toLowerCase():
                    t = b.HkdfCrypto;
                    break;
                  default:
                    throw new A.LinerError(
                      A.LinerError.UNSUPPORTED_ALGORITHM,
                      p.name.toLowerCase()
                    );
                }
                return t.importKey(r, f, p, o, s);
              });
          }),
          r
        );
      })(f.SubtleCrypto);
    (r.SubtleCrypto = P),
      Uint8Array.prototype.forEach ||
        (Uint8Array.prototype.forEach = function(e) {
          for (var r = 0; r < this.length; r++) e(this[r], r, this);
        }),
      Uint8Array.prototype.slice ||
        (Uint8Array.prototype.slice = function(e, r) {
          return new Uint8Array(this.buffer.slice(e, r));
        }),
      Uint8Array.prototype.filter ||
        (Uint8Array.prototype.filter = function(e) {
          for (var r = [], t = 0; t < this.length; t++)
            e(this[t], t, this) && r.push(this[t]);
          return new Uint8Array(r);
        });
  },
  function(e, r, t) {
    'use strict';
    var n =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a = t(0),
      o = t(1),
      i = t(3),
      s = t(5),
      c = t(4),
      u = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          n(r, e),
          (r.generateKey = function(e, r, t) {
            var n = this;
            return Promise.resolve().then(function() {
              n.checkModule();
              var a = c.nativeCrypto.getRandomValues(
                  new Uint8Array(e.length / 8)
                ),
                o = new i.CryptoKey({
                  type: 'secret',
                  algorithm: e,
                  extractable: r,
                  usages: t
                });
              return (o.key = a), o;
            });
          }),
          (r.encrypt = function(e, r, t) {
            return Promise.resolve().then(function() {
              var n;
              switch (e.name.toUpperCase()) {
                case a.AlgorithmNames.AesECB:
                  var i = e;
                  n = asmCrypto.AES_ECB.encrypt(t, r.key, !!i.padding);
                  break;
                case a.AlgorithmNames.AesCBC:
                  var s = e;
                  n = asmCrypto.AES_CBC.encrypt(
                    t,
                    r.key,
                    void 0,
                    a.PrepareData(s.iv, 'iv')
                  );
                  break;
                case a.AlgorithmNames.AesGCM:
                  var c = e;
                  c.tagLength = c.tagLength || 128;
                  var u = void 0;
                  c.additionalData &&
                    (u = a.PrepareData(c.additionalData, 'additionalData')),
                    (n = asmCrypto.AES_GCM.encrypt(
                      t,
                      r.key,
                      c.iv,
                      u,
                      c.tagLength / 8
                    ));
                  break;
                default:
                  throw new o.LinerError(
                    a.AlgorithmError.UNSUPPORTED_ALGORITHM,
                    e.name
                  );
              }
              return n.buffer;
            });
          }),
          (r.decrypt = function(e, r, t) {
            return Promise.resolve().then(function() {
              var n;
              switch (e.name.toUpperCase()) {
                case a.AlgorithmNames.AesECB:
                  var i = e;
                  n = asmCrypto.AES_ECB.decrypt(t, r.key, !!i.padding);
                  break;
                case a.AlgorithmNames.AesCBC:
                  var s = e;
                  n = asmCrypto.AES_CBC.decrypt(
                    t,
                    r.key,
                    void 0,
                    a.PrepareData(s.iv, 'iv')
                  );
                  break;
                case a.AlgorithmNames.AesGCM:
                  var c = e;
                  c.tagLength = c.tagLength || 128;
                  var u = void 0;
                  c.additionalData &&
                    (u = a.PrepareData(c.additionalData, 'additionalData')),
                    (n = asmCrypto.AES_GCM.decrypt(
                      t,
                      r.key,
                      c.iv,
                      u,
                      c.tagLength / 8
                    ));
                  break;
                default:
                  throw new o.LinerError(
                    a.AlgorithmError.UNSUPPORTED_ALGORITHM,
                    e.name
                  );
              }
              return n.buffer;
            });
          }),
          (r.wrapKey = function(e, r, t, n) {
            var a;
            return Promise.resolve()
              .then(function() {
                return (a = new p.Crypto()), a.subtle.exportKey(e, r);
              })
              .then(function(e) {
                var r;
                return (
                  (r =
                    e instanceof ArrayBuffer
                      ? new Uint8Array(e)
                      : s.string2buffer(JSON.stringify(e))),
                  a.subtle.encrypt(n, t, r)
                );
              });
          }),
          (r.unwrapKey = function(e, r, t, n, a, o, i) {
            var c;
            return Promise.resolve()
              .then(function() {
                return (c = new p.Crypto()), c.subtle.decrypt(n, t, r);
              })
              .then(function(r) {
                var t;
                return (
                  (t =
                    'jwk' === e.toLowerCase()
                      ? JSON.parse(s.buffer2string(new Uint8Array(r)))
                      : new Uint8Array(r)),
                  c.subtle.importKey(e, t, a, o, i)
                );
              });
          }),
          (r.alg2jwk = function(e) {
            return 'A' + e.length + /-(\w+)/i.exec(e.name.toUpperCase())[1];
          }),
          (r.jwk2alg = function(e) {
            throw new Error('Not implemented');
          }),
          (r.exportKey = function(e, r) {
            var t = this;
            return Promise.resolve().then(function() {
              var n = r.key;
              if ('jwk' === e.toLowerCase()) {
                return {
                  alg: t.alg2jwk(r.algorithm),
                  ext: r.extractable,
                  k: a.Base64Url.encode(n),
                  key_ops: r.usages,
                  kty: 'oct'
                };
              }
              return n.buffer;
            });
          }),
          (r.importKey = function(e, r, t, n, o) {
            return Promise.resolve().then(function() {
              var s;
              if ('jwk' === e.toLowerCase()) {
                var c = r;
                s = a.Base64Url.decode(c.k);
              } else s = new Uint8Array(r);
              var u = new i.CryptoKey({
                type: 'secret',
                algorithm: t,
                extractable: n,
                usages: o
              });
              return (u.key = s), u;
            });
          }),
          (r.checkModule = function() {
            if ('undefined' == typeof asmCrypto)
              throw new o.LinerError(
                o.LinerError.MODULE_NOT_FOUND,
                'asmCrypto',
                'https://github.com/vibornoff/asmcrypto.js'
              );
          }),
          r
        );
      })(a.BaseCrypto);
    r.AesCrypto = u;
    var p = t(2);
  },
  function(e, r, t) {
    'use strict';
    var n =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a = t(0),
      o = t(1),
      i = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          n(r, e),
          (r.digest = function(e, r) {
            return Promise.resolve().then(function() {
              if ('undefined' == typeof asmCrypto)
                throw new o.LinerError(
                  o.LinerError.MODULE_NOT_FOUND,
                  'asmCrypto',
                  'https://github.com/vibornoff/asmcrypto.js'
                );
              switch (e.name.toUpperCase()) {
                case a.AlgorithmNames.Sha1:
                  return asmCrypto.SHA1.bytes(r).buffer;
                case a.AlgorithmNames.Sha256:
                  return asmCrypto.SHA256.bytes(r).buffer;
                case a.AlgorithmNames.Sha512:
                  return asmCrypto.SHA512.bytes(r).buffer;
                default:
                  throw new o.LinerError(
                    "Not supported algorithm '" + e.name + "'"
                  );
              }
            });
          }),
          r
        );
      })(a.BaseCrypto);
    r.ShaCrypto = i;
  },
  function(e, r, t) {
    'use strict';
    function n(e) {
      for (var r = new Uint8Array(e), t = [], n = 0; n < r.length; n++)
        t.push(r[n]);
      return t;
    }
    function a(e, r) {
      e.length % 2 && (e = '0' + e);
      for (var t = new Uint8Array(e.length / 2), n = 0; n < e.length; n++) {
        var a = e.slice(n, ++n + 1);
        t[(n - 1) / 2] = parseInt(a, 16);
      }
      if (r) {
        var o = t.length;
        (o = o > 32 ? (o > 48 ? 66 : 48) : 32),
          t.length < o && (t = p.concat(new Uint8Array(o - t.length), t));
      }
      return t;
    }
    function o(e, r) {
      for (var t = '', n = 0; n < e.length; n++) {
        var a = e[n].toString(16);
        t += a.length % 2 ? '0' + a : a;
      }
      if (r) {
        var o = e.length;
        (o = o > 32 ? (o > 48 ? 66 : 48) : 32),
          t.length / 2 < o &&
            (t = new Array(2 * o - t.length + 1).join('0') + t);
      }
      return t;
    }
    var i =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var s = t(0),
      c = t(1),
      u = t(3),
      p = t(5),
      h = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          i(r, e),
          (r.generateKey = function(e, r, t) {
            var n = this;
            return Promise.resolve().then(function() {
              n.checkModule();
              var t = new elliptic.ec(n.getNamedCurve(e.namedCurve)),
                a = new u.CryptoKey({
                  type: 'private',
                  algorithm: e,
                  extractable: r,
                  usages: []
                }),
                o = new u.CryptoKey({
                  type: 'public',
                  algorithm: e,
                  extractable: !0,
                  usages: []
                });
              return (
                (a.key = o.key = t.genKeyPair()),
                e.name === s.AlgorithmNames.EcDSA
                  ? ((a.usages = ['sign']), (o.usages = ['verify']))
                  : e.name === s.AlgorithmNames.EcDH &&
                    ((a.usages = ['deriveKey', 'deriveBits']), (o.usages = [])),
                { privateKey: a, publicKey: o }
              );
            });
          }),
          (r.sign = function(e, r, t) {
            return Promise.resolve()
              .then(function() {
                var r = e;
                return new f.Crypto().subtle.digest(r.hash, t);
              })
              .then(function(e) {
                var t = n(e),
                  i = r.key.sign(t);
                return a(o(i.r.toArray(), !0) + o(i.s.toArray(), !0)).buffer;
              });
          }),
          (r.verify = function(e, r, t, a) {
            var o;
            return Promise.resolve()
              .then(function() {
                var r = e;
                return (
                  (o = {
                    r: t.slice(0, t.byteLength / 2),
                    s: t.slice(t.byteLength / 2)
                  }),
                  new f.Crypto().subtle.digest(r.hash, a)
                );
              })
              .then(function(e) {
                var t = n(e);
                return r.key.verify(t, o);
              });
          }),
          (r.deriveKey = function(e, r, t, n, a) {
            var o = this;
            return Promise.resolve()
              .then(function() {
                return o.deriveBits(e, r, t.length);
              })
              .then(function(e) {
                return new f.Crypto().subtle.importKey(
                  'raw',
                  new Uint8Array(e),
                  t,
                  n,
                  a
                );
              });
          }),
          (r.deriveBits = function(e, r, t) {
            return Promise.resolve().then(function() {
              var n = (Promise.resolve(null),
                r.key.derive(e.public.key.getPublic())),
                a = new Uint8Array(n.toArray()),
                o = a.length;
              return (
                (o = o > 32 ? (o > 48 ? 66 : 48) : 32),
                a.length < o && (a = p.concat(new Uint8Array(o - a.length), a)),
                a.slice(0, t / 8).buffer
              );
            });
          }),
          (r.exportKey = function(e, r) {
            return Promise.resolve().then(function() {
              var t = r.key;
              if ('jwk' === e.toLowerCase()) {
                var n = t.getPublic('hex').slice(2),
                  o = n.slice(0, n.length / 2),
                  i = n.slice(n.length / 2, n.length);
                if ('public' === r.type) {
                  var u = {
                    crv: r.algorithm.namedCurve,
                    ext: r.extractable,
                    x: s.Base64Url.encode(a(o, !0)),
                    y: s.Base64Url.encode(a(i, !0)),
                    key_ops: r.usages,
                    kty: 'EC'
                  };
                  return u;
                }
                var u = {
                  crv: r.algorithm.namedCurve,
                  ext: r.extractable,
                  d: s.Base64Url.encode(a(t.getPrivate('hex'), !0)),
                  x: s.Base64Url.encode(a(o, !0)),
                  y: s.Base64Url.encode(a(i, !0)),
                  key_ops: r.usages,
                  kty: 'EC'
                };
                return u;
              }
              throw new c.LinerError("Format '" + e + "' is not implemented");
            });
          }),
          (r.importKey = function(e, r, t, n, a) {
            var i = this;
            return Promise.resolve().then(function() {
              var h = new u.CryptoKey({
                algorithm: t,
                extractable: n,
                usages: a
              });
              if ('jwk' !== e.toLowerCase())
                throw new c.LinerError("Format '" + e + "' is not implemented");
              var f = i.getNamedCurve(t.namedCurve);
              console.log(f);
              var y = new elliptic.ec(f);
              if (r.d)
                (h.key = y.keyFromPrivate(s.Base64Url.decode(r.d))),
                  (h.type = 'private');
              else {
                var l = p.concat(
                    new Uint8Array([4]),
                    s.Base64Url.decode(r.x),
                    s.Base64Url.decode(r.y)
                  ),
                  m = o(l);
                (h.key = y.keyFromPublic(m, 'hex')), (h.type = 'public');
              }
              return h;
            });
          }),
          (r.checkModule = function() {
            if ('undefined' == typeof elliptic)
              throw new c.LinerError(
                c.LinerError.MODULE_NOT_FOUND,
                'elliptic',
                'https://github.com/indutny/elliptic'
              );
          }),
          (r.getNamedCurve = function(e) {
            var r = e.toUpperCase(),
              t = '';
            if (['P-256', 'P-384', 'P-521'].indexOf(r) > -1)
              t = r.replace('-', '').toLowerCase();
            else {
              if ('K-256' !== r)
                throw new c.LinerError("Unsupported named curve '" + e + "'");
              t = 'secp256k1';
            }
            return t;
          }),
          r
        );
      })(s.BaseCrypto);
    r.EcCrypto = h;
    var f = t(2);
  },
  function(e, r, t) {
    'use strict';
    var n =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a = t(0),
      o = t(1),
      i = t(3),
      s = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          n(r, e),
          (r.importKey = function(e, r, t, n, a) {
            return Promise.resolve().then(function() {
              var e = new Uint8Array(r),
                o = new i.CryptoKey({
                  type: 'secret',
                  algorithm: t,
                  extractable: n,
                  usages: a
                });
              return (o.key = e), o;
            });
          }),
          (r.deriveBits = function(e, r, t) {
            return Promise.resolve().then(function() {
              var n,
                i = new Uint8Array(e.salt),
                s = e.iterations,
                c = t / 8,
                u = 'string' == typeof e.hash ? e.hash : e.hash.name;
              switch (u.toUpperCase()) {
                case a.AlgorithmNames.Sha512.toUpperCase():
                  n = asmCrypto.PBKDF2_HMAC_SHA512.bytes(r.key, i, s, c);
                  break;
                case a.AlgorithmNames.Sha256.toUpperCase():
                  n = asmCrypto.PBKDF2_HMAC_SHA256.bytes(r.key, i, s, c);
                  break;
                case a.AlgorithmNames.Sha1.toUpperCase():
                  n = asmCrypto.PBKDF2_HMAC_SHA1.bytes(r.key, i, s, c);
                  break;
                default:
                  throw new o.LinerError(o.LinerError.UNSUPPORTED_ALGORITHM, u);
              }
              return n.buffer;
            });
          }),
          (r.deriveKey = function(e, r, t, n, i) {
            var s = this;
            return Promise.resolve()
              .then(function() {
                var n = 0;
                switch (t.name.toUpperCase()) {
                  case a.AlgorithmNames.AesCBC.toUpperCase():
                  case a.AlgorithmNames.AesCTR.toUpperCase():
                  case a.AlgorithmNames.AesGCM.toUpperCase():
                  case a.AlgorithmNames.AesKW.toUpperCase():
                    n = t.length;
                    break;
                  case a.AlgorithmNames.Hmac.toUpperCase():
                    n = 512;
                    break;
                  default:
                    throw new o.LinerError(
                      o.LinerError.UNSUPPORTED_ALGORITHM,
                      t.name
                    );
                }
                return s.deriveBits(e, r, n);
              })
              .then(function(e) {
                return new c.Crypto().subtle.importKey(
                  'raw',
                  new Uint8Array(e),
                  t,
                  n,
                  i
                );
              });
          }),
          r
        );
      })(a.BaseCrypto);
    r.Pbkdf2Crypto = s;
    var c = t(2);
  },
  function(e, r, t) {
    'use strict';
    var n =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var a = t(0),
      o = t(3),
      i = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          n(r, e),
          (r.importKey = function(e, r, t, n, i) {
            return Promise.resolve().then(function() {
              var s;
              if ('jwk' === e.toLowerCase()) {
                var c = r;
                s = a.Base64Url.decode(c.k);
              } else s = new Uint8Array(r);
              var u = new o.CryptoKey({
                type: 'secret',
                algorithm: t,
                extractable: n,
                usages: i
              });
              return (u.key = s), u;
            });
          }),
          (r.sign = function(e, r, t) {
            return Promise.resolve().then(function() {
              return asmCrypto.HMAC_SHA256.bytes(t, r.key).buffer;
            });
          }),
          (r.exportKey = function(e, r) {
            return Promise.resolve().then(function() {
              var t = r.key;
              if ('jwk' === e.toLowerCase()) {
                return {
                  alg: 'HS256',
                  kty: 'oct',
                  k: a.Base64Url.encode(t),
                  key_ops: r.usages,
                  ext: r.extractable
                };
              }
              return t.buffer;
            });
          }),
          r
        );
      })(a.BaseCrypto);
    r.HmacCrypto = i;
  },
  function(e, r, t) {
    'use strict';
    function n(e, r) {
      return asmCrypto.HMAC_SHA256.bytes(e, r);
    }
    function a(e, r, t) {
      for (
        var n = e.length,
          a = Math.ceil(r / n),
          o = new Uint8Array(n * a + t.length + 1),
          i = 0,
          s = 0,
          c = 0;
        c < a;
        c++
      ) {
        o.set(t, s), (o[s + t.length] = c + 1);
        var u = asmCrypto.HMAC_SHA256.bytes(o.slice(i, s + t.length + 1), e);
        o.set(u, s), (i = s), (s += n);
      }
      return o.slice(0, r);
    }
    function o(e, r, t, o) {
      return a(n(e, t), r, o);
    }
    var i =
      (this && this.__extends) ||
      (function() {
        var e =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function(e, r) {
              e.__proto__ = r;
            }) ||
          function(e, r) {
            for (var t in r) r.hasOwnProperty(t) && (e[t] = r[t]);
          };
        return function(r, t) {
          function n() {
            this.constructor = r;
          }
          e(r, t),
            (r.prototype =
              null === t
                ? Object.create(t)
                : ((n.prototype = t.prototype), new n()));
        };
      })();
    Object.defineProperty(r, '__esModule', { value: !0 });
    var s = t(0),
      c = t(1),
      u = t(3),
      p = (function(e) {
        function r() {
          return (null !== e && e.apply(this, arguments)) || this;
        }
        return (
          i(r, e),
          (r.importKey = function(e, r, t, n, a) {
            return Promise.resolve().then(function() {
              var e = new Uint8Array(r),
                o = new u.CryptoKey({
                  type: 'secret',
                  algorithm: t,
                  extractable: n,
                  usages: a
                });
              return (o.key = e), o;
            });
          }),
          (r.deriveBits = function(e, r, t) {
            return Promise.resolve().then(function() {
              var n,
                a = new Uint8Array(e.salt),
                i = new Uint8Array(e.info),
                u = t / 8,
                p = 'string' == typeof e.hash ? e.hash : e.hash.name;
              switch (p.toUpperCase()) {
                case s.AlgorithmNames.Sha256.toUpperCase():
                  n = o(r.key, u, a, i);
                  break;
                default:
                  throw new c.LinerError(c.LinerError.UNSUPPORTED_ALGORITHM, p);
              }
              return n.buffer;
            });
          }),
          (r.deriveKey = function(e, r, t, n, a) {
            var o = this;
            return Promise.resolve()
              .then(function() {
                var n = 0;
                switch (t.name.toUpperCase()) {
                  case s.AlgorithmNames.AesCBC.toUpperCase():
                  case s.AlgorithmNames.AesCTR.toUpperCase():
                  case s.AlgorithmNames.AesGCM.toUpperCase():
                  case s.AlgorithmNames.AesKW.toUpperCase():
                    n = t.length;
                    break;
                  case s.AlgorithmNames.Hmac.toUpperCase():
                    n = 512;
                    break;
                  default:
                    throw new c.LinerError(
                      c.LinerError.UNSUPPORTED_ALGORITHM,
                      t.name
                    );
                }
                return o.deriveBits(e, r, n);
              })
              .then(function(e) {
                return new h.Crypto().subtle.importKey(
                  'raw',
                  new Uint8Array(e),
                  t,
                  n,
                  a
                );
              });
          }),
          r
        );
      })(s.BaseCrypto);
    r.HkdfCrypto = p;
    var h = t(2);
  },
  function(e, r, t) {
    'use strict';
    Object.defineProperty(r, '__esModule', { value: !0 });
    var n = t(6),
      a = self;
    n.nativeCrypto && Object.freeze(n.nativeCrypto.getRandomValues),
      delete self.crypto,
      (a.crypto = new n.Crypto()),
      Object.freeze(a.crypto),
      (r.crypto = a.crypto);
  }
]);
/*! asmCrypto v0.22.0, (c) 2018 asmCrypto.js, opensource.org/licenses/MIT */
!(function(t, e) {
  'object' == typeof exports && 'undefined' != typeof module
    ? e(exports)
    : 'function' == typeof define && define.amd
    ? define(['exports'], e)
    : e((t.asmCrypto = {}));
})(this, function(t) {
  'use strict';
  var e = (function() {
      var t,
        e,
        r = !1;
      function s(r, s) {
        var i = t[(e[r] + e[s]) % 255];
        return (0 !== r && 0 !== s) || (i = 0), i;
      }
      var i, n, a, h;
      function o() {
        function o(r) {
          var s, i, n;
          for (
            i = n = (function(r) {
              var s = t[255 - e[r]];
              return 0 === r && (s = 0), s;
            })(r),
              s = 0;
            s < 4;
            s++
          )
            n ^= i = 255 & ((i << 1) | (i >>> 7));
          return (n ^= 99);
        }
        r ||
          (function() {
            (t = []), (e = []);
            var s,
              i,
              n = 1;
            for (s = 0; s < 255; s++)
              (t[s] = n),
                (i = 128 & n),
                (n <<= 1),
                (n &= 255),
                128 === i && (n ^= 27),
                (n ^= t[s]),
                (e[t[s]] = s);
            (t[255] = t[0]), (e[0] = 0), (r = !0);
          })(),
          (i = []),
          (n = []),
          (a = [[], [], [], []]),
          (h = [[], [], [], []]);
        for (var c = 0; c < 256; c++) {
          var u = o(c);
          (i[c] = u),
            (n[u] = c),
            (a[0][c] = (s(2, u) << 24) | (u << 16) | (u << 8) | s(3, u)),
            (h[0][u] =
              (s(14, c) << 24) | (s(9, c) << 16) | (s(13, c) << 8) | s(11, c));
          for (var f = 1; f < 4; f++)
            (a[f][c] = (a[f - 1][c] >>> 8) | (a[f - 1][c] << 24)),
              (h[f][u] = (h[f - 1][u] >>> 8) | (h[f - 1][u] << 24));
        }
      }
      var c = function(t, e) {
        o();
        var r = new Uint32Array(e);
        r.set(i, 512), r.set(n, 768);
        for (var s = 0; s < 4; s++)
          r.set(a[s], (4096 + 1024 * s) >> 2),
            r.set(h[s], (8192 + 1024 * s) >> 2);
        var c = (function(t, e, r) {
          'use asm';
          var s = 0,
            i = 0,
            n = 0,
            a = 0,
            h = 0,
            o = 0,
            c = 0,
            u = 0,
            f = 0,
            l = 0,
            p = 0,
            w = 0,
            y = 0,
            _ = 0,
            d = 0,
            A = 0,
            v = 0,
            x = 0,
            E = 0,
            g = 0,
            m = 0;
          var b = new t.Uint32Array(r),
            S = new t.Uint8Array(r);
          function C(t, e, r, h, o, c, u, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            h = h | 0;
            o = o | 0;
            c = c | 0;
            u = u | 0;
            f = f | 0;
            var l = 0,
              p = 0,
              w = 0,
              y = 0,
              _ = 0,
              d = 0,
              A = 0,
              v = 0;
            (l = r | 0x400), (p = r | 0x800), (w = r | 0xc00);
            (o = o ^ b[(t | 0) >> 2]),
              (c = c ^ b[(t | 4) >> 2]),
              (u = u ^ b[(t | 8) >> 2]),
              (f = f ^ b[(t | 12) >> 2]);
            for (v = 16; (v | 0) <= h << 4; v = (v + 16) | 0) {
              (y =
                b[(r | ((o >> 22) & 1020)) >> 2] ^
                b[(l | ((c >> 14) & 1020)) >> 2] ^
                b[(p | ((u >> 6) & 1020)) >> 2] ^
                b[(w | ((f << 2) & 1020)) >> 2] ^
                b[(t | v | 0) >> 2]),
                (_ =
                  b[(r | ((c >> 22) & 1020)) >> 2] ^
                  b[(l | ((u >> 14) & 1020)) >> 2] ^
                  b[(p | ((f >> 6) & 1020)) >> 2] ^
                  b[(w | ((o << 2) & 1020)) >> 2] ^
                  b[(t | v | 4) >> 2]),
                (d =
                  b[(r | ((u >> 22) & 1020)) >> 2] ^
                  b[(l | ((f >> 14) & 1020)) >> 2] ^
                  b[(p | ((o >> 6) & 1020)) >> 2] ^
                  b[(w | ((c << 2) & 1020)) >> 2] ^
                  b[(t | v | 8) >> 2]),
                (A =
                  b[(r | ((f >> 22) & 1020)) >> 2] ^
                  b[(l | ((o >> 14) & 1020)) >> 2] ^
                  b[(p | ((c >> 6) & 1020)) >> 2] ^
                  b[(w | ((u << 2) & 1020)) >> 2] ^
                  b[(t | v | 12) >> 2]);
              (o = y), (c = _), (u = d), (f = A);
            }
            (s =
              (b[(e | ((o >> 22) & 1020)) >> 2] << 24) ^
              (b[(e | ((c >> 14) & 1020)) >> 2] << 16) ^
              (b[(e | ((u >> 6) & 1020)) >> 2] << 8) ^
              b[(e | ((f << 2) & 1020)) >> 2] ^
              b[(t | v | 0) >> 2]),
              (i =
                (b[(e | ((c >> 22) & 1020)) >> 2] << 24) ^
                (b[(e | ((u >> 14) & 1020)) >> 2] << 16) ^
                (b[(e | ((f >> 6) & 1020)) >> 2] << 8) ^
                b[(e | ((o << 2) & 1020)) >> 2] ^
                b[(t | v | 4) >> 2]),
              (n =
                (b[(e | ((u >> 22) & 1020)) >> 2] << 24) ^
                (b[(e | ((f >> 14) & 1020)) >> 2] << 16) ^
                (b[(e | ((o >> 6) & 1020)) >> 2] << 8) ^
                b[(e | ((c << 2) & 1020)) >> 2] ^
                b[(t | v | 8) >> 2]),
              (a =
                (b[(e | ((f >> 22) & 1020)) >> 2] << 24) ^
                (b[(e | ((o >> 14) & 1020)) >> 2] << 16) ^
                (b[(e | ((c >> 6) & 1020)) >> 2] << 8) ^
                b[(e | ((u << 2) & 1020)) >> 2] ^
                b[(t | v | 12) >> 2]);
          }
          function M(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            C(0x0000, 0x0800, 0x1000, m, t, e, r, s);
          }
          function U(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            var n = 0;
            C(0x0400, 0x0c00, 0x2000, m, t, s, r, e);
            (n = i), (i = a), (a = n);
          }
          function H(t, e, r, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            C(0x0000, 0x0800, 0x1000, m, h ^ t, o ^ e, c ^ r, u ^ f);
            (h = s), (o = i), (c = n), (u = a);
          }
          function T(t, e, r, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            var l = 0;
            C(0x0400, 0x0c00, 0x2000, m, t, f, r, e);
            (l = i), (i = a), (a = l);
            (s = s ^ h), (i = i ^ o), (n = n ^ c), (a = a ^ u);
            (h = t), (o = e), (c = r), (u = f);
          }
          function D(t, e, r, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            C(0x0000, 0x0800, 0x1000, m, h, o, c, u);
            (h = s = s ^ t), (o = i = i ^ e), (c = n = n ^ r), (u = a = a ^ f);
          }
          function k(t, e, r, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            C(0x0000, 0x0800, 0x1000, m, h, o, c, u);
            (s = s ^ t), (i = i ^ e), (n = n ^ r), (a = a ^ f);
            (h = t), (o = e), (c = r), (u = f);
          }
          function G(t, e, r, f) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            C(0x0000, 0x0800, 0x1000, m, h, o, c, u);
            (h = s), (o = i), (c = n), (u = a);
            (s = s ^ t), (i = i ^ e), (n = n ^ r), (a = a ^ f);
          }
          function I(t, e, r, h) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            h = h | 0;
            C(0x0000, 0x0800, 0x1000, m, f, l, p, w);
            w = (~A & w) | (A & (w + 1));
            p = (~d & p) | (d & (p + ((w | 0) == 0)));
            l = (~_ & l) | (_ & (l + ((p | 0) == 0)));
            f = (~y & f) | (y & (f + ((l | 0) == 0)));
            s = s ^ t;
            i = i ^ e;
            n = n ^ r;
            a = a ^ h;
          }
          function Z(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            var i = 0,
              n = 0,
              a = 0,
              f = 0,
              l = 0,
              p = 0,
              w = 0,
              y = 0,
              _ = 0,
              d = 0;
            (t = t ^ h), (e = e ^ o), (r = r ^ c), (s = s ^ u);
            (i = v | 0), (n = x | 0), (a = E | 0), (f = g | 0);
            for (; (_ | 0) < 128; _ = (_ + 1) | 0) {
              if (i >>> 31) {
                (l = l ^ t), (p = p ^ e), (w = w ^ r), (y = y ^ s);
              }
              (i = (i << 1) | (n >>> 31)),
                (n = (n << 1) | (a >>> 31)),
                (a = (a << 1) | (f >>> 31)),
                (f = f << 1);
              d = s & 1;
              (s = (s >>> 1) | (r << 31)),
                (r = (r >>> 1) | (e << 31)),
                (e = (e >>> 1) | (t << 31)),
                (t = t >>> 1);
              if (d) t = t ^ 0xe1000000;
            }
            (h = l), (o = p), (c = w), (u = y);
          }
          function P(t) {
            t = t | 0;
            m = t;
          }
          function B(t, e, r, h) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            h = h | 0;
            (s = t), (i = e), (n = r), (a = h);
          }
          function z(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            (h = t), (o = e), (c = r), (u = s);
          }
          function O(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            (f = t), (l = e), (p = r), (w = s);
          }
          function q(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            (y = t), (_ = e), (d = r), (A = s);
          }
          function L(t, e, r, s) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            s = s | 0;
            (w = (~A & w) | (A & s)),
              (p = (~d & p) | (d & r)),
              (l = (~_ & l) | (_ & e)),
              (f = (~y & f) | (y & t));
          }
          function R(t) {
            t = t | 0;
            if (t & 15) return -1;
            (S[t | 0] = s >>> 24),
              (S[t | 1] = (s >>> 16) & 255),
              (S[t | 2] = (s >>> 8) & 255),
              (S[t | 3] = s & 255),
              (S[t | 4] = i >>> 24),
              (S[t | 5] = (i >>> 16) & 255),
              (S[t | 6] = (i >>> 8) & 255),
              (S[t | 7] = i & 255),
              (S[t | 8] = n >>> 24),
              (S[t | 9] = (n >>> 16) & 255),
              (S[t | 10] = (n >>> 8) & 255),
              (S[t | 11] = n & 255),
              (S[t | 12] = a >>> 24),
              (S[t | 13] = (a >>> 16) & 255),
              (S[t | 14] = (a >>> 8) & 255),
              (S[t | 15] = a & 255);
            return 16;
          }
          function K(t) {
            t = t | 0;
            if (t & 15) return -1;
            (S[t | 0] = h >>> 24),
              (S[t | 1] = (h >>> 16) & 255),
              (S[t | 2] = (h >>> 8) & 255),
              (S[t | 3] = h & 255),
              (S[t | 4] = o >>> 24),
              (S[t | 5] = (o >>> 16) & 255),
              (S[t | 6] = (o >>> 8) & 255),
              (S[t | 7] = o & 255),
              (S[t | 8] = c >>> 24),
              (S[t | 9] = (c >>> 16) & 255),
              (S[t | 10] = (c >>> 8) & 255),
              (S[t | 11] = c & 255),
              (S[t | 12] = u >>> 24),
              (S[t | 13] = (u >>> 16) & 255),
              (S[t | 14] = (u >>> 8) & 255),
              (S[t | 15] = u & 255);
            return 16;
          }
          function N() {
            M(0, 0, 0, 0);
            (v = s), (x = i), (E = n), (g = a);
          }
          function F(t, e, r) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            var h = 0;
            if (e & 15) return -1;
            while ((r | 0) >= 16) {
              V[t & 7](
                (S[e | 0] << 24) |
                  (S[e | 1] << 16) |
                  (S[e | 2] << 8) |
                  S[e | 3],
                (S[e | 4] << 24) |
                  (S[e | 5] << 16) |
                  (S[e | 6] << 8) |
                  S[e | 7],
                (S[e | 8] << 24) |
                  (S[e | 9] << 16) |
                  (S[e | 10] << 8) |
                  S[e | 11],
                (S[e | 12] << 24) |
                  (S[e | 13] << 16) |
                  (S[e | 14] << 8) |
                  S[e | 15]
              );
              (S[e | 0] = s >>> 24),
                (S[e | 1] = (s >>> 16) & 255),
                (S[e | 2] = (s >>> 8) & 255),
                (S[e | 3] = s & 255),
                (S[e | 4] = i >>> 24),
                (S[e | 5] = (i >>> 16) & 255),
                (S[e | 6] = (i >>> 8) & 255),
                (S[e | 7] = i & 255),
                (S[e | 8] = n >>> 24),
                (S[e | 9] = (n >>> 16) & 255),
                (S[e | 10] = (n >>> 8) & 255),
                (S[e | 11] = n & 255),
                (S[e | 12] = a >>> 24),
                (S[e | 13] = (a >>> 16) & 255),
                (S[e | 14] = (a >>> 8) & 255),
                (S[e | 15] = a & 255);
              (h = (h + 16) | 0), (e = (e + 16) | 0), (r = (r - 16) | 0);
            }
            return h | 0;
          }
          function j(t, e, r) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            var s = 0;
            if (e & 15) return -1;
            while ((r | 0) >= 16) {
              W[t & 1](
                (S[e | 0] << 24) |
                  (S[e | 1] << 16) |
                  (S[e | 2] << 8) |
                  S[e | 3],
                (S[e | 4] << 24) |
                  (S[e | 5] << 16) |
                  (S[e | 6] << 8) |
                  S[e | 7],
                (S[e | 8] << 24) |
                  (S[e | 9] << 16) |
                  (S[e | 10] << 8) |
                  S[e | 11],
                (S[e | 12] << 24) |
                  (S[e | 13] << 16) |
                  (S[e | 14] << 8) |
                  S[e | 15]
              );
              (s = (s + 16) | 0), (e = (e + 16) | 0), (r = (r - 16) | 0);
            }
            return s | 0;
          }
          var V = [M, U, H, T, D, k, G, I];
          var W = [H, Z];
          return {
            set_rounds: P,
            set_state: B,
            set_iv: z,
            set_nonce: O,
            set_mask: q,
            set_counter: L,
            get_state: R,
            get_iv: K,
            gcm_init: N,
            cipher: F,
            mac: j
          };
        })({ Uint8Array: Uint8Array, Uint32Array: Uint32Array }, t, e);
        return (
          (c.set_key = function(t, e, s, n, a, o, u, f, l) {
            var p = r.subarray(0, 60),
              w = r.subarray(256, 316);
            p.set([e, s, n, a, o, u, f, l]);
            for (var y = t, _ = 1; y < 4 * t + 28; y++) {
              var d = p[y - 1];
              (y % t == 0 || (8 === t && y % t == 4)) &&
                (d =
                  (i[d >>> 24] << 24) ^
                  (i[(d >>> 16) & 255] << 16) ^
                  (i[(d >>> 8) & 255] << 8) ^
                  i[255 & d]),
                y % t == 0 &&
                  ((d = (d << 8) ^ (d >>> 24) ^ (_ << 24)),
                  (_ = (_ << 1) ^ (128 & _ ? 27 : 0))),
                (p[y] = p[y - t] ^ d);
            }
            for (var A = 0; A < y; A += 4)
              for (var v = 0; v < 4; v++)
                (d = p[y - (4 + A) + ((4 - v) % 4)]),
                  (w[A + v] =
                    A < 4 || A >= y - 4
                      ? d
                      : h[0][i[d >>> 24]] ^
                        h[1][i[(d >>> 16) & 255]] ^
                        h[2][i[(d >>> 8) & 255]] ^
                        h[3][i[255 & d]]);
            c.set_rounds(t + 5);
          }),
          c
        );
      };
      return (
        (c.ENC = { ECB: 0, CBC: 2, CFB: 4, OFB: 6, CTR: 7 }),
        (c.DEC = { ECB: 1, CBC: 3, CFB: 5, OFB: 6, CTR: 7 }),
        (c.MAC = { CBC: 0, GCM: 1 }),
        (c.HEAP_DATA = 16384),
        c
      );
    })(),
    r = new Uint8Array(1048576),
    s = e(null, r.buffer);
  function i() {
    var t = Error.apply(this, arguments);
    (this.message = t.message), (this.stack = t.stack);
  }
  function n() {
    var t = Error.apply(this, arguments);
    (this.message = t.message), (this.stack = t.stack);
  }
  function a() {
    var t = Error.apply(this, arguments);
    (this.message = t.message), (this.stack = t.stack);
  }
  function h(t, e) {
    e = !!e;
    for (
      var r = t.length, s = new Uint8Array(e ? 4 * r : r), i = 0, n = 0;
      i < r;
      i++
    ) {
      var a = t.charCodeAt(i);
      if (e && 55296 <= a && a <= 56319) {
        if (++i >= r)
          throw new Error(
            'Malformed string, low surrogate expected at position ' + i
          );
        a = ((55296 ^ a) << 10) | 65536 | (56320 ^ t.charCodeAt(i));
      } else if (!e && a >>> 8)
        throw new Error('Wide characters are not allowed.');
      !e || a <= 127
        ? (s[n++] = a)
        : a <= 2047
        ? ((s[n++] = 192 | (a >> 6)), (s[n++] = 128 | (63 & a)))
        : a <= 65535
        ? ((s[n++] = 224 | (a >> 12)),
          (s[n++] = 128 | ((a >> 6) & 63)),
          (s[n++] = 128 | (63 & a)))
        : ((s[n++] = 240 | (a >> 18)),
          (s[n++] = 128 | ((a >> 12) & 63)),
          (s[n++] = 128 | ((a >> 6) & 63)),
          (s[n++] = 128 | (63 & a)));
    }
    return s.subarray(0, n);
  }
  function o(t) {
    for (var e = '', r = 0; r < t.length; r++) {
      var s = (255 & t[r]).toString(16);
      s.length < 2 && (e += '0'), (e += s);
    }
    return e;
  }
  function c(t) {
    return btoa(
      (function(t, e) {
        e = !!e;
        for (var r = t.length, s = new Array(r), i = 0, n = 0; i < r; i++) {
          var a = t[i];
          if (!e || a < 128) s[n++] = a;
          else if (a >= 192 && a < 224 && i + 1 < r)
            s[n++] = ((31 & a) << 6) | (63 & t[++i]);
          else if (a >= 224 && a < 240 && i + 2 < r)
            s[n++] = ((15 & a) << 12) | ((63 & t[++i]) << 6) | (63 & t[++i]);
          else {
            if (!(a >= 240 && a < 248 && i + 3 < r))
              throw new Error('Malformed UTF8 character at byte offset ' + i);
            var h =
              ((7 & a) << 18) |
              ((63 & t[++i]) << 12) |
              ((63 & t[++i]) << 6) |
              (63 & t[++i]);
            h <= 65535
              ? (s[n++] = h)
              : ((h ^= 65536),
                (s[n++] = 55296 | (h >> 10)),
                (s[n++] = 56320 | (1023 & h)));
          }
        }
        var o = '';
        for (i = 0; i < n; i += 16384)
          o += String.fromCharCode.apply(
            String,
            s.slice(i, i + 16384 <= n ? i + 16384 : n)
          );
        return o;
      })(t)
    );
  }
  function u(t) {
    return 'number' == typeof t;
  }
  function f(t) {
    return 'string' == typeof t;
  }
  function l(t) {
    return t instanceof ArrayBuffer;
  }
  function p(t) {
    return t instanceof Uint8Array;
  }
  function w(t, e, r) {
    var s = e ? e.byteLength : r || 65536;
    if (4095 & s || s <= 0)
      throw new Error(
        'heap size must be a positive integer and a multiple of 4096'
      );
    return (e = e || new t(new ArrayBuffer(s)));
  }
  function y(t, e, r, s, i) {
    var n = t.length - e,
      a = n < i ? n : i;
    return t.set(r.subarray(s, s + a), e), a;
  }
  (i.prototype = Object.create(Error.prototype, {
    name: { value: 'IllegalStateError' }
  })),
    (n.prototype = Object.create(Error.prototype, {
      name: { value: 'IllegalArgumentError' }
    })),
    (a.prototype = Object.create(Error.prototype, {
      name: { value: 'SecurityError' }
    }));
  class _ {
    constructor(t, r, s, i, n) {
      (this.nonce = null),
        (this.counter = 0),
        (this.counterSize = 0),
        (this.heap = w(Uint8Array, i).subarray(e.HEAP_DATA)),
        (this.asm = n || e(null, this.heap.buffer)),
        (this.mode = null),
        (this.key = null),
        this.AES_reset(t, r, s);
    }
    AES_set_key(t) {
      if (void 0 !== t) {
        if (!p(t)) throw new TypeError('unexpected key type');
        var e = t.length;
        if (16 !== e && 24 !== e && 32 !== e) throw new n('illegal key size');
        var r = new DataView(t.buffer, t.byteOffset, t.byteLength);
        this.asm.set_key(
          e >> 2,
          r.getUint32(0),
          r.getUint32(4),
          r.getUint32(8),
          r.getUint32(12),
          e > 16 ? r.getUint32(16) : 0,
          e > 16 ? r.getUint32(20) : 0,
          e > 24 ? r.getUint32(24) : 0,
          e > 24 ? r.getUint32(28) : 0
        ),
          (this.key = t);
      } else if (!this.key) throw new Error('key is required');
    }
    AES_CTR_set_options(t, e, r) {
      if (void 0 !== r) {
        if (r < 8 || r > 48) throw new n('illegal counter size');
        this.counterSize = r;
        var s = Math.pow(2, r) - 1;
        this.asm.set_mask(0, 0, (s / 4294967296) | 0, 0 | s);
      } else (this.counterSize = r = 48), this.asm.set_mask(0, 0, 65535, 4294967295);
      if (void 0 === t) throw new Error('nonce is required');
      if (!p(t)) throw new TypeError('unexpected nonce type');
      var i = t.length;
      if (!i || i > 16) throw new n('illegal nonce size');
      this.nonce = t;
      var a = new DataView(new ArrayBuffer(16));
      if (
        (new Uint8Array(a.buffer).set(t),
        this.asm.set_nonce(
          a.getUint32(0),
          a.getUint32(4),
          a.getUint32(8),
          a.getUint32(12)
        ),
        void 0 !== e)
      ) {
        if (!u(e)) throw new TypeError('unexpected counter type');
        if (e < 0 || e >= Math.pow(2, r)) throw new n('illegal counter value');
        (this.counter = e),
          this.asm.set_counter(0, 0, (e / 4294967296) | 0, 0 | e);
      } else this.counter = 0;
    }
    AES_set_iv(t) {
      if (void 0 !== t) {
        if (!p(t)) throw new TypeError('unexpected iv type');
        if (16 !== t.length) throw new n('illegal iv size');
        var e = new DataView(t.buffer, t.byteOffset, t.byteLength);
        (this.iv = t),
          this.asm.set_iv(
            e.getUint32(0),
            e.getUint32(4),
            e.getUint32(8),
            e.getUint32(12)
          );
      } else (this.iv = null), this.asm.set_iv(0, 0, 0, 0);
    }
    AES_set_padding(t) {
      this.padding = void 0 === t || !!t;
    }
    AES_reset(t, e, r) {
      return (
        (this.result = null),
        (this.pos = 0),
        (this.len = 0),
        this.AES_set_key(t),
        this.AES_set_iv(e),
        this.AES_set_padding(r),
        this
      );
    }
    AES_Encrypt_process(t) {
      if (!p(t)) throw new TypeError("data isn't of expected type");
      for (
        var r = this.asm,
          s = this.heap,
          i = e.ENC[this.mode],
          n = e.HEAP_DATA,
          a = this.pos,
          h = this.len,
          o = 0,
          c = t.length || 0,
          u = 0,
          f = 0,
          l = new Uint8Array((h + c) & -16);
        c > 0;

      )
        (h += f = y(s, a + h, t, o, c)),
          (o += f),
          (c -= f),
          (f = r.cipher(i, n + a, h)) && l.set(s.subarray(a, a + f), u),
          (u += f),
          f < h ? ((a += f), (h -= f)) : ((a = 0), (h = 0));
      return (this.result = l), (this.pos = a), (this.len = h), this;
    }
    AES_Encrypt_finish(t) {
      var r = null,
        s = 0;
      void 0 !== t && (s = (r = this.AES_Encrypt_process(t).result).length);
      var i = this.asm,
        a = this.heap,
        h = e.ENC[this.mode],
        o = e.HEAP_DATA,
        c = this.pos,
        u = this.len,
        f = 16 - (u % 16),
        l = u;
      if (this.hasOwnProperty('padding')) {
        if (this.padding) {
          for (var p = 0; p < f; ++p) a[c + u + p] = f;
          l = u += f;
        } else if (u % 16)
          throw new n('data length must be a multiple of the block size');
      } else u += f;
      var w = new Uint8Array(s + l);
      return (
        s && w.set(r),
        u && i.cipher(h, o + c, u),
        l && w.set(a.subarray(c, c + l), s),
        (this.result = w),
        (this.pos = 0),
        (this.len = 0),
        this
      );
    }
    AES_Decrypt_process(t) {
      if (!p(t)) throw new TypeError("data isn't of expected type");
      var r = this.asm,
        s = this.heap,
        i = e.DEC[this.mode],
        n = e.HEAP_DATA,
        a = this.pos,
        h = this.len,
        o = 0,
        c = t.length || 0,
        u = 0,
        f = (h + c) & -16,
        l = 0,
        w = 0;
      this.padding && (f -= l = h + c - f || 16);
      for (var _ = new Uint8Array(f); c > 0; )
        (h += w = y(s, a + h, t, o, c)),
          (o += w),
          (c -= w),
          (w = r.cipher(i, n + a, h - (c ? 0 : l))) &&
            _.set(s.subarray(a, a + w), u),
          (u += w),
          w < h ? ((a += w), (h -= w)) : ((a = 0), (h = 0));
      return (this.result = _), (this.pos = a), (this.len = h), this;
    }
    AES_Decrypt_finish(t) {
      var r = null,
        s = 0;
      void 0 !== t && (s = (r = this.AES_Decrypt_process(t).result).length);
      var i = this.asm,
        h = this.heap,
        o = e.DEC[this.mode],
        c = e.HEAP_DATA,
        u = this.pos,
        f = this.len,
        l = f;
      if (f > 0) {
        if (f % 16) {
          if (this.hasOwnProperty('padding'))
            throw new n('data length must be a multiple of the block size');
          f += 16 - (f % 16);
        }
        if (
          (i.cipher(o, c + u, f),
          this.hasOwnProperty('padding') && this.padding)
        ) {
          var p = h[u + l - 1];
          if (p < 1 || p > 16 || p > l) throw new a('bad padding');
          for (var w = 0, y = p; y > 1; y--) w |= p ^ h[u + l - y];
          if (w) throw new a('bad padding');
          l -= p;
        }
      }
      var _ = new Uint8Array(s + l);
      return (
        s > 0 && _.set(r),
        l > 0 && _.set(h.subarray(u, u + l), s),
        (this.result = _),
        (this.pos = 0),
        (this.len = 0),
        this
      );
    }
  }
  var d = 68719476704;
  class A extends _ {
    constructor(t, e, r, s, i, n) {
      super(t, void 0, !1, i, n),
        (this.nonce = null),
        (this.adata = null),
        (this.iv = null),
        (this.counter = 1),
        (this.tagSize = 16),
        (this.mode = 'GCM'),
        (this.BLOCK_SIZE = 16),
        this.reset(t, s, e, r);
    }
    reset(t, e, r, s) {
      return this.AES_GCM_reset(t, e, r, s);
    }
    encrypt(t) {
      return this.AES_GCM_encrypt(t);
    }
    decrypt(t) {
      return this.AES_GCM_decrypt(t);
    }
    AES_GCM_Encrypt_process(t) {
      if (!p(t)) throw new TypeError("data isn't of expected type");
      var r = 0,
        s = t.length || 0,
        i = this.asm,
        n = this.heap,
        a = this.counter,
        h = this.pos,
        o = this.len,
        c = 0,
        u = (o + s) & -16,
        f = 0;
      if (((a - 1) << 4) + o + s > d) throw new RangeError('counter overflow');
      for (var l = new Uint8Array(u); s > 0; )
        (o += f = y(n, h + o, t, r, s)),
          (r += f),
          (s -= f),
          (f = i.cipher(e.ENC.CTR, e.HEAP_DATA + h, o)),
          (f = i.mac(e.MAC.GCM, e.HEAP_DATA + h, f)) &&
            l.set(n.subarray(h, h + f), c),
          (a += f >>> 4),
          (c += f),
          f < o ? ((h += f), (o -= f)) : ((h = 0), (o = 0));
      return (
        (this.result = l),
        (this.counter = a),
        (this.pos = h),
        (this.len = o),
        this
      );
    }
    AES_GCM_Encrypt_finish() {
      var t = this.asm,
        r = this.heap,
        s = this.counter,
        i = this.tagSize,
        n = this.adata,
        a = this.pos,
        h = this.len,
        o = new Uint8Array(h + i);
      t.cipher(e.ENC.CTR, e.HEAP_DATA + a, (h + 15) & -16),
        h && o.set(r.subarray(a, a + h));
      for (var c = h; 15 & c; c++) r[a + c] = 0;
      t.mac(e.MAC.GCM, e.HEAP_DATA + a, c);
      var u = null !== n ? n.length : 0,
        f = ((s - 1) << 4) + h;
      return (
        (r[0] = r[1] = r[2] = 0),
        (r[3] = u >>> 29),
        (r[4] = u >>> 21),
        (r[5] = (u >>> 13) & 255),
        (r[6] = (u >>> 5) & 255),
        (r[7] = (u << 3) & 255),
        (r[8] = r[9] = r[10] = 0),
        (r[11] = f >>> 29),
        (r[12] = (f >>> 21) & 255),
        (r[13] = (f >>> 13) & 255),
        (r[14] = (f >>> 5) & 255),
        (r[15] = (f << 3) & 255),
        t.mac(e.MAC.GCM, e.HEAP_DATA, 16),
        t.get_iv(e.HEAP_DATA),
        t.set_counter(0, 0, 0, this.gamma0),
        t.cipher(e.ENC.CTR, e.HEAP_DATA, 16),
        o.set(r.subarray(0, i), h),
        (this.result = o),
        (this.counter = 1),
        (this.pos = 0),
        (this.len = 0),
        this
      );
    }
    AES_GCM_Decrypt_process(t) {
      if (!p(t)) throw new TypeError("data isn't of expected type");
      var r = 0,
        s = t.length || 0,
        i = this.asm,
        n = this.heap,
        a = this.counter,
        h = this.tagSize,
        o = this.pos,
        c = this.len,
        u = 0,
        f = c + s > h ? (c + s - h) & -16 : 0,
        l = c + s - f,
        w = 0;
      if (((a - 1) << 4) + c + s > d) throw new RangeError('counter overflow');
      for (var _ = new Uint8Array(f); s > l; )
        (c += w = y(n, o + c, t, r, s - l)),
          (r += w),
          (s -= w),
          (w = i.mac(e.MAC.GCM, e.HEAP_DATA + o, w)),
          (w = i.cipher(e.DEC.CTR, e.HEAP_DATA + o, w)) &&
            _.set(n.subarray(o, o + w), u),
          (a += w >>> 4),
          (u += w),
          (o = 0),
          (c = 0);
      return (
        s > 0 && (c += y(n, 0, t, r, s)),
        (this.result = _),
        (this.counter = a),
        (this.pos = o),
        (this.len = c),
        this
      );
    }
    AES_GCM_Decrypt_finish() {
      var t = this.asm,
        r = this.heap,
        s = this.tagSize,
        n = this.adata,
        h = this.counter,
        o = this.pos,
        c = this.len,
        u = c - s;
      if (c < s) throw new i('authentication tag not found');
      for (
        var f = new Uint8Array(u),
          l = new Uint8Array(r.subarray(o + u, o + c)),
          p = u;
        15 & p;
        p++
      )
        r[o + p] = 0;
      t.mac(e.MAC.GCM, e.HEAP_DATA + o, p),
        t.cipher(e.DEC.CTR, e.HEAP_DATA + o, p),
        u && f.set(r.subarray(o, o + u));
      var w = null !== n ? n.length : 0,
        y = ((h - 1) << 4) + c - s;
      (r[0] = r[1] = r[2] = 0),
        (r[3] = w >>> 29),
        (r[4] = w >>> 21),
        (r[5] = (w >>> 13) & 255),
        (r[6] = (w >>> 5) & 255),
        (r[7] = (w << 3) & 255),
        (r[8] = r[9] = r[10] = 0),
        (r[11] = y >>> 29),
        (r[12] = (y >>> 21) & 255),
        (r[13] = (y >>> 13) & 255),
        (r[14] = (y >>> 5) & 255),
        (r[15] = (y << 3) & 255),
        t.mac(e.MAC.GCM, e.HEAP_DATA, 16),
        t.get_iv(e.HEAP_DATA),
        t.set_counter(0, 0, 0, this.gamma0),
        t.cipher(e.ENC.CTR, e.HEAP_DATA, 16);
      var _ = 0;
      for (p = 0; p < s; ++p) _ |= l[p] ^ r[p];
      if (_) throw new a('data integrity check failed');
      return (
        (this.result = f),
        (this.counter = 1),
        (this.pos = 0),
        (this.len = 0),
        this
      );
    }
    AES_GCM_decrypt(t) {
      var e = this.AES_GCM_Decrypt_process(t).result,
        r = this.AES_GCM_Decrypt_finish().result,
        s = new Uint8Array(e.length + r.length);
      return (
        e.length && s.set(e),
        r.length && s.set(r, e.length),
        (this.result = s),
        this
      );
    }
    AES_GCM_encrypt(t) {
      var e = this.AES_GCM_Encrypt_process(t).result,
        r = this.AES_GCM_Encrypt_finish().result,
        s = new Uint8Array(e.length + r.length);
      return (
        e.length && s.set(e),
        r.length && s.set(r, e.length),
        (this.result = s),
        this
      );
    }
    AES_GCM_reset(t, r, s, i, a, h) {
      this.AES_reset(t, void 0, !1);
      var o = this.asm,
        c = this.heap;
      if ((o.gcm_init(), void 0 !== (r = r))) {
        if (!u(r)) throw new TypeError('tagSize must be a number');
        if (r < 4 || r > 16) throw new n('illegal tagSize value');
        this.tagSize = r;
      } else this.tagSize = 16;
      if (void 0 === s) throw new Error('nonce is required');
      if (!p(s)) throw new TypeError('unexpected nonce type');
      this.nonce = s;
      var f = s.length || 0,
        l = new Uint8Array(16);
      12 !== f
        ? (this._gcm_mac_process(s),
          (c[0] = c[1] = c[2] = c[3] = c[4] = c[5] = c[6] = c[7] = c[8] = c[9] = c[10] = 0),
          (c[11] = f >>> 29),
          (c[12] = (f >>> 21) & 255),
          (c[13] = (f >>> 13) & 255),
          (c[14] = (f >>> 5) & 255),
          (c[15] = (f << 3) & 255),
          o.mac(e.MAC.GCM, e.HEAP_DATA, 16),
          o.get_iv(e.HEAP_DATA),
          o.set_iv(),
          l.set(c.subarray(0, 16)))
        : (l.set(s), (l[15] = 1));
      var w = new DataView(l.buffer);
      if (
        ((this.gamma0 = w.getUint32(12)),
        o.set_nonce(w.getUint32(0), w.getUint32(4), w.getUint32(8), 0),
        o.set_mask(0, 0, 0, 4294967295),
        void 0 !== i && null !== i)
      ) {
        if (!p(i)) throw new TypeError('unexpected adata type');
        if (i.length > d) throw new n('illegal adata length');
        i.length
          ? ((this.adata = i), this._gcm_mac_process(i))
          : (this.adata = null);
      } else this.adata = null;
      if (void 0 !== a) {
        if (!u(a)) throw new TypeError('counter must be a number');
        if (a < 1 || a > 4294967295)
          throw new RangeError('counter must be a positive 32-bit integer');
        (this.counter = a), o.set_counter(0, 0, 0, (this.gamma0 + a) | 0);
      } else (this.counter = 1), o.set_counter(0, 0, 0, (this.gamma0 + 1) | 0);
      if (void 0 !== h) {
        if (!u(h)) throw new TypeError('iv must be a number');
        (this.iv = h), this.AES_set_iv(h);
      }
      return this;
    }
    _gcm_mac_process(t) {
      for (
        var r = this.heap, s = this.asm, i = 0, n = t.length || 0, a = 0;
        n > 0;

      ) {
        for (i += a = y(r, 0, t, i, n), n -= a; 15 & a; ) r[a++] = 0;
        s.mac(e.MAC.GCM, e.HEAP_DATA, a);
      }
    }
  }
  (A.encrypt = function(t, e, i, n, a) {
    if (void 0 === t) throw new SyntaxError('data required');
    if (void 0 === e) throw new SyntaxError('key required');
    if (void 0 === i) throw new SyntaxError('nonce required');
    return new A(e, i, n, a, r, s).encrypt(t).result;
  }),
    (A.decrypt = function(t, e, i, n, a) {
      if (void 0 === t) throw new SyntaxError('data required');
      if (void 0 === e) throw new SyntaxError('key required');
      if (void 0 === i) throw new SyntaxError('nonce required');
      return new A(e, i, n, a, r, s).decrypt(t).result;
    });
  class v {
    constructor(t) {
      if (!(t = t || {}).hash)
        throw new SyntaxError("option 'hash' is required");
      if (!t.hash.HASH_SIZE)
        throw new SyntaxError(
          "option 'hash' supplied doesn't seem to be a valid hash function"
        );
      return (
        (this.hash = t.hash),
        (this.BLOCK_SIZE = this.hash.BLOCK_SIZE),
        (this.HMAC_SIZE = this.hash.HASH_SIZE),
        (this.key = null),
        (this.verify = null),
        (this.result = null),
        (void 0 === t.password && void 0 === t.verify) || this.reset(t),
        this
      );
    }
    reset(t) {
      var e = (t = t || {}).password;
      if (null === this.key && !f(e) && !e)
        throw new i('no key is associated with the instance');
      (this.result = null),
        this.hash.reset(),
        (e || f(e)) && (this.key = x(this.hash, e));
      for (var r = new Uint8Array(this.key), s = 0; s < r.length; ++s)
        r[s] ^= 54;
      this.hash.process(r);
      var n = t.verify;
      return (
        void 0 !== n ? this._hmac_init_verify(n) : (this.verify = null), this
      );
    }
    process(t) {
      if (null === this.key)
        throw new i('no key is associated with the instance');
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      return this.hash.process(t), this;
    }
    finish() {
      if (null === this.key)
        throw new i('no key is associated with the instance');
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      for (
        var t = this.hash.finish().result, e = new Uint8Array(this.key), r = 0;
        r < e.length;
        ++r
      )
        e[r] ^= 92;
      var s = this.verify,
        n = this.hash
          .reset()
          .process(e)
          .process(t)
          .finish().result;
      if (s)
        if (s.length === n.length) {
          var a = 0;
          for (r = 0; r < s.length; r++) a |= s[r] ^ n[r];
          this.result = !a;
        } else this.result = !1;
      else this.result = n;
      return this;
    }
    _hmac_init_verify(t) {
      if (l(t) || p(t)) t = new Uint8Array(t);
      else {
        if (!f(t)) throw new TypeError("verify tag isn't of expected type");
        t = h(t);
      }
      if (t.length !== this.HMAC_SIZE)
        throw new n('illegal verification tag size');
      this.verify = t;
    }
  }
  function x(t, e) {
    if ((l(e) && (e = new Uint8Array(e)), f(e) && (e = h(e)), !p(e)))
      throw new TypeError("password isn't of expected type");
    var r = new Uint8Array(t.BLOCK_SIZE);
    return (
      e.length > t.BLOCK_SIZE
        ? r.set(
            t
              .reset()
              .process(e)
              .finish().result
          )
        : r.set(e),
      r
    );
  }
  var E = 64,
    g = 32;
  function m(t) {
    (t = t || {}),
      (this.heap = w(Uint8Array, t.heap)),
      (this.asm =
        t.asm ||
        (function(t, e, r) {
          'use asm';
          var s = 0,
            i = 0,
            n = 0,
            a = 0,
            h = 0,
            o = 0,
            c = 0,
            u = 0,
            f = 0,
            l = 0,
            p = 0,
            w = 0,
            y = 0,
            _ = 0,
            d = 0,
            A = 0,
            v = 0,
            x = 0,
            E = 0,
            g = 0,
            m = 0,
            b = 0,
            S = 0,
            C = 0,
            M = 0,
            U = 0,
            H = new t.Uint8Array(r);
          function T(t, e, r, f, l, p, w, y, _, d, A, v, x, E, g, m) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            l = l | 0;
            p = p | 0;
            w = w | 0;
            y = y | 0;
            _ = _ | 0;
            d = d | 0;
            A = A | 0;
            v = v | 0;
            x = x | 0;
            E = E | 0;
            g = g | 0;
            m = m | 0;
            var b = 0,
              S = 0,
              C = 0,
              M = 0,
              U = 0,
              H = 0,
              T = 0,
              D = 0;
            b = s;
            S = i;
            C = n;
            M = a;
            U = h;
            H = o;
            T = c;
            D = u;
            D =
              (t +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0x428a2f98) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            T =
              (e +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0x71374491) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            H =
              (r +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0xb5c0fbcf) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            U =
              (f +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0xe9b5dba5) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            M =
              (l +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x3956c25b) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            C =
              (p +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0x59f111f1) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            S =
              (w +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x923f82a4) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            b =
              (y +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0xab1c5ed5) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            D =
              (_ +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0xd807aa98) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            T =
              (d +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0x12835b01) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            H =
              (A +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0x243185be) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            U =
              (v +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0x550c7dc3) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            M =
              (x +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x72be5d74) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            C =
              (E +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0x80deb1fe) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            S =
              (g +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x9bdc06a7) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            b =
              (m +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0xc19bf174) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            t =
              (((e >>> 7) ^ (e >>> 18) ^ (e >>> 3) ^ (e << 25) ^ (e << 14)) +
                ((g >>> 17) ^ (g >>> 19) ^ (g >>> 10) ^ (g << 15) ^ (g << 13)) +
                t +
                d) |
              0;
            D =
              (t +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0xe49b69c1) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            e =
              (((r >>> 7) ^ (r >>> 18) ^ (r >>> 3) ^ (r << 25) ^ (r << 14)) +
                ((m >>> 17) ^ (m >>> 19) ^ (m >>> 10) ^ (m << 15) ^ (m << 13)) +
                e +
                A) |
              0;
            T =
              (e +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0xefbe4786) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            r =
              (((f >>> 7) ^ (f >>> 18) ^ (f >>> 3) ^ (f << 25) ^ (f << 14)) +
                ((t >>> 17) ^ (t >>> 19) ^ (t >>> 10) ^ (t << 15) ^ (t << 13)) +
                r +
                v) |
              0;
            H =
              (r +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0x0fc19dc6) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            f =
              (((l >>> 7) ^ (l >>> 18) ^ (l >>> 3) ^ (l << 25) ^ (l << 14)) +
                ((e >>> 17) ^ (e >>> 19) ^ (e >>> 10) ^ (e << 15) ^ (e << 13)) +
                f +
                x) |
              0;
            U =
              (f +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0x240ca1cc) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            l =
              (((p >>> 7) ^ (p >>> 18) ^ (p >>> 3) ^ (p << 25) ^ (p << 14)) +
                ((r >>> 17) ^ (r >>> 19) ^ (r >>> 10) ^ (r << 15) ^ (r << 13)) +
                l +
                E) |
              0;
            M =
              (l +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x2de92c6f) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            p =
              (((w >>> 7) ^ (w >>> 18) ^ (w >>> 3) ^ (w << 25) ^ (w << 14)) +
                ((f >>> 17) ^ (f >>> 19) ^ (f >>> 10) ^ (f << 15) ^ (f << 13)) +
                p +
                g) |
              0;
            C =
              (p +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0x4a7484aa) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            w =
              (((y >>> 7) ^ (y >>> 18) ^ (y >>> 3) ^ (y << 25) ^ (y << 14)) +
                ((l >>> 17) ^ (l >>> 19) ^ (l >>> 10) ^ (l << 15) ^ (l << 13)) +
                w +
                m) |
              0;
            S =
              (w +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x5cb0a9dc) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            y =
              (((_ >>> 7) ^ (_ >>> 18) ^ (_ >>> 3) ^ (_ << 25) ^ (_ << 14)) +
                ((p >>> 17) ^ (p >>> 19) ^ (p >>> 10) ^ (p << 15) ^ (p << 13)) +
                y +
                t) |
              0;
            b =
              (y +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0x76f988da) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            _ =
              (((d >>> 7) ^ (d >>> 18) ^ (d >>> 3) ^ (d << 25) ^ (d << 14)) +
                ((w >>> 17) ^ (w >>> 19) ^ (w >>> 10) ^ (w << 15) ^ (w << 13)) +
                _ +
                e) |
              0;
            D =
              (_ +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0x983e5152) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            d =
              (((A >>> 7) ^ (A >>> 18) ^ (A >>> 3) ^ (A << 25) ^ (A << 14)) +
                ((y >>> 17) ^ (y >>> 19) ^ (y >>> 10) ^ (y << 15) ^ (y << 13)) +
                d +
                r) |
              0;
            T =
              (d +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0xa831c66d) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            A =
              (((v >>> 7) ^ (v >>> 18) ^ (v >>> 3) ^ (v << 25) ^ (v << 14)) +
                ((_ >>> 17) ^ (_ >>> 19) ^ (_ >>> 10) ^ (_ << 15) ^ (_ << 13)) +
                A +
                f) |
              0;
            H =
              (A +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0xb00327c8) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            v =
              (((x >>> 7) ^ (x >>> 18) ^ (x >>> 3) ^ (x << 25) ^ (x << 14)) +
                ((d >>> 17) ^ (d >>> 19) ^ (d >>> 10) ^ (d << 15) ^ (d << 13)) +
                v +
                l) |
              0;
            U =
              (v +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0xbf597fc7) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            x =
              (((E >>> 7) ^ (E >>> 18) ^ (E >>> 3) ^ (E << 25) ^ (E << 14)) +
                ((A >>> 17) ^ (A >>> 19) ^ (A >>> 10) ^ (A << 15) ^ (A << 13)) +
                x +
                p) |
              0;
            M =
              (x +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0xc6e00bf3) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            E =
              (((g >>> 7) ^ (g >>> 18) ^ (g >>> 3) ^ (g << 25) ^ (g << 14)) +
                ((v >>> 17) ^ (v >>> 19) ^ (v >>> 10) ^ (v << 15) ^ (v << 13)) +
                E +
                w) |
              0;
            C =
              (E +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0xd5a79147) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            g =
              (((m >>> 7) ^ (m >>> 18) ^ (m >>> 3) ^ (m << 25) ^ (m << 14)) +
                ((x >>> 17) ^ (x >>> 19) ^ (x >>> 10) ^ (x << 15) ^ (x << 13)) +
                g +
                y) |
              0;
            S =
              (g +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x06ca6351) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            m =
              (((t >>> 7) ^ (t >>> 18) ^ (t >>> 3) ^ (t << 25) ^ (t << 14)) +
                ((E >>> 17) ^ (E >>> 19) ^ (E >>> 10) ^ (E << 15) ^ (E << 13)) +
                m +
                _) |
              0;
            b =
              (m +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0x14292967) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            t =
              (((e >>> 7) ^ (e >>> 18) ^ (e >>> 3) ^ (e << 25) ^ (e << 14)) +
                ((g >>> 17) ^ (g >>> 19) ^ (g >>> 10) ^ (g << 15) ^ (g << 13)) +
                t +
                d) |
              0;
            D =
              (t +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0x27b70a85) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            e =
              (((r >>> 7) ^ (r >>> 18) ^ (r >>> 3) ^ (r << 25) ^ (r << 14)) +
                ((m >>> 17) ^ (m >>> 19) ^ (m >>> 10) ^ (m << 15) ^ (m << 13)) +
                e +
                A) |
              0;
            T =
              (e +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0x2e1b2138) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            r =
              (((f >>> 7) ^ (f >>> 18) ^ (f >>> 3) ^ (f << 25) ^ (f << 14)) +
                ((t >>> 17) ^ (t >>> 19) ^ (t >>> 10) ^ (t << 15) ^ (t << 13)) +
                r +
                v) |
              0;
            H =
              (r +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0x4d2c6dfc) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            f =
              (((l >>> 7) ^ (l >>> 18) ^ (l >>> 3) ^ (l << 25) ^ (l << 14)) +
                ((e >>> 17) ^ (e >>> 19) ^ (e >>> 10) ^ (e << 15) ^ (e << 13)) +
                f +
                x) |
              0;
            U =
              (f +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0x53380d13) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            l =
              (((p >>> 7) ^ (p >>> 18) ^ (p >>> 3) ^ (p << 25) ^ (p << 14)) +
                ((r >>> 17) ^ (r >>> 19) ^ (r >>> 10) ^ (r << 15) ^ (r << 13)) +
                l +
                E) |
              0;
            M =
              (l +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x650a7354) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            p =
              (((w >>> 7) ^ (w >>> 18) ^ (w >>> 3) ^ (w << 25) ^ (w << 14)) +
                ((f >>> 17) ^ (f >>> 19) ^ (f >>> 10) ^ (f << 15) ^ (f << 13)) +
                p +
                g) |
              0;
            C =
              (p +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0x766a0abb) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            w =
              (((y >>> 7) ^ (y >>> 18) ^ (y >>> 3) ^ (y << 25) ^ (y << 14)) +
                ((l >>> 17) ^ (l >>> 19) ^ (l >>> 10) ^ (l << 15) ^ (l << 13)) +
                w +
                m) |
              0;
            S =
              (w +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x81c2c92e) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            y =
              (((_ >>> 7) ^ (_ >>> 18) ^ (_ >>> 3) ^ (_ << 25) ^ (_ << 14)) +
                ((p >>> 17) ^ (p >>> 19) ^ (p >>> 10) ^ (p << 15) ^ (p << 13)) +
                y +
                t) |
              0;
            b =
              (y +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0x92722c85) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            _ =
              (((d >>> 7) ^ (d >>> 18) ^ (d >>> 3) ^ (d << 25) ^ (d << 14)) +
                ((w >>> 17) ^ (w >>> 19) ^ (w >>> 10) ^ (w << 15) ^ (w << 13)) +
                _ +
                e) |
              0;
            D =
              (_ +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0xa2bfe8a1) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            d =
              (((A >>> 7) ^ (A >>> 18) ^ (A >>> 3) ^ (A << 25) ^ (A << 14)) +
                ((y >>> 17) ^ (y >>> 19) ^ (y >>> 10) ^ (y << 15) ^ (y << 13)) +
                d +
                r) |
              0;
            T =
              (d +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0xa81a664b) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            A =
              (((v >>> 7) ^ (v >>> 18) ^ (v >>> 3) ^ (v << 25) ^ (v << 14)) +
                ((_ >>> 17) ^ (_ >>> 19) ^ (_ >>> 10) ^ (_ << 15) ^ (_ << 13)) +
                A +
                f) |
              0;
            H =
              (A +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0xc24b8b70) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            v =
              (((x >>> 7) ^ (x >>> 18) ^ (x >>> 3) ^ (x << 25) ^ (x << 14)) +
                ((d >>> 17) ^ (d >>> 19) ^ (d >>> 10) ^ (d << 15) ^ (d << 13)) +
                v +
                l) |
              0;
            U =
              (v +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0xc76c51a3) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            x =
              (((E >>> 7) ^ (E >>> 18) ^ (E >>> 3) ^ (E << 25) ^ (E << 14)) +
                ((A >>> 17) ^ (A >>> 19) ^ (A >>> 10) ^ (A << 15) ^ (A << 13)) +
                x +
                p) |
              0;
            M =
              (x +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0xd192e819) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            E =
              (((g >>> 7) ^ (g >>> 18) ^ (g >>> 3) ^ (g << 25) ^ (g << 14)) +
                ((v >>> 17) ^ (v >>> 19) ^ (v >>> 10) ^ (v << 15) ^ (v << 13)) +
                E +
                w) |
              0;
            C =
              (E +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0xd6990624) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            g =
              (((m >>> 7) ^ (m >>> 18) ^ (m >>> 3) ^ (m << 25) ^ (m << 14)) +
                ((x >>> 17) ^ (x >>> 19) ^ (x >>> 10) ^ (x << 15) ^ (x << 13)) +
                g +
                y) |
              0;
            S =
              (g +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0xf40e3585) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            m =
              (((t >>> 7) ^ (t >>> 18) ^ (t >>> 3) ^ (t << 25) ^ (t << 14)) +
                ((E >>> 17) ^ (E >>> 19) ^ (E >>> 10) ^ (E << 15) ^ (E << 13)) +
                m +
                _) |
              0;
            b =
              (m +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0x106aa070) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            t =
              (((e >>> 7) ^ (e >>> 18) ^ (e >>> 3) ^ (e << 25) ^ (e << 14)) +
                ((g >>> 17) ^ (g >>> 19) ^ (g >>> 10) ^ (g << 15) ^ (g << 13)) +
                t +
                d) |
              0;
            D =
              (t +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0x19a4c116) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            e =
              (((r >>> 7) ^ (r >>> 18) ^ (r >>> 3) ^ (r << 25) ^ (r << 14)) +
                ((m >>> 17) ^ (m >>> 19) ^ (m >>> 10) ^ (m << 15) ^ (m << 13)) +
                e +
                A) |
              0;
            T =
              (e +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0x1e376c08) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            r =
              (((f >>> 7) ^ (f >>> 18) ^ (f >>> 3) ^ (f << 25) ^ (f << 14)) +
                ((t >>> 17) ^ (t >>> 19) ^ (t >>> 10) ^ (t << 15) ^ (t << 13)) +
                r +
                v) |
              0;
            H =
              (r +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0x2748774c) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            f =
              (((l >>> 7) ^ (l >>> 18) ^ (l >>> 3) ^ (l << 25) ^ (l << 14)) +
                ((e >>> 17) ^ (e >>> 19) ^ (e >>> 10) ^ (e << 15) ^ (e << 13)) +
                f +
                x) |
              0;
            U =
              (f +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0x34b0bcb5) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            l =
              (((p >>> 7) ^ (p >>> 18) ^ (p >>> 3) ^ (p << 25) ^ (p << 14)) +
                ((r >>> 17) ^ (r >>> 19) ^ (r >>> 10) ^ (r << 15) ^ (r << 13)) +
                l +
                E) |
              0;
            M =
              (l +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x391c0cb3) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            p =
              (((w >>> 7) ^ (w >>> 18) ^ (w >>> 3) ^ (w << 25) ^ (w << 14)) +
                ((f >>> 17) ^ (f >>> 19) ^ (f >>> 10) ^ (f << 15) ^ (f << 13)) +
                p +
                g) |
              0;
            C =
              (p +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0x4ed8aa4a) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            w =
              (((y >>> 7) ^ (y >>> 18) ^ (y >>> 3) ^ (y << 25) ^ (y << 14)) +
                ((l >>> 17) ^ (l >>> 19) ^ (l >>> 10) ^ (l << 15) ^ (l << 13)) +
                w +
                m) |
              0;
            S =
              (w +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0x5b9cca4f) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            y =
              (((_ >>> 7) ^ (_ >>> 18) ^ (_ >>> 3) ^ (_ << 25) ^ (_ << 14)) +
                ((p >>> 17) ^ (p >>> 19) ^ (p >>> 10) ^ (p << 15) ^ (p << 13)) +
                y +
                t) |
              0;
            b =
              (y +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0x682e6ff3) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            _ =
              (((d >>> 7) ^ (d >>> 18) ^ (d >>> 3) ^ (d << 25) ^ (d << 14)) +
                ((w >>> 17) ^ (w >>> 19) ^ (w >>> 10) ^ (w << 15) ^ (w << 13)) +
                _ +
                e) |
              0;
            D =
              (_ +
                D +
                ((U >>> 6) ^
                  (U >>> 11) ^
                  (U >>> 25) ^
                  (U << 26) ^
                  (U << 21) ^
                  (U << 7)) +
                (T ^ (U & (H ^ T))) +
                0x748f82ee) |
              0;
            M = (M + D) | 0;
            D =
              (D +
                ((b & S) ^ (C & (b ^ S))) +
                ((b >>> 2) ^
                  (b >>> 13) ^
                  (b >>> 22) ^
                  (b << 30) ^
                  (b << 19) ^
                  (b << 10))) |
              0;
            d =
              (((A >>> 7) ^ (A >>> 18) ^ (A >>> 3) ^ (A << 25) ^ (A << 14)) +
                ((y >>> 17) ^ (y >>> 19) ^ (y >>> 10) ^ (y << 15) ^ (y << 13)) +
                d +
                r) |
              0;
            T =
              (d +
                T +
                ((M >>> 6) ^
                  (M >>> 11) ^
                  (M >>> 25) ^
                  (M << 26) ^
                  (M << 21) ^
                  (M << 7)) +
                (H ^ (M & (U ^ H))) +
                0x78a5636f) |
              0;
            C = (C + T) | 0;
            T =
              (T +
                ((D & b) ^ (S & (D ^ b))) +
                ((D >>> 2) ^
                  (D >>> 13) ^
                  (D >>> 22) ^
                  (D << 30) ^
                  (D << 19) ^
                  (D << 10))) |
              0;
            A =
              (((v >>> 7) ^ (v >>> 18) ^ (v >>> 3) ^ (v << 25) ^ (v << 14)) +
                ((_ >>> 17) ^ (_ >>> 19) ^ (_ >>> 10) ^ (_ << 15) ^ (_ << 13)) +
                A +
                f) |
              0;
            H =
              (A +
                H +
                ((C >>> 6) ^
                  (C >>> 11) ^
                  (C >>> 25) ^
                  (C << 26) ^
                  (C << 21) ^
                  (C << 7)) +
                (U ^ (C & (M ^ U))) +
                0x84c87814) |
              0;
            S = (S + H) | 0;
            H =
              (H +
                ((T & D) ^ (b & (T ^ D))) +
                ((T >>> 2) ^
                  (T >>> 13) ^
                  (T >>> 22) ^
                  (T << 30) ^
                  (T << 19) ^
                  (T << 10))) |
              0;
            v =
              (((x >>> 7) ^ (x >>> 18) ^ (x >>> 3) ^ (x << 25) ^ (x << 14)) +
                ((d >>> 17) ^ (d >>> 19) ^ (d >>> 10) ^ (d << 15) ^ (d << 13)) +
                v +
                l) |
              0;
            U =
              (v +
                U +
                ((S >>> 6) ^
                  (S >>> 11) ^
                  (S >>> 25) ^
                  (S << 26) ^
                  (S << 21) ^
                  (S << 7)) +
                (M ^ (S & (C ^ M))) +
                0x8cc70208) |
              0;
            b = (b + U) | 0;
            U =
              (U +
                ((H & T) ^ (D & (H ^ T))) +
                ((H >>> 2) ^
                  (H >>> 13) ^
                  (H >>> 22) ^
                  (H << 30) ^
                  (H << 19) ^
                  (H << 10))) |
              0;
            x =
              (((E >>> 7) ^ (E >>> 18) ^ (E >>> 3) ^ (E << 25) ^ (E << 14)) +
                ((A >>> 17) ^ (A >>> 19) ^ (A >>> 10) ^ (A << 15) ^ (A << 13)) +
                x +
                p) |
              0;
            M =
              (x +
                M +
                ((b >>> 6) ^
                  (b >>> 11) ^
                  (b >>> 25) ^
                  (b << 26) ^
                  (b << 21) ^
                  (b << 7)) +
                (C ^ (b & (S ^ C))) +
                0x90befffa) |
              0;
            D = (D + M) | 0;
            M =
              (M +
                ((U & H) ^ (T & (U ^ H))) +
                ((U >>> 2) ^
                  (U >>> 13) ^
                  (U >>> 22) ^
                  (U << 30) ^
                  (U << 19) ^
                  (U << 10))) |
              0;
            E =
              (((g >>> 7) ^ (g >>> 18) ^ (g >>> 3) ^ (g << 25) ^ (g << 14)) +
                ((v >>> 17) ^ (v >>> 19) ^ (v >>> 10) ^ (v << 15) ^ (v << 13)) +
                E +
                w) |
              0;
            C =
              (E +
                C +
                ((D >>> 6) ^
                  (D >>> 11) ^
                  (D >>> 25) ^
                  (D << 26) ^
                  (D << 21) ^
                  (D << 7)) +
                (S ^ (D & (b ^ S))) +
                0xa4506ceb) |
              0;
            T = (T + C) | 0;
            C =
              (C +
                ((M & U) ^ (H & (M ^ U))) +
                ((M >>> 2) ^
                  (M >>> 13) ^
                  (M >>> 22) ^
                  (M << 30) ^
                  (M << 19) ^
                  (M << 10))) |
              0;
            g =
              (((m >>> 7) ^ (m >>> 18) ^ (m >>> 3) ^ (m << 25) ^ (m << 14)) +
                ((x >>> 17) ^ (x >>> 19) ^ (x >>> 10) ^ (x << 15) ^ (x << 13)) +
                g +
                y) |
              0;
            S =
              (g +
                S +
                ((T >>> 6) ^
                  (T >>> 11) ^
                  (T >>> 25) ^
                  (T << 26) ^
                  (T << 21) ^
                  (T << 7)) +
                (b ^ (T & (D ^ b))) +
                0xbef9a3f7) |
              0;
            H = (H + S) | 0;
            S =
              (S +
                ((C & M) ^ (U & (C ^ M))) +
                ((C >>> 2) ^
                  (C >>> 13) ^
                  (C >>> 22) ^
                  (C << 30) ^
                  (C << 19) ^
                  (C << 10))) |
              0;
            m =
              (((t >>> 7) ^ (t >>> 18) ^ (t >>> 3) ^ (t << 25) ^ (t << 14)) +
                ((E >>> 17) ^ (E >>> 19) ^ (E >>> 10) ^ (E << 15) ^ (E << 13)) +
                m +
                _) |
              0;
            b =
              (m +
                b +
                ((H >>> 6) ^
                  (H >>> 11) ^
                  (H >>> 25) ^
                  (H << 26) ^
                  (H << 21) ^
                  (H << 7)) +
                (D ^ (H & (T ^ D))) +
                0xc67178f2) |
              0;
            U = (U + b) | 0;
            b =
              (b +
                ((S & C) ^ (M & (S ^ C))) +
                ((S >>> 2) ^
                  (S >>> 13) ^
                  (S >>> 22) ^
                  (S << 30) ^
                  (S << 19) ^
                  (S << 10))) |
              0;
            s = (s + b) | 0;
            i = (i + S) | 0;
            n = (n + C) | 0;
            a = (a + M) | 0;
            h = (h + U) | 0;
            o = (o + H) | 0;
            c = (c + T) | 0;
            u = (u + D) | 0;
          }
          function D(t) {
            t = t | 0;
            T(
              (H[t | 0] << 24) | (H[t | 1] << 16) | (H[t | 2] << 8) | H[t | 3],
              (H[t | 4] << 24) | (H[t | 5] << 16) | (H[t | 6] << 8) | H[t | 7],
              (H[t | 8] << 24) |
                (H[t | 9] << 16) |
                (H[t | 10] << 8) |
                H[t | 11],
              (H[t | 12] << 24) |
                (H[t | 13] << 16) |
                (H[t | 14] << 8) |
                H[t | 15],
              (H[t | 16] << 24) |
                (H[t | 17] << 16) |
                (H[t | 18] << 8) |
                H[t | 19],
              (H[t | 20] << 24) |
                (H[t | 21] << 16) |
                (H[t | 22] << 8) |
                H[t | 23],
              (H[t | 24] << 24) |
                (H[t | 25] << 16) |
                (H[t | 26] << 8) |
                H[t | 27],
              (H[t | 28] << 24) |
                (H[t | 29] << 16) |
                (H[t | 30] << 8) |
                H[t | 31],
              (H[t | 32] << 24) |
                (H[t | 33] << 16) |
                (H[t | 34] << 8) |
                H[t | 35],
              (H[t | 36] << 24) |
                (H[t | 37] << 16) |
                (H[t | 38] << 8) |
                H[t | 39],
              (H[t | 40] << 24) |
                (H[t | 41] << 16) |
                (H[t | 42] << 8) |
                H[t | 43],
              (H[t | 44] << 24) |
                (H[t | 45] << 16) |
                (H[t | 46] << 8) |
                H[t | 47],
              (H[t | 48] << 24) |
                (H[t | 49] << 16) |
                (H[t | 50] << 8) |
                H[t | 51],
              (H[t | 52] << 24) |
                (H[t | 53] << 16) |
                (H[t | 54] << 8) |
                H[t | 55],
              (H[t | 56] << 24) |
                (H[t | 57] << 16) |
                (H[t | 58] << 8) |
                H[t | 59],
              (H[t | 60] << 24) |
                (H[t | 61] << 16) |
                (H[t | 62] << 8) |
                H[t | 63]
            );
          }
          function k(t) {
            t = t | 0;
            H[t | 0] = s >>> 24;
            H[t | 1] = (s >>> 16) & 255;
            H[t | 2] = (s >>> 8) & 255;
            H[t | 3] = s & 255;
            H[t | 4] = i >>> 24;
            H[t | 5] = (i >>> 16) & 255;
            H[t | 6] = (i >>> 8) & 255;
            H[t | 7] = i & 255;
            H[t | 8] = n >>> 24;
            H[t | 9] = (n >>> 16) & 255;
            H[t | 10] = (n >>> 8) & 255;
            H[t | 11] = n & 255;
            H[t | 12] = a >>> 24;
            H[t | 13] = (a >>> 16) & 255;
            H[t | 14] = (a >>> 8) & 255;
            H[t | 15] = a & 255;
            H[t | 16] = h >>> 24;
            H[t | 17] = (h >>> 16) & 255;
            H[t | 18] = (h >>> 8) & 255;
            H[t | 19] = h & 255;
            H[t | 20] = o >>> 24;
            H[t | 21] = (o >>> 16) & 255;
            H[t | 22] = (o >>> 8) & 255;
            H[t | 23] = o & 255;
            H[t | 24] = c >>> 24;
            H[t | 25] = (c >>> 16) & 255;
            H[t | 26] = (c >>> 8) & 255;
            H[t | 27] = c & 255;
            H[t | 28] = u >>> 24;
            H[t | 29] = (u >>> 16) & 255;
            H[t | 30] = (u >>> 8) & 255;
            H[t | 31] = u & 255;
          }
          function G() {
            s = 0x6a09e667;
            i = 0xbb67ae85;
            n = 0x3c6ef372;
            a = 0xa54ff53a;
            h = 0x510e527f;
            o = 0x9b05688c;
            c = 0x1f83d9ab;
            u = 0x5be0cd19;
            f = l = 0;
          }
          function I(t, e, r, p, w, y, _, d, A, v) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            p = p | 0;
            w = w | 0;
            y = y | 0;
            _ = _ | 0;
            d = d | 0;
            A = A | 0;
            v = v | 0;
            s = t;
            i = e;
            n = r;
            a = p;
            h = w;
            o = y;
            c = _;
            u = d;
            f = A;
            l = v;
          }
          function Z(t, e) {
            t = t | 0;
            e = e | 0;
            var r = 0;
            if (t & 63) return -1;
            while ((e | 0) >= 64) {
              D(t);
              t = (t + 64) | 0;
              e = (e - 64) | 0;
              r = (r + 64) | 0;
            }
            f = (f + r) | 0;
            if (f >>> 0 < r >>> 0) l = (l + 1) | 0;
            return r | 0;
          }
          function P(t, e, r) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            var s = 0,
              i = 0;
            if (t & 63) return -1;
            if (~r) if (r & 31) return -1;
            if ((e | 0) >= 64) {
              s = Z(t, e) | 0;
              if ((s | 0) == -1) return -1;
              t = (t + s) | 0;
              e = (e - s) | 0;
            }
            s = (s + e) | 0;
            f = (f + e) | 0;
            if (f >>> 0 < e >>> 0) l = (l + 1) | 0;
            H[t | e] = 0x80;
            if ((e | 0) >= 56) {
              for (i = (e + 1) | 0; (i | 0) < 64; i = (i + 1) | 0)
                H[t | i] = 0x00;
              D(t);
              e = 0;
              H[t | 0] = 0;
            }
            for (i = (e + 1) | 0; (i | 0) < 59; i = (i + 1) | 0) H[t | i] = 0;
            H[t | 56] = (l >>> 21) & 255;
            H[t | 57] = (l >>> 13) & 255;
            H[t | 58] = (l >>> 5) & 255;
            H[t | 59] = ((l << 3) & 255) | (f >>> 29);
            H[t | 60] = (f >>> 21) & 255;
            H[t | 61] = (f >>> 13) & 255;
            H[t | 62] = (f >>> 5) & 255;
            H[t | 63] = (f << 3) & 255;
            D(t);
            if (~r) k(r);
            return s | 0;
          }
          function B() {
            s = p;
            i = w;
            n = y;
            a = _;
            h = d;
            o = A;
            c = v;
            u = x;
            f = 64;
            l = 0;
          }
          function z() {
            s = E;
            i = g;
            n = m;
            a = b;
            h = S;
            o = C;
            c = M;
            u = U;
            f = 64;
            l = 0;
          }
          function O(t, e, r, H, D, k, I, Z, P, B, z, O, q, L, R, K) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            H = H | 0;
            D = D | 0;
            k = k | 0;
            I = I | 0;
            Z = Z | 0;
            P = P | 0;
            B = B | 0;
            z = z | 0;
            O = O | 0;
            q = q | 0;
            L = L | 0;
            R = R | 0;
            K = K | 0;
            G();
            T(
              t ^ 0x5c5c5c5c,
              e ^ 0x5c5c5c5c,
              r ^ 0x5c5c5c5c,
              H ^ 0x5c5c5c5c,
              D ^ 0x5c5c5c5c,
              k ^ 0x5c5c5c5c,
              I ^ 0x5c5c5c5c,
              Z ^ 0x5c5c5c5c,
              P ^ 0x5c5c5c5c,
              B ^ 0x5c5c5c5c,
              z ^ 0x5c5c5c5c,
              O ^ 0x5c5c5c5c,
              q ^ 0x5c5c5c5c,
              L ^ 0x5c5c5c5c,
              R ^ 0x5c5c5c5c,
              K ^ 0x5c5c5c5c
            );
            E = s;
            g = i;
            m = n;
            b = a;
            S = h;
            C = o;
            M = c;
            U = u;
            G();
            T(
              t ^ 0x36363636,
              e ^ 0x36363636,
              r ^ 0x36363636,
              H ^ 0x36363636,
              D ^ 0x36363636,
              k ^ 0x36363636,
              I ^ 0x36363636,
              Z ^ 0x36363636,
              P ^ 0x36363636,
              B ^ 0x36363636,
              z ^ 0x36363636,
              O ^ 0x36363636,
              q ^ 0x36363636,
              L ^ 0x36363636,
              R ^ 0x36363636,
              K ^ 0x36363636
            );
            p = s;
            w = i;
            y = n;
            _ = a;
            d = h;
            A = o;
            v = c;
            x = u;
            f = 64;
            l = 0;
          }
          function q(t, e, r) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            var f = 0,
              l = 0,
              p = 0,
              w = 0,
              y = 0,
              _ = 0,
              d = 0,
              A = 0,
              v = 0;
            if (t & 63) return -1;
            if (~r) if (r & 31) return -1;
            v = P(t, e, -1) | 0;
            (f = s),
              (l = i),
              (p = n),
              (w = a),
              (y = h),
              (_ = o),
              (d = c),
              (A = u);
            z();
            T(f, l, p, w, y, _, d, A, 0x80000000, 0, 0, 0, 0, 0, 0, 768);
            if (~r) k(r);
            return v | 0;
          }
          function L(t, e, r, f, l) {
            t = t | 0;
            e = e | 0;
            r = r | 0;
            f = f | 0;
            l = l | 0;
            var p = 0,
              w = 0,
              y = 0,
              _ = 0,
              d = 0,
              A = 0,
              v = 0,
              x = 0,
              E = 0,
              g = 0,
              m = 0,
              b = 0,
              S = 0,
              C = 0,
              M = 0,
              U = 0;
            if (t & 63) return -1;
            if (~l) if (l & 31) return -1;
            H[(t + e) | 0] = r >>> 24;
            H[(t + e + 1) | 0] = (r >>> 16) & 255;
            H[(t + e + 2) | 0] = (r >>> 8) & 255;
            H[(t + e + 3) | 0] = r & 255;
            q(t, (e + 4) | 0, -1) | 0;
            (p = E = s),
              (w = g = i),
              (y = m = n),
              (_ = b = a),
              (d = S = h),
              (A = C = o),
              (v = M = c),
              (x = U = u);
            f = (f - 1) | 0;
            while ((f | 0) > 0) {
              B();
              T(E, g, m, b, S, C, M, U, 0x80000000, 0, 0, 0, 0, 0, 0, 768);
              (E = s),
                (g = i),
                (m = n),
                (b = a),
                (S = h),
                (C = o),
                (M = c),
                (U = u);
              z();
              T(E, g, m, b, S, C, M, U, 0x80000000, 0, 0, 0, 0, 0, 0, 768);
              (E = s),
                (g = i),
                (m = n),
                (b = a),
                (S = h),
                (C = o),
                (M = c),
                (U = u);
              p = p ^ s;
              w = w ^ i;
              y = y ^ n;
              _ = _ ^ a;
              d = d ^ h;
              A = A ^ o;
              v = v ^ c;
              x = x ^ u;
              f = (f - 1) | 0;
            }
            s = p;
            i = w;
            n = y;
            a = _;
            h = d;
            o = A;
            c = v;
            u = x;
            if (~l) k(l);
            return 0;
          }
          return {
            reset: G,
            init: I,
            process: Z,
            finish: P,
            hmac_reset: B,
            hmac_init: O,
            hmac_finish: q,
            pbkdf2_generate_block: L
          };
        })({ Uint8Array: Uint8Array }, null, this.heap.buffer)),
      (this.BLOCK_SIZE = E),
      (this.HASH_SIZE = g),
      this.reset();
  }
  (m.BLOCK_SIZE = E), (m.HASH_SIZE = g), (m.NAME = 'sha256');
  var b = m.prototype;
  (b.reset = function() {
    return (
      (this.result = null),
      (this.pos = 0),
      (this.len = 0),
      this.asm.reset(),
      this
    );
  }),
    (b.process = function(t) {
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      if ((f(t) && (t = h(t)), l(t) && (t = new Uint8Array(t)), !p(t)))
        throw new TypeError("data isn't of expected type");
      for (
        var e = this.asm,
          r = this.heap,
          s = this.pos,
          n = this.len,
          a = 0,
          o = t.length,
          c = 0;
        o > 0;

      )
        (n += c = y(r, s + n, t, a, o)),
          (a += c),
          (o -= c),
          (s += c = e.process(s, n)),
          (n -= c) || (s = 0);
      return (this.pos = s), (this.len = n), this;
    }),
    (b.finish = function() {
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      return (
        this.asm.finish(this.pos, this.len, 0),
        (this.result = new Uint8Array(this.HASH_SIZE)),
        this.result.set(this.heap.subarray(0, this.HASH_SIZE)),
        (this.pos = 0),
        (this.len = 0),
        this
      );
    });
  var S = null;
  class C extends v {
    constructor(t) {
      (t = t || {}).hash instanceof m ||
        (t.hash = (null === S && (S = new m({ heapSize: 1048576 })), S)),
        super(t);
    }
    reset(t) {
      (t = t || {}), (this.result = null), this.hash.reset();
      var e = t.password;
      if (void 0 !== e) {
        f(e) && (e = h(e));
        var r = (this.key = x(this.hash, e));
        this.hash
          .reset()
          .asm.hmac_init(
            (r[0] << 24) | (r[1] << 16) | (r[2] << 8) | r[3],
            (r[4] << 24) | (r[5] << 16) | (r[6] << 8) | r[7],
            (r[8] << 24) | (r[9] << 16) | (r[10] << 8) | r[11],
            (r[12] << 24) | (r[13] << 16) | (r[14] << 8) | r[15],
            (r[16] << 24) | (r[17] << 16) | (r[18] << 8) | r[19],
            (r[20] << 24) | (r[21] << 16) | (r[22] << 8) | r[23],
            (r[24] << 24) | (r[25] << 16) | (r[26] << 8) | r[27],
            (r[28] << 24) | (r[29] << 16) | (r[30] << 8) | r[31],
            (r[32] << 24) | (r[33] << 16) | (r[34] << 8) | r[35],
            (r[36] << 24) | (r[37] << 16) | (r[38] << 8) | r[39],
            (r[40] << 24) | (r[41] << 16) | (r[42] << 8) | r[43],
            (r[44] << 24) | (r[45] << 16) | (r[46] << 8) | r[47],
            (r[48] << 24) | (r[49] << 16) | (r[50] << 8) | r[51],
            (r[52] << 24) | (r[53] << 16) | (r[54] << 8) | r[55],
            (r[56] << 24) | (r[57] << 16) | (r[58] << 8) | r[59],
            (r[60] << 24) | (r[61] << 16) | (r[62] << 8) | r[63]
          );
      } else this.hash.asm.hmac_reset();
      var s = t.verify;
      return (
        void 0 !== s ? this._hmac_init_verify(s) : (this.verify = null), this
      );
    }
    finish() {
      if (null === this.key)
        throw new i('no key is associated with the instance');
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      var t = this.hash,
        e = this.hash.asm,
        r = this.hash.heap;
      e.hmac_finish(t.pos, t.len, 0);
      var s = this.verify,
        n = new Uint8Array(g);
      if ((n.set(r.subarray(0, g)), s))
        if (s.length === n.length) {
          for (var a = 0, h = 0; h < s.length; h++) a |= s[h] ^ n[h];
          this.result = !a;
        } else this.result = !1;
      else this.result = n;
      return this;
    }
  }
  (C.BLOCK_SIZE = m.BLOCK_SIZE), (C.HMAC_SIZE = m.HASH_SIZE);
  var M = null;
  function U() {
    return null === M && (M = new C()), M;
  }
  function H(t, e) {
    if (void 0 === t) throw new SyntaxError('data required');
    if (void 0 === e) throw new SyntaxError('password required');
    return U()
      .reset({ password: e })
      .process(t)
      .finish().result;
  }
  var T = C;
  (T.bytes = H),
    (T.hex = function(t, e) {
      return o(H(t, e));
    }),
    (T.base64 = function(t, e) {
      return c(H(t, e));
    });
  class D {
    constructor(t) {
      if (!(t = t || {}).hmac)
        throw new SyntaxError("option 'hmac' is required");
      if (!t.hmac.HMAC_SIZE)
        throw new SyntaxError(
          "option 'hmac' supplied doesn't seem to be a valid HMAC function"
        );
      (this.hmac = t.hmac),
        (this.count = t.count || 4096),
        (this.length = t.length || this.hmac.HMAC_SIZE),
        (this.result = null);
      var e = t.password;
      return (e || f(e)) && this.reset(t), this;
    }
    reset(t) {
      return (this.result = null), this.hmac.reset(t), this;
    }
    generate(t, e, r) {
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      if (!t && !f(t)) throw new n("bad 'salt' value");
      (e = e || this.count),
        (r = r || this.length),
        (this.result = new Uint8Array(r));
      for (var s = Math.ceil(r / this.hmac.HMAC_SIZE), a = 1; a <= s; ++a) {
        var h = (a - 1) * this.hmac.HMAC_SIZE,
          o = (a < s ? 0 : r % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE,
          c = new Uint8Array(
            this.hmac
              .reset()
              .process(t)
              .process(
                new Uint8Array([
                  (a >>> 24) & 255,
                  (a >>> 16) & 255,
                  (a >>> 8) & 255,
                  255 & a
                ])
              )
              .finish().result
          );
        this.result.set(c.subarray(0, o), h);
        for (var u = 1; u < e; ++u) {
          c = new Uint8Array(
            this.hmac
              .reset()
              .process(c)
              .finish().result
          );
          for (var l = 0; l < o; ++l) this.result[h + l] ^= c[l];
        }
      }
      return this;
    }
  }
  class k extends D {
    constructor(t) {
      (t = t || {}).hmac instanceof C || (t.hmac = U()), super(t);
    }
    generate(t, e, r) {
      if (null !== this.result)
        throw new i('state must be reset before processing new data');
      if (!t && !f(t)) throw new n("bad 'salt' value");
      (e = e || this.count),
        (r = r || this.length),
        (this.result = new Uint8Array(r));
      for (var s = Math.ceil(r / this.hmac.HMAC_SIZE), a = 1; a <= s; ++a) {
        var h = (a - 1) * this.hmac.HMAC_SIZE,
          o = (a < s ? 0 : r % this.hmac.HMAC_SIZE) || this.hmac.HMAC_SIZE;
        this.hmac.reset().process(t),
          this.hmac.hash.asm.pbkdf2_generate_block(
            this.hmac.hash.pos,
            this.hmac.hash.len,
            a,
            e,
            0
          ),
          this.result.set(this.hmac.hash.heap.subarray(0, o), h);
      }
      return this;
    }
  }
  var G = null;
  function I(t, e, r, s) {
    if (void 0 === t) throw new SyntaxError('password required');
    if (void 0 === e) throw new SyntaxError('salt required');
    return (null === G && (G = new k()), G)
      .reset({ password: t })
      .generate(e, r, s).result;
  }
  var Z = {
    bytes: I,
    hex: function(t, e, r, s) {
      return o(I(t, e, r, s));
    },
    base64: function(t, e, r, s) {
      return c(I(t, e, r, s));
    }
  };
  (t.AES_GCM = A),
    (t.AES_GCM_Encrypt = class extends A {
      constructor(t, e, r, s, i, n) {
        super(t, e, r, s, i, n);
      }
      process(t) {
        return this.AES_GCM_Encrypt_process(t);
      }
      finish() {
        return this.AES_GCM_Encrypt_finish();
      }
    }),
    (t.AES_GCM_Decrypt = class extends A {
      constructor(t, e, r, s, i, n) {
        super(t, e, r, s, i, n);
      }
      process(t) {
        return this.AES_GCM_Decrypt_process(t);
      }
      finish() {
        return this.AES_GCM_Decrypt_finish();
      }
    }),
    (t.HMAC_SHA256 = T),
    (t.PBKDF2_HMAC_SHA256 = Z),
    Object.defineProperty(t, '__esModule', { value: !0 });
});