UNPKG

wink-auth-js

Version:

Browser Javascript keycloak client

2,013 lines 69 kB
function _inheritsLoose(e, t) {
  (e.prototype = Object.create(t.prototype)), (e.prototype.constructor = e), _setPrototypeOf(e, t);
}
function _setPrototypeOf(e, t) {
  return (
    (_setPrototypeOf = Object.setPrototypeOf
      ? Object.setPrototypeOf.bind()
      : function (e, t) {
          return (e.__proto__ = t), e;
        }),
    _setPrototypeOf(e, t)
  );
}
function _assertThisInitialized(e) {
  if (void 0 === e)
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  return e;
}
for (
  var byteLength_1 = byteLength,
    toByteArray_1 = toByteArray,
    fromByteArray_1 = fromByteArray,
    lookup = [],
    revLookup = [],
    Arr = 'undefined' != typeof Uint8Array ? Uint8Array : Array,
    code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
    i = 0,
    len = code.length;
  i < len;
  ++i
)
  (lookup[i] = code[i]), (revLookup[code.charCodeAt(i)] = i);
function getLens(e) {
  var t = e.length;
  if (t % 4 > 0) throw new Error('Invalid string. Length must be a multiple of 4');
  var r = e.indexOf('=');
  return -1 === r && (r = t), [r, r === t ? 0 : 4 - (r % 4)];
}
function byteLength(e) {
  var t = getLens(e),
    r = t[1];
  return (3 * (t[0] + r)) / 4 - r;
}
function _byteLength(e, t, r) {
  return (3 * (t + r)) / 4 - r;
}
function toByteArray(e) {
  var t,
    r,
    o = getLens(e),
    n = o[0],
    i = o[1],
    s = new Arr(_byteLength(e, n, i)),
    a = 0,
    c = i > 0 ? n - 4 : n;
  for (r = 0; r < c; r += 4)
    (t =
      (revLookup[e.charCodeAt(r)] << 18) |
      (revLookup[e.charCodeAt(r + 1)] << 12) |
      (revLookup[e.charCodeAt(r + 2)] << 6) |
      revLookup[e.charCodeAt(r + 3)]),
      (s[a++] = (t >> 16) & 255),
      (s[a++] = (t >> 8) & 255),
      (s[a++] = 255 & t);
  return (
    2 === i &&
      ((t = (revLookup[e.charCodeAt(r)] << 2) | (revLookup[e.charCodeAt(r + 1)] >> 4)),
      (s[a++] = 255 & t)),
    1 === i &&
      ((t =
        (revLookup[e.charCodeAt(r)] << 10) |
        (revLookup[e.charCodeAt(r + 1)] << 4) |
        (revLookup[e.charCodeAt(r + 2)] >> 2)),
      (s[a++] = (t >> 8) & 255),
      (s[a++] = 255 & t)),
    s
  );
}
function tripletToBase64(e) {
  return lookup[(e >> 18) & 63] + lookup[(e >> 12) & 63] + lookup[(e >> 6) & 63] + lookup[63 & e];
}
function encodeChunk(e, t, r) {
  for (var o = [], n = t; n < r; n += 3)
    o.push(
      tripletToBase64(((e[n] << 16) & 16711680) + ((e[n + 1] << 8) & 65280) + (255 & e[n + 2]))
    );
  return o.join('');
}
function fromByteArray(e) {
  for (var t, r = e.length, o = r % 3, n = [], i = 16383, s = 0, a = r - o; s < a; s += i)
    n.push(encodeChunk(e, s, s + i > a ? a : s + i));
  return (
    1 === o
      ? n.push(lookup[(t = e[r - 1]) >> 2] + lookup[(t << 4) & 63] + '==')
      : 2 === o &&
        n.push(
          lookup[(t = (e[r - 2] << 8) + e[r - 1]) >> 10] +
            lookup[(t >> 4) & 63] +
            lookup[(t << 2) & 63] +
            '='
        ),
    n.join('')
  );
}
(revLookup['-'.charCodeAt(0)] = 62), (revLookup['_'.charCodeAt(0)] = 63);
var base64Js = {
    byteLength: byteLength_1,
    toByteArray: toByteArray_1,
    fromByteArray: fromByteArray_1,
  },
  commonjsGlobal =
    'undefined' != typeof globalThis
      ? globalThis
      : 'undefined' != typeof window
      ? window
      : 'undefined' != typeof global
      ? global
      : 'undefined' != typeof self
      ? self
      : {};
function createCommonjsModule(e) {
  var t = { exports: {} };
  return e(t, t.exports), t.exports;
}
var sha256 = createCommonjsModule(function (module) {
  (function () {
    var ERROR = 'input is invalid type',
      WINDOW = 'object' == typeof window,
      root = WINDOW ? window : {};
    root.JS_SHA256_NO_WINDOW && (WINDOW = !1);
    var WEB_WORKER = !WINDOW && 'object' == typeof self,
      NODE_JS =
        !root.JS_SHA256_NO_NODE_JS &&
        'object' == typeof process &&
        process.versions &&
        process.versions.node;
    NODE_JS ? (root = commonjsGlobal) : WEB_WORKER && (root = self);
    var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && module.exports,
      ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && 'undefined' != typeof ArrayBuffer,
      HEX_CHARS = '0123456789abcdef'.split(''),
      EXTRA = [-2147483648, 8388608, 32768, 128],
      SHIFT = [24, 16, 8, 0],
      K = [
        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,
      ],
      OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'],
      blocks = [];
    (!root.JS_SHA256_NO_NODE_JS && Array.isArray) ||
      (Array.isArray = function (e) {
        return '[object Array]' === Object.prototype.toString.call(e);
      }),
      !ARRAY_BUFFER ||
        (!root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW && ArrayBuffer.isView) ||
        (ArrayBuffer.isView = function (e) {
          return 'object' == typeof e && e.buffer && e.buffer.constructor === ArrayBuffer;
        });
    var createOutputMethod = function (e, t) {
        return function (r) {
          return new Sha256(t, !0).update(r)[e]();
        };
      },
      createMethod = function (e) {
        var t = createOutputMethod('hex', e);
        NODE_JS && (t = nodeWrap(t, e)),
          (t.create = function () {
            return new Sha256(e);
          }),
          (t.update = function (e) {
            return t.create().update(e);
          });
        for (var r = 0; r < OUTPUT_TYPES.length; ++r) {
          var o = OUTPUT_TYPES[r];
          t[o] = createOutputMethod(o, e);
        }
        return t;
      },
      nodeWrap = function (method, is224) {
        var crypto = eval("require('crypto')"),
          Buffer = eval("require('buffer').Buffer"),
          algorithm = is224 ? 'sha224' : 'sha256',
          nodeMethod = function (e) {
            if ('string' == typeof e)
              return crypto.createHash(algorithm).update(e, 'utf8').digest('hex');
            if (null == e) throw new Error(ERROR);
            return (
              e.constructor === ArrayBuffer && (e = new Uint8Array(e)),
              Array.isArray(e) || ArrayBuffer.isView(e) || e.constructor === Buffer
                ? crypto.createHash(algorithm).update(new Buffer(e)).digest('hex')
                : method(e)
            );
          };
        return nodeMethod;
      },
      createHmacOutputMethod = function (e, t) {
        return function (r, o) {
          return new HmacSha256(r, t, !0).update(o)[e]();
        };
      },
      createHmacMethod = function (e) {
        var t = createHmacOutputMethod('hex', e);
        (t.create = function (t) {
          return new HmacSha256(t, e);
        }),
          (t.update = function (e, r) {
            return t.create(e).update(r);
          });
        for (var r = 0; r < OUTPUT_TYPES.length; ++r) {
          var o = OUTPUT_TYPES[r];
          t[o] = createHmacOutputMethod(o, e);
        }
        return t;
      };
    function Sha256(e, t) {
      t
        ? ((blocks[0] =
            blocks[16] =
            blocks[1] =
            blocks[2] =
            blocks[3] =
            blocks[4] =
            blocks[5] =
            blocks[6] =
            blocks[7] =
            blocks[8] =
            blocks[9] =
            blocks[10] =
            blocks[11] =
            blocks[12] =
            blocks[13] =
            blocks[14] =
            blocks[15] =
              0),
          (this.blocks = blocks))
        : (this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
        e
          ? ((this.h0 = 3238371032),
            (this.h1 = 914150663),
            (this.h2 = 812702999),
            (this.h3 = 4144912697),
            (this.h4 = 4290775857),
            (this.h5 = 1750603025),
            (this.h6 = 1694076839),
            (this.h7 = 3204075428))
          : ((this.h0 = 1779033703),
            (this.h1 = 3144134277),
            (this.h2 = 1013904242),
            (this.h3 = 2773480762),
            (this.h4 = 1359893119),
            (this.h5 = 2600822924),
            (this.h6 = 528734635),
            (this.h7 = 1541459225)),
        (this.block = this.start = this.bytes = this.hBytes = 0),
        (this.finalized = this.hashed = !1),
        (this.first = !0),
        (this.is224 = e);
    }
    function HmacSha256(e, t, r) {
      var o,
        n = typeof e;
      if ('string' === n) {
        var i,
          s = [],
          a = e.length,
          c = 0;
        for (o = 0; o < a; ++o)
          (i = e.charCodeAt(o)) < 128
            ? (s[c++] = i)
            : i < 2048
            ? ((s[c++] = 192 | (i >> 6)), (s[c++] = 128 | (63 & i)))
            : i < 55296 || i >= 57344
            ? ((s[c++] = 224 | (i >> 12)),
              (s[c++] = 128 | ((i >> 6) & 63)),
              (s[c++] = 128 | (63 & i)))
            : ((i = 65536 + (((1023 & i) << 10) | (1023 & e.charCodeAt(++o)))),
              (s[c++] = 240 | (i >> 18)),
              (s[c++] = 128 | ((i >> 12) & 63)),
              (s[c++] = 128 | ((i >> 6) & 63)),
              (s[c++] = 128 | (63 & i)));
        e = s;
      } else {
        if ('object' !== n) throw new Error(ERROR);
        if (null === e) throw new Error(ERROR);
        if (ARRAY_BUFFER && e.constructor === ArrayBuffer) e = new Uint8Array(e);
        else if (!(Array.isArray(e) || (ARRAY_BUFFER && ArrayBuffer.isView(e))))
          throw new Error(ERROR);
      }
      e.length > 64 && (e = new Sha256(t, !0).update(e).array());
      var u = [],
        l = [];
      for (o = 0; o < 64; ++o) {
        var d = e[o] || 0;
        (u[o] = 92 ^ d), (l[o] = 54 ^ d);
      }
      Sha256.call(this, t, r),
        this.update(l),
        (this.oKeyPad = u),
        (this.inner = !0),
        (this.sharedMemory = r);
    }
    (Sha256.prototype.update = function (e) {
      if (!this.finalized) {
        var t,
          r = typeof e;
        if ('string' !== r) {
          if ('object' !== r) throw new Error(ERROR);
          if (null === e) throw new Error(ERROR);
          if (ARRAY_BUFFER && e.constructor === ArrayBuffer) e = new Uint8Array(e);
          else if (!(Array.isArray(e) || (ARRAY_BUFFER && ArrayBuffer.isView(e))))
            throw new Error(ERROR);
          t = !0;
        }
        for (var o, n, i = 0, s = e.length, a = this.blocks; i < s; ) {
          if (
            (this.hashed &&
              ((this.hashed = !1),
              (a[0] = this.block),
              (a[16] =
                a[1] =
                a[2] =
                a[3] =
                a[4] =
                a[5] =
                a[6] =
                a[7] =
                a[8] =
                a[9] =
                a[10] =
                a[11] =
                a[12] =
                a[13] =
                a[14] =
                a[15] =
                  0)),
            t)
          )
            for (n = this.start; i < s && n < 64; ++i) a[n >> 2] |= e[i] << SHIFT[3 & n++];
          else
            for (n = this.start; i < s && n < 64; ++i)
              (o = e.charCodeAt(i)) < 128
                ? (a[n >> 2] |= o << SHIFT[3 & n++])
                : o < 2048
                ? ((a[n >> 2] |= (192 | (o >> 6)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | (63 & o)) << SHIFT[3 & n++]))
                : o < 55296 || o >= 57344
                ? ((a[n >> 2] |= (224 | (o >> 12)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | ((o >> 6) & 63)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | (63 & o)) << SHIFT[3 & n++]))
                : ((o = 65536 + (((1023 & o) << 10) | (1023 & e.charCodeAt(++i)))),
                  (a[n >> 2] |= (240 | (o >> 18)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | ((o >> 12) & 63)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | ((o >> 6) & 63)) << SHIFT[3 & n++]),
                  (a[n >> 2] |= (128 | (63 & o)) << SHIFT[3 & n++]));
          (this.lastByteIndex = n),
            (this.bytes += n - this.start),
            n >= 64
              ? ((this.block = a[16]), (this.start = n - 64), this.hash(), (this.hashed = !0))
              : (this.start = n);
        }
        return (
          this.bytes > 4294967295 &&
            ((this.hBytes += (this.bytes / 4294967296) << 0),
            (this.bytes = this.bytes % 4294967296)),
          this
        );
      }
    }),
      (Sha256.prototype.finalize = function () {
        if (!this.finalized) {
          this.finalized = !0;
          var e = this.blocks,
            t = this.lastByteIndex;
          (e[16] = this.block),
            (e[t >> 2] |= EXTRA[3 & t]),
            (this.block = e[16]),
            t >= 56 &&
              (this.hashed || this.hash(),
              (e[0] = this.block),
              (e[16] =
                e[1] =
                e[2] =
                e[3] =
                e[4] =
                e[5] =
                e[6] =
                e[7] =
                e[8] =
                e[9] =
                e[10] =
                e[11] =
                e[12] =
                e[13] =
                e[14] =
                e[15] =
                  0)),
            (e[14] = (this.hBytes << 3) | (this.bytes >>> 29)),
            (e[15] = this.bytes << 3),
            this.hash();
        }
      }),
      (Sha256.prototype.hash = function () {
        var e,
          t,
          r,
          o,
          n,
          i,
          s = this.h0,
          a = this.h1,
          c = this.h2,
          u = this.h3,
          l = this.h4,
          d = this.h5,
          h = this.h6,
          f = this.h7,
          p = this.blocks;
        for (e = 16; e < 64; ++e)
          p[e] =
            (p[e - 16] +
              ((((t = p[e - 15]) >>> 7) | (t << 25)) ^ ((t >>> 18) | (t << 14)) ^ (t >>> 3)) +
              p[e - 7] +
              ((((t = p[e - 2]) >>> 17) | (t << 15)) ^ ((t >>> 19) | (t << 13)) ^ (t >>> 10))) <<
            0;
        for (i = a & c, e = 0; e < 64; e += 4)
          this.first
            ? (this.is224
                ? ((r = 300032),
                  (f = ((t = p[0] - 1413257819) - 150054599) << 0),
                  (u = (t + 24177077) << 0))
                : ((r = 704751109),
                  (f = ((t = p[0] - 210244248) - 1521486534) << 0),
                  (u = (t + 143694565) << 0)),
              (this.first = !1))
            : ((f =
                (u +
                  (t =
                    f +
                    (((l >>> 6) | (l << 26)) ^ ((l >>> 11) | (l << 21)) ^ ((l >>> 25) | (l << 7))) +
                    ((l & d) ^ (~l & h)) +
                    K[e] +
                    p[e])) <<
                0),
              (u =
                (t +
                  ((((s >>> 2) | (s << 30)) ^ ((s >>> 13) | (s << 19)) ^ ((s >>> 22) | (s << 10))) +
                    ((r = s & a) ^ (s & c) ^ i))) <<
                0)),
            (h =
              (c +
                (t =
                  h +
                  (((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7))) +
                  ((f & l) ^ (~f & d)) +
                  K[e + 1] +
                  p[e + 1])) <<
              0),
            (c =
              (t +
                ((((u >>> 2) | (u << 30)) ^ ((u >>> 13) | (u << 19)) ^ ((u >>> 22) | (u << 10))) +
                  ((o = u & s) ^ (u & a) ^ r))) <<
              0),
            (d =
              (a +
                (t =
                  d +
                  (((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7))) +
                  ((h & f) ^ (~h & l)) +
                  K[e + 2] +
                  p[e + 2])) <<
              0),
            (a =
              (t +
                ((((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10))) +
                  ((n = c & u) ^ (c & s) ^ o))) <<
              0),
            (l =
              (s +
                (t =
                  l +
                  (((d >>> 6) | (d << 26)) ^ ((d >>> 11) | (d << 21)) ^ ((d >>> 25) | (d << 7))) +
                  ((d & h) ^ (~d & f)) +
                  K[e + 3] +
                  p[e + 3])) <<
              0),
            (s =
              (t +
                ((((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10))) +
                  ((i = a & c) ^ (a & u) ^ n))) <<
              0);
        (this.h0 = (this.h0 + s) << 0),
          (this.h1 = (this.h1 + a) << 0),
          (this.h2 = (this.h2 + c) << 0),
          (this.h3 = (this.h3 + u) << 0),
          (this.h4 = (this.h4 + l) << 0),
          (this.h5 = (this.h5 + d) << 0),
          (this.h6 = (this.h6 + h) << 0),
          (this.h7 = (this.h7 + f) << 0);
      }),
      (Sha256.prototype.hex = function () {
        this.finalize();
        var e = this.h0,
          t = this.h1,
          r = this.h2,
          o = this.h3,
          n = this.h4,
          i = this.h5,
          s = this.h6,
          a = this.h7,
          c =
            HEX_CHARS[(e >> 28) & 15] +
            HEX_CHARS[(e >> 24) & 15] +
            HEX_CHARS[(e >> 20) & 15] +
            HEX_CHARS[(e >> 16) & 15] +
            HEX_CHARS[(e >> 12) & 15] +
            HEX_CHARS[(e >> 8) & 15] +
            HEX_CHARS[(e >> 4) & 15] +
            HEX_CHARS[15 & e] +
            HEX_CHARS[(t >> 28) & 15] +
            HEX_CHARS[(t >> 24) & 15] +
            HEX_CHARS[(t >> 20) & 15] +
            HEX_CHARS[(t >> 16) & 15] +
            HEX_CHARS[(t >> 12) & 15] +
            HEX_CHARS[(t >> 8) & 15] +
            HEX_CHARS[(t >> 4) & 15] +
            HEX_CHARS[15 & t] +
            HEX_CHARS[(r >> 28) & 15] +
            HEX_CHARS[(r >> 24) & 15] +
            HEX_CHARS[(r >> 20) & 15] +
            HEX_CHARS[(r >> 16) & 15] +
            HEX_CHARS[(r >> 12) & 15] +
            HEX_CHARS[(r >> 8) & 15] +
            HEX_CHARS[(r >> 4) & 15] +
            HEX_CHARS[15 & r] +
            HEX_CHARS[(o >> 28) & 15] +
            HEX_CHARS[(o >> 24) & 15] +
            HEX_CHARS[(o >> 20) & 15] +
            HEX_CHARS[(o >> 16) & 15] +
            HEX_CHARS[(o >> 12) & 15] +
            HEX_CHARS[(o >> 8) & 15] +
            HEX_CHARS[(o >> 4) & 15] +
            HEX_CHARS[15 & o] +
            HEX_CHARS[(n >> 28) & 15] +
            HEX_CHARS[(n >> 24) & 15] +
            HEX_CHARS[(n >> 20) & 15] +
            HEX_CHARS[(n >> 16) & 15] +
            HEX_CHARS[(n >> 12) & 15] +
            HEX_CHARS[(n >> 8) & 15] +
            HEX_CHARS[(n >> 4) & 15] +
            HEX_CHARS[15 & n] +
            HEX_CHARS[(i >> 28) & 15] +
            HEX_CHARS[(i >> 24) & 15] +
            HEX_CHARS[(i >> 20) & 15] +
            HEX_CHARS[(i >> 16) & 15] +
            HEX_CHARS[(i >> 12) & 15] +
            HEX_CHARS[(i >> 8) & 15] +
            HEX_CHARS[(i >> 4) & 15] +
            HEX_CHARS[15 & i] +
            HEX_CHARS[(s >> 28) & 15] +
            HEX_CHARS[(s >> 24) & 15] +
            HEX_CHARS[(s >> 20) & 15] +
            HEX_CHARS[(s >> 16) & 15] +
            HEX_CHARS[(s >> 12) & 15] +
            HEX_CHARS[(s >> 8) & 15] +
            HEX_CHARS[(s >> 4) & 15] +
            HEX_CHARS[15 & s];
        return (
          this.is224 ||
            (c +=
              HEX_CHARS[(a >> 28) & 15] +
              HEX_CHARS[(a >> 24) & 15] +
              HEX_CHARS[(a >> 20) & 15] +
              HEX_CHARS[(a >> 16) & 15] +
              HEX_CHARS[(a >> 12) & 15] +
              HEX_CHARS[(a >> 8) & 15] +
              HEX_CHARS[(a >> 4) & 15] +
              HEX_CHARS[15 & a]),
          c
        );
      }),
      (Sha256.prototype.toString = Sha256.prototype.hex),
      (Sha256.prototype.digest = function () {
        this.finalize();
        var e = this.h0,
          t = this.h1,
          r = this.h2,
          o = this.h3,
          n = this.h4,
          i = this.h5,
          s = this.h6,
          a = this.h7,
          c = [
            (e >> 24) & 255,
            (e >> 16) & 255,
            (e >> 8) & 255,
            255 & e,
            (t >> 24) & 255,
            (t >> 16) & 255,
            (t >> 8) & 255,
            255 & t,
            (r >> 24) & 255,
            (r >> 16) & 255,
            (r >> 8) & 255,
            255 & r,
            (o >> 24) & 255,
            (o >> 16) & 255,
            (o >> 8) & 255,
            255 & o,
            (n >> 24) & 255,
            (n >> 16) & 255,
            (n >> 8) & 255,
            255 & n,
            (i >> 24) & 255,
            (i >> 16) & 255,
            (i >> 8) & 255,
            255 & i,
            (s >> 24) & 255,
            (s >> 16) & 255,
            (s >> 8) & 255,
            255 & s,
          ];
        return this.is224 || c.push((a >> 24) & 255, (a >> 16) & 255, (a >> 8) & 255, 255 & a), c;
      }),
      (Sha256.prototype.array = Sha256.prototype.digest),
      (Sha256.prototype.arrayBuffer = function () {
        this.finalize();
        var e = new ArrayBuffer(this.is224 ? 28 : 32),
          t = new DataView(e);
        return (
          t.setUint32(0, this.h0),
          t.setUint32(4, this.h1),
          t.setUint32(8, this.h2),
          t.setUint32(12, this.h3),
          t.setUint32(16, this.h4),
          t.setUint32(20, this.h5),
          t.setUint32(24, this.h6),
          this.is224 || t.setUint32(28, this.h7),
          e
        );
      }),
      (HmacSha256.prototype = new Sha256()),
      (HmacSha256.prototype.finalize = function () {
        if ((Sha256.prototype.finalize.call(this), this.inner)) {
          this.inner = !1;
          var e = this.array();
          Sha256.call(this, this.is224, this.sharedMemory),
            this.update(this.oKeyPad),
            this.update(e),
            Sha256.prototype.finalize.call(this);
        }
      });
    var exports = createMethod();
    (exports.sha256 = exports),
      (exports.sha224 = createMethod(!0)),
      (exports.sha256.hmac = createHmacMethod()),
      (exports.sha224.hmac = createHmacMethod(!0)),
      COMMON_JS
        ? (module.exports = exports)
        : ((root.sha256 = exports.sha256), (root.sha224 = exports.sha224));
  })();
});
if ('undefined' == typeof Promise)
  throw Error(
    'Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.'
  );
function Keycloak(e) {
  if (!(this instanceof Keycloak))
    throw new Error("The 'Keycloak' constructor must be invoked with 'new'.");
  for (
    var t,
      r,
      o = this,
      n = [],
      i = { enable: !0, callbackList: [], interval: 5 },
      s = document.getElementsByTagName('script'),
      a = 0;
    a < s.length;
    a++
  )
    (-1 === s[a].src.indexOf('keycloak.js') && -1 === s[a].src.indexOf('keycloak.min.js')) ||
      -1 === s[a].src.indexOf('version=') ||
      (o.iframeVersion = s[a].src.substring(s[a].src.indexOf('version=') + 8).split('&')[0]);
  var c = !0,
    u = H(console.info),
    l = H(console.warn);
  function d(e, t) {
    for (
      var r = (function (e) {
          var t = null,
            r = window.crypto || window.msCrypto;
          if (r && r.getRandomValues && window.Uint8Array)
            return (t = new Uint8Array(e)), r.getRandomValues(t), t;
          t = new Array(e);
          for (var o = 0; o < t.length; o++) t[o] = Math.floor(256 * Math.random());
          return t;
        })(e),
        o = new Array(e),
        n = 0;
      n < e;
      n++
    )
      o[n] = t.charCodeAt(r[n] % t.length);
    return String.fromCharCode.apply(null, o);
  }
  function h() {
    return void 0 !== o.authServerUrl
      ? '/' == o.authServerUrl.charAt(o.authServerUrl.length - 1)
        ? o.authServerUrl + 'realms/' + encodeURIComponent(o.realm)
        : o.authServerUrl + '/realms/' + encodeURIComponent(o.realm)
      : void 0;
  }
  function f(e, t) {
    var r = e.code,
      n = e.error,
      i = e.prompt,
      s = new Date().getTime();
    if ((e.kc_action_status && o.onActionUpdate && o.onActionUpdate(e.kc_action_status), n))
      if ('none' != i) {
        var a = { error: n, error_description: e.error_description };
        o.onAuthError && o.onAuthError(a), t && t.setError(a);
      } else t && t.setSuccess();
    else if (
      ('standard' != o.flow &&
        (e.access_token || e.id_token) &&
        f(e.access_token, null, e.id_token, !0),
      'implicit' != o.flow && r)
    ) {
      var l = 'code=' + r + '&grant_type=authorization_code',
        d = o.endpoints.token(),
        h = new XMLHttpRequest();
      h.open('POST', d, !0),
        h.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'),
        (l += '&client_id=' + encodeURIComponent(o.clientId)),
        (l += '&redirect_uri=' + e.redirectUri),
        e.pkceCodeVerifier && (l += '&code_verifier=' + e.pkceCodeVerifier),
        (h.withCredentials = !0),
        (h.onreadystatechange = function () {
          if (4 == h.readyState)
            if (200 == h.status) {
              var e = JSON.parse(h.responseText);
              f(e.access_token, e.refresh_token, e.id_token, 'standard' === o.flow), _();
            } else o.onAuthError && o.onAuthError(), t && t.setError();
        }),
        h.send(l);
    }
    function f(r, n, i, a) {
      g(r, n, i, (s = (s + new Date().getTime()) / 2)),
        c &&
        ((o.tokenParsed && o.tokenParsed.nonce != e.storedNonce) ||
          (o.refreshTokenParsed && o.refreshTokenParsed.nonce != e.storedNonce) ||
          (o.idTokenParsed && o.idTokenParsed.nonce != e.storedNonce))
          ? (u('[KEYCLOAK] Invalid nonce, clearing token'), o.clearToken(), t && t.setError())
          : a && (o.onAuthSuccess && o.onAuthSuccess(), t && t.setSuccess());
    }
  }
  function p(e) {
    return 0 == e.status && e.responseText && e.responseURL.startsWith('file:');
  }
  function g(e, t, r, n) {
    if (
      (o.tokenTimeoutHandle && (clearTimeout(o.tokenTimeoutHandle), (o.tokenTimeoutHandle = null)),
      t
        ? ((o.refreshToken = t), (o.refreshTokenParsed = k(t)))
        : (delete o.refreshToken, delete o.refreshTokenParsed),
      r ? ((o.idToken = r), (o.idTokenParsed = k(r))) : (delete o.idToken, delete o.idTokenParsed),
      e)
    ) {
      if (
        ((o.token = e),
        (o.tokenParsed = k(e)),
        (o.sessionId = o.tokenParsed.session_state),
        (o.authenticated = !0),
        (o.subject = o.tokenParsed.sub),
        (o.realmAccess = o.tokenParsed.realm_access),
        (o.resourceAccess = o.tokenParsed.resource_access),
        n && (o.timeSkew = Math.floor(n / 1e3) - o.tokenParsed.iat),
        null != o.timeSkew &&
          (u(
            '[KEYCLOAK] Estimated time difference between browser and server is ' +
              o.timeSkew +
              ' seconds'
          ),
          o.onTokenExpired))
      ) {
        var i = 1e3 * (o.tokenParsed.exp - new Date().getTime() / 1e3 + o.timeSkew);
        u('[KEYCLOAK] Token expires in ' + Math.round(i / 1e3) + ' s'),
          i <= 0 ? o.onTokenExpired() : (o.tokenTimeoutHandle = setTimeout(o.onTokenExpired, i));
      }
    } else
      delete o.token,
        delete o.tokenParsed,
        delete o.subject,
        delete o.realmAccess,
        delete o.resourceAccess,
        (o.authenticated = !1);
  }
  function k(e) {
    switch ((e = (e = (e = e.split('.')[1]).replace(/-/g, '+')).replace(/_/g, '/')).length % 4) {
      case 0:
        break;
      case 2:
        e += '==';
        break;
      case 3:
        e += '=';
        break;
      default:
        throw 'Invalid token';
    }
    return (e = decodeURIComponent(escape(atob(e)))), JSON.parse(e);
  }
  function m() {
    var e = '0123456789abcdef',
      t = d(36, e).split('');
    return (
      (t[14] = '4'),
      (t[19] = e.substr((3 & t[19]) | 8, 1)),
      (t[8] = t[13] = t[18] = t[23] = '-'),
      t.join('')
    );
  }
  function v(e) {
    var t = (function (e) {
      var t;
      switch (o.flow) {
        case 'standard':
          t = ['code', 'state', 'session_state', 'kc_action_status'];
          break;
        case 'implicit':
          t = [
            'access_token',
            'token_type',
            'id_token',
            'state',
            'session_state',
            'expires_in',
            'kc_action_status',
          ];
          break;
        case 'hybrid':
          t = [
            'access_token',
            'token_type',
            'id_token',
            'code',
            'state',
            'session_state',
            'expires_in',
            'kc_action_status',
          ];
      }
      t.push('error'), t.push('error_description'), t.push('error_uri');
      var r,
        n,
        i = e.indexOf('?'),
        s = e.indexOf('#');
      if (
        ('query' === o.responseMode && -1 !== i
          ? ((r = e.substring(0, i)),
            '' !== (n = w(e.substring(i + 1, -1 !== s ? s : e.length), t)).paramsString &&
              (r += '?' + n.paramsString),
            -1 !== s && (r += e.substring(s)))
          : 'fragment' === o.responseMode &&
            -1 !== s &&
            ((r = e.substring(0, s)),
            '' !== (n = w(e.substring(s + 1), t)).paramsString && (r += '#' + n.paramsString)),
        n && n.oauthParams)
      )
        if ('standard' === o.flow || 'hybrid' === o.flow) {
          if ((n.oauthParams.code || n.oauthParams.error) && n.oauthParams.state)
            return (n.oauthParams.newUrl = r), n.oauthParams;
        } else if (
          'implicit' === o.flow &&
          (n.oauthParams.access_token || n.oauthParams.error) &&
          n.oauthParams.state
        )
          return (n.oauthParams.newUrl = r), n.oauthParams;
    })(e);
    if (t) {
      var n = r.get(t.state);
      return (
        n &&
          ((t.valid = !0),
          (t.redirectUri = n.redirectUri),
          (t.storedNonce = n.nonce),
          (t.prompt = n.prompt),
          (t.pkceCodeVerifier = n.pkceCodeVerifier)),
        t
      );
    }
  }
  function w(e, t) {
    for (
      var r = e.split('&'), o = { paramsString: '', oauthParams: {} }, n = 0;
      n < r.length;
      n++
    ) {
      var i = r[n].indexOf('='),
        s = r[n].slice(0, i);
      -1 !== t.indexOf(s)
        ? (o.oauthParams[s] = r[n].slice(i + 1))
        : ('' !== o.paramsString && (o.paramsString += '&'), (o.paramsString += r[n]));
    }
    return o;
  }
  function y() {
    var e = {
      setSuccess: function (t) {
        e.resolve(t);
      },
      setError: function (t) {
        e.reject(t);
      },
    };
    return (
      (e.promise = new Promise(function (t, r) {
        (e.resolve = t), (e.reject = r);
      })),
      e
    );
  }
  function S() {
    var e = y();
    if (!i.enable) return e.setSuccess(), e.promise;
    if (i.iframe) return e.setSuccess(), e.promise;
    var t = document.createElement('iframe');
    (i.iframe = t),
      (t.onload = function () {
        var t = o.endpoints.authorize();
        (i.iframeOrigin =
          '/' === t.charAt(0)
            ? window.location.origin
              ? window.location.origin
              : window.location.protocol +
                '//' +
                window.location.hostname +
                (window.location.port ? ':' + window.location.port : '')
            : t.substring(0, t.indexOf('/', 8))),
          e.setSuccess();
      });
    var r = o.endpoints.checkSessionIframe();
    return (
      t.setAttribute('src', r),
      t.setAttribute('sandbox', 'allow-scripts allow-same-origin'),
      t.setAttribute('title', 'keycloak-session-iframe'),
      (t.style.display = 'none'),
      document.body.appendChild(t),
      window.addEventListener(
        'message',
        function (e) {
          if (
            e.origin === i.iframeOrigin &&
            i.iframe.contentWindow === e.source &&
            ('unchanged' == e.data || 'changed' == e.data || 'error' == e.data)
          ) {
            'unchanged' != e.data && o.clearToken();
            for (
              var t = i.callbackList.splice(0, i.callbackList.length), r = t.length - 1;
              r >= 0;
              --r
            ) {
              var n = t[r];
              'error' == e.data ? n.setError() : n.setSuccess('unchanged' == e.data);
            }
          }
        },
        !1
      ),
      e.promise
    );
  }
  function _() {
    i.enable &&
      o.token &&
      setTimeout(function () {
        A().then(function (e) {
          e && _();
        });
      }, 1e3 * i.interval);
  }
  function A() {
    var e = y();
    if (i.iframe && i.iframeOrigin) {
      var t = o.clientId + ' ' + (o.sessionId ? o.sessionId : '');
      i.callbackList.push(e),
        1 == i.callbackList.length && i.iframe.contentWindow.postMessage(t, i.iframeOrigin);
    } else e.setSuccess();
    return e.promise;
  }
  function b() {
    var e = y();
    if (i.enable || o.silentCheckSsoRedirectUri) {
      var t = document.createElement('iframe');
      t.setAttribute('src', o.endpoints.thirdPartyCookiesIframe()),
        t.setAttribute('sandbox', 'allow-scripts allow-same-origin'),
        t.setAttribute('title', 'keycloak-3p-check-iframe'),
        (t.style.display = 'none'),
        document.body.appendChild(t);
      var r = function (n) {
        t.contentWindow === n.source &&
          (('supported' !== n.data && 'unsupported' !== n.data) ||
            ('unsupported' === n.data &&
              ((i.enable = !1),
              o.silentCheckSsoFallback && (o.silentCheckSsoRedirectUri = !1),
              l(
                "[KEYCLOAK] 3rd party cookies aren't supported by this browser. checkLoginIframe and silent check-sso are not available."
              )),
            document.body.removeChild(t),
            window.removeEventListener('message', r),
            e.setSuccess()));
      };
      window.addEventListener('message', r, !1);
    } else e.setSuccess();
    return (function (e, t, r) {
      var o = null,
        n = new Promise(function (e, r) {
          o = setTimeout(function () {
            r({ error: 'Timeout when waiting for 3rd party check iframe message.' });
          }, t);
        });
      return Promise.race([e, n]).finally(function () {
        clearTimeout(o);
      });
    })(e.promise, o.messageReceiveTimeout);
  }
  function R(e) {
    if (!e || 'default' == e)
      return {
        login: function (e) {
          return window.location.assign(o.createLoginUrl(e)), y().promise;
        },
        logout: function (e) {
          return window.location.replace(o.createLogoutUrl(e)), y().promise;
        },
        register: function (e) {
          return window.location.assign(o.createRegisterUrl(e)), y().promise;
        },
        accountManagement: function () {
          var e = o.createAccountUrl();
          if (void 0 === e) throw 'Not supported by the OIDC server';
          return (window.location.href = e), y().promise;
        },
        redirectUri: function (e, t) {
          return e && e.redirectUri ? e.redirectUri : o.redirectUri ? o.redirectUri : location.href;
        },
      };
    if ('cordova' == e) {
      i.enable = !1;
      var t = function (e, t, r) {
          return window.cordova && window.cordova.InAppBrowser
            ? window.cordova.InAppBrowser.open(e, t, r)
            : window.open(e, t, r);
        },
        r = function (e) {
          var t = (function (e) {
            return e && e.cordovaOptions
              ? Object.keys(e.cordovaOptions).reduce(function (t, r) {
                  return (t[r] = e.cordovaOptions[r]), t;
                }, {})
              : {};
          })(e);
          return (
            (t.location = 'no'),
            e && 'none' == e.prompt && (t.hidden = 'yes'),
            (function (e) {
              return Object.keys(e)
                .reduce(function (t, r) {
                  return t.push(r + '=' + e[r]), t;
                }, [])
                .join(',');
            })(t)
          );
        },
        n = o.redirectUri || 'http://localhost';
      return {
        login: function (e) {
          var i = y(),
            s = r(e),
            a = o.createLoginUrl(e),
            c = t(a, '_blank', s),
            u = !1,
            l = !1,
            d = function () {
              (l = !0), c.close();
            };
          return (
            c.addEventListener('loadstart', function (e) {
              0 == e.url.indexOf(n) && (f(v(e.url), i), d(), (u = !0));
            }),
            c.addEventListener('loaderror', function (e) {
              u || (0 == e.url.indexOf(n) ? (f(v(e.url), i), d(), (u = !0)) : (i.setError(), d()));
            }),
            c.addEventListener('exit', function (e) {
              l || i.setError({ reason: 'closed_by_user' });
            }),
            i.promise
          );
        },
        logout: function (e) {
          var r,
            i = y(),
            s = o.createLogoutUrl(e),
            a = t(s, '_blank', 'location=no,hidden=yes,clearcache=yes');
          return (
            a.addEventListener('loadstart', function (e) {
              0 == e.url.indexOf(n) && a.close();
            }),
            a.addEventListener('loaderror', function (e) {
              0 == e.url.indexOf(n) || (r = !0), a.close();
            }),
            a.addEventListener('exit', function (e) {
              r ? i.setError() : (o.clearToken(), i.setSuccess());
            }),
            i.promise
          );
        },
        register: function (e) {
          var i = y(),
            s = o.createRegisterUrl(),
            a = r(e),
            c = t(s, '_blank', a);
          return (
            c.addEventListener('loadstart', function (e) {
              0 == e.url.indexOf(n) && (c.close(), f(v(e.url), i));
            }),
            i.promise
          );
        },
        accountManagement: function () {
          var e = o.createAccountUrl();
          if (void 0 === e) throw 'Not supported by the OIDC server';
          var r = t(e, '_blank', 'location=no');
          r.addEventListener('loadstart', function (e) {
            0 == e.url.indexOf(n) && r.close();
          });
        },
        redirectUri: function (e) {
          return n;
        },
      };
    }
    if ('cordova-native' == e)
      return (
        (i.enable = !1),
        {
          login: function (e) {
            var t = y(),
              r = o.createLoginUrl(e);
            return (
              universalLinks.subscribe('keycloak', function (e) {
                universalLinks.unsubscribe('keycloak'),
                  window.cordova.plugins.browsertab.close(),
                  f(v(e.url), t);
              }),
              window.cordova.plugins.browsertab.openUrl(r),
              t.promise
            );
          },
          logout: function (e) {
            var t = y(),
              r = o.createLogoutUrl(e);
            return (
              universalLinks.subscribe('keycloak', function (e) {
                universalLinks.unsubscribe('keycloak'),
                  window.cordova.plugins.browsertab.close(),
                  o.clearToken(),
                  t.setSuccess();
              }),
              window.cordova.plugins.browsertab.openUrl(r),
              t.promise
            );
          },
          register: function (e) {
            var t = y(),
              r = o.createRegisterUrl(e);
            return (
              universalLinks.subscribe('keycloak', function (e) {
                universalLinks.unsubscribe('keycloak'),
                  window.cordova.plugins.browsertab.close(),
                  f(v(e.url), t);
              }),
              window.cordova.plugins.browsertab.openUrl(r),
              t.promise
            );
          },
          accountManagement: function () {
            var e = o.createAccountUrl();
            if (void 0 === e) throw 'Not supported by the OIDC server';
            window.cordova.plugins.browsertab.openUrl(e);
          },
          redirectUri: function (e) {
            return e && e.redirectUri
              ? e.redirectUri
              : o.redirectUri
              ? o.redirectUri
              : 'http://localhost';
          },
        }
      );
    throw 'invalid adapter type: ' + e;
  }
  (o.init = function (n) {
    if (o.didInitialize) throw new Error("A 'Keycloak' instance can only be initialized once.");
    if (
      ((o.didInitialize = !0),
      (o.authenticated = !1),
      (r = (function () {
        try {
          return new E();
        } catch (e) {}
        return new C();
      })()),
      (t =
        n && ['default', 'cordova', 'cordova-native'].indexOf(n.adapter) > -1
          ? R(n.adapter)
          : n && 'object' == typeof n.adapter
          ? n.adapter
          : window.Cordova || window.cordova
          ? R('cordova')
          : R()),
      n)
    ) {
      if (
        (void 0 !== n.useNonce && (c = n.useNonce),
        void 0 !== n.checkLoginIframe && (i.enable = n.checkLoginIframe),
        n.checkLoginIframeInterval && (i.interval = n.checkLoginIframeInterval),
        'login-required' === n.onLoad && (o.loginRequired = !0),
        n.responseMode)
      ) {
        if ('query' !== n.responseMode && 'fragment' !== n.responseMode)
          throw 'Invalid value for responseMode';
        o.responseMode = n.responseMode;
      }
      if (n.flow) {
        switch (n.flow) {
          case 'standard':
            o.responseType = 'code';
            break;
          case 'implicit':
            o.responseType = 'id_token token';
            break;
          case 'hybrid':
            o.responseType = 'code id_token token';
            break;
          default:
            throw 'Invalid value for flow';
        }
        o.flow = n.flow;
      }
      if (
        (null != n.timeSkew && (o.timeSkew = n.timeSkew),
        n.redirectUri && (o.redirectUri = n.redirectUri),
        n.silentCheckSsoRedirectUri && (o.silentCheckSsoRedirectUri = n.silentCheckSsoRedirectUri),
        (o.silentCheckSsoFallback =
          'boolean' != typeof n.silentCheckSsoFallback || n.silentCheckSsoFallback),
        n.pkceMethod)
      ) {
        if ('S256' !== n.pkceMethod) throw 'Invalid value for pkceMethod';
        o.pkceMethod = n.pkceMethod;
      }
      (o.enableLogging = 'boolean' == typeof n.enableLogging && n.enableLogging),
        'string' == typeof n.scope && (o.scope = n.scope),
        (o.messageReceiveTimeout =
          'number' == typeof n.messageReceiveTimeout && n.messageReceiveTimeout > 0
            ? n.messageReceiveTimeout
            : 1e4);
    }
    o.responseMode || (o.responseMode = 'fragment'),
      o.responseType || ((o.responseType = 'code'), (o.flow = 'standard'));
    var s = y(),
      a = y();
    a.promise
      .then(function () {
        o.onReady && o.onReady(o.authenticated), s.setSuccess(o.authenticated);
      })
      .catch(function (e) {
        s.setError(e);
      });
    var u = (function (t) {
      var r,
        n = y();
      function i(e) {
        o.endpoints = e
          ? {
              authorize: function () {
                return e.authorization_endpoint;
              },
              token: function () {
                return e.token_endpoint;
              },
              logout: function () {
                if (!e.end_session_endpoint) throw 'Not supported by the OIDC server';
                return e.end_session_endpoint;
              },
              checkSessionIframe: function () {
                if (!e.check_session_iframe) throw 'Not supported by the OIDC server';
                return e.check_session_iframe;
              },
              register: function () {
                throw 'Redirection to "Register user" page not supported in standard OIDC mode';
              },
              userinfo: function () {
                if (!e.userinfo_endpoint) throw 'Not supported by the OIDC server';
                return e.userinfo_endpoint;
              },
            }
          : {
              authorize: function () {
                return h() + '/protocol/openid-connect/auth';
              },
              token: function () {
                return h() + '/protocol/openid-connect/token';
              },
              logout: function () {
                return h() + '/protocol/openid-connect/logout';
              },
              checkSessionIframe: function () {
                var e = h() + '/protocol/openid-connect/login-status-iframe.html';
                return o.iframeVersion && (e = e + '?version=' + o.iframeVersion), e;
              },
              thirdPartyCookiesIframe: function () {
                var e = h() + '/protocol/openid-connect/3p-cookies/step1.html';
                return o.iframeVersion && (e = e + '?version=' + o.iframeVersion), e;
              },
              register: function () {
                return h() + '/protocol/openid-connect/registrations';
              },
              userinfo: function () {
                return h() + '/protocol/openid-connect/userinfo';
              },
            };
      }
      if ((e ? 'string' == typeof e && (r = e) : (r = 'keycloak.json'), r))
        (c = new XMLHttpRequest()).open('GET', r, !0),
          c.setRequestHeader('Accept', 'application/json'),
          (c.onreadystatechange = function () {
            if (4 == c.readyState)
              if (200 == c.status || p(c)) {
                var e = JSON.parse(c.responseText);
                (o.authServerUrl = e['auth-server-url']),
                  (o.realm = e.realm),
                  (o.clientId = e.resource),
                  i(null),
                  n.setSuccess();
              } else n.setError();
          }),
          c.send();
      else {
        if (!e.clientId) throw 'clientId missing';
        o.clientId = e.clientId;
        var s = e.oidcProvider;
        if (s) {
          var a, c;
          'string' == typeof s
            ? ((a =
                '/' == s.charAt(s.length - 1)
                  ? s + '.well-known/openid-configuration'
                  : s + '/.well-known/openid-configuration'),
              (c = new XMLHttpRequest()).open('GET', a, !0),
              c.setRequestHeader('Accept', 'application/json'),
              (c.onreadystatechange = function () {
                4 == c.readyState &&
                  (200 == c.status || p(c)
                    ? (i(JSON.parse(c.responseText)), n.setSuccess())
                    : n.setError());
              }),
              c.send())
            : (i(s), n.setSuccess());
        } else {
          if (!e.url)
            for (var u = document.getElementsByTagName('script'), l = 0; l < u.length; l++)
              if (u[l].src.match(/.*keycloak\.js/)) {
                e.url = u[l].src.substr(0, u[l].src.indexOf('/js/keycloak.js'));
                break;
              }
          if (!e.realm) throw 'realm missing';
          (o.authServerUrl = e.url), (o.realm = e.realm), i(null), n.setSuccess();
        }
      }
      return n.promise;
    })();
    function l() {
      var e = function (e) {
          e || (r.prompt = 'none'),
            n && n.locale && (r.locale = n.locale),
            o
              .login(r)
              .then(function () {
                a.setSuccess();
              })
              .catch(function (e) {
                a.setError(e);
              });
        },
        t = function () {
          var e = document.createElement('iframe'),
            t = o.createLoginUrl({ prompt: 'none', redirectUri: o.silentCheckSsoRedirectUri });
          e.setAttribute('src', t),
            e.setAttribute('sandbox', 'allow-scripts allow-same-origin'),
            e.setAttribute('title', 'keycloak-silent-check-sso'),
            (e.style.display = 'none'),
            document.body.appendChild(e);
          var r = function (t) {
            t.origin === window.location.origin &&
              e.contentWindow === t.source &&
              (f(v(t.data), a),
              document.body.removeChild(e),
              window.removeEventListener('message', r));
          };
          window.addEventListener('message', r);
        },
        r = {};
      switch (n.onLoad) {
        case 'check-sso':
          i.enable
            ? S().then(function () {
                A()
                  .then(function (r) {
                    r ? a.setSuccess() : o.silentCheckSsoRedirectUri ? t() : e(!1);
                  })
                  .catch(function (e) {
                    a.setError(e);
                  });
              })
            : o.silentCheckSsoRedirectUri
            ? t()
            : e(!1);
          break;
        case 'login-required':
          e(!0);
          break;
        default:
          throw 'Invalid value for onLoad';
      }
    }
    function d() {
      var e = v(window.location.href);
      if ((e && window.history.replaceState(window.history.state, null, e.newUrl), e && e.valid))
        return S()
          .then(function () {
            f(e, a);
          })
          .catch(function (e) {
            a.setError(e);
          });
      n
        ? n.token && n.refreshToken
          ? (g(n.token, n.refreshToken, n.idToken),
            i.enable
              ? S().then(function () {
                  A()
                    .then(function (e) {
                      e
                        ? (o.onAuthSuccess && o.onAuthSuccess(), a.setSuccess(), _())
                        : a.setSuccess();
                    })
                    .catch(function (e) {
                      a.setError(e);
                    });
                })
              : o
                  .updateToken(-1)
                  .then(function () {
                    o.onAuthSuccess && o.onAuthSuccess(), a.setSuccess();
                  })
                  .catch(function (e) {
                    o.onAuthError && o.onAuthError(), n.onLoad ? l() : a.setError(e);
                  }))
          : n.onLoad
          ? l()
          : a.setSuccess()
        : a.setSuccess();
    }
    return (
      u.then(function () {
        (function () {
          var e = y(),
            t = function () {
              ('interactive' !== document.readyState && 'complete' !== document.readyState) ||
                (document.removeEventListener('readystatechange', t), e.setSuccess());
            };
          return document.addEventListener('readystatechange', t), t(), e.promise;
        })()
          .then(b)
          .then(d)
          .catch(function (e) {
            s.setError(e);
          });
      }),
      u.catch(function (e) {
        s.setError(e);
      }),
      s.promise
    );
  }),
    (o.login = function (e) {
      return t.login(e);
    }),
    (o.createLoginUrl = function (e) {
      var n,
        i = m(),
        s = m(),
        a = t.redirectUri(e),
        u = { state: i, nonce: s, redirectUri: encodeURIComponent(a) };
      e && e.prompt && (u.prompt = e.prompt),
        (n = e && 'register' == e.action ? o.endpoints.register() : o.endpoints.authorize());
      var l = (e && e.scope) || o.scope;
      l ? -1 === l.indexOf('openid') && (l = 'openid ' + l) : (l = 'openid');
      var h =
        n +
        '?client_id=' +
        encodeURIComponent(o.clientId) +
        '&redirect_uri=' +
        encodeURIComponent(a) +
        '&state=' +
        encodeURIComponent(i) +
        '&response_mode=' +
        encodeURIComponent(o.responseMode) +
        '&response_type=' +
        encodeURIComponent(o.responseType) +
        '&scope=' +
        encodeURIComponent(l);
      if (
        (c && (h = h + '&nonce=' + encodeURIComponent(s)),
        e && e.prompt && (h += '&prompt=' + encodeURIComponent(e.prompt)),
        e && e.maxAge && (h += '&max_age=' + encodeURIComponent(e.maxAge)),
        e && e.loginHint && (h += '&login_hint=' + encodeURIComponent(e.loginHint)),
        e && e.idpHint && (h += '&kc_idp_hint=' + encodeURIComponent(e.idpHint)),
        e &&
          e.action &&
          'register' != e.action &&
          (h += '&kc_action=' + encodeURIComponent(e.action)),
        e && e.locale && (h += '&ui_locales=' + encodeURIComponent(e.locale)),
        e && e.acr)
      ) {
        var f = JSON.stringify({ id_token: { acr: e.acr } });
        h += '&claims=' + encodeURIComponent(f);
      }
      if (o.pkceMethod) {
        var p = d(96, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
        u.pkceCodeVerifier = p;
        var g = (function (e, t) {
          if ('S256' === e) {
            var r = new Uint8Array(sha256.arrayBuffer(t));
            return base64Js
              .fromByteArray(r)
              .replace(/\+/g, '-')
              .replace(/\//g, '_')
              .replace(/\=/g, '');
          }
          throw 'Invalid value for pkceMethod';
        })(o.pkceMethod, p);
        (h += '&code_challenge=' + g), (h += '&code_challenge_method=' + o.pkceMethod);
      }
      return r.add(u), h;
    }),
    (o.logout = function (e) {
      return t.logout(e);
    }),
    (o.createLogoutUrl = function (e) {
      var r =
        o.endpoints.logout() +
        '?client_id=' +
        encodeURIComponent(o.clientId) +
        '&post_logout_redirect_uri=' +
        encodeURIComponent(t.redirectUri(e, !1));
      return o.idToken && (r += '&id_token_hint=' + encodeURIComponent(o.idToken)), r;
    }),
    (o.register = function (e) {
      return t.register(e);
    }),
    (o.createRegisterUrl = function (e) {
      return e || (e = {}), (e.action = 'register'), o.createLoginUrl(e);
    }),
    (o.createAccountUrl = function (e) {
      var r = h(),
        n = void 0;
      return (
        void 0 !== r &&
          (n =
            r +
            '/account?referrer=' +
            encodeURIComponent(o.clientId) +
            '&referrer_uri=' +
            encodeURIComponent(t.redirectUri(e))),
        n
      );
    }),
    (o.accountManagement = function () {
      return t.accountManagement();
    }),
    (o.hasRealmRole = function (e) {
      var t = o.realmAccess;
      return !!t && t.roles.indexOf(e) >= 0;
    }),
    (o.hasResourceRole = function (e, t) {
      if (!o.resourceAccess) return !1;
      var r = o.resourceAccess[t || o.clientId];
      return !!r && r.roles.indexOf(e) >= 0;
    }),
    (o.loadUserProfile = function () {
      var e = h() + '/account',
        t = new XMLHttpRequest();
      t.open('GET', e, !0),
        t.setRequestHeader('Accept', 'application/json'),
        t.setRequestHeader('Authorization', 'bearer ' + o.token);
      var r = y();
      return (
        (t.onreadystatechange = function () {
          4 == t.readyState &&
            (200 == t.status
              ? ((o.profile = JSON.parse(t.responseText)), r.setSuccess(o.profile))
              : r.setError());
        }),
        t.send(),
        r.promise
      );
    }),
    (o.loadUserInfo = function () {
      var e = o.endpoints.userinfo(),
        t = new XMLHttpRequest();
      t.open('GET', e, !0),
        t.setRequestHeader('Accept', 'application/json'),
        t.setRequestHeader('Authorization', 'bearer ' + o.token);
      var r = y();
      return (
        (t.onreadystatechange = function () {
          4 == t.readyState &&
            (200 == t.status
              ? ((o.userInfo = JSON.parse(t.responseText)), r.setSuccess(o.userInfo))
              : r.setError());
        }),
        t.send(),
        r.promise
      );
    }),
    (o.isTokenExpired = function (e) {
      if (!o.tokenParsed || (!o.refreshToken && 'implicit' != o.flow)) throw 'Not authenticated';
      if (null == o.timeSkew)
        return u('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set'), !0;
      var t = o.tokenParsed.exp - Math.ceil(new Date().getTime() / 1e3) + o.timeSkew;
      if (e) {
        if (isNaN(e)) throw 'Invalid minValidity';
        t -= e;
      }
      return t < 0;
    }),
    (o.updateToken = function (e) {
      var t = y();
      if (!o.refreshToken) return t.setError(), t.promise;
      e = e || 5;
      var r = function () {
        var r = !1;
        if (
          (-1 == e
            ? ((r = !0), u('[KEYCLOAK] Refreshing token: forced refresh'))
            : (o.tokenParsed && !o.isTokenExpired(e)) ||
              ((r = !0), u('[KEYCLOAK] Refreshing token: token expired')),
          r)
        ) {
          var i = 'grant_type=refresh_token&refresh_token=' + o.refreshToken,
            s = o.endpoints.token();
          if ((n.push(t), 1 == n.length)) {
            var a = new XMLHttpRequest();
            a.open('POST', s, !0),
              a.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'),
              (a.withCredentials = !0),
              (i += '&client_id=' + encodeURIComponent(o.clientId));
            var c = new Date().getTime();
            (a.onreadystatechange = function () {
              if (4 == a.readyState)
                if (200 == a.status) {
                  u('[KEYCLOAK] Token refreshed'), (c = (c + new Date().getTime()) / 2);
                  var e = JSON.parse(a.responseText);
                  g(e.access_token, e.refresh_token, e.id_token, c),
                    o.onAuthRefreshSuccess && o.onAuthRefreshSuccess();
                  for (var t = n.pop(); null != t; t = n.pop()) t.setSuccess(!0);
                } else
                  for (
                    l('[KEYCLOAK] Failed to refresh token'),
                      400 == a.status && o.clearToken(),
                      o.onAuthRefreshError && o.onAuthRefreshError(),
                      t = n.pop();
                    null != t;
                    t = n.pop()
                  )
                    t.setError(!0);
            }),
              a.send(i);
          }
        } else t.setSuccess(!1);
      };
      return (
        i.enable
          ? A()
              .then(function () {
                r();
              })
              .catch(function (e) {
                t.setError(e);
              })
          : r(),
        t.promise
      );
    }),
    (o.clearToken = function () {
      o.token &&
        (g(null, null, null), o.onAuthLogout && o.onAuthLogout(), o.loginRequired && o.login());
    });
  var E = function () {
      if (!(this instanceof E)) return new E();
      function e() {
        for (var e = new Date().getTime(), t = 0; t < localStorage.length; t++) {
          var r = localStorage.key(t);
          if (r && 0 == r.indexOf('kc-callback-')) {
            var o = localStorage.getItem(r);
            if (o)
              try {
                var n = JSON.parse(o).expires;
                (!n || n < e) && localStorage.removeItem(r);
              } catch (e) {
                localStorage.removeItem(r);
              }
          }
        }
      }
      localStorage.setItem('kc-test', 'test'),
        localStorage.removeItem('kc-test'),
        (this.get = function (t) {
          if (t) {
            var r = 'kc-callback-' + t,
              o = localStorage.getItem(r);
            return o && (localStorage.removeItem(r), (o = JSON.parse(o))), e(), o;
          }
        }),
        (this.add = function (t) {
          e();
          var r = 'kc-callback-' + t.state;
          (t.expires = new Date().getTime() + 36e5), localStorage.setItem(r, JSON.stringify(t));
        });
    },
    C = function () {
      if (!(this instanceof C)) return new C();
      var e = this;
      (e.get = function (e) {
        if (e) {
          var n = r('kc-callback-' + e);
          return o('kc-callback-' + e, '', t(-100)), n ? JSON.parse(n) : void 0;
        }
      }),
        (e.add = function (e) {
          o('kc-callback-' + e.state, JSON.stringify(e), t(60));
        }),
        (e.removeItem = function (e) {
          o(e, '', t(-100));
        });
      var t = function (e) {
          var t = new Date();
          return t.setTime(t.getTime() + 60 * e * 1e3), t;
        },
        r = function (e) {
          for (var t = e + '=', r = document.cookie.split(';'), o = 0; o < r.length; o++) {
            for (var n = r[o]; ' ' == n.charAt(0); ) n = n.substring(1);
            if (0 == n.indexOf(t)) return n.substring(t.length, n.length);
          }
          return '';
        },
        o = function (e, t, r) {
          var o = e + '=' + t + '; expires=' + r.toUTCString() + '; ';
          document.cookie = o;
        };
    };
  function H(e) {
    return function () {
      o.enableLogging && e.apply(console, Array.prototype.slice.call(arguments));
    };
  }
}
var appendParentOriginIntoUrl = function (e, t) {
    if (window !== window.parent)
      try {
        var r,
          o,
          n = document.referrer,
          i = n.split('/')[2];
        t && (console.info('DOCUMENT REFERRER: ', n), console.info('DOCUMENT REFERRER HOST: ', i));
        var s = null == (r = window.location.ancestorOrigins) ? void 0 : r[0],
          a = null == s || null == (o = s.split('/')) ? void 0 : o[2];
        t && (console.info('ANCESTOR ORIGIN: ', s), console.info('ANCESTOR ORIGIN HOST: ', a));
        var c =
          window.location !== window.parent.location
            ? null != i
              ? i
              : a
            : window.location.hostname;
        t && console.info('WINK PARENT ORIGIN HOST: ', c),
          (e = e + '&wink-parent-origin=' + encodeURIComponent(c));
      } catch (e) {
        console.error('Unable to add wink parent origin query param due to error: ', e);
      }
    return e;
  },
  defaultKeycloakInitConfig = {
    onLoad: 'check-sso',
    pkceMethod: 'S256',
    silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html',
    checkLoginIframe: !0,
    silentCheckSsoFallback: !0,
    enableLogging: !0,
  },
  getUrl = function (e) {
    var t = e.authServerUrl,
      r = e.realm;
    return t
      ? '/' === t.charAt(t.length - 1)
        ? t + 'realms/' + encodeURIComponent(r)
        : t + '/realms/' + encodeURIComponent(r)
      : null;
  },
  getRedirectUri = function (e, t) {
    return null != t && t.redirectUri
      ? t.redirectUri
      : e.redirectUri
      ? e.redirectUri
      : location.href;
  },
  getLogoutUrl = function (e, t) {
    var r = e.idToken,
      o = e.clientId;
    return (
      getUrl(e) +
      '/winklogout?post_logout_redirect_uri=' +
      encodeURIComponent(getRedirectUri(e, t)) +
      '&id_token_hint=' +
      encodeURIComponent(r) +
      '&client_id=' +
      encodeURIComponent(o)
    );
  },
  changeUrlWithoutReloading = function (e) {
    history.pushState({ page: e }, '', e);
  },
  getUrlParamValue = function (e) {
    var t = window.location.search;
    return new URLSearchParams(t).get(e);
  },
  removeUrlParam = function (e) {
    var t = window.location,
      r = removeParameterFromUrl(t.href, e);
    changeUrlWithoutReloading(r);
  },
  removeParameterFromUrl = function (e, t) {
    var r = new URL(e),
      o = r.searchParams;
    return o.delete(t), (r.search = o.toString()), r.toString();
  },
  winkSetCookie = function (e, t, r) {
    void 0 === r && (r = 1);
    var o = new Date();
    o.setTime(o.getTime() + 24 * r * 60 * 60 * 1e3);
    var n = 'expires=' + o.toUTCString();
    document.cookie = e + '=' + t + ';' + n + ';path=/';
  },
  winkGetCookie = function (e) {
    for (
      var t = e + '=', r = decodeURIComponent(document.cookie).split(';'), o = 0;
      o < r.length;
      o++
    ) {
      for (var n = r[o]; ' ' == n.charAt(0); ) n = n.substring(1);
      if (0 == n.indexOf(t)) return n.substring(t.length, n.length);
    }
    return '';
  },
  winkEraseCookie = function (e) {
    document.cookie = e + '=; Max-Age=-99999999;';
  };
function _catch(e, t) {
  try {
    var r = e();
  } catch (e) {
    return t(e);
  }
  return r && r.then ? r.then(void 0, t) : r;
}
var CustomKeycloak = /*#__PURE__*/ (function (e) {
    function t(t) {
      var r, o;
      return (
        ((o = e.call(this, t) || this).onAuthErrorFailure = void 0),
        (o.loggingEnabled = !0),
        (o.createLogoutUrl = function (e) {
          try {
            return getLogoutUrl(_assertThisInitialized(o), e);
          } catch (e) {
            throw (
              (o.loggingEnabled && console.error('Error while constructing the logout url: ', e), e)
            );
          }
        }),
        (o.winkInit = function (e) {
          try {
            var t = null != e ? e : {},
              r = t.onFailure,
              n = t.onSuccess,
              i = _catch(
                function () {
                  return (
                    o.loggingEnabled && console.debug('Calling Keycloak init.'),
                    Promise.resolve(o.init(defaultKeycloakInitConfig)).then(function (e) {
                      e
                        ? (null == n || n(), winkSetCookie('wink_id_token', o.idToken))
                        : '1' === getUrlParamValue('login_session_state') && o.winkLogin();
                    })
                  );
                },
                function (e) {
                  o.loggingEnabled && console.error('Error while wink client initialization: ', e),
                    null == r || r(e);
                }
              );
            return Promise.resolve(i && i.then ? i.then(function () {}) : void 0);
          } catch (e) {
            return Promise.reject(e);
          }
        }),
        (o.winkLogin = function (e) {
          try {
            var t = (null != e ? e : {}).onFailure,
              r = _catch(
                function () {
                  return (
                    o.loggingEnabled && console.debug('Calling Keycloak login.'),
                    Promise.resolve(o.login(e)).then(function () {})
                  );
                },
                function (e) {
                  o.loggingEnabled && console.error('Error while wink client login: ', e),
                    null == t || t(e);
                }
              );
            return Promise.resolve(r && r.then ? r.then(function () {}) : void 0);
          } catch (e) {
            return Promise.reject(e);
          }
        }),
        (o.winkLogout = function (e) {
          try {
            var t = (null != e ? e : {}).onFailure,
              r = _catch(
                function () {
                  var t;
                  return (
                    o.loggingEnabled && console.debug('Calling Keycloak logout.'),
                    (o.idToken = null != (t = o.idToken) ? t : winkGetCookie('wink_id_token')),
                    winkEraseCookie('wink_id_token'),
                    removeUrlParam('login_session_state'),
                    Promise.resolve(o.logout(e)).then(function () {})
                  );
                },
                function (e) {
                  o.loggingEnabled && console.error('Error while wink client logout: ', e),
                    null == t || t(e);
                }
              );
            return Promise.resolve(r && r.then ? r.then(function () {}) : void 0);
          } catch (e) {
            return Promise.reject(e);
          }
        }),
        (o.onAuthErrorFailure = t.onAuthErrorFailure),
        (o.loggingEnabled = null == (r = t.loggingEnabled) || r),
        o
      );
    }
    _inheritsLoose(t, e);
    var r = t.prototype;
    return (
      (r.onReady = function (e) {
        this.loggingEnabled &&
          (console.debug('Keycloak client ready.'),
          console.debug('Keycloak client authenticated: ', e));
      }),
      (r.onAuthError = function (e) {
        var t;
        null == (t = this.onAuthErrorFailure) || t.call(this, e),
          this.loggingEnabled && console.error('Keycloak client authentication error: ', e);
      }),
      t
    );
  })(Keycloak),
  getWinkLoginClient = function (e) {
    var t = new CustomKeycloak(e),
      r = t.createLoginUrl;
    return (
      (t.createLoginUrl = function (t) {
        var o,
          n = r.call(this, t);
        return appendParentOriginIntoUrl(n, null == (o = e.loggingEnabled) || o);
      }),
      t
    );
  };
console.info('winklogin.module.js - version 2.1.1'),
  (window.getWinkLoginClient = getWinkLoginClient);
//# sourceMappingURL=winklogin.module.js.map