dash-button-web 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"file":"dash-button.entry.cjs.js","mappings":"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,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,E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","names":["global","require$$0","base64","h"],"sources":["node_modules/base64-js/index.js","node_modules/js-sha256/src/sha256.js","node_modules/jwt-decode/build/esm/index.js","node_modules/keycloak-js/dist/keycloak.mjs","src/components/my-component/dash-button.css?tag=dash-button&encapsulation=shadow","src/components/my-component/dash-button.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.10.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\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\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\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\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","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 base64 from 'base64-js';\nimport 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 (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\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 switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n var encodedHash = base64.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\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 };\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 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 var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\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.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\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.session_state;\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 }\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 || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\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: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\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\nexport { Keycloak as default };\n",".button {\n\tdisplay: flex;\n\theight: 50px;\n\tpadding: 0;\n\tbackground: #3e7671;\n\tborder: none;\n\toutline: none;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tcursor: pointer;\n min-width: 220px;\n max-width: 220px;\n}\n\n.button:hover {\n\tbackground: #008168;\n}\n\n.button:active {\n\tbackground: #3e7671;\n}\n\n.button-text{\n\tdisplay: block;\n\tmargin: auto;\n\tpadding: 0 24px;\n\tcolor: #fff;\n text-overflow: ellipsis;\n overflow:hidden;\n white-space:nowrap;\n width: 80px;\n}\n\n.button-icon {\n margin: auto;\n padding: 10px; \n}\n\n.button-profile {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tcolor: #fff;\n}\n\n.button-profile img {\n\theight: 50px;\n}\n\n.button-text-full-width {\n width: auto!important;\n}\n\n.button-link {\n text-decoration: none!important;\n}\n\n/* Menu icon */\n.gg-menu-grid-r {\n color: #fff;\n box-sizing: border-box;\n position: relative;\n display: block;\n transform: scale(var(--ggs,1));\n width: 16px;\n height: 16px;\n}\n \n.gg-menu-grid-r::before {\n content: \"\";\n display: block;\n box-sizing: border-box;\n position: absolute;\n width: 4px;\n height: 4px;\n background: currentColor;\n box-shadow:\n 0 6px 0,\n 6px 6px 0,\n 12px 6px 0,\n 6px 12px 0,\n 12px 12px 0,\n 6px 0 0,\n 12px 0 0,\n 0 12px 0;\n} \n\n/* Drop down section */\n.dropdown {\n position: relative;\n display: inline-block;\n}\n \n.dropdown-content {\n display: none;\n position: absolute;\n right: 0;\n background-color: #f9f9f9;\n min-width: 180px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n border-radius: 5px;\n}\n \n.dropdown-content a {\n color: #71797E;\n padding: 16px 20px;\n text-decoration: none;\n display: block;\n cursor: pointer;\n}\n \n.dropdown-content a:hover {\n background-color: #f1f1f1;\n color: #000;\n opacity: 0.7;\n}\n\n.dropdown:hover .dropdown-content {\n display: block;\n}\n\n\n/* Modal Content */\n.modal {\n display: none;\n position: fixed;\n z-index: 1;\n padding-top: 100px;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgb(0,0,0);\n background-color: rgba(0,0,0,0.4);\n text-align: center;\n }\n \n\n .modal-content {\n background-color: #fefefe;\n margin: auto;\n padding: 20px;\n border: 1px solid #888;\n width: 40%;\n }\n\n .modal-body {\n max-height: 50vh;\n overflow-y: auto;\n }\n \n .close {\n color: #aaaaaa;\n float: right;\n font-size: 28px;\n font-weight: bold;\n }\n \n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n }\n\n .modal-app {\n background-color: #c3e9bc;\n padding: 15px;\n margin: 10px;\n border-radius: 5px;\n }\n\n .external-app-link {\n text-decoration:none; \n color: #000;\n }\n\n .gray-text {\n color: #606060;\n }\n\n .green-text {\n color: #3e7671;\n }\n\n #countdown {\n position: relative;\n margin: auto;\n margin-top: 30px;\n height: 40px;\n width: 40px;\n text-align: center;\n }\n \n #countdown-number {\n color: #2e2e2e;\n display: inline-block;\n line-height: 40px;\n }\n \n svg {\n position: absolute;\n top: 0;\n right: 0;\n width: 40px;\n height: 40px;\n transform: rotateY(-180deg) rotateZ(-90deg);\n }\n \n svg circle {\n stroke-dasharray: 113px;\n stroke-dashoffset: 0px;\n stroke-linecap: round;\n stroke-width: 4px;\n stroke: #008168;\n fill: none;\n animation: countdown 6s linear infinite forwards;\n }\n \n @keyframes countdown {\n from {\n stroke-dashoffset: 0px;\n }\n to {\n stroke-dashoffset: 113px;\n }\n }\n\n .lds-ring {\n color: #fff\n }\n .lds-ring {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n position: relative;\n }\n .lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 30px;\n height: 30px;\n margin: 3px;\n border: 3px solid currentColor;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n .lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n }\n .lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n }\n .lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }","import { Component, Prop, State, h, Element } from '@stencil/core';\nimport Keycloak from \"keycloak-js\";\n\n\n@Component({\n tag: 'dash-button',\n styleUrl: 'dash-button.css',\n shadow: true,\n})\nexport class DashButtonComponent {\n\n @Element() el;\n \n @Prop() showPostLoginText: boolean = false;\n @Prop() silentCheckSso: boolean = false;\n @Prop() redirectUri: string;\n @Prop() authMethod: string = \"check-sso\";\n\n @Prop() keycloakUri: string = \"http://localhost:8080\";\n @Prop() realm: string = \"\";\n @Prop() clientId: string = \"\";\n\n @Prop() appId: string = \"\";\n @Prop() portalUrl: string = \"\";\n @Prop() marketplaceUrl: string = \"https://marketplace-zdzw.cloud.zdzw-project.com\";\n @Prop() plmUrl: string = \"https://productlicensemanager-zdzw.cloud.zdzw-project.com\";\n @Prop() showUnauthorizedModal: boolean = false;\n @Prop() postTextDelayDuration: number;\n\n @State() keycloak: any = new Keycloak({\n url: this.keycloakUri,\n realm: this.realm,\n clientId: this.clientId,\n });;\n\n @State() isAuth = false;\n @State() givenName: string = \"\";\n @State() silentCheckSsoRedirectUri: string = window.location.origin + '/assets/verificar-sso.html';\n\n @State() appList = []\n\n @State() showPostLoginLoadingSpinner = false;\n\n componentWillLoad() {\n //\n // User set post-text-delay-duration for displaying loading spinner\n //\n if(this.postTextDelayDuration > 0) {\n // Show loading spinner\n this.showPostLoginLoadingSpinner = true\n // Removing a loading spinner after the delay period ending\n setTimeout(() => {\n this.showPostLoginLoadingSpinner = false\n }, this.postTextDelayDuration);\n }\n\n //\n // Init Keycloak\n //\n this.initKeycloak().then(() => {\n // Check if the user is authenticated\n if(this.isAuth) {\n const _token = JSON.parse(localStorage.getItem('keycloak')).token\n \n this.getAppList(_token).then(res => {\n this.appList = res\n\n // If the user has set an app ID, check if they have permission to access\n if(this.appId) {\n \n // Retrieve the list of buttons that are configured to set the app ID\n const appIdList = this.appId.replace(/'/g, '').split(',');\n // Remote appID list parsed from object\n const tempAppList = this.appList.map(obj => obj['shortname'])\n\n // Check if the user has permission to access the selected application\n if(appIdList.filter(id => tempAppList.includes(id)).length == 0) {\n // Update local storage app permission\n localStorage.setItem(\"ZDZW_app_permission\", JSON.stringify(false));\n\n // Show modal\n const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');\n appErrorModal.style.display = \"block\";\n\n // If a redirect URL is provided, show the loading spinner\n if (this.portalUrl && this.showUnauthorizedModal) {\n var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');\n var countdown = 6;\n\n countdownNumberEl.textContent = countdown.toString();\n\n setInterval(() => {\n countdown = --countdown <= 0 ? 6 : countdown;\n countdownNumberEl.textContent = countdown.toString();\n\n // Once the countdown finishes, redirect to the provided URL\n if(countdown == 1) {\n // appErrorModal.style.display = \"none\";\n window.location.replace(this.portalUrl.toString());\n }\n }, 1000);\n }\n } else {\n // The user is authenticated and has the necessary permissions\n // Update local storage app permission\n localStorage.setItem(\"ZDZW_app_permission\", JSON.stringify(true));\n }\n }\n\n })\n }\n })\n }\n\n async initKeycloak() {\n // Remove the initiation time permission localstorage object\n localStorage.removeItem(\"ZDZW_app_permission\");\n\n await this.keycloak.init(\n {\n onLoad: this.authMethod,\n checkLoginIframe: false,\n silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',\n }).then(res => {\n if(res) {\n this.isAuth = true\n localStorage.setItem(\"keycloak\", JSON.stringify(this.keycloak));\n document.cookie = \"ZDZW_cookie=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n\n this.givenName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.given_name\n } \n });\n }\n\n async getAppList(token) {\n // const token = await JSON.parse(localStorage.getItem('keycloak')).token;\n // const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName', {\n // headers: new Headers({\n // 'Authorization': 'Bearer ' + token,\n // }),\n // })\n\n const response = await fetch(this.plmUrl + '/api/v1/product/nameAndShortNameOrg', {\n headers: new Headers({\n 'Authorization': 'Bearer ' + token,\n }),\n })\n const jsonObj = await response.json()\n return jsonObj\n }\n\n login() { \n this.keycloak.login() \n }\n\n logout() {\n localStorage.removeItem(\"keycloak\");\n document.cookie = \"ZDZW_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n this.keycloak.logout() \n } \n\n showModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"block\";\n }\n\n closeModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"none\";\n }\n\n render() {\n return <div>\n <div>\n {\n (() => {\n if(this.isAuth && this.showPostLoginText) {\n // User set post-text-delay-duration for displaying loading spinner\n if(this.showPostLoginLoadingSpinner) {\n return (\n <a id=\"login-btn\" class=\"button button-link\">\n <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n </a>\n )\n } else {\n return (\n <a href={this.redirectUri} id=\"login-btn\" class=\"button button-link\">\n <span class=\"button-text button-text-full-width\">Go to Dashboard</span>\n </a>\n )\n }\n \n } else if (this.isAuth) {\n return (\n <div id=\"profile-btn\" class=\"dropdown\">\n <button type=\"button\" class=\"button\">\n <span class=\"button-profile\">\n <img src=\"https://i.pravatar.cc/100?img=32\" alt=\"\"/>\n </span>\n <span id=\"given-name\" class=\"button-text\">{this.givenName}</span>\n <div class=\"button-icon\">\n <span class=\"gg-menu-grid-r\"></span>\n </div>\n </button>\n <div class=\"dropdown-content\">\n <a onClick={this.showModal.bind(this)} id=\"applications-btn\">Applications</a>\n <a href={this.portalUrl} target='_blank' id=\"applications-btn\">Portal</a>\n <a href={this.marketplaceUrl} target='_blank' id=\"applications-btn\">Marketplace</a>\n <a onClick={this.logout.bind(this)} id=\"logout-btn\">Logout</a>\n </div>\n </div>\n )\n } else {\n return (\n <button onClick={this.login.bind(this)} id=\"login-btn\" type=\"button\" class=\"button\">\n <span class=\"button-text\">Login</span>\n </button>\n )\n }\n })() \n } \n </div>\n \n <div id=\"appListModal\" class=\"modal\">\n \n <div class=\"modal-content\">\n <span onClick={this.closeModal.bind(this)} class=\"close\">&times;</span>\n <h3>Applications</h3>\n <div class=\"modal-body\">\n {this.appList.length > 0 ? this.appList.map( app => {\n return (\n <a class=\"external-app-link\" target='_blank' href={\"https://\" + app.shortname + \"-zdzw\"+ this.portalUrl.replace(/(^\\w+:|^)\\/\\//, '').replace('portal-frontend-zdzw','')}>\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n );\n }) : <div><h3 class=\"gray-text\">Not installed application found.</h3> <p class=\"gray-text\">Please contact administration.</p></div>}\n </div>\n </div>\n \n </div>\n\n <div id=\"appPermissionErrorModal\" class=\"modal\">\n <div class=\"modal-content\">\n <img src=\"data:image/png;base64,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\"/>\n <h2 class=\"green-text margin-b\">You don't have permission to access this application.</h2>\n <h3 class=\"green-text\">Please contact the administration.</h3>\n \n {(this.portalUrl && this.showUnauthorizedModal) ? \n <div>\n <h4 class=\"gray-text\">You will be automatically redirected to the portal.</h4>\n <div id=\"countdown\">\n <div id=\"countdown-number\"></div>\n <svg>\n <circle r=\"18\" cx=\"20\" cy=\"20\"></circle>\n </svg>\n </div>\n </div>\n : <div></div>\n }\n </div>\n </div>\n\n </div>;\n }\n}\n"],"version":3}
1
+ {"file":"dash-button.entry.cjs.js","mappings":"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,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;AAChE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACjE,MAAM,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,E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","names":["global","require$$0","base64","this$1","toSvg","h"],"sources":["node_modules/base64-js/index.js","node_modules/js-sha256/src/sha256.js","node_modules/jwt-decode/build/esm/index.js","node_modules/keycloak-js/dist/keycloak.mjs","node_modules/jdenticon/dist/jdenticon-module.js","src/components/my-component/dash-button.css?tag=dash-button&encapsulation=shadow","src/components/my-component/dash-button.tsx"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.10.1\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2023\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\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\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\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","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 base64 from 'base64-js';\nimport 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 (initOptions.pkceMethod) {\n if (initOptions.pkceMethod !== \"S256\") {\n throw 'Invalid value for pkceMethod';\n }\n kc.pkceMethod = initOptions.pkceMethod;\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\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 switch (pkceMethod) {\n // The use of the \"plain\" method is considered insecure and therefore not supported.\n case \"S256\":\n // hash codeVerifier, then encode as url-safe base64 without padding\n var hashBytes = new Uint8Array(sha256.arrayBuffer(codeVerifier));\n var encodedHash = base64.fromByteArray(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n return encodedHash;\n default:\n throw 'Invalid value for pkceMethod';\n }\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 };\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 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 var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\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.tokenParsed && kc.tokenParsed.nonce != oauth.storedNonce) ||\n (kc.refreshTokenParsed && kc.refreshTokenParsed.nonce != oauth.storedNonce) ||\n (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce))) {\n\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.session_state;\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 }\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 || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\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: function(options) {\n window.location.replace(kc.createLogoutUrl(options));\n return createPromise().promise;\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\nexport { Keycloak as default };\n","/**\r\n * Jdenticon 3.3.0\r\n * http://jdenticon.com\r\n *\r\n * Built: 2024-05-10T09:48:41.921Z\r\n * \r\n * MIT License\r\n * \r\n * Copyright (c) 2014-2024 Daniel Mester Pirttijärvi\r\n * \r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in all\r\n * copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\n * SOFTWARE.\r\n */\r\n\r\n'use strict';\n\n/**\r\n * Parses a substring of the hash as a number.\r\n * @param {number} startPosition \r\n * @param {number=} octets\r\n */\r\nfunction parseHex(hash, startPosition, octets) {\r\n return parseInt(hash.substr(startPosition, octets), 16);\r\n}\n\nfunction decToHex(v) {\r\n v |= 0; // Ensure integer value\r\n return v < 0 ? \"00\" :\r\n v < 16 ? \"0\" + v.toString(16) :\r\n v < 256 ? v.toString(16) :\r\n \"ff\";\r\n}\r\n\r\nfunction hueToRgb(m1, m2, h) {\r\n h = h < 0 ? h + 6 : h > 6 ? h - 6 : h;\r\n return decToHex(255 * (\r\n h < 1 ? m1 + (m2 - m1) * h :\r\n h < 3 ? m2 :\r\n h < 4 ? m1 + (m2 - m1) * (4 - h) :\r\n m1));\r\n}\r\n\r\n/**\r\n * @param {string} color Color value to parse. Currently hexadecimal strings on the format #rgb[a] and #rrggbb[aa] are supported.\r\n * @returns {string}\r\n */\r\nfunction parseColor(color) {\r\n if (/^#[0-9a-f]{3,8}$/i.test(color)) {\r\n var result;\r\n var colorLength = color.length;\r\n\r\n if (colorLength < 6) {\r\n var r = color[1],\r\n g = color[2],\r\n b = color[3],\r\n a = color[4] || \"\";\r\n result = \"#\" + r + r + g + g + b + b + a + a;\r\n }\r\n if (colorLength == 7 || colorLength > 8) {\r\n result = color;\r\n }\r\n \r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Converts a hexadecimal color to a CSS3 compatible color.\r\n * @param {string} hexColor Color on the format \"#RRGGBB\" or \"#RRGGBBAA\"\r\n * @returns {string}\r\n */\r\nfunction toCss3Color(hexColor) {\r\n var a = parseHex(hexColor, 7, 2);\r\n var result;\r\n\r\n if (isNaN(a)) {\r\n result = hexColor;\r\n } else {\r\n var r = parseHex(hexColor, 1, 2),\r\n g = parseHex(hexColor, 3, 2),\r\n b = parseHex(hexColor, 5, 2);\r\n result = \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + (a / 255).toFixed(2) + \")\";\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color.\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction hsl(hue, saturation, lightness) {\r\n // Based on http://www.w3.org/TR/2011/REC-css3-color-20110607/#hsl-color\r\n var result;\r\n\r\n if (saturation == 0) {\r\n var partialHex = decToHex(lightness * 255);\r\n result = partialHex + partialHex + partialHex;\r\n }\r\n else {\r\n var m2 = lightness <= 0.5 ? lightness * (saturation + 1) : lightness + saturation - lightness * saturation,\r\n m1 = lightness * 2 - m2;\r\n result =\r\n hueToRgb(m1, m2, hue * 6 + 2) +\r\n hueToRgb(m1, m2, hue * 6) +\r\n hueToRgb(m1, m2, hue * 6 - 2);\r\n }\r\n\r\n return \"#\" + result;\r\n}\r\n\r\n/**\r\n * Converts an HSL color to a hexadecimal RGB color. This function will correct the lightness for the \"dark\" hues\r\n * @param {number} hue Hue in range [0, 1]\r\n * @param {number} saturation Saturation in range [0, 1]\r\n * @param {number} lightness Lightness in range [0, 1]\r\n * @returns {string}\r\n */\r\nfunction correctedHsl(hue, saturation, lightness) {\r\n // The corrector specifies the perceived middle lightness for each hue\r\n var correctors = [ 0.55, 0.5, 0.5, 0.46, 0.6, 0.55, 0.55 ],\r\n corrector = correctors[(hue * 6 + 0.5) | 0];\r\n \r\n // Adjust the input lightness relative to the corrector\r\n lightness = lightness < 0.5 ? lightness * corrector * 2 : corrector + (lightness - 0.5) * (1 - corrector) * 2;\r\n \r\n return hsl(hue, saturation, lightness);\r\n}\n\n// In the future we can replace `GLOBAL` with `globalThis`, but for now use the old school global detection for\r\n// backward compatibility.\r\n\r\nvar GLOBAL = \r\n typeof window !== \"undefined\" ? window :\r\n typeof self !== \"undefined\" ? self :\r\n typeof global !== \"undefined\" ? global :\r\n {};\n\n/**\r\n * @typedef {Object} ParsedConfiguration\r\n * @property {number} colorSaturation\r\n * @property {number} grayscaleSaturation\r\n * @property {string} backColor\r\n * @property {number} iconPadding\r\n * @property {function(number):number} hue\r\n * @property {function(number):number} colorLightness\r\n * @property {function(number):number} grayscaleLightness\r\n */\r\n\r\nvar CONFIG_PROPERTIES = {\r\n W/*GLOBAL*/: \"jdenticon_config\",\r\n n/*MODULE*/: \"config\",\r\n};\r\n\r\nvar rootConfigurationHolder = {};\r\n\r\n/**\r\n * Defines the deprecated `config` property on the root Jdenticon object without printing a warning in the console\r\n * when it is being used.\r\n * @param {!Object} rootObject \r\n */\r\nfunction defineConfigProperty(rootObject) {\r\n rootConfigurationHolder = rootObject;\r\n}\r\n\r\n/**\r\n * Sets a new icon style configuration. The new configuration is not merged with the previous one. * \r\n * @param {Object} newConfiguration - New configuration object.\r\n */\r\nfunction configure(newConfiguration) {\r\n if (arguments.length) {\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] = newConfiguration;\r\n }\r\n return rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/];\r\n}\r\n\r\n/**\r\n * Gets the normalized current Jdenticon color configuration. Missing fields have default values.\r\n * @param {Object|number|undefined} paddingOrLocalConfig - Configuration passed to the called API method. A\r\n * local configuration overrides the global configuration in it entirety. This parameter can for backward\r\n * compatibility also contain a padding value. A padding value only overrides the global padding, not the\r\n * entire global configuration.\r\n * @param {number} defaultPadding - Padding used if no padding is specified in neither the configuration nor\r\n * explicitly to the API method.\r\n * @returns {ParsedConfiguration}\r\n */\r\nfunction getConfiguration(paddingOrLocalConfig, defaultPadding) {\r\n var configObject = \r\n typeof paddingOrLocalConfig == \"object\" && paddingOrLocalConfig ||\r\n rootConfigurationHolder[CONFIG_PROPERTIES.n/*MODULE*/] ||\r\n GLOBAL[CONFIG_PROPERTIES.W/*GLOBAL*/] ||\r\n { },\r\n\r\n lightnessConfig = configObject[\"lightness\"] || { },\r\n \r\n // In versions < 2.1.0 there was no grayscale saturation -\r\n // saturation was the color saturation.\r\n saturation = configObject[\"saturation\"] || { },\r\n colorSaturation = \"color\" in saturation ? saturation[\"color\"] : saturation,\r\n grayscaleSaturation = saturation[\"grayscale\"],\r\n\r\n backColor = configObject[\"backColor\"],\r\n padding = configObject[\"padding\"];\r\n \r\n /**\r\n * Creates a lightness range.\r\n */\r\n function lightness(configName, defaultRange) {\r\n var range = lightnessConfig[configName];\r\n \r\n // Check if the lightness range is an array-like object. This way we ensure the\r\n // array contain two values at the same time.\r\n if (!(range && range.length > 1)) {\r\n range = defaultRange;\r\n }\r\n\r\n /**\r\n * Gets a lightness relative the specified value in the specified lightness range.\r\n */\r\n return function (value) {\r\n value = range[0] + value * (range[1] - range[0]);\r\n return value < 0 ? 0 : value > 1 ? 1 : value;\r\n };\r\n }\r\n\r\n /**\r\n * Gets a hue allowed by the configured hue restriction,\r\n * provided the originally computed hue.\r\n */\r\n function hueFunction(originalHue) {\r\n var hueConfig = configObject[\"hues\"];\r\n var hue;\r\n \r\n // Check if 'hues' is an array-like object. This way we also ensure that\r\n // the array is not empty, which would mean no hue restriction.\r\n if (hueConfig && hueConfig.length > 0) {\r\n // originalHue is in the range [0, 1]\r\n // Multiply with 0.999 to change the range to [0, 1) and then truncate the index.\r\n hue = hueConfig[0 | (0.999 * originalHue * hueConfig.length)];\r\n }\r\n\r\n return typeof hue == \"number\" ?\r\n \r\n // A hue was specified. We need to convert the hue from\r\n // degrees on any turn - e.g. 746° is a perfectly valid hue -\r\n // to turns in the range [0, 1).\r\n ((((hue / 360) % 1) + 1) % 1) :\r\n\r\n // No hue configured => use original hue\r\n originalHue;\r\n }\r\n \r\n return {\r\n X/*hue*/: hueFunction,\r\n o/*colorSaturation*/: typeof colorSaturation == \"number\" ? colorSaturation : 0.5,\r\n F/*grayscaleSaturation*/: typeof grayscaleSaturation == \"number\" ? grayscaleSaturation : 0,\r\n p/*colorLightness*/: lightness(\"color\", [0.4, 0.8]),\r\n G/*grayscaleLightness*/: lightness(\"grayscale\", [0.3, 0.9]),\r\n H/*backColor*/: parseColor(backColor),\r\n Y/*iconPadding*/: \r\n typeof paddingOrLocalConfig == \"number\" ? paddingOrLocalConfig : \r\n typeof padding == \"number\" ? padding : \r\n defaultPadding\r\n }\r\n}\n\n/**\r\n * Represents a point.\r\n */\r\nfunction Point(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n}\n\n/**\r\n * Translates and rotates a point before being passed on to the canvas context. This was previously done by the canvas context itself, \r\n * but this caused a rendering issue in Chrome on sizes > 256 where the rotation transformation of inverted paths was not done properly.\r\n */\r\nfunction Transform(x, y, size, rotation) {\r\n this.q/*_x*/ = x;\r\n this.t/*_y*/ = y;\r\n this.I/*_size*/ = size;\r\n this.Z/*_rotation*/ = rotation;\r\n}\r\n\r\n/**\r\n * Transforms the specified point based on the translation and rotation specification for this Transform.\r\n * @param {number} x x-coordinate\r\n * @param {number} y y-coordinate\r\n * @param {number=} w The width of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n * @param {number=} h The height of the transformed rectangle. If greater than 0, this will ensure the returned point is of the upper left corner of the transformed rectangle.\r\n */\r\nTransform.prototype.J/*transformIconPoint*/ = function transformIconPoint (x, y, w, h) {\r\n var right = this.q/*_x*/ + this.I/*_size*/,\r\n bottom = this.t/*_y*/ + this.I/*_size*/,\r\n rotation = this.Z/*_rotation*/;\r\n return rotation === 1 ? new Point(right - y - (h || 0), this.t/*_y*/ + x) :\r\n rotation === 2 ? new Point(right - x - (w || 0), bottom - y - (h || 0)) :\r\n rotation === 3 ? new Point(this.q/*_x*/ + y, bottom - x - (w || 0)) :\r\n new Point(this.q/*_x*/ + x, this.t/*_y*/ + y);\r\n};\r\n\r\nvar NO_TRANSFORM = new Transform(0, 0, 0, 0);\n\n\r\n\r\n/**\r\n * Provides helper functions for rendering common basic shapes.\r\n */\r\nfunction Graphics(renderer) {\r\n /**\r\n * @type {Renderer}\r\n * @private\r\n */\r\n this.K/*_renderer*/ = renderer;\r\n\r\n /**\r\n * @type {Transform}\r\n */\r\n this.u/*currentTransform*/ = NO_TRANSFORM;\r\n}\r\nvar Graphics__prototype = Graphics.prototype;\r\n\r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * @param {Array<number>} points The points of the polygon clockwise on the format [ x0, y0, x1, y1, ..., xn, yn ]\r\n * @param {boolean=} invert Specifies if the polygon will be inverted.\r\n */\r\nGraphics__prototype.g/*addPolygon*/ = function addPolygon (points, invert) {\n var this$1 = this;\n\r\n var di = invert ? -2 : 2,\r\n transformedPoints = [];\r\n \r\n for (var i = invert ? points.length - 2 : 0; i < points.length && i >= 0; i += di) {\r\n transformedPoints.push(this$1.u/*currentTransform*/.J/*transformIconPoint*/(points[i], points[i + 1]));\r\n }\r\n \r\n this.K/*_renderer*/.g/*addPolygon*/(transformedPoints);\r\n};\r\n \r\n/**\r\n * Adds a polygon to the underlying renderer.\r\n * Source: http://stackoverflow.com/a/2173084\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the entire ellipse.\r\n * @param {number} size The size of the ellipse.\r\n * @param {boolean=} invert Specifies if the ellipse will be inverted.\r\n */\r\nGraphics__prototype.h/*addCircle*/ = function addCircle (x, y, size, invert) {\r\n var p = this.u/*currentTransform*/.J/*transformIconPoint*/(x, y, size, size);\r\n this.K/*_renderer*/.h/*addCircle*/(p, size, invert);\r\n};\r\n\r\n/**\r\n * Adds a rectangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle.\r\n * @param {number} w The width of the rectangle.\r\n * @param {number} h The height of the rectangle.\r\n * @param {boolean=} invert Specifies if the rectangle will be inverted.\r\n */\r\nGraphics__prototype.i/*addRectangle*/ = function addRectangle (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x, y, \r\n x + w, y,\r\n x + w, y + h,\r\n x, y + h\r\n ], invert);\r\n};\r\n\r\n/**\r\n * Adds a right triangle to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the triangle.\r\n * @param {number} w The width of the triangle.\r\n * @param {number} h The height of the triangle.\r\n * @param {number} r The rotation of the triangle (clockwise). 0 = right corner of the triangle in the lower left corner of the bounding rectangle.\r\n * @param {boolean=} invert Specifies if the triangle will be inverted.\r\n */\r\nGraphics__prototype.j/*addTriangle*/ = function addTriangle (x, y, w, h, r, invert) {\r\n var points = [\r\n x + w, y, \r\n x + w, y + h, \r\n x, y + h,\r\n x, y\r\n ];\r\n points.splice(((r || 0) % 4) * 2, 2);\r\n this.g/*addPolygon*/(points, invert);\r\n};\r\n\r\n/**\r\n * Adds a rhombus to the underlying renderer.\r\n * @param {number} x The x-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} y The y-coordinate of the upper left corner of the rectangle holding the rhombus.\r\n * @param {number} w The width of the rhombus.\r\n * @param {number} h The height of the rhombus.\r\n * @param {boolean=} invert Specifies if the rhombus will be inverted.\r\n */\r\nGraphics__prototype.L/*addRhombus*/ = function addRhombus (x, y, w, h, invert) {\r\n this.g/*addPolygon*/([\r\n x + w / 2, y,\r\n x + w, y + h / 2,\r\n x + w / 2, y + h,\r\n x, y + h / 2\r\n ], invert);\r\n};\n\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n * @param {number} positionIndex\r\n */\r\nfunction centerShape(index, g, cell, positionIndex) {\r\n index = index % 14;\r\n\r\n var k, m, w, h, inner, outer;\r\n\r\n !index ? (\r\n k = cell * 0.42,\r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell - k * 2,\r\n cell - k, cell,\r\n 0, cell\r\n ])) :\r\n\r\n index == 1 ? (\r\n w = 0 | (cell * 0.5), \r\n h = 0 | (cell * 0.8),\r\n\r\n g.j/*addTriangle*/(cell - w, 0, w, h, 2)) :\r\n\r\n index == 2 ? (\r\n w = 0 | (cell / 3),\r\n g.i/*addRectangle*/(w, w, cell - w, cell - w)) :\r\n\r\n index == 3 ? (\r\n inner = cell * 0.1,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 6 ? 1 :\r\n cell < 8 ? 2 :\r\n (0 | (cell * 0.25)),\r\n \r\n inner = \r\n inner > 1 ? (0 | inner) : // large icon => truncate decimals\r\n inner > 0.5 ? 1 : // medium size icon => fixed width\r\n inner, // small icon => anti-aliased border\r\n\r\n g.i/*addRectangle*/(outer, outer, cell - inner - outer, cell - inner - outer)) :\r\n\r\n index == 4 ? (\r\n m = 0 | (cell * 0.15),\r\n w = 0 | (cell * 0.5),\r\n g.h/*addCircle*/(cell - w - m, cell - w - m, w)) :\r\n\r\n index == 5 ? (\r\n inner = cell * 0.1,\r\n outer = inner * 4,\r\n\r\n // Align edge to nearest pixel in large icons\r\n outer > 3 && (outer = 0 | outer),\r\n \r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.g/*addPolygon*/([\r\n outer, outer,\r\n cell - inner, outer,\r\n outer + (cell - outer - inner) / 2, cell - inner\r\n ], true)) :\r\n\r\n index == 6 ? \r\n g.g/*addPolygon*/([\r\n 0, 0,\r\n cell, 0,\r\n cell, cell * 0.7,\r\n cell * 0.4, cell * 0.4,\r\n cell * 0.7, cell,\r\n 0, cell\r\n ]) :\r\n\r\n index == 7 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 8 ? (\r\n g.i/*addRectangle*/(0, 0, cell, cell / 2),\r\n g.i/*addRectangle*/(0, cell / 2, cell / 2, cell / 2),\r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 1)) :\r\n\r\n index == 9 ? (\r\n inner = cell * 0.14,\r\n // Use fixed outer border widths in small icons to ensure the border is drawn\r\n outer = \r\n cell < 4 ? 1 :\r\n cell < 6 ? 2 :\r\n (0 | (cell * 0.35)),\r\n\r\n inner = \r\n cell < 8 ? inner : // small icon => anti-aliased border\r\n (0 | inner), // large icon => truncate decimals\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.i/*addRectangle*/(outer, outer, cell - outer - inner, cell - outer - inner, true)) :\r\n\r\n index == 10 ? (\r\n inner = cell * 0.12,\r\n outer = inner * 3,\r\n\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.h/*addCircle*/(outer, outer, cell - inner - outer, true)) :\r\n\r\n index == 11 ? \r\n g.j/*addTriangle*/(cell / 2, cell / 2, cell / 2, cell / 2, 3) :\r\n\r\n index == 12 ? (\r\n m = cell * 0.25,\r\n g.i/*addRectangle*/(0, 0, cell, cell),\r\n g.L/*addRhombus*/(m, m, cell - m, cell - m, true)) :\r\n\r\n // 13\r\n (\r\n !positionIndex && (\r\n m = cell * 0.4, w = cell * 1.2,\r\n g.h/*addCircle*/(m, m, w)\r\n )\r\n );\r\n}\r\n\r\n/**\r\n * @param {number} index\r\n * @param {Graphics} g\r\n * @param {number} cell\r\n */\r\nfunction outerShape(index, g, cell) {\r\n index = index % 4;\r\n\r\n var m;\r\n\r\n !index ?\r\n g.j/*addTriangle*/(0, 0, cell, cell, 0) :\r\n \r\n index == 1 ?\r\n g.j/*addTriangle*/(0, cell / 2, cell, cell / 2, 0) :\r\n\r\n index == 2 ?\r\n g.L/*addRhombus*/(0, 0, cell, cell) :\r\n\r\n // 3\r\n (\r\n m = cell / 6,\r\n g.h/*addCircle*/(m, m, cell - 2 * m)\r\n );\r\n}\n\n/**\r\n * Gets a set of identicon color candidates for a specified hue and config.\r\n * @param {number} hue\r\n * @param {ParsedConfiguration} config\r\n */\r\nfunction colorTheme(hue, config) {\r\n hue = config.X/*hue*/(hue);\r\n return [\r\n // Dark gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(0)),\r\n // Mid color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0.5)),\r\n // Light gray\r\n correctedHsl(hue, config.F/*grayscaleSaturation*/, config.G/*grayscaleLightness*/(1)),\r\n // Light color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(1)),\r\n // Dark color\r\n correctedHsl(hue, config.o/*colorSaturation*/, config.p/*colorLightness*/(0))\r\n ];\r\n}\n\n/**\r\n * Draws an identicon to a specified renderer.\r\n * @param {Renderer} renderer\r\n * @param {string} hash\r\n * @param {Object|number=} config\r\n */\r\nfunction iconGenerator(renderer, hash, config) {\r\n var parsedConfig = getConfiguration(config, 0.08);\r\n\r\n // Set background color\r\n if (parsedConfig.H/*backColor*/) {\r\n renderer.m/*setBackground*/(parsedConfig.H/*backColor*/);\r\n }\r\n \r\n // Calculate padding and round to nearest integer\r\n var size = renderer.k/*iconSize*/;\r\n var padding = (0.5 + size * parsedConfig.Y/*iconPadding*/) | 0;\r\n size -= padding * 2;\r\n \r\n var graphics = new Graphics(renderer);\r\n \r\n // Calculate cell size and ensure it is an integer\r\n var cell = 0 | (size / 4);\r\n \r\n // Since the cell size is integer based, the actual icon will be slightly smaller than specified => center icon\r\n var x = 0 | (padding + size / 2 - cell * 2);\r\n var y = 0 | (padding + size / 2 - cell * 2);\r\n\r\n function renderShape(colorIndex, shapes, index, rotationIndex, positions) {\r\n var shapeIndex = parseHex(hash, index, 1);\r\n var r = rotationIndex ? parseHex(hash, rotationIndex, 1) : 0;\r\n \r\n renderer.M/*beginShape*/(availableColors[selectedColorIndexes[colorIndex]]);\r\n \r\n for (var i = 0; i < positions.length; i++) {\r\n graphics.u/*currentTransform*/ = new Transform(x + positions[i][0] * cell, y + positions[i][1] * cell, cell, r++ % 4);\r\n shapes(shapeIndex, graphics, cell, i);\r\n }\r\n \r\n renderer.N/*endShape*/();\r\n }\r\n\r\n // AVAILABLE COLORS\r\n var hue = parseHex(hash, -7) / 0xfffffff,\r\n \r\n // Available colors for this icon\r\n availableColors = colorTheme(hue, parsedConfig),\r\n\r\n // The index of the selected colors\r\n selectedColorIndexes = [];\r\n\r\n var index;\r\n\r\n function isDuplicate(values) {\r\n if (values.indexOf(index) >= 0) {\r\n for (var i = 0; i < values.length; i++) {\r\n if (selectedColorIndexes.indexOf(values[i]) >= 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0; i < 3; i++) {\r\n index = parseHex(hash, 8 + i, 1) % availableColors.length;\r\n if (isDuplicate([0, 4]) || // Disallow dark gray and dark color combo\r\n isDuplicate([2, 3])) { // Disallow light gray and light color combo\r\n index = 1;\r\n }\r\n selectedColorIndexes.push(index);\r\n }\r\n\r\n // ACTUAL RENDERING\r\n // Sides\r\n renderShape(0, outerShape, 2, 3, [[1, 0], [2, 0], [2, 3], [1, 3], [0, 1], [3, 1], [3, 2], [0, 2]]);\r\n // Corners\r\n renderShape(1, outerShape, 4, 5, [[0, 0], [3, 0], [3, 3], [0, 3]]);\r\n // Center\r\n renderShape(2, centerShape, 1, null, [[1, 1], [2, 1], [2, 2], [1, 2]]);\r\n \r\n renderer.finish();\r\n}\n\n/**\r\n * Computes a SHA1 hash for any value and returns it as a hexadecimal string.\r\n * \r\n * This function is optimized for minimal code size and rather short messages.\r\n * \r\n * @param {string} message \r\n */\r\nfunction sha1(message) {\r\n var HASH_SIZE_HALF_BYTES = 40;\r\n var BLOCK_SIZE_WORDS = 16;\r\n\r\n // Variables\r\n // `var` is used to be able to minimize the number of `var` keywords.\r\n var i = 0,\r\n f = 0,\r\n \r\n // Use `encodeURI` to UTF8 encode the message without any additional libraries\r\n // We could use `unescape` + `encodeURI` to minimize the code, but that would be slightly risky\r\n // since `unescape` is deprecated.\r\n urlEncodedMessage = encodeURI(message) + \"%80\", // trailing '1' bit padding\r\n \r\n // This can be changed to a preallocated Uint32Array array for greater performance and larger code size\r\n data = [],\r\n dataSize,\r\n \r\n hashBuffer = [],\r\n\r\n a = 0x67452301,\r\n b = 0xefcdab89,\r\n c = ~a,\r\n d = ~b,\r\n e = 0xc3d2e1f0,\r\n hash = [a, b, c, d, e],\r\n\r\n blockStartIndex = 0,\r\n hexHash = \"\";\r\n\r\n /**\r\n * Rotates the value a specified number of bits to the left.\r\n * @param {number} value Value to rotate\r\n * @param {number} shift Bit count to shift.\r\n */\r\n function rotl(value, shift) {\r\n return (value << shift) | (value >>> (32 - shift));\r\n }\r\n\r\n // Message data\r\n for ( ; i < urlEncodedMessage.length; f++) {\r\n data[f >> 2] = data[f >> 2] |\r\n (\r\n (\r\n urlEncodedMessage[i] == \"%\"\r\n // Percent encoded byte\r\n ? parseInt(urlEncodedMessage.substring(i + 1, i += 3), 16)\r\n // Unencoded byte\r\n : urlEncodedMessage.charCodeAt(i++)\r\n )\r\n\r\n // Read bytes in reverse order (big endian words)\r\n << ((3 - (f & 3)) * 8)\r\n );\r\n }\r\n\r\n // f is now the length of the utf8 encoded message\r\n // 7 = 8 bytes (64 bit) for message size, -1 to round down\r\n // >> 6 = integer division with block size\r\n dataSize = (((f + 7) >> 6) + 1) * BLOCK_SIZE_WORDS;\r\n\r\n // Message size in bits.\r\n // SHA1 uses a 64 bit integer to represent the size, but since we only support short messages only the least\r\n // significant 32 bits are set. -8 is for the '1' bit padding byte.\r\n data[dataSize - 1] = f * 8 - 8;\r\n \r\n // Compute hash\r\n for ( ; blockStartIndex < dataSize; blockStartIndex += BLOCK_SIZE_WORDS) {\r\n for (i = 0; i < 80; i++) {\r\n f = rotl(a, 5) + e + (\r\n // Ch\r\n i < 20 ? ((b & c) ^ ((~b) & d)) + 0x5a827999 :\r\n \r\n // Parity\r\n i < 40 ? (b ^ c ^ d) + 0x6ed9eba1 :\r\n \r\n // Maj\r\n i < 60 ? ((b & c) ^ (b & d) ^ (c & d)) + 0x8f1bbcdc :\r\n \r\n // Parity\r\n (b ^ c ^ d) + 0xca62c1d6\r\n ) + ( \r\n hashBuffer[i] = i < BLOCK_SIZE_WORDS\r\n // Bitwise OR is used to coerse `undefined` to 0\r\n ? (data[blockStartIndex + i] | 0)\r\n : rotl(hashBuffer[i - 3] ^ hashBuffer[i - 8] ^ hashBuffer[i - 14] ^ hashBuffer[i - 16], 1)\r\n );\r\n\r\n e = d;\r\n d = c;\r\n c = rotl(b, 30);\r\n b = a;\r\n a = f;\r\n }\r\n\r\n hash[0] = a = ((hash[0] + a) | 0);\r\n hash[1] = b = ((hash[1] + b) | 0);\r\n hash[2] = c = ((hash[2] + c) | 0);\r\n hash[3] = d = ((hash[3] + d) | 0);\r\n hash[4] = e = ((hash[4] + e) | 0);\r\n }\r\n\r\n // Format hex hash\r\n for (i = 0; i < HASH_SIZE_HALF_BYTES; i++) {\r\n hexHash += (\r\n (\r\n // Get word (2^3 half-bytes per word)\r\n hash[i >> 3] >>>\r\n\r\n // Append half-bytes in reverse order\r\n ((7 - (i & 7)) * 4)\r\n ) \r\n // Clamp to half-byte\r\n & 0xf\r\n ).toString(16);\r\n }\r\n\r\n return hexHash;\r\n}\n\n/**\r\n * Inputs a value that might be a valid hash string for Jdenticon and returns it \r\n * if it is determined valid, otherwise a falsy value is returned.\r\n */\r\nfunction isValidHash(hashCandidate) {\r\n return /^[0-9a-f]{11,}$/i.test(hashCandidate) && hashCandidate;\r\n}\r\n\r\n/**\r\n * Computes a hash for the specified value. Currently SHA1 is used. This function\r\n * always returns a valid hash.\r\n */\r\nfunction computeHash(value) {\r\n return sha1(value == null ? \"\" : \"\" + value);\r\n}\n\n\r\n\r\n/**\r\n * Renderer redirecting drawing commands to a canvas context.\r\n * @implements {Renderer}\r\n */\r\nfunction CanvasRenderer(ctx, iconSize) {\r\n var canvas = ctx.canvas; \r\n var width = canvas.width;\r\n var height = canvas.height;\r\n \r\n ctx.save();\r\n \r\n if (!iconSize) {\r\n iconSize = Math.min(width, height);\r\n \r\n ctx.translate(\r\n ((width - iconSize) / 2) | 0,\r\n ((height - iconSize) / 2) | 0);\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n this.l/*_ctx*/ = ctx;\r\n this.k/*iconSize*/ = iconSize;\r\n \r\n ctx.clearRect(0, 0, iconSize, iconSize);\r\n}\r\nvar CanvasRenderer__prototype = CanvasRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n var iconSize = this.k/*iconSize*/;\r\n\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.fillRect(0, 0, iconSize, iconSize);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} fillColor Fill color on format #rrggbb[aa].\r\n */\r\nCanvasRenderer__prototype.M/*beginShape*/ = function beginShape (fillColor) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.fillStyle = toCss3Color(fillColor);\r\n ctx.beginPath();\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape. This causes the queued paths to be rendered on the canvas.\r\n */\r\nCanvasRenderer__prototype.N/*endShape*/ = function endShape () {\r\n this.l/*_ctx*/.fill();\r\n};\r\n\r\n/**\r\n * Adds a polygon to the rendering queue.\r\n * @param points An array of Point objects.\r\n */\r\nCanvasRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var ctx = this.l/*_ctx*/;\r\n ctx.moveTo(points[0].x, points[0].y);\r\n for (var i = 1; i < points.length; i++) {\r\n ctx.lineTo(points[i].x, points[i].y);\r\n }\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Adds a circle to the rendering queue.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nCanvasRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var ctx = this.l/*_ctx*/,\r\n radius = diameter / 2;\r\n ctx.moveTo(point.x + radius, point.y + radius);\r\n ctx.arc(point.x + radius, point.y + radius, radius, 0, Math.PI * 2, counterClockwise);\r\n ctx.closePath();\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nCanvasRenderer__prototype.finish = function finish () {\r\n this.l/*_ctx*/.restore();\r\n};\n\nvar ICON_TYPE_SVG = 1;\r\n\r\nvar ICON_TYPE_CANVAS = 2;\r\n\r\nvar ATTRIBUTES = {\r\n O/*HASH*/: \"data-jdenticon-hash\",\r\n v/*VALUE*/: \"data-jdenticon-value\"\r\n};\r\n\r\nvar IS_RENDERED_PROPERTY = \"jdenticonRendered\";\r\n\r\nvar ICON_SELECTOR = \"[\" + ATTRIBUTES.O/*HASH*/ +\"],[\" + ATTRIBUTES.v/*VALUE*/ +\"]\";\r\n\r\nvar documentQuerySelectorAll = /** @type {!Function} */ (\r\n typeof document !== \"undefined\" && document.querySelectorAll.bind(document));\r\n\r\nfunction getIdenticonType(el) {\r\n if (el) {\r\n var tagName = el[\"tagName\"];\r\n\r\n if (/^svg$/i.test(tagName)) {\r\n return ICON_TYPE_SVG;\r\n }\r\n\r\n if (/^canvas$/i.test(tagName) && \"getContext\" in el) {\r\n return ICON_TYPE_CANVAS;\r\n }\r\n }\r\n}\n\n/**\r\n * Draws an identicon to a context.\r\n * @param {CanvasRenderingContext2D} ctx - Canvas context on which the icon will be drawn at location (0, 0).\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction drawIcon(ctx, hashOrValue, size, config) {\r\n if (!ctx) {\r\n throw new Error(\"No canvas specified.\");\r\n }\r\n \r\n iconGenerator(new CanvasRenderer(ctx, size), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue), \r\n config);\r\n\r\n var canvas = ctx.canvas;\r\n if (canvas) {\r\n canvas[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n/**\r\n * Prepares a measure to be used as a measure in an SVG path, by\r\n * rounding the measure to a single decimal. This reduces the file\r\n * size of the generated SVG with more than 50% in some cases.\r\n */\r\nfunction svgValue(value) {\r\n return ((value * 10 + 0.5) | 0) / 10;\r\n}\r\n\r\n/**\r\n * Represents an SVG path element.\r\n */\r\nfunction SvgPath() {\r\n /**\r\n * This property holds the data string (path.d) of the SVG path.\r\n * @type {string}\r\n */\r\n this.A/*dataString*/ = \"\";\r\n}\r\nvar SvgPath__prototype = SvgPath.prototype;\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG path.\r\n * @param points An array of Point objects.\r\n */\r\nSvgPath__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n var dataString = \"\";\r\n for (var i = 0; i < points.length; i++) {\r\n dataString += (i ? \"L\" : \"M\") + svgValue(points[i].x) + \" \" + svgValue(points[i].y);\r\n }\r\n this.A/*dataString*/ += dataString + \"Z\";\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG path.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgPath__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n var sweepFlag = counterClockwise ? 0 : 1,\r\n svgRadius = svgValue(diameter / 2),\r\n svgDiameter = svgValue(diameter),\r\n svgArc = \"a\" + svgRadius + \",\" + svgRadius + \" 0 1,\" + sweepFlag + \" \";\r\n \r\n this.A/*dataString*/ += \r\n \"M\" + svgValue(point.x) + \" \" + svgValue(point.y + diameter / 2) +\r\n svgArc + svgDiameter + \",0\" + \r\n svgArc + (-svgDiameter) + \",0\";\r\n};\n\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n * @implements {Renderer}\r\n */\r\nfunction SvgRenderer(target) {\r\n /**\r\n * @type {SvgPath}\r\n * @private\r\n */\r\n this.B/*_path*/;\r\n\r\n /**\r\n * @type {Object.<string,SvgPath>}\r\n * @private\r\n */\r\n this.C/*_pathsByColor*/ = { };\r\n\r\n /**\r\n * @type {SvgElement|SvgWriter}\r\n * @private\r\n */\r\n this.P/*_target*/ = target;\r\n\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = target.k/*iconSize*/;\r\n}\r\nvar SvgRenderer__prototype = SvgRenderer.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb[aa].\r\n */\r\nSvgRenderer__prototype.m/*setBackground*/ = function setBackground (fillColor) {\r\n var match = /^(#......)(..)?/.exec(fillColor),\r\n opacity = match[2] ? parseHex(match[2], 0) / 255 : 1;\r\n this.P/*_target*/.m/*setBackground*/(match[1], opacity);\r\n};\r\n\r\n/**\r\n * Marks the beginning of a new shape of the specified color. Should be ended with a call to endShape.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n */\r\nSvgRenderer__prototype.M/*beginShape*/ = function beginShape (color) {\r\n this.B/*_path*/ = this.C/*_pathsByColor*/[color] || (this.C/*_pathsByColor*/[color] = new SvgPath());\r\n};\r\n\r\n/**\r\n * Marks the end of the currently drawn shape.\r\n */\r\nSvgRenderer__prototype.N/*endShape*/ = function endShape () { };\r\n\r\n/**\r\n * Adds a polygon with the current fill color to the SVG.\r\n * @param points An array of Point objects.\r\n */\r\nSvgRenderer__prototype.g/*addPolygon*/ = function addPolygon (points) {\r\n this.B/*_path*/.g/*addPolygon*/(points);\r\n};\r\n\r\n/**\r\n * Adds a circle with the current fill color to the SVG.\r\n * @param {Point} point The upper left corner of the circle bounding box.\r\n * @param {number} diameter The diameter of the circle.\r\n * @param {boolean} counterClockwise True if the circle is drawn counter-clockwise (will result in a hole if rendered on a clockwise path).\r\n */\r\nSvgRenderer__prototype.h/*addCircle*/ = function addCircle (point, diameter, counterClockwise) {\r\n this.B/*_path*/.h/*addCircle*/(point, diameter, counterClockwise);\r\n};\r\n\r\n/**\r\n * Called when the icon has been completely drawn.\r\n */\r\nSvgRenderer__prototype.finish = function finish () {\n var this$1 = this;\n \r\n var pathsByColor = this.C/*_pathsByColor*/;\r\n for (var color in pathsByColor) {\r\n // hasOwnProperty cannot be shadowed in pathsByColor\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (pathsByColor.hasOwnProperty(color)) {\r\n this$1.P/*_target*/.R/*appendPath*/(color, pathsByColor[color].A/*dataString*/);\r\n }\r\n }\r\n};\n\nvar SVG_CONSTANTS = {\r\n S/*XMLNS*/: \"http://www.w3.org/2000/svg\",\r\n T/*WIDTH*/: \"width\",\r\n U/*HEIGHT*/: \"height\",\r\n};\n\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgWriter(iconSize) {\r\n /**\r\n * @type {number}\r\n */\r\n this.k/*iconSize*/ = iconSize;\r\n\r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.D/*_s*/ =\r\n '<svg xmlns=\"' + SVG_CONSTANTS.S/*XMLNS*/ + '\" width=\"' + \r\n iconSize + '\" height=\"' + iconSize + '\" viewBox=\"0 0 ' + \r\n iconSize + ' ' + iconSize + '\">';\r\n}\r\nvar SvgWriter__prototype = SvgWriter.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgWriter__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n this.D/*_s*/ += '<rect width=\"100%\" height=\"100%\" fill=\"' + \r\n fillColor + '\" opacity=\"' + opacity.toFixed(2) + '\"/>';\r\n }\r\n};\r\n\r\n/**\r\n * Writes a path to the SVG string.\r\n * @param {string} color Fill color on format #rrggbb.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgWriter__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n this.D/*_s*/ += '<path fill=\"' + color + '\" d=\"' + dataString + '\"/>';\r\n};\r\n\r\n/**\r\n * Gets the rendered image as an SVG string.\r\n */\r\nSvgWriter__prototype.toString = function toString () {\r\n return this.D/*_s*/ + \"</svg>\";\r\n};\n\n/**\r\n * Draws an identicon as an SVG string.\r\n * @param {*} hashOrValue - A hexadecimal hash string or any value that will be hashed by Jdenticon.\r\n * @param {number} size - Icon size in pixels.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compatibility a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n * @returns {string} SVG string\r\n */\r\nfunction toSvg(hashOrValue, size, config) {\r\n var writer = new SvgWriter(size);\r\n iconGenerator(new SvgRenderer(writer), \r\n isValidHash(hashOrValue) || computeHash(hashOrValue),\r\n config);\r\n return writer.toString();\r\n}\n\n/**\r\n * Creates a new element and adds it to the specified parent.\r\n * @param {Element} parentNode\r\n * @param {string} name\r\n * @param {...(string|number)} keyValuePairs\r\n */\r\nfunction SvgElement_append(parentNode, name) {\n var keyValuePairs = [], len = arguments.length - 2;\n while ( len-- > 0 ) keyValuePairs[ len ] = arguments[ len + 2 ];\n\r\n var el = document.createElementNS(SVG_CONSTANTS.S/*XMLNS*/, name);\r\n \r\n for (var i = 0; i + 1 < keyValuePairs.length; i += 2) {\r\n el.setAttribute(\r\n /** @type {string} */(keyValuePairs[i]),\r\n /** @type {string} */(keyValuePairs[i + 1])\r\n );\r\n }\r\n\r\n parentNode.appendChild(el);\r\n}\r\n\r\n\r\n/**\r\n * Renderer producing SVG output.\r\n */\r\nfunction SvgElement(element) {\r\n // Don't use the clientWidth and clientHeight properties on SVG elements\r\n // since Firefox won't serve a proper value of these properties on SVG\r\n // elements (https://bugzilla.mozilla.org/show_bug.cgi?id=874811)\r\n // Instead use 100px as a hardcoded size (the svg viewBox will rescale \r\n // the icon to the correct dimensions)\r\n var iconSize = this.k/*iconSize*/ = Math.min(\r\n (Number(element.getAttribute(SVG_CONSTANTS.T/*WIDTH*/)) || 100),\r\n (Number(element.getAttribute(SVG_CONSTANTS.U/*HEIGHT*/)) || 100)\r\n );\r\n \r\n /**\r\n * @type {Element}\r\n * @private\r\n */\r\n this.V/*_el*/ = element;\r\n \r\n // Clear current SVG child elements\r\n while (element.firstChild) {\r\n element.removeChild(element.firstChild);\r\n }\r\n \r\n // Set viewBox attribute to ensure the svg scales nicely.\r\n element.setAttribute(\"viewBox\", \"0 0 \" + iconSize + \" \" + iconSize);\r\n element.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\r\n}\r\nvar SvgElement__prototype = SvgElement.prototype;\r\n\r\n/**\r\n * Fills the background with the specified color.\r\n * @param {string} fillColor Fill color on the format #rrggbb.\r\n * @param {number} opacity Opacity in the range [0.0, 1.0].\r\n */\r\nSvgElement__prototype.m/*setBackground*/ = function setBackground (fillColor, opacity) {\r\n if (opacity) {\r\n SvgElement_append(this.V/*_el*/, \"rect\",\r\n SVG_CONSTANTS.T/*WIDTH*/, \"100%\",\r\n SVG_CONSTANTS.U/*HEIGHT*/, \"100%\",\r\n \"fill\", fillColor,\r\n \"opacity\", opacity);\r\n }\r\n};\r\n\r\n/**\r\n * Appends a path to the SVG element.\r\n * @param {string} color Fill color on format #xxxxxx.\r\n * @param {string} dataString The SVG path data string.\r\n */\r\nSvgElement__prototype.R/*appendPath*/ = function appendPath (color, dataString) {\r\n SvgElement_append(this.V/*_el*/, \"path\",\r\n \"fill\", color,\r\n \"d\", dataString);\r\n};\n\n/**\r\n * Updates all canvas elements with the `data-jdenticon-hash` or `data-jdenticon-value` attribute.\r\n */\r\nfunction updateAll() {\r\n if (documentQuerySelectorAll) {\r\n update(ICON_SELECTOR);\r\n }\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` or `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction update(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType) {\r\n return iconType == ICON_TYPE_SVG ? \r\n new SvgRenderer(new SvgElement(el)) : \r\n new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<canvas>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<canvas>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateCanvas(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_CANVAS) {\r\n return new CanvasRenderer(/** @type {HTMLCanvasElement} */(el).getContext(\"2d\"));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified `<svg>` elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>`, or a CSS selector to such an element.\r\n * @param {*=} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number=} config - Optional configuration. If specified, this configuration object overrides any\r\n * global configuration in its entirety. For backward compability a padding value in the range [0.0, 0.5) can be\r\n * specified in place of a configuration object.\r\n */\r\nfunction updateSvg(el, hashOrValue, config) {\r\n renderDomElement(el, hashOrValue, config, function (el, iconType) {\r\n if (iconType == ICON_TYPE_SVG) {\r\n return new SvgRenderer(new SvgElement(el));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the identicon in the specified canvas or svg elements.\r\n * @param {(string|Element)} el - Specifies the container in which the icon is rendered as a DOM element of the type\r\n * `<svg>` or `<canvas>`, or a CSS selector to such an element.\r\n * @param {*} hashOrValue - Optional hash or value to be rendered. If not specified, the `data-jdenticon-hash` or\r\n * `data-jdenticon-value` attribute will be evaluated.\r\n * @param {Object|number|undefined} config\r\n * @param {function(Element,number):Renderer} rendererFactory - Factory function for creating an icon renderer.\r\n */\r\nfunction renderDomElement(el, hashOrValue, config, rendererFactory) {\r\n if (typeof el === \"string\") {\r\n if (documentQuerySelectorAll) {\r\n var elements = documentQuerySelectorAll(el);\r\n for (var i = 0; i < elements.length; i++) {\r\n renderDomElement(elements[i], hashOrValue, config, rendererFactory);\r\n }\r\n }\r\n return;\r\n }\r\n \r\n // Hash selection. The result from getValidHash or computeHash is \r\n // accepted as a valid hash.\r\n var hash = \r\n // 1. Explicit valid hash\r\n isValidHash(hashOrValue) ||\r\n \r\n // 2. Explicit value (`!= null` catches both null and undefined)\r\n hashOrValue != null && computeHash(hashOrValue) ||\r\n \r\n // 3. `data-jdenticon-hash` attribute\r\n isValidHash(el.getAttribute(ATTRIBUTES.O/*HASH*/)) ||\r\n \r\n // 4. `data-jdenticon-value` attribute. \r\n // We want to treat an empty attribute as an empty value. \r\n // Some browsers return empty string even if the attribute \r\n // is not specified, so use hasAttribute to determine if \r\n // the attribute is specified.\r\n el.hasAttribute(ATTRIBUTES.v/*VALUE*/) && computeHash(el.getAttribute(ATTRIBUTES.v/*VALUE*/));\r\n \r\n if (!hash) {\r\n // No hash specified. Don't render an icon.\r\n return;\r\n }\r\n \r\n var renderer = rendererFactory(el, getIdenticonType(el));\r\n if (renderer) {\r\n // Draw icon\r\n iconGenerator(renderer, hash, config);\r\n el[IS_RENDERED_PROPERTY] = true;\r\n }\r\n}\n\n// This file is compiled to dist/jdenticon-module.js\r\n\r\nvar jdenticon = updateAll;\r\n\r\ndefineConfigProperty(jdenticon);\r\n\r\n// Export public API\r\njdenticon[\"configure\"] = configure;\r\njdenticon[\"drawIcon\"] = drawIcon;\r\njdenticon[\"toSvg\"] = toSvg;\r\njdenticon[\"update\"] = update;\r\njdenticon[\"updateCanvas\"] = updateCanvas;\r\njdenticon[\"updateSvg\"] = updateSvg;\r\n\r\n/**\r\n * Specifies the version of the Jdenticon package in use.\r\n * @type {string}\r\n */\r\njdenticon[\"version\"] = \"3.3.0\";\r\n\r\n/**\r\n * Specifies which bundle of Jdenticon that is used.\r\n * @type {string}\r\n */\r\njdenticon[\"bundle\"] = \"browser-cjs\";\r\n\r\nmodule.exports = jdenticon;\n//# sourceMappingURL=jdenticon-module.js.map\n",".button {\n\tdisplay: flex;\n\theight: 50px;\n\tpadding: 0;\n\tbackground: #3e7671;\n\tborder: none;\n\toutline: none;\n\tborder-radius: 5px;\n\toverflow: hidden;\n\tfont-size: 16px;\n\tfont-weight: 500;\n\tcursor: pointer;\n min-width: 220px;\n max-width: 220px;\n}\n\n.button:hover {\n\tbackground: #008168;\n}\n\n.button:active {\n\tbackground: #3e7671;\n}\n\n.button-text{\n\tdisplay: block;\n\tmargin: auto;\n\tpadding: 0 24px;\n\tcolor: #fff;\n text-overflow: ellipsis;\n overflow:hidden;\n white-space:nowrap;\n width: 80px;\n text-transform: capitalize;\n}\n\n.button-icon {\n margin: auto;\n padding: 10px; \n}\n\n.button-profile {\n\tmargin: auto;\n}\n\n.button-profile svg {\n display: flex;\n margin-left: 4px;\n background-color: #fff;\n border-radius: 4px;\n}\n\n.button-text-full-width {\n width: auto!important;\n}\n\n.button-link {\n text-decoration: none!important;\n}\n\n/* Menu icon */\n.gg-menu-grid-r {\n color: #fff;\n box-sizing: border-box;\n position: relative;\n display: block;\n transform: scale(var(--ggs,1));\n width: 16px;\n height: 16px;\n}\n \n.gg-menu-grid-r::before {\n content: \"\";\n display: block;\n box-sizing: border-box;\n position: absolute;\n width: 4px;\n height: 4px;\n background: currentColor;\n box-shadow:\n 0 6px 0,\n 6px 6px 0,\n 12px 6px 0,\n 6px 12px 0,\n 12px 12px 0,\n 6px 0 0,\n 12px 0 0,\n 0 12px 0;\n} \n\n/* Drop down section */\n.dropdown {\n position: relative;\n display: inline-block;\n}\n \n.dropdown-content {\n display: none;\n position: absolute;\n right: 0;\n background-color: #f9f9f9;\n min-width: 180px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n border-radius: 5px;\n}\n \n.dropdown-content a {\n color: #71797E;\n padding: 16px 20px;\n text-decoration: none;\n display: block;\n cursor: pointer;\n}\n \n.dropdown-content a:hover {\n background-color: #f1f1f1;\n color: #000;\n opacity: 0.7;\n}\n\n.dropdown:hover .dropdown-content {\n display: block;\n}\n\n\n/* Modal Content */\n.modal {\n display: none;\n position: fixed;\n z-index: 1;\n padding-top: 100px;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: rgb(0,0,0);\n background-color: rgba(0,0,0,0.4);\n text-align: center;\n }\n \n\n .modal-content {\n background-color: #fefefe;\n margin: auto;\n padding: 20px;\n border: 1px solid #888;\n width: 40%;\n }\n\n .modal-body {\n max-height: 50vh;\n overflow-y: auto;\n }\n \n .close {\n color: #aaaaaa;\n float: right;\n font-size: 28px;\n font-weight: bold;\n }\n \n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n }\n\n .modal-app {\n background-color: #c3e9bc;\n padding: 15px;\n margin: 10px;\n border-radius: 5px;\n }\n\n .external-app-link {\n text-decoration:none; \n color: #000;\n }\n\n .gray-text {\n color: #606060;\n }\n\n .green-text {\n color: #3e7671;\n }\n\n #countdown {\n position: relative;\n margin: auto;\n margin-top: 30px;\n height: 40px;\n width: 40px;\n text-align: center;\n }\n \n #countdown-number {\n color: #2e2e2e;\n display: inline-block;\n line-height: 40px;\n }\n \n #countdown svg {\n position: absolute;\n top: 0;\n right: 0;\n width: 40px;\n height: 40px;\n transform: rotateY(-180deg) rotateZ(-90deg);\n }\n \n #countdown svg circle {\n stroke-dasharray: 113px;\n stroke-dashoffset: 0px;\n stroke-linecap: round;\n stroke-width: 4px;\n stroke: #008168;\n fill: none;\n animation: countdown 6s linear infinite forwards;\n }\n \n @keyframes countdown {\n from {\n stroke-dashoffset: 0px;\n }\n to {\n stroke-dashoffset: 113px;\n }\n }\n\n .lds-ring {\n color: #fff\n }\n .lds-ring {\n display: flex;\n justify-content: center;\n align-items: center;\n margin: auto;\n position: relative;\n }\n .lds-ring div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 30px;\n height: 30px;\n margin: 3px;\n border: 3px solid currentColor;\n border-radius: 50%;\n animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: currentColor transparent transparent transparent;\n }\n .lds-ring div:nth-child(1) {\n animation-delay: -0.45s;\n }\n .lds-ring div:nth-child(2) {\n animation-delay: -0.3s;\n }\n .lds-ring div:nth-child(3) {\n animation-delay: -0.15s;\n }\n @keyframes lds-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n\n\n.menu-bar-icons {\n color: #008168;\n display: inline-block;\n margin-bottom: -3px;\n}\n\n/* application icon */\n.gg-microsoft {\n transform: scale(var(--ggs,1));\n margin-right: 12px;\n}\n.gg-microsoft,\n.gg-microsoft::after,\n.gg-microsoft::before {\n box-sizing: border-box;\n position: relative;\n /* display: block; */\n width: 18px;\n height: 18px;\n}\n.gg-microsoft::after,\n.gg-microsoft::before {\n content: \"\";\n position: absolute;\n width: 8px;\n border-top: 8px solid;\n border-bottom: 8px solid\n}\n.gg-microsoft::after {\n right: 0\n}\n\n/* Portal Icon */\n.gg-ereader {\n box-sizing: border-box;\n position: relative;\n transform: scale(var(--ggs,1));\n width: 20px;\n height: 18px;\n border: 2px solid;\n border-radius: 3px;\n margin-right: 9px;\n}\n.gg-ereader::after,\n.gg-ereader::before {\n content: \"\";\n display: block;\n box-sizing: border-box;\n position: absolute;\n border-radius: 3px;\n width: 2px;\n height: 18px;\n right: 9px;\n top: -2px;\n background: currentColor\n}\n.gg-ereader::after {\n width: 5px;\n height: 2px;\n box-shadow:0 4px 0,0 8px 0;\n top: 2px;\n right: 2px\n}\n\n/* Marketplace Icon */\n.gg-display-flex {\n box-sizing: border-box;\n position: relative;\n transform: scale(var(--ggs,1));\n height: 14px;\n width: 16px;\n border: 2px solid transparent;\n margin-right: 13px;\n box-shadow:\n 0 0 0 2px,\n inset -2px 0 0 0,\n inset 2px 0 0 0\n}\n\n\n/* Usage Tracking Icon */\n.gg-align-bottom {\n box-sizing: border-box;\n position: relative;\n height: 12px;\n width: 12px;\n border-bottom: 2px solid;\n transform: scale(var(--ggs,1));\n margin-top: 4px;\n margin-right: 16px;\n}\n.gg-align-bottom::after,\n.gg-align-bottom::before {\n content: \"\";\n display: block;\n box-sizing: border-box;\n position: absolute;\n width: 4px;\n background: currentColor;\n bottom: 2px\n}\n.gg-align-bottom::before {\n left: 1px;\n height: 12px\n}\n.gg-align-bottom::after {\n height: 6px;\n right: 1px;\n opacity: .5\n}\n\n\n/* Logout icon */\n.gg-log-out {\n box-sizing: border-box;\n position: relative;\n width: 6px;\n height: 16px;\n border: 2px solid;\n transform: scale(var(--ggs,1));\n border-right: 0;\n border-top-left-radius: 2px;\n border-bottom-left-radius: 2px;\n margin-right: 22px;\n}\n.gg-log-out::after,\n.gg-log-out::before {\n content: \"\";\n display: block;\n box-sizing: border-box;\n position: absolute\n}\n.gg-log-out::after {\n border-top: 2px solid;\n border-left: 2px solid;\n transform: rotate(-45deg);\n width: 8px;\n height: 8px;\n left: 4px;\n bottom: 2px\n}\n.gg-log-out::before {\n border-radius: 3px;\n width: 10px;\n height: 2px;\n background: currentColor;\n left: 5px;\n bottom: 5px\n}","import { Component, Prop, State, h, Element } from '@stencil/core';\nimport Keycloak from \"keycloak-js\";\nimport { toSvg } from \"jdenticon\";\n\n@Component({\n tag: 'dash-button',\n styleUrl: 'dash-button.css',\n shadow: true,\n})\nexport class DashButtonComponent {\n\n @Element() el;\n \n @Prop() showPostLoginText: boolean = false;\n @Prop() silentCheckSso: boolean = false;\n @Prop() redirectUri: string;\n @Prop() authMethod: string = \"check-sso\";\n\n @Prop() keycloakUri: string = \"http://localhost:8080\";\n @Prop() realm: string = \"\";\n @Prop() clientId: string = \"\";\n\n @Prop() appId: string = \"\";\n @Prop() portalUrl: string = \"\";\n @Prop() marketplaceUrl: string = \"https://marketplace-zdzw.cloud.zdzw-project.com\";\n @Prop() plmUrl: string = \"https://productlicensemanager-zdzw.cloud.zdzw-project.com\";\n @Prop() usageTrackingUrl: string = \"https://usage-tracking-ui-zdzw.cloud.zdzw-project.com\";\n @Prop() showUnauthorizedModal: boolean = false;\n @Prop() postTextDelayDuration: number;\n\n @State() keycloak: any = new Keycloak({\n url: this.keycloakUri,\n realm: this.realm,\n clientId: this.clientId,\n });;\n\n @State() isAuth = false;\n @State() givenUserName: string = \"\";\n @State() silentCheckSsoRedirectUri: string = window.location.origin + '/assets/verificar-sso.html';\n\n @State() appList = []\n\n @State() showPostLoginLoadingSpinner = false;\n @State() avatarSvg = toSvg(\"init-avatar\", 40);\n\n componentWillLoad() {\n //\n // User set post-text-delay-duration for displaying loading spinner\n //\n if(this.postTextDelayDuration > 0) {\n // Show loading spinner\n this.showPostLoginLoadingSpinner = true\n // Removing a loading spinner after the delay period ending\n setTimeout(() => {\n this.showPostLoginLoadingSpinner = false\n }, this.postTextDelayDuration);\n }\n\n //\n // Init Keycloak\n //\n this.initKeycloak().then(() => {\n // Check if the user is authenticated\n if(this.isAuth) {\n const _token = JSON.parse(localStorage.getItem('keycloak')).token\n \n this.getAppList(_token).then(res => {\n this.appList = res\n\n // If the user has set an app ID, check if they have permission to access\n if(this.appId) {\n \n // Retrieve the list of buttons that are configured to set the app ID\n const appIdList = this.appId.replace(/'/g, '').split(',');\n // Remote appID list parsed from object\n const tempAppList = this.appList.map(obj => obj['shortname'])\n\n // Check if the user has permission to access the selected application\n if(appIdList.filter(id => tempAppList.includes(id)).length == 0) {\n // Update local storage app permission\n localStorage.setItem(\"ZDZW_app_permission\", JSON.stringify(false));\n\n // Show modal\n const appErrorModal = this.el.shadowRoot.querySelector('#appPermissionErrorModal');\n appErrorModal.style.display = \"block\";\n\n // If a redirect URL is provided, show the loading spinner\n if (this.portalUrl && this.showUnauthorizedModal) {\n var countdownNumberEl = this.el.shadowRoot.getElementById('countdown-number');\n var countdown = 6;\n\n countdownNumberEl.textContent = countdown.toString();\n\n setInterval(() => {\n countdown = --countdown <= 0 ? 6 : countdown;\n countdownNumberEl.textContent = countdown.toString();\n\n // Once the countdown finishes, redirect to the provided URL\n if(countdown == 1) {\n // appErrorModal.style.display = \"none\";\n window.location.replace(this.portalUrl.toString());\n }\n }, 1000);\n }\n } else {\n // The user is authenticated and has the necessary permissions\n // Update local storage app permission\n localStorage.setItem(\"ZDZW_app_permission\", JSON.stringify(true));\n }\n }\n\n })\n }\n })\n }\n\n async initKeycloak() {\n // Remove the initiation time permission localstorage object\n localStorage.removeItem(\"ZDZW_app_permission\");\n\n await this.keycloak.init(\n {\n onLoad: this.authMethod,\n checkLoginIframe: false,\n silentCheckSsoRedirectUri: this.silentCheckSso ? this.silentCheckSsoRedirectUri : '',\n }).then(res => {\n if(res) {\n this.isAuth = true\n localStorage.setItem(\"keycloak\", JSON.stringify(this.keycloak));\n document.cookie = \"ZDZW_cookie=\" + JSON.parse(localStorage.getItem('keycloak')).token;\n\n // Set userName\n this.givenUserName = JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.preferred_username\n\n // Set user avatar\n this.avatarSvg = toSvg(JSON.parse(localStorage.getItem('keycloak')).idTokenParsed.sub, 40);\n } \n });\n }\n\n async getAppList(token) {\n // const token = await JSON.parse(localStorage.getItem('keycloak')).token;\n // const response = await fetch(this.marketplaceUrl + '/api/v1/product/nameAndShortName', {\n // headers: new Headers({\n // 'Authorization': 'Bearer ' + token,\n // }),\n // })\n\n const response = await fetch(this.plmUrl + '/api/v1/product/nameAndShortNameOrg', {\n headers: new Headers({\n 'Authorization': 'Bearer ' + token,\n }),\n })\n const jsonObj = await response.json()\n return jsonObj\n }\n\n login() { \n this.keycloak.login() \n }\n\n logout() {\n localStorage.removeItem(\"keycloak\");\n document.cookie = \"ZDZW_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\n this.keycloak.logout() \n } \n\n showModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"block\";\n }\n\n closeModal() {\n const appModal = this.el.shadowRoot.querySelector('#appListModal');\n appModal.style.display = \"none\";\n }\n\n render() {\n return <div>\n <div>\n {\n (() => {\n if(this.isAuth && this.showPostLoginText) {\n // User set post-text-delay-duration for displaying loading spinner\n if(this.showPostLoginLoadingSpinner) {\n return (\n <a id=\"login-btn\" class=\"button button-link\">\n <div class=\"lds-ring\"><div></div><div></div><div></div><div></div></div>\n </a>\n )\n } else {\n return (\n <a href={this.redirectUri} id=\"login-btn\" class=\"button button-link\">\n <span class=\"button-text button-text-full-width\">Go to Dashboard</span>\n </a>\n )\n }\n \n } else if (this.isAuth) {\n return (\n <div id=\"profile-btn\" class=\"dropdown\">\n <button type=\"button\" class=\"button\">\n <span class=\"button-profile\">\n <div innerHTML={this.avatarSvg}/>\n </span>\n <span id=\"given-name\" class=\"button-text\">{this.givenUserName}</span>\n <div class=\"button-icon\">\n <span class=\"gg-menu-grid-r\"></span>\n </div>\n </button>\n <div class=\"dropdown-content\">\n <a onClick={this.showModal.bind(this)} id=\"applications-btn\"><i class=\"menu-bar-icons gg-microsoft\"></i>Applications</a>\n <a href={this.portalUrl} target='_blank' id=\"applications-btn\"><i class=\"menu-bar-icons gg-ereader\"></i>Portal</a>\n <a href={this.marketplaceUrl} target='_blank' id=\"applications-btn\"><i class=\"menu-bar-icons gg-display-flex\"></i>Marketplace</a>\n <a href={this.usageTrackingUrl} target='_blank' id=\"applications-btn\"><i class=\"menu-bar-icons gg-align-bottom\"></i>Usage Tracking</a>\n <a onClick={this.logout.bind(this)} id=\"logout-btn\"><i class=\"menu-bar-icons gg-log-out\"></i>Logout</a>\n </div>\n </div>\n )\n } else {\n return (\n <button onClick={this.login.bind(this)} id=\"login-btn\" type=\"button\" class=\"button\">\n <span class=\"button-text\">Login</span>\n </button>\n )\n }\n })() \n } \n </div>\n \n <div id=\"appListModal\" class=\"modal\">\n \n <div class=\"modal-content\">\n <span onClick={this.closeModal.bind(this)} class=\"close\">&times;</span>\n <h3>Applications</h3>\n <div class=\"modal-body\">\n {this.appList.length > 0 ? this.appList.map( app => {\n return (\n <a class=\"external-app-link\" target='_blank' href={\"https://\" + app.shortname + \"-zdzw\"+ this.portalUrl.replace(/(^\\w+:|^)\\/\\//, '').replace('portal-frontend-zdzw','')}>\n <div class=\"modal-app\">\n <div>{app.name}</div>\n </div>\n </a>\n );\n }) : <div><h3 class=\"gray-text\">Not installed application found.</h3> <p class=\"gray-text\">Please contact administration.</p></div>}\n </div>\n </div>\n \n </div>\n\n <div id=\"appPermissionErrorModal\" class=\"modal\">\n <div class=\"modal-content\">\n <img src=\"data:image/png;base64,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\"/>\n <h2 class=\"green-text margin-b\">You don't have permission to access this application.</h2>\n <h3 class=\"green-text\">Please contact the administration.</h3>\n \n {(this.portalUrl && this.showUnauthorizedModal) ? \n <div>\n <h4 class=\"gray-text\">You will be automatically redirected to the portal.</h4>\n <div id=\"countdown\">\n <div id=\"countdown-number\"></div>\n <svg>\n <circle r=\"18\" cx=\"20\" cy=\"20\"></circle>\n </svg>\n </div>\n </div>\n : <div></div>\n }\n </div>\n </div>\n\n </div>;\n }\n}\n"],"version":3}