{"version":3,"file":"creators.js","mappings":"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","sources":["webpack://jumpstart-app/./node_modules/js-sha256/src/sha256.js","webpack://jumpstart-app/webpack/bootstrap","webpack://jumpstart-app/webpack/runtime/amd options","webpack://jumpstart-app/webpack/runtime/global","webpack://jumpstart-app/./node_modules/jwt-decode/build/esm/index.js","webpack://jumpstart-app/./node_modules/keycloak-js/dist/keycloak.mjs","webpack://jumpstart-app/./app/javascript/creators/keycloak.ts"],"sourcesContent":["/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.11.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2024\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = require('crypto')\n var Buffer = require('buffer').Buffer;\n var algorithm = is224 ? 'sha224' : 'sha256';\n var bufferFrom;\n if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {\n bufferFrom = Buffer.from;\n } else {\n bufferFrom = function (message) {\n return new Buffer(message);\n };\n }\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(bufferFrom(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n this.block = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >>> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >>> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n this.chromeBugWorkAround = true;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >>> 28) & 0x0F] + HEX_CHARS[(h0 >>> 24) & 0x0F] +\n HEX_CHARS[(h0 >>> 20) & 0x0F] + HEX_CHARS[(h0 >>> 16) & 0x0F] +\n HEX_CHARS[(h0 >>> 12) & 0x0F] + HEX_CHARS[(h0 >>> 8) & 0x0F] +\n HEX_CHARS[(h0 >>> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >>> 28) & 0x0F] + HEX_CHARS[(h1 >>> 24) & 0x0F] +\n HEX_CHARS[(h1 >>> 20) & 0x0F] + HEX_CHARS[(h1 >>> 16) & 0x0F] +\n HEX_CHARS[(h1 >>> 12) & 0x0F] + HEX_CHARS[(h1 >>> 8) & 0x0F] +\n HEX_CHARS[(h1 >>> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >>> 28) & 0x0F] + HEX_CHARS[(h2 >>> 24) & 0x0F] +\n HEX_CHARS[(h2 >>> 20) & 0x0F] + HEX_CHARS[(h2 >>> 16) & 0x0F] +\n HEX_CHARS[(h2 >>> 12) & 0x0F] + HEX_CHARS[(h2 >>> 8) & 0x0F] +\n HEX_CHARS[(h2 >>> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >>> 28) & 0x0F] + HEX_CHARS[(h3 >>> 24) & 0x0F] +\n HEX_CHARS[(h3 >>> 20) & 0x0F] + HEX_CHARS[(h3 >>> 16) & 0x0F] +\n HEX_CHARS[(h3 >>> 12) & 0x0F] + HEX_CHARS[(h3 >>> 8) & 0x0F] +\n HEX_CHARS[(h3 >>> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >>> 28) & 0x0F] + HEX_CHARS[(h4 >>> 24) & 0x0F] +\n HEX_CHARS[(h4 >>> 20) & 0x0F] + HEX_CHARS[(h4 >>> 16) & 0x0F] +\n HEX_CHARS[(h4 >>> 12) & 0x0F] + HEX_CHARS[(h4 >>> 8) & 0x0F] +\n HEX_CHARS[(h4 >>> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >>> 28) & 0x0F] + HEX_CHARS[(h5 >>> 24) & 0x0F] +\n HEX_CHARS[(h5 >>> 20) & 0x0F] + HEX_CHARS[(h5 >>> 16) & 0x0F] +\n HEX_CHARS[(h5 >>> 12) & 0x0F] + HEX_CHARS[(h5 >>> 8) & 0x0F] +\n HEX_CHARS[(h5 >>> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >>> 28) & 0x0F] + HEX_CHARS[(h6 >>> 24) & 0x0F] +\n HEX_CHARS[(h6 >>> 20) & 0x0F] + HEX_CHARS[(h6 >>> 16) & 0x0F] +\n HEX_CHARS[(h6 >>> 12) & 0x0F] + HEX_CHARS[(h6 >>> 8) & 0x0F] +\n HEX_CHARS[(h6 >>> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >>> 28) & 0x0F] + HEX_CHARS[(h7 >>> 24) & 0x0F] +\n HEX_CHARS[(h7 >>> 20) & 0x0F] + HEX_CHARS[(h7 >>> 16) & 0x0F] +\n HEX_CHARS[(h7 >>> 12) & 0x0F] + HEX_CHARS[(h7 >>> 8) & 0x0F] +\n HEX_CHARS[(h7 >>> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >>> 24) & 0xFF, (h0 >>> 16) & 0xFF, (h0 >>> 8) & 0xFF, h0 & 0xFF,\n (h1 >>> 24) & 0xFF, (h1 >>> 16) & 0xFF, (h1 >>> 8) & 0xFF, h1 & 0xFF,\n (h2 >>> 24) & 0xFF, (h2 >>> 16) & 0xFF, (h2 >>> 8) & 0xFF, h2 & 0xFF,\n (h3 >>> 24) & 0xFF, (h3 >>> 16) & 0xFF, (h3 >>> 8) & 0xFF, h3 & 0xFF,\n (h4 >>> 24) & 0xFF, (h4 >>> 16) & 0xFF, (h4 >>> 8) & 0xFF, h4 & 0xFF,\n (h5 >>> 24) & 0xFF, (h5 >>> 16) & 0xFF, (h5 >>> 8) & 0xFF, h5 & 0xFF,\n (h6 >>> 24) & 0xFF, (h6 >>> 16) & 0xFF, (h6 >>> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >>> 24) & 0xFF, (h7 >>> 16) & 0xFF, (h7 >>> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >>> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >>> 12));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >>> 18));\n bytes[index++] = (0x80 | ((code >>> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >>> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import sha256 from 'js-sha256';\nimport { jwtDecode } from 'jwt-decode';\n\n/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nif (typeof Promise === 'undefined') {\n throw Error('Keycloak requires an environment that supports Promises. Make sure that you include the appropriate polyfill.');\n}\n\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if ((scripts[i].src.indexOf('keycloak.js') !== -1 || scripts[i].src.indexOf('keycloak.min.js') !== -1) && scripts[i].src.indexOf('version=') !== -1) {\n kc.iframeVersion = scripts[i].src.substring(scripts[i].src.indexOf('version=') + 8).split('&')[0];\n }\n }\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n kc.init = function (initOptions) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (initOptions && adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (initOptions && typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (initOptions) {\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (typeof initOptions.pkceMethod !== \"undefined\") {\n if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n }\n\n kc.pkceMethod = initOptions.pkceMethod;\n } else {\n kc.pkceMethod = \"S256\";\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (initOptions.logoutMethod === 'POST') {\n kc.logoutMethod = 'POST';\n } else {\n kc.logoutMethod = 'GET';\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions && initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n };\n\n var checkSsoSilently = function() {\n var ifrm = document.createElement(\"iframe\");\n var src = kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n } else if (initOptions) {\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n } else {\n initPromise.setSuccess();\n }\n }\n\n function domReady() {\n var promise = createPromise();\n\n var checkReadyState = function () {\n if (document.readyState === 'interactive' || document.readyState === 'complete') {\n document.removeEventListener('readystatechange', checkReadyState);\n promise.setSuccess();\n }\n };\n document.addEventListener('readystatechange', checkReadyState);\n\n checkReadyState(); // just in case the event was already fired and we missed it (in case the init is done later than at the load time, i.e. it's done from code)\n\n return promise.promise;\n }\n\n configPromise.then(function () {\n domReady()\n .then(check3pCookiesSupported)\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n };\n\n kc.login = function (options) {\n return adapter.login(options);\n };\n\n function generateRandomData(len) {\n // use web crypto APIs if possible\n var array = null;\n var crypto = window.crypto || window.msCrypto;\n if (crypto && crypto.getRandomValues && window.Uint8Array) {\n array = new Uint8Array(len);\n crypto.getRandomValues(array);\n return array;\n }\n\n // fallback to Math random\n array = new Array(len);\n for (var j = 0; j < array.length; j++) {\n array[j] = Math.floor(256 * Math.random());\n }\n return array;\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n function generatePkceChallenge(pkceMethod, codeVerifier) {\n if (pkceMethod !== \"S256\") {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n\n return encodedHash;\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n };\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri),\n loginOptions: options\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && options.maxAge) {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n var codeVerifier = generateCodeVerifier(96);\n callbackState.pkceCodeVerifier = codeVerifier;\n var pkceChallenge = generatePkceChallenge(kc.pkceMethod, codeVerifier);\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n };\n\n kc.logout = function(options) {\n return adapter.logout(options);\n };\n\n kc.createLogoutUrl = function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === 'POST') {\n return kc.endpoints.logout();\n }\n\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n };\n\n kc.register = function (options) {\n return adapter.register(options);\n };\n\n kc.createRegisterUrl = function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return kc.createLoginUrl(options);\n };\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n };\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n };\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n };\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n\n return promise.promise;\n };\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n };\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(true);\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n };\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n };\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n };\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status']);\n }\n\n if (error) {\n if (prompt != 'none') {\n if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n kc.login(oauth.loginOptions);\n } else {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n }\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig(url) {\n var promise = createPromise();\n var configUrl;\n\n if (!config) {\n configUrl = 'keycloak.json';\n } else if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n thirdPartyCookiesIframe: function() {\n var src = getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n if (kc.iframeVersion) {\n src = src + '?version=' + kc.iframeVersion;\n }\n return src;\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n };\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n if (!config.clientId) {\n throw 'clientId missing';\n }\n\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n if (!config['url']) {\n var scripts = document.getElementsByTagName('script');\n for (var i = 0; i < scripts.length; i++) {\n if (scripts[i].src.match(/.*keycloak\\.js/)) {\n config.url = scripts[i].src.substr(0, scripts[i].src.indexOf('/js/keycloak.js'));\n break;\n }\n }\n }\n if (!config.realm) {\n throw 'realm missing';\n }\n\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = jwtDecode(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = jwtDecode(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = jwtDecode(token);\n kc.sessionId = kc.tokenParsed.sid;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n var hexDigits = '0123456789abcdef';\n var s = generateRandomString(36, hexDigits).split(\"\");\n s[14] = '4';\n s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);\n s[8] = s[13] = s[18] = s[23] = '-';\n var uuid = s.join('');\n return uuid;\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n oauth.loginOptions = oauthState.loginOptions;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n };\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n };\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if (loginIframe.enable || kc.silentCheckSsoRedirectUri) {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/docs/latest/securing_apps/#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: function(options) {\n window.location.assign(kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: async function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === \"GET\") {\n window.location.replace(kc.createLogoutUrl(options));\n return;\n }\n\n const logoutUrl = kc.createLogoutUrl(options);\n const response = await fetch(logoutUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\"\n },\n body: new URLSearchParams({\n id_token_hint: kc.idToken,\n client_id: kc.clientId,\n post_logout_redirect_uri: adapter.redirectUri(options, false)\n })\n });\n\n if (response.redirected) {\n window.location.href = response.url;\n return;\n }\n\n if (response.ok) {\n window.location.reload();\n return;\n }\n\n throw new Error(\"Logout failed, request returned an error code.\");\n },\n\n register: function(options) {\n window.location.assign(kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n };\n \n return {\n login: function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: function(options) {\n var promise = createPromise();\n var loginUrl = kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : function(options) {\n var promise = createPromise();\n var registerUrl = kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n function clearExpired() {\n var time = new Date().getTime();\n for (var i = 0; i < localStorage.length; i++) {\n var key = localStorage.key(i);\n if (key && key.indexOf('kc-callback-') == 0) {\n var value = localStorage.getItem(key);\n if (value) {\n try {\n var expires = JSON.parse(value).expires;\n if (!expires || expires < time) {\n localStorage.removeItem(key);\n }\n } catch (err) {\n localStorage.removeItem(key);\n }\n }\n }\n }\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = 'kc-callback-' + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearExpired();\n return value;\n };\n\n cs.add = function(state) {\n clearExpired();\n\n var key = 'kc-callback-' + state.state;\n state.expires = new Date().getTime() + (60 * 60 * 1000);\n localStorage.setItem(key, JSON.stringify(state));\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie('kc-callback-' + state);\n setCookie('kc-callback-' + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie('kc-callback-' + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n };\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\n// See: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\nfunction bytesToBase64(bytes) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}\n\nexport { Keycloak as default };\n","import Keycloak from 'keycloak-js';\nwindow.fwKeycloak = {\n createKeycloak: function (url, realm, clientId) {\n this.keycloak = new Keycloak({\n url: url,\n realm: realm,\n clientId: clientId,\n });\n },\n initKeycloak: function (redirectUri) {\n return this.keycloak?.init({\n onLoad: 'login-required',\n pkceMethod: 'S256',\n checkLoginIframe: false,\n redirectUri: redirectUri,\n scope: 'offline_access',\n });\n },\n handlePostLogin: function (loginSessionPath, redirectTo, membershipsDisabledRole, redirectToIfDisabled, authenticated) {\n if (authenticated) {\n fetch(loginSessionPath, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n accessToken: this.keycloak?.token,\n refreshToken: this.keycloak?.refreshToken,\n }),\n }).then((response) => {\n if (response.ok) {\n if (this.keycloak?.realmAccess?.roles.includes(membershipsDisabledRole)) {\n window.location.href = redirectToIfDisabled;\n }\n else {\n window.location.href = redirectTo;\n }\n }\n else {\n window.location.reload();\n }\n });\n }\n },\n logout: function (redirectTo) {\n document.dispatchEvent(new CustomEvent('wlaDidLogout'));\n this.keycloak?.logout({\n redirectUri: redirectTo,\n });\n },\n};\n"],"names":["ERROR","WINDOW","window","root","JS_SHA256_NO_WINDOW","WEB_WORKER","self","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","node","g","COMMON_JS","JS_SHA256_NO_COMMON_JS","module","exports","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","ArrayBuffer","HEX_CHARS","split","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","Array","isArray","obj","Object","prototype","toString","call","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","isView","buffer","constructor","createOutputMethod","outputType","is224","message","Sha256","update","createMethod","method","nodeWrap","create","i","length","type","bufferFrom","crypto","Buffer","algorithm","from","JS_SHA256_NO_BUFFER_FROM","createHash","digest","Error","Uint8Array","createHmacOutputMethod","key","HmacSha256","createHmacMethod","sharedMemory","this","h0","h1","h2","h3","h4","h5","h6","h7","block","start","bytes","hBytes","finalized","hashed","first","code","index","charCodeAt","array","oKeyPad","iKeyPad","b","inner","notString","lastByteIndex","hash","finalize","j","s0","s1","maj","t1","ab","da","cd","bc","a","c","d","e","f","h","chromeBugWorkAround","hex","arr","push","arrayBuffer","dataView","DataView","setUint32","innerHash","sha256","sha224","hmac","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","amdO","globalThis","Function","InvalidTokenError","jwtDecode","token","options","pos","header","part","decoded","str","output","replace","decodeURIComponent","atob","m","p","toUpperCase","b64DecodeUnicode","err","base64UrlDecode","JSON","parse","name","Promise","Keycloak","config","adapter","callbackStorage","kc","refreshQueue","loginIframe","enable","callbackList","interval","scripts","document","getElementsByTagName","src","indexOf","iframeVersion","substring","useNonce","logInfo","createLogger","console","info","logWarn","warn","generateRandomString","len","alphabet","randomData","msCrypto","getRandomValues","Math","floor","random","generateRandomData","chars","String","fromCharCode","apply","getRealmUrl","authServerUrl","charAt","encodeURIComponent","realm","processCallback","oauth","promise","error","prompt","timeLocal","Date","getTime","onActionUpdate","error_description","login","loginOptions","errorData","onAuthError","setError","setSuccess","flow","access_token","id_token","authSuccess","params","url","endpoints","req","XMLHttpRequest","open","setRequestHeader","clientId","redirectUri","pkceCodeVerifier","withCredentials","onreadystatechange","readyState","status","tokenResponse","responseText","scheduleCheckIframe","send","accessToken","refreshToken","idToken","fulfillPromise","setToken","idTokenParsed","nonce","storedNonce","clearToken","onAuthSuccess","fileLoaded","xhr","responseURL","startsWith","tokenTimeoutHandle","clearTimeout","refreshTokenParsed","tokenParsed","sessionId","sid","authenticated","subject","sub","realmAccess","realm_access","resourceAccess","resource_access","timeSkew","iat","onTokenExpired","expiresIn","round","setTimeout","createUUID","hexDigits","s","substr","join","parseCallback","supportedParams","newUrl","parsed","queryIndex","fragmentIndex","responseMode","parseCallbackParams","paramsString","oauthParams","state","parseCallbackUrl","oauthState","get","valid","result","slice","createPromise","resolve","reject","setupCheckLoginIframe","iframe","createElement","onload","authUrl","authorize","iframeOrigin","location","origin","protocol","hostname","port","checkSessionIframe","setAttribute","style","display","body","appendChild","addEventListener","event","contentWindow","source","data","callbacks","splice","checkLoginIframe","then","unchanged","msg","postMessage","check3pCookiesSupported","silentCheckSsoRedirectUri","thirdPartyCookiesIframe","messageCallback","silentCheckSsoFallback","removeChild","removeEventListener","timeout","timeoutHandle","timeoutPromise","race","finally","applyTimeoutToPromise","messageReceiveTimeout","loadAdapter","assign","createLoginUrl","logout","async","logoutMethod","createLogoutUrl","logoutUrl","response","fetch","headers","URLSearchParams","id_token_hint","client_id","post_logout_redirect_uri","redirected","href","ok","reload","register","createRegisterUrl","accountManagement","accountUrl","createAccountUrl","encodeHash","cordovaOpenWindowWrapper","loginUrl","target","cordova","InAppBrowser","createCordovaOptions","userOptions","cordovaOptions","keys","reduce","optionName","shallowCloneCordovaOptions","hidden","formatCordovaOptions","getCordovaRedirectUri","ref","completed","closed","closeBrowser","close","reason","registerUrl","universalLinks","subscribe","unsubscribe","plugins","browsertab","openUrl","init","initOptions","didInitialize","LocalStorage","CookieStorage","createCallbackStorage","Cordova","checkLoginIframeInterval","onLoad","loginRequired","responseType","pkceMethod","TypeError","enableLogging","scope","acrValues","initPromise","onReady","catch","configPromise","configUrl","setupOidcEndoints","oidcConfiguration","authorization_endpoint","token_endpoint","end_session_endpoint","check_session_iframe","userinfo","userinfo_endpoint","oidcProvider","oidcProviderConfigUrl","match","loadConfig","doLogin","locale","checkSsoSilently","ifrm","processInit","callback","history","replaceState","updateToken","checkReadyState","domReady","baseUrl","callbackState","action","claims","maxAge","loginHint","idpHint","acr","claimsParameter","stringify","codeVerifier","binString","fromCodePoint","btoa","bytesToBase64","generatePkceChallenge","add","hasRealmRole","role","access","roles","hasResourceRole","resource","loadUserProfile","profile","loadUserInfo","userInfo","isTokenExpired","minValidity","ceil","isNaN","exec","onAuthRefreshSuccess","pop","onAuthRefreshError","onAuthLogout","clearExpired","time","localStorage","value","getItem","expires","removeItem","setItem","cs","getCookie","setCookie","cookieExpiration","minutes","exp","setTime","ca","cookie","expirationDate","toUTCString","fn","arguments","fwKeycloak","createKeycloak","keycloak","initKeycloak","handlePostLogin","loginSessionPath","redirectTo","membershipsDisabledRole","redirectToIfDisabled","includes","dispatchEvent","CustomEvent"],"sourceRoot":""}